From c068f22329d5cc722622a2183bbb22eef2093df7 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 24 Aug 2026 11:16:07 +0200 Subject: initial import --- tool_src/QvLib/QvField.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 tool_src/QvLib/QvField.h (limited to 'tool_src/QvLib/QvField.h') 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 + +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_ */ -- cgit v1.2.3