Show
Ignore:
Timestamp:
11/12/07 17:52:26 (1 year ago)
Author:
cneumann
Message:

changed: parent linking uses FC helper functions, so that parent

fields can be read only.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/Carsten_PtrWork2/Tools/fcd2code/TemplateFieldContainerBase_h.txt

    r894 r1015  
    6060 
    6161#include "@!HeaderPrefix!@OSGConfig.h" 
    62 @@if isInLibrary 
     62@@if @!isInLibrary!@ 
    6363#include "OSG@!Libname!@Def.h" 
    6464@@endif // isInLibrary 
     
    6868#include "@!ParentHeaderPrefix!@OSG@!Parent!@.h" // Parent 
    6969 
    70 @@if !isDecorator 
     70@@if not @!isDecorator!@ 
    7171    @@BeginFieldLoop@@ 
    7272#include "@!field.TypeInclude!@" // @!field.Name!@ type 
     
    7777 
    7878#include "OSG@!Classname!@Fields.h" 
    79 @@if hasMixinParent 
     79@@if @!hasMixinParent!@ 
    8080 
    8181#include "OSG@!MixinParent!@.h" 
     
    8888//! \brief @!Classname!@ Base Class. 
    8989 
    90 @@if hasMixinParent 
    91 @@if isInLibrary 
     90@@if @!hasMixinParent!@ 
     91    @@if @!isInLibrary!@ 
    9292class OSG_@!LIBNAME!@_DLLMAPPING @!Classname!@Base : public @!MixinParent!@ 
    93 @@else // isInLibrary 
     93    @@else // isInLibrary 
    9494class @!Classname!@Base : public @!MixinParent!@ 
    95 @@endif // isInLibrary 
    96 @@else 
    97 @@if isInLibrary 
     95    @@endif // isInLibrary 
     96@@else // hasMixinParent 
     97    @@if @!isInLibrary!@ 
    9898class OSG_@!LIBNAME!@_DLLMAPPING @!Classname!@Base : public @!Parent!@ 
    99 @@else // isInLibrary 
     99    @@else // isInLibrary 
    100100class @!Classname!@Base : public @!Parent!@ 
    101 @@endif // isInLibrary 
     101    @@endif // isInLibrary 
    102102@@endif // hasMixinParent 
    103103{ 
     104    /*==========================  PUBLIC  =================================*/ 
    104105  public: 
    105  
    106 @@if hasMixinParent 
     106    /*---------------------------------------------------------------------*/ 
     107    /*! \name Public Types                                                 */ 
     108    /*! \{                                                                 */ 
     109     
     110@@if @!hasMixinParent!@ 
    107111    typedef @!MixinParent!@ Inherited; 
    108112@@else 
     
    113117    typedef Inherited::TypeObject TypeObject; 
    114118    typedef TypeObject::InitPhase InitPhase; 
    115  
    116     OSG_GEN_INTERNALPTR(@!Classname!@); 
    117  
    118     /*==========================  PUBLIC  =================================*/ 
    119  
    120   public: 
    121  
    122 @@if isDecorator 
     119        
     120@@if @!isDecorator!@ 
     121    typedef SF@!Parent!@InternalPtr DecorateeFieldType; 
     122@@else // @!isDecorator!@ 
     123    @@BeginFieldLoop@@ 
     124    typedef @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps:20!@ @!field.Name!@FieldType; 
     125    @@EndFieldLoop@@ 
     126@@endif 
     127     
     128    /*! \}                                                                 */ 
     129    /*---------------------------------------------------------------------*/ 
     130    /*! \name Constants                                                    */ 
     131    /*! \{                                                                 */ 
     132 
     133@@if @!isDecorator!@ 
    123134    enum 
    124135    { 
     
    129140    static const OSG::BitVector DecorateeFieldMask = 
    130141        (TypeTraits<BitVector>::One << DecorateeFieldId); 
     142         
    131143@@else // isDecorator 
    132     @@if hasFields 
     144    @@if @!hasFields!@ 
    133145    enum 
    134146    { 
    135         @@BeginFieldLoop 
    136             @@if field.isFirstField 
     147        @@BeginFieldLoop@@ 
     148            @@if @!field.isFirstField!@ 
    137149        @!field.Name!@FieldId = Inherited::NextFieldId, 
    138                 @@if field.isLastField 
     150                @@if @!field.isLastField!@ 
    139151        NextFieldId = @!field.Name!@FieldId + 1 
    140152                @@endif // field.isLastField 
    141153            @@else // field.isFirstField 
    142154        @!field.Name!@FieldId = @!field.prevField.Name!@FieldId + 1, 
    143                 @@if field.isLastField 
     155                @@if @!field.isLastField!@ 
    144156        NextFieldId = @!field.Name!@FieldId + 1 
    145157                @@endif // field.isLastField 
    146158            @@endif // field.isFirstField 
    147         @@EndFieldLoop 
     159        @@EndFieldLoop@@ 
    148160    }; 
    149161 
    150         @@BeginFieldLoop 
     162        @@BeginFieldLoop@@ 
    151163    static const OSG::BitVector @!field.Name!@FieldMask = 
    152164        (TypeTraits<BitVector>::One << @!field.Name!@FieldId); 
    153         @@EndFieldLoop 
     165        @@EndFieldLoop@@ 
    154166    static const OSG::BitVector NextFieldMask = 
    155167        (TypeTraits<BitVector>::One << NextFieldId); 
     168         
    156169    @@endif // hasFields 
    157170@@endif // isDecorator 
    158  
    159     /*---------------------------------------------------------------------*/ 
    160     /*! \name                    Class Get                                 */ 
     171    /*! \}                                                                 */ 
     172    /*---------------------------------------------------------------------*/ 
     173    /*! \name Class Get                                                    */ 
    161174    /*! \{                                                                 */ 
    162175 
     
    167180    /*! \}                                                                 */ 
    168181    /*---------------------------------------------------------------------*/ 
    169     /*! \name                FieldContainer Get                            */ 
    170     /*! \{                                                                 */ 
    171  
    172     virtual       FieldContainerType &getType         (void); 
    173     virtual const FieldContainerType &getType         (void) const; 
    174  
    175     virtual       UInt32              getContainerSize(void) const; 
    176  
    177     /*! \}                                                                 */ 
    178 @@if hasPublicFields 
    179     /*---------------------------------------------------------------------*/ 
    180     /*! \name                    Field Get                                 */ 
    181     /*! \{                                                                 */ 
    182  
    183     @@if isDecorator 
    184     @!MethodType:7!@       const SF@!Parent!@Ptr *getSFDecoratee(void) const; 
     182    /*! \name FieldContainer Get                                           */ 
     183    /*! \{                                                                 */ 
     184 
     185    virtual FieldContainerType       &getType         (void); 
     186    virtual FieldContainerType const &getType         (void) const; 
     187 
     188    virtual UInt32                    getContainerSize(void) const; 
     189 
     190    /*! \}                                                                 */ 
     191@@if @!hasPublicFields!@ 
     192    @@if @!isDecorator!@ 
     193    /*---------------------------------------------------------------------*/ 
     194    /*! \name Field Decoratee                                              */ 
     195    /*! \{                                                                 */ 
     196     
     197    @!MethodType:7!@ SF@!Parent!@InternalRefPtr const *getSFDecoratee(void) const; 
     198    @!MethodType:7!@   @!Parent!@PtrConst              getDecoratee  (void) const; 
     199     
     200    @!MethodType:7!@ void setDecoratee(@!Parent!@PtrConst value); 
     201     
     202    /*! \}                                                                 */ 
    185203    @@endif // isDecorator 
    186204    @@BeginFieldLoop@@ 
    187         @@if field.isPublic 
    188             @@if field.isPtrField 
    189     @!field.MethodType:7!@ const @!field.CARD!@@!field.TypeCaps:17!@ *get@!field.CARD!@@!field.Name:15!@ (void) const; 
    190             @@else // field.isPtrField 
    191  
    192                 @@if CompatOneSix 
    193 #ifdef OSG_1_GET_COMPAT 
    194     @!field.MethodType:7!@       @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *get@!field.CARD!@@!field.Name:15!@ (void); 
    195 #endif 
    196                 @@endif // CompatOneSix 
    197     @!field.MethodType:7!@       @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *edit@!field.CARD!@@!field.Name:15!@(void); 
    198     @!field.MethodType:7!@ const @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *get@!field.CARD!@@!field.Name:15!@ (void) const; 
    199             @@endif // field.isPtrField 
    200         @@endif // field.isPublic 
     205        @@if @!field.accessPublic!@ 
     206    /*---------------------------------------------------------------------*/ 
     207    /*! \name Field @!field.CARD!@@!field.Name:52!@ */ 
     208    /*! \{                                                                 */ 
     209     
     210            @@if @!field.categoryData!@                                      // DATA Field functions 
     211                @@if @!field.isSField!@                                      // DATA SField functions 
     212    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void); 
     213    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const; 
     214                    @@if @!CompatOneSix!@ 
     215#ifdef OSG_1_GET_COMPAT 
     216    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void); 
     217#endif 
     218                    @@endif // CompatOneSix 
     219    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &edit@!field.Name!@(void); 
     220    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@ const &get@!field.Name!@ (void) const; 
     221                    @@if @!CompatOneSix!@ 
     222#ifdef OSG_1_GET_COMPAT 
     223    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &get@!field.Name!@ (void); 
     224#endif 
     225                    @@endif // CompatOneSix 
     226    @!field.MethodType:7!@ void set@!field.Name!@(@!field.TypeNS!@@!field.Type!@ const &value); 
     227                @@else // field.isSField                                     // DATA MField functions 
     228    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void); 
     229    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const; 
     230                    @@if @!CompatOneSix!@ 
     231#ifdef OSG_1_GET_COMPAT 
     232    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void); 
     233#endif 
     234                    @@endif // CompatOneSix 
     235    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       &edit@!field.Name!@(void); 
     236    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &get@!field.Name!@ (void) const; 
     237    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &edit@!field.Name!@(UInt32 const index); 
     238    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@ const &get@!field.Name!@ (UInt32 const index) const; 
     239                    @@if @!CompatOneSix!@ 
     240#ifdef OSG_1_GET_COMPAT 
     241    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &get@!field.Name!@ (UInt32 const index); 
     242    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ &get@!field.Name!@(void); 
     243#endif 
     244                    @@endif // CompatOneSix 
     245                    @@if @!field.writePushToField!@ 
     246    void @!field.PushToField!@(@!field.TypeNS!@@!field.Type!@ const &value); 
     247                    @@endif // field.writePushToField 
     248                    @@if @!field.writeAssignMField!@ 
     249    void @!field.AssignMField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &value); 
     250                    @@endif // field.writeAssignMField 
     251                    @@if @!field.writeInsertIntoMField!@ 
     252    void @!field.InsertIntoMField!@( 
     253            UInt32 const uiIndex, 
     254            @!field.TypeNS!@@!field.Type!@ const &value); 
     255                    @@endif // field.writeInsertIntoMField 
     256                    @@if @!field.writeReplaceInMFieldIndex!@ 
     257    void @!field.ReplaceInMFieldIndex!@( 
     258            UInt32 const uiIndex, 
     259            @!field.TypeNS!@@!field.Type!@ const &value); 
     260                    @@endif // field.writeReplaceInMFieldIndex 
     261                    @@if @!field.writeReplaceInMFieldObject!@ 
     262    void @!field.ReplaceInMFieldObject!@( 
     263            @!field.TypeNS!@@!field.Type!@ const &pOldElem, 
     264            @!field.TypeNS!@@!field.Type!@ const &pNewElem); 
     265                    @@endif // field.writeReplaceInMFieldObject 
     266                    @@if @!field.writeRemoveFromMFieldIndex!@ 
     267    void @!field.RemoveFromMFieldIndex!@(UInt32 const uiIndex); 
     268                    @@endif // field.writeRemoveFromMFieldIndex 
     269                    @@if @!field.writeRemoveFromMFieldObject!@ 
     270    void @!field.RemoveFromMFieldObject!@(@!field.TypeNS!@@!field.Type!@ const &value); 
     271                    @@endif // field.writeRemoveFromMFieldObject 
     272                    @@if @!field.writeClearField!@ 
     273    void @!field.ClearField!@(void); 
     274                    @@endif // field.writeClearField 
     275                @@endif // field.isSField 
     276            @@endif // field.categoryData 
     277            @@if @!field.categoryPointer!@ or @!field.categoryWeakPointer!@  // POINTER Field functions 
     278                @@if @!field.isSField!@                                      // POINTER SField functions 
     279    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     280    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(void) const; 
     281     
     282    @!field.MethodType:7!@ void set@!field.Name!@(@!field.TypeNS!@@!field.Type!@Const value); 
     283                @@else // field.isSField       // POINTER MField functions 
     284    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     285    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &get@!field.Name!@  (void) const; 
     286    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(UInt32 const index) const; 
     287     
     288                    @@if @!field.writePushToField!@ 
     289    void @!field.PushToField!@(@!field.TypeNS!@@!field.Type!@Const value); 
     290                    @@endif // field.writePushToField 
     291                    @@if @!field.writeAssignMField!@ 
     292    void @!field.AssignMField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &value); 
     293                    @@endif // field.writeAssignMField 
     294                    @@if @!field.writeInsertIntoMField!@ 
     295    void @!field.InsertIntoMField!@( 
     296            UInt32 const uiIndex, 
     297            @!field.TypeNS!@@!field.Type!@Const value); 
     298                    @@endif // field.writeInsertIntoMField 
     299                    @@if @!field.writeReplaceInMFieldIndex!@ 
     300    void @!field.ReplaceInMFieldIndex!@( 
     301            UInt32 const uiIndex, 
     302            @!field.TypeNS!@@!field.Type!@Const value); 
     303                    @@endif // field.writeReplaceInMFieldIndex 
     304                    @@if @!field.writeReplaceInMFieldObject!@ 
     305    void @!field.ReplaceInMFieldObject!@( 
     306            @!field.TypeNS!@@!field.Type!@Const pOldElem, 
     307            @!field.TypeNS!@@!field.Type!@Const pNewElem); 
     308                    @@endif // field.writeReplaceInMFieldObject 
     309                    @@if @!field.writeRemoveFromMFieldIndex!@ 
     310    void @!field.RemoveFromMFieldIndex!@(UInt32 const uiIndex); 
     311                    @@endif // field.writeRemoveFromMFieldIndex 
     312                    @@if @!field.writeRemoveFromMFieldObject!@ 
     313    void @!field.RemoveFromMFieldObject!@(@!field.TypeNS!@@!field.Type!@Const value); 
     314                    @@endif // field.writeRemoveFromMFieldObject 
     315                    @@if @!field.writeClearField!@ 
     316    void @!field.ClearField!@(void); 
     317                    @@endif // field.writeClearField 
     318                @@endif // field.isSField 
     319            @@endif // @!field.categoryPointer!@ or @!field.categoryWeakPointer!@ 
     320            @@if @!field.categoryParentPointer!@                             // PARENTPOINTER Field functions 
     321                @@if @!field.isSField!@                                      // PARENTPOINTER SField functions 
     322    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     323    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(void) const; 
     324     
     325                @@else // field.isSField       // PARENTPOINTER MField functions 
     326    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     327    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &get@!field.Name!@  (void) const; 
     328    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(UInt32 const index) const; 
     329     
     330                @@endif // field.isSField 
     331            @@endif // field.categoryParentPointer 
     332     
     333    /*! \}                                                                 */ 
     334        @@endif // field.accessPublic 
    201335    @@EndFieldLoop@@ 
    202  
    203     @@if isDecorator 
    204     @!MethodType:7!@             @!Parent!@PtrConst getDecoratee(void) const; 
    205     @@endif // isDecorator 
    206     @@BeginFieldLoop@@ 
    207         @@if field.isPublic 
    208             @@if field.isSField 
    209  
    210                 @@if field.isPtrField 
    211     @!field.MethodType:7!@       @!field.Type!@Const get@!field.Name:15!@(void) const; 
    212                 @@else // field.isPtrField 
    213                     @@if CompatOneSix 
    214 #ifdef OSG_1_GET_COMPAT 
    215     @!field.MethodType:7!@       @!field.Type:19!@ &get@!field.Name:15!@ (void); 
    216 #endif 
    217                     @@endif // CompatOneSix 
    218     @!field.MethodType:7!@       @!field.Type:19!@ &edit@!field.Name:15!@(void); 
    219     @!field.MethodType:7!@ const @!field.Type:19!@ &get@!field.Name:15!@ (void) const; 
    220                 @@endif // field.isPtrField 
    221             @@else // field.isSField 
    222  
    223                 @@if field.isPtrField 
    224     @!field.MethodType:7!@       @!field.Type!@Const get@!field.Name:15!@(const UInt32 index) const; 
    225                 @@else // field.isPtrField 
    226                     @@if CompatOneSix 
    227 #ifdef OSG_1_GET_COMPAT 
    228     @!field.MethodType:7!@       @!field.Type:19!@ &get@!field.Name:15!@ (const UInt32 index); 
    229     @!field.MethodType:7!@       @!field.CARD!@@!field.TypeCaps:17!@ &get@!field.Name:15!@(void); 
    230 #endif 
    231                     @@endif // CompatOneSix 
    232     @!field.MethodType:7!@       @!field.Type:19!@ &edit@!field.Name:15!@(const UInt32 index); 
    233     @!field.MethodType:7!@ const @!field.Type:19!@ &get@!field.Name:15!@ (const UInt32 index) const; 
    234     @!field.MethodType:7!@       @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ &edit@!field.Name:15!@(void); 
    235                 @@endif // field.isPtrField 
    236     @!field.MethodType:7!@ const @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ &get@!field.Name:15!@(void) const; 
    237             @@endif // field.isSField 
    238         @@endif // field.isPublic 
    239     @@EndFieldLoop@@ 
    240  
    241     /*! \}                                                                 */ 
    242     /*---------------------------------------------------------------------*/ 
    243     /*! \name                    Field Set                                 */ 
    244     /*! \{                                                                 */ 
    245  
    246     @@if isDecorator 
    247     @!MethodType:7!@       void setDecoratee      ( const @!Parent!@Ptr &value ); 
    248     @@endif // isDecorator 
    249     @@BeginSFFieldLoop@@ 
    250         @@if field.isPublic 
    251             @@if field.isPtrField 
    252                 @@if field.PassFieldMask 
    253     @!field.MethodType:7!@ void set@!field.Name:15!@(      @!field.Type!@ConstArg value, 
    254                     const UInt16        uiStoredInFieldId = InvalidParentEPos); 
    255                 @@else // field.PassFieldMask 
    256     @!field.MethodType:7!@ void set@!field.Name:15!@(@!field.Type!@ConstArg value); 
    257                 @@endif // field.PassFieldMask 
    258             @@else // field.isPtrField 
    259     @!field.MethodType:7!@ void set@!field.Name:15!@(const @!field.Type!@ &value); 
    260             @@endif // field.isPtrField 
    261         @@endif // field.isPublic 
    262     @@EndSFFieldLoop@@ 
    263  
    264     /*! \}                                                                 */ 
    265     @@if hasPtrFields 
    266     /*---------------------------------------------------------------------*/ 
    267     /*! \name                Ptr Field Set                                 */ 
    268     /*! \{                                                                 */ 
    269  
    270     /*! \}                                                                 */ 
    271     @@endif // hasPtrFields 
    272     /*---------------------------------------------------------------------*/ 
    273     /*! \name                Ptr MField Set                                */ 
    274     /*! \{                                                                 */ 
    275  
    276     @@BeginMFFieldLoop@@ 
    277         @@if field.isPublic 
    278             @@if field.isPtrField 
    279                 @@if field.writePushToField 
    280     void @!field.PushToField:15!@           (@!field.Type!@ConstArg value   ); 
    281                 @@endif // field.writePushToField 
    282                 @@if field.writeAssignMField 
    283     void @!field.AssignMField:15!@           (const @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:15!@ &value); 
    284                 @@endif // field.writeAssignMField 
    285                 @@if field.writeInsertIntoMField 
    286     void @!field.InsertIntoMField:15!@      (UInt32                uiIndex, 
    287                                              @!field.Type!@ConstArg value   ); 
    288                 @@endif // field.writeInsertIntoMField 
    289                 @@if field.writeReplaceInMFieldIndex 
    290     void @!field.ReplaceInMFieldIndex:15!@  (UInt32                uiIndex, 
    291                                              @!field.Type!@ConstArg value   ); 
    292                 @@endif // field.writeReplaceInMFieldIndex 
    293                 @@if field.writeReplaceInMFieldObject 
    294     void @!field.ReplaceInMFieldObject:15!@ (@!field.Type!@ConstArg pOldElem, 
    295                                              @!field.Type!@ConstArg pNewElem); 
    296                 @@endif // field.writeReplaceInMFieldObject 
    297                 @@if field.writeRemoveFromMFieldIndex 
    298     void @!field.RemoveFromMFieldIndex:15!@ (UInt32                uiIndex ); 
    299                 @@endif // field.writeRemoveFromMFieldIndex 
    300                 @@if field.writeRemoveFromMFieldObject 
    301     void @!field.RemoveFromMFieldObject:15!@(@!field.Type!@ConstArg value   ); 
    302                 @@endif // field.writeRemoveFromMFieldObject 
    303                 @@if field.writeClearField 
    304     void @!field.ClearField:15!@            (void                          ); 
    305                 @@endif // field.writeClearField 
    306  
    307             @@else // field.isPtrField 
    308  
    309                 @@if field.writePushToField 
    310     void @!field.PushToField:34!@(const @!field.Type:10!@&value   ); 
    311                 @@endif // field.writePushToField 
    312                 @@if field.writeInsertIntoMField 
    313     void @!field.InsertIntoMField:34!@(      UInt32     uiIndex, 
    314                                             const @!field.Type:10!@&value   ); 
    315                 @@endif // field.writeInsertIntoMField 
    316                 @@if field.writeReplaceInMFieldIndex 
    317     void @!field.ReplaceInMFieldIndex:34!@(      UInt32     uiIndex, 
    318                                             const @!field.Type:10!@&value   ); 
    319                 @@endif // field.writeReplaceInMFieldIndex 
    320                 @@if field.writeReplaceInMFieldObject 
    321     void @!field.ReplaceInMFieldObject:34!@(const @!field.Type:10!@&pOldElem, 
    322                                             const @!field.Type:10!@&pNewElem); 
    323                 @@endif // field.writeReplaceInMFieldObject 
    324                 @@if field.writeRemoveFromMFieldIndex 
    325     void @!field.RemoveFromMFieldIndex:34!@(      UInt32     uiIndex ); 
    326                 @@endif // field.writeRemoveFromMFieldIndex 
    327                 @@if field.writeRemoveFromMFieldObject 
    328     void @!field.RemoveFromMFieldObject:34!@(const @!field.Type:10!@&value   ); 
    329                 @@endif // field.writeRemoveFromMFieldObject 
    330                 @@if field.writeClearField 
    331     void @!field.ClearField:34!@(      void               ); 
    332                 @@endif // field.writeClearField 
    333  
    334             @@endif // field.isPtrField 
    335         @@endif // field.isPublic 
    336  
    337     @@EndMFFieldLoop@@ 
    338     /*! \}                                                                 */ 
     336     
    339337@@endif // hasPublicFields 
    340338    /*---------------------------------------------------------------------*/ 
    341     /*! \name                   Binary Access                              */ 
     339    /*! \name Binary Access                                                */ 
    342340    /*! \{                                                                 */ 
    343341 
     
    348346                               ConstFieldMaskArg  whichField); 
    349347 
    350  
    351     /*! \}                                                                 */ 
    352 @@if !isAbstract 
    353     /*---------------------------------------------------------------------*/ 
    354     /*! \name                   Construction                               */ 
     348    /*! \}                                                                 */ 
     349@@if @!hasParentPtrFields!@ 
     350    /*---------------------------------------------------------------------*/ 
     351    /*! \name Parent linking                                               */ 
     352    /*! \{                                                                 */ 
     353 
     354    virtual bool linkParent  (ReflexiveContainer * const pParent, 
     355                              UInt16               const childrenFieldId, 
     356                              UInt16               const parentFieldId   ); 
     357    virtual bool unlinkParent(ReflexiveContainer * const pParent, 
     358                              UInt16               const childrenFieldId, 
     359                              UInt16               const parentFieldId   ); 
     360     
     361    /*! \}                                                                 */ 
     362@@endif // @!hasParentPtrFields!@ 
     363@@if not @!isAbstract!@ 
     364    /*---------------------------------------------------------------------*/ 
     365    /*! \name Construction                                                 */ 
    355366    /*! \{                                                                 */ 
    356367 
     
    360371    /*! \}                                                                 */ 
    361372    /*---------------------------------------------------------------------*/ 
    362     /*! \name                       Copy                                   */ 
     373    /*! \name Copy                                                         */ 
    363374    /*! \{                                                                 */ 
    364375 
     
    368379@@endif // !isAbstract 
    369380    /*=========================  PROTECTED  ===============================*/ 
    370  
    371381  protected: 
    372382 
    373383    static TypeObject _type; 
    374384 
    375     static void   classDescInserter(TypeObject &oType); 
    376     static Char8 *getClassname     (void             ); 
    377  
    378 @@if hasFields 
    379     /*---------------------------------------------------------------------*/ 
    380     /*! \name                      Fields                                  */ 
    381     /*! \{                                                                 */ 
    382  
    383     @@if isDecorator 
    384     SF@!Parent!@Ptr _sfDecoratee; 
     385    static void         classDescInserter(TypeObject &oType); 
     386    static Char8 const *getClassname     (void             ); 
     387 
     388@@if @!hasFields!@ 
     389    /*---------------------------------------------------------------------*/ 
     390    /*! \name Fields                                                       */ 
     391    /*! \{                                                                 */ 
     392 
     393    @@if @!isDecorator!@ 
     394    SF@!Parent!@InternalPtr _sfDecoratee; 
    385395    @@else // isDecorator 
    386396        @@BeginFieldLoop@@ 
    387             @@if !field.isPrivate 
    388     @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:15!@ _@!field.VarName!@; 
    389             @@endif // !field.isPrivate 
     397            @@if not @!field.accessPrivate!@ 
     398    @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps:15!@ @!field.VarName!@; 
     399            @@endif // !field.accessPrivate 
    390400        @@EndFieldLoop@@ 
    391401    @@endif // isDecorator 
     
    394404@@endif // hasFields 
    395405    /*---------------------------------------------------------------------*/ 
    396     /*! \name                   Constructors                               */ 
     406    /*! \name Constructors                                                 */ 
    397407    /*! \{                                                                 */ 
    398408 
    399409    @!Classname!@Base(void); 
    400     @!Classname!@Base(const @!Classname!@Base &source); 
    401  
    402     /*! \}                                                                 */ 
    403     /*---------------------------------------------------------------------*/ 
    404     /*! \name                   Destructors                                */ 
     410    @!Classname!@Base(@!Classname!@Base const &source); 
     411 
     412    /*! \}                                                                 */ 
     413    /*---------------------------------------------------------------------*/ 
     414    /*! \name Destructors                                                  */ 
    405415    /*! \{                                                                 */ 
    406416 
     
    409419    /*! \}                                                                 */ 
    410420    /*---------------------------------------------------------------------*/ 
    411     /*! \name                     onCreate                                */ 
    412     /*! \{                                                                 */ 
    413  
    414 @@if hasPtrFields 
    415     void onCreate(const @!Classname!@ *source = NULL); 
     421    /*! \name onCreate                                                     */ 
     422    /*! \{                                                                 */ 
     423 
     424@@if @!hasPtrFields!@ 
     425    void onCreate(@!Classname!@ const *source = NULL); 
    416426@@endif // hasPtrFields 
    417427 
    418428    /*! \}                                                                 */ 
    419429    /*---------------------------------------------------------------------*/ 
    420     /*! \name                    Generic Field Access                      */ 
    421     /*! \{                                                                 */ 
    422  
    423     @@if isDecorator 
     430    /*! \name Generic Field Access                                         */ 
     431    /*! \{                                                                 */ 
     432 
     433@@if @!isDecorator!@ 
    424434    GetFieldHandlePtr  getHandleDecoratee (void) const; 
    425435    EditFieldHandlePtr editHandleDecoratee(void); 
    426436 
    427     @@endif // isDecorator 
    428     @@BeginFieldLoop@@ 
     437@@endif // isDecorator 
     438@@BeginFieldLoop@@ 
     439    @@if @!field.isSField!@ 
     440        @@if @!field.categoryParentPointer!@ 
     441    GetFieldHandlePtr  getHandle@!field.Name:15!@(void) const; 
     442        @@else  // field.categoryParentPointer 
    429443    GetFieldHandlePtr  getHandle@!field.Name:15!@ (void) const; 
    430444    EditFieldHandlePtr editHandle@!field.Name:15!@(void); 
     445        @@endif // field.categoryParentPointer 
     446    @@else // field.isSField 
     447        @@if @!field.categoryParentPointer!@ 
     448    GetFieldHandlePtr  getHandle@!field.Name:15!@(void) const; 
     449        @@else  // field.categoryParentPointer 
     450    GetFieldHandlePtr  getHandle@!field.Name:15!@ (void) const; 
     451    EditFieldHandlePtr editHandle@!field.Name:15!@(void); 
     452        @@endif // field.categoryParentPointer 
     453    @@endif // field.isSField 
     454@@EndFieldLoop@@ 
     455 
     456    /*! \}                                                                 */ 
     457@@if @!hasProtectedFields!@ 
     458    @@BeginFieldLoop@@ 
     459        @@if @!field.accessProtected!@ 
     460    /*---------------------------------------------------------------------*/ 
     461    /*! \name Field @!field.CARD!@@!field.Name:52!@ */ 
     462    /*! \{                                                                 */ 
     463     
     464            @@if @!field.categoryData!@                                      // DATA Field functions 
     465                @@if @!field.isSField!@                                      // DATA SField functions 
     466    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void); 
     467    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const; 
     468                    @@if @!CompatOneSix!@ 
     469#ifdef OSG_1_GET_COMPAT 
     470    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void); 
     471#endif 
     472                    @@endif // CompatOneSix 
     473    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &edit@!field.Name!@(void); 
     474    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@ const &get@!field.Name!@ (void) const; 
     475                    @@if @!CompatOneSix!@ 
     476#ifdef OSG_1_GET_COMPAT 
     477    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &get@!field.Name!@ (void); 
     478#endif 
     479                    @@endif // CompatOneSix 
     480    @!field.MethodType:7!@ void set@!field.Name!@(@!field.TypeNS!@@!field.Type!@ const &value); 
     481                @@else // field.isSField                                     // DATA MField functions 
     482    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void); 
     483    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const; 
     484                    @@if @!CompatOneSix!@ 
     485#ifdef OSG_1_GET_COMPAT 
     486    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void); 
     487#endif 
     488                    @@endif // CompatOneSix 
     489    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       &edit@!field.Name!@(void); 
     490    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &get@!field.Name!@ (void) const; 
     491    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &edit@!field.Name!@(UInt32 const index); 
     492    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@ const &get@!field.Name!@ (UInt32 const index) const; 
     493                    @@if @!CompatOneSix!@ 
     494#ifdef OSG_1_GET_COMPAT 
     495    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@       &get@!field.Name!@ (UInt32 const index); 
     496    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ &get@!field.Name!@(void); 
     497#endif 
     498                    @@endif // CompatOneSix 
     499                    @@if @!field.writePushToField!@ 
     500    void @!field.PushToField!@(@!field.TypeNS!@@!field.Type!@ const &value); 
     501                    @@endif // field.writePushToField 
     502                    @@if @!field.writeAssignMField!@ 
     503    void @!field.AssignMField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &value); 
     504                    @@endif // field.writeAssignMField 
     505                    @@if @!field.writeInsertIntoMField!@ 
     506    void @!field.InsertIntoMField!@( 
     507            UInt32 const uiIndex, 
     508            @!field.TypeNS!@@!field.Type!@ const &value); 
     509                    @@endif // field.writeInsertIntoMField 
     510                    @@if @!field.writeReplaceInMFieldIndex!@ 
     511    void @!field.ReplaceInMFieldIndex!@( 
     512            UInt32 const uiIndex, 
     513            @!field.TypeNS!@@!field.Type!@ const &value); 
     514                    @@endif // field.writeReplaceInMFieldIndex 
     515                    @@if @!field.writeReplaceInMFieldObject!@ 
     516    void @!field.ReplaceInMFieldObject!@( 
     517            @!field.TypeNS!@@!field.Type!@ const &pOldElem, 
     518            @!field.TypeNS!@@!field.Type!@ const &pNewElem); 
     519                    @@endif // field.writeReplaceInMFieldObject 
     520                    @@if @!field.writeRemoveFromMFieldIndex!@ 
     521    void @!field.RemoveFromMFieldIndex!@(UInt32 const uiIndex); 
     522                    @@endif // field.writeRemoveFromMFieldIndex 
     523                    @@if @!field.writeRemoveFromMFieldObject!@ 
     524    void @!field.RemoveFromMFieldObject!@(@!field.TypeNS!@@!field.Type!@ const &value); 
     525                    @@endif // field.writeRemoveFromMFieldObject 
     526                    @@if @!field.writeClearField!@ 
     527    void @!field.ClearField!@(void); 
     528                    @@endif // field.writeClearField 
     529                @@endif // field.isSField 
     530            @@endif // field.categoryData 
     531            @@if @!field.categoryPointer!@ or @!field.categoryWeakPointer!@  // POINTER Field functions 
     532                @@if @!field.isSField!@                                      // POINTER SField functions 
     533    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     534    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(void) const; 
     535     
     536    @!field.MethodType:7!@ void set@!field.Name!@(@!field.TypeNS!@@!field.Type!@Const value); 
     537                @@else // field.isSField       // POINTER MField functions 
     538    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     539    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &get@!field.Name!@  (void) const; 
     540    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(UInt32 const index) const; 
     541     
     542                    @@if @!field.writePushToField!@ 
     543    void @!field.PushToField!@(@!field.TypeNS!@@!field.Type!@Const value); 
     544                    @@endif // field.writePushToField 
     545                    @@if @!field.writeAssignMField!@ 
     546    void @!field.AssignMField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &value); 
     547                    @@endif // field.writeAssignMField 
     548                    @@if @!field.writeInsertIntoMField!@ 
     549    void @!field.InsertIntoMField!@( 
     550            UInt32 const uiIndex, 
     551            @!field.TypeNS!@@!field.Type!@Const value); 
     552                    @@endif // field.writeInsertIntoMField 
     553                    @@if @!field.writeReplaceInMFieldIndex!@ 
     554    void @!field.ReplaceInMFieldIndex!@( 
     555            UInt32 const uiIndex, 
     556            @!field.TypeNS!@@!field.Type!@Const value); 
     557                    @@endif // field.writeReplaceInMFieldIndex 
     558                    @@if @!field.writeReplaceInMFieldObject!@ 
     559    void @!field.ReplaceInMFieldObject!@( 
     560            @!field.TypeNS!@@!field.Type!@Const pOldElem, 
     561            @!field.TypeNS!@@!field.Type!@Const pNewElem); 
     562                    @@endif // field.writeReplaceInMFieldObject 
     563                    @@if @!field.writeRemoveFromMFieldIndex!@ 
     564    void @!field.RemoveFromMFieldIndex!@(UInt32 const uiIndex); 
     565                    @@endif // field.writeRemoveFromMFieldIndex 
     566                    @@if @!field.writeRemoveFromMFieldObject!@ 
     567    void @!field.RemoveFromMFieldObject!@(@!field.TypeNS!@@!field.Type!@Const value); 
     568                    @@endif // field.writeRemoveFromMFieldObject 
     569                    @@if @!field.writeClearField!@ 
     570    void @!field.ClearField!@(void); 
     571                    @@endif // field.writeClearField 
     572                @@endif // field.isSField 
     573            @@endif // @!field.categoryPointer!@ or @!field.categoryWeakPointer!@ 
     574            @@if @!field.categoryParentPointer!@                             // PARENTPOINTER Field functions 
     575                @@if @!field.isSField!@                                      // PARENTPOINTER SField functions 
     576    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     577    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(void) const; 
     578     
     579                @@else // field.isSField       // PARENTPOINTER MField functions 
     580    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const; 
     581    @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &get@!field.Name!@  (void) const; 
     582    @!field.MethodType:7!@ @!field.TypeNS!@@!field.Type!@Const get@!field.Name!@(UInt32 const index) const; 
     583     
     584                @@endif // field.isSField 
     585            @@endif // field.categoryParentPointer 
     586     
     587    /*! \}                                                                 */ 
     588        @@endif // field.accessProtected 
    431589    @@EndFieldLoop@@ 
    432  
    433     /*! \}                                                                 */ 
    434 @@if hasProtectedFields 
    435     /*---------------------------------------------------------------------*/ 
    436     /*! \name                    Field Get                                 */ 
    437     /*! \{                                                                 */ 
    438  
    439     @@BeginFieldLoop@@ 
    440         @@if field.isProtected 
    441             @@if field.isPtrField 
    442     @!field.MethodType:7!@ const @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *get@!field.CARD!@@!field.Name:15!@ (void) const; 
    443             @@else // field.isPtrField 
    444  
    445                 @@if CompatOneSix 
    446 #ifdef OSG_1_GET_COMPAT 
    447     @!field.MethodType:7!@       @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *get@!field.CARD!@@!field.Name:15!@ (void); 
    448 #endif 
    449                 @@endif // CompatOneSix 
    450     @!field.MethodType:7!@       @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *edit@!field.CARD!@@!field.Name:15!@(void); 
    451     @!field.MethodType:7!@ const @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *get@!field.CARD!@@!field.Name:15!@ (void) const; 
    452             @@endif // field.isPtrField 
    453&