include/basix/memoize.hpp File Reference

#include <basix/table.hpp>
#include <basix/triple.hpp>
#include <basix/list.hpp>

Go to the source code of this file.

Classes

Namespaces

Defines


Detailed Description

Definition in file memoize.hpp.


Define Documentation

#define MEMOIZE_BINARY ( V,
dest,
src1,
src2,
fun,
arg1,
arg2,
lazy   ) 
Value:
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   ) 
Value:
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   ) 
Value:
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   ) 
Value:
if (!memoizer<V>::busy) {                       \
    memoizer<V>::start ();                      \
    dest res= call;                             \
    memoizer<V>::end ();                        \
    return res;                                 \
  }

Definition at line 151 of file memoize.hpp.


Generated on 6 Dec 2012 for basix by  doxygen 1.6.1