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/QvSFEnum.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tool_src/QvLib/QvSFEnum.h (limited to 'tool_src/QvLib/QvSFEnum.h') 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 +#include + +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_ */ -- cgit v1.2.3