cVisitor Class Reference
[Simulation core classesUtility classes]

Enables traversing the tree of (cObject-rooted) simulation objects. More...

#include <cvisitor.h>

List of all members.

Classes

class  EndTraversalException
 Can be thrown to get out in the middle of the traversal process. More...

Public Member Functions

virtual ~cVisitor ()
virtual bool process (cObject *obj)
virtual bool processChildrenOf (cObject *obj)
virtual void visit (cObject *obj)=0

Detailed Description

Enables traversing the tree of (cObject-rooted) simulation objects.

Should be subclassed and the visit() method redefined according to your needs.

An example: the cRecursiveObjectFinderVisitor class (internal) has been created to find an object of the given name. The constructor accepts the name of the object to search for, and visit() has been redefined to perform recursive traversal, and to throw EndTraversalException if it finds the given object. The class can be used like this:

 cRecursiveObjectFinderVisitor v(objectName);
 v.process(root);
 cObject *result = v.getResult();

The above code will find the root object as well, if its name matches. The second version (below) starts the traversal at the children, so the root object is ignored.

 cRecursiveObjectFinderVisitor v(objectName);
 v.processChildrenOf(root);
 cObject *result = v.getResult();

Member Function Documentation

virtual bool cVisitor::process ( cObject obj  )  [virtual]

Starts the visiting process.

This version simply calls visit(obj), and catches EndTraversalException if one occurs. Return value is true if traversal went through and false if EndTraversalException was caught.

virtual bool cVisitor::processChildrenOf ( cObject obj  )  [virtual]

Similar to process(), except that it skips the object itself, i.e.

it begins with processing the children. Calls obj->forEachChild(this), and catches EndTraversalException if one occurs. Return value is true if traversal went through and false if EndTraversalException was caught.

virtual void cVisitor::visit ( cObject obj  )  [pure virtual]

Method called from the forEachChild() methods of every class derived from cObject, for each contained object.

visit() should be redefined by user to encapsulate the operation to be performed on the object. If you want recursively traversal, call obj->forEachChild(this) from here.

This method should NOT be called to to initiate the traversal -- use process() or processChildrenOf() for that.


The documentation for this class was generated from the following file:
Generated on Tue Dec 2 11:16:30 2014 for OMNeT++ Simulation Library by  doxygen 1.6.3