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/QvField.h | |
| download | openparsec-main.tar.xz openparsec-main.zip | |
Diffstat (limited to 'tool_src/QvLib/QvField.h')
| -rw-r--r-- | tool_src/QvLib/QvField.h | 72 |
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_ */ |
