#include <basix/table.hpp>#include <basix/triple.hpp>#include <basix/list.hpp>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.
1.6.1