fbxfilesdk_new.h

Go to the documentation of this file.
00001 
00004 #ifndef FBXFILESDK_FBXFILESDK_NEW_H
00005 #define FBXFILESDK_FBXFILESDK_NEW_H
00006 
00007 /**************************************************************************************
00008 
00009  Copyright (C) 2005 - 2009 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material
00013  (collectively the "Data") in these files contain unpublished information
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by
00015  Canada and United States of America federal copyright law and by international
00016  treaties.
00017 
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE,
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE.
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE.
00028 
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE.
00039 
00040 **************************************************************************************/
00041 //
00042 // This file must be included before any other file in the FBX SDK in order
00043 // to define the memory allocators
00044 //
00045 
00046 #ifdef KARCH_DEV_MSC
00047     #pragma warning(push)
00048     #pragma warning(disable : 4345) //warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized
00049     #define NAMESPACE_FRIEND_WORKAROUND
00050 #endif
00051 
00052 #include <new>      // for placement new
00053 #include <stdlib.h> // for malloc
00054 
00055 #include <fbxfilesdk/fbxfilesdk_memory.h>
00056 
00057 #ifndef NAMESPACE_FRIEND_WORKAROUND
00058     #include <fbxfilesdk/fbxfilesdk_nsbegin.h>
00059     #ifdef FBXFILESDK_NAMESPACE_USE
00060         #define _FBXSDK_NAMESPACE FBXFILESDK_NAMESPACE
00061     #endif
00062 #else
00063     #define _FBXSDK_NAMESPACE
00064 #endif
00065 
00066 
00067 // Type traits for primitive types
00068 template<typename T> struct SimpleType {
00069     enum {value = 0};
00070 };
00071 template<typename T> struct SimpleType<T *> {
00072     enum {value = 1};
00073 };
00074 template<typename T> struct SimpleType<const T> {
00075     enum {value = SimpleType<T>::value};
00076 };
00077 template<typename T, size_t n> struct SimpleType<T[n]> {
00078     enum {value = SimpleType<T>::value};
00079 };
00080 
00081 #define KFBX_SIMPLE_TYPE(T)                 \
00082     template<> struct SimpleType<T> {       \
00083 union {                                     \
00084     T t;                                    \
00085 } catcherr;                                 \
00086     enum {value = 1};                       \
00087 }
00088 
00089 KFBX_SIMPLE_TYPE (bool);
00090 KFBX_SIMPLE_TYPE (char);
00091 KFBX_SIMPLE_TYPE (unsigned char);
00092 KFBX_SIMPLE_TYPE (short);
00093 KFBX_SIMPLE_TYPE (unsigned short);
00094 KFBX_SIMPLE_TYPE (int);
00095 KFBX_SIMPLE_TYPE (unsigned int);
00096 KFBX_SIMPLE_TYPE (long);
00097 KFBX_SIMPLE_TYPE (unsigned long);
00098 KFBX_SIMPLE_TYPE (float);
00099 KFBX_SIMPLE_TYPE (double);
00100 KFBX_SIMPLE_TYPE (long double);
00101 KFBX_SIMPLE_TYPE (long long);
00102 KFBX_SIMPLE_TYPE (unsigned long long);
00103 
00104 #define KFBX_IS_SIMPLE_TYPE(T) ((bool) SimpleType<T>::value)
00105 
00106 
00107 template<typename T>
00108 T* FbxSdkNew()
00109 {
00110     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00111     return new(p)T();
00112 }
00113 template<typename T, typename T1>
00114 T* FbxSdkNew(T1& p1)
00115 {
00116     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00117     return new(p)T(p1);
00118 }
00119 template<typename T, typename T1>
00120 T* FbxSdkNew(const T1& p1)
00121 {
00122     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00123     return new(p)T(p1);
00124 }
00125 template<typename T, typename T1, typename T2>
00126 T* FbxSdkNew(T1& p1, T2& p2)
00127 {
00128     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00129     return new(p)T(p1, p2);
00130 }
00131 template<typename T, typename T1, typename T2>
00132 T* FbxSdkNew(T1& p1, const T2& p2)
00133 {
00134     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00135     return new(p)T(p1, p2);
00136 }
00137 template<typename T, typename T1, typename T2>
00138 T* FbxSdkNew(const T1& p1, T2& p2)
00139 {
00140     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00141     return new(p)T(p1, p2);
00142 }
00143 template<typename T, typename T1, typename T2>
00144 T* FbxSdkNew(const T1& p1, const T2& p2)
00145 {
00146     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00147     return new(p)T(p1, p2);
00148 }
00149 template<typename T, typename T1, typename T2, typename T3>
00150 T* FbxSdkNew(T1& p1, T2& p2, T3& p3)
00151 {
00152     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00153     return new(p)T(p1, p2, p3);
00154 }
00155 template<typename T, typename T1, typename T2, typename T3>
00156 T* FbxSdkNew(T1& p1, T2& p2, const T3& p3)
00157 {
00158     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00159     return new(p)T(p1, p2, p3);
00160 }
00161 template<typename T, typename T1, typename T2, typename T3>
00162 T* FbxSdkNew(T1& p1, const T2& p2, T3& p3)
00163 {
00164     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00165     return new(p)T(p1, p2, p3);
00166 }
00167 template<typename T, typename T1, typename T2, typename T3>
00168 T* FbxSdkNew(T1& p1, const T2& p2, const T3& p3)
00169 {
00170     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00171     return new(p)T(p1, p2, p3);
00172 }
00173 template<typename T, typename T1, typename T2, typename T3>
00174 T* FbxSdkNew(const T1& p1, T2& p2, T3& p3)
00175 {
00176     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00177     return new(p)T(p1, p2, p3);
00178 }
00179 template<typename T, typename T1, typename T2, typename T3>
00180 T* FbxSdkNew(const T1& p1, T2& p2, const T3& p3)
00181 {
00182     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00183     return new(p)T(p1, p2, p3);
00184 }
00185 template<typename T, typename T1, typename T2, typename T3>
00186 T* FbxSdkNew(const T1& p1, const T2& p2, T3& p3)
00187 {
00188     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00189     return new(p)T(p1, p2, p3);
00190 }
00191 template<typename T, typename T1, typename T2, typename T3>
00192 T* FbxSdkNew(const T1& p1, const T2& p2, const T3& p3)
00193 {
00194     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00195     return new(p)T(p1, p2, p3);
00196 }
00197 template<typename T, typename T1, typename T2, typename T3, typename T4>
00198 T* FbxSdkNew(T1& p1, T2& p2, T3& p3, T4& p4)
00199 {
00200     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00201     return new(p)T(p1, p2, p3, p4);
00202 }
00203 template<typename T, typename T1, typename T2, typename T3, typename T4>
00204 T* FbxSdkNew(T1& p1, T2& p2, T3& p3, const T4& p4)
00205 {
00206     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00207     return new(p)T(p1, p2, p3, p4);
00208 }
00209 template<typename T, typename T1, typename T2, typename T3, typename T4>
00210 T* FbxSdkNew(T1& p1, T2& p2, const T3& p3, T4& p4)
00211 {
00212     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00213     return new(p)T(p1, p2, p3, p4);
00214 }
00215 template<typename T, typename T1, typename T2, typename T3, typename T4>
00216 T* FbxSdkNew(T1& p1, T2& p2, const T3& p3, const T4& p4)
00217 {
00218     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00219     return new(p)T(p1, p2, p3, p4);
00220 }
00221 template<typename T, typename T1, typename T2, typename T3, typename T4>
00222 T* FbxSdkNew(T1& p1, const T2& p2, T3& p3, T4& p4)
00223 {
00224     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00225     return new(p)T(p1, p2, p3, p4);
00226 }
00227 template<typename T, typename T1, typename T2, typename T3, typename T4>
00228 T* FbxSdkNew(T1& p1, const T2& p2, T3& p3, const T4& p4)
00229 {
00230     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00231     return new(p)T(p1, p2, p3, p4);
00232 }
00233 template<typename T, typename T1, typename T2, typename T3, typename T4>
00234 T* FbxSdkNew(T1& p1, const T2& p2, const T3& p3, T4& p4)
00235 {
00236     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00237     return new(p)T(p1, p2, p3, p4);
00238 }
00239 template<typename T, typename T1, typename T2, typename T3, typename T4>
00240 T* FbxSdkNew(T1& p1, const T2& p2, const T3& p3, const T4& p4)
00241 {
00242     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00243     return new(p)T(p1, p2, p3, p4);
00244 }
00245 template<typename T, typename T1, typename T2, typename T3, typename T4>
00246 T* FbxSdkNew(const T1& p1, T2& p2, T3& p3, T4& p4)
00247 {
00248     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00249     return new(p)T(p1, p2, p3, p4);
00250 }
00251 template<typename T, typename T1, typename T2, typename T3, typename T4>
00252 T* FbxSdkNew(const T1& p1, T2& p2, T3& p3, const T4& p4)
00253 {
00254     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00255     return new(p)T(p1, p2, p3, p4);
00256 }
00257 template<typename T, typename T1, typename T2, typename T3, typename T4>
00258 T* FbxSdkNew(const T1& p1, T2& p2, const T3& p3, T4& p4)
00259 {
00260     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00261     return new(p)T(p1, p2, p3, p4);
00262 }
00263 template<typename T, typename T1, typename T2, typename T3, typename T4>
00264 T* FbxSdkNew(const T1& p1, T2& p2, const T3& p3, const T4& p4)
00265 {
00266     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00267     return new(p)T(p1, p2, p3, p4);
00268 }
00269 template<typename T, typename T1, typename T2, typename T3, typename T4>
00270 T* FbxSdkNew(const T1& p1, const T2& p2, T3& p3, T4& p4)
00271 {
00272     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00273     return new(p)T(p1, p2, p3, p4);
00274 }
00275 template<typename T, typename T1, typename T2, typename T3, typename T4>
00276 T* FbxSdkNew(const T1& p1, const T2& p2, T3& p3, const T4& p4)
00277 {
00278     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00279     return new(p)T(p1, p2, p3, p4);
00280 }
00281 template<typename T, typename T1, typename T2, typename T3, typename T4>
00282 T* FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, T4& p4)
00283 {
00284     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00285     return new(p)T(p1, p2, p3, p4);
00286 }
00287 template<typename T, typename T1, typename T2, typename T3, typename T4>
00288 T* FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4)
00289 {
00290     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00291     return new(p)T(p1, p2, p3, p4);
00292 }
00293 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>
00294 T* FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5)
00295 {
00296     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00297     return new(p)T(p1,p2,p3,p4,p5);
00298 }
00299 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
00300 T* FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6)
00301 {
00302     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00303     return new(p)T(p1,p2,p3,p4,p5,p6);
00304 }
00305 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
00306 T* FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7)
00307 {
00308     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00309     return new(p)T(p1,p2,p3,p4,p5,p6,p7);
00310 }
00311 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
00312 T* FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8)
00313 {
00314     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00315     return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8);
00316 }
00317 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
00318 T* FbxSdkNew(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)
00319 {
00320     T* p = (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T));
00321     return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8,p9);
00322 }
00323 
00324 template<typename T>
00325 void FbxSdkDelete(T* p)
00326 {
00327     if (p)
00328     {
00329         ((T*)p)->~T();
00330         FBXFILESDK_NAMESPACE::FbxSdkFree(p);
00331     }
00332 }
00333 
00334 template<typename T>
00335 T* FbxSdkNewArray(int n)
00336 {
00337     if (KFBX_IS_SIMPLE_TYPE(T))
00338     {
00339         return (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T)*n);
00340     }
00341     else
00342     {
00343         void *pTmp = FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T)*n+sizeof(int));
00344         T* p = (T*)((int*)pTmp+1);
00345         *((int*)pTmp) = n;
00346         for(int i=0;i<n;++i)
00347             new((T*)p+i)T;
00348         return p;
00349     }
00350 }
00351 
00352 template<typename T>
00353 void FbxSdkDeleteArray(T* p)
00354 {
00355     if (p)
00356     {
00357         if (!KFBX_IS_SIMPLE_TYPE(T))
00358         {
00359             for(int i=0;i<((int*)p)[-1];++i)
00360                 ((T*)p)[i].~T();
00361             FBXFILESDK_NAMESPACE::FbxSdkFree((int*)p-1);
00362         }
00363         else
00364         {
00365             FBXFILESDK_NAMESPACE::FbxSdkFree((void*)p);
00366         }
00367     }
00368 }
00369 
00370 
00371 #define KFBXNEW_DECLARE_FRIEND        \
00372 template<typename T>        \
00373 friend T* _FBXSDK_NAMESPACE::FbxSdkNew();        \
00374 template<typename T, typename T1>        \
00375 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1);        \
00376 template<typename T, typename T1>        \
00377 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1);        \
00378 template<typename T, typename T1, typename T2>        \
00379 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2);        \
00380 template<typename T, typename T1, typename T2>        \
00381 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2);        \
00382 template<typename T, typename T1, typename T2>        \
00383 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2);        \
00384 template<typename T, typename T1, typename T2>        \
00385 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2);        \
00386 template<typename T, typename T1, typename T2, typename T3>        \
00387 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, T3& p3);        \
00388 template<typename T, typename T1, typename T2, typename T3>        \
00389 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, const T3& p3);        \
00390 template<typename T, typename T1, typename T2, typename T3>        \
00391 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, T3& p3);        \
00392 template<typename T, typename T1, typename T2, typename T3>        \
00393 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, const T3& p3);        \
00394 template<typename T, typename T1, typename T2, typename T3>        \
00395 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, T3& p3);        \
00396 template<typename T, typename T1, typename T2, typename T3>        \
00397 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, const T3& p3);        \
00398 template<typename T, typename T1, typename T2, typename T3>        \
00399 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, T3& p3);        \
00400 template<typename T, typename T1, typename T2, typename T3>        \
00401 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3);        \
00402 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00403 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, T3& p3, T4& p4);        \
00404 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00405 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, T3& p3, const T4& p4);        \
00406 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00407 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, const T3& p3, T4& p4);        \
00408 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00409 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, const T3& p3, const T4& p4);        \
00410 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00411 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, T3& p3, T4& p4);        \
00412 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00413 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, T3& p3, const T4& p4);        \
00414 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00415 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, const T3& p3, T4& p4);        \
00416 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00417 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);        \
00418 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00419 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, T3& p3, T4& p4);        \
00420 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00421 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, T3& p3, const T4& p4);        \
00422 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00423 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, const T3& p3, T4& p4);        \
00424 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00425 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);        \
00426 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00427 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, T3& p3, T4& p4);        \
00428 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00429 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);        \
00430 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00431 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);        \
00432 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00433 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);        \
00434 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>        \
00435 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);        \
00436 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>        \
00437 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);        \
00438 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>        \
00439 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7);        \
00440 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>        \
00441 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6, const T7& p7, const T8& p8);        \
00442 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>        \
00443 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(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);        \
00444 \
00445 template<typename T>    \
00446 friend void _FBXSDK_NAMESPACE::FbxSdkDelete(T* p);      \
00447 template<typename T>    \
00448 friend T* _FBXSDK_NAMESPACE::FbxSdkNewArray(int n);     \
00449 template<typename T>    \
00450 friend void _FBXSDK_NAMESPACE::FbxSdkDeleteArray(T* p); \
00451 
00452 #ifdef KARCH_DEV_MSC
00453     #pragma warning(pop)
00454 #endif
00455 
00456 #ifndef NAMESPACE_FRIEND_WORKAROUND
00457     #include <fbxfilesdk/fbxfilesdk_nsend.h>
00458 #endif
00459 
00460 #endif // FBXFILESDK_FBXFILESDK_NEW_H
00461