fixed: auto_ptr -> unique_ptr
[opensg.git] / Source / System / Dynamics / VRMLAnimation / OSGVRMLScalarInterpolatorBase.cpp
blob0c742bb0c8c3d803c4f535bd9fe2bbffc447a16a
1 /*---------------------------------------------------------------------------*\
2 * OpenSG *
3 * *
4 * *
5 * Copyright (C) 2000-2013 by the OpenSG Forum *
6 * *
7 * www.opensg.org *
8 * *
9 * contact: dirk@opensg.org, gerrit.voss@vossg.org, carsten_neumann@gmx.net *
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 \*---------------------------------------------------------------------------*/
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 VRMLScalarInterpolator!
49 ** **
50 *****************************************************************************
51 \*****************************************************************************/
53 #include <cstdlib>
54 #include <cstdio>
56 #ifdef WIN32
57 #pragma warning(disable: 4355) // turn off 'this' : used in base member initializer list warning
58 #pragma warning(disable: 4290) // disable exception specification warning
59 #endif
61 #include "OSGConfig.h"
66 #include "OSGVRMLScalarInterpolatorBase.h"
67 #include "OSGVRMLScalarInterpolator.h"
69 #include <boost/bind.hpp>
71 OSG_BEGIN_NAMESPACE
73 /***************************************************************************\
74 * Description *
75 \***************************************************************************/
77 /*! \class OSG::VRMLScalarInterpolator
81 /***************************************************************************\
82 * Field Documentation *
83 \***************************************************************************/
85 /*! \var Real32 VRMLScalarInterpolatorBase::_mfKeyValue
89 /*! \var Real32 VRMLScalarInterpolatorBase::_sfOutValue
90 This is VRML's value field.
94 /***************************************************************************\
95 * FieldType/FieldTrait Instantiation *
96 \***************************************************************************/
98 #if !defined(OSG_DO_DOC) || defined(OSG_DOC_DEV)
99 PointerType FieldTraits<VRMLScalarInterpolator *, nsOSG>::_type(
100 "VRMLScalarInterpolatorPtr",
101 "VRMLInterpolatorPtr",
102 VRMLScalarInterpolator::getClassType(),
103 nsOSG);
104 #endif
106 OSG_FIELDTRAITS_GETTYPE_NS(VRMLScalarInterpolator *, nsOSG)
108 /***************************************************************************\
109 * Field Description *
110 \***************************************************************************/
112 void VRMLScalarInterpolatorBase::classDescInserter(TypeObject &oType)
114 FieldDescriptionBase *pDesc = NULL;
117 pDesc = new MFReal32::Description(
118 MFReal32::getClassType(),
119 "keyValue",
121 KeyValueFieldId, KeyValueFieldMask,
122 false,
123 (Field::FStdAccess | Field::FThreadLocal),
124 static_cast<FieldEditMethodSig>(&VRMLScalarInterpolator::editHandleKeyValue),
125 static_cast<FieldGetMethodSig >(&VRMLScalarInterpolator::getHandleKeyValue));
127 oType.addInitialDesc(pDesc);
129 pDesc = new SFReal32::Description(
130 SFReal32::getClassType(),
131 "outValue",
132 "This is VRML's value field.\n",
133 OutValueFieldId, OutValueFieldMask,
134 true,
135 (Field::FStdAccess | Field::FThreadLocal),
136 static_cast<FieldEditMethodSig>(&VRMLScalarInterpolator::editHandleOutValue),
137 static_cast<FieldGetMethodSig >(&VRMLScalarInterpolator::getHandleOutValue));
139 oType.addInitialDesc(pDesc);
143 VRMLScalarInterpolatorBase::TypeObject VRMLScalarInterpolatorBase::_type(
144 VRMLScalarInterpolatorBase::getClassname(),
145 Inherited::getClassname(),
146 "NULL",
147 nsOSG, //Namespace
148 reinterpret_cast<PrototypeCreateF>(&VRMLScalarInterpolatorBase::createEmptyLocal),
149 reinterpret_cast<InitContainerF>(&VRMLScalarInterpolator::initMethod),
150 reinterpret_cast<ExitContainerF>(&VRMLScalarInterpolator::exitMethod),
151 reinterpret_cast<InitalInsertDescFunc>(
152 reinterpret_cast<void *>(&VRMLScalarInterpolator::classDescInserter)),
153 false,
155 "<?xml version=\"1.0\"?>\n"
156 "\n"
157 "<FieldContainer\n"
158 " name=\"VRMLScalarInterpolator\"\n"
159 " parent=\"VRMLInterpolator\"\n"
160 " library=\"Dynamics\"\n"
161 " pointerfieldtypes=\"none\"\n"
162 " structure=\"concrete\"\n"
163 " systemcomponent=\"true\"\n"
164 " parentsystemcomponent=\"true\"\n"
165 " decoratable=\"false\"\n"
166 " useLocalIncludes=\"false\"\n"
167 " isNodeCore=\"true\"\n"
168 " isBundle=\"false\"\n"
169 " parentFields=\"none\"\n"
170 " docGroupBase=\"GrpDynamicsVRMLAnimation\"\n"
171 " >\n"
172 " <Field\n"
173 " name=\"keyValue\"\n"
174 " type=\"Real32\"\n"
175 " cardinality=\"multi\"\n"
176 " visibility=\"external\"\n"
177 " access=\"public\"\n"
178 " defaultValue=\"\"\n"
179 " fieldFlags=\"FStdAccess, FThreadLocal\"\n"
180 " >\n"
181 " </Field>\n"
182 " <Field\n"
183 " name=\"outValue\"\n"
184 " type=\"Real32\"\n"
185 " cardinality=\"single\"\n"
186 " visibility=\"internal\"\n"
187 " access=\"public\"\n"
188 " defaultValue=\"\"\n"
189 " fieldFlags=\"FStdAccess, FThreadLocal\"\n"
190 " >\n"
191 " This is VRML's value field.\n"
192 " </Field>\n"
193 "</FieldContainer>\n",
197 /*------------------------------ get -----------------------------------*/
199 FieldContainerType &VRMLScalarInterpolatorBase::getType(void)
201 return _type;
204 const FieldContainerType &VRMLScalarInterpolatorBase::getType(void) const
206 return _type;
209 UInt32 VRMLScalarInterpolatorBase::getContainerSize(void) const
211 return sizeof(VRMLScalarInterpolator);
214 /*------------------------- decorator get ------------------------------*/
217 MFReal32 *VRMLScalarInterpolatorBase::editMFKeyValue(void)
219 editMField(KeyValueFieldMask, _mfKeyValue);
221 return &_mfKeyValue;
224 const MFReal32 *VRMLScalarInterpolatorBase::getMFKeyValue(void) const
226 return &_mfKeyValue;
230 SFReal32 *VRMLScalarInterpolatorBase::editSFOutValue(void)
232 editSField(OutValueFieldMask);
234 return &_sfOutValue;
237 const SFReal32 *VRMLScalarInterpolatorBase::getSFOutValue(void) const
239 return &_sfOutValue;
247 /*------------------------------ access -----------------------------------*/
249 SizeT VRMLScalarInterpolatorBase::getBinSize(ConstFieldMaskArg whichField)
251 SizeT returnValue = Inherited::getBinSize(whichField);
253 if(FieldBits::NoField != (KeyValueFieldMask & whichField))
255 returnValue += _mfKeyValue.getBinSize();
257 if(FieldBits::NoField != (OutValueFieldMask & whichField))
259 returnValue += _sfOutValue.getBinSize();
262 return returnValue;
265 void VRMLScalarInterpolatorBase::copyToBin(BinaryDataHandler &pMem,
266 ConstFieldMaskArg whichField)
268 Inherited::copyToBin(pMem, whichField);
270 if(FieldBits::NoField != (KeyValueFieldMask & whichField))
272 _mfKeyValue.copyToBin(pMem);
274 if(FieldBits::NoField != (OutValueFieldMask & whichField))
276 _sfOutValue.copyToBin(pMem);
280 void VRMLScalarInterpolatorBase::copyFromBin(BinaryDataHandler &pMem,
281 ConstFieldMaskArg whichField)
283 Inherited::copyFromBin(pMem, whichField);
285 if(FieldBits::NoField != (KeyValueFieldMask & whichField))
287 editMField(KeyValueFieldMask, _mfKeyValue);
288 _mfKeyValue.copyFromBin(pMem);
290 if(FieldBits::NoField != (OutValueFieldMask & whichField))
292 editSField(OutValueFieldMask);
293 _sfOutValue.copyFromBin(pMem);
297 //! create a new instance of the class
298 VRMLScalarInterpolatorTransitPtr VRMLScalarInterpolatorBase::createLocal(BitVector bFlags)
300 VRMLScalarInterpolatorTransitPtr fc;
302 if(getClassType().getPrototype() != NULL)
304 FieldContainerTransitPtr tmpPtr =
305 getClassType().getPrototype()-> shallowCopyLocal(bFlags);
307 fc = dynamic_pointer_cast<VRMLScalarInterpolator>(tmpPtr);
310 return fc;
313 //! create a new instance of the class, copy the container flags
314 VRMLScalarInterpolatorTransitPtr VRMLScalarInterpolatorBase::createDependent(BitVector bFlags)
316 VRMLScalarInterpolatorTransitPtr fc;
318 if(getClassType().getPrototype() != NULL)
320 FieldContainerTransitPtr tmpPtr =
321 getClassType().getPrototype()-> shallowCopyDependent(bFlags);
323 fc = dynamic_pointer_cast<VRMLScalarInterpolator>(tmpPtr);
326 return fc;
329 //! create a new instance of the class
330 VRMLScalarInterpolatorTransitPtr VRMLScalarInterpolatorBase::create(void)
332 VRMLScalarInterpolatorTransitPtr fc;
334 if(getClassType().getPrototype() != NULL)
336 FieldContainerTransitPtr tmpPtr =
337 getClassType().getPrototype()-> shallowCopy();
339 fc = dynamic_pointer_cast<VRMLScalarInterpolator>(tmpPtr);
342 return fc;
345 VRMLScalarInterpolator *VRMLScalarInterpolatorBase::createEmptyLocal(BitVector bFlags)
347 VRMLScalarInterpolator *returnValue;
349 newPtr<VRMLScalarInterpolator>(returnValue, bFlags);
351 returnValue->_pFieldFlags->_bNamespaceMask &= ~bFlags;
353 return returnValue;
356 //! create an empty new instance of the class, do not copy the prototype
357 VRMLScalarInterpolator *VRMLScalarInterpolatorBase::createEmpty(void)
359 VRMLScalarInterpolator *returnValue;
361 newPtr<VRMLScalarInterpolator>(returnValue, Thread::getCurrentLocalFlags());
363 returnValue->_pFieldFlags->_bNamespaceMask &=
364 ~Thread::getCurrentLocalFlags();
366 return returnValue;
370 FieldContainerTransitPtr VRMLScalarInterpolatorBase::shallowCopyLocal(
371 BitVector bFlags) const
373 VRMLScalarInterpolator *tmpPtr;
375 newPtr(tmpPtr, dynamic_cast<const VRMLScalarInterpolator *>(this), bFlags);
377 FieldContainerTransitPtr returnValue(tmpPtr);
379 tmpPtr->_pFieldFlags->_bNamespaceMask &= ~bFlags;
381 return returnValue;
384 FieldContainerTransitPtr VRMLScalarInterpolatorBase::shallowCopyDependent(
385 BitVector bFlags) const
387 VRMLScalarInterpolator *tmpPtr;
389 newPtr(tmpPtr, dynamic_cast<const VRMLScalarInterpolator *>(this), ~bFlags);
391 FieldContainerTransitPtr returnValue(tmpPtr);
393 tmpPtr->_pFieldFlags->_bNamespaceMask = bFlags;
395 return returnValue;
398 FieldContainerTransitPtr VRMLScalarInterpolatorBase::shallowCopy(void) const
400 VRMLScalarInterpolator *tmpPtr;
402 newPtr(tmpPtr,
403 dynamic_cast<const VRMLScalarInterpolator *>(this),
404 Thread::getCurrentLocalFlags());
406 tmpPtr->_pFieldFlags->_bNamespaceMask &= ~Thread::getCurrentLocalFlags();
408 FieldContainerTransitPtr returnValue(tmpPtr);
410 return returnValue;
416 /*------------------------- constructors ----------------------------------*/
418 VRMLScalarInterpolatorBase::VRMLScalarInterpolatorBase(void) :
419 Inherited(),
420 _mfKeyValue (),
421 _sfOutValue ()
425 VRMLScalarInterpolatorBase::VRMLScalarInterpolatorBase(const VRMLScalarInterpolatorBase &source) :
426 Inherited(source),
427 _mfKeyValue (source._mfKeyValue ),
428 _sfOutValue (source._sfOutValue )
433 /*-------------------------- destructors ----------------------------------*/
435 VRMLScalarInterpolatorBase::~VRMLScalarInterpolatorBase(void)
440 GetFieldHandlePtr VRMLScalarInterpolatorBase::getHandleKeyValue (void) const
442 MFReal32::GetHandlePtr returnValue(
443 new MFReal32::GetHandle(
444 &_mfKeyValue,
445 this->getType().getFieldDesc(KeyValueFieldId),
446 const_cast<VRMLScalarInterpolatorBase *>(this)));
448 return returnValue;
451 EditFieldHandlePtr VRMLScalarInterpolatorBase::editHandleKeyValue (void)
453 MFReal32::EditHandlePtr returnValue(
454 new MFReal32::EditHandle(
455 &_mfKeyValue,
456 this->getType().getFieldDesc(KeyValueFieldId),
457 this));
460 editMField(KeyValueFieldMask, _mfKeyValue);
462 return returnValue;
465 GetFieldHandlePtr VRMLScalarInterpolatorBase::getHandleOutValue (void) const
467 SFReal32::GetHandlePtr returnValue(
468 new SFReal32::GetHandle(
469 &_sfOutValue,
470 this->getType().getFieldDesc(OutValueFieldId),
471 const_cast<VRMLScalarInterpolatorBase *>(this)));
473 return returnValue;
476 EditFieldHandlePtr VRMLScalarInterpolatorBase::editHandleOutValue (void)
478 SFReal32::EditHandlePtr returnValue(
479 new SFReal32::EditHandle(
480 &_sfOutValue,
481 this->getType().getFieldDesc(OutValueFieldId),
482 this));
485 editSField(OutValueFieldMask);
487 return returnValue;
491 #ifdef OSG_MT_CPTR_ASPECT
492 void VRMLScalarInterpolatorBase::execSyncV( FieldContainer &oFrom,
493 ConstFieldMaskArg whichField,
494 AspectOffsetStore &oOffsets,
495 ConstFieldMaskArg syncMode,
496 const UInt32 uiSyncInfo)
498 VRMLScalarInterpolator *pThis = static_cast<VRMLScalarInterpolator *>(this);
500 pThis->execSync(static_cast<VRMLScalarInterpolator *>(&oFrom),
501 whichField,
502 oOffsets,
503 syncMode,
504 uiSyncInfo);
506 #endif
509 #ifdef OSG_MT_CPTR_ASPECT
510 FieldContainer *VRMLScalarInterpolatorBase::createAspectCopy(
511 const FieldContainer *pRefAspect) const
513 VRMLScalarInterpolator *returnValue;
515 newAspectCopy(returnValue,
516 dynamic_cast<const VRMLScalarInterpolator *>(pRefAspect),
517 dynamic_cast<const VRMLScalarInterpolator *>(this));
519 return returnValue;
521 #endif
523 void VRMLScalarInterpolatorBase::resolveLinks(void)
525 Inherited::resolveLinks();
527 #ifdef OSG_MT_CPTR_ASPECT
528 AspectOffsetStore oOffsets;
530 _pAspectStore->fillOffsetArray(oOffsets, this);
531 #endif
533 #ifdef OSG_MT_CPTR_ASPECT
534 _mfKeyValue.terminateShare(Thread::getCurrentAspect(),
535 oOffsets);
536 #endif
540 OSG_END_NAMESPACE