paysages3d/src/definition/BaseDefinition.h

53 lines
1.3 KiB
C
Raw Normal View History

#ifndef BASEDEFINITION_H
#define BASEDEFINITION_H
#include "definition_global.h"
namespace paysages {
namespace definition {
/**
* @brief Base class for all definition containers
*/
class DEFINITIONSHARED_EXPORT BaseDefinition
{
public:
BaseDefinition(BaseDefinition* parent, const std::string &name);
virtual ~BaseDefinition();
2013-11-15 23:27:40 +00:00
virtual void save(PackStream* stream) const;
virtual void load(PackStream* stream);
2013-11-13 19:07:35 +00:00
virtual void copy(BaseDefinition* destination) const;
2013-10-31 16:59:18 +00:00
virtual void validate();
inline const std::string &getName() const {return name;}
virtual void setName(const std::string &name);
2013-10-31 16:59:18 +00:00
virtual Scenery* getScenery();
2013-11-13 19:07:35 +00:00
inline const BaseDefinition* getParent() const {return parent;}
inline const BaseDefinition* getRoot() const {return root;}
2015-08-12 17:29:28 +00:00
inline int getChildrenCount() const {return children.size();}
2013-10-31 21:53:22 +00:00
/**
* Return a string representation of the tree (mainly for debugging purposes).
*/
virtual std::string toString(int indent = 0) const;
2013-10-30 14:39:56 +00:00
protected:
void addChild(BaseDefinition* child);
void removeChild(BaseDefinition* child);
private:
BaseDefinition* parent;
2013-10-30 14:39:56 +00:00
BaseDefinition* root;
std::string name;
std::vector<BaseDefinition*> children;
};
}
}
#endif // BASEDEFINITION_H