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 - 2010 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 #include <fbxfilesdk/fbxfilesdk_def.h>
00042 
00043 #include <fbxfilesdk/components/kbaselib/klib/kdebug.h>
00044 #include <fbxfilesdk/components/kbaselib/klib/kstring.h>
00045 #include <fbxfilesdk/components/kbaselib/klib/ktime.h>
00046 
00047 #include <fbxfilesdk/kfbxplugins/kfbxcolor.h>
00048 #include <fbxfilesdk/kfbxplugins/kfbxsystemunit.h>
00049 
00050 #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00051 
00052     class   KFbxSdkManager;
00053 
00081     typedef enum {
00082         eUNIDENTIFIED,
00083         eBYTE1,      // 8 bit int
00084         eUBYTE1,  
00085         eSHORT1,     // 16 bit int
00086         eUSHORT1,
00087         eUINTEGER1,  
00088         eLONGLONG1,  // 64 bit int
00089         eULONGLONG1,
00090         eHALFFLOAT,  // 16 bit float
00091         eBOOL1,
00092         eINTEGER1,
00093         eFLOAT1,
00094         eDOUBLE1,
00095         eDOUBLE2,
00096         eDOUBLE3,
00097         eDOUBLE4,
00098         eDOUBLE44,
00099         eENUM,
00100         eSTRING,
00101         eTIME,
00102         eREFERENCE,  // used as a port entry to reference object or properties
00103         eBLOB,
00104         eDISTANCE,
00105         eDATETIME,
00106         eMAX_TYPES,
00107     } EFbxType;
00108 
00109     // Base Type for vectors
00110     template<class T> class fbxVectorTemplate2 {
00111         public:
00112             inline fbxVectorTemplate2()                      { *this = T(0);  }
00113             inline explicit fbxVectorTemplate2(T pValue)              { *this = pValue;  }
00114             inline fbxVectorTemplate2(T pData0,T pData1)    { mData[0] = pData0; mData[1] = pData1; }
00115             inline ~fbxVectorTemplate2() {}
00116         public:
00117             inline T &operator[](int pIndex) { return mData[pIndex]; }
00118             inline T const&operator[](int pIndex) const { return mData[pIndex]; }
00119             inline fbxVectorTemplate2<T> &operator=(T const & pValue) { mData[0] = pValue; mData[1] = pValue; return *this; }
00120             inline fbxVectorTemplate2<T> &operator=(const fbxVectorTemplate2<T> & pRHS) { mData[0] = pRHS.mData[0]; mData[1] = pRHS.mData[1]; return *this; }
00121             inline bool operator==(fbxVectorTemplate2<T> const & pRHS) const { return ((mData[0] == pRHS.mData[0]) && (mData[1] == pRHS.mData[1])); }
00122             inline bool operator!=(fbxVectorTemplate2<T> const & pRHS) const { return !operator==( pRHS ); }
00123 
00124             inline T* Buffer() { return mData; }
00125             inline T const* Buffer() const { return mData; }
00126 
00127         public:
00128             T mData[2];
00129     };
00130 
00131     template<class T> class fbxVectorTemplate3 {
00132         public:
00133             inline fbxVectorTemplate3()                          { *this = T(0);  }
00134             inline explicit fbxVectorTemplate3(T pValue)                  { *this = pValue;  }
00135             inline fbxVectorTemplate3(T pData0,T pData1,T pData2) { mData[0] = pData0; mData[1] = pData1; mData[2] = pData2;  }
00136             inline ~fbxVectorTemplate3() {}
00137         public:
00138             inline T &operator[](int pIndex) { return mData[pIndex]; }
00139             inline T const&operator[](int pIndex) const { return mData[pIndex]; }
00140             inline fbxVectorTemplate3<T> &operator=(T const &pValue) { mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; return *this; }
00141             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; }
00142             inline bool operator==(fbxVectorTemplate3<T> const & pRHS) const { return ((mData[0] == pRHS.mData[0]) && (mData[1] == pRHS.mData[1]) && (mData[2] == pRHS.mData[2])); }
00143             inline bool operator!=(fbxVectorTemplate3<T> const & pRHS) const { return !operator==(pRHS); }
00144 
00145             inline T* Buffer() { return mData; }
00146             inline T const* Buffer() const { return mData; }
00147 
00148         public:
00149             T mData[3];
00150     };
00151 
00152     template<class T> class fbxVectorTemplate4 {
00153         public:
00154             inline fbxVectorTemplate4()                                     { *this = T(0); }
00155             inline explicit fbxVectorTemplate4(T pValue)                             { *this = pValue; }
00156             inline fbxVectorTemplate4(T pData0,T pData1,T pData2,T pData3)  { mData[0] = pData0; mData[1] = pData1; mData[2] = pData2; mData[3] = pData3;   }
00157             inline ~fbxVectorTemplate4() {}
00158         public:
00159             inline T &operator[](int pIndex) { return mData[pIndex]; }
00160             inline operator fbxVectorTemplate3<T>& () const { return *((fbxVectorTemplate3<T> *)this); }
00161             inline T const&operator[](int pIndex) const { return mData[pIndex]; }
00162             inline fbxVectorTemplate4<T> &operator=(T const &pValue)                     { mData[0] = pValue; mData[1] = pValue; mData[2] = pValue; mData[3] = pValue; return *this; }
00163             inline fbxVectorTemplate4<T> &operator=(fbxVectorTemplate3<T> const &pValue) { mData[0] = pValue[0]; mData[1] = pValue[1]; mData[2] = pValue[2]; return *this; }
00164             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; }
00165             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])); }
00166             inline bool operator!=(fbxVectorTemplate4<T> const & pRHS) const { return !operator==( pRHS ); }
00167 
00168             inline T* Buffer() { return mData; }
00169             inline T const* Buffer() const { return mData; }
00170 
00171         public:
00172             T mData[4];
00173     };
00174     
00175 
00180     class KFBX_DLL fbxBlob {
00181         public:
00186 
00188             inline fbxBlob()                              { mData = 0; mSize = 0; mRefCount = 0; }
00189 
00193                    fbxBlob(int pSize);
00194 
00198             inline fbxBlob(const fbxBlob & pRHS)          { mData = 0; mSize = 0; mRefCount = 0; *this = pRHS; }
00199 
00204             inline fbxBlob(const void * pData, int pSize) { mData = 0; mSize = 0; mRefCount = 0; Assign(pData,pSize); }
00205 
00207             ~fbxBlob();
00208 
00210         public:
00215 
00220                    fbxBlob &operator=(fbxBlob const &pValue);
00221 
00226                    void Assign(const void * pData, int pSize);  // Always makes a copy.
00228 
00233 
00238                    bool operator==(fbxBlob const & pRHS) const; // Compare the contents.
00239 
00244             inline bool operator!=(fbxBlob const & pRHS) const { return !operator==( pRHS ); }
00246 
00248                    void * Modify(); 
00249 
00254             
00258                    const void * Access() const { return mData; }
00259 
00263                    inline int Size() const { return mSize; }
00265 
00267                    void Clear(); 
00268 
00269         protected:
00270             int *   mRefCount;
00271             void *  mData;
00272             int     mSize;
00273 
00274     };
00275 
00279     class KFBX_DLL fbxDistance {
00280         public:
00285             
00287             fbxDistance(): mValue(0.0), mUnit(1.0) {  }
00288 
00293             fbxDistance(float pValue, KFbxSystemUnit pUnit): mValue(0.0), mUnit(1.0) {
00294                 mValue = pValue;
00295                 mUnit = pUnit;
00296             }
00297             
00303             fbxDistance(float pValue, const char* pUnit);
00304 
00306             ~fbxDistance() {  }
00307 
00309         public:
00310 
00315             
00320             fbxDistance &operator=(fbxDistance const& pValue) {
00321                         mValue = pValue.mValue;
00322                         mUnit = pValue.mUnit;
00323                         return *this;
00324             }
00326             
00331 
00336             bool operator==(fbxDistance const & pRHS) const { return ( (mValue == pRHS.mValue) && (mUnit == pRHS.mUnit) ); }
00337 
00342             bool operator!=(fbxDistance const& pRHS) const { return !operator==(pRHS); }
00344 
00345             
00346             KString const unitName() const    {   return mUnit.GetScaleFactorAsString();    }
00347 
00352 
00356             KFbxSystemUnit const unit() const   {   return mUnit;  }
00357 
00361             float const value() const   {   return mValue;  }
00363 
00367             float const internalValue() const {
00368                 KFbxSystemUnit internalUnit(KFbxSystemUnit::Inch);
00369                 float internalValue = (float)(mValue * mUnit.GetConversionFactorTo(internalUnit));
00370                 return internalValue;
00371             }
00372 
00377             float const valueAs( KFbxSystemUnit const& pUnit ) const
00378             {
00379                 float convertedValue = (float)(mValue * mUnit.GetConversionFactorTo(pUnit));
00380                 return convertedValue;
00381             }
00382 
00383         private:
00384             float               mValue;
00385             KFbxSystemUnit      mUnit;
00386         };
00387 
00388     
00389        
00390     
00391 
00399     class KFBX_DLL fbxDateTime
00400     {
00401     public:
00402         kShort mMillisecond;            // 0-999
00403         kShort mYear;                   // No check
00404 
00405         kByte  mMonth;                  // 1-12
00406         kByte  mDay;                    // 1-31; no check with regards to the month
00407         kByte  mHour;                   // 0-23
00408         kByte  mMinute;                 // 0-59
00409         kByte  mSecond;                 // 0-59
00410 
00411     public:
00416        
00418         fbxDateTime() { Clear(); }
00419 
00429         fbxDateTime(int pDay, int pMonth, int pYear, int pHour, int pMin, int pSec, int pMillisecond = 0);
00430 
00432 
00437 
00442         bool operator==(const fbxDateTime& pRHS) const;
00443 
00448         bool operator!=(const fbxDateTime& pRHS) const
00449         {
00450             return !(*this == pRHS); 
00451         }
00453 
00455         void Clear()
00456         {
00457             mMillisecond = mYear = 0;
00458             mMonth = mDay = mHour = mMinute = mSecond = 0;
00459         }
00460 
00461         
00465         bool isValid() const;
00466 
00467     
00468        
00478         void setDate(int pDay, int pMonth, int pYear);
00479 
00486         void setTime(int pHour, int pMin, int pSec, int pMillisecond = 0);
00488 
00489 
00495 
00499         KString toString() const;
00500 
00507         bool fromString(const char*);
00509        
00513         static fbxDateTime currentDateTimeGMT();
00514     };
00515 
00523     class KFBX_DLL fbxHalfFloat
00524     {
00525     public:
00530             fbxHalfFloat()                          { mValue = 0; }
00531             fbxHalfFloat(float pVal)                { mValue = FtoHF(&pVal); }
00532             fbxHalfFloat(const fbxHalfFloat& pVal)  { mValue = pVal.mValue; }
00534 
00539         
00544         fbxHalfFloat &operator=(fbxHalfFloat const& pValue) 
00545         { 
00546             mValue = pValue.mValue;
00547             return *this;
00548         }
00550         
00555 
00560         bool operator==(fbxHalfFloat const & pRHS) const { return (mValue == pRHS.mValue); }
00561 
00566         bool operator!=(fbxHalfFloat const& pRHS) const { return !operator==(pRHS); }
00568 
00575         float const value() const   { return HFtoF(mValue);  }
00576 
00579         unsigned short const internal_value() const { return mValue; }
00581 
00582     private:
00583         typedef unsigned short half;
00584         half mValue;
00585 
00586         // we want to extract the mantissa, exponent and sign from the float number.
00587         // by the IEEE 754 binary standard, the float number is divided as: 
00588         //        sign          : 1 bit
00589         //        mantissa      : 23 bits
00590         //        exponent      : 8 bits
00591         //        exponent bias : 127
00592         // and the half-float is:
00593         //        sing          : 1 bit
00594         //        mantissa      : 10 bits
00595         //        exponent      : 5 bits
00596         //        exponent bias :
00597 
00598         half FtoHF(float *f)
00599         {
00600             half         h;
00601             unsigned int p = *(unsigned int *)f;
00602             unsigned int s = (p >> 31);
00603             unsigned int e = p & 0x7F800000;
00604             unsigned int m = p & 0x007FFFFF;
00605                   
00606             // the exponent of the received float will not fit in the 5 bits of
00607             // the half ? Either is > 15 or < -14
00608             if (e >= 0x47800000) // > 15
00609             {
00610                 // If the original float is a Nan, make the half a Nan too
00611                 // else make Inf
00612                 m = (m != 0 && (e==0x7F800000)) ? ((1 << 23) - 1) : 0;
00613                 h = (((half)s) << 15) | (half)((0x1F << 10)) | (half)(m >> 13);
00614             }
00615             else 
00616             if (e <= 0x38000000) // <= -15
00617             {
00618                 // denormalized, or 0 number.
00619                 e = (0x38000000 - e) >> 23;
00620                 m >>= (14 + e);
00621                 h = (((half)s) << 15) | (half)(m);
00622             }
00623             else
00624             {
00625                 // straight forward case
00626                 h = (((half)s) << 15) | (half)((e-0x38000000) >> 13) | (half)(m >> 13);
00627             }
00628             return h;
00629         }
00630 
00631         float HFtoF(half h) const
00632         {
00633             unsigned int f;
00634             unsigned int s = (unsigned int)(h>>15);
00635             unsigned int e = (unsigned int)(h&0x7C00);
00636             unsigned int m = (unsigned int)(h&0x03FF);
00637             
00638             if (e == 0x7C00)
00639             {
00640                 // we have a half-float NaN or Inf, we convert to a float Nan or Inf
00641                 e = (0xFF<<23);
00642                 if (m != 0) m = ((1<<23)-1); 
00643             }
00644             else 
00645             if (e == 0x00000000)
00646             {
00647                 // denormalized or 0
00648                 if (m != 0)
00649                 {
00650                    m <<= 1;
00651                    e = 0x38000000;
00652                    while ((m&(1<<10)) == 0)
00653                    {
00654                        m <<= 1;
00655                        e -= (1<<23);
00656                     }
00657                     m &= ((1<<10)-1); // keep the mantissa on 10 bits
00658                     m <<= 13; // and now shift it on 23 bits
00659                 }
00660             }
00661             else
00662             {
00663                 m <<= 13; // mantissa on 23 bits
00664                 e = (e<<13) + 0x38000000;
00665             }
00666 
00667             f = (s<<31)|e|m;
00668             return *((float *)&f);
00669         }
00670     };
00671 
00672     // Corresponding C Types
00673     typedef char                                fbxByte1;
00674     typedef unsigned char                       fbxUByte1;
00675     typedef short                               fbxShort1;
00676     typedef unsigned short                      fbxUShort1;
00677     typedef unsigned int                        fbxUInteger1;
00678 #if defined(KARCH_DEV_MSC) && !defined(KARCH_DEV_INTEL)
00679     typedef signed __int64                      fbxLongLong1;
00680     typedef unsigned __int64                    fbxULongLong1;
00681 #else
00682     typedef signed long long                    fbxLongLong1;
00683     typedef unsigned long long                  fbxULongLong1;
00684 #endif
00685     typedef bool                                fbxBool1;
00686     typedef int                                 fbxInteger1;
00687     typedef float                               fbxFloat1;
00688     typedef double                              fbxDouble1;
00689     typedef fbxVectorTemplate2<double>          fbxDouble2;
00690     typedef fbxVectorTemplate3<double>          fbxDouble3;
00691     typedef fbxVectorTemplate4<double>          fbxDouble4;
00692     typedef fbxVectorTemplate4<fbxDouble4>      fbxDouble44;
00693     typedef int                                 fbxEnum;
00694     typedef KString                             fbxString;
00695     typedef KTime                               fbxTime;
00696     typedef fbxBlob                             KFbxBlob;
00697     class                                       fbxReference {}; // void type for references
00698     typedef fbxDistance                         KFbxDistance;
00699 
00700     // Type memory footprint
00701     const size_t FbxTypeSizeOf[eMAX_TYPES] = {
00702         0,
00703         sizeof(fbxByte1),
00704         sizeof(fbxUByte1),
00705         sizeof(fbxShort1),
00706         sizeof(fbxUShort1),
00707         sizeof(fbxUInteger1),
00708         sizeof(fbxLongLong1),
00709         sizeof(fbxULongLong1),
00710         sizeof(fbxHalfFloat),
00711         sizeof(fbxBool1),
00712         sizeof(fbxInteger1),
00713         sizeof(fbxFloat1),
00714         sizeof(fbxDouble1),
00715         sizeof(fbxDouble2),
00716         sizeof(fbxDouble3),
00717         sizeof(fbxDouble4),
00718         sizeof(fbxDouble44),
00719         sizeof(fbxEnum),
00720         sizeof(fbxString),
00721         sizeof(fbxTime),
00722         sizeof(fbxReference),
00723         sizeof(fbxBlob),
00724         sizeof(fbxDistance),
00725         sizeof(fbxDateTime)
00726     };
00727 
00728     // Type management for properties
00729     template <class T> inline EFbxType FbxTypeOf( T const &pItem ) { K_ASSERT_MSG_NOW("Unknown type" ); return eUNIDENTIFIED; }
00730 
00731     inline EFbxType FbxTypeOf( fbxByte1 const &pItem )      { return eBYTE1;      }
00732     inline EFbxType FbxTypeOf( fbxUByte1 const &pItem )     { return eUBYTE1;     }
00733     inline EFbxType FbxTypeOf( fbxShort1 const &pItem )     { return eSHORT1;     }
00734     inline EFbxType FbxTypeOf( fbxUShort1 const &pItem )    { return eUSHORT1;    }
00735     inline EFbxType FbxTypeOf( fbxUInteger1 const &pItem )  { return eUINTEGER1;  }
00736     inline EFbxType FbxTypeOf( fbxLongLong1 const &pItem )  { return eLONGLONG1;  }
00737     inline EFbxType FbxTypeOf( fbxULongLong1 const &pItem ) { return eULONGLONG1; }
00738     inline EFbxType FbxTypeOf( fbxHalfFloat const &pItem )  { return eHALFFLOAT;  }
00739     inline EFbxType FbxTypeOf( fbxBool1 const &pItem )      { return eBOOL1;      }
00740     inline EFbxType FbxTypeOf( fbxInteger1 const &pItem )   { return eINTEGER1;   }
00741     inline EFbxType FbxTypeOf( fbxFloat1 const &pItem )     { return eFLOAT1;     }
00742     inline EFbxType FbxTypeOf( fbxDouble1 const &pItem )    { return eDOUBLE1;    }
00743     inline EFbxType FbxTypeOf( fbxDouble2 const &pItem )    { return eDOUBLE2;    }
00744     inline EFbxType FbxTypeOf( fbxDouble3 const &pItem )    { return eDOUBLE3;    }
00745     inline EFbxType FbxTypeOf( fbxDouble4 const &pItem )    { return eDOUBLE4;    }
00746     inline EFbxType FbxTypeOf( fbxDouble44 const &pItem )   { return eDOUBLE44;   }
00747 //  inline EFbxType FbxTypeOf( fbxEnum const &pItem )       { return eENUM;       }
00748     inline EFbxType FbxTypeOf( fbxString const &pItem )     { return eSTRING;     }
00749     inline EFbxType FbxTypeOf( fbxTime  const &pItem )      { return eTIME;       }
00750     inline EFbxType FbxTypeOf( fbxReference const &pItem )  { return eREFERENCE;  }
00751     inline EFbxType FbxTypeOf( fbxBlob const &pItem )       { return eBLOB;       }
00752     inline EFbxType FbxTypeOf( fbxDistance const &pItem)    { return eDISTANCE;   }
00753     inline EFbxType FbxTypeOf( fbxDateTime const &pItem)    { return eDATETIME;   }
00754 
00755     // To overcome VC6/net2002 compiler bugs I need a function with a different
00756     // prototype than FbxTypeOf( T const &pItem ) but rather that struggling to
00757     // find the correct prototype, we simply define a different function.
00758     // Since I need it in the LayerElement classes only to properly handle the
00759     // KFbxSurfaceMaterial*, KFbxTexure* and kReference* types, It is not a
00760     // big deal to have this duplicata of function. However, when the LayerElement
00761     // stuff is converted to properties, this set of function SHOULD be deleted.
00762     template <class T> inline EFbxType _FbxTypeOf( T* const &pItem) { return eREFERENCE; }
00763     inline EFbxType _FbxTypeOf( fbxByte1 const &pItem )      { return eBYTE1;      }
00764     inline EFbxType _FbxTypeOf( fbxUByte1 const &pItem )     { return eUBYTE1;     }
00765     inline EFbxType _FbxTypeOf( fbxShort1 const &pItem )     { return eSHORT1;     }
00766     inline EFbxType _FbxTypeOf( fbxUShort1 const &pItem )    { return eUSHORT1;    }
00767     inline EFbxType _FbxTypeOf( fbxUInteger1 const &pItem )  { return eUINTEGER1;  }
00768     inline EFbxType _FbxTypeOf( fbxLongLong1 const &pItem )  { return eLONGLONG1;  }
00769     inline EFbxType _FbxTypeOf( fbxULongLong1 const &pItem ) { return eULONGLONG1; }
00770     inline EFbxType _FbxTypeOf( fbxHalfFloat const &pItem )  { return eHALFFLOAT;  }
00771     inline EFbxType _FbxTypeOf( fbxBool1 const &pItem )      { return eBOOL1;      }
00772     inline EFbxType _FbxTypeOf( fbxInteger1 const &pItem )   { return eINTEGER1;   }
00773     inline EFbxType _FbxTypeOf( fbxFloat1 const &pItem )     { return eFLOAT1;     }
00774     inline EFbxType _FbxTypeOf( fbxDouble1 const &pItem )    { return eDOUBLE1;    }
00775     inline EFbxType _FbxTypeOf( fbxDouble2 const &pItem )    { return eDOUBLE2;    }
00776     inline EFbxType _FbxTypeOf( fbxDouble3 const &pItem )    { return eDOUBLE3;    }
00777     inline EFbxType _FbxTypeOf( fbxDouble4 const &pItem )    { return eDOUBLE4;    }
00778     inline EFbxType _FbxTypeOf( fbxDouble44 const &pItem )   { return eDOUBLE44;   }
00779 //  inline EFbxType _FbxTypeOf( fbxEnum const &pItem )       { return eENUM;       }
00780     inline EFbxType _FbxTypeOf( fbxString const &pItem )     { return eSTRING;     }
00781     inline EFbxType _FbxTypeOf( fbxTime const &pItem )       { return eTIME;       }
00782     inline EFbxType _FbxTypeOf( fbxReference const &pItem )  { return eREFERENCE;  }
00783     inline EFbxType _FbxTypeOf( fbxBlob const &pItem )       { return eBLOB;       }
00784     inline EFbxType _FbxTypeOf( KFbxColor   const &pItem )   { return eDOUBLE4;    }
00785     inline EFbxType _FbxTypeOf( fbxDistance const &pItem )   { return eDISTANCE;   }
00786     inline EFbxType _FbxTypeOf( fbxDateTime const &pItem )   { return eDATETIME;   }
00787 
00788     // Additional types
00789     inline EFbxType FbxTypeOf( KFbxColor    const &pItem )  { return eDOUBLE4; }
00790 
00791     // internal type management
00792 //  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; }
00793 /*  template< class T1,class T2 > inline bool internalfbxCopy  ( T1 &pDst,T2 const &pSrc ) { pDst    = (T1)pSrc; return true; }
00794     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; }
00795     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; }
00796     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; }
00797 */
00798     bool KFBX_DLL fbxCopyStr( fbxDouble1& pDst,  fbxString const& pSrc );
00799     bool KFBX_DLL fbxCopyStr( fbxBool1& pDst,    fbxString const& pSrc );
00800     bool KFBX_DLL fbxCopyStr( fbxInteger1& pDst, fbxString const& pSrc );
00801     bool KFBX_DLL fbxCopyStr( fbxByte1& pDst, fbxString const& pSrc );
00802     bool KFBX_DLL fbxCopyStr( fbxUByte1& pDst, fbxString const& pSrc );
00803     bool KFBX_DLL fbxCopyStr( fbxShort1& pDst, fbxString const& pSrc );
00804     bool KFBX_DLL fbxCopyStr( fbxUShort1& pDst, fbxString const& pSrc );
00805     bool KFBX_DLL fbxCopyStr( fbxUInteger1& pDst, fbxString const& pSrc );
00806     bool KFBX_DLL fbxCopyStr( fbxLongLong1& pDst, fbxString const& pSrc );
00807     bool KFBX_DLL fbxCopyStr( fbxULongLong1& pDst, fbxString const& pSrc );
00808     bool KFBX_DLL fbxCopyStr( fbxHalfFloat& pDst,  fbxString const& pSrc );
00809 
00810     // Copy types and conversions
00811     template< class T1,class T2 > inline bool fbxCopy ( T1 &pDst,T2 const &pSrc ) { K_ASSERT_MSG_NOW("Incompatible type assigment" ); return false; }
00812 
00813     // Copy Types and Conversions
00814     inline bool fbxCopy( fbxByte1 &pDst,fbxByte1 const &pSrc )          { pDst=pSrc; return true; }
00815     inline bool fbxCopy( fbxUByte1 &pDst,fbxUByte1 const &pSrc )        { pDst=pSrc; return true; }
00816     inline bool fbxCopy( fbxShort1 &pDst,fbxShort1 const &pSrc )        { pDst=pSrc; return true; }
00817     inline bool fbxCopy( fbxUShort1 &pDst,fbxUShort1 const &pSrc )      { pDst=pSrc; return true; }
00818     inline bool fbxCopy( fbxUInteger1 &pDst,fbxUInteger1 const &pSrc )  { pDst=pSrc; return true; }
00819     inline bool fbxCopy( fbxLongLong1 &pDst,fbxLongLong1 const &pSrc )  { pDst=pSrc; return true; }
00820     inline bool fbxCopy( fbxULongLong1 &pDst,fbxULongLong1 const &pSrc ){ pDst=pSrc; return true; }
00821     inline bool fbxCopy( fbxHalfFloat &pDst, fbxHalfFloat const &pSrc ) { pDst=pSrc; return true; }
00822     inline bool fbxCopy( fbxBool1 &pDst,fbxBool1 const &pSrc )          { pDst=pSrc; return true; }
00823     inline bool fbxCopy( fbxInteger1 &pDst,fbxInteger1 const &pSrc )    { pDst=pSrc; return true; }
00824     inline bool fbxCopy( fbxFloat1 &pDst,fbxFloat1 const &pSrc )        { pDst=pSrc; return true; }
00825     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble1 const &pSrc )      { pDst=pSrc; return true; }
00826     inline bool fbxCopy( fbxDouble2 &pDst,fbxDouble2 const &pSrc )      { pDst=pSrc; return true; }
00827     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble3 const &pSrc )      { pDst=pSrc; return true; }
00828     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble4 const &pSrc )      { pDst=pSrc; return true; }
00829     inline bool fbxCopy( fbxDouble44 &pDst,fbxDouble44 const &pSrc )    { pDst=pSrc; return true; }
00830 //  inline bool fbxCopy( fbxEnum &pDst,fbxEnum const &pSrc )            { pDst=pSrc; return true; }
00831     inline bool fbxCopy( fbxString &pDst,fbxString const &pSrc )        { pDst=pSrc; return true; }
00832     inline bool fbxCopy( fbxTime &pDst,fbxTime const &pSrc )            { pDst=pSrc; return true; }
00833     inline bool fbxCopy( fbxReference &pDst,fbxReference const &pSrc )  { pDst=pSrc; return true; }
00834     inline bool fbxCopy( fbxBlob &pDst,fbxBlob const &pSrc )            { pDst=pSrc; return true; }
00835     inline bool fbxCopy( fbxDistance &pDst, fbxDistance const &pSrc )   { pDst=pSrc; return true; }
00836     inline bool fbxCopy( fbxDateTime &pDst, fbxDateTime const &pSrc )   { pDst=pSrc; return true; }
00837 
00838     // To FbxBool
00839     inline bool fbxCopy( fbxBool1 &pDst,fbxByte1 const &pSrc )          { pDst   = pSrc == 0 ? false : true; return true; }
00840     inline bool fbxCopy( fbxBool1 &pDst,fbxUByte1 const &pSrc )         { pDst   = pSrc == 0 ? false : true; return true; }
00841     inline bool fbxCopy( fbxBool1 &pDst,fbxShort1 const &pSrc )         { pDst   = pSrc == 0 ? false : true; return true; }
00842     inline bool fbxCopy( fbxBool1 &pDst,fbxUShort1 const &pSrc )        { pDst   = pSrc == 0 ? false : true; return true; }
00843     inline bool fbxCopy( fbxBool1 &pDst,fbxUInteger1 const &pSrc )      { pDst   = pSrc == 0 ? false : true; return true; }
00844     inline bool fbxCopy( fbxBool1 &pDst,fbxLongLong1 const &pSrc )      { pDst   = pSrc == 0 ? false : true; return true; }
00845     inline bool fbxCopy( fbxBool1 &pDst,fbxULongLong1 const &pSrc )     { pDst   = pSrc == 0 ? false : true; return true; }
00846     inline bool fbxCopy( fbxBool1 &pDst,fbxHalfFloat const &pSrc )      { return false; }
00847 //  inline bool fbxCopy( fbxBool1 &pDst,fbxBool1 const &pSrc )          { pDst   = (fbxBool1)pSrc; return true; }
00848     inline bool fbxCopy( fbxBool1 &pDst,fbxInteger1 const &pSrc )       { pDst   = pSrc == 0 ? false : true; return true; }
00849     inline bool fbxCopy( fbxBool1 &pDst,fbxFloat1 const &pSrc )         { pDst   = pSrc == 0.f ? false : true; return true; }
00850     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble1 const &pSrc )        { pDst   = pSrc == 0. ? false : true; return true; }
00851     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble2 const &pSrc )        { return false; }
00852     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble3 const &pSrc )        { return false; }
00853     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble4 const &pSrc )        { return false; }
00854     inline bool fbxCopy( fbxBool1 &pDst,fbxDouble44 const &pSrc )       { return false; }
00855 //  inline bool fbxCopy( fbxBool1 &pDst,fbxEnum const &pSrc )           { return false; }
00856     inline bool fbxCopy( fbxBool1 &pDst,fbxString const &pSrc )         { return fbxCopyStr(pDst,pSrc); }
00857     inline bool fbxCopy( fbxBool1 &pDst,fbxTime const &pSrc )           { return false; }
00858     inline bool fbxCopy( fbxBool1 &pDst,fbxReference const &pSrc )      { return false; }
00859     inline bool fbxCopy( fbxBool1 &pDst,fbxBlob const &pSrc )           { return false; }
00860     inline bool fbxCopy( fbxBool1 &pDst, fbxDistance const &pSrc )      { return false; }
00861     inline bool fbxCopy( fbxBool1 &pDst, fbxDateTime const &pSrc )      { return false; }
00862 
00863     // To FbxByte
00864     //inline bool fbxCopy( fbxByte1 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxByte1)pSrc; return true; }
00865     inline bool fbxCopy( fbxByte1 &pDst,fbxUByte1 const &pSrc )         { pDst   = (fbxByte1)pSrc; return true; }
00866     inline bool fbxCopy( fbxByte1 &pDst,fbxShort1 const &pSrc )         { return false; }
00867     inline bool fbxCopy( fbxByte1 &pDst,fbxUShort1 const &pSrc )        { return false; }
00868     inline bool fbxCopy( fbxByte1 &pDst,fbxUInteger1 const &pSrc )      { return false; }
00869     inline bool fbxCopy( fbxByte1 &pDst,fbxLongLong1 const &pSrc )      { return false; }
00870     inline bool fbxCopy( fbxByte1 &pDst,fbxULongLong1 const &pSrc )     { return false; }
00871     inline bool fbxCopy( fbxByte1 &pDst,fbxHalfFloat const &pSrc )      { return false; }
00872     inline bool fbxCopy( fbxByte1 &pDst,fbxBool1 const &pSrc )          { pDst   = (fbxByte1)pSrc; return true; }
00873     inline bool fbxCopy( fbxByte1 &pDst,fbxInteger1 const &pSrc )       { pDst   = (fbxByte1)pSrc; return true; }
00874     inline bool fbxCopy( fbxByte1 &pDst,fbxFloat1 const &pSrc )         { pDst   = (fbxByte1)pSrc; return true; }
00875     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble1 const &pSrc )        { pDst   = (fbxByte1)pSrc; return true; }
00876     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble2 const &pSrc )        { return false; }
00877     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble3 const &pSrc )        { return false; }
00878     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble4 const &pSrc )        { return false; }
00879     inline bool fbxCopy( fbxByte1 &pDst,fbxDouble44 const &pSrc )       { return false; }
00880 //  inline bool fbxCopy( fbxByte1 &pDst,fbxEnum const &pSrc )           { return false; }
00881     inline bool fbxCopy( fbxByte1 &pDst,fbxString const &pSrc )         { return fbxCopyStr(pDst,pSrc); }
00882     inline bool fbxCopy( fbxByte1 &pDst,fbxTime const &pSrc )           { return false; }
00883     inline bool fbxCopy( fbxByte1 &pDst,fbxReference const &pSrc )      { return false; }
00884     inline bool fbxCopy( fbxByte1 &pDst,fbxBlob const &pSrc )           { return false; }
00885     inline bool fbxCopy( fbxByte1 &pDst,fbxDistance const &pSrc )       { return false; }
00886     inline bool fbxCopy( fbxByte1 &pDst,fbxDateTime const &pSrc )       { return false; }
00887 
00888     // To FbxUByte
00889     inline bool fbxCopy( fbxUByte1 &pDst,fbxByte1 const &pSrc )         { pDst   = (fbxUByte1)pSrc; return true; }
00890 //  inline bool fbxCopy( fbxUByte1 &pDst,fbxUByte1 const &pSrc )        { pDst   = (fbxUByte1)pSrc; return true; }
00891     inline bool fbxCopy( fbxUByte1 &pDst,fbxShort1 const &pSrc )        { return false; }
00892     inline bool fbxCopy( fbxUByte1 &pDst,fbxUShort1 const &pSrc )       { return false; }
00893     inline bool fbxCopy( fbxUByte1 &pDst,fbxUInteger1 const &pSrc )     { return false; }
00894     inline bool fbxCopy( fbxUByte1 &pDst,fbxLongLong1 const &pSrc )     { return false; }
00895     inline bool fbxCopy( fbxUByte1 &pDst,fbxULongLong1 const &pSrc )    { return false; }
00896     inline bool fbxCopy( fbxUByte1 &pDst,fbxHalfFloat const &pSrc )     { return false; }
00897     inline bool fbxCopy( fbxUByte1 &pDst,fbxBool1 const &pSrc )         { pDst   = (fbxUByte1)pSrc; return true; }
00898     inline bool fbxCopy( fbxUByte1 &pDst,fbxInteger1 const &pSrc )      { pDst   = (fbxUByte1)pSrc; return true; }
00899     inline bool fbxCopy( fbxUByte1 &pDst,fbxFloat1 const &pSrc )        { pDst   = (fbxUByte1)pSrc; return true; }
00900     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble1 const &pSrc )       { pDst   = (fbxUByte1)pSrc; return true; }
00901     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble2 const &pSrc )       { return false; }
00902     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble3 const &pSrc )       { return false; }
00903     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble4 const &pSrc )       { return false; }
00904     inline bool fbxCopy( fbxUByte1 &pDst,fbxDouble44 const &pSrc )      { return false; }
00905 //  inline bool fbxCopy( fbxUByte1 &pDst,fbxEnum const &pSrc )          { return false; }
00906     inline bool fbxCopy( fbxUByte1 &pDst,fbxString const &pSrc )        { return fbxCopyStr(pDst,pSrc); }
00907     inline bool fbxCopy( fbxUByte1 &pDst,fbxTime const &pSrc )          { return false; }
00908     inline bool fbxCopy( fbxUByte1 &pDst,fbxReference const &pSrc )     { return false; }
00909     inline bool fbxCopy( fbxUByte1 &pDst,fbxBlob const &pSrc )          { return false; }
00910     inline bool fbxCopy( fbxUByte1 &pDst,fbxDistance const &pSrc )      { return false; }
00911     inline bool fbxCopy( fbxUByte1 &pDst,fbxDateTime const &pSrc )      { return false; }
00912 
00913     // To FbxShort
00914     inline bool fbxCopy( fbxShort1 &pDst,fbxByte1 const &pSrc )         { pDst   = (fbxShort1)pSrc; return true; }
00915     inline bool fbxCopy( fbxShort1 &pDst,fbxUByte1 const &pSrc )        { pDst   = (fbxShort1)pSrc; return true; }
00916 //  inline bool fbxCopy( fbxShort1 &pDst,fbxShort1 const &pSrc )        { pDst   = (fbxShort1)pSrc; return true; }
00917     inline bool fbxCopy( fbxShort1 &pDst,fbxUShort1 const &pSrc )       { return false; }
00918     inline bool fbxCopy( fbxShort1 &pDst,fbxUInteger1 const &pSrc )     { return false; }
00919     inline bool fbxCopy( fbxShort1 &pDst,fbxLongLong1 const &pSrc )     { return false; }
00920     inline bool fbxCopy( fbxShort1 &pDst,fbxULongLong1 const &pSrc )    { return false; }
00921     inline bool fbxCopy( fbxShort1 &pDst,fbxHalfFloat const &pSrc )     { return false; }
00922     inline bool fbxCopy( fbxShort1 &pDst,fbxBool1 const &pSrc )         { pDst   = (fbxShort1)pSrc; return true; }
00923     inline bool fbxCopy( fbxShort1 &pDst,fbxInteger1 const &pSrc )      { pDst   = (fbxShort1)pSrc; return true; }
00924     inline bool fbxCopy( fbxShort1 &pDst,fbxFloat1 const &pSrc )        { pDst   = (fbxShort1)pSrc; return true; }
00925     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble1 const &pSrc )       { pDst   = (fbxShort1)pSrc; return true; }
00926     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble2 const &pSrc )       { return false; }
00927     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble3 const &pSrc )       { return false; }
00928     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble4 const &pSrc )       { return false; }
00929     inline bool fbxCopy( fbxShort1 &pDst,fbxDouble44 const &pSrc )      { return false; }
00930 //  inline bool fbxCopy( fbxShort1 &pDst,fbxEnum const &pSrc )          { return false; }
00931     inline bool fbxCopy( fbxShort1 &pDst,fbxString const &pSrc )        { return fbxCopyStr(pDst,pSrc); }
00932     inline bool fbxCopy( fbxShort1 &pDst,fbxTime const &pSrc )          { return false; }
00933     inline bool fbxCopy( fbxShort1 &pDst,fbxReference const &pSrc )     { return false; }
00934     inline bool fbxCopy( fbxShort1 &pDst,fbxBlob const &pSrc )          { return false; }
00935     inline bool fbxCopy( fbxShort1 &pDst,fbxDistance const &pSrc )      { return false; }
00936     inline bool fbxCopy( fbxShort1 &pDst,fbxDateTime const &pSrc )      { return false; }
00937 
00938     // To FbxUShort
00939     inline bool fbxCopy( fbxUShort1 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxUShort1)pSrc; return true; }
00940     inline bool fbxCopy( fbxUShort1 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxUShort1)pSrc; return true; }
00941     inline bool fbxCopy( fbxUShort1 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxUShort1)pSrc; return true; }
00942 //  inline bool fbxCopy( fbxUShort1 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxUShort1)pSrc; return true; }
00943     inline bool fbxCopy( fbxUShort1 &pDst,fbxUInteger1 const &pSrc )    { return false; }
00944     inline bool fbxCopy( fbxUShort1 &pDst,fbxLongLong1 const &pSrc )    { return false; }
00945     inline bool fbxCopy( fbxUShort1 &pDst,fbxULongLong1 const &pSrc )   { return false; }
00946     inline bool fbxCopy( fbxUShort1 &pDst,fbxHalfFloat const &pSrc )    { return false; }
00947     inline bool fbxCopy( fbxUShort1 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxUShort1)pSrc; return true; }
00948     inline bool fbxCopy( fbxUShort1 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxUShort1)pSrc; return true; }
00949     inline bool fbxCopy( fbxUShort1 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxUShort1)pSrc; return true; }
00950     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble1 const &pSrc )      { pDst   = (fbxUShort1)pSrc; return true; }
00951     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble2 const &pSrc )      { return false; }
00952     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble3 const &pSrc )      { return false; }
00953     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble4 const &pSrc )      { return false; }
00954     inline bool fbxCopy( fbxUShort1 &pDst,fbxDouble44 const &pSrc )     { return false; }
00955 //  inline bool fbxCopy( fbxUShort1 &pDst,fbxEnum const &pSrc )         { return false; }
00956     inline bool fbxCopy( fbxUShort1 &pDst,fbxString const &pSrc )       { return fbxCopyStr(pDst,pSrc); }
00957     inline bool fbxCopy( fbxUShort1 &pDst,fbxTime const &pSrc )         { return false; }
00958     inline bool fbxCopy( fbxUShort1 &pDst,fbxReference const &pSrc )    { return false; }
00959     inline bool fbxCopy( fbxUShort1 &pDst,fbxBlob const &pSrc )         { return false; }
00960     inline bool fbxCopy( fbxUShort1 &pDst,fbxDistance const &pSrc )     { return false; }
00961     inline bool fbxCopy( fbxUShort1 &pDst,fbxDateTime const &pSrc )     { return false; }
00962 
00963     // To FbxInteger1
00964     inline bool fbxCopy( fbxInteger1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxInteger1)pSrc; return true; }
00965     inline bool fbxCopy( fbxInteger1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxInteger1)pSrc; return true; }
00966     inline bool fbxCopy( fbxInteger1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxInteger1)pSrc; return true; }
00967     inline bool fbxCopy( fbxInteger1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxInteger1)pSrc; return true; }
00968     inline bool fbxCopy( fbxInteger1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxInteger1)pSrc; return true; }
00969     inline bool fbxCopy( fbxInteger1 &pDst,fbxLongLong1 const &pSrc )   { pDst   = (fbxInteger1)pSrc; return true; }
00970     inline bool fbxCopy( fbxInteger1 &pDst,fbxULongLong1 const &pSrc )  { pDst   = (fbxInteger1)pSrc; return true; }
00971     inline bool fbxCopy( fbxInteger1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
00972     inline bool fbxCopy( fbxInteger1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxInteger1)pSrc; return true; }
00973 //  inline bool fbxCopy( fbxInteger1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxInteger1)pSrc; return true; }
00974     inline bool fbxCopy( fbxInteger1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxInteger1)pSrc; return true; }
00975     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxInteger1)pSrc; return true; }
00976     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble2 const &pSrc )     { return false; }
00977     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble3 const &pSrc )     { return false; }
00978     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble4 const &pSrc )     { return false; }
00979     inline bool fbxCopy( fbxInteger1 &pDst,fbxDouble44 const &pSrc )    { return false; }
00980 //  inline bool fbxCopy( fbxInteger1 &pDst,fbxEnum const &pSrc )        { return false; }
00981     inline bool fbxCopy( fbxInteger1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
00982     inline bool fbxCopy( fbxInteger1 &pDst,fbxTime const &pSrc )        { return false; }
00983     inline bool fbxCopy( fbxInteger1 &pDst,fbxReference const &pSrc )   { return false; }
00984     inline bool fbxCopy( fbxInteger1 &pDst,fbxBlob const &pSrc )        { return false; }
00985     inline bool fbxCopy( fbxInteger1 &pDst,fbxDistance const &pSrc )    { return false; }
00986     inline bool fbxCopy( fbxInteger1 &pDst,fbxDateTime const &pSrc )    { return false; }
00987 
00988     // To FbxUInteger1
00989     inline bool fbxCopy( fbxUInteger1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxUInteger1)pSrc; return true; }
00990     inline bool fbxCopy( fbxUInteger1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxUInteger1)pSrc; return true; }
00991     inline bool fbxCopy( fbxUInteger1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxUInteger1)pSrc; return true; }
00992     inline bool fbxCopy( fbxUInteger1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxUInteger1)pSrc; return true; }
00993 //  inline bool fbxCopy( fbxUInteger1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxUInteger1)pSrc; return true; }
00994     inline bool fbxCopy( fbxUInteger1 &pDst,fbxLongLong1 const &pSrc )   { pDst   = (fbxUInteger1)pSrc; return true; }
00995     inline bool fbxCopy( fbxUInteger1 &pDst,fbxULongLong1 const &pSrc )  { pDst   = (fbxUInteger1)pSrc; return true; }
00996     inline bool fbxCopy( fbxUInteger1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
00997     inline bool fbxCopy( fbxUInteger1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxUInteger1)pSrc; return true; }
00998     inline bool fbxCopy( fbxUInteger1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxUInteger1)pSrc; return true; }
00999     inline bool fbxCopy( fbxUInteger1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxUInteger1)pSrc; return true; }
01000     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxUInteger1)pSrc; return true; }
01001     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble2 const &pSrc )     { return false; }
01002     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble3 const &pSrc )     { return false; }
01003     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble4 const &pSrc )     { return false; }
01004     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDouble44 const &pSrc )    { return false; }
01005 //  inline bool fbxCopy( fbxUInteger1 &pDst,fbxEnum const &pSrc )        { return false; }
01006     inline bool fbxCopy( fbxUInteger1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
01007     inline bool fbxCopy( fbxUInteger1 &pDst,fbxTime const &pSrc )        { return false; }
01008     inline bool fbxCopy( fbxUInteger1 &pDst,fbxReference const &pSrc )   { return false; }
01009     inline bool fbxCopy( fbxUInteger1 &pDst,fbxBlob const &pSrc )        { return false; }
01010     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDistance const &pSrc )    { return false; }
01011     inline bool fbxCopy( fbxUInteger1 &pDst,fbxDateTime const &pSrc )    { return false; }
01012 
01013     // To FbxLongLong
01014     inline bool fbxCopy( fbxLongLong1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxLongLong1)pSrc; return true; }
01015     inline bool fbxCopy( fbxLongLong1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxLongLong1)pSrc; return true; }
01016     inline bool fbxCopy( fbxLongLong1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxLongLong1)pSrc; return true; }
01017     inline bool fbxCopy( fbxLongLong1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxLongLong1)pSrc; return true; }
01018     inline bool fbxCopy( fbxLongLong1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxLongLong1)pSrc; return true; }
01019 //  inline bool fbxCopy( fbxLongLong1 &pDst,fbxLongLong const &pSrc )    { pDst   = (fbxLongLong1)pSrc; return true; }
01020     inline bool fbxCopy( fbxLongLong1 &pDst,fbxULongLong1 const &pSrc )  { pDst   = (fbxLongLong1)pSrc; return true; }
01021     inline bool fbxCopy( fbxLongLong1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
01022     inline bool fbxCopy( fbxLongLong1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxLongLong1)pSrc; return true; }
01023     inline bool fbxCopy( fbxLongLong1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxLongLong1)pSrc; return true; }
01024     inline bool fbxCopy( fbxLongLong1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxLongLong1)pSrc; return true; }
01025     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxLongLong1)pSrc; return true; }
01026     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble2 const &pSrc )     { return false; }
01027     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble3 const &pSrc )     { return false; }
01028     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble4 const &pSrc )     { return false; }
01029     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDouble44 const &pSrc )    { return false; }
01030 //  inline bool fbxCopy( fbxLongLong1 &pDst,fbxEnum const &pSrc )        { return false; }
01031     inline bool fbxCopy( fbxLongLong1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
01032     inline bool fbxCopy( fbxLongLong1 &pDst,fbxTime const &pSrc )        { return false; }
01033     inline bool fbxCopy( fbxLongLong1 &pDst,fbxReference const &pSrc )   { return false; }
01034     inline bool fbxCopy( fbxLongLong1 &pDst,fbxBlob const &pSrc )        { return false; }
01035     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDistance const &pSrc )    { return false; }
01036     inline bool fbxCopy( fbxLongLong1 &pDst,fbxDateTime const &pSrc )    { return false; }
01037 
01038     // To FbxULongLong
01039     inline bool fbxCopy( fbxULongLong1 &pDst,fbxByte1 const &pSrc )       { pDst   = (fbxULongLong1)pSrc; return true; }
01040     inline bool fbxCopy( fbxULongLong1 &pDst,fbxUByte1 const &pSrc )      { pDst   = (fbxULongLong1)pSrc; return true; }
01041     inline bool fbxCopy( fbxULongLong1 &pDst,fbxShort1 const &pSrc )      { pDst   = (fbxULongLong1)pSrc; return true; }
01042     inline bool fbxCopy( fbxULongLong1 &pDst,fbxUShort1 const &pSrc )     { pDst   = (fbxULongLong1)pSrc; return true; }
01043     inline bool fbxCopy( fbxULongLong1 &pDst,fbxUInteger1 const &pSrc )   { pDst   = (fbxULongLong1)pSrc; return true; }
01044     inline bool fbxCopy( fbxULongLong1 &pDst,fbxLongLong1 const &pSrc )   { pDst   = (fbxULongLong1)pSrc; return true; }
01045 //  inline bool fbxCopy( fbxULongLong1 &pDst,fbxULongLong const &pSrc )   { pDst   = (fbxULongLong1)pSrc; return true; }
01046     inline bool fbxCopy( fbxULongLong1 &pDst,fbxHalfFloat const &pSrc )   { return false; }
01047     inline bool fbxCopy( fbxULongLong1 &pDst,fbxBool1 const &pSrc )       { pDst   = (fbxULongLong1)pSrc; return true; }
01048     inline bool fbxCopy( fbxULongLong1 &pDst,fbxInteger1 const &pSrc )    { pDst   = (fbxULongLong1)pSrc; return true; }
01049     inline bool fbxCopy( fbxULongLong1 &pDst,fbxFloat1 const &pSrc )      { pDst   = (fbxULongLong1)pSrc; return true; }
01050     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble1 const &pSrc )     { pDst   = (fbxULongLong1)pSrc; return true; }
01051     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble2 const &pSrc )     { return false; }
01052     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble3 const &pSrc )     { return false; }
01053     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble4 const &pSrc )     { return false; }
01054     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDouble44 const &pSrc )    { return false; }
01055 //  inline bool fbxCopy( fbxULongLong1 &pDst,fbxEnum const &pSrc )        { return false; }
01056     inline bool fbxCopy( fbxULongLong1 &pDst,fbxString const &pSrc )      { return fbxCopyStr(pDst,pSrc); }
01057     inline bool fbxCopy( fbxULongLong1 &pDst,fbxTime const &pSrc )        { return false; }
01058     inline bool fbxCopy( fbxULongLong1 &pDst,fbxReference const &pSrc )   { return false; }
01059     inline bool fbxCopy( fbxULongLong1 &pDst,fbxBlob const &pSrc )        { return false; }
01060     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDistance const &pSrc )    { return false; }
01061     inline bool fbxCopy( fbxULongLong1 &pDst,fbxDateTime const &pSrc )    { return false; }
01062 
01063     // To fbxHalfFloat
01064     inline bool fbxCopy( fbxHalfFloat &pDst,fbxByte1 const &pSrc )         { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01065     inline bool fbxCopy( fbxHalfFloat &pDst,fbxUByte1 const &pSrc )        { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01066     inline bool fbxCopy( fbxHalfFloat &pDst,fbxShort1 const &pSrc )        { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01067     inline bool fbxCopy( fbxHalfFloat &pDst,fbxUShort1 const &pSrc )       { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01068     inline bool fbxCopy( fbxHalfFloat &pDst,fbxUInteger1 const &pSrc )     { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01069     inline bool fbxCopy( fbxHalfFloat &pDst,fbxLongLong1 const &pSrc )     { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01070     inline bool fbxCopy( fbxHalfFloat &pDst,fbxULongLong1 const &pSrc )    { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01071     inline bool fbxCopy( fbxHalfFloat &pDst,fbxBool1 const &pSrc )         { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01072     inline bool fbxCopy( fbxHalfFloat &pDst,fbxInteger1 const &pSrc )      { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01073 //  inline bool fbxCopy( fbxHalfFloat &pDst,fbxHalfFloat const &pSrc )        { pDst   = (fbxHalfFloat)pSrc; return true; }
01074     inline bool fbxCopy( fbxHalfFloat &pDst,fbxFloat1 const &pSrc )        { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01075     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble1 const &pSrc )       { fbxHalfFloat hf((float)pSrc); pDst = hf; return true; }
01076     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble2 const &pSrc )       { return false; }
01077     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble3 const &pSrc )       { return false; }
01078     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble4 const &pSrc )       { return false; }
01079     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDouble44 const &pSrc )      { return false; }
01080 //  inline bool fbxCopy( fbxHalfFloat &pDst,fbxEnum const &pSrc )          { return false; }
01081     inline bool fbxCopy( fbxHalfFloat &pDst,fbxString const &pSrc )        { return false; }
01082     inline bool fbxCopy( fbxHalfFloat &pDst,fbxTime const &pSrc )          { return false; }
01083     inline bool fbxCopy( fbxHalfFloat &pDst,fbxReference const &pSrc )     { return false; }
01084     inline bool fbxCopy( fbxHalfFloat &pDst,fbxBlob const &pSrc )          { return false; }
01085     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDistance const &pSrc )      { fbxHalfFloat hf(pSrc.internalValue()); pDst = hf; return true; }
01086     inline bool fbxCopy( fbxHalfFloat &pDst,fbxDateTime const &pSrc )      { return false; }
01087 
01088     // To FbxFloat1
01089     inline bool fbxCopy( fbxFloat1 &pDst,fbxByte1 const &pSrc )         { pDst   = (fbxFloat1)pSrc; return true; }
01090     inline bool fbxCopy( fbxFloat1 &pDst,fbxUByte1 const &pSrc )        { pDst   = (fbxFloat1)pSrc; return true; }
01091     inline bool fbxCopy( fbxFloat1 &pDst,fbxShort1 const &pSrc )        { pDst   = (fbxFloat1)pSrc; return true; }
01092     inline bool fbxCopy( fbxFloat1 &pDst,fbxUShort1 const &pSrc )       { pDst   = (fbxFloat1)pSrc; return true; }
01093     inline bool fbxCopy( fbxFloat1 &pDst,fbxUInteger1 const &pSrc )     { pDst   = (fbxFloat1)pSrc; return true; }
01094     inline bool fbxCopy( fbxFloat1 &pDst,fbxLongLong1 const &pSrc )     { return false; }
01095     inline bool fbxCopy( fbxFloat1 &pDst,fbxULongLong1 const &pSrc )    { return false; }
01096     inline bool fbxCopy( fbxFloat1 &pDst,fbxHalfFloat const &pSrc )     { pDst   = pSrc.value()   ; return true; }
01097     inline bool fbxCopy( fbxFloat1 &pDst,fbxBool1 const &pSrc )         { pDst   = (fbxFloat1)pSrc; return true; }
01098     inline bool fbxCopy( fbxFloat1 &pDst,fbxInteger1 const &pSrc )      { pDst   = (fbxFloat1)pSrc; return true; }
01099 //  inline bool fbxCopy( fbxFloat1 &pDst,fbxFloat1 const &pSrc )        { pDst   = (fbxFloat1)pSrc; return true; }
01100     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble1 const &pSrc )       { pDst   = (fbxFloat1)pSrc; return true; }
01101     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble2 const &pSrc )       { return false; }
01102     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble3 const &pSrc )       { return false; }
01103     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble4 const &pSrc )       { return false; }
01104     inline bool fbxCopy( fbxFloat1 &pDst,fbxDouble44 const &pSrc )      { return false; }
01105 //  inline bool fbxCopy( fbxFloat1 &pDst,fbxEnum const &pSrc )          { return false; }
01106     inline bool fbxCopy( fbxFloat1 &pDst,fbxString const &pSrc )        { return false; }
01107     inline bool fbxCopy( fbxFloat1 &pDst,fbxTime const &pSrc )          { return false; }
01108     inline bool fbxCopy( fbxFloat1 &pDst,fbxReference const &pSrc )     { return false; }
01109     inline bool fbxCopy( fbxFloat1 &pDst,fbxBlob const &pSrc )          { return false; }
01110     inline bool fbxCopy( fbxFloat1 &pDst,fbxDistance const &pSrc )      { pDst = pSrc.internalValue(); return true; }
01111     inline bool fbxCopy( fbxFloat1 &pDst,fbxDateTime const &pSrc )      { return false; }
01112 
01113     // To FbxDouble1
01114     inline bool fbxCopy( fbxDouble1 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01115     inline bool fbxCopy( fbxDouble1 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01116     inline bool fbxCopy( fbxDouble1 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01117     inline bool fbxCopy( fbxDouble1 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01118     inline bool fbxCopy( fbxDouble1 &pDst,fbxUInteger1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01119     inline bool fbxCopy( fbxDouble1 &pDst,fbxLongLong1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01120     inline bool fbxCopy( fbxDouble1 &pDst,fbxULongLong1 const &pSrc )   { pDst   = (fbxDouble1)pSrc; return true; }
01121     inline bool fbxCopy( fbxDouble1 &pDst,fbxHalfFloat const &pSrc )    { pDst   = (fbxDouble1)pSrc.value(); return true; }
01122     inline bool fbxCopy( fbxDouble1 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01123     inline bool fbxCopy( fbxDouble1 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxDouble1)pSrc; return true; }
01124     inline bool fbxCopy( fbxDouble1 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01125 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble1 const &pSrc )      { return internalfbxCopy(pDst,pSrc); }
01126     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble2 const &pSrc )      { pDst   = (fbxDouble1)pSrc[0];     return true; }
01127     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble3 const &pSrc )      { pDst   = (fbxDouble1)pSrc[0];     return true; }
01128     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble4 const &pSrc )      { pDst   = (fbxDouble1)pSrc[0];     return true; }
01129     inline bool fbxCopy( fbxDouble1 &pDst,fbxDouble44 const &pSrc )     { pDst   = (fbxDouble1)pSrc[0][0];  return true; }
01130 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxEnum const &pSrc )         { return false; }
01131     inline bool fbxCopy( fbxDouble1 &pDst,fbxString const &pSrc )       { return fbxCopyStr(pDst,pSrc); }
01132     inline bool fbxCopy( fbxDouble1 &pDst,fbxTime const &pSrc )         { pDst   = (fbxDouble1)pSrc.GetSecondDouble();  return true; }
01133 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxReference const &pSrc )    { return false; }
01134 //  inline bool fbxCopy( fbxDouble1 &pDst,fbxBlob const &pSrc )         { return false; }
01135     inline bool fbxCopy( fbxDouble1 &pDst,fbxDistance const &pSrc )     { pDst = pSrc.internalValue(); return true; }
01136 //    inline bool fbxCopy( fbxDouble1 &pDst,fbxDateTime const &pSrc )     { return false; }
01137 
01138     // To fbxDouble2
01139     inline bool fbxCopy( fbxDouble2 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01140     inline bool fbxCopy( fbxDouble2 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01141     inline bool fbxCopy( fbxDouble2 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01142     inline bool fbxCopy( fbxDouble2 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01143     inline bool fbxCopy( fbxDouble2 &pDst,fbxUInteger1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01144     inline bool fbxCopy( fbxDouble2 &pDst,fbxLongLong1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01145     inline bool fbxCopy( fbxDouble2 &pDst,fbxULongLong1 const &pSrc )   { pDst   = (fbxDouble1)pSrc; return true; }
01146     inline bool fbxCopy( fbxDouble2 &pDst,fbxHalfFloat const &pSrc )    { pDst   = (fbxDouble1)pSrc.value(); return true; }
01147     inline bool fbxCopy( fbxDouble2 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01148     inline bool fbxCopy( fbxDouble2 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxDouble1)pSrc; return true; }
01149     inline bool fbxCopy( fbxDouble2 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01150     inline bool fbxCopy( fbxDouble2 &pDst,fbxDouble1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01151 
01152     // To fbxDouble3
01153     inline bool fbxCopy( fbxDouble3 &pDst,fbxByte1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01154     inline bool fbxCopy( fbxDouble3 &pDst,fbxUByte1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01155     inline bool fbxCopy( fbxDouble3 &pDst,fbxShort1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01156     inline bool fbxCopy( fbxDouble3 &pDst,fbxUShort1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01157     inline bool fbxCopy( fbxDouble3 &pDst,fbxUInteger1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01158     inline bool fbxCopy( fbxDouble3 &pDst,fbxLongLong1 const &pSrc )    { pDst   = (fbxDouble1)pSrc; return true; }
01159     inline bool fbxCopy( fbxDouble3 &pDst,fbxULongLong1 const &pSrc )   { pDst   = (fbxDouble1)pSrc; return true; }
01160     inline bool fbxCopy( fbxDouble3 &pDst,fbxHalfFloat const &pSrc )    { pDst   = (fbxDouble1)pSrc.value(); return true; }
01161     inline bool fbxCopy( fbxDouble3 &pDst,fbxBool1 const &pSrc )        { pDst   = (fbxDouble1)pSrc; return true; }
01162     inline bool fbxCopy( fbxDouble3 &pDst,fbxInteger1 const &pSrc )     { pDst   = (fbxDouble1)pSrc; return true; }
01163     inline bool fbxCopy( fbxDouble3 &pDst,fbxFloat1 const &pSrc )       { pDst   = (fbxDouble1)pSrc; return true; }
01164     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble1 const &pSrc )      { pDst   = (fbxDouble1)pSrc; return true; }
01165     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble2 const &pSrc )      { return false;  }
01166 //  inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble3 const &pSrc )      { return internalfbxCopy3(pSrc,pDst);  }
01167     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble4 const &pSrc )      { pDst   = pSrc; return true; }
01168     inline bool fbxCopy( fbxDouble3 &pDst,fbxDouble44 const &pSrc )     { return false; }
01169 //  inline bool fbxCopy( fbxDouble4 &pDst,fbxEnum const &pSrc )         { return false; }
01170     inline bool fbxCopy( fbxDouble3 &pDst,fbxString const &pSrc )       { return false; }
01171     inline bool fbxCopy( fbxDouble3 &pDst,fbxTime const &pSrc )         { return false; }
01172     inline bool fbxCopy( fbxDouble3 &pDst,fbxReference const &pSrc )    { return false; }
01173     inline bool fbxCopy( fbxDouble3 &pDst,fbxBlob const &pSrc )         { return false; }
01174     inline bool fbxCopy( fbxDouble3 &pDst,fbxDistance const &pSrc )     { return false; }
01175     inline bool fbxCopy( fbxDouble3 &pDst,fbxDateTime const &pSrc )     { return false; }
01176 
01177     // To fbxDouble4
01178     inline bool fbxCopy( fbxDouble4 &pDst,fbxByte1 const &pSrc )        { return false; }
01179     inline bool fbxCopy( fbxDouble4 &pDst,fbxUByte1 const &pSrc )       { return false; }
01180     inline bool fbxCopy( fbxDouble4 &pDst,fbxShort1 const &pSrc )       { return false; }
01181     inline bool fbxCopy( fbxDouble4 &pDst,fbxUShort1 const &pSrc )      { return false; }
01182     inline bool fbxCopy( fbxDouble4 &pDst,fbxUInteger1 const &pSrc )    { return false; }
01183     inline bool fbxCopy( fbxDouble4 &pDst,fbxLongLong1 const &pSrc )    { return false; }
01184     inline bool fbxCopy( fbxDouble4 &pDst,fbxULongLong1 const &pSrc )   { return false; }
01185     inline bool fbxCopy( fbxDouble4 &pDst,fbxHalfFloat const &pSrc )    { return false; }
01186     inline bool fbxCopy( fbxDouble4 &pDst,fbxBool1 const &pSrc )        { return false; }
01187     inline bool fbxCopy( fbxDouble4 &pDst,fbxInteger1 const &pSrc )     { return false; }
01188     inline bool fbxCopy( fbxDouble4 &pDst,fbxFloat1 const &pSrc )       { return false; }
01189     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble1 const &pSrc )      { return false; }
01190     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble2 const &pSrc )      { return false; }
01191     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble3 const &pSrc )      { pDst   = pSrc; return true; }
01192     inline bool fbxCopy( fbxDouble4 &pDst,fbxDouble44 const &pSrc )     { return false; }
01193 //  inline bool fbxCopy( fbxDouble4 &pDst,fbxEnum const &pSrc )         { return false; }
01194     inline bool fbxCopy( fbxDouble4 &pDst,fbxString const &pSrc )       { return false; }
01195     inline bool fbxCopy( fbxDouble4 &pDst,fbxTime const &pSrc )         { return false; }
01196     inline bool fbxCopy( fbxDouble4 &pDst,fbxReference const &pSrc )    { return false; }
01197     inline bool fbxCopy( fbxDouble4 &pDst,fbxBlob const &pSrc )         { return false; }
01198     inline bool fbxCopy( fbxDouble4 &pDst,fbxDistance const &pSrc )     { return false; }
01199     inline bool fbxCopy( fbxDouble4 &pDst,fbxDateTime const &pSrc )     { return false; }
01200 
01201     // To String
01202     inline bool fbxCopy( fbxString &pDst,fbxByte1 const &pSrc )         { pDst=KString((int)pSrc); return true; }
01203     inline bool fbxCopy( fbxString &pDst,fbxUByte1 const &pSrc )        { pDst=KString((int)pSrc); return true; }
01204     inline bool fbxCopy( fbxString &pDst,fbxShort1 const &pSrc )        { pDst=KString((int)pSrc); return true; }
01205     inline bool fbxCopy( fbxString &pDst,fbxUShort1 const &pSrc )       { pDst=KString((int)pSrc); return true; }
01206     inline bool fbxCopy( fbxString &pDst,fbxUInteger1 const &pSrc )     { pDst=KString((int)pSrc); return true; }
01207     inline bool fbxCopy( fbxString &pDst,fbxLongLong1 const &pSrc )     { pDst=KString((int)pSrc); return true; }
01208     inline bool fbxCopy( fbxString &pDst,fbxULongLong1 const &pSrc )    { pDst=KString((int)pSrc); return true; }
01209     inline bool fbxCopy( fbxString &pDst,fbxHalfFloat const &pSrc )     { pDst=KString((float)pSrc.value()); return true; }
01210     inline bool fbxCopy( fbxString &pDst,fbxBool1 const &pSrc )         { pDst=pSrc ? "true" : "false"; return true; }
01211     inline bool fbxCopy( fbxString &pDst,fbxInteger1 const &pSrc )      { pDst=KString((int)pSrc); return true; }
01212     inline bool fbxCopy( fbxString &pDst,fbxFloat1 const &pSrc )        { pDst=KString(pSrc); return true; }
01213     inline bool fbxCopy( fbxString &pDst,fbxDouble1 const &pSrc )       { pDst=KString(pSrc); return true; }
01214     inline bool fbxCopy( fbxString &pDst,fbxDouble2 const &pSrc )       { pDst=KString(pSrc[0])+","+KString(pSrc[1]); return true; }
01215     inline bool fbxCopy( fbxString &pDst,fbxDouble3 const &pSrc )       { pDst=KString(pSrc[0])+","+KString(pSrc[1])+","+KString(pSrc[2]); return true; }
01216     inline bool fbxCopy( fbxString &pDst,fbxDouble4 const &pSrc )       { pDst=KString(pSrc[0])+","+KString(pSrc[1])+","+KString(pSrc[2])+","+KString(pSrc[3]); return true; }
01217     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; }
01218 //  inline bool fbxCopy( fbxString &pDst,fbxString const &pSrc )        { return false; }
01219     inline bool fbxCopy( fbxString &pDst,fbxTime const &pSrc )          { char lTimeStr[128]; pSrc.GetTimeString(lTimeStr); pDst=lTimeStr; return true; }
01220     inline bool fbxCopy( fbxString &pDst,fbxReference const &pSrc )     { pDst="<reference>"; return true; }
01221     inline bool fbxCopy( fbxString &pDst,fbxBlob const &pSrc )          { pDst="<blob>"; return true; } // Or convert to ASCII-85?
01222     inline bool fbxCopy( fbxString &pDst,fbxDistance const &pSrc )      { pDst= KString(pSrc.value()) + " " +pSrc.unitName(); return true; }
01223     inline bool fbxCopy( fbxString &pDst,fbxDateTime const &pSrc )      { pDst= pSrc.toString(); return true; }
01224 
01225     // To Blob
01226     inline bool fbxCopy( fbxBlob &pDst,fbxByte1 const &pSrc )           { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01227     inline bool fbxCopy( fbxBlob &pDst,fbxUByte1 const &pSrc )          { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01228     inline bool fbxCopy( fbxBlob &pDst,fbxShort1 const &pSrc )          { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01229     inline bool fbxCopy( fbxBlob &pDst,fbxUShort1 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01230     inline bool fbxCopy( fbxBlob &pDst,fbxUInteger1 const &pSrc )       { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01231     inline bool fbxCopy( fbxBlob &pDst,fbxLongLong1 const &pSrc )       { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01232     inline bool fbxCopy( fbxBlob &pDst,fbxULongLong1 const &pSrc )      { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01233     inline bool fbxCopy( fbxBlob &pDst,fbxHalfFloat const &pSrc )       { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01234     inline bool fbxCopy( fbxBlob &pDst,fbxBool1 const &pSrc )           { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01235     inline bool fbxCopy( fbxBlob &pDst,fbxInteger1 const &pSrc )        { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01236     inline bool fbxCopy( fbxBlob &pDst,fbxFloat1 const &pSrc )          { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01237     inline bool fbxCopy( fbxBlob &pDst,fbxDouble1 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01238     inline bool fbxCopy( fbxBlob &pDst,fbxDouble2 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01239     inline bool fbxCopy( fbxBlob &pDst,fbxDouble3 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01240     inline bool fbxCopy( fbxBlob &pDst,fbxDouble4 const &pSrc )         { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01241     inline bool fbxCopy( fbxBlob &pDst,fbxDouble44 const &pSrc )        { pDst.Assign(&pSrc, sizeof(pSrc)); return true; }
01242     inline bool fbxCopy( fbxBlob &pDst,fbxString const &pSrc )
01243     {
01244         bool lCastable = pSrc.GetLen() == pSrc.GetLen();
01245         K_ASSERT( lCastable );
01246         if( lCastable )
01247             pDst.Assign(pSrc.Buffer(), (int)pSrc.GetLen());
01248         return lCastable;
01249     }
01250     inline bool fbxCopy( fbxBlob &pDst,fbxTime const &pSrc )            { kLongLong t = pSrc.Get(); pDst.Assign( &t, sizeof(t)); return true; }
01251     inline bool fbxCopy( fbxBlob &pDst,fbxReference const &pSrc )       { return false; }
01252     inline bool fbxCopy( fbxBlob &pDst,fbxDistance const &pSrc )        { return false; }
01253     inline bool fbxCopy( fbxBlob &pDst,fbxDateTime const &pSrc )        { return false; }
01254     //inline bool fbxCopy( fbxBlob &pDst,fbxBlob const &pSrc )          { pDst=pSrc; return true; }
01255 
01256     inline bool fbxCopy( fbxDistance &pDst,fbxByte1 const &pSrc )        { return false; }
01257     inline bool fbxCopy( fbxDistance &pDst,fbxUByte1 const &pSrc )       { return false; }
01258     inline bool fbxCopy( fbxDistance &pDst,fbxShort1 const &pSrc )       { return false; }
01259     inline bool fbxCopy( fbxDistance &pDst,fbxUShort1 const &pSrc )      { return false; }
01260     inline bool fbxCopy( fbxDistance &pDst,fbxUInteger1 const &pSrc )    { return false; }
01261     inline bool fbxCopy( fbxDistance &pDst,fbxLongLong1 const &pSrc )    { return false; }
01262     inline bool fbxCopy( fbxDistance &pDst,fbxULongLong1 const &pSrc )   { return false; }
01263     inline bool fbxCopy( fbxDistance &pDst,fbxHalfFloat const &pSrc )    { return false; }
01264     inline bool fbxCopy( fbxDistance &pDst,fbxBool1 const &pSrc )        { return false; }
01265     inline bool fbxCopy( fbxDistance &pDst,fbxInteger1 const &pSrc )     { return false; }
01266     inline bool fbxCopy( fbxDistance &pDst,fbxFloat1 const &pSrc )       { return false; }
01267     inline bool fbxCopy( fbxDistance &pDst,fbxDouble1 const &pSrc )      { return false; }
01268     inline bool fbxCopy( fbxDistance &pDst,fbxDouble2 const &pSrc )      { return false; }
01269     inline bool fbxCopy( fbxDistance &pDst,fbxDouble3 const &pSrc )      { return false; }
01270     inline bool fbxCopy( fbxDistance &pDst, fbxDouble4 const &pSrc )     { return false; }
01271     inline bool fbxCopy( fbxDistance &pDst,fbxDouble44 const &pSrc )     { return false; }
01272     inline bool fbxCopy( fbxDistance &pDst,fbxString const &pSrc )       { return false; }
01273     inline bool fbxCopy( fbxDistance &pDst,fbxTime const &pSrc )         { return false; }
01274     inline bool fbxCopy( fbxDistance &pDst,fbxReference const &pSrc )    { return false; }
01275     inline bool fbxCopy( fbxDistance &pDst,fbxBlob const &pSrc )         { return false; }
01276     inline bool fbxCopy( fbxDistance &pDst,fbxDateTime const &pSrc )     { return false; }
01277 
01278     inline bool fbxCopy( fbxDateTime &pDst,fbxByte1 const &pSrc )        { return false; }
01279     inline bool fbxCopy( fbxDateTime &pDst,fbxUByte1 const &pSrc )       { return false; }
01280     inline bool fbxCopy( fbxDateTime &pDst,fbxShort1 const &pSrc )       { return false; }
01281     inline bool fbxCopy( fbxDateTime &pDst,fbxUShort1 const &pSrc )      { return false; } 
01282     inline bool fbxCopy( fbxDateTime &pDst,fbxUInteger1 const &pSrc )    { return false; }
01283     inline bool fbxCopy( fbxDateTime &pDst,fbxLongLong1 const &pSrc )    { return false; }
01284     inline bool fbxCopy( fbxDateTime &pDst,fbxULongLong1 const &pSrc )   { return false; }
01285     inline bool fbxCopy( fbxDateTime &pDst,fbxHalfFloat const &pSrc )    { return false; }
01286     inline bool fbxCopy( fbxDateTime &pDst,fbxBool1 const &pSrc )        { return false; }
01287     inline bool fbxCopy( fbxDateTime &pDst,fbxInteger1 const &pSrc )     { return false; }
01288     inline bool fbxCopy( fbxDateTime &pDst,fbxFloat1 const &pSrc )       { return false; }
01289     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble1 const &pSrc )      { return false; }
01290     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble2 const &pSrc )      { return false; }
01291     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble3 const &pSrc )      { return false; }
01292     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble4 const &pSrc )      { return false; }
01293     inline bool fbxCopy( fbxDateTime &pDst,fbxDouble44 const &pSrc )     { return false; }
01294     inline bool fbxCopy( fbxDateTime &pDst,fbxString const &pSrc )       { return pDst.fromString(pSrc); }
01295     inline bool fbxCopy( fbxDateTime &pDst,fbxTime const &pSrc )         { return false; }
01296     inline bool fbxCopy( fbxDateTime &pDst,fbxReference const &pSrc )    { return false; }
01297     inline bool fbxCopy( fbxDateTime &pDst,fbxBlob const &pSrc )         { return false; }
01298     inline bool fbxCopy( fbxDateTime &pDst,fbxDistance const &pSrc )     { return false; }
01299 
01300     template< class T > inline bool fbxCopy( T &pDst,void const *pSrc,EFbxType pSrcType)
01301     {
01302         switch (pSrcType) {
01303             case eBYTE1:      return fbxCopy( pDst,*(fbxByte1 *)pSrc );
01304             case eUBYTE1:     return fbxCopy( pDst,*(fbxUByte1 *)pSrc );
01305             case eSHORT1:     return fbxCopy( pDst,*(fbxShort1 *)pSrc );
01306             case eUSHORT1:    return fbxCopy( pDst,*(fbxUShort1 *)pSrc );
01307             case eUINTEGER1:  return fbxCopy( pDst,*(fbxUInteger1 *)pSrc );
01308             case eLONGLONG1:  return fbxCopy( pDst,*(fbxLongLong1 *)pSrc );
01309             case eULONGLONG1: return fbxCopy( pDst,*(fbxULongLong1 *)pSrc );
01310             case eHALFFLOAT:  return fbxCopy( pDst,*(fbxHalfFloat *)pSrc );
01311             case eBOOL1:      return fbxCopy( pDst,*(fbxBool1 *)pSrc );
01312             case eINTEGER1:   return fbxCopy( pDst,*(fbxInteger1 *)pSrc );
01313             case eFLOAT1:     return fbxCopy( pDst,*(fbxFloat1 *)pSrc );
01314             case eDOUBLE1:    return fbxCopy( pDst,*(fbxDouble1 *)pSrc );
01315             case eDOUBLE2:    return fbxCopy( pDst,*(fbxDouble2 *)pSrc );
01316             case eDOUBLE3:    return fbxCopy( pDst,*(fbxDouble3 *)pSrc );
01317             case eDOUBLE4:    return fbxCopy( pDst,*(fbxDouble4 *)pSrc );
01318             case eDOUBLE44:   return fbxCopy( pDst,*(fbxDouble44 *)pSrc );
01319             case eENUM:       return fbxCopy( pDst,*(fbxEnum *)pSrc );
01320             case eSTRING:     return fbxCopy( pDst,*(fbxString *)pSrc );
01321             case eTIME:       return fbxCopy( pDst,*(fbxTime *)pSrc );
01322             case eREFERENCE:
01323                 K_ASSERT_MSG_NOW("Trying to set value on a void Reference type" );
01324             break;
01325             case eBLOB:       return fbxCopy( pDst,*(fbxBlob *)pSrc );
01326             case eDISTANCE:   return fbxCopy( pDst, *(fbxDistance *)pSrc );
01327             case eDATETIME:   return fbxCopy( pDst, *(fbxDateTime *)pSrc );
01328             default:
01329                 K_ASSERT_MSG_NOW("Trying to assign an unknown type" );
01330         }
01331         return false;
01332     }
01333 
01334     template< class T > inline bool fbxCopy( void *pDst,EFbxType pDstType,T const &pSrc)
01335     {
01336         switch (pDstType) {
01337             case eBYTE1:      return fbxCopy( *(fbxByte1 *)pDst,pSrc );
01338             case eUBYTE1:     return fbxCopy( *(fbxUByte1 *)pDst,pSrc );
01339             case eSHORT1:     return fbxCopy( *(fbxShort1 *)pDst,pSrc );
01340             case eUSHORT1:    return fbxCopy( *(fbxUShort1 *)pDst,pSrc );
01341             case eUINTEGER1:  return fbxCopy( *(fbxUInteger1 *)pDst,pSrc );
01342             case eLONGLONG1:  return fbxCopy( *(fbxLongLong1 *)pDst,pSrc );
01343             case eULONGLONG1: return fbxCopy( *(fbxULongLong1 *)pDst,pSrc );
01344             case eHALFFLOAT:  return fbxCopy( *(fbxHalfFloat *)pDst,pSrc );
01345             case eBOOL1:      return fbxCopy( *(fbxBool1 *)pDst,pSrc    );
01346             case eINTEGER1:   return fbxCopy( *(fbxInteger1 *)pDst,pSrc );
01347             case eFLOAT1:     return fbxCopy( *(fbxFloat1 *)pDst,pSrc   );
01348             case eDOUBLE1:    return fbxCopy( *(fbxDouble1 *)pDst,pSrc  );
01349             case eDOUBLE2:    return fbxCopy( *(fbxDouble2 *)pDst,pSrc  );
01350             case eDOUBLE3:    return fbxCopy( *(fbxDouble3 *)pDst,pSrc  );
01351             case eDOUBLE4:    return fbxCopy( *(fbxDouble4 *)pDst,pSrc  );
01352             case eDOUBLE44:   return fbxCopy( *(fbxDouble44 *)pDst,pSrc );
01353             case eENUM:       return fbxCopy( *(fbxEnum *)pDst,pSrc     );
01354             case eSTRING:     return fbxCopy( *(fbxString *)pDst,pSrc   );
01355             case eTIME:       return fbxCopy( *(fbxTime *)pDst,pSrc   );
01356             case eREFERENCE:
01357                 K_ASSERT_MSG_NOW("Trying to set value on a void Reference type" );
01358             break;
01359             case eBLOB:       return fbxCopy( *(fbxBlob *)pDst,pSrc   );
01360             case eDISTANCE:   return fbxCopy( *(fbxDistance *)pDst, pSrc );
01361             case eDATETIME:   return fbxCopy( *(fbxDateTime *)pDst, pSrc );
01362             default:
01363                 K_ASSERT_MSG_NOW("Trying to assign an unknown type" );
01364         }
01365         return false;
01366     }
01367 
01368     inline bool fbxCopy( void *pDst,EFbxType pDstType,void const *pSrc,EFbxType pSrcType)
01369     {
01370         switch (pSrcType) {
01371             case eBYTE1:      return fbxCopy( pDst,pDstType,*(fbxByte1 *)pSrc );
01372             case eUBYTE1:     return fbxCopy( pDst,pDstType,*(fbxUByte1 *)pSrc );
01373             case eSHORT1:     return fbxCopy( pDst,pDstType,*(fbxShort1 *)pSrc );
01374             case eUSHORT1:    return fbxCopy( pDst,pDstType,*(fbxUShort1 *)pSrc );
01375             case eUINTEGER1:  return fbxCopy( pDst,pDstType,*(fbxUInteger1 *)pSrc );
01376             case eLONGLONG1:  return fbxCopy( pDst,pDstType,*(fbxLongLong1 *)pSrc );
01377             case eULONGLONG1: return fbxCopy( pDst,pDstType,*(fbxULongLong1 *)pSrc );
01378             case eHALFFLOAT:  return fbxCopy( pDst,pDstType,*(fbxHalfFloat *)pSrc );
01379             case eBOOL1:      return fbxCopy( pDst,pDstType,*(fbxBool1 *)pSrc );
01380             case eINTEGER1:   return fbxCopy( pDst,pDstType,*(fbxInteger1 *)pSrc );
01381             case eFLOAT1:     return fbxCopy( pDst,pDstType,*(fbxFloat1 *)pSrc );
01382             case eDOUBLE1:    return fbxCopy( pDst,pDstType,*(fbxDouble1 *)pSrc );
01383             case eDOUBLE2:    return fbxCopy( pDst,pDstType,*(fbxDouble2 *)pSrc );
01384             case eDOUBLE3:    return fbxCopy( pDst,pDstType,*(fbxDouble3 *)pSrc );
01385             case eDOUBLE4:    return fbxCopy( pDst,pDstType,*(fbxDouble4 *)pSrc );
01386             case eDOUBLE44:   return fbxCopy( pDst,pDstType,*(fbxDouble44 *)pSrc );
01387             case eENUM:       return fbxCopy( pDst,pDstType,*(fbxEnum *)pSrc );
01388             case eSTRING:     return fbxCopy( pDst,pDstType,*(fbxString *)pSrc);
01389             case eTIME:       return fbxCopy( pDst,pDstType,*(fbxTime*)pSrc);
01390             case eREFERENCE:
01391                 K_ASSERT_MSG_NOW("Trying to set value on a void Reference type" );
01392             break;
01393             case eBLOB:       return fbxCopy( pDst,pDstType,*(fbxBlob*)pSrc);
01394             case eDISTANCE:   return fbxCopy(pDst, pDstType, *(fbxDistance*)pSrc);
01395             case eDATETIME:   return fbxCopy(pDst, pDstType, *(fbxDateTime*)pSrc);
01396             default:
01397                 K_ASSERT_MSG_NOW("Trying to assign an unknown type" );
01398         }
01399         return false;
01400     }
01401 
01407     KFBX_DLL void* fbxCreate( EFbxType pType );
01408 
01409 
01417     KFBX_DLL bool fbxDestroy( EFbxType pType, void* pData );
01418 
01419 
01426     inline bool fbxCompare( const void* pA, const void* pB, EFbxType pType )
01427     {
01428         switch (pType) {
01429             case eBYTE1:      return  (*(fbxByte1*)pA)      == (*(fbxByte1*)pB);
01430             case eUBYTE1:     return  (*(fbxUByte1*)pA)     == (*(fbxUByte1*)pB);
01431             case eSHORT1:     return  (*(fbxShort1*)pA)     == (*(fbxShort1*)pB);
01432             case eUSHORT1:    return  (*(fbxUShort1*)pA)    == (*(fbxUShort1*)pB);
01433             case eUINTEGER1:  return  (*(fbxUInteger1*)pA)  == (*(fbxUInteger1*)pB);
01434             case eLONGLONG1:  return  (*(fbxLongLong1*)pA)  == (*(fbxLongLong1*)pB);
01435             case eULONGLONG1: return  (*(fbxULongLong1*)pA) == (*(fbxULongLong1*)pB);
01436             case eHALFFLOAT:  return  (*(fbxHalfFloat*)pA)  == (*(fbxHalfFloat*)pB);
01437             case eBOOL1:      return  (*(fbxBool1*)pA)      == (*(fbxBool1*)pB);
01438             case eINTEGER1:   return  (*(fbxInteger1*)pA)   == (*(fbxInteger1*)pB);
01439             case eFLOAT1:     return  (*(fbxFloat1*)pA)     == (*(fbxFloat1*)pB);
01440             case eDOUBLE1:    return  (*(fbxDouble1*)pA)    == (*(fbxDouble1*)pB);
01441             case eDOUBLE2:    return  (*(fbxDouble2*)pA)    == (*(fbxDouble2*)pB);
01442             case eDOUBLE3:    return  (*(fbxDouble3*)pA)    == (*(fbxDouble3*)pB);
01443             case eDOUBLE4:    return  (*(fbxDouble4*)pA)    == (*(fbxDouble4*)pB);
01444             case eDOUBLE44:   return  (*(fbxDouble44*)pA)   == (*(fbxDouble44*)pB);
01445             case eENUM:       return  (*(fbxEnum*)pA)       == (*(fbxEnum*)pB);
01446             case eSTRING:     return  (*(fbxString*)pA)     == (*(fbxString*)pB);
01447             case eTIME:       return  (*(fbxTime*)pA)       == (*(fbxTime*)pB);
01448             case eREFERENCE:
01449                 K_ASSERT_MSG_NOW("Trying to compare value on a void Reference type" );
01450             break;
01451             case eBLOB:      return (*(fbxBlob*)pA)         == (*(fbxBlob*)pB);
01452             case eDISTANCE:  return (*(fbxDistance*)pA)     == (*(fbxDistance*)pB);
01453             case eDATETIME:  return (*(fbxDateTime*)pA)     == (*(fbxDateTime*)pB);
01454             default:
01455                 K_ASSERT_MSG_NOW("Trying to compare an unknown type" );
01456         }
01457         return false;
01458     }
01459 
01460 #include <fbxfilesdk/fbxfilesdk_nsend.h>
01461 
01462 #endif // FBXFILESDK_KFBXPLUGINS_KFBXTYPES_H
01463