basix_doc 0.1
|
Go to the source code of this file.
Definition in file memoize.hpp.
#define MEMOIZE_BINARY | ( | V, | |
dest, | |||
src1, | |||
src2, | |||
fun, | |||
arg1, | |||
arg2, | |||
lazy | |||
) |
typedef memoizer<V>::binary<dest,src1,src2,fun> memo; \ if (!memo::busy) { \ START_MEMOIZER(V,dest,(fun)(arg1,arg2)); \ memo::start (); \ } \ pair<src1,src2> arg (arg1, arg2); \ dest res; \ if (memo::t->get (arg, res)) return res; \ res= lazy; \ memo::t [arg]= res; \ return res;
Definition at line 171 of file memoize.hpp.
Referenced by mmx::compare(), and mmx::derive().
#define MEMOIZE_TERNARY | ( | V, | |
dest, | |||
src1, | |||
src2, | |||
src3, | |||
fun, | |||
arg1, | |||
arg2, | |||
arg3, | |||
lazy | |||
) |
typedef memoizer<V>::ternary<dest,src1,src2,src3,fun> memo; \ if (!memo::busy) { \ START_MEMOIZER(V,dest,(fun)(arg1,arg2, arg3)); \ memo::start (); \ } \ triple<src1,src2,src3> arg (arg1, arg2, arg3); \ dest res; \ if (memo::t->get (arg, res)) return res; \ res= lazy; \ memo::t [arg]= res; \ return res;
Definition at line 184 of file memoize.hpp.
#define MEMOIZE_UNARY | ( | V, | |
dest, | |||
src1, | |||
fun, | |||
arg1, | |||
lazy | |||
) |
typedef memoizer<V>::unary<dest,src1,fun> memo; \ if (!memo::busy) { \ START_MEMOIZER(V,dest,(fun)(arg1)); \ memo::start (); \ } \ dest res; \ if (memo::t->get (arg1, res)) return res; \ res= lazy; \ memo::t [arg1]= res; \ return res;
Definition at line 159 of file memoize.hpp.
Referenced by mmx::flatten().
#define START_MEMOIZER | ( | V, | |
dest, | |||
call | |||
) |
if (!memoizer<V>::busy) { \ memoizer<V>::start (); \ dest res= call; \ memoizer<V>::end (); \ return res; \ }
Definition at line 151 of file memoize.hpp.