blob: 14a6c4bd051c8c19980a89f91a899b65a4dbb3aa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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_ */
|