00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef COIN_SOVRMLMACROS_H
00025 #define COIN_SOVRMLMACROS_H
00026
00027 #include <Inventor/nodes/SoSubNode.h>
00028
00029 #define SO_VRMLNODE_INTERNAL_CONSTRUCTOR(_class_) \
00030 SO_NODE_INTERNAL_CONSTRUCTOR(_class_); \
00031 this->setNodeType(SoNode::VRML2);
00032
00033 #define SO_VRMLNODE_ADD_EVENT_IN(_field_) \
00034 do { \
00035 this->_field_.setFieldType(SoField::EVENTIN_FIELD); \
00036 this->_field_.setContainer(this); \
00037 if (SO_NODE_IS_FIRST_INSTANCE()) { \
00038 fieldData->addField(this, SO__QUOTE(_field_), &this->_field_);\
00039 } \
00040 } while (0)
00041
00042 #define SO_VRMLNODE_ADD_EVENT_OUT(_field_) \
00043 do { \
00044 this->_field_.setFieldType(SoField::EVENTOUT_FIELD); \
00045 this->_field_.setContainer(this); \
00046 if (SO_NODE_IS_FIRST_INSTANCE()) { \
00047 fieldData->addField(this, SO__QUOTE(_field_), &this->_field_);\
00048 } \
00049 } while (0)
00050
00051 #define SO_VRMLNODE_ADD_EMPTY_EXPOSED_MFIELD(_field_) \
00052 do { \
00053 this->_field_.setFieldType(SoField::EXPOSED_FIELD); \
00054 this->_field_.setContainer(this); \
00055 if (SO_NODE_IS_FIRST_INSTANCE()) { \
00056 fieldData->addField(this, SO__QUOTE(_field_), &this->_field_);\
00057 } \
00058 } while (0)
00059
00060 #define SO_VRMLNODE_ADD_EMPTY_MFIELD(_field_) \
00061 do { \
00062 this->_field_.setContainer(this); \
00063 if (SO_NODE_IS_FIRST_INSTANCE()) { \
00064 fieldData->addField(this, SO__QUOTE(_field_), &this->_field_);\
00065 } \
00066 } while (0)
00067
00068
00069 #define SO_VRMLNODE_ADD_FIELD(_field_, _defaultval_) \
00070 SO_NODE_ADD_FIELD(_field_, _defaultval_)
00071
00072 #define SO_VRMLNODE_ADD_EXPOSED_FIELD(_field_, _defaultval_) \
00073 this->_field_.setFieldType(SoField::EXPOSED_FIELD); \
00074 SO_NODE_ADD_FIELD(_field_, _defaultval_)
00075
00076 #define SO_VRML97_NODE_TYPE (SoNode::VRML2|SoNode::COIN_2_0)
00077
00078
00079 #endif // COIN_SOVRMLMACROS_H