aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvField.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/QvField.h
downloadopenparsec-c068f22329d5cc722622a2183bbb22eef2093df7.tar.xz
openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.zip
initial importHEADmain
Diffstat (limited to 'tool_src/QvLib/QvField.h')
-rw-r--r--tool_src/QvLib/QvField.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvField.h b/tool_src/QvLib/QvField.h
new file mode 100644
index 0000000..ff32ade
--- /dev/null
+++ b/tool_src/QvLib/QvField.h
@@ -0,0 +1,72 @@
+#ifndef _QV_FIELD_
+#define _QV_FIELD_
+
+#include <QvString.h>
+
+class QvInput;
+class QvNode;
+
+class QvField {
+ public:
+ virtual ~QvField();
+
+ void setIgnored(QvBool ig) { flags.ignored = ig; }
+ QvBool isIgnored() const { return flags.ignored; }
+
+ QvBool isDefault() const { return flags.hasDefault; }
+
+ QvNode * getContainer() const { return container; }
+
+ void setDefault(QvBool def) { flags.hasDefault = def; }
+ void setContainer(QvNode *cont);
+ QvBool read(QvInput *in, const QvName &name);
+
+ QvField() { flags.hasDefault = TRUE; flags.ignored = FALSE; }
+
+ public:
+
+ private:
+ struct {
+ unsigned int hasDefault : 1; // Field is set to default value
+ unsigned int ignored : 1; // Field value is to be ignored
+ } flags;
+
+ QvNode *container;
+
+ static QvField * createInstanceFromName(const QvName &className);
+ virtual QvBool readValue(QvInput *in) = 0;
+
+friend class QvFieldData;
+};
+
+class QvSField : public QvField {
+ public:
+ virtual ~QvSField();
+
+ protected:
+ QvSField();
+
+ private:
+ virtual QvBool readValue(QvInput *in) = 0;
+};
+
+class QvMField : public QvField {
+
+ public:
+ int num; // Number of values
+ int maxNum; // Number of values allocated
+
+ // Destructor
+ virtual ~QvMField();
+
+ protected:
+ QvMField();
+ virtual void makeRoom(int newNum);
+
+ private:
+ virtual void allocValues(int num) = 0;
+ virtual QvBool readValue(QvInput *in);
+ virtual QvBool read1Value(QvInput *in, int index) = 0;
+};
+
+#endif /* _QV_FIELD_ */