# Visitor

## Classes

class | Loki::BaseVisitor
class | Visitor
class | Loki::CyclicVisitor< R, TList >

## Defines

#define | LOKI_DEFINE_VISITABLE()
#define | LOKI_DEFINE_CONST_VISITABLE()
#define | LOKI_DEFINE_CYCLIC_VISITABLE(SomeVisitor)

## Define Documentation

#define LOKI_DEFINE_CONST_VISITABLE | ( |  | ) |

Value:

    virtual ReturnType Accept(::Loki::BaseVisitor& guest) const \
        { return AcceptImpl(*this, guest); }

Put it in every class that you want to make visitable by const member functions (in addition to deriving it from BaseVisitable<R>)

#define LOKI_DEFINE_CYCLIC_VISITABLE | ( | SomeVisitor |  | ) |

Value:

    virtual SomeVisitor::ReturnType Accept(SomeVisitor& guest) \
        { return guest.GenericVisit(*this); }

Put it in every class that you want to make visitable by a cyclic visitor

#define LOKI_DEFINE_VISITABLE | ( |  | ) |

Value:

    virtual ReturnType Accept(::Loki::BaseVisitor& guest) \
        { return AcceptImpl(*this, guest); }

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