FBX C++ API Reference
fbxnew.h
Go to the documentation of this file.
1 /****************************************************************************************
2 
3  Copyright (C) 2015 Autodesk, Inc.
4  All rights reserved.
5 
6  Use of this software is subject to the terms of the Autodesk license agreement
7  provided at the time of installation or download, or which otherwise accompanies
8  this software in either electronic or hard copy form.
9 
10 ****************************************************************************************/
11 
20 #ifndef _FBXSDK_CORE_ARCH_NEW_H_
21 #define _FBXSDK_CORE_ARCH_NEW_H_
22 
23 #include <fbxsdk/fbxsdk_def.h>
24 
25 #include <new>
26 
27 #if defined(FBXSDK_COMPILER_MSC)
28  #pragma warning(push)
29  #pragma warning(disable : 4345) //warning C4345: behavior change: an object of POD type constructed with an initializer of the form () will be default-initialized
30 #endif
31 
32 #include <fbxsdk/fbxsdk_nsbegin.h>
33 
34 //Type traits for primitive types
35 template<typename T> struct FbxSimpleType { enum {value = 0}; };
36 template<typename T> struct FbxSimpleType<T*> { enum {value = 1}; };
37 template<typename T> struct FbxSimpleType<const T> { enum {value = FbxSimpleType<T>::value}; };
38 template<typename T, size_t n> struct FbxSimpleType<T[n]> { enum {value = FbxSimpleType<T>::value}; };
39 
40 #define FBXSDK_DEFINE_SIMPLE_TYPE(T) template<> struct FbxSimpleType<T>{ union {T t;} catcherr; enum {value = 1};}
41 
46 FBXSDK_DEFINE_SIMPLE_TYPE(unsigned short);
55 FBXSDK_DEFINE_SIMPLE_TYPE(unsigned long long);
56 
57 #define FBXSDK_IS_SIMPLE_TYPE(T) ((bool)FbxSimpleType<T>::value)
58 
59 template<typename T> T* FbxNew()
60 {
61  T* p = (T*)FbxMalloc(sizeof(T));
62  return new(p)T();
63 }
64 
65 template<typename T, typename T1> T* FbxNew(T1& p1)
66 {
67  T* p = (T*)FbxMalloc(sizeof(T));
68  return new(p)T(p1);
69 }
70 
71 template<typename T, typename T1> T* FbxNew(const T1& p1)
72 {
73  T* p = (T*)FbxMalloc(sizeof(T));
74  return new(p)T(p1);
75 }
76 
77 template<typename T, typename T1, typename T2> T* FbxNew(T1& p1, T2& p2)
78 {
79  T* p = (T*)FbxMalloc(sizeof(T));
80  return new(p)T(p1, p2);
81 }
82 
83 template<typename T, typename T1, typename T2> T* FbxNew(T1& p1, const T2& p2)
84 {
85  T* p = (T*)FbxMalloc(sizeof(T));
86  return new(p)T(p1, p2);
87 }
88 
89 template<typename T, typename T1, typename T2> T* FbxNew(const T1& p1, T2& p2)
90 {
91  T* p = (T*)FbxMalloc(sizeof(T));
92  return new(p)T(p1, p2);
93 }
94 
95 template<typename T, typename T1, typename T2> T* FbxNew(const T1& p1, const T2& p2)
96 {
97  T* p = (T*)FbxMalloc(sizeof(T));
98  return new(p)T(p1, p2);
99 }
100 
101 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, T2& p2, T3& p3)
102 {
103  T* p = (T*)FbxMalloc(sizeof(T));
104  return new(p)T(p1, p2, p3);
105 }
106 
107 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, T2& p2, const T3& p3)
108 {
109  T* p = (T*)FbxMalloc(sizeof(T));
110  return new(p)T(p1, p2, p3);
111 }
112 
113 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, const T2& p2, T3& p3)
114 {
115  T* p = (T*)FbxMalloc(sizeof(T));
116  return new(p)T(p1, p2, p3);
117 }
118 
119 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(T1& p1, const T2& p2, const T3& p3)
120 {
121  T* p = (T*)FbxMalloc(sizeof(T));
122  return new(p)T(p1, p2, p3);
123 }
124 
125 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, T2& p2, T3& p3)
126 {
127  T* p = (T*)FbxMalloc(sizeof(T));
128  return new(p)T(p1, p2, p3);
129 }
130 
131 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, T2& p2, const T3& p3)
132 {
133  T* p = (T*)FbxMalloc(sizeof(T));
134  return new(p)T(p1, p2, p3);
135 }
136 
137 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, const T2& p2, T3& p3)
138 {
139  T* p = (T*)FbxMalloc(sizeof(T));
140  return new(p)T(p1, p2, p3);
141 }
142 
143 template<typename T, typename T1, typename T2, typename T3> T* FbxNew(const T1& p1, const T2& p2, const T3& p3)
144 {
145  T* p = (T*)FbxMalloc(sizeof(T));
146  return new(p)T(p1, p2, p3);
147 }
148 
149 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, T3& p3, T4& p4)
150 {
151  T* p = (T*)FbxMalloc(sizeof(T));
152  return new(p)T(p1, p2, p3, p4);
153 }
154 
155 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4)
156 {
157  T* p = (T*)FbxMalloc(sizeof(T));
158  return new(p)T(p1, p2, p3, p4);
159 }
160 
161 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4)
162 {
163  T* p = (T*)FbxMalloc(sizeof(T));
164  return new(p)T(p1, p2, p3, p4);
165 }
166 
167 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4)
168 {
169  T* p = (T*)FbxMalloc(sizeof(T));
170  return new(p)T(p1, p2, p3, p4);
171 }
172 
173 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4)
174 {
175  T* p = (T*)FbxMalloc(sizeof(T));
176  return new(p)T(p1, p2, p3, p4);
177 }
178 
179 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4)
180 {
181  T* p = (T*)FbxMalloc(sizeof(T));
182  return new(p)T(p1, p2, p3, p4);
183 }
184 
185 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4)
186 {
187  T* p = (T*)FbxMalloc(sizeof(T));
188  return new(p)T(p1, p2, p3, p4);
189 }
190 
191 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4)
192 {
193  T* p = (T*)FbxMalloc(sizeof(T));
194  return new(p)T(p1, p2, p3, p4);
195 }
196 
197 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4)
198 {
199  T* p = (T*)FbxMalloc(sizeof(T));
200  return new(p)T(p1, p2, p3, p4);
201 }
202 
203 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4)
204 {
205  T* p = (T*)FbxMalloc(sizeof(T));
206  return new(p)T(p1, p2, p3, p4);
207 }
208 
209 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4)
210 {
211  T* p = (T*)FbxMalloc(sizeof(T));
212  return new(p)T(p1, p2, p3, p4);
213 }
214 
215 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4)
216 {
217  T* p = (T*)FbxMalloc(sizeof(T));
218  return new(p)T(p1, p2, p3, p4);
219 }
220 
221 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4)
222 {
223  T* p = (T*)FbxMalloc(sizeof(T));
224  return new(p)T(p1, p2, p3, p4);
225 }
226 
227 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4)
228 {
229  T* p = (T*)FbxMalloc(sizeof(T));
230  return new(p)T(p1, p2, p3, p4);
231 }
232 
233 template<typename T, typename T1, typename T2, typename T3, typename T4> T* FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4)
234 {
235  T* p = (T*)FbxMalloc(sizeof(T));
236  return new(p)T(p1, p2, p3, p4);
237 }
238 
239 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)
240 {
241  T* p = (T*)FbxMalloc(sizeof(T));
242  return new(p)T(p1, p2, p3, p4);
243 }
244 
245 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)
246 {
247  T* p = (T*)FbxMalloc(sizeof(T));
248  return new(p)T(p1,p2,p3,p4,p5);
249 }
250 
251 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)
252 {
253  T* p = (T*)FbxMalloc(sizeof(T));
254  return new(p)T(p1,p2,p3,p4,p5);
255 }
256 
257 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)
258 {
259  T* p = (T*)FbxMalloc(sizeof(T));
260  return new(p)T(p1,p2,p3,p4,p5);
261 }
262 
263 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)
264 {
265  T* p = (T*)FbxMalloc(sizeof(T));
266  return new(p)T(p1,p2,p3,p4,p5);
267 }
268 
269 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)
270 {
271  T* p = (T*)FbxMalloc(sizeof(T));
272  return new(p)T(p1,p2,p3,p4,p5);
273 }
274 
275 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)
276 {
277  T* p = (T*)FbxMalloc(sizeof(T));
278  return new(p)T(p1,p2,p3,p4,p5);
279 }
280 
281 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)
282 {
283  T* p = (T*)FbxMalloc(sizeof(T));
284  return new(p)T(p1,p2,p3,p4,p5);
285 }
286 
287 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)
288 {
289  T* p = (T*)FbxMalloc(sizeof(T));
290  return new(p)T(p1,p2,p3,p4,p5);
291 }
292 
293 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)
294 {
295  T* p = (T*)FbxMalloc(sizeof(T));
296  return new(p)T(p1,p2,p3,p4,p5);
297 }
298 
299 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)
300 {
301  T* p = (T*)FbxMalloc(sizeof(T));
302  return new(p)T(p1,p2,p3,p4,p5);
303 }
304 
305 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)
306 {
307  T* p = (T*)FbxMalloc(sizeof(T));
308  return new(p)T(p1,p2,p3,p4,p5);
309 }
310 
311 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)
312 {
313  T* p = (T*)FbxMalloc(sizeof(T));
314  return new(p)T(p1,p2,p3,p4,p5);
315 }
316 
317 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)
318 {
319  T* p = (T*)FbxMalloc(sizeof(T));
320  return new(p)T(p1,p2,p3,p4,p5,p6);
321 }
322 
323 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)
324 {
325  T* p = (T*)FbxMalloc(sizeof(T));
326  return new(p)T(p1,p2,p3,p4,p5,p6,p7);
327 }
328 
329 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)
330 {
331  T* p = (T*)FbxMalloc(sizeof(T));
332  return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8);
333 }
334 
335 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)
336 {
337  T* p = (T*)FbxMalloc(sizeof(T));
338  return new(p)T(p1,p2,p3,p4,p5,p6,p7,p8,p9);
339 }
340 
341 template<typename T> void FbxDelete(T* p)
342 {
343  if( p )
344  {
345  ((T*)p)->~T();
346  FbxFree(p);
347  }
348 }
349 
350 template<typename T> void FbxDelete(const T* p)
351 {
352  if( p )
353  {
354  ((T*)p)->~T();
355  FbxFree(const_cast<T*>(p));
356  }
357 }
358 
359 #ifdef FBXSDK_CPU_32
360 #define MALLOC_HEADER_SIZE 8
361 #endif
362 #ifdef FBXSDK_CPU_64
363 #define MALLOC_HEADER_SIZE 16
364 #endif
365 
366 template<typename T> T* FbxNewArray(const int n)
367 {
368  const size_t lSize = FbxAllocSize((size_t)n, sizeof(T));
369  if( FBXSDK_IS_SIMPLE_TYPE(T) )
370  {
371  return (T*)FbxMalloc(lSize);
372  }
373  else
374  {
375  // malloc usually provides 8-byte or 16-byte alignment on 32bit and 64bit architectures
376  // respectively. By allocating 8 or 16 bytes for the header info, rather than sizeof(int),
377  // we ensure this function maintains the same alignment behaviour as malloc.
378  void* const pTmp = FbxMalloc(lSize + MALLOC_HEADER_SIZE);
379  *static_cast<int*>(pTmp) = n;
380  T* const p = reinterpret_cast<T*>(static_cast<char*>(pTmp) + MALLOC_HEADER_SIZE);
381 
382  for( int i = 0; i < n; ++i )
383  {
384  new(p+i)T; // in-place new, not allocating memory so it is safe.
385  }
386  return p;
387  }
388 }
389 
390 template<typename T> void FbxDeleteArray(T* p)
391 {
392  if( p )
393  {
394  if( !FBXSDK_IS_SIMPLE_TYPE(T) )
395  {
396 // When compiling on MacOS with libstdc++ we cannot use remove_const (it does not exist - not C++11)
397 #ifndef USING_LIBSTDCPP
398  typedef typename std::remove_const<T>::type TMutable;
399  TMutable* const pMutable = const_cast<TMutable*>(p);
400  // FbxNewArray allocates MALLOC_HEADER_SIZE extra bytes as a header to store the array length
401  void* const pTmp = reinterpret_cast<char*>(pMutable) - MALLOC_HEADER_SIZE;
402  const int n = *static_cast<int*>(pTmp);
403 #else
404  void* const pTmp = (char*)(p) - MALLOC_HEADER_SIZE;
405  const int n = *(int*)(pTmp);
406 #endif
407  for( int i = 0; i < n; ++i )
408  {
409  p[i].~T();
410  }
411  FbxFree(pTmp);
412  }
413  else
414  {
415  FbxFree((void*)p);
416  }
417  }
418 }
419 
420 #define FBXSDK_FRIEND_NEW()\
421  template<typename T>\
422  friend T* FBXSDK_NAMESPACE::FbxNew();\
423  template<typename T, typename T1>\
424  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1);\
425  template<typename T, typename T1>\
426  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1);\
427  template<typename T, typename T1, typename T2>\
428  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2);\
429  template<typename T, typename T1, typename T2>\
430  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2);\
431  template<typename T, typename T1, typename T2>\
432  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2);\
433  template<typename T, typename T1, typename T2>\
434  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2);\
435  template<typename T, typename T1, typename T2, typename T3>\
436  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3);\
437  template<typename T, typename T1, typename T2, typename T3>\
438  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3);\
439  template<typename T, typename T1, typename T2, typename T3>\
440  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3);\
441  template<typename T, typename T1, typename T2, typename T3>\
442  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3);\
443  template<typename T, typename T1, typename T2, typename T3>\
444  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3);\
445  template<typename T, typename T1, typename T2, typename T3>\
446  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3);\
447  template<typename T, typename T1, typename T2, typename T3>\
448  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3);\
449  template<typename T, typename T1, typename T2, typename T3>\
450  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3);\
451  \
452  template<typename T, typename T1, typename T2, typename T3, typename T4>\
453  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4);\
454  template<typename T, typename T1, typename T2, typename T3, typename T4>\
455  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4);\
456  template<typename T, typename T1, typename T2, typename T3, typename T4>\
457  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4);\
458  template<typename T, typename T1, typename T2, typename T3, typename T4>\
459  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4);\
460  template<typename T, typename T1, typename T2, typename T3, typename T4>\
461  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4);\
462  template<typename T, typename T1, typename T2, typename T3, typename T4>\
463  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4);\
464  template<typename T, typename T1, typename T2, typename T3, typename T4>\
465  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4);\
466  template<typename T, typename T1, typename T2, typename T3, typename T4>\
467  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);\
468  template<typename T, typename T1, typename T2, typename T3, typename T4>\
469  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4);\
470  template<typename T, typename T1, typename T2, typename T3, typename T4>\
471  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4);\
472  template<typename T, typename T1, typename T2, typename T3, typename T4>\
473  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4);\
474  template<typename T, typename T1, typename T2, typename T3, typename T4>\
475  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);\
476  template<typename T, typename T1, typename T2, typename T3, typename T4>\
477  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4);\
478  template<typename T, typename T1, typename T2, typename T3, typename T4>\
479  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);\
480  template<typename T, typename T1, typename T2, typename T3, typename T4>\
481  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);\
482  template<typename T, typename T1, typename T2, typename T3, typename T4>\
483  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);\
484  \
485  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
486  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\
487  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
488  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\
489  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
490  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5);\
491  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
492  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5);\
493  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
494  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5);\
495  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
496  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5);\
497  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
498  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5);\
499  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
500  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5);\
501  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
502  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5);\
503  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
504  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5);\
505  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
506  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5);\
507  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
508  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);\
509  \
510  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>\
511  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);\
512  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>\
513  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);\
514  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>\
515  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);\
516  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>\
517  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);\
518  template<typename T>\
519  friend void FBXSDK_NAMESPACE::FbxDelete(T* p);\
520  template<typename T>\
521  friend void FBXSDK_NAMESPACE::FbxDelete(const T* p);\
522  template<typename T>\
523  friend T* FBXSDK_NAMESPACE::FbxNewArray(const int n);\
524  template<typename T>\
525  friend void FBXSDK_NAMESPACE::FbxDeleteArray(T* p);
526 
527 #ifdef FBXSDK_COMPILER_MSC
528  #pragma warning(pop)
529 #endif
530 
531 #include <fbxsdk/fbxsdk_nsend.h>
532 
533 #endif /* _FBXSDK_CORE_ARCH_NEW_H_ */
FBX SDK environment definition.
T * FbxNew()
Definition: fbxnew.h:59
T * FbxNewArray(const int n)
Definition: fbxnew.h:366
#define FBXSDK_IS_SIMPLE_TYPE(T)
Definition: fbxnew.h:57
#define FBXSDK_DEFINE_SIMPLE_TYPE(T)
Definition: fbxnew.h:40
void FbxDelete(T *p)
Deletion policy for pointer template classes that uses the FbxDelete() function.
Definition: fbxnew.h:341
void FbxDeleteArray(T *p)
Definition: fbxnew.h:390