kfbxtypes.h

Go to the documentation of this file.
00001 
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXTYPES_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXTYPES_H
00006 
00007 /**************************************************************************************
00008 
00009  Copyright (C) 2001 - 2009 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material 
00013  (collectively the "Data") in these files contain unpublished information 
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by 
00015  Canada and United States of America federal copyright law and by international 
00016  treaties. 
00017  
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, 
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE. 
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE. 
00028  
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE. 
00039 
00040 **************************************************************************************/
00041 
00042 #include <fbxfilesdk/components/kbaselib/kaydaradef_h.h>
00043 #include <fbxfilesdk/components/kbaselib/kbaselib_forward.h>
00044 #include <fbxfilesdk/components/kbaselib/klib/kdebug.h>
00045 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00046 #include <fbxfilesdk/components/kbaselib/klib/ktime.h>
00047 
00048 #include <fbxfilesdk/kfbxplugins/kfbxcolor.h>
00049 #include <fbxfilesdk/kfbxplugins/kfbxsystemunit.h>
00050 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00051 
00052     class   KFbxSdkManager;
00053 
00054     // Type definitions
00055     typedef enum {
00056         eUNIDENTIFIED,
00057         eBYTE1,      // 8 bit int
00058         eUBYTE1,  
00059         eSHORT1,     // 16 bit int
00060         eUSHORT1,
00061         eUINTEGER1,  
00062         eLONGLONG1,  // 64 bit int
00063         eULONGLONG1,
00064         eHALFFLOAT,  // 16 bit float
00065         eBOOL1,
00066         eINTEGER1,
00067         eFLOAT1,
00068         eDOUBLE1,
00069         eDOUBLE2,
00070         eDOUBLE3,
00071         eDOUBLE4,
00072         eDOUBLE44,
00073         eENUM,
00074         eSTRING,
00075         eTIME,
00076         eREFERENCE,  // used as a port entry to reference object or properties
00077         eBLOB,
00078         eDISTANCE,
00079         eDATETIME,
00080         eMAX_TYPES,
00081     } EFbxType;
00082 
00083     // Base Type for vectors
00084     template<class T> class fbxVectorTemplate2 {
00085         public:
00086             inline fbxVectorTemplate2()                      { *this = 0;  }
00087             inline fbxVectorTemplate2(T pValue)              { *this = pValue;  }
00088             inline fbxVectorTemplate2(T pData0,T pData1)    { mData[0] = pData0; mData[1] = pData1; }
00089             inline ~fbxVectorTemplate2() {}
00090         public:
00091             inline T &operator[](int pIndex) { return mData[pIndex]; }
00092             inline T const&operator[](int pIndex) const { return mData[pIndex]; }
00093             inline fbxVectorTemplate2<T> &operator=(T const & pValue) { mData[0] = pValue; mData[1] = pValue; return *this; }
00094             inline fbxVectorTemplate2<T> &operator=(const fbxVectorTemplate2<T> & pRHS) { mData[0] = pRHS.mData[0]; mData[1] = pRHS.mData[1]; return *this; }
00095             inline bool operator==(fbxVectorTemplate2<T> const & pRHS) const { return ((mData[0] == pRHS.mData[0]) && (mData[1] == pRHS.mData[1])); }
00096             inline bool operator!=(fbxVectorTemplate2<T> const & pRHS) const { return !operator==( pRHS ); }
00097 
00098         operator T*() { return mData; }
00099         operator T const*() const { return mData; }
00100 
00101         public:
00102             T mData[2];
00103     };
00104 
00105     template<class T> class fbxVectorTemplate3 {
00106         public:
00107             inline fbxVectorTemplate3()                          { *this = 0;  }
00108             inline fbxVectorTemplate3(T pValue)                  { *this = pValue;  }
00109             inline fbxVectorTemplate3(T pData0,T pData1,T pData2) { mData[0] = pData0; mData[1] = pData1; mData[2] = pData2;  }
00110             inline ~fbxVectorTemplate3() {}
00111         public:
00112             inline T &operator[](int pIndex) { return mData[pIndex]; }
00113             inline T const&operator[](int pIndex) const { return mData[pIndex]; }
00114             inline fbxVectorTemplate3<T> &operator=(int pValue)      { mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; return *this; }
00115             inline fbxVectorTemplate3<T> &operator=(T const &pValue) { mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; return *this; }
00116             inline fbxVectorTemplate3<T> &operator=(const fbxVectorTemplate3<T> & pRHS) { mData[0] = pRHS.mData[0]; mData[1] = pRHS.mData[1]; mData[2] = pRHS.mData[2]; return *this; }
00117             inline bool operator==(fbxVectorTemplate3<T> const & pRHS) const { return ((mData[0] == pRHS.mData[0]) && (mData[1] == pRHS.mData[1]) && (mData[2] == pRHS.mData[2])); }
00118             inline bool operator!=(fbxVectorTemplate3<T> const & pRHS) const { return !operator==(pRHS); }
00119 
00120             inline operator T*() { return mData; }
00121             inline operator T const*() const { return mData; }
00122 
00123         public:
00124             T mData[3];
00125     };
00126 
00127     template<class T> class fbxVectorTemplate4 {
00128         public:
00129             inline fbxVectorTemplate4()                                     { *this = 0; }
00130             inline fbxVectorTemplate4(T pValue)                             { *this = pValue; }
00131             inline fbxVectorTemplate4(T pData0,T pData1,T pData2,T pData3)  { mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; mData[3] = pData3;   }
00132             inline ~fbxVectorTemplate4() {}
00133         public:
00134             inline T &operator[](int pIndex) { return mData[pIndex]; }
00135             inline operator fbxVectorTemplate3<T>& () const { return *((fbxVectorTemplate3<T> *)this); }
00136             inline T const&operator[](int pIndex) const { return mData[pIndex]; }
00137             inline fbxVectorTemplate4<T> &operator=(int pValue)                          { mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; mData[3] = pValue; return *this; }
00138             inline fbxVectorTemplate4<T> &operator=(T const &pValue)                     { mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; mData[3] = pValue; return *this; }
00139             inline fbxVectorTemplate4<T> &operator=(fbxVectorTemplate3<T> const &pValue) { mData[0] = pValue[0]; mData[1] = pValue[1]; mData[2] = pValue[2]; return *this; }
00140             inline fbxVectorTemplate4<T> &operator=(const fbxVectorTemplate4<T> & pRHS) { mData[0] = pRHS.mData[0]; mData[1] = pRHS.mData[1]; mData[2] = pRHS.mData[2]; mData[3] = pRHS.mData[3]; return *this; }
00141             inline bool operator==(fbxVectorTemplate4<T> const & pRHS) const { return ((mData[0] == pRHS.mData[0]) && (mData[1] == pRHS.mData[1]) && (mData[2] == pRHS.mData[2]) && (mData[3] == pRHS.mData[3])); }
00142             inline bool operator!=(fbxVectorTemplate4<T> const & pRHS) const { return !operator==( pRHS ); }
00143             inline operator T*() { return mData; }
00144             inline operator T const*() const { return mData; }
00145 
00146         public:
00147             T mData[4];
00148     };
00149     
00150 
00155     class KFBX_DLL fbxBlob {
00156         public:
00161 
00163             inline fbxBlob()                              { mData = 0; mSize = 0; mRefCount = 0; }
00164 
00168                    fbxBlob(int pSize);
00169 
00173             inline fbxBlob(const fbxBlob & pRHS)          { mData = 0; mSize = 0; mRefCount = 0; *this = pRHS; }
00174 
00179             inline fbxBlob(const void * pData, int pSize) { mData = 0; mSize = 0; mRefCount = 0; Assign(pData,pSize); }
00180 
00182             ~fbxBlob();
00183 
00185         public:
00190 
00195                    fbxBlob &operator=(fbxBlob const &pValue);
00196 
00201                    void Assign(const void * pData, int pSize);  // Always makes a copy.
00203 
00208 
00213                    bool operator==(fbxBlob const & pRHS) const; // Compare the contents.
00214 
00219             inline bool operator!=(fbxBlob const & pRHS) const { return !operator==( pRHS ); }
00221 
00223                    void * Modify(); 
00224 
00229             
00233                    const void * Access() const { return mData; }
00234 
00238                    inline int Size() const { return mSize; }
00240 
00242                    void Clear(); 
00243 
00244         protected:
00245             int *   mRefCount;
00246             void *  mData;
00247             int     mSize;
00248 
00249     };
00250 
00254     class KFBX_DLL fbxDistance {
00255         public:
00260             
00262             fbxDistance(): mUnit(1.0), mValue(0.0) {  }
00263 
00268             fbxDistance(float pValue, KFbxSystemUnit pUnit): mUnit(1.0), mValue(0.0) {
00269                 mValue = pValue;
00270                 mUnit = pUnit;
00271             }
00272             
00278             fbxDistance(float pValue, const char* pUnit);
00279 
00281             ~fbxDistance() {  }
00282 
00284         public:
00285 
00290             
00295             fbxDistance &operator=(fbxDistance const& pValue) {
00296                         mValue = pValue.mValue;
00297                         mUnit = pValue.mUnit;
00298                         return *this;
00299             }
00301             
00306 
00311             bool operator==(fbxDistance const & pRHS) const { return ( (mValue == pRHS.mValue) && (mUnit == pRHS.mUnit) ); }
00312 
00317             bool operator!=(fbxDistance const& pRHS) const { return !operator==(pRHS); }
00319 
00320             
00321             KString const unitName() const    {   return mUnit.GetScaleFactorAsString();    }
00322 
00327 
00331             KFbxSystemUnit const unit() const   {   return mUnit;  }
00332 
00336             float const value() const   {   return mValue;  }
00338 
00342             float const internalValue() const {
00343                 KFbxSystemUnit internalUnit(KFbxSystemUnit::Inch);
00344                 float internalValue = (float)(mValue * mUnit.GetConversionFactorTo(internalUnit));
00345                 return internalValue;
00346             }
00347 
00352             float const valueAs( KFbxSystemUnit const& pUnit ) const
00353             {
00354                 float convertedValue = (float)(mValue * mUnit.GetConversionFactorTo(pUnit));
00355                 return convertedValue;
00356             }
00357 
00358         private:
00359             float               mValue;
00360             KFbxSystemUnit      mUnit;
00361         };
00362 
00363     
00364        
00365     
00366 
00374     class KFBX_DLL fbxDateTime
00375     {
00376     public:
00377         kShort mMillisecond;            // 0-999
00378         kShort mYear;                   // No check
00379 
00380         kByte  mMonth;                  // 1-12
00381         kByte  mDay;                    // 1-31; no check with regards to the month
00382         kByte  mHour;                   // 0-23
00383         kByte  mMinute;                 // 0-59
00384         kByte  mSecond;                 // 0-59
00385 
00386     public:
00391        
00393         fbxDateTime() { Clear(); }
00394 
00404         fbxDateTime(int pDay, int pMonth, int pYear, int pHour, int pMin, int pSec, int pMillisecond = 0);
00405 
00407 
00412 
00417         bool operator==(const fbxDateTime& pRHS) const;
00418 
00423         bool operator!=(const fbxDateTime& pRHS) const
00424         {
00425             return !(*this == pRHS); 
00426         }
00428 
00430         void Clear()
00431         {
00432             mMillisecond = mYear = 0;
00433             mMonth = mDay = mHour = mMinute = mSecond = 0;
00434         }
00435 
00436         
00440         bool isValid() const;
00441 
00442     
00443        
00453         void setDate(int pDay, int pMonth, int pYear);
00454 
00461         void setTime(int pHour, int pMin, int pSec, int pMillisecond = 0);
00463 
00464 
00470 
00474         KString toString() const;
00475 
00482         bool fromString(const char*);
00484        
00488         static fbxDateTime currentDateTimeGMT();
00489     };
00490 
00498     class KFBX_DLL fbxHalfFloat
00499     {
00500     public:
00505             fbxHalfFloat()                          { mValue = 0; }
00506             fbxHalfFloat(float pVal)                { mValue = FtoHF(&pVal); }
00507             fbxHalfFloat(const fbxHalfFloat& pVal)  { mValue = pVal.mValue; }
00509 
00514         
00519         fbxHalfFloat &operator=(fbxHalfFloat const& pValue) 
00520         { 
00521             mValue = pValue.mValue;
00522             return *this;
00523         }
00525         
00530 
00535         bool operator==(fbxHalfFloat const & pRHS) const { return (mValue == pRHS.mValue); }
00536 
00541         bool operator!=(fbxHalfFloat const& pRHS) const { return !operator==(pRHS); }
00543 
00550         float const value() const   { return HFtoF(mValue);  }
00551 
00554         unsigned short const internal_value() const { return mValue; }
00556 
00557     private:
00558         typedef unsigned short half;
00559         half mValue;
00560 
00561         // we want to extract the mantissa, exponent and sign from the float number.
00562         // by the IEEE 754 binary standard, the float number is divided as: 
00563         //        sign          : 1 bit
00564         //        mantissa      : 23 bits
00565         //        exponent      : 8 bits
00566         //        exponent bias : 127
00567         // and the half-float is:
00568         //        sing          : 1 bit
00569         //        mantissa      : 10 bits
00570         //        exponent      : 5 bits
00571         //        exponent bias :
00572 
00573         half FtoHF(float *f)
00574         {
00575             half         h;
00576             unsigned int p = *(unsigned int *)f;
00577             unsigned int s = (p >> 31);
00578             unsigned int e = p & 0x7F800000;
00579             unsigned int m = p & 0x007FFFFF;
00580                   
00581             // the exponent of the received float will not fit in the 5 bits of
00582             // the half ? Either is > 15 or < -14
00583             if (e >= 0x47800000) // > 15
00584             {
00585                 // If the original float is a Nan, make the half a Nan too
00586                 // else make Inf
00587                 m = (m != 0 && (e==0x7F800000)) ? ((1 << 23) - 1) : 0;
00588                 h = (((half)s) << 15) | (half)((0x1F << 10)) | (half)(m >> 13);
00589             }
00590             else 
00591             if (e <= 0x38000000) // <= -15
00592             {
00593                 // denormalized, or 0 number.
00594                 e = (0x38000000 - e) >> 23;
00595                 m >>= (14 + e);
00596                 h = (((half)s) << 15) | (half)(m);
00597             }
00598             else
00599             {
00600                 // straight forward case
00601                 h = (((half)s) << 15) | (half)((e-0x38000000) >> 13) | (half)(m >> 13);
00602             }
00603             return h;
00604         }
00605 
00606         float HFtoF(half h) const
00607         {
00608             unsigned int f;
00609             unsigned int s = (unsigned int)(h>>15);
00610             unsigned int e = (unsigned int)(h&0x7C00);
00611             unsigned int m = (unsigned int)(h&0x03FF);
00612             
00613             if (e == 0x7C00)
00614             {
00615                 // we have a half-float NaN or Inf, we convert to a float Nan or Inf
00616                 e = (0xFF<<23);
00617                 if (m != 0) m = ((1<<23)-1); 
00618             }
00619             else 
00620             if (e == 0x00000000)
00621             {
00622                 // denormalized or 0
00623                 if (m != 0)
00624                 {
00625                    m <<= 1;
00626                    e = 0x38000000;
00627                    while ((m&(1<<10)) == 0)
00628                    {
00629                        m <<= 1;
00630                        e -= (1<<23);
00631                     }
00632                     m &= ((1<<10)-1); // keep the mantissa on 10 bits
00633                     m <<= 13; // and now shift it on 23 bits
00634                 }
00635             }
00636             else
00637             {
00638                 m <<= 13; // mantissa on 23 bits
00639                 e = (e<<13) + 0x38000000;
00640             }
00641 
00642             f = (s<<31)|e|m;
00643             return *((float *)&f);
00644         }
00645     };
00646 
00647     // Corresponding C Types
00648     typedef char                                fbxByte1;
00649     typedef unsigned char                       fbxUByte1;
00650     typedef short                               fbxShort1;
00651     typedef unsigned short                      fbxUShort1;
00652     typedef unsigned int                        fbxUInteger1;
00653 #if defined(KARCH_DEV_MSC) && !defined(KARCH_DEV_INTEL)
00654     typedef signed __int64                      fbxLongLong1;
00655     typedef unsigned __int64                    fbxULongLong1;
00656 #else
00657     typedef signed long long                    fbxLongLong1;
00658     typedef unsigned long long                  fbxULongLong1;
00659 #endif
00660     typedef bool                                fbxBool1;
00661     typedef int                                 fbxInteger1;
00662     typedef float                               fbxFloat1;
00663     typedef double                              fbxDouble1;
00664     typedef fbxVectorTemplate2<double>          fbxDouble2;
00665     typedef fbxVectorTemplate3<double>          fbxDouble3;
00666     typedef fbxVectorTemplate4<double>          fbxDouble4;
00667     typedef fbxVectorTemplate4<fbxDouble4>      fbxDouble44;
00668     typedef int                                 fbxEnum;
00669     typedef KString                             fbxString;
00670     typedef KTime                               fbxTime;
00671     typedef fbxBlob                             KFbxBlob;
00672     class                                       fbxReference {}; // void type for references
00673     typedef fbxDistance                         KFbxDistance;
00674 
00675     // Type memory footprint
00676     const size_t FbxTypeSizeOf[eMAX_TYPES] = {
00677         0,
00678         sizeof(fbxByte1),
00679         sizeof(fbxUByte1),
00680         sizeof(fbxShort1),
00681         sizeof(fbxUShort1),
00682         sizeof(fbxUInteger1),
00683         sizeof(fbxLongLong1),
00684         sizeof(fbxULongLong1),
00685         sizeof(fbxHalfFloat),
00686         sizeof(fbxBool1),
00687         sizeof(fbxInteger1),
00688         sizeof(fbxFloat1),
00689         sizeof(fbxDouble1),
00690         sizeof(fbxDouble2),
00691         sizeof(fbxDouble3),
00692         sizeof(fbxDouble4),
00693         sizeof(fbxDouble44),
00694         sizeof(fbxEnum),
00695         sizeof(fbxString),
00696         sizeof(fbxTime),
00697         sizeof(fbxReference),
00698         sizeof(fbxBlob),
00699         sizeof(fbxDistance),
00700         sizeof(fbxDateTime)
00701     };
00702 
00703     // Type management for properties
00704     template <class T> inline EFbxType FbxTypeOf( T const &pItem ) { K_ASSERT_MSG_NOW("Unknown type" ); return eUNIDENTIFIED; }
00705 
00706     inline EFbxType FbxTypeOf( fbxByte1 const &pItem )      { return eBYTE1;      }
00707     inline EFbxType FbxTypeOf( fbxUByte1 const &pItem )     { return eUBYTE1;     }
00708     inline EFbxType FbxTypeOf( fbxShort1 const &pItem )     { return eSHORT1;     }
00709     inline EFbxType FbxTypeOf( fbxUShort1 const &pItem )    { return eUSHORT1;    }
00710     inline EFbxType FbxTypeOf( fbxUInteger1 const &pItem )  { return eUINTEGER1;  }
00711     inline EFbxType FbxTypeOf( fbxLongLong1 const &pItem )  { return eLONGLONG1;  }
00712     inline EFbxType FbxTypeOf( fbxULongLong1 const &pItem ) { return eULONGLONG1; }
00713     inline EFbxType FbxTypeOf( fbxHalfFloat const &pItem )  { return eHALFFLOAT;  }
00714     inline EFbxType FbxTypeOf( fbxBool1 const &pItem )      { return eBOOL1;      }
00715     inline EFbxType FbxTypeOf( fbxInteger1 const &pItem )   { return eINTEGER1;   }
00716     inline EFbxType FbxTypeOf( fbxFloat1 const &pItem )     { return eFLOAT1;     }
00717     inline EFbxType FbxTypeOf( fbxDouble1 const &pItem )    { return eDOUBLE1;    }
00718     inline EFbxType FbxTypeOf( fbxDouble2 const &pItem )    { return eDOUBLE2;    }
00719     inline EFbxType FbxTypeOf( fbxDouble3 const &pItem )    { return eDOUBLE3;    }
00720     inline EFbxType FbxTypeOf( fbxDouble4 const &pItem )    { return eDOUBLE4;    }
00721     inline EFbxType FbxTypeOf( fbxDouble44 const &pItem )   { return eDOUBLE44;   }
00722 //  inline EFbxType FbxTypeOf( fbxEnum const &pItem )       { return eENUM;       }
00723     inline EFbxType FbxTypeOf( fbxString const &pItem )     { return eSTRING;     }
00724     inline EFbxType FbxTypeOf( fbxTime  const &pItem )      { return eTIME;       }
00725     inline EFbxType FbxTypeOf( fbxReference const &pItem )  { return eREFERENCE;  }
00726     inline EFbxType FbxTypeOf( fbxBlob const &pItem )       { return eBLOB;       }
00727     inline EFbxType FbxTypeOf( fbxDistance const &pItem)    { return eDISTANCE;   }
00728     inline EFbxType FbxTypeOf( fbxDateTime const &pItem)    { return eDATETIME;   }
00729 
00730     // To overcome VC6/net2002 compiler bugs I need a function with a different
00731     // prototype than FbxTypeOf( T const &pItem ) but rather that struggling to
00732     // find the correct prototype, we simply define a different function.
00733     // Since I need it in the LayerElement classes only to properly handle the
00734     // KFbxSurfaceMaterial*, KFbxTexure* and kReference* types, It is not a
00735     // big deal to have this duplicata of function. However, when the LayerElement
00736     // stuff is converted to properties, this set of function SHOULD be deleted.
00737     template <class T> inline EFbxType _FbxTypeOf( T* const &pItem) { return eREFERENCE; }
00738     inline EFbxType _FbxTypeOf( fbxByte1 const &pItem )      { return eBYTE1;      }
00739     inline EFbxType _FbxTypeOf( fbxUByte1 const &pItem )     { return eUBYTE1;     }
00740     inline EFbxType _FbxTypeOf( fbxShort1 const &pItem )     { return eSHORT1;     }
00741     inline EFbxType _FbxTypeOf( fbxUShort1 const &pItem )    { return eUSHORT1;    }
00742     inline EFbxType _FbxTypeOf( fbxUInteger1 const &pItem )  { return eUINTEGER1;  }
00743     inline EFbxType _FbxTypeOf( fbxLongLong1 const &pItem )  { return eLONGLONG1;  }
00744     inline EFbxType _FbxTypeOf( fbxULongLong1 const &pItem ) { return eULONGLONG1; }
00745     inline EFbxType _FbxTypeOf( fbxHalfFloat const &pItem )  { return eHALFFLOAT;  }
00746     inline EFbxType _FbxTypeOf( fbxBool1 const &pItem )      { return eBOOL1;      }
00747     inline EFbxType _FbxTypeOf( fbxInteger1 const &pItem )   { return eINTEGER1;   }
00748     inline EFbxType _FbxTypeOf( fbxFloat1 const &pItem )     { return eFLOAT1;     }
00749     inline EFbxType _FbxTypeOf( fbxDouble1 const &pItem )    { return eDOUBLE1;    }
00750     inline EFbxType _FbxTypeOf( fbxDouble2 const &pItem )    { return eDOUBLE2;    }
00751     inline EFbxType _FbxTypeOf( fbxDouble3 const &pItem )    { return eDOUBLE3;    }
00752     inline EFbxType _FbxTypeOf( fbxDouble4 const &pItem )    { return eDOUBLE4;    }
00753     inline EFbxType _FbxTypeOf( fbxDouble44 const &pItem )   { return eDOUBLE44;   }
00754 //  inline EFbxType _FbxTypeOf( fbxEnum const &pItem )       { return eENUM;       }
00755     inline EFbxType _FbxTypeOf( fbxString const &pItem )     { return eSTRING;     }
00756     inline EFbxType _FbxTypeOf( fbxTime const &pItem )       { return eTIME;       }
00757     inline EFbxType _FbxTypeOf( fbxReference const &pItem )  { return eREFERENCE;  }
00758     inline EFbxType _FbxTypeOf( fbxBlob const &pItem )       { return eBLOB;       }
00759     inline EFbxType _FbxTypeOf( KFbxColor   const &pItem )   { return eDOUBLE4;    }
00760     inline EFbxType _FbxTypeOf( fbxDistance const &pItem )   { return eDISTANCE;   }
00761     inline EFbxType _FbxTypeOf( fbxDateTime const &pItem )   { return eDATETIME;   }
00762 
00763     // Additional types
00764     inline EFbxType FbxTypeOf( KFbxColor    const &pItem )  { return eDOUBLE4; }
00765 
00766     // internal type management
00767 //  template< class T1,class T2,class T3 > inline bool internalfbxCopy1To3 ( T1 &pDst,T2 const &pSrc ) { pDst[0] = (T3)pSrc; pDst[1] = (T3)pSrc; pDst[2] = (T3)pSrc; return true; }
00768 /*  template< class T1,class T2 > inline bool internalfbxCopy  ( T1 &pDst,T2 const &pSrc ) { pDst    = (T1)pSrc; return true; }
00769     template< class T1,class T2 > inline bool internalfbxCopy2 ( T1 &pDst,T2 const &pSrc ) { pDst[0] = (T1)pSrc[0]; pDst[1] = (T1)pSrc[1]; return true; }
00770     template< class T1,class T2 > inline bool internalfbxCopy3 ( T1 &pDst,T2 const &pSrc ) { pDst[0] = (T1)pSrc[0]; pDst[1] = (T1)pSrc[1]; pDst[2] = (T1)pSrc[2]; return true; }
00771     template< class T1,class T2 > inline bool internalfbxCopy4 ( T1 &pDst,T2 const &pSrc ) { pDst[0] = (T1)pSrc[0]; pDst[1] = (T1)pSrc[1]; pDst[2] = (T1)pSrc[2]; pDst[3] = (T1)pSrc[3]; return true; }
00772 */
00773     bool KFBX_DLL fbxCopyStr( fbxDouble1& pDst,  fbxString const& pSrc );
00774     bool KFBX_DLL fbxCopyStr( fbxBool1& pDst,    fbxString const& pSrc );
00775     bool KFBX_DLL fbxCopyStr( fbxInteger1& pDst, fbxString const& pSrc );
00776     bool KFBX_DLL fbxCopyStr( fbxByte1& pDst, fbxString const& pSrc );
00777     bool KFBX_DLL fbxCopyStr( fbxUByte1& pDst, fbxString const& pSrc );
00778     bool KFBX_DLL fbxCopyStr( fbxShort1& pDst, fbxString const& pSrc );
00779     bool KFBX_DLL fbxCopyStr( fbxUShort1& pDst, fbxString const& pSrc );
00780     bool KFBX_DLL fbxCopyStr( fbxUInteger1& pDst, fbxString const& pSrc );
00781     bool KFBX_DLL fbxCopyStr( fbxLongLong1& pDst, fbxString const& pSrc );
00782     bool KFBX_DLL fbxCopyStr( fbxULongLong1& pDst, fbxString const& pSrc );
00783     bool KFBX_DLL fbxCopyStr( fbxHalfFloat& pDst,  fbxString const& pSrc );
00784 
00785     // Copy types and conversions
00786     template< class T1,class T2 > inline bool fbxCopy ( T1 &pDst,T2 const &pSrc ) { K_ASSERT_MSG_NOW("Incompatible type assigment" ); return false; }
00787 
00788     // Copy Types and Conversions
00789     inline bool fbxCopy( fbxByte1 &pDst,fbxByte1 const &pSrc )          { pDst=pSrc; return true; }
00790     inline bool fbxCopy( fbxUByte1 &pDst,fbxUByte1 const &pSrc )        { pDst=pSrc; return true; }
00791     inline bool fbxCopy( fbxShort1 &pDst,fbxShort1 const &pSrc )        { pDst=pSrc; return true; }
00792     inline bool fbxCopy( fbxUShort1 &pDst,fbxUShort1 const &pSrc )      { pDst=pSrc; return true; }
00793     inline bool fbxCopy( fbxUInteger1 &pDst,fbxUInteger1 const &pSrc )  { pDst=pSrc; return true; }
00794     inline bool fbxCopy( fbxLongLong1 &pDst,fbxLongLong1 const &pSrc )  { pDst=pSrc; return true; }
00795     inline bool fbxCopy( fbxULongLong1 &pDst,fbxULongLong1 const &pSrc ){ pDst=pSrc; return true; }
00796     inline bool fbxCopy( fbxHalfFloat &pDst, fbxHalfFloat const &pSrc ) { pDst=pSrc; return true; }
00797     inline bool fbxCopy( fbxBool1 &pDst,fbxBool1 const &pSrc )          { pDst=pSrc; return true; }
00798     inline bool fbxCopy( fbxInteger1 &pDst,fbxInteger1 const &pSrc )    { pDst=pSrc; return true; }
00799     inline bool fbxCopy( fbxFloat1 &pDst,fbxFloat1 const &pSrc )        { pDst=pSrc; return true; }
00800     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble1 const &pSrc )      { pDst=pSrc; return true; }
00801     inline bool fbxCopy( fbxDouble2 &pDst,fbxDouble2 const &pSrc )      { pDst=pSrc; return true; }
00802     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble3 const &pSrc )      { pDst=pSrc; return true; }
00803     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble4 const &pSrc )      { pDst=pSrc; return true; }
00804     inline bool fbxCopy( fbxDouble44 &pDst,fbxDouble44 const &pSrc )    { pDst=pSrc; return true; }
00805 //  inline bool fbxCopy( fbxEnum &pDst,fbxEnum const &pSrc )            { pDst=pSrc; return true; }
00806     inline bool fbxCopy( fbxString &pDst,fbxString const &pSrc )        { pDst=pSrc; return true; }
00807     inline bool fbxCopy( fbxTime &pDst,fbxTime const &pSrc )            { pDst=pSrc; return true; }
00808     inline bool fbxCopy( fbxReference &pDst,fbxReference const &pSrc )  { pDst=pSrc; return true; }
00809     inline bool fbxCopy( fbxBlob &pDst,fbxBlob const &pSrc )            { pDst=pSrc; return true; }
00810     inline bool fbxCopy( fbxDistance &pDst, fbxDistance const &pSrc )   { pDst=pSrc; return true; }
00811     inline bool fbxCopy( fbxDateTime &pDst, fbxDateTime const &pSrc )   { pDst=pSrc; return true; }
00812 
00813     // To FbxBool
00814     inline bool fbxCopy( fbxBool1 &pDst,fbxByte1 const &pSrc )          { pDst   = pSrc == 0 ? false : true; return true; }
00815     inline bool fbxCopy( fbxBool1 &pDst,fbxUByte1 const &pSrc )         { pDst   = pSrc == 0 ? false : true; return true; }
00816     inline bool fbxCopy( fbxBool1 &pDst,fbxShort1 const &pSrc )         { pDst   = pSrc == 0 ? false : true; return true; }
00817     inline bool fbxCopy( fbxBool1 &pDst,fbxUShort1 const &pSrc )        { pDst   = pSrc == 0 ? false : true; return true; }
00818     inline bool fbxCopy( fbxBool1 &pDst,fbxUInteger1 const &pSrc )      { pDst   = pSrc == 0 ? false : true; return true; }
00819     inline bool fbxCopy( fbxBool1 &pDst,fbxLongLong1 const &pSrc )      { pDst   = pSrc == 0 ? false : true; return true; }
00820     inline bool fbxCopy( fbxBool1 &pDst,fbxULongLong1 const &pSrc )     { pDst   = pSrc == 0 ? false : true; return true; }
00821     inline bool fbxCopy( fbxBool1 &pDst,fbxHalfFloat const &pSrc )      { return false; }
00822 //  inline bool fbxCopy( fbxBool1 &pDst,fbxBool1 const &pSrc )          { pDst   = (fbxBool1)pSrc; return true; }
00823     inline bool fbxCopy( fbxBool1 &pDst,fbxInteger1 const &pSrc )       { pDst   = pSrc == 0 ? false : true; return true; }
00824     inline bool fbxCopy( fbxBool1 &pDst,fbxFloat1 const &pSrc )         { pDst   = pSrc == 0.f ? false : true; return true; }
00825     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble1 const &pSrc )        { pDst   = pSrc == 0. ? false : true; return true; }
00826     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble2 const &pSrc )        { return false; }
00827     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble3 const &pSrc )        { return false; }
00828     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble4 const &pSrc )        { return false; }
00829     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble44 const &pSrc )       { return false; }
00830 //  inline bool fbxCopy( fbxBool1 &pDst,fbxEnum const &pSrc )           { return false; }
00831     inline bool fbxCopy( fbxBool1 &pDst,fbxString const &pSrc )         { return fbxCopyStr(pDst,pSrc); }
00832     inline bool fbxCopy( fbxBool1 &pDst,fbxTime const &pSrc )           { return false; }
00833     inline bool fbxCopy( fbxBool1 &pDst,fbxReference const &pSrc )      { return false; }
00834     inline bool fbxCopy( fbxBool1 &pDst,fbxBlob const &pSrc )           { return false; }
00835     inline bool fbxCopy( fbxBool1 &pDst, fbxDistance const &pSrc )      { return false; }
00836     inline bool fbxCopy( fbxBool1 &pDst, fbxDateTime const &pSrc )      { return false; }
00837 
00838     // To FbxByte
00839     //inline bool fbxCopy( fbxByte1 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxByte1)pSrc; return true; }
00840     inline bool fbxCopy( fbxByte1 &pDst,fbxUByte1 const &pSrc )         { pDst   = (fbxByte1)pSrc; return true; }
00841     inline bool fbxCopy( fbxByte1 &pDst,fbxShort1 const &pSrc )         { return false; }
00842     inline bool fbxCopy( fbxByte1 &pDst,fbxUShort1 const &pSrc )        { return false; }
00843     inline bool fbxCopy( fbxByte1 &pDst,fbxUInteger1 const &pSrc )      { return false; }
00844     inline bool fbxCopy( fbxByte1 &pDst,fbxLongLong1 const &pSrc )      { return false; }
00845     inline bool fbxCopy( fbxByte1 &pDst,fbxULongLong1 const &pSrc )     { return false; }
00846     inline bool fbxCopy( fbxByte1 &pDst,fbxHalfFloat const &pSrc )      { return false; }
00847     inline bool fbxCopy( fbxByte1 &pDst,fbxBool1 const &pSrc )          { pDst   = (fbxByte1)pSrc; return true; }
00848     inline bool fbxCopy( fbxByte1 &pDst,fbxInteger1 const &pSrc )       { pDst   = (fbxByte1)pSrc; return true; }
00849     inline bool fbxCopy( fbxByte1 &pDst,fbxFloat1 const &pSrc )         { pDst   = (fbxByte1)pSrc; return true; }
00850     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble1 const &pSrc )        { pDst   = (fbxByte1)pSrc; return true; }
00851     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble2 const &pSrc )        { return false; }
00852     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble3 const &pSrc )        { return false; }
00853     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble4 const &pSrc )        { return false; }
00854     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble44 const &pSrc )       { return false; }
00855 //  inline bool fbxCopy( fbxByte1 &pDst,fbxEnum const &pSrc )           { return false; }
00856     inline bool fbxCopy( fbxByte1 &pDst,fbxString const &pSrc )         { return fbxCopyStr(pDst,pSrc); }
00857     inline bool fbxCopy( fbxByte1 &pDst,fbxTime const &pSrc )           { return false; }
00858     inline bool fbxCopy( fbxByte1 &pDst,fbxReference const &pSrc )      { return false; }
00859     inline bool fbxCopy( fbxByte1 &pDst,fbxBlob const &pSrc )           { return false; }
00860     inline bool fbxCopy( fbxByte1 &pDst,fbxDistance const &pSrc )       { return false; }
00861     inline bool fbxCopy( fbxByte1 &pDst,fbxDateTime const &pSrc )       { return false; }
00862 
00863     // To FbxUByte
00864     inline bool fbxCopy( fbxUByte1 &pDst,fbxByte1 const &pSrc )         { pDst   = (fbxUByte1)pSrc; return true; }
00865 //  inline bool fbxCopy( fbxUByte1 &pDst,fbxUByte1 const &pSrc )        { pDst   = (fbxUByte1)pSrc; return true; }
00866     inline bool fbxCopy( fbxUByte1 &pDst,fbxShort1 const &pSrc )        { return false; }
00867     inline bool fbxCopy( fbxUByte1 &pDst,fbxUShort1 const &pSrc )       { return false; }
00868     inline bool fbxCopy( fbxUByte1 &pDst,fbxUInteger1 const &pSrc )     { return false; }
00869     inline bool fbxCopy( fbxUByte1 &pDst,fbxLongLong1 const &pSrc )     { return false; }
00870     inline bool fbxCopy( fbxUByte1 &pDst,fbxULongLong1 const &pSrc )    { return false; }
00871     inline bool fbxCopy( fbxUByte1 &pDst,fbxHalfFloat const &pSrc )     { return false; }
00872     inline bool fbxCopy( fbxUByte1 &pDst,fbxBool1 const &pSrc )         { pDst   = (fbxUByte1)pSrc; return true; }
00873     inline bool fbxCopy( fbxUByte1 &pDst,fbxInteger1 const &pSrc )      { pDst   = (fbxUByte1)pSrc; return true; }
00874     inline bool fbxCopy( fbxUByte1 &pDst,fbxFloat1 const &pSrc )        { pDst   = (fbxUByte1)pSrc; return true; }
00875     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble1 const &pSrc )       { pDst   = (fbxUByte1)pSrc; return true; }
00876     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble2 const &pSrc )       { return false; }
00877     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble3 const &pSrc )       { return false; }
00878     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble4 const &pSrc )       { return false; }
00879     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble44 const &pSrc )      { return false; }
00880 //  inline bool fbxCopy( fbxUByte1 &pDst,fbxEnum const &pSrc )          { return false; }
00881     inline bool fbxCopy( fbxUByte1 &pDst,fbxString const &pSrc )        { return fbxCopyStr(pDst,pSrc); }
00882     inline bool fbxCopy( fbxUByte1 &pDst,fbxTime const &pSrc )          { return false; }
00883     inline bool fbxCopy( fbxUByte1 &pDst,fbxReference const &pSrc )     { return false; }
00884     inline bool fbxCopy( fbxUByte1 &pDst,fbxBlob const &pSrc )          { return false; }
00885     inline bool fbxCopy( fbxUByte1 &pDst,fbxDistance const &pSrc )      { return false; }
00886     inline bool fbxCopy( fbxUByte1 &pDst,fbxDateTime const &pSrc )      { return false; }
00887 
00888     // To FbxShort
00889     inline bool fbxCopy( fbxShort1 &pDst,fbxByte1 const &pSrc )         { pDst   = (fbxShort1)pSrc; return true; }
00890     inline bool fbxCopy( fbxShort1 &pDst,fbxUByte1 const &pSrc )        { pDst   = (fbxShort1)pSrc; return true; }
00891 //  inline bool fbxCopy( fbxShort1 &pDst,fbxShort1 const &pSrc )        { pDst   = (fbxShort1)pSrc; return true; }
00892     inline bool fbxCopy( fbxShort1 &pDst,fbxUShort1 const &pSrc )       { return false; }
00893     inline bool fbxCopy( fbxShort1 &pDst,fbxUInteger1 const &pSrc )     { return false; }
00894     inline bool fbxCopy( fbxShort1 &pDst,fbxLongLong1 const &pSrc )     { return false; }
00895     inline bool fbxCopy( fbxShort1 &pDst,fbxULongLong1 const &pSrc )    { return false; }
00896     inline bool fbxCopy( fbxShort1 &pDst,fbxHalfFloat const &pSrc )     { return false; }
00897     inline bool fbxCopy( fbxShort1 &pDst,fbxBool1 const &pSrc )         { pDst   = (fbxShort1)pSrc; return true; }
00898     inline bool fbxCopy( fbxShort1 &pDst,fbxInteger1 const &pSrc )      { pDst   = (fbxShort1)pSrc; return true; }
00899     inline bool fbxCopy( fbxShort1 &pDst,fbxFloat1 const &pSrc )        { pDst   = (fbxShort1)pSrc; return true; }
00900     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble1 const &pSrc )       { pDst   = (fbxShort1)pSrc; return true; }
00901     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble2 const &pSrc )       { return false; }
00902     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble3 const &pSrc )       { return false; }
00903     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble4 const &pSrc )       { return false; }
00904     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble44 const &pSrc )      { return false; }
00905 //  inline bool fbxCopy( fbxShort1 &pDst,fbxEnum const &pSrc )          { return false; }
00906     inline bool fbxCopy( fbxShort1 &pDst,fbxString const &pSrc )        { return fbxCopyStr(pDst,pSrc); }
00907     inline bool fbxCopy( fbxShort1 &pDst,fbxTime const &pSrc )          { return false; }
00908     inline bool fbxCopy( fbxShort1 &pDst,fbxReference const &pSrc )     { return false; }
00909     inline bool fbxCopy( fbxShort1 &pDst,fbxBlob const &pSrc )          { return false; }
00910     inline bool fbxCopy( fbxShort1 &pDst,fbxDistance const &pSrc )      { return false; }
00911     inline bool fbxCopy( fbxShort1 &pDst,fbxDateTime const &pSrc )      { return false; }
00912 
00913     // To FbxUShort
00914     inline bool fbxCopy( fbxUShort1 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxUShort1)pSrc; return true; }
00915     inline bool fbxCopy( fbxUShort1 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxUShort1)pSrc; return true; }
00916     inline bool fbxCopy( fbxUShort1 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxUShort1)pSrc; return true; }
00917 //  inline bool fbxCopy( fbxUShort1 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxUShort1)pSrc; return true; }
00918     inline bool fbxCopy( fbxUShort1 &pDst,fbxUInteger1 const &pSrc )    { return false; }
00919     inline bool fbxCopy( fbxUShort1 &pDst,fbxLongLong1 const &pSrc )    { return false; }
00920     inline bool fbxCopy( fbxUShort1 &pDst,fbxULongLong1 const &pSrc )   { return false; }
00921     inline bool fbxCopy( fbxUShort1 &pDst,fbxHalfFloat const &pSrc )    { return false; }
00922     inline bool fbxCopy( fbxUShort1 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxUShort1)pSrc; return true; }
00923     inline bool fbxCopy( fbxUShort1 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxUShort1)pSrc; return true; }
00924     inline bool fbxCopy( fbxUShort1 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxUShort1)pSrc; return true; }
00925     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble1 const &pSrc )      { pDst   = (fbxUShort1)pSrc; return true; }
00926     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble2 const &pSrc )      { return false; }
00927     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble3 const &pSrc )      { return false; }
00928     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble4 const &pSrc )      { return false; }
00929     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble44 const &pSrc )     { return false; }
00930 //  inline bool fbxCopy( fbxUShort1 &pDst,fbxEnum const &pSrc )         { return false; }
00931     inline bool fbxCopy( fbxUShort1 &pDst,fbxString const &pSrc )       { return fbxCopyStr(pDst,pSrc); }
00932     inline bool fbxCopy( fbxUShort1 &pDst,fbxTime const &pSrc )         { return false; }
00933     inline bool fbxCopy( fbxUShort1 &pDst,fbxReference const &pSrc )    { return false; }
00934     inline bool fbxCopy( fbxUShort1 &pDst,fbxBlob const &pSrc )         { return false; }
00935     inline bool fbxCopy( fbxUShort1 &pDst,fbxDistance const &pSrc )     { return false; }
00936     inline bool fbxCopy( fbxUShort1 &pDst,fbxDateTime const &pSrc )     { return false; }
00937 
00938     // To FbxInteger1
00939     inline bool fbxCopy( fbxInteger1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxInteger1)pSrc; return true; }
00940     inline bool fbxCopy( fbxInteger1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxInteger1)pSrc; return true; }
00941     inline bool fbxCopy( fbxInteger1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxInteger1)pSrc; return true; }
00942     inline bool fbxCopy( fbxInteger1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxInteger1)pSrc; return true; }
00943     inline bool fbxCopy( fbxInteger1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxInteger1)pSrc; return true; }
00944     inline bool fbxCopy( fbxInteger1 &pDst,fbxLongLong1 const &pSrc )   { pDst   = (fbxInteger1)pSrc; return true; }
00945     inline bool fbxCopy( fbxInteger1 &pDst,fbxULongLong1 const &pSrc )  { pDst   = (fbxInteger1)pSrc; return true; }
00946     inline bool fbxCopy( fbxInteger1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
00947     inline bool fbxCopy( fbxInteger1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxInteger1)pSrc; return true; }
00948 //  inline bool fbxCopy( fbxInteger1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxInteger1)pSrc; return true; }
00949     inline bool fbxCopy( fbxInteger1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxInteger1)pSrc; return true; }
00950     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxInteger1)pSrc; return true; }
00951     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble2 const &pSrc )     { return false; }
00952     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble3 const &pSrc )     { return false; }
00953     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble4 const &pSrc )     { return false; }
00954     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble44 const &pSrc )    { return false; }
00955 //  inline bool fbxCopy( fbxInteger1 &pDst,fbxEnum const &pSrc )        { return false; }
00956     inline bool fbxCopy( fbxInteger1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
00957     inline bool fbxCopy( fbxInteger1 &pDst,fbxTime const &pSrc )        { return false; }
00958     inline bool fbxCopy( fbxInteger1 &pDst,fbxReference const &pSrc )   { return false; }
00959     inline bool fbxCopy( fbxInteger1 &pDst,fbxBlob const &pSrc )        { return false; }
00960     inline bool fbxCopy( fbxInteger1 &pDst,fbxDistance const &pSrc )    { return false; }
00961     inline bool fbxCopy( fbxInteger1 &pDst,fbxDateTime const &pSrc )    { return false; }
00962 
00963     // To FbxUInteger1
00964     inline bool fbxCopy( fbxUInteger1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxUInteger1)pSrc; return true; }
00965     inline bool fbxCopy( fbxUInteger1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxUInteger1)pSrc; return true; }
00966     inline bool fbxCopy( fbxUInteger1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxUInteger1)pSrc; return true; }
00967     inline bool fbxCopy( fbxUInteger1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxUInteger1)pSrc; return true; }
00968 //  inline bool fbxCopy( fbxUInteger1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxUInteger1)pSrc; return true; }
00969     inline bool fbxCopy( fbxUInteger1 &pDst,fbxLongLong1 const &pSrc )   { pDst   = (fbxUInteger1)pSrc; return true; }
00970     inline bool fbxCopy( fbxUInteger1 &pDst,fbxULongLong1 const &pSrc )  { pDst   = (fbxUInteger1)pSrc; return true; }
00971     inline bool fbxCopy( fbxUInteger1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
00972     inline bool fbxCopy( fbxUInteger1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxUInteger1)pSrc; return true; }
00973     inline bool fbxCopy( fbxUInteger1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxUInteger1)pSrc; return true; }
00974     inline bool fbxCopy( fbxUInteger1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxUInteger1)pSrc; return true; }
00975     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxUInteger1)pSrc; return true; }
00976     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble2 const &pSrc )     { return false; }
00977     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble3 const &pSrc )     { return false; }
00978     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble4 const &pSrc )     { return false; }
00979     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble44 const &pSrc )    { return false; }
00980 //  inline bool fbxCopy( fbxUInteger1 &pDst,fbxEnum const &pSrc )        { return false; }
00981     inline bool fbxCopy( fbxUInteger1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
00982     inline bool fbxCopy( fbxUInteger1 &pDst,fbxTime const &pSrc )        { return false; }
00983     inline bool fbxCopy( fbxUInteger1 &pDst,fbxReference const &pSrc )   { return false; }
00984     inline bool fbxCopy( fbxUInteger1 &pDst,fbxBlob const &pSrc )        { return false; }
00985     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDistance const &pSrc )    { return false; }
00986     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDateTime const &pSrc )    { return false; }
00987 
00988     // To FbxLongLong
00989     inline bool fbxCopy( fbxLongLong1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxLongLong1)pSrc; return true; }
00990     inline bool fbxCopy( fbxLongLong1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxLongLong1)pSrc; return true; }
00991     inline bool fbxCopy( fbxLongLong1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxLongLong1)pSrc; return true; }
00992     inline bool fbxCopy( fbxLongLong1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxLongLong1)pSrc; return true; }
00993     inline bool fbxCopy( fbxLongLong1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxLongLong1)pSrc; return true; }
00994 //  inline bool fbxCopy( fbxLongLong1 &pDst,fbxLongLong const &pSrc )    { pDst   = (fbxLongLong1)pSrc; return true; }
00995     inline bool fbxCopy( fbxLongLong1 &pDst,fbxULongLong1 const &pSrc )  { pDst   = (fbxLongLong1)pSrc; return true; }
00996     inline bool fbxCopy( fbxLongLong1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
00997     inline bool fbxCopy( fbxLongLong1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxLongLong1)pSrc; return true; }
00998     inline bool fbxCopy( fbxLongLong1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxLongLong1)pSrc; return true; }
00999     inline bool fbxCopy( fbxLongLong1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxLongLong1)pSrc; return true; }
01000     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxLongLong1)pSrc; return true; }
01001     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble2 const &pSrc )     { return false; }
01002     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble3 const &pSrc )     { return false; }
01003     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble4 const &pSrc )     { return false; }
01004     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble44 const &pSrc )    { return false; }
01005 //  inline bool fbxCopy( fbxLongLong1 &pDst,fbxEnum const &pSrc )        { return false; }
01006     inline bool fbxCopy( fbxLongLong1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
01007     inline bool fbxCopy( fbxLongLong1 &pDst,fbxTime const &pSrc )        { return false; }
01008     inline bool fbxCopy( fbxLongLong1 &pDst,fbxReference const &pSrc )   { return false; }
01009     inline bool fbxCopy( fbxLongLong1 &pDst,fbxBlob const &pSrc )        { return false; }
01010     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDistance const &pSrc )    { return false; }
01011     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDateTime const &pSrc )    { return false; }
01012 
01013     // To FbxULongLong
01014     inline bool fbxCopy( fbxULongLong1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxULongLong1)pSrc; return true; }
01015     inline bool fbxCopy( fbxULongLong1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxULongLong1)pSrc; return true; }
01016     inline bool fbxCopy( fbxULongLong1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxULongLong1)pSrc; return true; }
01017     inline bool fbxCopy( fbxULongLong1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxULongLong1)pSrc; return true; }
01018     inline bool fbxCopy( fbxULongLong1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxULongLong1)pSrc; return true; }
01019     inline bool fbxCopy( fbxULongLong1 &pDst,fbxLongLong1 const &pSrc )   { pDst   = (fbxULongLong1)pSrc; return true; }
01020 //  inline bool fbxCopy( fbxULongLong1 &pDst,fbxULongLong const &pSrc )   { pDst   = (fbxULongLong1)pSrc; return true; }
01021     inline bool fbxCopy( fbxULongLong1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
01022     inline bool fbxCopy( fbxULongLong1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxULongLong1)pSrc; return true; }
01023     inline bool fbxCopy( fbxULongLong1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxULongLong1)pSrc; return true; }
01024     inline bool fbxCopy( fbxULongLong1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxULongLong1)pSrc; return true; }
01025     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxULongLong1)pSrc; return true; }
01026     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble2 const &pSrc )     { return false; }
01027     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble3 const &pSrc )     { return false; }
01028     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble4 const &pSrc )     { return false; }
01029     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble44 const &pSrc )    { return false; }
01030 //  inline bool fbxCopy( fbxULongLong1 &pDst,fbxEnum const &pSrc )        { return false; }
01031     inline bool fbxCopy( fbxULongLong1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
01032     inline bool fbxCopy( fbxULongLong1 &pDst,fbxTime const &pSrc )        { return false; }
01033     inline bool fbxCopy( fbxULongLong1 &pDst,fbxReference const &pSrc )   { return false; }
01034     inline bool fbxCopy( fbxULongLong1 &pDst,fbxBlob const &pSrc )        { return false; }
01035     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDistance const &pSrc )    { return false; }
01036     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDateTime const &pSrc )    { return false; }
01037 
01038     // To fbxHalfFloat
01039     inline bool fbxCopy( fbxHalfFloat &pDst,fbxByte1 const &pSrc )         { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01040     inline bool fbxCopy( fbxHalfFloat &pDst,fbxUByte1 const &pSrc )        { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01041     inline bool fbxCopy( fbxHalfFloat &pDst,fbxShort1 const &pSrc )        { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01042     inline bool fbxCopy( fbxHalfFloat &pDst,fbxUShort1 const &pSrc )       { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01043     inline bool fbxCopy( fbxHalfFloat &pDst,fbxUInteger1 const &pSrc )     { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01044     inline bool fbxCopy( fbxHalfFloat &pDst,fbxLongLong1 const &pSrc )     { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01045     inline bool fbxCopy( fbxHalfFloat &pDst,fbxULongLong1 const &pSrc )    { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01046     inline bool fbxCopy( fbxHalfFloat &pDst,fbxBool1 const &pSrc )         { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01047     inline bool fbxCopy( fbxHalfFloat &pDst,fbxInteger1 const &pSrc )      { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01048 //  inline bool fbxCopy( fbxHalfFloat &pDst,fbxHalfFloat const &pSrc )        { pDst   = (fbxHalfFloat)pSrc; return true; }
01049     inline bool fbxCopy( fbxHalfFloat &pDst,fbxFloat1 const &pSrc )        { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01050     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble1 const &pSrc )       { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01051     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble2 const &pSrc )       { return false; }
01052     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble3 const &pSrc )       { return false; }
01053     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble4 const &pSrc )       { return false; }
01054     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble44 const &pSrc )      { return false; }
01055 //  inline bool fbxCopy( fbxHalfFloat &pDst,fbxEnum const &pSrc )          { return false; }
01056     inline bool fbxCopy( fbxHalfFloat &pDst,fbxString const &pSrc )        { return false; }
01057     inline bool fbxCopy( fbxHalfFloat &pDst,fbxTime const &pSrc )          { return false; }
01058     inline bool fbxCopy( fbxHalfFloat &pDst,fbxReference const &pSrc )     { return false; }
01059     inline bool fbxCopy( fbxHalfFloat &pDst,fbxBlob const &pSrc )          { return false; }
01060     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDistance const &pSrc )      { fbxHalfFloat hf(pSrc.internalValue()); pDst = hf; return true; }
01061     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDateTime const &pSrc )      { return false; }
01062 
01063     // To FbxFloat1
01064     inline bool fbxCopy( fbxFloat1 &pDst,fbxByte1 const &pSrc )         { pDst   = (fbxFloat1)pSrc; return true; }
01065     inline bool fbxCopy( fbxFloat1 &pDst,fbxUByte1 const &pSrc )        { pDst   = (fbxFloat1)pSrc; return true; }
01066     inline bool fbxCopy( fbxFloat1 &pDst,fbxShort1 const &pSrc )        { pDst   = (fbxFloat1)pSrc; return true; }
01067     inline bool fbxCopy( fbxFloat1 &pDst,fbxUShort1 const &pSrc )       { pDst   = (fbxFloat1)pSrc; return true; }
01068     inline bool fbxCopy( fbxFloat1 &pDst,fbxUInteger1 const &pSrc )     { pDst   = (fbxFloat1)pSrc; return true; }
01069     inline bool fbxCopy( fbxFloat1 &pDst,fbxLongLong1 const &pSrc )     { return false; }
01070     inline bool fbxCopy( fbxFloat1 &pDst,fbxULongLong1 const &pSrc )    { return false; }
01071     inline bool fbxCopy( fbxFloat1 &pDst,fbxHalfFloat const &pSrc )     { pDst   = pSrc.value()   ; return true; }
01072     inline bool fbxCopy( fbxFloat1 &pDst,fbxBool1 const &pSrc )         { pDst   = (fbxFloat1)pSrc; return true; }
01073     inline bool fbxCopy( fbxFloat1 &pDst,fbxInteger1 const &pSrc )      { pDst   = (fbxFloat1)pSrc; return true; }
01074 //  inline bool fbxCopy( fbxFloat1 &pDst,fbxFloat1 const &pSrc )        { pDst   = (fbxFloat1)pSrc; return true; }
01075     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble1 const &pSrc )       { pDst   = (fbxFloat1)pSrc; return true; }
01076     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble2 const &pSrc )       { return false; }
01077     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble3 const &pSrc )       { return false; }
01078     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble4 const &pSrc )       { return false; }
01079     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble44 const &pSrc )      { return false; }
01080 //  inline bool fbxCopy( fbxFloat1 &pDst,fbxEnum const &pSrc )          { return false; }
01081     inline bool fbxCopy( fbxFloat1 &pDst,fbxString const &pSrc )        { return false; }
01082     inline bool fbxCopy( fbxFloat1 &pDst,fbxTime const &pSrc )          { return false; }
01083     inline bool fbxCopy( fbxFloat1 &pDst,fbxReference const &pSrc )     { return false; }
01084     inline bool fbxCopy( fbxFloat1 &pDst,fbxBlob const &pSrc )          { return false; }
01085     inline bool fbxCopy( fbxFloat1 &pDst,fbxDistance const &pSrc )      { pDst = pSrc.internalValue(); return true; }
01086     inline bool fbxCopy( fbxFloat1 &pDst,fbxDateTime const &pSrc )      { return false; }
01087 
01088     // To FbxDouble1
01089     inline bool fbxCopy( fbxDouble1 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01090     inline bool fbxCopy( fbxDouble1 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01091     inline bool fbxCopy( fbxDouble1 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01092     inline bool fbxCopy( fbxDouble1 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01093     inline bool fbxCopy( fbxDouble1 &pDst,fbxUInteger1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01094     inline bool fbxCopy( fbxDouble1 &pDst,fbxLongLong1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01095     inline bool fbxCopy( fbxDouble1 &pDst,fbxULongLong1 const &pSrc )   { pDst   = (fbxDouble1)pSrc; return true; }
01096     inline bool fbxCopy( fbxDouble1 &pDst,fbxHalfFloat const &pSrc )    { pDst   = (fbxDouble1)pSrc.value(); return true; }
01097     inline bool fbxCopy( fbxDouble1 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01098     inline bool fbxCopy( fbxDouble1 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxDouble1)pSrc; return true; }
01099     inline bool fbxCopy( fbxDouble1 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01100 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble1 const &pSrc )      { return internalfbxCopy(pDst,pSrc); }
01101     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble2 const &pSrc )      { pDst   = (fbxDouble1)pSrc[0];     return true; }
01102     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble3 const &pSrc )      { pDst   = (fbxDouble1)pSrc[0];     return true; }
01103     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble4 const &pSrc )      { pDst   = (fbxDouble1)pSrc[0];     return true; }
01104     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble44 const &pSrc )     { pDst   = (fbxDouble1)pSrc[0][0];  return true; }
01105 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxEnum const &pSrc )         { return false; }
01106     inline bool fbxCopy( fbxDouble1 &pDst,fbxString const &pSrc )       { return fbxCopyStr(pDst,pSrc); }
01107     inline bool fbxCopy( fbxDouble1 &pDst,fbxTime const &pSrc )         { pDst   = (fbxDouble1)pSrc.GetSecondDouble();  return true; }
01108 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxReference const &pSrc )    { return false; }
01109 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxBlob const &pSrc )         { return false; }
01110     inline bool fbxCopy( fbxDouble1 &pDst,fbxDistance const &pSrc )     { pDst = pSrc.internalValue(); return true; }
01111 //    inline bool fbxCopy( fbxDouble1 &pDst,fbxDateTime const &pSrc )     { return false; }
01112 
01113     // To fbxDouble2
01114     inline bool fbxCopy( fbxDouble2 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01115     inline bool fbxCopy( fbxDouble2 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01116     inline bool fbxCopy( fbxDouble2 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01117     inline bool fbxCopy( fbxDouble2 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01118     inline bool fbxCopy( fbxDouble2 &pDst,fbxUInteger1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01119     inline bool fbxCopy( fbxDouble2 &pDst,fbxLongLong1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01120     inline bool fbxCopy( fbxDouble2 &pDst,fbxULongLong1 const &pSrc )   { pDst   = (fbxDouble1)pSrc; return true; }
01121     inline bool fbxCopy( fbxDouble2 &pDst,fbxHalfFloat const &pSrc )    { pDst   = (fbxDouble1)pSrc.value(); return true; }
01122     inline bool fbxCopy( fbxDouble2 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01123     inline bool fbxCopy( fbxDouble2 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxDouble1)pSrc; return true; }
01124     inline bool fbxCopy( fbxDouble2 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01125     inline bool fbxCopy( fbxDouble2 &pDst,fbxDouble1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01126 
01127     // To fbxDouble3
01128     inline bool fbxCopy( fbxDouble3 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01129     inline bool fbxCopy( fbxDouble3 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01130     inline bool fbxCopy( fbxDouble3 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01131     inline bool fbxCopy( fbxDouble3 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01132     inline bool fbxCopy( fbxDouble3 &pDst,fbxUInteger1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01133     inline bool fbxCopy( fbxDouble3 &pDst,fbxLongLong1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01134     inline bool fbxCopy( fbxDouble3 &pDst,fbxULongLong1 const &pSrc )   { pDst   = (fbxDouble1)pSrc; return true; }
01135     inline bool fbxCopy( fbxDouble3 &pDst,fbxHalfFloat const &pSrc )    { pDst   = (fbxDouble1)pSrc.value(); return true; }
01136     inline bool fbxCopy( fbxDouble3 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01137     inline bool fbxCopy( fbxDouble3 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxDouble1)pSrc; return true; }
01138     inline bool fbxCopy( fbxDouble3 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01139     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01140     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble2 const &pSrc )      { return false;  }
01141 //  inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble3 const &pSrc )      { return internalfbxCopy3(pSrc,pDst);  }
01142     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble4 const &pSrc )      { pDst   = pSrc; return true; }
01143     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble44 const &pSrc )     { return false; }
01144 //  inline bool fbxCopy( fbxDouble4 &pDst,fbxEnum const &pSrc )         { return false; }
01145     inline bool fbxCopy( fbxDouble3 &pDst,fbxString const &pSrc )       { return false; }
01146     inline bool fbxCopy( fbxDouble3 &pDst,fbxTime const &pSrc )         { return false; }
01147     inline bool fbxCopy( fbxDouble3 &pDst,fbxReference const &pSrc )    { return false; }
01148     inline bool fbxCopy( fbxDouble3 &pDst,fbxBlob const &pSrc )         { return false; }
01149     inline bool fbxCopy( fbxDouble3 &pDst,fbxDistance const &pSrc )     { return false; }
01150     inline bool fbxCopy( fbxDouble3 &pDst,fbxDateTime const &pSrc )     { return false; }
01151 
01152     // To fbxDouble4
01153     inline bool fbxCopy( fbxDouble4 &pDst,fbxByte1 const &pSrc )        { return false; }
01154     inline bool fbxCopy( fbxDouble4 &pDst,fbxUByte1 const &pSrc )       { return false; }
01155     inline bool fbxCopy( fbxDouble4 &pDst,fbxShort1 const &pSrc )       { return false; }
01156     inline bool fbxCopy( fbxDouble4 &pDst,fbxUShort1 const &pSrc )      { return false; }
01157     inline bool fbxCopy( fbxDouble4 &pDst,fbxUInteger1 const &pSrc )    { return false; }
01158     inline bool fbxCopy( fbxDouble4 &pDst,fbxLongLong1 const &pSrc )    { return false; }
01159     inline bool fbxCopy( fbxDouble4 &pDst,fbxULongLong1 const &pSrc )   { return false; }
01160     inline bool fbxCopy( fbxDouble4 &pDst,fbxHalfFloat const &pSrc )    { return false; }
01161     inline bool fbxCopy( fbxDouble4 &pDst,fbxBool1 const &pSrc )        { return false; }
01162     inline bool fbxCopy( fbxDouble4 &pDst,fbxInteger1 const &pSrc )     { return false; }
01163     inline bool fbxCopy( fbxDouble4 &pDst,fbxFloat1 const &pSrc )       { return false; }
01164     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble1 const &pSrc )      { return false; }
01165     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble2 const &pSrc )      { return false; }
01166     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble3 const &pSrc )      { pDst   = pSrc; return true; }
01167     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble44 const &pSrc )     { return false; }
01168 //  inline bool fbxCopy( fbxDouble4 &pDst,fbxEnum const &pSrc )         { return false; }
01169     inline bool fbxCopy( fbxDouble4 &pDst,fbxString const &pSrc )       { return false; }
01170     inline bool fbxCopy( fbxDouble4 &pDst,fbxTime const &pSrc )         { return false; }
01171     inline bool fbxCopy( fbxDouble4 &pDst,fbxReference const &pSrc )    { return false; }
01172     inline bool fbxCopy( fbxDouble4 &pDst,fbxBlob const &pSrc )         { return false; }
01173     inline bool fbxCopy( fbxDouble4 &pDst,fbxDistance const &pSrc )     { return false; }
01174     inline bool fbxCopy( fbxDouble4 &pDst,fbxDateTime const &pSrc )     { return false; }
01175 
01176     // To String
01177     inline bool fbxCopy( fbxString &pDst,fbxByte1 const &pSrc )         { pDst=KString((int)pSrc); return true; }
01178     inline bool fbxCopy( fbxString &pDst,fbxUByte1 const &pSrc )        { pDst=KString((int)pSrc); return true; }
01179     inline bool fbxCopy( fbxString &pDst,fbxShort1 const &pSrc )        { pDst=KString((int)pSrc); return true; }
01180     inline bool fbxCopy( fbxString &pDst,fbxUShort1 const &pSrc )       { pDst=KString((int)pSrc); return true; }
01181     inline bool fbxCopy( fbxString &pDst,fbxUInteger1 const &pSrc )     { pDst=KString((int)pSrc); return true; }
01182     inline bool fbxCopy( fbxString &pDst,fbxLongLong1 const &pSrc )     { pDst=KString((int)pSrc); return true; }
01183     inline bool fbxCopy( fbxString &pDst,fbxULongLong1 const &pSrc )    { pDst=KString((int)pSrc); return true; }
01184     inline bool fbxCopy( fbxString &pDst,fbxHalfFloat const &pSrc )     { pDst=KString((float)pSrc.value()); return true; }
01185     inline bool fbxCopy( fbxString &pDst,fbxBool1 const &pSrc )         { pDst=pSrc ? "true" : "false"; return true; }
01186     inline bool fbxCopy( fbxString &pDst,fbxInteger1 const &pSrc )      { pDst=KString((int)pSrc); return true; }
01187     inline bool fbxCopy( fbxString &pDst,fbxFloat1 const &pSrc )        { pDst=KString(pSrc); return true; }
01188     inline bool fbxCopy( fbxString &pDst,fbxDouble1 const &pSrc )       { pDst=KString(pSrc); return true; }
01189     inline bool fbxCopy( fbxString &pDst,fbxDouble2 const &pSrc )       { pDst=KString(pSrc[0])+","+KString(pSrc[1]); return true; }
01190     inline bool fbxCopy( fbxString &pDst,fbxDouble3 const &pSrc )       { pDst=KString(pSrc[0])+","+KString(pSrc[1])+","+KString(pSrc[2]); return true; }
01191     inline bool fbxCopy( fbxString &pDst,fbxDouble4 const &pSrc )       { pDst=KString(pSrc[0])+","+KString(pSrc[1])+","+KString(pSrc[2])+","+KString(pSrc[3]); return true; }
01192     inline bool fbxCopy( fbxString &pDst,fbxDouble44 const &pSrc )      { pDst=KString(pSrc[0][0])+","+KString(pSrc[0][1])+","+KString(pSrc[0][2])+","+KString(pSrc[0][3]); return true; }
01193 //  inline bool fbxCopy( fbxString &pDst,fbxString const &pSrc )        { return false; }
01194     inline bool fbxCopy( fbxString &pDst,fbxTime const &pSrc )          { char lTimeStr[128]; pSrc.GetTimeString(lTimeStr); pDst=lTimeStr; return true; }
01195     inline bool fbxCopy( fbxString &pDst,fbxReference const &pSrc )     { pDst="<reference>"; return true; }
01196     inline bool fbxCopy( fbxString &pDst,fbxBlob const &pSrc )          { pDst="<blob>"; return true; } // Or convert to ASCII-85?
01197     inline bool fbxCopy( fbxString &pDst,fbxDistance const &pSrc )      { pDst= KString(pSrc.value()) + " " +pSrc.unitName(); return true; }
01198     inline bool fbxCopy( fbxString &pDst,fbxDateTime const &pSrc )      { pDst= pSrc.toString(); return true; }
01199 
01200     // To Blob
01201     inline bool fbxCopy( fbxBlob &pDst,fbxByte1 const &pSrc )           { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01202     inline bool fbxCopy( fbxBlob &pDst,fbxUByte1 const &pSrc )          { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01203     inline bool fbxCopy( fbxBlob &pDst,fbxShort1 const &pSrc )          { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01204     inline bool fbxCopy( fbxBlob &pDst,fbxUShort1 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01205     inline bool fbxCopy( fbxBlob &pDst,fbxUInteger1 const &pSrc )       { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01206     inline bool fbxCopy( fbxBlob &pDst,fbxLongLong1 const &pSrc )       { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01207     inline bool fbxCopy( fbxBlob &pDst,fbxULongLong1 const &pSrc )      { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01208     inline bool fbxCopy( fbxBlob &pDst,fbxHalfFloat const &pSrc )       { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01209     inline bool fbxCopy( fbxBlob &pDst,fbxBool1 const &pSrc )           { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01210     inline bool fbxCopy( fbxBlob &pDst,fbxInteger1 const &pSrc )        { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01211     inline bool fbxCopy( fbxBlob &pDst,fbxFloat1 const &pSrc )          { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01212     inline bool fbxCopy( fbxBlob &pDst,fbxDouble1 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01213     inline bool fbxCopy( fbxBlob &pDst,fbxDouble2 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01214     inline bool fbxCopy( fbxBlob &pDst,fbxDouble3 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01215     inline bool fbxCopy( fbxBlob &pDst,fbxDouble4 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01216     inline bool fbxCopy( fbxBlob &pDst,fbxDouble44 const &pSrc )        { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01217     inline bool fbxCopy( fbxBlob &pDst,fbxString const &pSrc )
01218     {
01219         bool lCastable = pSrc.GetLen() == (int)pSrc.GetLen();
01220         K_ASSERT( lCastable );
01221         if( lCastable )
01222             pDst.Assign(pSrc.Buffer(), (int)pSrc.GetLen());
01223         return lCastable;
01224     }
01225     inline bool fbxCopy( fbxBlob &pDst,fbxTime const &pSrc )            { kLongLong t = pSrc.Get(); pDst.Assign( &t, sizeof(t)); return true; }
01226     inline bool fbxCopy( fbxBlob &pDst,fbxReference const &pSrc )       { return false; }
01227     inline bool fbxCopy( fbxBlob &pDst,fbxDistance const &pSrc )        { return false; }
01228     inline bool fbxCopy( fbxBlob &pDst,fbxDateTime const &pSrc )        { return false; }
01229     //inline bool fbxCopy( fbxBlob &pDst,fbxBlob const &pSrc )          { pDst=pSrc; return true; }
01230 
01231     inline bool fbxCopy( fbxDistance &pDst,fbxByte1 const &pSrc )        { return false; }
01232     inline bool fbxCopy( fbxDistance &pDst,fbxUByte1 const &pSrc )       { return false; }
01233     inline bool fbxCopy( fbxDistance &pDst,fbxShort1 const &pSrc )       { return false; }
01234     inline bool fbxCopy( fbxDistance &pDst,fbxUShort1 const &pSrc )      { return false; }
01235     inline bool fbxCopy( fbxDistance &pDst,fbxUInteger1 const &pSrc )    { return false; }
01236     inline bool fbxCopy( fbxDistance &pDst,fbxLongLong1 const &pSrc )    { return false; }
01237     inline bool fbxCopy( fbxDistance &pDst,fbxULongLong1 const &pSrc )   { return false; }
01238     inline bool fbxCopy( fbxDistance &pDst,fbxHalfFloat const &pSrc )    { return false; }
01239     inline bool fbxCopy( fbxDistance &pDst,fbxBool1 const &pSrc )        { return false; }
01240     inline bool fbxCopy( fbxDistance &pDst,fbxInteger1 const &pSrc )     { return false; }
01241     inline bool fbxCopy( fbxDistance &pDst,fbxFloat1 const &pSrc )       { return false; }
01242     inline bool fbxCopy( fbxDistance &pDst,fbxDouble1 const &pSrc )      { return false; }
01243     inline bool fbxCopy( fbxDistance &pDst,fbxDouble2 const &pSrc )      { return false; }
01244     inline bool fbxCopy( fbxDistance &pDst,fbxDouble3 const &pSrc )      { return false; }
01245     inline bool fbxCopy( fbxDistance &pDst, fbxDouble4 const &pSrc )     { return false; }
01246     inline bool fbxCopy( fbxDistance &pDst,fbxDouble44 const &pSrc )     { return false; }
01247     inline bool fbxCopy( fbxDistance &pDst,fbxString const &pSrc )       { return false; }
01248     inline bool fbxCopy( fbxDistance &pDst,fbxTime const &pSrc )         { return false; }
01249     inline bool fbxCopy( fbxDistance &pDst,fbxReference const &pSrc )    { return false; }
01250     inline bool fbxCopy( fbxDistance &pDst,fbxBlob const &pSrc )         { return false; }
01251     inline bool fbxCopy( fbxDistance &pDst,fbxDateTime const &pSrc )     { return false; }
01252 
01253     inline bool fbxCopy( fbxDateTime &pDst,fbxByte1 const &pSrc )        { return false; }
01254     inline bool fbxCopy( fbxDateTime &pDst,fbxUByte1 const &pSrc )       { return false; }
01255     inline bool fbxCopy( fbxDateTime &pDst,fbxShort1 const &pSrc )       { return false; }
01256     inline bool fbxCopy( fbxDateTime &pDst,fbxUShort1 const &pSrc )      { return false; } 
01257     inline bool fbxCopy( fbxDateTime &pDst,fbxUInteger1 const &pSrc )    { return false; }
01258     inline bool fbxCopy( fbxDateTime &pDst,fbxLongLong1 const &pSrc )    { return false; }
01259     inline bool fbxCopy( fbxDateTime &pDst,fbxULongLong1 const &pSrc )   { return false; }
01260     inline bool fbxCopy( fbxDateTime &pDst,fbxHalfFloat const &pSrc )    { return false; }
01261     inline bool fbxCopy( fbxDateTime &pDst,fbxBool1 const &pSrc )        { return false; }
01262     inline bool fbxCopy( fbxDateTime &pDst,fbxInteger1 const &pSrc )     { return false; }
01263     inline bool fbxCopy( fbxDateTime &pDst,fbxFloat1 const &pSrc )       { return false; }
01264     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble1 const &pSrc )      { return false; }
01265     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble2 const &pSrc )      { return false; }
01266     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble3 const &pSrc )      { return false; }
01267     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble4 const &pSrc )      { return false; }
01268     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble44 const &pSrc )     { return false; }
01269     inline bool fbxCopy( fbxDateTime &pDst,fbxString const &pSrc )       { return pDst.fromString(pSrc); }
01270     inline bool fbxCopy( fbxDateTime &pDst,fbxTime const &pSrc )         { return false; }
01271     inline bool fbxCopy( fbxDateTime &pDst,fbxReference const &pSrc )    { return false; }
01272     inline bool fbxCopy( fbxDateTime &pDst,fbxBlob const &pSrc )         { return false; }
01273     inline bool fbxCopy( fbxDateTime &pDst,fbxDistance const &pSrc )     { return false; }
01274 
01275     template< class T > inline bool fbxCopy( T &pDst,void const *pSrc,EFbxType pSrcType)
01276     {
01277         switch (pSrcType) {
01278             case eBYTE1:      return fbxCopy( pDst,*(fbxByte1 *)pSrc );
01279             case eUBYTE1:     return fbxCopy( pDst,*(fbxUByte1 *)pSrc );
01280             case eSHORT1:     return fbxCopy( pDst,*(fbxShort1 *)pSrc );
01281             case eUSHORT1:    return fbxCopy( pDst,*(fbxUShort1 *)pSrc );
01282             case eUINTEGER1:  return fbxCopy( pDst,*(fbxUInteger1 *)pSrc );
01283             case eLONGLONG1:  return fbxCopy( pDst,*(fbxLongLong1 *)pSrc );
01284             case eULONGLONG1: return fbxCopy( pDst,*(fbxULongLong1 *)pSrc );
01285             case eHALFFLOAT:  return fbxCopy( pDst,*(fbxHalfFloat *)pSrc );
01286             case eBOOL1:      return fbxCopy( pDst,*(fbxBool1 *)pSrc );
01287             case eINTEGER1:   return fbxCopy( pDst,*(fbxInteger1 *)pSrc );
01288             case eFLOAT1:     return fbxCopy( pDst,*(fbxFloat1 *)pSrc );
01289             case eDOUBLE1:    return fbxCopy( pDst,*(fbxDouble1 *)pSrc );
01290             case eDOUBLE2:    return fbxCopy( pDst,*(fbxDouble2 *)pSrc );
01291             case eDOUBLE3:    return fbxCopy( pDst,*(fbxDouble3 *)pSrc );
01292             case eDOUBLE4:    return fbxCopy( pDst,*(fbxDouble4 *)pSrc );
01293             case eDOUBLE44:   return fbxCopy( pDst,*(fbxDouble44 *)pSrc );
01294             case eENUM:       return fbxCopy( pDst,*(fbxEnum *)pSrc );
01295             case eSTRING:     return fbxCopy( pDst,*(fbxString *)pSrc );
01296             case eTIME:       return fbxCopy( pDst,*(fbxTime *)pSrc );
01297             case eREFERENCE:
01298                 K_ASSERT_MSG_NOW("Trying to set value on a void Reference type" );
01299             break;
01300             case eBLOB:       return fbxCopy( pDst,*(fbxBlob *)pSrc );
01301             case eDISTANCE:   return fbxCopy( pDst, *(fbxDistance *)pSrc );
01302             case eDATETIME:   return fbxCopy( pDst, *(fbxDateTime *)pSrc );
01303             default:
01304                 K_ASSERT_MSG_NOW("Trying to assign an unknown type" );
01305         }
01306         return false;
01307     }
01308 
01309     template< class T > inline bool fbxCopy( void *pDst,EFbxType pDstType,T const &pSrc)
01310     {
01311         switch (pDstType) {
01312             case eBYTE1:      return fbxCopy( *(fbxByte1 *)pDst,pSrc );
01313             case eUBYTE1:     return fbxCopy( *(fbxUByte1 *)pDst,pSrc );
01314             case eSHORT1:     return fbxCopy( *(fbxShort1 *)pDst,pSrc );
01315             case eUSHORT1:    return fbxCopy( *(fbxUShort1 *)pDst,pSrc );
01316             case eUINTEGER1:  return fbxCopy( *(fbxUInteger1 *)pDst,pSrc );
01317             case eLONGLONG1:  return fbxCopy( *(fbxLongLong1 *)pDst,pSrc );
01318             case eULONGLONG1: return fbxCopy( *(fbxULongLong1 *)pDst,pSrc );
01319             case eHALFFLOAT:  return fbxCopy( *(fbxHalfFloat *)pDst,pSrc );
01320             case eBOOL1:      return fbxCopy( *(fbxBool1 *)pDst,pSrc    );
01321             case eINTEGER1:   return fbxCopy( *(fbxInteger1 *)pDst,pSrc );
01322             case eFLOAT1:     return fbxCopy( *(fbxFloat1 *)pDst,pSrc   );
01323             case eDOUBLE1:    return fbxCopy( *(fbxDouble1 *)pDst,pSrc  );
01324             case eDOUBLE2:    return fbxCopy( *(fbxDouble2 *)pDst,pSrc  );
01325             case eDOUBLE3:    return fbxCopy( *(fbxDouble3 *)pDst,pSrc  );
01326             case eDOUBLE4:    return fbxCopy( *(fbxDouble4 *)pDst,pSrc  );
01327             case eDOUBLE44:   return fbxCopy( *(fbxDouble44 *)pDst,pSrc );
01328             case eENUM:       return fbxCopy( *(fbxEnum *)pDst,pSrc     );
01329             case eSTRING:     return fbxCopy( *(fbxString *)pDst,pSrc   );
01330             case eTIME:       return fbxCopy( *(fbxTime *)pDst,pSrc   );
01331             case eREFERENCE:
01332                 K_ASSERT_MSG_NOW("Trying to set value on a void Reference type" );
01333             break;
01334             case eBLOB:       return fbxCopy( *(fbxBlob *)pDst,pSrc   );
01335             case eDISTANCE:   return fbxCopy( *(fbxDistance *)pDst, pSrc );
01336             case eDATETIME:   return fbxCopy( *(fbxDateTime *)pDst, pSrc );
01337             default:
01338                 K_ASSERT_MSG_NOW("Trying to assign an unknown type" );
01339         }
01340         return false;
01341     }
01342 
01343     inline bool fbxCopy( void *pDst,EFbxType pDstType,void const *pSrc,EFbxType pSrcType)
01344     {
01345         switch (pSrcType) {
01346             case eBYTE1:      return fbxCopy( pDst,pDstType,*(fbxByte1 *)pSrc );
01347             case eUBYTE1:     return fbxCopy( pDst,pDstType,*(fbxUByte1 *)pSrc );
01348             case eSHORT1:     return fbxCopy( pDst,pDstType,*(fbxShort1 *)pSrc );
01349             case eUSHORT1:    return fbxCopy( pDst,pDstType,*(fbxUShort1 *)pSrc );
01350             case eUINTEGER1:  return fbxCopy( pDst,pDstType,*(fbxUInteger1 *)pSrc );
01351             case eLONGLONG1:  return fbxCopy( pDst,pDstType,*(fbxLongLong1 *)pSrc );
01352             case eULONGLONG1: return fbxCopy( pDst,pDstType,*(fbxULongLong1 *)pSrc );
01353             case eHALFFLOAT:  return fbxCopy( pDst,pDstType,*(fbxHalfFloat *)pSrc );
01354             case eBOOL1:      return fbxCopy( pDst,pDstType,*(fbxBool1 *)pSrc );
01355             case eINTEGER1:   return fbxCopy( pDst,pDstType,*(fbxInteger1 *)pSrc );
01356             case eFLOAT1:     return fbxCopy( pDst,pDstType,*(fbxFloat1 *)pSrc );
01357             case eDOUBLE1:    return fbxCopy( pDst,pDstType,*(fbxDouble1 *)pSrc );
01358             case eDOUBLE2:    return fbxCopy( pDst,pDstType,*(fbxDouble2 *)pSrc );
01359             case eDOUBLE3:    return fbxCopy( pDst,pDstType,*(fbxDouble3 *)pSrc );
01360             case eDOUBLE4:    return fbxCopy( pDst,pDstType,*(fbxDouble4 *)pSrc );
01361             case eDOUBLE44:   return fbxCopy( pDst,pDstType,*(fbxDouble44 *)pSrc );
01362             case eENUM:       return fbxCopy( pDst,pDstType,*(fbxEnum *)pSrc );
01363             case eSTRING:     return fbxCopy( pDst,pDstType,*(fbxString *)pSrc);
01364             case eTIME:       return fbxCopy( pDst,pDstType,*(fbxTime*)pSrc);
01365             case eREFERENCE:
01366                 K_ASSERT_MSG_NOW("Trying to set value on a void Reference type" );
01367             break;
01368             case eBLOB:       return fbxCopy( pDst,pDstType,*(fbxBlob*)pSrc);
01369             case eDISTANCE:   return fbxCopy(pDst, pDstType, *(fbxDistance*)pSrc);
01370             case eDATETIME:   return fbxCopy(pDst, pDstType, *(fbxDateTime*)pSrc);
01371             default:
01372                 K_ASSERT_MSG_NOW("Trying to assign an unknown type" );
01373         }
01374         return false;
01375     }
01376 
01382     KFBX_DLL void* fbxCreate( EFbxType pType );
01383 
01384 
01392     KFBX_DLL bool fbxDestroy( EFbxType pType, void* pData );
01393 
01394 
01401     inline bool fbxCompare( const void* pA, const void* pB, EFbxType pType )
01402     {
01403         switch (pType) {
01404             case eBYTE1:      return  (*(fbxByte1*)pA)      == (*(fbxByte1*)pB);
01405             case eUBYTE1:     return  (*(fbxUByte1*)pA)     == (*(fbxUByte1*)pB);
01406             case eSHORT1:     return  (*(fbxShort1*)pA)     == (*(fbxShort1*)pB);
01407             case eUSHORT1:    return  (*(fbxUShort1*)pA)    == (*(fbxUShort1*)pB);
01408             case eUINTEGER1:  return  (*(fbxUInteger1*)pA)  == (*(fbxUInteger1*)pB);
01409             case eLONGLONG1:  return  (*(fbxLongLong1*)pA)  == (*(fbxLongLong1*)pB);
01410             case eULONGLONG1: return  (*(fbxULongLong1*)pA) == (*(fbxULongLong1*)pB);
01411             case eHALFFLOAT:  return  (*(fbxHalfFloat*)pA)  == (*(fbxHalfFloat*)pB);
01412             case eBOOL1:      return  (*(fbxBool1*)pA)      == (*(fbxBool1*)pB);
01413             case eINTEGER1:   return  (*(fbxInteger1*)pA)   == (*(fbxInteger1*)pB);
01414             case eFLOAT1:     return  (*(fbxFloat1*)pA)     == (*(fbxFloat1*)pB);
01415             case eDOUBLE1:    return  (*(fbxDouble1*)pA)    == (*(fbxDouble1*)pB);
01416             case eDOUBLE2:    return  (*(fbxDouble2*)pA)    == (*(fbxDouble2*)pB);
01417             case eDOUBLE3:    return  (*(fbxDouble3*)pA)    == (*(fbxDouble3*)pB);
01418             case eDOUBLE4:    return  (*(fbxDouble4*)pA)    == (*(fbxDouble4*)pB);
01419             case eDOUBLE44:   return  (*(fbxDouble44*)pA)   == (*(fbxDouble44*)pB);
01420             case eENUM:       return  (*(fbxEnum*)pA)       == (*(fbxEnum*)pB);
01421             case eSTRING:     return  (*(fbxString*)pA)     == (*(fbxString*)pB);
01422             case eTIME:       return  (*(fbxTime*)pA)       == (*(fbxTime*)pB);
01423             case eREFERENCE:
01424                 K_ASSERT_MSG_NOW("Trying to compare value on a void Reference type" );
01425             break;
01426             case eBLOB:      return (*(fbxBlob*)pA)         == (*(fbxBlob*)pB);
01427             case eDISTANCE:  return (*(fbxDistance*)pA)     == (*(fbxDistance*)pB);
01428             case eDATETIME:  return (*(fbxDateTime*)pA)     == (*(fbxDateTime*)pB);
01429             default:
01430                 K_ASSERT_MSG_NOW("Trying to compare an unknown type" );
01431         }
01432         return false;
01433     }
01434 
01435 #include <fbxfilesdk/fbxfilesdk_nsend.h>
01436 
01437 #endif // FBXFILESDK_KFBXPLUGINS_KFBXTYPES_H
01438