Feel++ 0.91.0
Classes | Namespaces | Defines

/build/buildd/feel++-0.91.0~svn7013/feel/feelcore/visitor.hpp File Reference

#include <boost/mpl/assert.hpp>
#include <boost/mpl/list.hpp>
#include <boost/mpl/front.hpp>
#include <boost/mpl/pop_front.hpp>
#include <feel/feelcore/feel.hpp>

Classes

class  Feel::VisitorBase
 The base class of any Acyclic Visitor. More...
class  Feel::Visitor< T, R >
class  Feel::VisitorList< TList, R >
class  Feel::VisitorBaseImpl< mpl::list< Head, Tail >, R >
class  Feel::VisitorBaseImpl< mpl::list< Head >, R >
class  Feel::VisitableCatchAllDefault< R, Visited >
class  Feel::VisitableBase< R, CatchAll >
class  Feel::VisitorCyclic< R, TList >

Namespaces

namespace  Feel

Defines

#define FEEL_DEFINE_VISITABLE()
#define FEEL__DEFINE_CYCLIC_VISITABLE(SomeVisitor)

Detailed Description

Author:
Christophe Prud'homme <christophe.prudhomme@ujf-grenoble.fr>
Date:
2005-03-21

Define Documentation

#define FEEL__DEFINE_CYCLIC_VISITABLE (   SomeVisitor)
Value:
virtual SomeVisitor::return_type Accept(SomeVisitor& guest)     \
  {                                                               \
    return guest.genericVisit(*this);                             \
  }                                                               \
  virtual SomeVisitor::return_type Accept(SomeVisitor* guest)     \
  {                                                               \
    return guest->genericVisit(*this);                            \
  }
#define FEEL_DEFINE_VISITABLE ( )
Value:
virtual return_type accept( VisitorBase& guest )   \
  {                                                   \
    return acceptImpl( this, &guest );                 \
  }                                                   \
  virtual return_type accept( VisitorBase* guest )   \
  {                                                   \
    return acceptImpl( this, guest );                 \
  }

Put it in every class that you want to make visitable (in addition to deriving it from VisitableBase<R>