Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

MCNodeBase Class Reference

#include <MCNode.h>

Inheritance diagram for MCNodeBase:

Inheritance graph
[legend]
List of all members.

Detailed Description

Common parent class for all the templated MCNode, which is what you want to instantiate.

Definition at line 10 of file MCNode.h.

Public Member Functions

virtual ~MCNodeBase ()
 destructor, free mc
virtual void DoStart ()
 Adds the motion command to the motion manager, add a listener for the motion's completion event.
virtual void processEvent (const EventBase &)
 Assumes the event is a completion event from the motion, throws a corresponding state node completion event.
virtual void DoStop ()
 Removes the motion command from the motion manager if it was our own creation.
virtual void setMC (MotionManager::MC_ID mcid)
 Allows you to assign a previously created motion, which might be shared among several MCNodes.
virtual MotionManager::MC_ID getMC_ID ()
 reveal the MC_ID; if the motion isn't currently active, returns MotionManager::invalid_MC_ID
virtual std::string getDescription () const
 Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

Static Public Member Functions

static std::string getClassDescription ()
 Gives a short description of what this class of behaviors does... you should override this (but don't have to).

Static Public Attributes

static const char defName [] = "MCNode"
 the default name for MCNodes -- can be overridden via MCNode's template arguments
static const char defDesc [] = "A generic wrapper for any MotionCommand"
 the default description for MCNodes -- can be overridden via MCNode's template arguments

Protected Member Functions

 MCNodeBase (const std::string &class_name, const std::string &node_name, bool expectCompletion=true)
 constructor for subclasses (which would need to provide a different class name)
virtual SharedObjectBasegetPrivateMC ()=0
 returns reference to mc or a new SharedObject<T> if mc is currently NULL (so it will always return a valid value)
virtual bool hasPrivateMC ()
 returns true if the motion command being used was created internally via getPrivateMC()

Protected Attributes

SharedObjectBasemc
 MotionCommand used by this node (may be NULL if sharing the MC with other nodes).
MotionManager::MC_ID mc_id
 id number for the MotionCommand
bool mcCompletes
 if true, will post a completion when the underlying MotionCommand posts a status

Private Member Functions

 MCNodeBase (const MCNodeBase &)
 don't call (copy constructor)
MCNodeBaseoperator= (const MCNodeBase &)
 don't call (assignment operator)


Member Function Documentation

static std::string MCNodeBase::getClassDescription (  )  [inline, static]

Gives a short description of what this class of behaviors does... you should override this (but don't have to).

If you do override this, also consider overriding getDescription() to return it

Reimplemented from BehaviorBase.

Reimplemented in LedNode, MCNode< T, mcName, mcDesc, completes >, MCNode< LedMC >, MCNode< PostureMC, defPostureNodeName, defPostureNodeDesc, true >, MCNode< TailWagMC, defTailWagNodeName, defTailWagNodeDesc, false >, MCNode< W, mcName, mcDesc >, and MCNode< HeadPointerMC, defHeadPointerNodeName, defHeadPointerNodeDesc, true >.

Definition at line 34 of file MCNode.h.

Referenced by getDescription().

virtual std::string MCNodeBase::getDescription (  )  const [inline, virtual]

Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

By default simply returns getName(), because any calls from a BehaviorBase function to getClassDescription() are going to call BehaviorBase::getClassDescription(), not ~YourSubClass~getClassDescription(), because static functions can't be virtual in C++ (doh!)

This means that getDescription called on a pointer to a BehaviorBase of unknown subtype would always return an empty string, which is pretty useless. So instead we return the name in this situation. If you want getDescription to return getClassDescription, you'll have to override it in your subclass to do so.

Reimplemented from BehaviorBase.

Reimplemented in LedNode, MCNode< T, mcName, mcDesc, completes >, MCNode< LedMC >, MCNode< PostureMC, defPostureNodeName, defPostureNodeDesc, true >, MCNode< TailWagMC, defTailWagNodeName, defTailWagNodeDesc, false >, MCNode< W, mcName, mcDesc >, and MCNode< HeadPointerMC, defHeadPointerNodeName, defHeadPointerNodeDesc, true >.

Definition at line 35 of file MCNode.h.

virtual SharedObjectBase& MCNodeBase::getPrivateMC (  )  [protected, pure virtual]

returns reference to mc or a new SharedObject<T> if mc is currently NULL (so it will always return a valid value)

if a particular motion command needs some initial setup besides the default constructor, overriding this function is a good opportunity to do so

Implemented in LedNode, MCNode< T, mcName, mcDesc, completes >, MCNode< LedMC >, MCNode< PostureMC, defPostureNodeName, defPostureNodeDesc, true >, MCNode< TailWagMC, defTailWagNodeName, defTailWagNodeDesc, false >, MCNode< W, mcName, mcDesc >, and MCNode< HeadPointerMC, defHeadPointerNodeName, defHeadPointerNodeDesc, true >.

Referenced by DoStart().

virtual void MCNodeBase::setMC ( MotionManager::MC_ID  mcid  )  [virtual]

Allows you to assign a previously created motion, which might be shared among several MCNodes.

If this node already has an mc, then it will be freed, removing from MotionManager if necessary


The documentation for this class was generated from the following files:

Tekkotsu v3.0
Generated Fri May 11 20:08:23 2007 by Doxygen 1.4.7