root/branches/Carsten_PtrWork2/Tools/fcd2code/TemplateFieldContainerBase_h.txt

Revision 1080, 47.5 kB (checked in by cneumann, 9 months ago)

renamed InternalRefPtr? to UnrecRefPtr?

  • Property svn:eol-style set to native
Line 
1 /*---------------------------------------------------------------------------*\
2  *                                OpenSG                                     *
3  *                                                                           *
4  *                                                                           *
5  *               Copyright (C) 2000-2006 by the OpenSG Forum                 *
6  *                                                                           *
7  *                            www.opensg.org                                 *
8  *                                                                           *
9  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
10  *                                                                           *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
13  *                                License                                    *
14  *                                                                           *
15  * This library is free software; you can redistribute it and/or modify it   *
16  * under the terms of the GNU Library General Public License as published    *
17  * by the Free Software Foundation, version 2.                               *
18  *                                                                           *
19  * This library is distributed in the hope that it will be useful, but       *
20  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
22  * Library General Public License for more details.                          *
23  *                                                                           *
24  * You should have received a copy of the GNU Library General Public         *
25  * License along with this library; if not, write to the Free Software       *
26  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
27  *                                                                           *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
30  *                                Changes                                    *
31  *                                                                           *
32  *                                                                           *
33  *                                                                           *
34  *                                                                           *
35  *                                                                           *
36  *                                                                           *
37 \*---------------------------------------------------------------------------*/
38
39 /*****************************************************************************\
40  *****************************************************************************
41  **                                                                         **
42  **                  This file is automatically generated.                  **
43  **                                                                         **
44  **          Any changes made to this file WILL be lost when it is          **
45  **           regenerated, which can become necessary at any time.          **
46  **                                                                         **
47  **     Do not change this file, changes should be done in the derived      **
48  **     class @!Classname!@
49  **                                                                         **
50  *****************************************************************************
51 \*****************************************************************************/
52
53
54 #ifndef _OSG@!CLASSNAME!@BASE_H_
55 #define _OSG@!CLASSNAME!@BASE_H_
56 #ifdef __sgi
57 #pragma once
58 #endif
59
60
61 #include "@!HeaderPrefix!@OSGConfig.h"
62 @@if @!isInLibrary!@
63 #include "OSG@!Libname!@Def.h"
64 @@endif // isInLibrary
65
66 #include "@!HeaderPrefix!@OSGBaseTypes.h"
67
68 #include "@!ParentHeaderPrefix!@OSG@!Parent!@.h" // Parent
69
70 @@if not @!isDecorator!@
71     @@BeginFieldLoop@@
72 #include "@!field.TypeInclude!@" // @!field.Name!@ type
73     @@EndFieldLoop@@
74 @@else // !isDecorator
75 #include "OSG@!Parent!@Fields.h" // Decoratee type
76 @@endif // !isDecorator
77
78 #include "OSG@!Classname!@Fields.h"
79 @@if @!hasMixinParent!@
80
81 #include "OSG@!MixinParent!@.h"
82 @@endif
83
84 OSG_BEGIN_NAMESPACE
85
86 class @!Classname!@;
87
88 //! \brief @!Classname!@ Base Class.
89
90 @@if @!hasMixinParent!@
91     @@if @!isInLibrary!@
92 class OSG_@!LIBNAME!@_DLLMAPPING @!Classname!@Base : public @!MixinParent!@
93     @@else // isInLibrary
94 class @!Classname!@Base : public @!MixinParent!@
95     @@endif // isInLibrary
96 @@else // hasMixinParent
97     @@if @!isInLibrary!@
98 class OSG_@!LIBNAME!@_DLLMAPPING @!Classname!@Base : public @!Parent!@
99     @@else // isInLibrary
100 class @!Classname!@Base : public @!Parent!@
101     @@endif // isInLibrary
102 @@endif // hasMixinParent
103 {
104     /*==========================  PUBLIC  =================================*/
105   public:
106     /*---------------------------------------------------------------------*/
107     /*! \name Public Types                                                 */
108     /*! \{                                                                 */
109    
110 @@if @!hasMixinParent!@
111     typedef @!MixinParent!@ Inherited;
112 @@else
113     typedef @!Parent!@ Inherited;
114 @@endif
115     typedef @!Parent!@ ParentContainer;
116
117     typedef Inherited::TypeObject TypeObject;
118     typedef TypeObject::InitPhase InitPhase;
119        
120 @@if @!isDecorator!@
121     typedef SF@!Parent!@UnrecPtr DecorateeFieldType;
122 @@else // @!isDecorator!@
123     @@BeginFieldLoop@@
124     typedef @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps:20!@ @!field.Name!@FieldType;
125     @@EndFieldLoop@@
126 @@endif
127    
128     OSG_GEN_INTERNALPTR(@!Classname!@);
129
130     typedef MTRefCountPtrBuilder   <@!Classname!@>::Ptr ObjMTRefPtr;
131     typedef RefCountPtrBuilder     <@!Classname!@>::Ptr ObjRefPtr;
132     typedef WeakRefCountPtrBuilder <@!Classname!@>::Ptr ObjWeakRefPtr;
133     typedef UnrecRefCountPtrBuilder<@!Classname!@>::Ptr ObjUnrecRefPtr;
134     typedef TransitPtrBuilder      <@!Classname!@>::Ptr ObjTransitPtr;
135    
136     /*! \}                                                                 */
137     /*---------------------------------------------------------------------*/
138     /*! \name Constants                                                    */
139     /*! \{                                                                 */
140
141 @@if @!isDecorator!@
142     enum
143     {
144         DecorateeFieldId        = Inherited::NextFieldId,
145         NextFieldId             = DecorateeFieldId          + 1
146     };
147
148     static const OSG::BitVector DecorateeFieldMask =
149         (TypeTraits<BitVector>::One << DecorateeFieldId);
150        
151 @@else // isDecorator
152     @@if @!hasFields!@
153     enum
154     {
155         @@BeginFieldLoop@@
156             @@if @!field.isFirstField!@
157         @!field.Name!@FieldId = Inherited::NextFieldId,
158                 @@if @!field.isLastField!@
159         NextFieldId = @!field.Name!@FieldId + 1
160                 @@endif // field.isLastField
161             @@else // field.isFirstField
162         @!field.Name!@FieldId = @!field.prevField.Name!@FieldId + 1,
163                 @@if @!field.isLastField!@
164         NextFieldId = @!field.Name!@FieldId + 1
165                 @@endif // field.isLastField
166             @@endif // field.isFirstField
167         @@EndFieldLoop@@
168     };
169
170         @@BeginFieldLoop@@
171     static const OSG::BitVector @!field.Name!@FieldMask =
172         (TypeTraits<BitVector>::One << @!field.Name!@FieldId);
173         @@EndFieldLoop@@
174     static const OSG::BitVector NextFieldMask =
175         (TypeTraits<BitVector>::One << NextFieldId);
176        
177     @@endif // hasFields
178 @@endif // isDecorator
179     /*! \}                                                                 */
180     /*---------------------------------------------------------------------*/
181     /*! \name Class Get                                                    */
182     /*! \{                                                                 */
183
184     static FieldContainerType &getClassType   (void);
185     static UInt32              getClassTypeId (void);
186     static UInt16              getClassGroupId(void);
187
188     /*! \}                                                                 */
189     /*---------------------------------------------------------------------*/
190     /*! \name FieldContainer Get                                           */
191     /*! \{                                                                 */
192
193     virtual FieldContainerType       &getType         (void);
194     virtual FieldContainerType const &getType         (void) const;
195
196     virtual UInt32                    getContainerSize(void) const;
197
198     /*! \}                                                                 */
199 @@if @!hasPublicFields!@
200     @@if @!isDecorator!@
201     /*---------------------------------------------------------------------*/
202     /*! \name Field Decoratee                                              */
203     /*! \{                                                                 */
204    
205     @!MethodType:7!@ SF@!Parent!@UnrecPtr                  const *getSFDecoratee(void) const;
206     @!MethodType:7!@ SF@!Parent!@UnrecPtr::const_reference        getDecoratee  (void) const;
207    
208     @!MethodType:7!@ void setDecoratee(SF@!Parent!@UnrecPtr::ArgumentType value);
209    
210     /*! \}                                                                 */
211     @@endif // isDecorator
212     @@BeginFieldLoop@@
213         @@if @!field.access!@ == "public"
214     /*---------------------------------------------------------------------*/
215     /*! \name Field @!field.CARD!@@!field.Name:52!@ */
216     /*! \{                                                                 */
217    
218             @@if @!field.category!@ == "data"                                                // DATA Field functions
219                 @@if @!field.cardinality!@ == "single"                                       // DATA SField functions
220     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@             *edit@!field.CARD!@@!field.Name!@(void);
221     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const       *get@!field.CARD!@@!field.Name!@ (void) const;
222                     @@if @!CompatOneSix!@
223 #ifdef OSG_1_GET_COMPAT
224     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@             *get@!field.CARD!@@!field.Name!@ (void);
225 #endif
226                     @@endif // CompatOneSix
227     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(void);
228     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (void) const;
229                     @@if @!CompatOneSix!@
230 #ifdef OSG_1_GET_COMPAT
231     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       get@!field.Name!@ (void);
232 #endif
233                     @@endif // CompatOneSix
234     @!field.MethodType:7!@ void set@!field.Name!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
235                 @@else // @!field.cardinality!@ == "single"                                 // DATA MField functions
236     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
237     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const;
238                     @@if @!CompatOneSix!@
239 #ifdef OSG_1_GET_COMPAT
240     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
241 #endif
242                     @@endif // CompatOneSix
243     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                 &edit@!field.Name!@(void);
244     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const           &get@!field.Name!@ (void) const;
245     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(UInt32 const index);
246     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (UInt32 const index) const;
247                     @@if @!CompatOneSix!@
248 #ifdef OSG_1_GET_COMPAT
249     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       get@!field.Name!@ (UInt32 const index);
250     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                 &get@!field.Name!@ (void);
251 #endif
252                     @@endif // CompatOneSix
253                 @@endif // @!field.cardinality!@ == "single"
254             @@endif // @!field.category!@ == "data"
255             @@if @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"      // POINTER Field functions
256                 @@if @!field.cardinality!@ == "single"                                      // POINTER SField functions
257     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
258     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const;
259                     @@if @!CompatOneSix!@
260 #ifdef OSG_1_GET_COMPAT
261     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
262 #endif
263                     @@endif // CompatOneSix
264     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(void);
265     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (void) const;
266                     @@if @!CompatOneSix!@
267 #ifdef OSG_1_GET_COMPAT
268     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       get@!field.Name!@ (void);
269 #endif
270                     @@endif // CompatOneSix
271     @!field.MethodType:7!@ void set@!field.Name!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
272                 @@else // @!field.cardinality!@ == "single"                                 // POINTER MField functions
273     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
274     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const;
275                     @@if @!CompatOneSix!@
276 #ifdef OSG_1_GET_COMPAT
277     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
278 #endif
279                     @@endif // CompatOneSix
280    
281     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                  &edit@!field.Name!@(void);
282     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const            &get@!field.Name!@ (void) const;
283     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference        edit@!field.Name!@(UInt32 const index);
284     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference  get@!field.Name!@ (UInt32 const index) const;
285                     @@if @!CompatOneSix!@
286 #ifdef OSG_1_GET_COMPAT
287     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference  get@!field.Name!@ (UInt32 const index);
288     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                  &get@!field.Name!@(void);
289 #endif
290                     @@endif // CompatOneSix
291    
292                     @@if @!field.writePushToField!@
293     void @!field.PushToField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
294                     @@endif // field.writePushToField
295                     @@if @!field.writeAssignMField!@
296     void @!field.AssignMField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &value);
297                     @@endif // field.writeAssignMField
298                     @@if @!field.writeInsertIntoMField!@
299     void @!field.InsertIntoMField!@(
300             UInt32 const uiIndex,
301             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
302                     @@endif // field.writeInsertIntoMField
303                     @@if @!field.writeReplaceInMFieldIndex!@
304     void @!field.ReplaceInMFieldIndex!@(
305             UInt32 const uiIndex,
306             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
307                     @@endif // field.writeReplaceInMFieldIndex
308                     @@if @!field.writeReplaceInMFieldObject!@
309     bool @!field.ReplaceInMFieldObject!@(
310             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType pOldElem,
311             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType pNewElem );
312                     @@endif // field.writeReplaceInMFieldObject
313                     @@if @!field.writeRemoveFromMFieldIndex!@
314     void @!field.RemoveFromMFieldIndex!@(UInt32 const uiIndex);
315                     @@endif // field.writeRemoveFromMFieldIndex
316                     @@if @!field.writeRemoveFromMFieldObject!@
317     bool @!field.RemoveFromMFieldObject!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
318                     @@endif // field.writeRemoveFromMFieldObject
319                     @@if @!field.writeClearField!@
320     void @!field.ClearField!@(void);
321                     @@endif // field.writeClearField
322                 @@endif // @!field.cardinality!@ == "single"
323             @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"
324             @@if @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"      // PARENTPOINTER Field functions
325                 @@if @!field.cardinality!@ == "single"                                      // PARENTPOINTER SField 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_reference get@!field.Name!@(void) const;
328    
329                 @@else // @!field.cardinality!@ == "single"                                 // PARENTPOINTER MField functions
330     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const;
331     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &get@!field.Name!@  (void) const;
332     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@(UInt32 const index) const;
333    
334                 @@endif // @!field.cardinality!@ == "single"
335             @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"
336    
337     /*! \}                                                                 */
338         @@endif // field.access == "public"
339     @@EndFieldLoop@@
340    
341 @@endif // hasPublicFields
342     /*---------------------------------------------------------------------*/
343     /*! \name Binary Access                                                */
344     /*! \{                                                                 */
345
346     virtual UInt32 getBinSize (ConstFieldMaskArg  whichField);
347     virtual void   copyToBin  (BinaryDataHandler &pMem,
348                                ConstFieldMaskArg  whichField);
349     virtual void   copyFromBin(BinaryDataHandler &pMem,
350                                ConstFieldMaskArg  whichField);
351
352     /*! \}                                                                 */
353 @@if @!hasParentPtrFields!@
354     /*---------------------------------------------------------------------*/
355     /*! \name Parent linking                                               */
356     /*! \{                                                                 */
357
358     virtual bool linkParent  (FieldContainerPtrConst pParent,
359                               UInt16 const           childFieldId,
360                               UInt16 const           parentFieldId);
361     virtual bool unlinkParent(FieldContainerPtrConst pParent,
362                               UInt16 const           parentFieldId);
363    
364     /*! \}                                                                 */
365 @@endif // @!hasParentPtrFields!@
366 @@if @!hasChildPtrFields!@
367     /*---------------------------------------------------------------------*/
368     /*! \name Child linking                                                */
369     /*! \{                                                                 */
370    
371     virtual bool unlinkChild(FieldContainerPtrConst pChild,
372                              UInt16 const           childFieldId);
373    
374     /*! \}                                                                 */
375 @@endif // @!hasChildPtrFields!@
376 @@if not @!isAbstract!@
377     /*---------------------------------------------------------------------*/
378     /*! \name Construction                                                 */
379     /*! \{                                                                 */
380
381     static  ObjTransitPtr    create     (void);
382     static  @!Classname!@Ptr createEmpty(void);
383
384     /*! \}                                                                 */
385     /*---------------------------------------------------------------------*/
386     /*! \name Copy                                                         */
387     /*! \{                                                                 */
388
389     virtual FieldContainerTransitPtr shallowCopy(void) const;
390
391     /*! \}                                                                 */
392 @@endif // not isAbstract
393     /*=========================  PROTECTED  ===============================*/
394   protected:
395
396     static TypeObject _type;
397
398     static void         classDescInserter(TypeObject &oType);
399     static Char8 const *getClassname     (void             );
400
401 @@if @!hasFields!@
402     /*---------------------------------------------------------------------*/
403     /*! \name Fields                                                       */
404     /*! \{                                                                 */
405
406     @@if @!isDecorator!@
407     SF@!Parent!@UnrecPtr _sfDecoratee;
408     @@else // isDecorator
409         @@BeginFieldLoop@@
410             @@if @!field.access!@ != "private"
411     @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps:15!@ @!field.VarName!@;
412             @@endif // @!field.access!@ != "private"
413         @@EndFieldLoop@@
414     @@endif // isDecorator
415
416     /*! \}                                                                 */
417 @@endif // hasFields
418     /*---------------------------------------------------------------------*/
419     /*! \name Constructors                                                 */
420     /*! \{                                                                 */
421
422     @!Classname!@Base(void);
423     @!Classname!@Base(@!Classname!@Base const &source);
424
425     /*! \}                                                                 */
426     /*---------------------------------------------------------------------*/
427     /*! \name Destructors                                                  */
428     /*! \{                                                                 */
429
430     virtual ~@!Classname!@Base(void);
431
432     /*! \}                                                                 */
433     /*---------------------------------------------------------------------*/
434     /*! \name onCreate                                                     */
435     /*! \{                                                                 */
436
437 @@if @!hasPtrFields!@
438     void onCreate(@!Classname!@ const *source = NULL);
439 @@endif // hasPtrFields
440
441     /*! \}                                                                 */
442     /*---------------------------------------------------------------------*/
443     /*! \name Generic Field Access                                         */
444     /*! \{                                                                 */
445
446 @@if @!isDecorator!@
447     GetFieldHandlePtr  getHandleDecoratee (void) const;
448     EditFieldHandlePtr editHandleDecoratee(void);
449
450 @@endif // isDecorator
451 @@BeginFieldLoop@@
452     @@if @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"
453     GetFieldHandlePtr  getHandle@!field.Name:15!@(void) const;
454     @@else  // @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"
455     GetFieldHandlePtr  getHandle@!field.Name:15!@ (void) const;
456     EditFieldHandlePtr editHandle@!field.Name:15!@(void);
457     @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"
458 @@EndFieldLoop@@
459
460     /*! \}                                                                 */
461 @@if @!hasProtectedFields!@
462     @@BeginFieldLoop@@
463         @@if @!field.access!@ == "protected"
464     /*---------------------------------------------------------------------*/
465     /*! \name Field @!field.CARD!@@!field.Name:52!@ */
466     /*! \{                                                                 */
467    
468             @@if @!field.category!@ == "data"                                               // DATA Field functions
469                 @@if @!field.cardinality!@ == "single"                                      // DATA SField functions
470     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@             *edit@!field.CARD!@@!field.Name!@(void);
471     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const       *get@!field.CARD!@@!field.Name!@ (void) const;
472                     @@if @!CompatOneSix!@
473 #ifdef OSG_1_GET_COMPAT
474     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@             *get@!field.CARD!@@!field.Name!@ (void);
475 #endif
476                     @@endif // CompatOneSix
477     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(void);
478     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (void) const;
479                     @@if @!CompatOneSix!@
480 #ifdef OSG_1_GET_COMPAT
481     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       get@!field.Name!@ (void);
482 #endif
483                     @@endif // CompatOneSix
484     @!field.MethodType:7!@ void set@!field.Name!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
485                 @@else // @!field.cardinality!@ == "single"                                 // DATA MField functions
486     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
487     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const;
488                     @@if @!CompatOneSix!@
489 #ifdef OSG_1_GET_COMPAT
490     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
491 #endif
492                     @@endif // CompatOneSix
493     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                 &edit@!field.Name!@(void);
494     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const           &get@!field.Name!@ (void) const;
495     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(UInt32 const index);
496     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (UInt32 const index) const;
497                     @@if @!CompatOneSix!@
498 #ifdef OSG_1_GET_COMPAT
499     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       get@!field.Name!@ (UInt32 const index);
500     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                 &get@!field.Name!@(void);
501 #endif
502                     @@endif // CompatOneSix
503                 @@endif // @!field.cardinality!@ == "single"
504             @@endif // @!field.category!@ == "data"
505             @@if @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"      // POINTER Field functions
506                 @@if @!field.cardinality!@ == "single"                                      // POINTER SField functions
507     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
508     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const;
509                     @@if @!CompatOneSix!@
510 #ifdef OSG_1_GET_COMPAT
511     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
512 #endif
513                     @@endif // CompatOneSix
514     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(void);
515     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (void) const;
516                     @@if @!CompatOneSix!@
517 #ifdef OSG_1_GET_COMPAT
518     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldType!@::reference       get@!field.Name!@ (void);
519 #endif
520                     @@endif // CompatOneSix
521     @!field.MethodType:7!@ void set@!field.Name!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
522                 @@else // @!field.cardinality!@ == "single"                                 // POINTER MField functions
523     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
524     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const;
525                     @@if @!CompatOneSix!@
526 #ifdef OSG_1_GET_COMPAT
527     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
528 #endif
529                     @@endif // CompatOneSix
530    
531     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                  &edit@!field.Name!@(void);
532     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const            &get@!field.Name!@ (void) const;
533     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference        edit@!field.Name!@(UInt32 const index);
534     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference  get@!field.Name!@ (UInt32 const index) const;
535                     @@if @!CompatOneSix!@
536 #ifdef OSG_1_GET_COMPAT
537     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference  get@!field.Name!@ (UInt32 const index);
538     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                  &get@!field.Name!@(void);
539 #endif
540                     @@endif // CompatOneSix
541    
542                     @@if @!field.writePushToField!@
543     void @!field.PushToField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType 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.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
552                     @@endif // field.writeInsertIntoMField
553                     @@if @!field.writeReplaceInMFieldIndex!@
554     void @!field.ReplaceInMFieldIndex!@(
555             UInt32 const uiIndex,
556             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
557                     @@endif // field.writeReplaceInMFieldIndex
558                     @@if @!field.writeReplaceInMFieldObject!@
559     bool @!field.ReplaceInMFieldObject!@(
560             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType pOldElem,
561             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType 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     bool @!field.RemoveFromMFieldObject!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
568                     @@endif // field.writeRemoveFromMFieldObject
569                     @@if @!field.writeClearField!@
570     void @!field.ClearField!@(void);
571                     @@endif // field.writeClearField
572                 @@endif // @!field.cardinality!@ == "single"
573             @@endif //  @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"
574             @@if @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"      // PARENTPOINTER Field functions
575                 @@if @!field.cardinality!@ == "single"                                      // 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.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@(void) const;
578    
579                 @@else // @!field.cardinality!@ == "single"                                 // 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.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@(UInt32 const index) const;
583    
584                 @@endif // @!field.cardinality!@ == "single"
585             @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"
586    
587     /*! \}                                                                 */
588         @@endif // @!field.access!@ == "protected"
589     @@EndFieldLoop@@
590    
591     /*! \}                                                                 */
592 @@endif // hasProtectedFields
593     /*---------------------------------------------------------------------*/
594     /*! \name Sync                                                         */
595     /*! \{                                                                 */
596
597 #ifdef OSG_MT_CPTR_ASPECT
598     virtual void execSyncV(FieldContainer    &oFrom,
599                            ConstFieldMaskArg  whichField,
600                            AspectOffsetStore &oOffsets,
601                            ConstFieldMaskArg  syncMode,
602                            UInt32 const       uiSyncInfo);
603
604             void execSync (@!Classname!@Base *pFrom,
605                            ConstFieldMaskArg  whichField,
606                            AspectOffsetStore &oOffsets,
607                            ConstFieldMaskArg  syncMode,
608                            UInt32 const       uiSyncInfo);
609 #endif
610
611     /*! \}                                                                 */
612     /*---------------------------------------------------------------------*/
613     /*! \name Aspect Create                                                */
614     /*! \{                                                                 */
615 @@if not @!isAbstract!@
616
617 #ifdef OSG_MT_CPTR_ASPECT
618     virtual FieldContainerPtr createAspectCopy(void) const;
619 #endif
620 @@endif // !isAbstract
621    
622     /*! \}                                                                 */
623     /*---------------------------------------------------------------------*/
624     /*! \name Sync                                                         */
625     /*! \{                                                                 */
626
627     virtual void resolveLinks(void);
628
629     /*! \}                                                                 */
630     /*==========================  PRIVATE  ================================*/
631   private:
632 @@if @!hasPrivateFields!@
633     /*---------------------------------------------------------------------*/
634     /*! \name Fields                                                       */
635     /*! \{                                                                 */
636
637     @@if not @!isDecorator!@
638         @@BeginFieldLoop@@
639             @@if @!field.access!@ == "private"
640     @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps:15!@ @!field.VarName!@;
641             @@endif // @!field.access!@ == "private"
642         @@EndFieldLoop@@
643     @@endif // not @!isDecorator!@
644
645     /*! \}                                                                 */
646     @@BeginFieldLoop@@
647         @@if @!field.access!@ == "private"
648     /*---------------------------------------------------------------------*/
649     /*! \name Field @!field.CARD!@@!field.Name:52!@ */
650     /*! \{                                                                 */
651    
652             @@if @!field.category!@ == "data"                                               // DATA Field functions
653                 @@if @!field.cardinality!@ == "single"                                      // DATA SField functions
654     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@             *edit@!field.CARD!@@!field.Name!@(void);
655     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const       *get@!field.CARD!@@!field.Name!@ (void) const;
656                     @@if @!CompatOneSix!@
657 #ifdef OSG_1_GET_COMPAT
658     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@             *get@!field.CARD!@@!field.Name!@ (void);
659 #endif
660                     @@endif // CompatOneSix
661     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(void);
662     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (void) const;
663                     @@if @!CompatOneSix!@
664 #ifdef OSG_1_GET_COMPAT
665     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       get@!field.Name!@ (void);
666 #endif
667                     @@endif // CompatOneSix
668     @!field.MethodType:7!@ void set@!field.Name!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
669                 @@else // @!field.cardinality!@ == "single"                                 // DATA MField functions
670     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
671     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const;
672                     @@if @!CompatOneSix!@
673 #ifdef OSG_1_GET_COMPAT
674     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
675 #endif
676                     @@endif // CompatOneSix
677     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                 &edit@!field.Name!@(void);
678     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const           &get@!field.Name!@ (void) const;
679     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(UInt32 const index);
680     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (UInt32 const index) const;
681                     @@if @!CompatOneSix!@
682 #ifdef OSG_1_GET_COMPAT
683     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       get@!field.Name!@ (UInt32 const index);
684     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                 &get@!field.Name!@(void);
685 #endif
686                     @@endif // CompatOneSix
687                 @@endif // @!field.cardinality!@ == "single"
688             @@endif // @!field.category!@ == "data"
689             @@if @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"      // POINTER Field functions
690                 @@if @!field.cardinality!@ == "single"                                      // POINTER SField functions
691     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
692     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@ (void) const;
693                     @@if @!CompatOneSix!@
694 #ifdef OSG_1_GET_COMPAT
695     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
696 #endif
697                     @@endif // CompatOneSix
698     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference       edit@!field.Name!@(void);
699     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference get@!field.Name!@ (void) const;
700                     @@if @!CompatOneSix!@
701 #ifdef OSG_1_GET_COMPAT
702     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldType!@::reference       get@!field.Name!@ (void);
703 #endif
704                     @@endif // CompatOneSix
705     @!field.MethodType:7!@ void set@!field.Name!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
706                 @@else // @!field.cardinality!@ == "single"                                 // POINTER MField functions
707     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *edit@!field.CARD!@@!field.Name!@(void);
708     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *get@!field.CARD!@@!field.Name!@(void) const;
709                     @@if @!CompatOneSix!@
710 #ifdef OSG_1_GET_COMPAT
711     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@       *get@!field.CARD!@@!field.Name!@ (void);
712 #endif
713                     @@endif // CompatOneSix
714    
715     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                  &edit@!field.Name!@(void);
716     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const            &get@!field.Name!@ (void) const;
717     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference        edit@!field.Name!@(UInt32 const index);
718     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference  get@!field.Name!@ (UInt32 const index) const;
719                     @@if @!CompatOneSix!@
720 #ifdef OSG_1_GET_COMPAT
721     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference        get@!field.Name!@ (UInt32 const index);
722     @!field.MethodType:7!@ @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@                  &get@!field.Name!@(void);
723 #endif
724                     @@endif // CompatOneSix
725    
726                     @@if @!field.writePushToField!@
727     void @!field.PushToField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
728                     @@endif // field.writePushToField
729                     @@if @!field.writeAssignMField!@
730     void @!field.AssignMField!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &value);
731                     @@endif // field.writeAssignMField
732                     @@if @!field.writeInsertIntoMField!@
733     void @!field.InsertIntoMField!@(
734             UInt32 const uiIndex,
735             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
736                     @@endif // field.writeInsertIntoMField
737                     @@if @!field.writeReplaceInMFieldIndex!@
738     void @!field.ReplaceInMFieldIndex!@(
739             UInt32 const uiIndex,
740             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
741                     @@endif // field.writeReplaceInMFieldIndex
742                     @@if @!field.writeReplaceInMFieldObject!@
743     bool @!field.ReplaceInMFieldObject!@(
744             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType pOldElem,
745             @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType pNewElem);
746                     @@endif // field.writeReplaceInMFieldObject
747                     @@if @!field.writeRemoveFromMFieldIndex!@
748     void @!field.RemoveFromMFieldIndex!@(UInt32 const uiIndex);
749                     @@endif // field.writeRemoveFromMFieldIndex
750                     @@if @!field.writeRemoveFromMFieldObject!@
751     bool @!field.RemoveFromMFieldObject!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value);
752                     @@endif // field.writeRemoveFromMFieldO