Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

OSGVecFieldDataType.h

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *             Copyright (C) 2000-2002 by the OpenSG Forum                   *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
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   (