1 /*---------------------------------------------------------------------------*\
5 * Copyright (C) 2000-2013 by the OpenSG Forum *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, carsten_neumann@gmx.net *
11 \*---------------------------------------------------------------------------*/
12 /*---------------------------------------------------------------------------*\
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. *
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. *
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. *
28 \*---------------------------------------------------------------------------*/
29 /*---------------------------------------------------------------------------*\
37 \*---------------------------------------------------------------------------*/
39 /*****************************************************************************\
40 *****************************************************************************
42 ** This file is automatically generated. **
44 ** Any changes made to this file WILL be lost when it is **
45 ** regenerated, which can become necessary at any time. **
47 ** Do not change this file, changes should be done in the derived **
48 ** class UniformBufferObjChunk
50 *****************************************************************************
51 \*****************************************************************************/
54 #ifndef _OSGUNIFORMBUFFEROBJCHUNKBASE_H_
55 #define _OSGUNIFORMBUFFEROBJCHUNKBASE_H_
61 #include "OSGConfig.h"
62 #include "OSGSystemDef.h"
64 //#include "OSGBaseTypes.h"
66 #include "OSGUniformBufferObjBaseChunk.h" // Parent
68 #include "OSGBaseFields.h" // GLId type
69 #include "OSGSysFields.h" // FundamentalTypes type
70 #include "OSGStringToUInt32MapFields.h" // NameToIndex type
72 #include "OSGUniformBufferObjChunkFields.h"
77 class UniformBufferObjChunk
;
79 //! \brief UniformBufferObjChunk Base Class.
81 class OSG_SYSTEM_DLLMAPPING UniformBufferObjChunkBase
: public UniformBufferObjBaseChunk
85 typedef UniformBufferObjBaseChunk Inherited
;
86 typedef UniformBufferObjBaseChunk ParentContainer
;
88 typedef Inherited::TypeObject TypeObject
;
89 typedef TypeObject::InitPhase InitPhase
;
91 OSG_GEN_INTERNALPTR(UniformBufferObjChunk
);
93 /*========================== PUBLIC =================================*/
99 GLIdFieldId
= Inherited::NextFieldId
,
100 UsageFieldId
= GLIdFieldId
+ 1,
101 BlockNameFieldId
= UsageFieldId
+ 1,
102 FundamentalTypesFieldId
= BlockNameFieldId
+ 1,
103 MainTypesFieldId
= FundamentalTypesFieldId
+ 1,
104 CardinalityFieldId
= MainTypesFieldId
+ 1,
105 IndexFieldId
= CardinalityFieldId
+ 1,
106 NamesFieldId
= IndexFieldId
+ 1,
107 NameToIndexFieldId
= NamesFieldId
+ 1,
108 FloatValuesFieldId
= NameToIndexFieldId
+ 1,
109 DoubleValuesFieldId
= FloatValuesFieldId
+ 1,
110 IntValuesFieldId
= DoubleValuesFieldId
+ 1,
111 UIntValuesFieldId
= IntValuesFieldId
+ 1,
112 BoolValuesFieldId
= UIntValuesFieldId
+ 1,
113 NextFieldId
= BoolValuesFieldId
+ 1
116 static const OSG::BitVector GLIdFieldMask
=
117 (TypeTraits
<BitVector
>::One
<< GLIdFieldId
);
118 static const OSG::BitVector UsageFieldMask
=
119 (TypeTraits
<BitVector
>::One
<< UsageFieldId
);
120 static const OSG::BitVector BlockNameFieldMask
=
121 (TypeTraits
<BitVector
>::One
<< BlockNameFieldId
);
122 static const OSG::BitVector FundamentalTypesFieldMask
=
123 (TypeTraits
<BitVector
>::One
<< FundamentalTypesFieldId
);
124 static const OSG::BitVector MainTypesFieldMask
=
125 (TypeTraits
<BitVector
>::One
<< MainTypesFieldId
);
126 static const OSG::BitVector CardinalityFieldMask
=
127 (TypeTraits
<BitVector
>::One
<< CardinalityFieldId
);
128 static const OSG::BitVector IndexFieldMask
=
129 (TypeTraits
<BitVector
>::One
<< IndexFieldId
);
130 static const OSG::BitVector NamesFieldMask
=
131 (TypeTraits
<BitVector
>::One
<< NamesFieldId
);
132 static const OSG::BitVector NameToIndexFieldMask
=
133 (TypeTraits
<BitVector
>::One
<< NameToIndexFieldId
);
134 static const OSG::BitVector FloatValuesFieldMask
=
135 (TypeTraits
<BitVector
>::One
<< FloatValuesFieldId
);
136 static const OSG::BitVector DoubleValuesFieldMask
=
137 (TypeTraits
<BitVector
>::One
<< DoubleValuesFieldId
);
138 static const OSG::BitVector IntValuesFieldMask
=
139 (TypeTraits
<BitVector
>::One
<< IntValuesFieldId
);
140 static const OSG::BitVector UIntValuesFieldMask
=
141 (TypeTraits
<BitVector
>::One
<< UIntValuesFieldId
);
142 static const OSG::BitVector BoolValuesFieldMask
=
143 (TypeTraits
<BitVector
>::One
<< BoolValuesFieldId
);
144 static const OSG::BitVector NextFieldMask
=
145 (TypeTraits
<BitVector
>::One
<< NextFieldId
);
147 typedef SFGLenum SFGLIdType
;
148 typedef SFGLenum SFUsageType
;
149 typedef SFString SFBlockNameType
;
150 typedef MFUInt8 MFFundamentalTypesType
;
151 typedef MFUInt8 MFMainTypesType
;
152 typedef MFUInt32 MFCardinalityType
;
153 typedef MFUInt32 MFIndexType
;
154 typedef MFString MFNamesType
;
155 typedef SFStringToUInt32Map SFNameToIndexType
;
156 typedef MFReal32 MFFloatValuesType
;
157 typedef MFReal64 MFDoubleValuesType
;
158 typedef MFInt32 MFIntValuesType
;
159 typedef MFUInt32 MFUIntValuesType
;
160 typedef MFUInt8 MFBoolValuesType
;
162 /*---------------------------------------------------------------------*/
163 /*! \name Class Get */
166 static FieldContainerType
&getClassType (void);
167 static UInt32
getClassTypeId (void);
168 static UInt16
getClassGroupId(void);
171 /*---------------------------------------------------------------------*/
172 /*! \name FieldContainer Get */
175 virtual FieldContainerType
&getType (void);
176 virtual const FieldContainerType
&getType (void) const;
178 virtual UInt32
getContainerSize(void) const;
181 /*---------------------------------------------------------------------*/
182 /*! \name Field Get */
186 SFGLenum
*editSFGLId (void);
187 const SFGLenum
*getSFGLId (void) const;
189 SFGLenum
*editSFUsage (void);
190 const SFGLenum
*getSFUsage (void) const;
192 SFString
*editSFBlockName (void);
193 const SFString
*getSFBlockName (void) const;
196 GLenum
&editGLId (void);
197 const GLenum
&getGLId (void) const;
199 GLenum
&editUsage (void);
200 const GLenum
&getUsage (void) const;
202 std::string
&editBlockName (void);
203 const std::string
&getBlockName (void) const;
206 /*---------------------------------------------------------------------*/
207 /*! \name Field Set */
210 void setGLId (const GLenum
&value
);
211 void setUsage (const GLenum
&value
);
212 void setBlockName (const std::string
&value
);
215 /*---------------------------------------------------------------------*/
216 /*! \name Ptr MField Set */
220 /*---------------------------------------------------------------------*/
221 /*! \name Binary Access */
224 virtual SizeT
getBinSize (ConstFieldMaskArg whichField
);
225 virtual void copyToBin (BinaryDataHandler
&pMem
,
226 ConstFieldMaskArg whichField
);
227 virtual void copyFromBin(BinaryDataHandler
&pMem
,
228 ConstFieldMaskArg whichField
);
232 /*---------------------------------------------------------------------*/
233 /*! \name Construction */
236 static UniformBufferObjChunkTransitPtr
create (void);
237 static UniformBufferObjChunk
*createEmpty (void);
239 static UniformBufferObjChunkTransitPtr
createLocal (
240 BitVector bFlags
= FCLocal::All
);
242 static UniformBufferObjChunk
*createEmptyLocal(
243 BitVector bFlags
= FCLocal::All
);
245 static UniformBufferObjChunkTransitPtr
createDependent (BitVector bFlags
);
248 /*---------------------------------------------------------------------*/
252 virtual FieldContainerTransitPtr
shallowCopy (void) const;
253 virtual FieldContainerTransitPtr
shallowCopyLocal(
254 BitVector bFlags
= FCLocal::All
) const;
255 virtual FieldContainerTransitPtr
shallowCopyDependent(
256 BitVector bFlags
) const;
259 /*========================= PROTECTED ===============================*/
263 static TypeObject _type
;
265 static void classDescInserter(TypeObject
&oType
);
266 static const Char8
*getClassname (void );
268 /*---------------------------------------------------------------------*/
274 SFString _sfBlockName
;
275 MFUInt8 _mfFundamentalTypes
;
276 MFUInt8 _mfMainTypes
;
277 MFUInt32 _mfCardinality
;
280 SFStringToUInt32Map _sfNameToIndex
;
281 MFReal32 _mfFloatValues
;
282 MFReal64 _mfDoubleValues
;
283 MFInt32 _mfIntValues
;
284 MFUInt32 _mfUIntValues
;
285 MFUInt8 _mfBoolValues
;
288 /*---------------------------------------------------------------------*/
289 /*! \name Constructors */
292 UniformBufferObjChunkBase(void);
293 UniformBufferObjChunkBase(const UniformBufferObjChunkBase
&source
);
296 /*---------------------------------------------------------------------*/
297 /*! \name Destructors */
300 virtual ~UniformBufferObjChunkBase(void);
303 /*---------------------------------------------------------------------*/
304 /*! \name onCreate */
309 /*---------------------------------------------------------------------*/
310 /*! \name Generic Field Access */
313 GetFieldHandlePtr
getHandleGLId (void) const;
314 EditFieldHandlePtr
editHandleGLId (void);
315 GetFieldHandlePtr
getHandleUsage (void) const;
316 EditFieldHandlePtr
editHandleUsage (void);
317 GetFieldHandlePtr
getHandleBlockName (void) const;
318 EditFieldHandlePtr
editHandleBlockName (void);
319 GetFieldHandlePtr
getHandleFundamentalTypes (void) const;
320 EditFieldHandlePtr
editHandleFundamentalTypes(void);
321 GetFieldHandlePtr
getHandleMainTypes (void) const;
322 EditFieldHandlePtr
editHandleMainTypes (void);
323 GetFieldHandlePtr
getHandleCardinality (void) const;
324 EditFieldHandlePtr
editHandleCardinality (void);
325 GetFieldHandlePtr
getHandleIndex (void) const;
326 EditFieldHandlePtr
editHandleIndex (void);
327 GetFieldHandlePtr
getHandleNames (void) const;
328 EditFieldHandlePtr
editHandleNames (void);
329 GetFieldHandlePtr
getHandleNameToIndex (void) const;
330 EditFieldHandlePtr
editHandleNameToIndex (void);
331 GetFieldHandlePtr
getHandleFloatValues (void) const;
332 EditFieldHandlePtr
editHandleFloatValues (void);
333 GetFieldHandlePtr
getHandleDoubleValues (void) const;
334 EditFieldHandlePtr
editHandleDoubleValues (void);
335 GetFieldHandlePtr
getHandleIntValues (void) const;
336 EditFieldHandlePtr
editHandleIntValues (void);
337 GetFieldHandlePtr
getHandleUIntValues (void) const;
338 EditFieldHandlePtr
editHandleUIntValues (void);
339 GetFieldHandlePtr
getHandleBoolValues (void) const;
340 EditFieldHandlePtr
editHandleBoolValues (void);
343 /*---------------------------------------------------------------------*/
344 /*! \name Field Get */
348 MFUInt8
*editMFFundamentalTypes(void);
349 const MFUInt8
*getMFFundamentalTypes (void) const;
351 MFUInt8
*editMFMainTypes (void);
352 const MFUInt8
*getMFMainTypes (void) const;
354 MFUInt32
*editMFCardinality (void);
355 const MFUInt32
*getMFCardinality (void) const;
357 MFUInt32
*editMFIndex (void);
358 const MFUInt32
*getMFIndex (void) const;
360 MFString
*editMFNames (void);
361 const MFString
*getMFNames (void) const;
363 SFStringToUInt32Map
*editSFNameToIndex (void);
364 const SFStringToUInt32Map
*getSFNameToIndex (void) const;
366 MFReal32
*editMFFloatValues (void);
367 const MFReal32
*getMFFloatValues (void) const;
369 MFReal64
*editMFDoubleValues (void);
370 const MFReal64
*getMFDoubleValues (void) const;
372 MFInt32
*editMFIntValues (void);
373 const MFInt32
*getMFIntValues (void) const;
375 MFUInt32
*editMFUIntValues (void);
376 const MFUInt32
*getMFUIntValues (void) const;
378 MFUInt8
*editMFBoolValues (void);
379 const MFUInt8
*getMFBoolValues (void) const;
382 MFUInt8 ::reference
editFundamentalTypes(const UInt32 index
);
383 UInt8
getFundamentalTypes (const UInt32 index
) const;
385 MFUInt8 ::reference
editMainTypes (const UInt32 index
);
386 UInt8
getMainTypes (const UInt32 index
) const;
388 MFUInt32 ::reference
editCardinality (const UInt32 index
);
389 UInt32
getCardinality (const UInt32 index
) const;
391 MFUInt32 ::reference
editIndex (const UInt32 index
);
392 UInt32
getIndex (const UInt32 index
) const;
394 MFString ::reference
editNames (const UInt32 index
);
395 const std::string
&getNames (const UInt32 index
) const;
397 StringToUInt32Map
&editNameToIndex (void);
398 const StringToUInt32Map
&getNameToIndex (void) const;
400 MFReal32 ::reference
editFloatValues (const UInt32 index
);
401 Real32
getFloatValues (const UInt32 index
) const;
403 MFReal64 ::reference
editDoubleValues (const UInt32 index
);
404 Real64
getDoubleValues (const UInt32 index
) const;
406 MFInt32 ::reference
editIntValues (const UInt32 index
);
407 Int32
getIntValues (const UInt32 index
) const;
409 MFUInt32 ::reference
editUIntValues (const UInt32 index
);
410 UInt32
getUIntValues (const UInt32 index
) const;
412 MFUInt8 ::reference
editBoolValues (const UInt32 index
);
413 UInt8
getBoolValues (const UInt32 index
) const;
416 /*---------------------------------------------------------------------*/
417 /*! \name Field Set */
420 void setNameToIndex (const StringToUInt32Map
&value
);
423 /*---------------------------------------------------------------------*/
424 /*! \name Ptr MField Set */
428 /*---------------------------------------------------------------------*/
432 #ifdef OSG_MT_CPTR_ASPECT
433 virtual void execSyncV( FieldContainer
&oFrom
,
434 ConstFieldMaskArg whichField
,
435 AspectOffsetStore
&oOffsets
,
436 ConstFieldMaskArg syncMode
,
437 const UInt32 uiSyncInfo
);
439 void execSync ( UniformBufferObjChunkBase
*pFrom
,
440 ConstFieldMaskArg whichField
,
441 AspectOffsetStore
&oOffsets
,
442 ConstFieldMaskArg syncMode
,
443 const UInt32 uiSyncInfo
);
447 /*---------------------------------------------------------------------*/
452 /*---------------------------------------------------------------------*/
453 /*! \name Aspect Create */
456 #ifdef OSG_MT_CPTR_ASPECT
457 virtual FieldContainer
*createAspectCopy(
458 const FieldContainer
*pRefAspect
) const;
462 /*---------------------------------------------------------------------*/
466 /*---------------------------------------------------------------------*/
470 virtual void resolveLinks(void);
473 /*========================== PRIVATE ================================*/
476 /*---------------------------------------------------------------------*/
478 // prohibit default functions (move to 'public' if you need one)
479 void operator =(const UniformBufferObjChunkBase
&source
);
482 typedef UniformBufferObjChunkBase
*UniformBufferObjChunkBaseP
;
486 #endif /* _OSGUNIFORMBUFFEROBJCHUNKBASE_H_ */