Show
Ignore:
Timestamp:
12/29/06 10:23:39 (2 years ago)
Author:
cneumann
Message:

- base templates to generate full set of access methods

for non-ptr mfields (including clear())
(full regeneration of base files in follow up commit)

- indented control statements in template files.
- do not screw up preformatted documentation from fcd files

in generated output.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Tools/fcd2code/TemplateFieldContainerBase_cpp.txt

    r424 r458  
    6363 
    6464@@BeginFieldLoop@@ 
    65 @@if field.hasDefaultHeader 
     65    @@if field.hasDefaultHeader 
    6666#include @!field.DefaultHeader:30!@   // @!field.Name!@ default header 
    67 @@endif 
     67    @@endif // field.hasDefaultHeader 
    6868@@EndFieldLoop@@ 
    6969 
    7070@@BeginFieldLoop@@ 
    71 @@if field.isPtrField 
    72 @@if field.needClassInclude 
     71    @@if field.isPtrField 
     72        @@if field.needClassInclude 
    7373#include <@!field.ClassInclude!@> // @!field.Name!@ Class 
    74 @@endif 
    75 @@endif 
     74        @@endif // field.isPtrField 
     75    @@endif // field.needClassInclude 
    7676@@EndFieldLoop@@ 
    7777 
     
    9494\***************************************************************************/ 
    9595 
    96 @@if isDecorator 
     96    @@if isDecorator 
    9797/*! \var @!Parent!@Ptr @!Classname!@Base::_sfDecoratee 
    9898    The object being decorated 
    9999*/ 
    100 @@else 
    101 @@BeginFieldLoop@@ 
     100    @@else // isDecorator 
     101        @@BeginFieldLoop@@ 
    102102/*! \var @!field.Type:15!@ @!Classname!@Base::_@!field.VarName!@ 
    103103    @!field.Description!@ 
    104104*/ 
    105 @@EndFieldLoop@@ 
    106 @@endif 
     105 
     106        @@EndFieldLoop@@ 
     107    @@endif // isDecorator 
    107108 
    108109void @!Classname!@Base::classDescInserter(TypeObject &oType) 
    109110{ 
    110 @@if hasFields 
     111    @@if hasFields 
    111112    FieldDescriptionBase *pDesc = NULL; 
    112113 
    113 @@endif 
    114 @@if isDecorator 
     114    @@endif // hasFields 
     115    @@if isDecorator 
    115116    pDesc = new SF@!Parent!@Ptr::Description( 
    116117        SF@!Parent!@Ptr::getClassType(), 
     
    124125 
    125126    oType.addInitialDesc(pDesc); 
    126 @@else 
    127 @@BeginFieldLoop@@ 
    128 @@if CompatOneSix 
    129 @@if !field.isPtrField 
     127    @@else // isDecorator 
     128        @@BeginFieldLoop@@ 
     129            @@if CompatOneSix 
     130                @@if !field.isPtrField 
    130131 
    131132#ifdef OSG_1_COMPAT 
     
    134135    Get@!field.CARD!@@!field.Name!@F Get@!field.CARD!@@!field.Name!@ = &@!Classname!@Base::get@!field.CARD!@@!field.Name!@; 
    135136#endif 
    136 @@endif 
    137 @@endif 
     137                @@endif // !field.isPtrField 
     138            @@endif // CompatOneSix 
    138139 
    139140    pDesc = new @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps!@::Description( 
     
    144145        @!field.Visibility!@, 
    145146        @!field.Flags!@, 
    146 @@if field.isPtrField 
     147            @@if field.isPtrField 
    147148        static_cast     <FieldEditMethodSig>(&@!Classname!@Base::invalidEditField), 
    148 @@else 
     149            @@else 
    149150        reinterpret_cast<FieldEditMethodSig>(&@!Classname!@Base::edit@!field.CARD!@@!field.Name!@), 
    150 @@endif 
    151 @@if !field.isPtrField 
    152 @@if CompatOneSix 
     151            @@endif // field.isPtrField 
     152            @@if !field.isPtrField 
     153                @@if CompatOneSix 
    153154#ifdef OSG_1_COMPAT 
    154155        reinterpret_cast<FieldGetMethodSig >(Get@!field.CARD!@@!field.Name!@)); 
     
    156157        reinterpret_cast<FieldGetMethodSig >(&@!Classname!@Base::get@!field.CARD!@@!field.Name!@)); 
    157158#endif 
    158 @@else 
     159                @@else // CompatOneSix 
    159160        reinterpret_cast<FieldGetMethodSig >(&@!Classname!@Base::get@!field.CARD!@@!field.Name!@)); 
    160 @@endif 
    161 @@else 
     161                @@endif // CompatOneSix 
     162            @@else // !field.isPtrField 
    162163        reinterpret_cast<FieldGetMethodSig >(&@!Classname!@Base::get@!field.CARD!@@!field.Name!@)); 
    163 @@endif 
     164            @@endif // !field.isPtrField 
    164165 
    165166    oType.addInitialDesc(pDesc); 
    166 @@EndFieldLoop@@ 
    167 @@endif 
    168 } 
    169  
    170 @@endif 
     167        @@EndFieldLoop@@ 
     168    @@endif // isDecorator 
     169} 
     170 
     171@@endif // hasFields 
    171172 
    172173@!Classname!@Base::TypeObject @!Classname!@Base::_type(true, 
     
    177178@@if isAbstract 
    178179    NULL, 
    179 @@else 
     180@@else // isAbstract 
    180181    (PrototypeCreateF) &@!Classname!@Base::createEmpty, 
    181 @@endif 
     182@@endif // isAbstract 
    182183    @!Classname!@::initMethod, 
    183184@@if hasFields 
    184185    (InitalInsertDescFunc) &@!Classname!@Base::classDescInserter, 
    185 @@else 
     186@@else // hasFields 
    186187    NULL, 
    187 @@endif 
     188@@endif // hasFields 
    188189    false, 
    189190    @!Fcdxml!@, 
     
    216217} 
    217218 
    218 @@BeginFieldLoop@@ 
    219 @@if field.isPtrField 
     219    @@BeginFieldLoop@@ 
     220        @@if field.isPtrField 
    220221//! Get the @!Classname!@::_@!field.VarName!@ field. 
    221222const @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps!@ *@!Classname!@Base::get@!field.CARD!@@!field.Name!@(void) const 
     
    230231    } 
    231232} 
    232 @@else 
     233        @@else // field.isPtrField 
    233234@!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps!@ *@!Classname!@Base::edit@!field.CARD!@@!field.Name!@(void) 
    234235{ 
     
    254255    } 
    255256} 
    256 @@if CompatOneSix 
     257            @@if CompatOneSix 
    257258#ifdef OSG_1_COMPAT 
    258259@!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *@!Classname!@Base::get@!field.CARD!@@!field.Name:15!@(void) 
     
    261262} 
    262263#endif 
    263 @@endif 
    264 @@endif 
    265  
    266 @@EndFieldLoop@@ 
    267 @@endif 
     264            @@endif // CompatOneSix 
     265        @@endif // field.isPtrField 
     266 
     267    @@EndFieldLoop@@ 
     268@@endif // isDecorator 
    268269 
    269270@@if !isDecorator 
    270 @@BeginFieldLoop@@ 
    271 @@if field.isPtrField 
     271    @@BeginFieldLoop@@ 
     272        @@if field.isPtrField 
    272273//! Get the @!Classname!@::_@!field.VarName!@ field. 
    273274const @!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps!@ *@!Classname!@Base::get@!field.CARD!@@!field.Name!@(void) const 
     
    275276    return &_@!field.VarName!@; 
    276277} 
    277 @@else 
     278        @@else // field.isPtrField 
    278279@!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps!@ *@!Classname!@Base::edit@!field.CARD!@@!field.Name!@(void) 
    279280{ 
    280 @@if field.isMField 
     281            @@if field.isMField 
    281282    editMField(@!field.Name!@FieldMask, _@!field.VarName!@); 
    282 @@else 
     283            @@else // field.isMField 
    283284    editSField(@!field.Name!@FieldMask); 
    284 @@endif 
     285            @@endif // field.isMField 
    285286 
    286287    return &_@!field.VarName!@; 
     
    292293} 
    293294 
    294 @@if CompatOneSix 
     295            @@if CompatOneSix 
    295296#ifdef OSG_1_COMPAT 
    296297@!field.TypeNamespace!@@!field.CARD!@@!field.TypeCaps:17!@ *@!Classname!@Base::get@!field.CARD!@@!field.Name:15!@(void) 
     
    299300} 
    300301#endif 
    301 @@endif 
    302 @@endif 
    303  
    304 @@EndFieldLoop@@ 
    305 @@endif 
     302            @@endif // CompatOneSix 
     303        @@endif // field.isPtrField 
     304 
     305    @@EndFieldLoop@@ 
     306@@endif // !isDecorator 
    306307 
    307308@@if hasPtrFields 
     
    311312    Inherited::pushToField(pNewElement, uiFieldId); 
    312313 
    313 @@BeginFieldLoop@@ 
    314 @@if field.isPtrField 
    315 @@if field.isSField 
     314    @@BeginFieldLoop@@ 
     315        @@if field.isPtrField 
     316            @@if field.isSField 
    316317    if(uiFieldId == @!field.Name!@FieldId) 
    317318    { 
     
    319320            cast_dynamic<@!field.Type!@>(pNewElement)); 
    320321    } 
    321 @@else 
     322            @@else // field.isSField 
    322323    if(uiFieldId == @!field.Name!@FieldId) 
    323324    { 
     
    325326            cast_dynamic<@!field.Type!@>(pNewElement)); 
    326327    } 
    327 @@endif 
    328 @@endif 
    329 @@EndFieldLoop@@ 
     328            @@endif // field.isSField 
     329        @@endif // field.isPtrField 
     330    @@EndFieldLoop@@ 
    330331} 
    331332 
     
    336337    Inherited::insertIntoMField(uiIndex, pNewElement, uiFieldId); 
    337338 
    338 @@BeginMFFieldLoop@@ 
    339 @@if field.isPtrField 
     339    @@BeginMFFieldLoop@@ 
     340        @@if field.isPtrField 
    340341    if(uiFieldId == @!field.Name!@FieldId) 
    341342    { 
     
    344345            cast_dynamic<@!field.Type!@>(pNewElement)); 
    345346    } 
    346 @@endif 
    347 @@EndMFFieldLoop@@ 
     347        @@endif // field.isPtrField 
     348    @@EndMFFieldLoop@@ 
    348349} 
    349350 
     
    354355    Inherited::replaceInMField(uiIndex, pNewElement, uiFieldId); 
    355356 
    356 @@BeginMFFieldLoop@@ 
    357 @@if field.isPtrField 
     357    @@BeginMFFieldLoop@@ 
     358        @@if field.isPtrField 
    358359    if(uiFieldId == @!field.Name!@FieldId) 
    359360    { 
     
    362363            cast_dynamic<@!field.Type!@>(pNewElement)); 
    363364    } 
    364 @@endif 
    365 @@EndMFFieldLoop@@ 
     365        @@endif // field.isPtrField 
     366    @@EndMFFieldLoop@@ 
    366367} 
    367368 
     
    372373    Inherited::replaceInMField(pOldElement, pNewElement, uiFieldId); 
    373374 
    374 @@BeginMFFieldLoop@@ 
    375 @@if field.isPtrField 
     375    @@BeginMFFieldLoop@@ 
     376        @@if field.isPtrField 
    376377    if(uiFieldId == @!field.Name!@FieldId) 
    377378    { 
     
    380381            cast_dynamic<@!field.Type!@>(pNewElement)); 
    381382    } 
    382 @@endif 
    383 @@EndMFFieldLoop@@ 
     383        @@endif // field.isPtrField 
     384    @@EndMFFieldLoop@@ 
    384385} 
    385386 
     
    389390    Inherited::removeFromMField(uiIndex, uiFieldId); 
    390391 
    391 @@BeginMFFieldLoop@@ 
    392 @@if field.isPtrField 
     392    @@BeginMFFieldLoop@@ 
     393        @@if field.isPtrField 
    393394    if(uiFieldId == @!field.Name!@FieldId) 
    394395    { 
     
    396397            uiIndex); 
    397398    } 
    398 @@endif 
    399 @@EndMFFieldLoop@@ 
     399        @@endif // field.isPtrField 
     400    @@EndMFFieldLoop@@ 
    400401} 
    401402 
     
    405406    Inherited::removeFromMField(pElement, uiFieldId); 
    406407 
    407 @@BeginMFFieldLoop@@ 
    408 @@if field.isPtrField 
     408    @@BeginMFFieldLoop@@ 
     409        @@if field.isPtrField 
    409410    if(uiFieldId == @!field.Name!@FieldId) 
    410411    { 
     
    412413            cast_dynamic<@!field.Type!@>(pElement)); 
    413414    } 
    414 @@endif 
    415 @@EndMFFieldLoop@@ 
     415        @@endif // field.isPtrField 
     416    @@EndMFFieldLoop@@ 
    416417} 
    417418 
     
    420421    Inherited::clearField(uiFieldId); 
    421422 
    422 @@BeginFieldLoop@@ 
    423 @@if field.isPtrField 
    424 @@if field.isSField 
     423    @@BeginFieldLoop@@ 
     424        @@if field.isPtrField 
     425            @@if field.isSField 
    425426    if(uiFieldId == @!field.Name!@FieldId) 
    426427    { 
    427428        static_cast<@!Classname!@ *>(this)->set@!field.Name!@(NullFC); 
    428429    } 
    429 @@else 
     430            @@else // field.isSField 
    430431    if(uiFieldId == @!field.Name!@FieldId) 
    431432    { 
    432433        static_cast<@!Classname!@ *>(this)->@!field.ClearField!@(); 
    433434    } 
    434 @@endif 
    435 @@endif 
    436 @@EndFieldLoop@@ 
    437 
     435            @@endif // field.isSField 
     436        @@endif // field.isPtrField 
     437    @@EndFieldLoop@@ 
     438
     439@@endif // hasPtrFields 
    438440 
    439441@@BeginMFFieldLoop@@ 
    440 @@if field.isPtrField 
    441 @@if field.writePushToField 
     442    @@if field.isPtrField 
     443        @@if field.writePushToField 
    442444void @!Classname!@Base::@!field.PushToField!@(@!field.Type!@ConstArg value) 
    443445{ 
    444 @@if field.checkNilPtr 
     446            @@if field.checkNilPtr 
    445447    if(value == NullFC) 
    446448        return; 
    447449 
    448 @@endif 
     450            @@endif // field.checkNilPtr 
    449451    editMField(@!field.Name!@FieldMask, _@!field.VarName!@); 
    450452 
     
    452454 
    453455    _mf@!field.Name!@.push_back(value); 
    454 @@if !field.checkNilPtr 
     456            @@if !field.checkNilPtr 
    455457 
    456458    if(value == NullFC) 
    457459        return; 
    458 @@endif 
    459 @@if field.linkMParent 
     460            @@endif // field.checkNilPtr 
     461            @@if field.linkMParent 
    460462 
    461463    @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
     
    463465 
    464466    value->addParent(thisP, @!field.Name!@FieldMask); 
    465 @@endif 
    466 @@if field.linkSParent 
     467            @@endif // field.linkMParent 
     468            @@if field.linkSParent 
    467469 
    468470    @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
     
    470472 
    471473    value->setParent(thisP, @!field.Name!@FieldMask); 
    472 @@endif 
    473 } 
    474  
    475 @@endif 
    476 @@if field.writeInsertIntoMField 
     474            @@endif // field.linkSParent 
     475} 
     476 
     477        @@endif // field.writePushToField 
     478        @@if field.writeInsertIntoMField 
    477479void @!Classname!@Base::@!field.InsertIntoMField!@(UInt32                uiIndex, 
    478480                                                   @!field.Type!@ConstArg value   ) 
    479481{ 
    480 @@if field.checkNilPtr 
     482            @@if field.checkNilPtr 
    481483    if(value == NullFC) 
    482484        return; 
    483485 
    484 @@endif 
     486            @@endif // field.checkNilPtr 
    485487    editMField(@!field.Name!@FieldMask, _@!field.VarName!@); 
    486488 
     
    492494 
    493495    _mf@!field.Name!@.insert(fieldIt, value); 
    494 @@if !field.checkNilPtr 
     496            @@if !field.checkNilPtr 
    495497 
    496498    if(value == NullFC) 
    497499        return; 
    498 @@endif 
    499 @@if field.linkMParent 
     500            @@endif // !field.checkNilPtr 
     501            @@if field.linkMParent 
    500502 
    501503    @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
     
    503505 
    504506    value->addParent(thisP, @!field.Name!@FieldMask); 
    505 @@endif 
    506 @@if field.linkSParent 
     507            @@endif // field.linkMParent 
     508            @@if field.linkSParent 
    507509 
    508510    @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
     
    510512 
    511513    value->setParent(thisP, @!field.Name!@FieldMask); 
    512 @@endif 
    513 } 
    514  
    515 @@endif 
    516 @@if field.writeReplaceInMFieldIndex 
     514            @@endif // field.linkSParent 
     515} 
     516 
     517        @@endif // field.writeInsertIntoMField 
     518        @@if field.writeReplaceInMFieldIndex 
    517519void @!Classname!@Base::@!field.ReplaceInMFieldIndex!@(UInt32                uiIndex, 
    518520                                                       @!field.Type!@ConstArg value   ) 
    519521{ 
    520 @@if field.checkNilPtr 
     522            @@if field.checkNilPtr 
    521523    if(value == NullFC) 
    522524        return; 
    523525 
    524 @@endif 
     526            @@endif // field.checkNilPtr 
    525527    if(uiIndex >= _mf@!field.Name!@.size()) 
    526528        return; 
     
    529531 
    530532    addRef(value); 
    531 @@if field.linkMParent 
     533            @@if field.linkMParent 
    532534 
    533535    @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
     
    538540        _mf@!field.Name!@[uiIndex]->subParent(thisP); 
    539541    } 
    540 @@endif 
    541 @@if field.linkSParent 
     542            @@endif // field.linkMParent 
     543            @@if field.linkSParent 
    542544 
    543545    @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
     
    548550        _mf@!field.Name!@[uiIndex]->setParent(thisP, @!field.Name!@FieldMask); 
    549551    } 
    550 @@endif 
     552            @@endif // field.linkSParent 
    551553 
    552554    subRef(_mf@!field.Name!@[uiIndex]); 
    553555 
    554556    _mf@!field.Name!@[uiIndex] = value; 
    555 @@if !field.checkNilPtr 
     557            @@if !field.checkNilPtr 
    556558 
    557559    if(value == NullFC) 
    558560        return; 
    559 @@endif 
    560 @@if field.linkMParent 
     561            @@endif // !field.checkNilPtr 
     562            @@if field.linkMParent 
    561563 
    562564    value->addParent(thisP, @!field.Name!@FieldMask); 
    563 @@endif 
    564 @@if field.linkSParent 
     565            @@endif // field.linkMParent 
     566            @@if field.linkSParent 
    565567 
    566568    value->setParent(thisP, @!field.Name!@FieldMask); 
    567 @@endif 
    568 } 
    569  
    570 @@endif 
    571 @@if field.writeReplaceInMFieldObject 
     569            @@endif // field.linkSParent 
     570} 
     571 
     572        @@endif // field.writeReplaceInMFieldIndex 
     573        @@if field.writeReplaceInMFieldObject 
    572574void @!Classname!@Base::@!field.ReplaceInMFieldObject!@(@!field.Type!@ConstArg pOldElem, 
    573575                                                        @!field.Type!@ConstArg pNewElem) 
    574576{ 
    575 @@if field.checkNilPtr 
     577            @@if field.checkNilPtr 
    576578    if(pNewElem == NullFC) 
    577579        return; 
    578580 
    579 @@endif 
     581            @@endif // field.checkNilPtr 
    580582    Int32  elemIdx = _mf@!field.Name!@.findIndex(pOldElem); 
    581583 
     
    588590        fieldIt += elemIdx; 
    589591 
    590 @@if field.linkMParent 
     592            @@if field.linkMParent 
    591593        @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
    592594            static_cast<@!Classname!@ *>(this)); 
     
    597599        } 
    598600 
    599 @@if !field.checkNilPtr 
     601                @@if !field.checkNilPtr 
    600602        if(pNewElem != NullFC) 
    601603        { 
    602604            pNewElem->addParent(thisP, @!field.Name!@FieldMask); 
    603605        } 
    604 @@else 
     606                @@else // !field.checkNilPtr 
    605607        pNewElem->addParent(thisP, @!field.Name!@FieldMask); 
    606 @@endif 
    607  
    608 @@endif 
    609 @@if field.linkSParent 
     608                @@endif 
     609 
     610            @@endif // field.linkMParent 
     611            @@if field.linkSParent 
    610612        @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
    611613            static_cast<@!Classname!@ *>(this)); 
     
    621623        } 
    622624 
    623 @@endif 
     625            @@endif // field.linkSParent 
    624626        addRef(pNewElem); 
    625627        subRef(pOldElem); 
     
    629631} 
    630632 
    631 @@endif 
    632 @@if field.writeRemoveFromMFieldIndex 
     633        @@endif // field.writeReplaceInMFieldObject 
     634        @@if field.writeRemoveFromMFieldIndex 
    633635void @!Classname!@Base::@!field.RemoveFromMFieldIndex!@(UInt32 uiIndex) 
    634636{ 
     
    641643        fieldIt += uiIndex; 
    642644 
    643 @@if field.linkMParent 
     645            @@if field.linkMParent 
    644646        @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
    645647            static_cast<@!Classname!@ *>(this)); 
     
    650652        } 
    651653 
    652 @@endif 
    653 @@if field.linkSParent 
     654            @@endif // field.linkMParent 
     655            @@if field.linkSParent 
    654656        if(*fieldIt != NullFC) 
    655657        { 
     
    657659        } 
    658660 
    659 @@endif 
     661            @@endif // field.linkSParent 
    660662        subRef(*fieldIt); 
    661663 
    662 @@if field.isRemoveToSet 
     664            @@if field.isRemoveToSet 
    663665        *fieldIt = @!field.RemoveTo!@; 
    664 @@else 
     666            @@else // field.isRemoveToSet 
    665667        _mf@!field.Name!@.erase(fieldIt); 
    666 @@endif 
    667     } 
    668 } 
    669  
    670 @@endif 
    671 @@if field.writeRemoveFromMFieldObject 
     668            @@endif // field.isRemoveToSet 
     669    } 
     670} 
     671 
     672        @@endif // field.writeRemoveFromMFieldIndex 
     673        @@if field.writeRemoveFromMFieldObject 
    672674void @!Classname!@Base::@!field.RemoveFromMFieldObject!@(@!field.Type!@ConstArg value) 
    673675{ 
     
    682684        fieldIt += iElemIdx; 
    683685 
    684 @@if field.linkMParent 
     686            @@if field.linkMParent 
    685687        @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
    686688            static_cast<@!Classname!@ *>(this)); 
     
    691693        } 
    692694 
    693 @@endif 
    694 @@if field.linkSParent 
     695            @@endif // field.linkMParent 
     696            @@if field.linkSParent 
    695697        if(*fieldIt != NullFC) 
    696698        { 
     
    698700        } 
    699701 
    700 @@endif 
     702            @@endif // field.linkSParent 
    701703        subRef(*fieldIt); 
    702704 
    703 @@if field.isRemoveToSet 
     705            @@if field.isRemoveToSet 
    704706        *fieldIt = @!field.RemoveTo!@; 
    705 @@else 
     707            @@else // field.isRemoveToSet 
    706708        _mf@!field.Name!@.erase(fieldIt); 
    707 @@endif 
    708     } 
    709 } 
    710 @@endif 
    711 @@if field.writeClearField 
     709            @@endif // field.isRemoveToSet 
     710    } 
     711} 
     712        @@endif // field.writeRemoveFromMFieldObject 
     713        @@if field.writeClearField 
    712714void @!Classname!@Base::@!field.ClearField!@(void) 
    713715{ 
     
    719721    while(fieldIt != fieldEnd) 
    720722    { 
    721 @@if field.linkMParent 
     723            @@if field.linkMParent 
    722724        @!Classname!@Ptr thisP = Inherited::constructPtr<@!Classname!@>( 
    723725            static_cast<@!Classname!@ *>(this)); 
     
    728730        } 
    729731 
    730 @@endif 
    731 @@if field.linkSParent 
     732            @@endif // field.linkMParent 
     733            @@if field.linkSParent 
    732734        if(*fieldIt != NullFC) 
    733735        { 
     
    735737        } 
    736738 
    737 @@endif 
     739            @@endif // field.linkSParent 
    738740        subRef(*fieldIt); 
    739741 
    740 @@if field.isRemoveToSet 
     742            @@if field.isRemoveToSet 
    741743        *fieldIt = @!field.RemoveTo!@; 
    742744 
    743 @@endif 
     745            @@endif // field.isRemoveToSet 
    744746        ++fieldIt; 
    745747    } 
    746 @@if field.doClearMField 
     748            @@if field.doClearMField 
    747749 
    748750    _mf@!field.Name!@.clear(); 
    749 @@endif 
    750 } 
    751 @@endif 
    752  
    753 @@else 
     751            @@endif // field.doClearMField 
     752} 
     753        @@endif // field.writeClearField 
     754 
     755    @@else // field.isPtrField 
    754756/*********************************** Non-ptr code ********************************/ 
    755 @@if field.writePushToField 
     757        @@if field.writePushToField 
    756758void @!Classname!@Base::@!field.PushToField!@(const @!field.Type!@& value) 
    757759{ 
     
    760762} 
    761763 
    762 @@endif 
    763 @@if field.writeInsertIntoMField 
     764        @@endif // field.writePushToField 
     765        @@if field.writeInsertIntoMField 
    764766void @!Classname!@Base::@!field.InsertIntoMField!@(UInt32                uiIndex, 
    765767                                                   const @!field.Type!@& value   ) 
     
    774776} 
    775777 
    776 @@endif 
    777 @@if field.writeReplaceInMFieldIndex 
     778        @@endif // field.writeInsertIntoMField 
     779        @@if field.writeReplaceInMFieldIndex 
    778780void @!Classname!@Base::@!field.ReplaceInMFieldIndex!@(UInt32                uiIndex, 
    779781                                                       const @!field.Type!@& value   ) 
     
    787789} 
    788790 
    789 @@endif 
    790 @@if field.writeReplaceInMFieldObject 
     791        @@endif // field.writeReplaceInMFieldIndex 
     792        @@if field.writeReplaceInMFieldObject 
    791793void @!Classname!@Base::@!field.ReplaceInMFieldObject!@(const @!field.Type!@& pOldElem, 
    792794                                                        const @!field.Type!@& pNewElem) 
     
    806808} 
    807809 
    808 @@endif 
    809 @@if field.writeRemoveFromMFieldIndex 
     810        @@endif // field.writeReplaceInMFieldObject 
     811        @@if field.writeRemoveFromMFieldIndex 
    810812void @!Classname!@Base::@!field.RemoveFromMFieldIndex!@(UInt32 uiIndex) 
    811813{ 
     
    821823} 
    822824 
    823 @@endif 
    824 @@if field.writeRemoveFromMFieldObject 
     825        @@endif // field.writeRemoveFromMFieldIndex 
     826        @@if field.writeRemoveFromMFieldObject 
    825827void @!Classname!@Base::@!field.RemoveFromMFieldObject!@(const @!field.Type!@& value) 
    826828{ 
     
    839841} 
    840842 
    841 @@endif 
    842 @@if field.writeClearField 
     843        @@endif // field.writeRemoveFromMFieldObject 
     844        @@if field.writeClearField 
    843845void @!Classname!@Base::@!field.ClearField!@(void) 
    844846{ 
     
    847849    _mf@!field.Name!@.clear(); 
    848850} 
    849 @@endif 
    850 @@endif 
     851        @@endif // field.writeClearField 
     852    @@endif // field.isPtrField 
    851853@@EndMFFieldLoop@@ 
    852854 
    853 @@endif 
    854855 
    855856/*------------------------------ access -----------------------------------*/ 
     
    864865        returnValue += _sfDecoratee.getBinSize(); 
    865866    } 
    866 @@else 
    867 @@BeginFieldLoop@@ 
     867@@else // isDecorator 
     868    @@BeginFieldLoop@@ 
    868869    if(FieldBits::NoField != (@!field.Name!@FieldMask & whichField)) 
    869870    { 
    870871        returnValue += _@!field.VarName!@.getBinSize(); 
    871872    } 
    872 @@EndFieldLoop@@ 
    873 @@endif 
     873    @@EndFieldLoop@@ 
     874@@endif // isDecorator 
    874875 
    875876    return returnValue; 
     
    886887        _sfDecoratee.copyToBin(pMem); 
    887888    } 
    888 @@else 
    889 @@BeginFieldLoop@@ 
     889@@else // isDecorator 
     890    @@BeginFieldLoop@@ 
    890891    if(FieldBits::NoField != (@!field.Name!@FieldMask & whichField)) 
    891892    { 
    892893        _@!field.VarName!@.copyToBin(pMem); 
    893894    } 
    894 @@EndFieldLoop@@ 
    895 @@endif 
     895    @@EndFieldLoop@@ 
     896@@endif // isDecorator 
    896897} 
    897898 
     
    906907        _sfDecoratee.copyFromBin(pMem); 
    907908    } 
    908 @@else 
    909 @@BeginFieldLoop@@ 
     909@@else // isDecorator 
     910    @@BeginFieldLoop@@ 
    910911    if(FieldBits::NoField != (@!field.Name!@FieldMask & whichField)) 
    911912    { 
    912913        _@!field.VarName!@.copyFromBin(pMem); 
    913914    } 
    914 @@EndFieldLoop@@ 
    915 @@endif 
     915    @@EndFieldLoop@@ 
     916@@endif // isDecorator 
    916917} 
    917918 
     
    936937} 
    937938 
    938 @@endif 
     939@@endif // !isAbstract 
    939940 
    940941 
     
    944945@@if !hasFields 
    945946    Inherited() 
    946 @@else 
     947@@else // !hasFields 
    947948    Inherited(), 
    948 @@if isDecorator 
     949    @@if isDecorator 
    949950    _sfDecoratee() 
    950 @@else 
    951 @@BeginFieldLoop@@ 
     951    @@else // isDecorator 
     952        @@BeginFieldLoop@@ 
    952953    _@!field.VarName:25!@(@!field.TypedDefault!@)@!field.Separator!@ 
    953 @@EndFieldLoop@@ 
    954 @@endif 
    955 @@endif 
     954        @@EndFieldLoop@@ 
     955    @@endif // isDecorator 
     956@@endif // !hasFields 
    956957{ 
    957958} 
     
    960961@@if !hasFields 
    961962    Inherited(source) 
    962 @@else 
     963@@else // !hasFields 
    963964    Inherited(source), 
    964 @@if isDecorator 
     965    @@if isDecorator 
    965966    _sfDecoratee(source._sfDecoratee) 
    966 @@else 
    967 @@BeginFieldLoop@@ 
    968 @@if field.isPtrField 
     967    @@else // isDecorator 
     968        @@BeginFieldLoop@@ 
     969            @@if field.isPtrField 
    969970    _@!field.VarName:25!@()@!field.Separator!@ 
    970 @@else 
     971            @@else // field.isPtrField 
    971972    _@!field.VarName:25!@(source._@!field.VarName:25!@)@!field.Separator!@ 
    972 @@endif 
    973 @@EndFieldLoop@@ 
    974 @@endif 
    975 @@endif 
     973            @@endif // field.isPtrField 
     974        @@EndFieldLoop@@ 
     975    @@endif // isDecorator 
     976@@endif // !hasFields 
    976977{ 
    977978} 
     
    990991    if(source != NULL) 
    991992    { 
    992 @@BeginFieldLoop@@ 
    993 @@if field.isPtrField 
    994 @@if field.isMField 
     993    @@BeginFieldLoop@@ 
     994        @@if field.isPtrField 
     995            @@if field.isMField 
    995996 
    996997        MF@!field.TypeCaps!@::const_iterator @!field.Name!@It  = 
     
    10051006            ++@!field.Name!@It; 
    10061007        } 
    1007 @@else 
     1008            @@else // field.isMField 
    10081009 
    10091010        this->set@!field.Name!@(source->get@!field.Name!@()); 
    1010 @@endif 
    1011 @@endif 
    1012 @@EndFieldLoop@@ 
    1013     } 
    1014 } 
    1015 @@endif 
     1011            @@endif // field.isMField 
     1012        @@endif // field.isPtrField 
     1013    @@EndFieldLoop@@ 
     1014    } 
     1015} 
     1016@@endif // hasPtrFields 
    10161017 
    10171018#ifdef OSG_MT_FIELDCONTAINERPTR 
     
    10661067} 
    10671068#endif 
    1068 @@endif 
     1069@@endif // !isAbstract 
    10691070 
    10701071void @!Classname!@Base::resolveLinks(void) 
     
    10721073    Inherited::resolveLinks(); 
    10731074@@BeginSFFieldLoop@@ 
    1074 @@if field.isPtrField 
     1075    @@if field.isPtrField 
    10751076 
    10761077    static_cast<@!Classname!@ *>(this)->set@!field.Name!@(NullFC); 
    1077 @@endif 
     1078    @@endif // field.isPtrField 
    10781079@@EndSFFieldLoop@@ 
    10791080@@BeginMFFieldLoop@@ 
    1080 @@if field.isPtrField 
     1081    @@if field.isPtrField 
    10811082 
    10821083    static_cast<@!Classname!@ *>(this)->@!field.ClearField!@(); 
    1083 @@endif 
     1084    @@endif // field.isPtrField 
    10841085@@EndMFFieldLoop@@ 
    10851086} 
     
    10881089/*------------------------------ get -----------------------------------*/ 
    10891090 
    1090 @@if !isDecorator 
    1091 @@BeginSFFieldLoop@@ 
    1092 @@if field.isPtrField 
     1091    @@if !isDecorator 
     1092        @@BeginSFFieldLoop@@ 
     1093            @@if field.isPtrField 
    10931094 
    10941095//! Get the value of the @!Classname!@::_@!field.VarName!@ field. 
     
    11051106    setRefd(_@!field.VarName!@.getValue(), value); 
    11061107} 
    1107 @@else 
     1108            @@else // field.isPtrField 
    11081109//! Get the value of the @!Classname!@::_@!field.VarName!@ field. 
    11091110 
     
    11211122} 
    11221123 
    1123 @@if CompatOneSix 
     1124                @@if CompatOneSix 
    11241125#ifdef OSG_1_COMPAT 
    11251126@!field.Type:19!@ &@!Classname!@Base::get@!field.Name:15!@(void) 
     
    11281129} 
    11291130#endif 
    1130 @@endif CompatOneSix 
     1131                @@endif // CompatOneSix 
    11311132 
    11321133//! Set the value of the @!Classname!@::_@!field.VarName!@ field. 
     
    11371138    _@!field.VarName!@.setValue(value); 
    11381139} 
    1139 @@endif 
    1140 @@EndSFFieldLoop@@ 
    1141  
    1142 @@BeginMFFieldLoop@@ 
     1140            @@endif // field.isPtrField 
     1141        @@EndSFFieldLoop@@ 
     1142 
     1143        @@BeginMFFieldLoop@@ 
    11431144//! Get the value of the \a index element the @!Classname!@::_@!field.VarName!@ field. 
    1144 @@if field.isPtrField 
     1145            @@if field.isPtrField 
    11451146@!field.Type!@Const @!Classname!@Base::get@!field.Name!@(const UInt32 index) const 
    1146 @@else 
     1147            @@else // field.isPtrField 
    11471148const @!field.Type!@ &@!Classname!@Base::get@!field.Name!@(const UInt32 index) const 
    1148 @@endif 
     1149            @@endif // field.isPtrField 
    11491150{ 
    11501151    return _@!field.VarName!@[index]; 
    11511152} 
    1152 @@if !field.isPtrField 
     1153            @@if !field.isPtrField 
    11531154 
    11541155@!field.Type!@ &@!Classname!@Base::edit@!field.Name!@(const UInt32 index) 
     
    11671168} 
    11681169 
    1169 @@if CompatOneSix 
     1170                @@if CompatOneSix 
    11701171#ifdef OSG_1_COMPAT 
    11711172@!field.Type:19!@ &@!Classname!@Base::get@!field.Name:15!@(const UInt32 index) 
     
    11801181 
    11811182#endif 
    1182 @@endif 
    1183 @@endif 
     1183                @@endif // CompatOneSix 
     1184            @@endif // !field.isPtrField 
    11841185 
    11851186//! Get the @!Classname!@::_@!field.VarName!@ field. 
     
    11891190} 
    11901191 
    1191 @@EndMFFieldLoop@@ 
    1192 @@else 
    1193 @@BeginSFFieldLoop@@ 
    1194 @@if field.isPtrField 
     1192        @@EndMFFieldLoop@@ 
     1193    @@else // !isDecorator 
     1194        @@BeginSFFieldLoop@@ 
     1195            @@if field.isPtrField 
    11951196 
    11961197//! Get the value of the @!Classname!@::_@!field.VarName!@ field. 
     
    12191220    } 
    12201221} 
    1221 @@else 
     1222            @@else // field.isPtrField 
    12221223 
    12231224//! Get the value of the @!Classname!@::_@!field.VarName!@ field. 
     
    12471248} 
    12481249 
    1249 @@if CompatOneSix 
     1250                @@if CompatOneSix 
    12501251#ifdef OSG_1_COMPAT 
    12511252inline 
     
    12551256} 
    12561257#endif 
    1257 @@endif //CompatOneSix 
     1258                @@endif // CompatOneSix 
    12581259 
    12591260//! Set the value of the @!Classname!@::_@!field.VarName!@ field. 
     
    12691270    } 
    12701271} 
    1271&n