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 - 2010 Autodesk, Inc. and/or its licensors.
00010  All Rights Reserved.
00011 
00012  The coded instructions, statements, computer programs, and/or related material
00013  (collectively the "Data") in these files contain unpublished information
00014  proprietary to Autodesk, Inc. and/or its licensors, which is protected by
00015  Canada and United States of America federal copyright law and by international
00016  treaties.
00017 
00018  The Data may not be disclosed or distributed to third parties, in whole or in
00019  part, without the prior written consent of Autodesk, Inc. ("Autodesk").
00020 
00021  THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY.
00022  ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO
00023  WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING
00024  BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE,
00025  NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE.
00026  WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION
00027  OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE.
00028 
00029  IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS
00030  OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES
00031  OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER
00032  SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE
00033  OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND),
00034  HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED
00035  FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE,
00036  ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE,
00037  WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS
00038  OR DAMAGE.
00039 
00040 **************************************************************************************/
00041 //
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 void FbxSdkDelete(const T* p)
00336 {
00337     if (p)
00338     {
00339         ((T*)p)->~T();
00340         FBXFILESDK_NAMESPACE::FbxSdkFree(const_cast<T*>(p));
00341     }
00342 }
00343 
00344 template<typename T>
00345 T* FbxSdkNewArray(int n)
00346 {
00347     if (KFBX_IS_SIMPLE_TYPE(T))
00348     {
00349         return (T*)FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T)*n);
00350     }
00351     else
00352     {
00353         void *pTmp = FBXFILESDK_NAMESPACE::FbxSdkMalloc(sizeof(T)*n+sizeof(int));
00354         T* p = (T*)((int*)pTmp+1);
00355         *((int*)pTmp) = n;
00356         for(int i=0;i<n;++i)
00357             new((T*)p+i)T;
00358         return p;
00359     }
00360 }
00361 
00362 template<typename T>
00363 void FbxSdkDeleteArray(T* p)
00364 {
00365     if (p)
00366     {
00367         if (!KFBX_IS_SIMPLE_TYPE(T))
00368         {
00369             for(int i=0;i<((int*)p)[-1];++i)
00370                 ((T*)p)[i].~T();
00371             FBXFILESDK_NAMESPACE::FbxSdkFree((int*)p-1);
00372         }
00373         else
00374         {
00375             FBXFILESDK_NAMESPACE::FbxSdkFree((void*)p);
00376         }
00377     }
00378 }
00379 
00380 
00381 #define KFBXNEW_DECLARE_FRIEND        \
00382 template<typename T>        \
00383 friend T* _FBXSDK_NAMESPACE::FbxSdkNew();        \
00384 template<typename T, typename T1>        \
00385 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1);        \
00386 template<typename T, typename T1>        \
00387 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1);        \
00388 template<typename T, typename T1, typename T2>        \
00389 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2);        \
00390 template<typename T, typename T1, typename T2>        \
00391 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2);        \
00392 template<typename T, typename T1, typename T2>        \
00393 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2);        \
00394 template<typename T, typename T1, typename T2>        \
00395 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2);        \
00396 template<typename T, typename T1, typename T2, typename T3>        \
00397 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, T3& p3);        \
00398 template<typename T, typename T1, typename T2, typename T3>        \
00399 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, const T3& p3);        \
00400 template<typename T, typename T1, typename T2, typename T3>        \
00401 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, T3& p3);        \
00402 template<typename T, typename T1, typename T2, typename T3>        \
00403 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, const T3& p3);        \
00404 template<typename T, typename T1, typename T2, typename T3>        \
00405 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, T3& p3);        \
00406 template<typename T, typename T1, typename T2, typename T3>        \
00407 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, const T3& p3);        \
00408 template<typename T, typename T1, typename T2, typename T3>        \
00409 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, T3& p3);        \
00410 template<typename T, typename T1, typename T2, typename T3>        \
00411 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3);        \
00412 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00413 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, T3& p3, T4& p4);        \
00414 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00415 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, T3& p3, const T4& p4);        \
00416 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00417 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, const T3& p3, T4& p4);        \
00418 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00419 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, T2& p2, const T3& p3, const T4& p4);        \
00420 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00421 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, T3& p3, T4& p4);        \
00422 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00423 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, T3& p3, const T4& p4);        \
00424 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00425 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, const T3& p3, T4& p4);        \
00426 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00427 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);        \
00428 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00429 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, T3& p3, T4& p4);        \
00430 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00431 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, T3& p3, const T4& p4);        \
00432 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00433 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, const T3& p3, T4& p4);        \
00434 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00435 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);        \
00436 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00437 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, T3& p3, T4& p4);        \
00438 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00439 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);        \
00440 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00441 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);        \
00442 template<typename T, typename T1, typename T2, typename T3, typename T4>        \
00443 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);        \
00444 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>        \
00445 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);        \
00446 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>        \
00447 friend T* _FBXSDK_NAMESPACE::FbxSdkNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);        \
00448 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>        \
00449 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);        \
00450 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>        \
00451 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);        \
00452 template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>        \
00453 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);        \
00454 \
00455 template<typename T>    \
00456 friend void _FBXSDK_NAMESPACE::FbxSdkDelete(T* p);      \
00457 template<typename T>    \
00458 friend void _FBXSDK_NAMESPACE::FbxSdkDelete(const T* p);      \
00459 template<typename T>    \
00460 friend T* _FBXSDK_NAMESPACE::FbxSdkNewArray(int n);     \
00461 template<typename T>    \
00462 friend void _FBXSDK_NAMESPACE::FbxSdkDeleteArray(T* p); \
00463 
00464 #ifdef KARCH_DEV_MSC
00465     #pragma warning(pop)
00466 #endif
00467 
00468 #ifndef NAMESPACE_FRIEND_WORKAROUND
00469     #include <fbxfilesdk/fbxfilesdk_nsend.h>
00470 #endif
00471 
00472 #endif // FBXFILESDK_FBXFILESDK_NEW_H
00473