diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
| commit | c068f22329d5cc722622a2183bbb22eef2093df7 (patch) | |
| tree | 12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/QvLib/QvGroup.cpp | |
| download | openparsec-main.tar.xz openparsec-main.zip | |
Diffstat (limited to 'tool_src/QvLib/QvGroup.cpp')
| -rw-r--r-- | tool_src/QvLib/QvGroup.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvGroup.cpp b/tool_src/QvLib/QvGroup.cpp new file mode 100644 index 0000000..96795c5 --- /dev/null +++ b/tool_src/QvLib/QvGroup.cpp @@ -0,0 +1,81 @@ +#include <QvInput.h> +#include <QvReadError.h> +#include <QvFieldData.h> +#include <QvChildList.h> +#include <QvGroup.h> + +QV_NODE_SOURCE(QvGroup); + +QvGroup::QvGroup() +{ + children = new QvChildList(); + QV_NODE_CONSTRUCTOR(QvGroup); + isBuiltIn = TRUE; +} + +QvGroup::~QvGroup() +{ + delete children; +} + +QvNode * +QvGroup::getChild(int index) const +{ + return(*children)[index]; +} + +int +QvGroup::getNumChildren() const +{ + return children->getLength(); +} + +QvChildList * +QvGroup::getChildren() const +{ + return children; +} + +QvBool +QvGroup::readInstance(QvInput *in) +{ + QvName typeString; + QvFieldData *fieldData = getFieldData(); + + if (! isBuiltIn) { + if (in->read(typeString, TRUE)) { + if (typeString == "fields") { + if (! fieldData->readFieldTypes(in, this)) { + QvReadError::post(in, "Bad field specifications for node"); + return FALSE; + } + } + else + in->putBack(typeString.getString()); + } + } + + return (fieldData->read(in, this, FALSE) && readChildren(in)); +} + +QvBool +QvGroup::readChildren(QvInput *in) +{ + QvNode *child; + QvBool ret = TRUE; + + while (TRUE) { + if (read(in, child)) { + if (child != NULL) + children->append(child); + else + break; + } + else { + ret = FALSE; + break; + } + } + + return ret; +} |
