00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 #ifndef _OSG_VECFIELDDATATYPE_H_
00041 #define _OSG_VECFIELDDATATYPE_H_
00042
00043 #include <OSGBase.h>
00044 #include <OSGFieldDataType.h>
00045 #include <OSGVector.h>
00046
00047 #include <string>
00048
00049 OSG_BEGIN_NAMESPACE
00050
00051 #if !defined(OSG_DO_DOC) || (OSG_DOC_LEVEL >= 3)
00052
00053 #ifdef OSG_DOC_FILES_IN_MODULE
00054
00058 #endif
00059
00060
00063 #if !defined(OSG_DOC_DEV_TRAITS)
00064
00065 #endif
00066
00067 template<class ValueTypeT>
00068 struct FieldTraitsRecurseVecStoreBase : public FieldTraits
00069 {
00070 enum { bHasParent = 0x00 };
00071
00072 #ifndef __hpux
00073 static const UInt32 uiTest = TypeTraits<ValueTypeT>::IsPOD == false;
00074
00075 typedef typename
00076 osgIF<uiTest == 1,
00077 const ValueTypeT ,
00078 const ValueTypeT & >::_IRet ArgumentType;
00079 #else
00080 typedef typename
00081 osgIF<!TypeTraits<ValueTypeT>::IsPOD,
00082 const ValueTypeT ,
00083 const ValueTypeT & >::_IRet ArgumentType;
00084 #endif
00085
00086 static UInt32 getBinSize (const ValueTypeT &)
00087 {
00088 return sizeof(ValueTypeT);
00089 }
00090
00091 static UInt32 getBinSize (const ValueTypeT *,
00092 UInt32 uiNumObjects)
00093 {
00094 return sizeof(ValueTypeT) * uiNumObjects;
00095 }
00096
00097 static void copyToBin ( BinaryDataHandler &pMem,
00098 const ValueTypeT &oObject)
00099 {
00100 pMem.putValues(&oObject[0], ValueTypeT::_iSize);
00101 }
00102
00103 static void copyToBin ( BinaryDataHandler &pMem,
00104 const ValueTypeT *pObjectStore,
00105 UInt32 uiNumObjects)
00106 {
00107 pMem.putValues(&pObjectStore[0][0], ValueTypeT::_iSize*uiNumObjects);
00108 }
00109
00110 static void copyFromBin( BinaryDataHandler &pMem,
00111 ValueTypeT &oObject)
00112 {
00113 pMem.getValues(&oObject[0], ValueTypeT::_iSize);
00114 }
00115
00116 static void copyFromBin( BinaryDataHandler &pMem,
00117 ValueTypeT *pObjectStore,
00118 UInt32 uiNumObjects)
00119 {
00120 pMem.getValues(&pObjectStore[0][0], ValueTypeT::_iSize*uiNumObjects);
00121 }
00122 };
00123
00124 #if defined(__hpuxX)
00125 template<class ValueTypeT>
00126 const UInt32 FieldTraitsRecurseVecStoreBase<ValueTypeT>::uiTest;
00127 #endif
00128
00131 #if !defined(OSG_DOC_DEV_TRAITS)
00132
00133 #endif
00134
00135 template<class ValueTypeT>
00136 struct FieldTraitsRecurseVecStore2Base :
00137 public FieldTraitsRecurseVecStoreBase<ValueTypeT>
00138 {
00139 enum { bHasParent = 0x00 };
00140 };
00141
00144 #if !defined(OSG_DOC_DEV_TRAITS)
00145
00146 #endif
00147
00148 template<class ValueTypeT>
00149 struct FieldTraitsRecurseVecStore3Base :
00150 public FieldTraitsRecurseVecStoreBase<ValueTypeT>
00151 {
00152 enum { bHasParent = 0x00 };
00153 };
00154
00157 #if !defined(OSG_DOC_DEV_TRAITS)
00158
00159 #endif
00160
00161 template<class ValueTypeT>
00162 struct FieldTraitsRecurseVecStore4Base :
00163 public FieldTraitsRecurseVecStoreBase<ValueTypeT>
00164 {
00165 enum { bHasParent = 0x00 };
00166 };
00167
00168
00171 #if !defined(OSG_DOC_DEV_TRAITS)
00172
00173 #endif
00174
00175 template <>
00176 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec2ub> :
00177 public FieldTraitsRecurseVecStore2Base<Vec2ub>
00178 {
00179 static DataType _type;
00180 typedef FieldDataTraits<Vec2ub> Self;
00181
00182
00183 enum { StringConvertable = Self::ToStringConvertable |
00184 Self::FromStringConvertable };
00185
00186 enum { bHasParent = 0x01 };
00187
00188 static DataType &getType (void) { return _type; }
00189
00190 static Char8 *getSName (void) { return "SFVec2ub"; }
00191 static Char8 *getMName (void) { return "MFVec2ub"; }
00192
00193 static Vec2ub getDefault (void) { return Vec2ub(); }
00194
00195 static bool getFromString( Vec2ub &outVal,
00196 const Char8 *&inVal)
00197 {
00198 outVal.setValueFromCString(inVal);
00199
00200 return true;
00201 }
00202
00203 static void putToString (const Vec2ub &inVal,
00204 std::string &outStr)
00205 {
00206 typedef TypeTraits<Vec2ub::ValueType> TypeTrait;
00207
00208 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00209 outStr.append(" ");
00210 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00211 }
00212 };
00213
00214 #if !defined(OSG_DOC_DEV_TRAITS)
00215
00217 #endif
00218
00221 #if !defined(OSG_DOC_DEV_TRAITS)
00222
00223 #endif
00224
00225 template <>
00226 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec3ub> :
00227 public FieldTraitsRecurseVecStore2Base<Vec3ub>
00228 {
00229 static DataType _type;
00230 typedef FieldDataTraits<Vec3ub> Self;
00231
00232
00233 enum { StringConvertable = Self::ToStringConvertable |
00234 Self::FromStringConvertable };
00235
00236 enum { bHasParent = 0x01 };
00237
00238 static DataType &getType (void) { return _type; }
00239
00240 static Char8 *getSName (void) { return "SFVec3ub"; }
00241 static Char8 *getMName (void) { return "MFVec3ub"; }
00242
00243 static Vec3ub getDefault (void) { return Vec3ub(); }
00244
00245 static bool getFromString( Vec3ub &outVal,
00246 const Char8 *&inVal)
00247 {
00248 outVal.setValueFromCString(inVal);
00249
00250 return true;
00251 }
00252
00253 static void putToString (const Vec3ub &inVal,
00254 std::string &outStr)
00255 {
00256 typedef TypeTraits<Vec3ub::ValueType> TypeTrait;
00257
00258 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00259 outStr.append(" ");
00260 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00261 outStr.append(" ");
00262 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00263 }
00264 };
00265
00266 #if !defined(OSG_DOC_DEV_TRAITS)
00267
00269 #endif
00270
00273 #if !defined(OSG_DOC_DEV_TRAITS)
00274
00275 #endif
00276
00277 template <>
00278 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec4ub> :
00279 public FieldTraitsRecurseVecStore2Base<Vec4ub>
00280 {
00281 static DataType _type;
00282 typedef FieldDataTraits<Vec4ub> Self;
00283
00284
00285 enum { StringConvertable = Self::ToStringConvertable |
00286 Self::FromStringConvertable };
00287
00288 enum { bHasParent = 0x01 };
00289
00290 static DataType &getType (void) { return _type; }
00291
00292 static Char8 *getSName (void) { return "SFVec4ub"; }
00293 static Char8 *getMName (void) { return "MFVec4ub"; }
00294
00295 static Vec4ub getDefault (void) { return Vec4ub(); }
00296
00297 static bool getFromString( Vec4ub &outVal,
00298 const Char8 *&inVal)
00299 {
00300 outVal.setValueFromCString(inVal);
00301
00302 return true;
00303 }
00304
00305 static void putToString (const Vec4ub &inVal,
00306 std::string &outStr)
00307 {
00308 typedef TypeTraits<Vec4ub::ValueType> TypeTrait;
00309
00310 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00311 outStr.append(" ");
00312 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00313 outStr.append(" ");
00314 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00315 outStr.append(" ");
00316 outStr.append(TypeTrait::putToString((inVal.getValues())[3]));
00317 }
00318 };
00319
00320 #if !defined(OSG_DOC_DEV_TRAITS)
00321
00323 #endif
00324
00325
00326
00327 #ifndef OSG_NO_INT8_PNT
00328
00330 #if !defined(OSG_DOC_DEV_TRAITS)
00331
00332 #endif
00333
00334 template <>
00335 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec2b> :
00336 public FieldTraitsRecurseVecStore2Base<Vec2b>
00337 {
00338 static DataType _type;
00339 typedef FieldDataTraits<Vec2b> Self;
00340
00341
00342 enum { StringConvertable = Self::ToStringConvertable |
00343 Self::FromStringConvertable };
00344
00345 enum { bHasParent = 0x01 };
00346
00347 static DataType &getType (void) { return _type; }
00348
00349 static Char8 *getSName (void) { return "SFVec2b"; }
00350 static Char8 *getMName (void) { return "MFVec2b"; }
00351
00352 static Vec2b getDefault (void) { return Vec2b(); }
00353
00354 static bool getFromString( Vec2b &outVal,
00355 const Char8 *&inVal)
00356 {
00357 outVal.setValueFromCString(inVal);
00358
00359 return true;
00360 }
00361
00362 static void putToString (const Vec2b &inVal,
00363 std::string &outStr)
00364 {
00365 typedef TypeTraits<Vec2b::ValueType> TypeTrait;
00366
00367 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00368 outStr.append(" ");
00369 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00370 }
00371 };
00372
00373 #if !defined(OSG_DOC_DEV_TRAITS)
00374
00376 #endif
00377
00380 #if !defined(OSG_DOC_DEV_TRAITS)
00381
00382 #endif
00383
00384 template <>
00385 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec3b> :
00386 public FieldTraitsRecurseVecStore2Base<Vec3b>
00387 {
00388 static DataType _type;
00389 typedef FieldDataTraits<Vec3b> Self;
00390
00391
00392 enum { StringConvertable = Self::ToStringConvertable |
00393 Self::FromStringConvertable };
00394
00395 enum { bHasParent = 0x01 };
00396
00397 static DataType &getType (void) { return _type; }
00398
00399 static Char8 *getSName (void) { return "SFVec3b"; }
00400 static Char8 *getMName (void) { return "MFVec3b"; }
00401
00402 static Vec3b getDefault (void) { return Vec3b(); }
00403
00404 static bool getFromString( Vec3b &outVal,
00405 const Char8 *&inVal)
00406 {
00407 outVal.setValueFromCString(inVal);
00408
00409 return true;
00410 }
00411
00412 static void putToString (const Vec3b &inVal,
00413 std::string &outStr)
00414 {
00415 typedef TypeTraits<Vec3b::ValueType> TypeTrait;
00416
00417 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00418 outStr.append(" ");
00419 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00420 outStr.append(" ");
00421 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00422 }
00423 };
00424
00425 #if !defined(OSG_DOC_DEV_TRAITS)
00426
00428 #endif
00429
00432 #if !defined(OSG_DOC_DEV_TRAITS)
00433
00434 #endif
00435
00436 template <>
00437 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec4b> :
00438 public FieldTraitsRecurseVecStore2Base<Vec4b>
00439 {
00440 static DataType _type;
00441 typedef FieldDataTraits<Vec4b> Self;
00442
00443
00444 enum { StringConvertable = Self::ToStringConvertable |
00445 Self::FromStringConvertable };
00446
00447 enum { bHasParent = 0x01 };
00448
00449 static DataType &getType (void) { return _type; }
00450
00451 static Char8 *getSName (void) { return "SFVec4b"; }
00452 static Char8 *getMName (void) { return "MFVec4b"; }
00453
00454 static Vec4b getDefault (void) { return Vec4b(); }
00455
00456 static bool getFromString( Vec4b &outVal,
00457 const Char8 *&inVal)
00458 {
00459 outVal.setValueFromCString(inVal);
00460
00461 return true;
00462 }
00463
00464 static void putToString (const Vec4b &inVal,
00465 std::string &outStr)
00466 {
00467 typedef TypeTraits<Vec4b::ValueType> TypeTrait;
00468
00469 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00470 outStr.append(" ");
00471 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00472 outStr.append(" ");
00473 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00474 outStr.append(" ");
00475 outStr.append(TypeTrait::putToString((inVal.getValues())[3]));
00476 }
00477 };
00478
00479 #if !defined(OSG_DOC_DEV_TRAITS)
00480
00482 #endif
00483 #endif
00484
00485
00488 #if !defined(OSG_DOC_DEV_TRAITS)
00489
00490 #endif
00491
00492 template <>
00493 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec2us> :
00494 public FieldTraitsRecurseVecStore2Base<Vec2us>
00495 {
00496 static DataType _type;
00497 typedef FieldDataTraits<Vec2us> Self;
00498
00499
00500 enum { StringConvertable = Self::ToStringConvertable |
00501 Self::FromStringConvertable };
00502
00503 enum { bHasParent = 0x01 };
00504
00505 static DataType &getType (void) { return _type; }
00506
00507 static Char8 *getSName (void) { return "SFVec2us"; }
00508 static Char8 *getMName (void) { return "MFVec2us"; }
00509
00510 static Vec2us getDefault (void) { return Vec2us(); }
00511
00512 static bool getFromString( Vec2us &outVal,
00513 const Char8 *&inVal)
00514 {
00515 outVal.setValueFromCString(inVal);
00516
00517 return true;
00518 }
00519
00520 static void putToString (const Vec2us &inVal,
00521 std::string &outStr)
00522 {
00523 typedef TypeTraits<Vec2us::ValueType> TypeTrait;
00524
00525 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00526 outStr.append(" ");
00527 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00528 }
00529 };
00530
00531 #if !defined(OSG_DOC_DEV_TRAITS)
00532
00534 #endif
00535
00538 #if !defined(OSG_DOC_DEV_TRAITS)
00539
00540 #endif
00541
00542 template <>
00543 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec3us> :
00544 public FieldTraitsRecurseVecStore2Base<Vec3us>
00545 {
00546 static DataType _type;
00547 typedef FieldDataTraits<Vec3us> Self;
00548
00549
00550 enum { StringConvertable = Self::ToStringConvertable |
00551 Self::FromStringConvertable };
00552
00553 enum { bHasParent = 0x01 };
00554
00555 static DataType &getType (void) { return _type; }
00556
00557 static Char8 *getSName (void) { return "SFVec3us"; }
00558 static Char8 *getMName (void) { return "MFVec3us"; }
00559
00560 static Vec3us getDefault (void) { return Vec3us(); }
00561
00562 static bool getFromString( Vec3us &outVal,
00563 const Char8 *&inVal)
00564 {
00565 outVal.setValueFromCString(inVal);
00566
00567 return true;
00568 }
00569
00570 static void putToString (const Vec3us &inVal,
00571 std::string &outStr)
00572 {
00573 typedef TypeTraits<Vec3us::ValueType> TypeTrait;
00574
00575 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00576 outStr.append(" ");
00577 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00578 outStr.append(" ");
00579 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00580 }
00581 };
00582
00583 #if !defined(OSG_DOC_DEV_TRAITS)
00584
00586 #endif
00587
00590 #if !defined(OSG_DOC_DEV_TRAITS)
00591
00592 #endif
00593
00594 template <>
00595 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec4us> :
00596 public FieldTraitsRecurseVecStore2Base<Vec4us>
00597 {
00598 static DataType _type;
00599 typedef FieldDataTraits<Vec4us> Self;
00600
00601
00602 enum { StringConvertable = Self::ToStringConvertable |
00603 Self::FromStringConvertable };
00604
00605 enum { bHasParent = 0x01 };
00606
00607 static DataType &getType (void) { return _type; }
00608
00609 static Char8 *getSName (void) { return "SFVec4us"; }
00610 static Char8 *getMName (void) { return "MFVec4us"; }
00611
00612 static Vec4us getDefault (void) { return Vec4us(); }
00613
00614 static bool getFromString( Vec4us &outVal,
00615 const Char8 *&inVal)
00616 {
00617 outVal.setValueFromCString(inVal);
00618
00619 return true;
00620 }
00621
00622 static void putToString (const Vec4us &inVal,
00623 std::string &outStr)
00624 {
00625 typedef TypeTraits<Vec4us::ValueType> TypeTrait;
00626
00627 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00628 outStr.append(" ");
00629 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00630 outStr.append(" ");
00631 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00632 outStr.append(" ");
00633 outStr.append(TypeTrait::putToString((inVal.getValues())[3]));
00634 }
00635 };
00636
00637 #if !defined(OSG_DOC_DEV_TRAITS)
00638
00640 #endif
00641
00642
00643
00646 #if !defined(OSG_DOC_DEV_TRAITS)
00647
00648 #endif
00649
00650 template <>
00651 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec2s> :
00652 public FieldTraitsRecurseVecStore2Base<Vec2s>
00653 {
00654 static DataType _type;
00655 typedef FieldDataTraits<Vec2s> Self;
00656
00657
00658 enum { StringConvertable = Self::ToStringConvertable |
00659 Self::FromStringConvertable };
00660
00661 enum { bHasParent = 0x01 };
00662
00663 static DataType &getType (void) { return _type; }
00664
00665 static Char8 *getSName (void) { return "SFVec2s"; }
00666 static Char8 *getMName (void) { return "MFVec2s"; }
00667
00668 static Vec2s getDefault (void) { return Vec2s(); }
00669
00670 static bool getFromString( Vec2s &outVal,
00671 const Char8 *&inVal)
00672 {
00673 outVal.setValueFromCString(inVal);
00674
00675 return true;
00676 }
00677
00678 static void putToString (const Vec2s &inVal,
00679 std::string &outStr)
00680 {
00681 typedef TypeTraits<Vec2s::ValueType> TypeTrait;
00682
00683 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00684 outStr.append(" ");
00685 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00686 }
00687 };
00688
00689 #if !defined(OSG_DOC_DEV_TRAITS)
00690
00692 #endif
00693
00696 #if !defined(OSG_DOC_DEV_TRAITS)
00697
00698 #endif
00699
00700 template <>
00701 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec3s> :
00702 public FieldTraitsRecurseVecStore2Base<Vec3s>
00703 {
00704 static DataType _type;
00705 typedef FieldDataTraits<Vec3s> Self;
00706
00707
00708 enum { StringConvertable = Self::ToStringConvertable |
00709 Self::FromStringConvertable };
00710
00711 enum { bHasParent = 0x01 };
00712
00713 static DataType &getType (void) { return _type; }
00714
00715 static Char8 *getSName (void) { return "SFVec3s"; }
00716 static Char8 *getMName (void) { return "MFVec3s"; }
00717
00718 static Vec3s getDefault (void) { return Vec3s(); }
00719
00720 static bool getFromString( Vec3s &outVal,
00721 const Char8 *&inVal)
00722 {
00723 outVal.setValueFromCString(inVal);
00724
00725 return true;
00726 }
00727
00728 static void putToString (const Vec3s &inVal,
00729 std::string &outStr)
00730 {
00731 typedef TypeTraits<Vec3s::ValueType> TypeTrait;
00732
00733 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00734 outStr.append(" ");
00735 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00736 outStr.append(" ");
00737 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00738 }
00739 };
00740
00741 #if !defined(OSG_DOC_DEV_TRAITS)
00742
00744 #endif
00745
00748 #if !defined(OSG_DOC_DEV_TRAITS)
00749
00750 #endif
00751
00752 template <>
00753 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec4s> :
00754 public FieldTraitsRecurseVecStore2Base<Vec4s>
00755 {
00756 static DataType _type;
00757 typedef FieldDataTraits<Vec4s> Self;
00758
00759
00760 enum { StringConvertable = Self::ToStringConvertable |
00761 Self::FromStringConvertable };
00762
00763 enum { bHasParent = 0x01 };
00764
00765 static DataType &getType (void) { return _type; }
00766
00767 static Char8 *getSName (void) { return "SFVec4s"; }
00768 static Char8 *getMName (void) { return "MFVec4s"; }
00769
00770 static Vec4s getDefault (void) { return Vec4s(); }
00771
00772 static bool getFromString( Vec4s &outVal,
00773 const Char8 *&inVal)
00774 {
00775 outVal.setValueFromCString(inVal);
00776
00777 return true;
00778 }
00779
00780 static void putToString (const Vec4s &inVal,
00781 std::string &outStr)
00782 {
00783 typedef TypeTraits<Vec4s::ValueType> TypeTrait;
00784
00785 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00786 outStr.append(" ");
00787 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00788 outStr.append(" ");
00789 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00790 outStr.append(" ");
00791 outStr.append(TypeTrait::putToString((inVal.getValues())[3]));
00792 }
00793 };
00794
00795 #if !defined(OSG_DOC_DEV_TRAITS)
00796
00798 #endif
00799
00800
00801
00804 #if !defined(OSG_DOC_DEV_TRAITS)
00805
00806 #endif
00807
00808 template <>
00809 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec2f> :
00810 public FieldTraitsRecurseVecStore2Base<Vec2f>
00811 {
00812 static DataType _type;
00813 typedef FieldDataTraits<Vec2f> Self;
00814
00815
00816 enum { StringConvertable = Self::ToStringConvertable |
00817 Self::FromStringConvertable };
00818
00819 enum { bHasParent = 0x01 };
00820
00821 static DataType &getType (void) { return _type; }
00822
00823 static Char8 *getSName (void) { return "SFVec2f"; }
00824 static Char8 *getMName (void) { return "MFVec2f"; }
00825
00826 static Vec2f getDefault (void) { return Vec2f(); }
00827
00828 static bool getFromString( Vec2f &outVal,
00829 const Char8 *&inVal)
00830 {
00831 outVal.setValueFromCString(inVal);
00832
00833 return true;
00834 }
00835
00836 static void putToString (const Vec2f &inVal,
00837 std::string &outStr)
00838 {
00839 typedef TypeTraits<Vec2f::ValueType> TypeTrait;
00840
00841 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00842 outStr.append(" ");
00843 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00844 }
00845 };
00846
00847 #if !defined(OSG_DOC_DEV_TRAITS)
00848
00850 #endif
00851
00854 #if !defined(OSG_DOC_DEV_TRAITS)
00855
00856 #endif
00857
00858 template <>
00859 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec3f> :
00860 public FieldTraitsRecurseVecStore2Base<Vec3f>
00861 {
00862 static DataType _type;
00863 typedef FieldDataTraits<Vec3f> Self;
00864
00865
00866 enum { StringConvertable = Self::ToStringConvertable |
00867 Self::FromStringConvertable };
00868
00869 enum { bHasParent = 0x01 };
00870
00871 static DataType &getType (void) { return _type; }
00872
00873 static Char8 *getSName (void) { return "SFVec3f"; }
00874 static Char8 *getMName (void) { return "MFVec3f"; }
00875
00876 static Vec3f getDefault (void) { return Vec3f(); }
00877
00878 static bool getFromString( Vec3f &outVal,
00879 const Char8 *&inVal)
00880 {
00881 outVal.setValueFromCString(inVal);
00882
00883 return true;
00884 }
00885
00886 static void putToString (const Vec3f &inVal,
00887 std::string &outStr)
00888 {
00889 typedef TypeTraits<Vec3f::ValueType> TypeTrait;
00890
00891 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00892 outStr.append(" ");
00893 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00894 outStr.append(" ");
00895 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00896 }
00897 };
00898
00899 #if !defined(OSG_DOC_DEV_TRAITS)
00900
00902 #endif
00903
00906 #if !defined(OSG_DOC_DEV_TRAITS)
00907
00908 #endif
00909
00910 template <>
00911 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec4f> :
00912 public FieldTraitsRecurseVecStore2Base<Vec4f>
00913 {
00914 static DataType _type;
00915 typedef FieldDataTraits<Vec4f> Self;
00916
00917
00918 enum { StringConvertable = Self::ToStringConvertable |
00919 Self::FromStringConvertable };
00920
00921 enum { bHasParent = 0x01 };
00922
00923 static DataType &getType (void) { return _type; }
00924
00925 static Char8 *getSName (void) { return "SFVec4f"; }
00926 static Char8 *getMName (void) { return "MFVec4f"; }
00927
00928 static Vec4f getDefault (void) { return Vec4f(); }
00929
00930 static bool getFromString( Vec4f &outVal,
00931 const Char8 *&inVal)
00932 {
00933 outVal.setValueFromCString(inVal);
00934
00935 return true;
00936 }
00937
00938 static void putToString (const Vec4f &inVal,
00939 std::string &outStr)
00940 {
00941 typedef TypeTraits<Vec4f::ValueType> TypeTrait;
00942
00943 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
00944 outStr.append(" ");
00945 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
00946 outStr.append(" ");
00947 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
00948 outStr.append(" ");
00949 outStr.append(TypeTrait::putToString((inVal.getValues())[3]));
00950 }
00951 };
00952
00953 #if !defined(OSG_DOC_DEV_TRAITS)
00954
00956 #endif
00957
00958
00959
00962 #if !defined(OSG_DOC_DEV_TRAITS)
00963
00964 #endif
00965
00966 template <>
00967 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec2d> :
00968 public FieldTraitsRecurseVecStore2Base<Vec2d>
00969 {
00970 static DataType _type;
00971 typedef FieldDataTraits<Vec2d> Self;
00972
00973
00974 enum { StringConvertable = Self::ToStringConvertable |
00975 Self::FromStringConvertable };
00976
00977 enum { bHasParent = 0x01 };
00978
00979 static DataType &getType (void) { return _type; }
00980
00981 static Char8 *getSName (void) { return "SFVec2d"; }
00982 static Char8 *getMName (void) { return "MFVec2d"; }
00983
00984 static Vec2d getDefault (void) { return Vec2d(); }
00985
00986 static bool getFromString( Vec2d &outVal,
00987 const Char8 *&inVal)
00988 {
00989 outVal.setValueFromCString(inVal);
00990
00991 return true;
00992 }
00993
00994 static void putToString (const Vec2d &inVal,
00995 std::string &outStr)
00996 {
00997 typedef TypeTraits<Vec2d::ValueType> TypeTrait;
00998
00999 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
01000 outStr.append(" ");
01001 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
01002 }
01003 };
01004
01005 #if !defined(OSG_DOC_DEV_TRAITS)
01006
01008 #endif
01009
01012 #if !defined(OSG_DOC_DEV_TRAITS)
01013
01014 #endif
01015
01016 template <>
01017 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec3d> :
01018 public FieldTraitsRecurseVecStore2Base<Vec3d>
01019 {
01020 static DataType _type;
01021 typedef FieldDataTraits<Vec3d> Self;
01022
01023
01024 enum { StringConvertable = Self::ToStringConvertable |
01025 Self::FromStringConvertable };
01026
01027 enum { bHasParent = 0x01 };
01028
01029 static DataType &getType (void) { return _type; }
01030
01031 static Char8 *getSName (void) { return "SFVec3d"; }
01032 static Char8 *getMName (void) { return "MFVec3d"; }
01033
01034 static Vec3d getDefault (void) { return Vec3d(); }
01035
01036 static bool getFromString( Vec3d &outVal,
01037 const Char8 *&inVal)
01038 {
01039 outVal.setValueFromCString(inVal);
01040
01041 return true;
01042 }
01043
01044 static void putToString (const Vec3d &inVal,
01045 std::string &outStr)
01046 {
01047 typedef TypeTraits<Vec3d::ValueType> TypeTrait;
01048
01049 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
01050 outStr.append(" ");
01051 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
01052 outStr.append(" ");
01053 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
01054 }
01055 };
01056
01057 #if !defined(OSG_DOC_DEV_TRAITS)
01058
01060 #endif
01061
01064 #if !defined(OSG_DOC_DEV_TRAITS)
01065
01066 #endif
01067
01068 template <>
01069 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec4d> :
01070 public FieldTraitsRecurseVecStore2Base<Vec4d>
01071 {
01072 static DataType _type;
01073 typedef FieldDataTraits<Vec4d> Self;
01074
01075
01076 enum { StringConvertable = Self::ToStringConvertable |
01077 Self::FromStringConvertable };
01078
01079 enum { bHasParent = 0x01 };
01080
01081 static DataType &getType (void) { return _type; }
01082
01083 static Char8 *getSName (void) { return "SFVec4d"; }
01084 static Char8 *getMName (void) { return "MFVec4d"; }
01085
01086 static Vec4d getDefault (void) { return Vec4d(); }
01087
01088 static bool getFromString( Vec4d &outVal,
01089 const Char8 *&inVal)
01090 {
01091 outVal.setValueFromCString(inVal);
01092
01093 return true;
01094 }
01095
01096 static void putToString (const Vec4d &inVal,
01097 std::string &outStr)
01098 {
01099 typedef TypeTraits<Vec4d::ValueType> TypeTrait;
01100
01101 outStr.assign(TypeTrait::putToString((inVal.getValues())[0]));
01102 outStr.append(" ");
01103 outStr.append(TypeTrait::putToString((inVal.getValues())[1]));
01104 outStr.append(" ");
01105 outStr.append(TypeTrait::putToString((inVal.getValues())[2]));
01106 outStr.append(" ");
01107 outStr.append(TypeTrait::putToString((inVal.getValues())[3]));
01108 }
01109 };
01110
01111 #if !defined(OSG_DOC_DEV_TRAITS)
01112
01114 #endif
01115
01116
01117
01120 #if !defined(OSG_DOC_DEV_TRAITS)
01121
01122 #endif
01123
01124 template <>
01125 struct OSG_BASE_DLLMAPPING FieldDataTraits<Vec2ld> :
01126 public FieldTraitsRecurseVecStore2Base<Vec2ld>
01127 {
01128 static DataType _type;
01129 typedef FieldDataTraits<Vec2ld> Self;
01130
01131
01132 enum { StringConvertable = Self::ToStringConvertable |
01133 Self::FromStringConvertable };
01134
01135 enum { bHasParent = 0x01 };
01136
01137 static DataType &getType (void) { return _type; }
01138
01139 static Char8 *getSName (void) { return "SFVec2ld"; }
01140 static Char8 *getMName (void) { return "MFVec2ld"; }
01141
01142 static Vec2ld getDefault (