Feel++  0.91.4
Classes | Namespaces | Defines
/build/buildd/feel++-0.91.4/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 FEELPP_DEFINE_VISITABLE()
#define FEELPP__DEFINE_CYCLIC_VISITABLE(SomeVisitor)

Detailed Description

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

Define Documentation

#define FEELPP__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);                            \
  }
Value:
virtual return_type accept( VisitorBase& guest )         \
    {                                                        \
        return this->acceptImpl( this, &guest );             \
    }                                                        \
    virtual return_type accept( VisitorBase* guest )         \
    {                                                        \
        return this->acceptImpl( this, guest );              \
    }

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