2013-10-30 11:46:18 +00:00
|
|
|
#include "BaseDefinition.h"
|
|
|
|
|
2013-11-03 12:00:31 +00:00
|
|
|
#include "PackStream.h"
|
|
|
|
|
2013-10-30 11:46:18 +00:00
|
|
|
BaseDefinition::BaseDefinition(BaseDefinition* parent):
|
|
|
|
parent(parent)
|
|
|
|
{
|
2013-10-30 14:39:56 +00:00
|
|
|
if (parent)
|
|
|
|
{
|
|
|
|
root = parent->root;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
root = this;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
BaseDefinition::~BaseDefinition()
|
|
|
|
{
|
|
|
|
QListIterator<BaseDefinition*> it(children);
|
|
|
|
while (it.hasNext())
|
|
|
|
{
|
|
|
|
delete it.next();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-10-31 16:59:18 +00:00
|
|
|
void BaseDefinition::setName(QString name)
|
2013-10-30 14:39:56 +00:00
|
|
|
{
|
2013-10-31 16:59:18 +00:00
|
|
|
this->name = name;
|
2013-10-30 14:39:56 +00:00
|
|
|
}
|
|
|
|
|
2013-11-15 23:27:40 +00:00
|
|
|
void BaseDefinition::save(PackStream* stream) const
|
2013-10-30 14:39:56 +00:00
|
|
|
{
|
2013-11-15 23:27:40 +00:00
|
|
|
stream->write(name);
|
2013-10-30 14:39:56 +00:00
|
|
|
QListIterator<BaseDefinition*> it(children);
|
|
|
|
while (it.hasNext())
|
|
|
|
{
|
2013-11-15 23:27:40 +00:00
|
|
|
it.next()->save(stream);
|
2013-10-30 14:39:56 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-11-15 23:27:40 +00:00
|
|
|
void BaseDefinition::load(PackStream* stream)
|
2013-10-30 14:39:56 +00:00
|
|
|
{
|
2013-11-15 23:27:40 +00:00
|
|
|
name = stream->readString();
|
2013-10-30 14:39:56 +00:00
|
|
|
QListIterator<BaseDefinition*> it(children);
|
|
|
|
while (it.hasNext())
|
|
|
|
{
|
2013-11-15 23:27:40 +00:00
|
|
|
it.next()->load(stream);
|
2013-10-30 14:39:56 +00:00
|
|
|
}
|
2013-10-30 11:46:18 +00:00
|
|
|
}
|
2013-10-31 16:59:18 +00:00
|
|
|
|
2013-11-13 19:07:35 +00:00
|
|
|
void BaseDefinition::copy(BaseDefinition* destination) const
|
2013-10-31 16:59:18 +00:00
|
|
|
{
|
2013-10-31 23:09:51 +00:00
|
|
|
destination->setName(name);
|
|
|
|
// can't copy children as we don't know their types...
|
2013-10-31 16:59:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void BaseDefinition::validate()
|
|
|
|
{
|
|
|
|
QListIterator<BaseDefinition*> it(children);
|
|
|
|
while (it.hasNext())
|
|
|
|
{
|
|
|
|
it.next()->validate();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void BaseDefinition::addChild(BaseDefinition* child)
|
|
|
|
{
|
|
|
|
if (not children.contains(child))
|
|
|
|
{
|
|
|
|
children.append(child);
|
|
|
|
child->parent = this;
|
|
|
|
child->root = this->root;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void BaseDefinition::removeChild(BaseDefinition* child)
|
|
|
|
{
|
|
|
|
children.removeOne(child);
|
|
|
|
}
|