/*
MultiNode sample code
Henry Smith (henry@enigmasoftware.ca)
MultiNode base class encapsulating non-templatized behaviour
*/
#ifndef MultiNodeBase_H
#define MultiNodeBase_H
#include "MultiNodeImpl.h"
#include "MultiNodeRef.h"
////////////////////////////////////////////////////////////////////////////////
//
// MultiNodeBase
//
////////////////////////////////////////////////////////////////////////////////
class MultiNodeBase
: public MultiNodeImpl
{
typedef MultiNodeImpl Super;
public:
MultiNodeBase ();
virtual ~MultiNodeBase ();
// Family-specific node operations
void AddChildIn (FamilyID inFamily, MultiNodeRef inNode);
void RemoveChildIn (FamilyID inFamily, MultiNodeRef inNode);
bool HasChildrenIn (FamilyID inFamily) const;
int CountChildrenIn (FamilyID inFamily) const;
// Basic node operations (these operate on the current family)
private:
void AddChild (MultiNodeRef& inNode);
void RemoveChild (MultiNodeRef& inNode);
bool HasChildren () const;
int CountChildren () const;
};
#endif // MultiNodeBase_H