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

Revision 1072, 14.4 kB (checked in by cneumann, 9 months ago)

replaced pointer field implementation
split FieldContainer/Fields? directory into Base and Handle subdir

Status: - ref counting seems to work (mt, cluster)

  • new OSB loader works (well, the unittest does)
  • VRML loader is deactivated
  • get/edit handle for dynamic (pointer) fields missing
  • need to remove some more old files - they get moved in this commit
  • generated (i.e. base) code in following commit
  • Property svn:eol-style set to native
Line 
1 /*---------------------------------------------------------------------------*\
2  *                                OpenSG                                     *
3  *                                                                           *
4  *                                                                           *
5  *               Copyright (C) 2000-2006 by the OpenSG Forum                 *
6  *                                                                           *
7  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
8  *                                                                           *
9 \*---------------------------------------------------------------------------*/
10 /*---------------------------------------------------------------------------*\
11  *                                License                                    *
12  *                                                                           *
13  * This library is free software; you can redistribute it and/or modify it   *
14  * under the terms of the GNU Library General Public License as published    *
15  * by the Free Software Foundation, version 2.                               *
16  *                                                                           *
17  * This library is distributed in the hope that it will be useful, but       *
18  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
19  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
20  * Library General Public License for more details.                          *
21  *                                                                           *
22  * You should have received a copy of the GNU Library General Public         *
23  * License along with this library; if not, write to the Free Software       *
24  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
25  *                                                                           *
26 \*---------------------------------------------------------------------------*/
27 /*---------------------------------------------------------------------------*\
28  *                                Changes                                    *
29  *                                                                           *
30  *                                                                           *
31  *                                                                           *
32  *                                                                           *
33  *                                                                           *
34  *                                                                           *
35 \*---------------------------------------------------------------------------*/
36
37 /*****************************************************************************\
38  *****************************************************************************
39  **                                                                         **
40  **                  This file is automatically generated.                  **
41  **                                                                         **
42  **          Any changes made to this file WILL be lost when it is          **
43  **           regenerated, which can become necessary at any time.          **
44  **                                                                         **
45  **     Do not change this file, changes should be done in the derived      **
46  **     class @!Classname!@!
47  **                                                                         **
48  *****************************************************************************
49 \*****************************************************************************/
50
51 OSG_BEGIN_NAMESPACE
52
53 //! access the type of the class
54 inline OSG::FieldContainerType &
55 @!Classname!@Base::getClassType(void)
56 {
57     return _type;
58 }
59
60 //! access the numerical type of the class
61 inline OSG::UInt32
62 @!Classname!@Base::getClassTypeId(void)
63 {
64     return _type.getId();
65 }
66
67 inline OSG::UInt16
68 @!Classname!@Base::getClassGroupId(void)
69 {
70     return _type.getGroupId();
71 }
72
73 @@if not @!isDecorator!@
74     @@if not @!isDecoratable!@
75         @@BeginSFFieldLoop@@
76             @@if @!field.access!@ != "none"
77 /*-------------------------------------------------------------------------*/
78 /* Field @!field.CARD!@@!field.Name:63!@ */
79
80                 @@if @!field.category!@ == "data"                                           // DATA SField functions
81 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ *
82 @!Classname!@Base::edit@!field.CARD!@@!field.Name!@(void)
83 {
84     editSField(@!field.Name!@FieldMask);
85
86     return &@!field.VarName!@;
87 }
88
89 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *
90 @!Classname!@Base::get@!field.CARD!@@!field.Name!@ (void) const
91 {
92     return &@!field.VarName!@;
93 }
94
95                     @@if @!CompatOneSix!@
96 #ifdef OSG_1_GET_COMPAT
97 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ *
98 @!Classname!@Base::get@!field.CARD!@@!field.Name!@ (void)
99 {
100     return this->edit@!field.CARD!@@!field.Name!@();
101 }
102 #endif
103
104                     @@endif // CompatOneSix
105 inline @!field.TypeNS!@@!field.Type!@ &
106 @!Classname!@Base::edit@!field.Name!@(void)
107 {
108     editSField(@!field.Name!@FieldMask);
109
110     return @!field.VarName!@.getValue();
111 }
112
113 inline @!field.TypeNS!@@!field.Type!@ const &
114 @!Classname!@Base::get@!field.Name!@ (void) const
115 {
116     return @!field.VarName!@.getValue();
117 }
118                     @@if @!CompatOneSix!@
119 #ifdef OSG_1_GET_COMPAT
120 inline @!field.TypeNS!@@!field.Type!@ &
121 @!Classname!@Base::get@!field.Name!@ (void)
122 {
123     return this->edit@!field.Name!@();
124 }
125 #endif
126
127                     @@endif // CompatOneSix
128 inline void
129 @!Classname!@Base::set@!field.Name!@(
130     @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value)
131 {
132     editSField(@!field.Name!@FieldMask);
133
134     @!field.VarName!@.setValue(value);
135 }
136
137                 @@endif // @!field.category!@ == "data"
138                 @@if @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"  // POINTER SField functions
139 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ *
140 @!Classname!@Base::edit@!field.CARD!@@!field.Name!@(void)
141 {
142     editSField(@!field.Name!@FieldMask);
143
144     return &@!field.VarName!@;
145 }
146
147 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *
148 @!Classname!@Base::get@!field.CARD!@@!field.Name!@(void) const
149 {
150     return &@!field.VarName!@;
151 }
152
153 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference
154 @!Classname!@Base::edit@!field.Name!@(void)
155 {
156     editSField(@!field.Name!@FieldMask);
157
158     return @!field.VarName!@.editValue();
159 }
160
161 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference
162 @!Classname!@Base::get@!field.Name!@(void) const
163 {
164     return @!field.VarName!@.getValue();
165 }
166    
167 inline void
168 @!Classname!@Base::set@!field.Name!@(@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::ArgumentType value)
169 {
170     editSField(@!field.Name!@FieldMask);
171
172     @!field.VarName!@.setValue(value);
173 }
174
175                 @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"
176                 @@if @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"  // PARENTPOINTER SField functions
177 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *
178 @!Classname!@Base::get@!field.CARD!@@!field.Name!@(void) const
179 {
180     return &@!field.VarName!@;
181 }
182
183 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference
184 @!Classname!@Base::get@!field.Name!@(void) const
185 {
186     return @!field.VarName!@.getValue();
187 }
188
189                 @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"
190             @@endif // field.access != "none"
191         @@EndSFFieldLoop@@
192    
193         @@BeginMFFieldLoop@@
194             @@if @!field.access!@ != "none"
195                 @@if @!field.category!@ == "data"                                           // DATA MField functions
196 /*-------------------------------------------------------------------------*/
197 /* Field @!field.CARD!@@!field.Name:50!@ (Data field) */
198
199 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ *
200 @!Classname!@Base::edit@!field.CARD!@@!field.Name!@(void)
201 {
202     editMField(@!field.Name!@FieldMask, @!field.VarName!@);
203
204     return &@!field.VarName!@;
205 }
206
207 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *
208 @!Classname!@Base::get@!field.CARD!@@!field.Name!@ (void) const
209 {
210     return &@!field.VarName!@;
211 }
212
213                     @@if @!CompatOneSix!@
214 #ifdef OSG_1_GET_COMPAT
215 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ *
216 @!Classname!@Base::get@!field.CARD!@@!field.Name!@ (void)
217 {
218     return this->edit@!field.CARD!@@!field.Name!@();
219 }
220 #endif
221
222                     @@endif // CompatOneSix
223 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ &
224 @!Classname!@Base::edit@!field.Name!@(void)
225 {
226     editMField(@!field.Name!@FieldMask, @!field.VarName!@);
227
228     return @!field.VarName!@;
229 }
230
231 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &
232 @!Classname!@Base::get@!field.Name!@ (void) const
233 {
234     return @!field.VarName!@;
235 }
236
237 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference
238 @!Classname!@Base::edit@!field.Name!@(UInt32 const index)
239 {
240     editMField(@!field.Name!@FieldMask, @!field.VarName!@);
241    
242     return @!field.VarName!@[index];
243 }
244
245 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference
246 @!Classname!@Base::get@!field.Name!@(UInt32 const index) const
247 {
248     return @!field.VarName!@[index];
249 }
250
251                     @@if @!CompatOneSix!@
252 #ifdef OSG_1_GET_COMPAT
253 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference
254 @!Classname!@Base::get@!field.Name!@(UInt32 const index)
255 {
256     return this->edit@!field.Name!@(index);
257 }
258
259 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ &
260 @!Classname!@Base::get@!field.Name!@(void)
261 {
262     return this->edit@!field.Name!@();
263 }
264 #endif
265
266                     @@endif // CompatOneSix
267                 @@endif // @!field.category!@ == "data"
268                 @@if @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"  // POINTER MField functions
269 /*-------------------------------------------------------------------------*/
270 /* Field @!field.CARD!@@!field.Name:47!@ (Pointer field) */
271
272 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ *
273 @!Classname!@Base::edit@!field.CARD!@@!field.Name!@(void)
274 {
275     editMField(@!field.Name!@FieldMask, @!field.VarName!@);
276    
277     return &@!field.VarName!@;
278 }
279
280 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *
281 @!Classname!@Base::get@!field.CARD!@@!field.Name!@(void) const
282 {
283     return &@!field.VarName!@;
284 }
285
286 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ &
287 @!Classname!@Base::edit@!field.Name!@(void)
288 {
289     editMField(@!field.Name!@FieldMask, @!field.VarName!@);
290
291     return @!field.VarName!@;
292 }
293
294 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &
295 @!Classname!@Base::get@!field.Name!@(void) const
296 {
297     return @!field.VarName!@;
298 }
299
300 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::reference
301 @!Classname!@Base::edit@!field.Name!@(UInt32 const index)
302 {
303     editMField(@!field.Name!@FieldMask, @!field.VarName!@);
304
305     return @!field.VarName!@[index];
306 }
307
308 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference
309 @!Classname!@Base::get@!field.Name!@(UInt32 const index) const
310 {
311     return @!field.VarName!@[index];
312 }
313
314             @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ != "parent"
315             @@if @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"      // PARENTPOINTER MField functions
316 /*-------------------------------------------------------------------------*/
317 /* Field @!field.CARD!@@!field.Name:40!@ (Parent Pointer field) */
318
319 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const *
320 @!Classname!@Base::get@!field.CARD!@@!field.Name!@(void) const
321 {
322     return &@!field.VarName!@;
323 }
324
325 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ const &
326 @!Classname!@Base::get@!field.Name!@(void) const
327 {
328     return @!field.VarName!@;
329 }
330
331 inline @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@::const_reference
332 @!Classname!@Base::get@!field.Name!@(UInt32 const index) const
333 {
334     return @!field.VarName!@[index];
335 }
336
337                 @@endif // @!field.category!@ == "pointer" and @!field.pointertype!@ == "parent"
338             @@endif // @!field.access!@ != "none"
339         @@EndMFFieldLoop@@
340     @@endif // not @!isDecoratable!@
341 @@else // not @!isDecorator!@
342 /*-------------------------------------------------------------------------*/
343 /* Field SFDecorator                                                       */
344
345 inline SF@!Parent!@UnrecPtr const *
346 @!Classname!@Base::getSFDecoratee(void) const
347 {
348     return &_sfDecoratee;
349 }
350
351 inline SF@!Parent!@UnrecPtr::const_reference
352 @!Classname!@Base::getDecoratee(void) const
353 {
354     return _sfDecoratee.getValue();
355 }
356    
357 inline void
358 @!Classname!@Base::setDecoratee(SF@!Parent!@UnrecPtr::ArgumentType value)
359 {
360     editSField(DecorateeFieldMask);
361
362     _sfDecoratee.setValue(value);
363 }
364
365 @@endif // not @!isDecorator!@
366
367 #ifdef OSG_MT_CPTR_ASPECT
368 inline
369 void @!Classname!@Base::execSync (@!Classname!@Base *pFrom,
370                                   ConstFieldMaskArg  whichField,
371                                   AspectOffsetStore &oOffsets,
372                                   ConstFieldMaskArg  syncMode,
373                                   UInt32 const       uiSyncInfo)
374 {
375     Inherited::execSync(pFrom, whichField, oOffsets, syncMode, uiSyncInfo);
376 @@if @!isDecorator!@
377
378     if(FieldBits::NoField != (DecorateeFieldMask & whichField))
379     {
380         _sfDecoratee.syncWith(pFrom->_sfDecoratee);
381     }
382 @@else // @!isDecorator!@
383     @@BeginFieldLoop@@
384
385         @@if @!field.cardinality!@ == "single"
386     if(FieldBits::NoField != (@!field.Name!@FieldMask & whichField))
387         @!field.VarName!@.syncWith(pFrom->@!field.VarName!@);
388         @@else // @!field.cardinality!@ == "single"
389     if(FieldBits::NoField != (@!field.Name!@FieldMask & whichField))
390         @!field.VarName!@.syncWith(pFrom->@!field.VarName!@,
391                                 syncMode,
392                                 uiSyncInfo,
393                                 oOffsets);
394         @@endif // @!field.cardinality!@ == "single"
395     @@EndFieldLoop@@
396 @@endif // @!isDecorator!@
397 }
398 #endif
399
400
401 inline Char8 const *
402 @!Classname!@Base::getClassname(void)
403 {
404     return "@!Classname!@";
405 }
406
407 OSG_END_NAMESPACE
408
Note: See TracBrowser for help on using the browser.