aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvSubNode.h
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
commitc068f22329d5cc722622a2183bbb22eef2093df7 (patch)
tree12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/QvLib/QvSubNode.h
downloadopenparsec-main.tar.xz
openparsec-main.zip
initial importHEADmain
Diffstat (limited to 'tool_src/QvLib/QvSubNode.h')
-rw-r--r--tool_src/QvLib/QvSubNode.h41
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_ */
+