| 
    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.