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/QvSubNode.h | |
| download | openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.tar.xz openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.zip | |
Diffstat (limited to 'tool_src/QvLib/QvSubNode.h')
| -rw-r--r-- | tool_src/QvLib/QvSubNode.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvSubNode.h b/tool_src/QvLib/QvSubNode.h new file mode 100644 index 0000000..c79c025 --- /dev/null +++ b/tool_src/QvLib/QvSubNode.h @@ -0,0 +1,41 @@ +#ifndef _QV_SUB_NODE_ +#define _QV_SUB_NODE_ + +#include <QvFieldData.h> +#include <QvNode.h> + +#define QV_NODE_HEADER(className) \ + public: \ + className(); \ + virtual ~className(); \ + virtual void traverse(QvState *state); \ + private: \ + static QvBool firstInstance; \ + static QvFieldData *fieldData; \ + virtual QvFieldData *getFieldData() { return fieldData; } + +#define QV_NODE_SOURCE(className) \ + QvFieldData *className::fieldData; \ + QvBool className::firstInstance = TRUE; + +#define QV_NODE_CONSTRUCTOR(className) \ + if (fieldData == NULL) \ + fieldData = new QvFieldData; \ + else \ + firstInstance = FALSE; \ + isBuiltIn = FALSE; \ + +#define QV_NODE_IS_FIRST_INSTANCE() (firstInstance == TRUE) + +#define QV_NODE_ADD_FIELD(fieldName) \ + if (firstInstance) \ + fieldData->addField(this, QV__QUOTE(fieldName), &this->fieldName); \ + this->fieldName.setContainer(this); + +#define QV_NODE_DEFINE_ENUM_VALUE(enumType,enumValue) \ + if (firstInstance) \ + fieldData->addEnumValue(QV__QUOTE(enumType), \ + QV__QUOTE(enumValue), enumValue) + +#endif /* _QV_SUB_NODE_ */ + |
