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