00001 
00004 #ifndef FBXFILESDK_KFBXPLUGINS_KFBXTYPES_H
00005 #define FBXFILESDK_KFBXPLUGINS_KFBXTYPES_H
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
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,      
00084         eUBYTE1,  
00085         eSHORT1,     
00086         eUSHORT1,
00087         eUINTEGER1,  
00088         eLONGLONG1,  
00089         eULONGLONG1,
00090         eHALFFLOAT,  
00091         eBOOL1,
00092         eINTEGER1,
00093         eFLOAT1,
00094         eDOUBLE1,
00095         eDOUBLE2,
00096         eDOUBLE3,
00097         eDOUBLE4,
00098         eDOUBLE44,
00099         eENUM,
00100         eSTRING,
00101         eTIME,
00102         eREFERENCE,  
00103         eBLOB,
00104         eDISTANCE,
00105         eDATETIME,
00106         eMAX_TYPES,
00107     } EFbxType;
00108 
00109     
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);  
00228 
00233 
00238                    bool operator==(fbxBlob const & pRHS) const; 
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;            
00403         kShort mYear;                   
00404 
00405         kByte  mMonth;                  
00406         kByte  mDay;                    
00407         kByte  mHour;                   
00408         kByte  mMinute;                 
00409         kByte  mSecond;                 
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         
00587         
00588         
00589         
00590         
00591         
00592         
00593         
00594         
00595         
00596         
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             
00607             
00608             if (e >= 0x47800000) 
00609             {
00610                 
00611                 
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) 
00617             {
00618                 
00619                 e = (0x38000000 - e) >> 23;
00620                 m >>= (14 + e);
00621                 h = (((half)s) << 15) | (half)(m);
00622             }
00623             else
00624             {
00625                 
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                 
00641                 e = (0xFF<<23);
00642                 if (m != 0) m = ((1<<23)-1); 
00643             }
00644             else 
00645             if (e == 0x00000000)
00646             {
00647                 
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); 
00658                     m <<= 13; 
00659                 }
00660             }
00661             else
00662             {
00663                 m <<= 13; 
00664                 e = (e<<13) + 0x38000000;
00665             }
00666 
00667             f = (s<<31)|e|m;
00668             return *((float *)&f);
00669         }
00670     };
00671 
00672     
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 {}; 
00698     typedef fbxDistance                         KFbxDistance;
00699 
00700     
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     
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 
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     
00756     
00757     
00758     
00759     
00760     
00761     
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 
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     
00789     inline EFbxType FbxTypeOf( KFbxColor    const &pItem )  { return eDOUBLE4; }
00790 
00791     
00792 
00793 
00794 
00795 
00796 
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     
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     
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 
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     
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 
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 
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     
00864     
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 
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     
00889     inline bool fbxCopy( fbxUByte1 &pDst,fbxByte1 const &pSrc )         { pDst   = (fbxUByte1)pSrc; return true; }
00890 
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 
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     
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 
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 
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     
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 
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 
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     
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 
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 
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     
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 
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 
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     
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 
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 
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     
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 
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 
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     
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 
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 
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     
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 
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 
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     
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 
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 
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 
01134 
01135     inline bool fbxCopy( fbxDouble1 &pDst,fbxDistance const &pSrc )     { pDst = pSrc.internalValue(); return true; }
01136 
01137 
01138     
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     
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 
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 
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     
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 
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     
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 
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; } 
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     
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     
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