aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvSFEnum.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/QvSFEnum.h
downloadopenparsec-main.tar.xz
openparsec-main.zip
initial importHEADmain
Diffstat (limited to 'tool_src/QvLib/QvSFEnum.h')
-rw-r--r--tool_src/QvLib/QvSFEnum.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvSFEnum.h b/tool_src/QvLib/QvSFEnum.h
new file mode 100644
index 0000000..14a6c4b
--- /dev/null
+++ b/tool_src/QvLib/QvSFEnum.h
@@ -0,0 +1,38 @@
+#ifndef _QV_SF_ENUM_
+#define _QV_SF_ENUM_
+
+#include <QvString.h>
+#include <QvSubField.h>
+
+class QvSFEnum : public QvSField {
+ public:
+ int value;
+ QV_SFIELD_HEADER(QvSFEnum);
+
+ // Sets up value/name correspondances
+ void setEnums(int num, const int vals[], const QvName names[])
+ { numEnums = num; enumValues = vals; enumNames = names; }
+
+ int numEnums; // Number of enumeration values
+ const int *enumValues; // Enumeration values
+ const QvName *enumNames; // Mnemonic names of values
+
+ // Looks up enum name, returns value. Returns FALSE if not found.
+ QvBool findEnumValue(const QvName &name, int &val) const;
+};
+
+#define QV_NODE_SET_SF_ENUM_TYPE(fieldName, enumType) \
+ do { \
+ int _so_sf_enum_num; \
+ const int *_so_sf_enum_vals; \
+ const QvName *_so_sf_enum_names; \
+ fieldData->getEnumData(QV__QUOTE(enumType), \
+ _so_sf_enum_num, \
+ _so_sf_enum_vals, \
+ _so_sf_enum_names); \
+ fieldName.setEnums(_so_sf_enum_num, \
+ _so_sf_enum_vals, \
+ _so_sf_enum_names); \
+ } while (0)
+
+#endif /* _QV_SF_ENUM_ */