Go to the documentation of this file.
   69#ifndef  _SO_SUB_ACTION_ 
   70#define  _SO_SUB_ACTION_ 
   87#define SO_ACTION_HEADER(className)                                           \ 
   89    virtual SoType              getTypeId() const;                            \ 
   90    static SoType               getClassTypeId()                              \ 
   91                                    { return classTypeId; }                   \ 
   93    static void                 addMethod(SoType t, SoActionMethod method)    \ 
   94                                    { methods->addMethod(t, method); }        \ 
   95    static void                 enableElement(SoType t, int stkIndex)         \ 
   96                                    { enabledElements->enable(t, stkIndex);}  \ 
   98    virtual const SoEnabledElementsList & getEnabledElements() const;         \ 
   99    static SoEnabledElementsList *enabledElements;                            \ 
  100    static SoActionMethodList   *methods;                                     \ 
  102    static SoType               classTypeId 
 
  114#define SO__ACTION_VARS(className)                                            \ 
  115    SoEnabledElementsList       *className::enabledElements;                  \ 
  116    SoActionMethodList          *className::methods;                          \ 
  117    SoType                      className::classTypeId 
 
  124#define SO__ACTION_METHODS(className)                                         \ 
  127className::getTypeId() const                                                  \ 
  129    return classTypeId;                                                       \ 
  132const SoEnabledElementsList &                                                 \ 
  133className::getEnabledElements() const                                         \ 
  135    return *enabledElements;                                                  \ 
 
  142#define SO_ACTION_SOURCE(className)                                           \ 
  143    SO__ACTION_VARS(className);                                               \ 
  144    SO__ACTION_METHODS(className) 
 
  153#define SO_ACTION_INIT_CLASS(className, parentClass)                          \ 
  154    enabledElements = new SoEnabledElementsList(parentClass::enabledElements);\ 
  155    methods = new SoActionMethodList(parentClass::methods);                   \ 
  156    classTypeId    = SoType::createType(parentClass::getClassTypeId(),        \ 
  157                                        SO__QUOTE(className), NULL) 
 
  165#define SO_ACTION_CONSTRUCTOR(className)                                      \ 
  166    traversalMethods = methods 
 
  175#define SO_ACTION_ADD_METHOD(nodeClass, method)                               \ 
  176    addMethod(nodeClass::getClassTypeId(), method)