- Main Page
- Classes
- Files
- Directories

- File List
- File Members

# fbxnew.h

Go to the documentation of this file.

    00001 /****************************************************************************************
    00002
    00003    Copyright (C) 2013 Autodesk, Inc.
    00004    All rights reserved.
    00005
    00006    Use of this software is subject to the terms of the Autodesk license agreement
    00007    provided at the time of installation or download, or which otherwise accompanies
    00008    this software in either electronic or hard copy form.
    00009
    00010 ****************************************************************************************/
    00011
    00020 #ifndef _FBXSDK_CORE_ARCH_NEW_H_
    00021 #define _FBXSDK_CORE_ARCH_NEW_H_
    00022
    00023 #include <fbxsdk/fbxsdk_def.h>
    00024
    00025 #include <new>
    00026
    00027 #if defined(FBXSDK_COMPILER_MSC)
    00028     #pragma warning(push)
    00029     #pragma warning(disable : 4345) //warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized
    00030 #endif
    00031
    00032 #include <fbxsdk/fbxsdk_nsbegin.h>
    00033
    00034 //Type traits for primitive types
    00035 template<typename T> struct FbxSimpleType { enum {value = 0}; };
    00036 template<typename T> struct FbxSimpleType<T*> { enum {value = 1}; };
    00037 template<typename T> struct FbxSimpleType<const T> { enum {value = FbxSimpleType<T>::value}; };
    00038 template<typename T, size_t n> struct FbxSimpleType<T[n]> { enum {value = FbxSimpleType<T>::value}; };
    00039
    00040 #define FBXSDK_DEFINE_SIMPLE_TYPE(T) template<> struct FbxSimpleType<T>{ union {T t;} catcherr; enum {value = 1};}
    00041
    00042 FBXSDK_DEFINE_SIMPLE_TYPE(bool);
    00043 FBXSDK_DEFINE_SIMPLE_TYPE(char);
    00044 FBXSDK_DEFINE_SIMPLE_TYPE(unsigned char);
    00045 FBXSDK_DEFINE_SIMPLE_TYPE(short);
    00046 FBXSDK_DEFINE_SIMPLE_TYPE(unsigned short);
    00047 FBXSDK_DEFINE_SIMPLE_TYPE(int);
    00048 FBXSDK_DEFINE_SIMPLE_TYPE(unsigned int);
    00049 FBXSDK_DEFINE_SIMPLE_TYPE(long);
    00050 FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long);
    00051 FBXSDK_DEFINE_SIMPLE_TYPE(float);
    00052 FBXSDK_DEFINE_SIMPLE_TYPE(double);
    00053 FBXSDK_DEFINE_SIMPLE_TYPE(long double);
    00054 FBXSDK_DEFINE_SIMPLE_TYPE(long long);
    00055 FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long long);
    00056
    00057 #define FBXSDK_IS_SIMPLE_TYPE(T) ((bool)FbxSimpleType<T>::value)
    00058
    00059 template<typename T> T* FbxNew()
    00060 {
    00061     T* p = (T*)FbxMalloc(sizeof(T));
    00062     return new(p)T();
    00063 }
    00064
    00065 template<typename T, typename T1> T* FbxNew(T1& p1)
    00066 {
    00067     T* p = (T*)FbxMalloc(sizeof(T));
    00068     return new(p)T(p1);
    00069 }
    00070
    00071 template<typename T, typename T1> T* FbxNew(const T1& p1)
    00072 {
    00073     T* p = (T*)FbxMalloc(sizeof(T));
    00074     return new(p)T(p1);
    00075 }
    00076
    00077 template<typename T, typename T1, typename T2> T* FbxNew(T1& p1, T2& p2)
    00078 {
    00079     T* p = (T*)FbxMalloc(sizeof(T));
    00080     return new(p)T(p1, p2);
    00081 }
    00082
    00083 template<typename T, typename T1, typename T2> T* FbxNew(T1& p1, const T2& p2)
    00084 {
    00085     T* p = (T*)FbxMalloc(sizeof(T));
    00086     return new(p)T(p1, p2);
    00087 }
    00088
    00089 template<typename T, typename T1, typename T2> T* FbxNew(const T1& p1, T2& p2)
    00090 {
    00091     T* p = (T*)FbxMalloc(sizeof(T));
    00092     return new(p)T(p1, p2);
    00093 }
    00094
    00095 template<typename T, typename T1, typename T2> T* FbxNew(const T1& p1, const T2& p2)
    00096 {
    00097     T* p = (T*)FbxMalloc(sizeof(T));
    00098     return new(p)T(p1, p2);
    00099 }
    00100
    00101 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, T2& p2, T3& p3)
    00102 {
    00103     T* p = (T*)FbxMalloc(sizeof(T));
    00104     return new(p)T(p1, p2, p3);
    00105 }
    00106
    00107 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, T2& p2, const T3& p3)
    00108 {
    00109     T* p = (T*)FbxMalloc(sizeof(T));
    00110     return new(p)T(p1, p2, p3);
    00111 }
    00112
    00113 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, const T2& p2, T3& p3)
    00114 {
    00115     T* p = (T*)FbxMalloc(sizeof(T));
    00116     return new(p)T(p1, p2, p3);
    00117 }
    00118
    00119 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, const T2& p2, const T3& p3)
    00120 {
    00121     T* p = (T*)FbxMalloc(sizeof(T));
    00122     return new(p)T(p1, p2, p3);
    00123 }
    00124
    00125 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, T2& p2, T3& p3)
    00126 {
    00127     T* p = (T*)FbxMalloc(sizeof(T));
    00128     return new(p)T(p1, p2, p3);
    00129 }
    00130
    00131 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, T2& p2, const T3& p3)
    00132 {
    00133     T* p = (T*)FbxMalloc(sizeof(T));
    00134     return new(p)T(p1, p2, p3);
    00135 }
    00136
    00137 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, const T2& p2, T3& p3)
    00138 {
    00139     T* p = (T*)FbxMalloc(sizeof(T));
    00140     return new(p)T(p1, p2, p3);
    00141 }
    00142
    00143 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, const T2& p2, const T3& p3)
    00144 {
    00145     T* p = (T*)FbxMalloc(sizeof(T));
    00146     return new(p)T(p1, p2, p3);
    00147 }
    00148
    00149 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4)
    00150 {
    00151     T* p = (T*)FbxMalloc(sizeof(T));
    00152     return new(p)T(p1, p2, p3, p4);
    00153 }
    00154
    00155 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4)
    00156 {
    00157     T* p = (T*)FbxMalloc(sizeof(T));
    00158     return new(p)T(p1, p2, p3, p4);
    00159 }
    00160
    00161 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4)
    00162 {
    00163     T* p = (T*)FbxMalloc(sizeof(T));
    00164     return new(p)T(p1, p2, p3, p4);
    00165 }
    00166
    00167 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4)
    00168 {
    00169     T* p = (T*)FbxMalloc(sizeof(T));
    00170     return new(p)T(p1, p2, p3, p4);
    00171 }
    00172
    00173 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4)
    00174 {
    00175     T* p = (T*)FbxMalloc(sizeof(T));
    00176     return new(p)T(p1, p2, p3, p4);
    00177 }
    00178
    00179 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4)
    00180 {
    00181     T* p = (T*)FbxMalloc(sizeof(T));
    00182     return new(p)T(p1, p2, p3, p4);
    00183 }
    00184
    00185 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4)
    00186 {
    00187     T* p = (T*)FbxMalloc(sizeof(T));
    00188     return new(p)T(p1, p2, p3, p4);
    00189 }
    00190
    00191 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4)
    00192 {
    00193     T* p = (T*)FbxMalloc(sizeof(T));
    00194     return new(p)T(p1, p2, p3, p4);
    00195 }
    00196
    00197 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4)
    00198 {
    00199     T* p = (T*)FbxMalloc(sizeof(T));
    00200     return new(p)T(p1, p2, p3, p4);
    00201 }
    00202
    00203 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4)
    00204 {
    00205     T* p = (T*)FbxMalloc(sizeof(T));
    00206     return new(p)T(p1, p2, p3, p4);
    00207 }
    00208
    00209 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4)
    00210 {
    00211     T* p = (T*)FbxMalloc(sizeof(T));
    00212     return new(p)T(p1, p2, p3, p4);
    00213 }
    00214
    00215 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4)
    00216 {
    00217     T* p = (T*)FbxMalloc(sizeof(T));
    00218     return new(p)T(p1, p2, p3, p4);
    00219 }
    00220
    00221 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4)
    00222 {
    00223     T* p = (T*)FbxMalloc(sizeof(T));
    00224     return new(p)T(p1, p2, p3, p4);
    00225 }
    00226
    00227 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4)
    00228 {
    00229     T* p = (T*)FbxMalloc(sizeof(T));
    00230     return new(p)T(p1, p2, p3, p4);
    00231 }
    00232
    00233 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4)
    00234 {
    00235     T* p = (T*)FbxMalloc(sizeof(T));
    00236     return new(p)T(p1, p2, p3, p4);
    00237 }
    00238
    00239 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4)
    00240 {
    00241     T* p = (T*)FbxMalloc(sizeof(T));
    00242     return new(p)T(p1, p2, p3, p4);
    00243 }
    00244
    00245 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5)
    00246 {
    00247     T* p = (T*)FbxMalloc(sizeof(T));
    00248     return new(p)T(p1,p2,p3,p4,p5);
    00249 }
    00250
    00251 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5)
    00252 {
    00253     T* p = (T*)FbxMalloc(sizeof(T));
    00254     return new(p)T(p1,p2,p3,p4,p5);
    00255 }
    00256
    00257 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5)
    00258 {
    00259     T* p = (T*)FbxMalloc(sizeof(T));
    00260     return new(p)T(p1,p2,p3,p4,p5);
    00261 }
    00262
    00263 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5)
    00264 {
    00265     T* p = (T*)FbxMalloc(sizeof(T));
    00266     return new(p)T(p1,p2,p3,p4,p5);
    00267 }
    00268
    00269 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5)
    00270 {
    00271     T* p = (T*)FbxMalloc(sizeof(T));
    00272     return new(p)T(p1,p2,p3,p4,p5);
    00273 }
    00274
    00275 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5)
    00276 {
    00277     T* p = (T*)FbxMalloc(sizeof(T));
    00278     return new(p)T(p1,p2,p3,p4,p5);
    00279 }
    00280
    00281 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5)
    00282 {
    00283     T* p = (T*)FbxMalloc(sizeof(T));
    00284     return new(p)T(p1,p2,p3,p4,p5);
    00285 }
    00286
    00287 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5)
    00288 {
    00289     T* p = (T*)FbxMalloc(sizeof(T));
    00290     return new(p)T(p1,p2,p3,p4,p5);
    00291 }
    00292
    00293 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5)
    00294 {
    00295     T* p = (T*)FbxMalloc(sizeof(T));
    00296     return new(p)T(p1,p2,p3,p4,p5);
    00297 }
    00298
    00299 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5)
    00300 {
    00301     T* p = (T*)FbxMalloc(sizeof(T));
    00302     return new(p)T(p1,p2,p3,p4,p5);
    00303 }
    00304
    00305 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5)
    00306 {
    00307     T* p = (T*)FbxMalloc(sizeof(T));
    00308     return new(p)T(p1,p2,p3,p4,p5);
    00309 }
    00310
    00311 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5)
    00312 {
    00313     T* p = (T*)FbxMalloc(sizeof(T));
    00314     return new(p)T(p1,p2,p3,p4,p5);
    00315 }
    00316
    00317 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6)
    00318 {
    00319     T* p = (T*)FbxMalloc(sizeof(T));
    00320     return new(p)T(p1,p2,p3,p4,p5,p6);
    00321 }
    00322
    00323 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7)
    00324 {
    00325     T* p = (T*)FbxMalloc(sizeof(T));
    00326     return new(p)T(p1,p2,p3,p4,p5,p6,p7);
    00327 }
    00328
    00329 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8)
    00330 {
    00331     T* p = (T*)FbxMalloc(sizeof(T));
    00332     return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8);
    00333 }
    00334
    00335 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9)
    00336 {
    00337     T* p = (T*)FbxMalloc(sizeof(T));
    00338     return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8,p9);
    00339 }
    00340
    00341 template<typename T> void FbxDelete(T* p)
    00342 {
    00343     if( p )
    00344     {
    00345         ((T*)p)->~T();
    00346         FbxFree(p);
    00347     }
    00348 }
    00349
    00350 template<typename T> void FbxDelete(const T* p)
    00351 {
    00352     if( p )
    00353     {
    00354         ((T*)p)->~T();
    00355         FbxFree(const_cast<T*>(p));
    00356     }
    00357 }
    00358
    00359 template<typename T> T* FbxNewArray(const int n)
    00360 {
    00361     if( FBXSDK_IS_SIMPLE_TYPE(T) )
    00362     {
    00363         return (T*)FbxMalloc(sizeof(T)*n);
    00364     }
    00365     else
    00366     {
    00367         void* pTmp = FbxMalloc(sizeof(T) * n + sizeof(int));
    00368         T* p = (T*)((int*)pTmp+1);
    00369         *((int*)pTmp) = n;
    00370         for( int i = 0; i < n; ++i )
    00371             new((T*)p+i)T;  //in-place new, not allocating memory so it is safe.
    00372         return p;
    00373     }
    00374 }
    00375
    00376 template<typename T> void FbxDeleteArray(T* p)
    00377 {
    00378     if( p )
    00379     {
    00380         if( !FBXSDK_IS_SIMPLE_TYPE(T) )
    00381         {
    00382             for(int i=0;i<((int*)p)[-1];++i)
    00383                 ((T*)p)[i].~T();
    00384             FbxFree((int*)p-1);
    00385         }
    00386         else
    00387         {
    00388             FbxFree((void*)p);
    00389         }
    00390     }
    00391 }
    00392
    00393 #define FBXSDK_FRIEND_NEW()\
    00394     template<typename T>\
    00395     friend T* FBXSDK_NAMESPACE::FbxNew();\
    00396     template<typename T, typename T1>\
    00397     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1);\
    00398     template<typename T, typename T1>\
    00399     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1);\
    00400     template<typename T, typename T1, typename T2>\
    00401     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2);\
    00402     template<typename T, typename T1, typename T2>\
    00403     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2);\
    00404     template<typename T, typename T1, typename T2>\
    00405     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2);\
    00406     template<typename T, typename T1, typename T2>\
    00407     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2);\
    00408     template<typename T, typename T1, typename T2, typename T3>\
    00409     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3);\
    00410     template<typename T, typename T1, typename T2, typename T3>\
    00411     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3);\
    00412     template<typename T, typename T1, typename T2, typename T3>\
    00413     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3);\
    00414     template<typename T, typename T1, typename T2, typename T3>\
    00415     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3);\
    00416     template<typename T, typename T1, typename T2, typename T3>\
    00417     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3);\
    00418     template<typename T, typename T1, typename T2, typename T3>\
    00419     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3);\
    00420     template<typename T, typename T1, typename T2, typename T3>\
    00421     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3);\
    00422     template<typename T, typename T1, typename T2, typename T3>\
    00423     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3);\
    00424     \
    00425     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00426     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4);\
    00427     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00428     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4);\
    00429     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00430     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4);\
    00431     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00432     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4);\
    00433     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00434     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4);\
    00435     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00436     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4);\
    00437     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00438     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4);\
    00439     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00440     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);\
    00441     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00442     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4);\
    00443     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00444     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4);\
    00445     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00446     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4);\
    00447     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00448     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);\
    00449     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00450     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4);\
    00451     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00452     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);\
    00453     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00454     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);\
    00455     template<typename T, typename T1, typename T2, typename T3, typename T4>\
    00456     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);\
    00457     \
    00458     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00459     friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\
    00460     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00461     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\
    00462     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00463     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5);\
    00464     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00465     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5);\
    00466     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00467     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5);\
    00468     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00469     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5);\
    00470     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00471     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5);\
    00472     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00473     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5);\
    00474     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00475     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5);\
    00476     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00477     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5);\
    00478     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00479     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5);\
    00480     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
    00481     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);\
    00482     \
    00483     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>\
    00484     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);\
    00485     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>\
    00486     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7);\
    00487     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>\
    00488     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8);\
    00489     template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>\
    00490     friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8, const T9& p9);\
    00491     template<typename T>\
    00492     friend void FBXSDK_NAMESPACE::FbxDelete(T* p);\
    00493     template<typename T>\
    00494     friend void FBXSDK_NAMESPACE::FbxDelete(const T* p);\
    00495     template<typename T>\
    00496     friend T* FBXSDK_NAMESPACE::FbxNewArray(const int n);\
    00497     template<typename T>\
    00498     friend void FBXSDK_NAMESPACE::FbxDeleteArray(T* p);
    00499
    00500 #ifdef FBXSDK_COMPILER_MSC
    00501     #pragma warning(pop)
    00502 #endif
    00503
    00504 #include <fbxsdk/fbxsdk_nsend.h>
    00505
    00506 #endif /* _FBXSDK_CORE_ARCH_NEW_H_ */