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_ */