diff options
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_ */ |
