00001 #ifndef COIN_SOMFENUM_H
00002 #define COIN_SOMFENUM_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include <Inventor/fields/SoMField.h>
00028 #include <Inventor/fields/SoSubField.h>
00029
00030 class COIN_DLL_API SoMFEnum : public SoMField {
00031 typedef SoMField inherited;
00032
00033 SO_MFIELD_HEADER(SoMFEnum, int, int);
00034
00035 public:
00036 static void initClass(void);
00037
00038 void setValue(const SbName name);
00039 void set1Value(const int idx, const SbName name);
00040 void setEnums(const int num, const int * const values,
00041 const SbName * const names);
00042
00043 int getNumEnums(void) const;
00044 int getEnum(const int idx, SbName & name) const;
00045
00046 protected:
00047 virtual SbBool findEnumValue(const SbName & name, int & value);
00048 virtual SbBool findEnumName(int value, const SbName * & name) const;
00049
00050 SbBool legalValuesSet;
00051 int numEnums;
00052 int * enumValues;
00053 SbName * enumNames;
00054 };
00055
00056
00057
00058 #include <Inventor/fields/SoSFEnum.h>
00059
00060 #define SO_ENGINE_SET_MF_ENUM_TYPE(_fieldname_, _enumtype_) \
00061 PRIVATE_SOENUM_SET_TYPE(_fieldname_, _enumtype_, inputdata)
00062
00063 #define SO_NODE_SET_MF_ENUM_TYPE(_fieldname_, _enumtype_) \
00064 PRIVATE_SOENUM_SET_TYPE(_fieldname_, _enumtype_, fieldData)
00065
00066 #endif // !COIN_SOMFENUM_H