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 template<typename T> T* FbxNewArray(const int n)
360 {
361  if( FBXSDK_IS_SIMPLE_TYPE(T) )
362  {
363  return (T*)FbxMalloc(sizeof(T)*n);
364  }
365  else
366  {
367  void* pTmp = FbxMalloc(sizeof(T) * n + sizeof(int));
368  T* p = (T*)((int*)pTmp+1);
369  *((int*)pTmp) = n;
370  for( int i = 0; i < n; ++i )
371  {
372  new((T*)p+i)T; //in-place new, not allocating memory so it is safe.
373  }
374  return p;
375  }
376 }
377 
378 template<typename T> void FbxDeleteArray(T* p)
379 {
380  if( p )
381  {
382  if( !FBXSDK_IS_SIMPLE_TYPE(T) )
383  {
384  for( int i = 0; i < ((int*)p)[-1]; ++i )
385  {
386  ((T*)p)[i].~T();
387  }
388  FbxFree((int*)p-1);
389  }
390  else
391  {
392  FbxFree((void*)p);
393  }
394  }
395 }
396 
397 #define FBXSDK_FRIEND_NEW()\
398  template<typename T>\
399  friend T* FBXSDK_NAMESPACE::FbxNew();\
400  template<typename T, typename T1>\
401  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1);\
402  template<typename T, typename T1>\
403  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1);\
404  template<typename T, typename T1, typename T2>\
405  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2);\
406  template<typename T, typename T1, typename T2>\
407  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2);\
408  template<typename T, typename T1, typename T2>\
409  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2);\
410  template<typename T, typename T1, typename T2>\
411  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2);\
412  template<typename T, typename T1, typename T2, typename T3>\
413  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3);\
414  template<typename T, typename T1, typename T2, typename T3>\
415  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3);\
416  template<typename T, typename T1, typename T2, typename T3>\
417  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3);\
418  template<typename T, typename T1, typename T2, typename T3>\
419  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3);\
420  template<typename T, typename T1, typename T2, typename T3>\
421  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3);\
422  template<typename T, typename T1, typename T2, typename T3>\
423  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3);\
424  template<typename T, typename T1, typename T2, typename T3>\
425  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3);\
426  template<typename T, typename T1, typename T2, typename T3>\
427  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3);\
428  \
429  template<typename T, typename T1, typename T2, typename T3, typename T4>\
430  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4);\
431  template<typename T, typename T1, typename T2, typename T3, typename T4>\
432  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, const T4& p4);\
433  template<typename T, typename T1, typename T2, typename T3, typename T4>\
434  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, T4& p4);\
435  template<typename T, typename T1, typename T2, typename T3, typename T4>\
436  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, const T3& p3, const T4& p4);\
437  template<typename T, typename T1, typename T2, typename T3, typename T4>\
438  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, T4& p4);\
439  template<typename T, typename T1, typename T2, typename T3, typename T4>\
440  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, T3& p3, const T4& p4);\
441  template<typename T, typename T1, typename T2, typename T3, typename T4>\
442  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, T4& p4);\
443  template<typename T, typename T1, typename T2, typename T3, typename T4>\
444  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, const T2& p2, const T3& p3, const T4& p4);\
445  template<typename T, typename T1, typename T2, typename T3, typename T4>\
446  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4);\
447  template<typename T, typename T1, typename T2, typename T3, typename T4>\
448  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4);\
449  template<typename T, typename T1, typename T2, typename T3, typename T4>\
450  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4);\
451  template<typename T, typename T1, typename T2, typename T3, typename T4>\
452  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, const T4& p4);\
453  template<typename T, typename T1, typename T2, typename T3, typename T4>\
454  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4);\
455  template<typename T, typename T1, typename T2, typename T3, typename T4>\
456  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4);\
457  template<typename T, typename T1, typename T2, typename T3, typename T4>\
458  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4);\
459  template<typename T, typename T1, typename T2, typename T3, typename T4>\
460  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4);\
461  \
462  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
463  friend T* FBXSDK_NAMESPACE::FbxNew(T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\
464  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
465  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, T5& p5);\
466  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
467  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, T5& p5);\
468  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
469  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, const T3& p3, T4& p4, T5& p5);\
470  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
471  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, const T4& p4, T5& p5);\
472  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
473  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, T2& p2, T3& p3, T4& p4, const T5& p5);\
474  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
475  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, T5& p5);\
476  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
477  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, const T4& p4, T5& p5);\
478  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
479  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, T3& p3, T4& p4, const T5& p5);\
480  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
481  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, T5& p5);\
482  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
483  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, T4& p4, const T5& p5);\
484  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5>\
485  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5);\
486  \
487  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>\
488  friend T* FBXSDK_NAMESPACE::FbxNew(const T1& p1, const T2& p2, const T3& p3, const T4& p4, const T5& p5, const T6& p6);\
489  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>\
490  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);\
491  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>\
492  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);\
493  template<typename T, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>\
494  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);\
495  template<typename T>\
496  friend void FBXSDK_NAMESPACE::FbxDelete(T* p);\
497  template<typename T>\
498  friend void FBXSDK_NAMESPACE::FbxDelete(const T* p);\
499  template<typename T>\
500  friend T* FBXSDK_NAMESPACE::FbxNewArray(const int n);\
501  template<typename T>\
502  friend void FBXSDK_NAMESPACE::FbxDeleteArray(T* p);
503 
504 #ifdef FBXSDK_COMPILER_MSC
505  #pragma warning(pop)
506 #endif
507 
508 #include <fbxsdk/fbxsdk_nsend.h>
509 
510 #endif /* _FBXSDK_CORE_ARCH_NEW_H_ */
FBX SDK environment definition.
T * FbxNew()
Definition: fbxnew.h:59
T * FbxNewArray(const int n)
Definition: fbxnew.h:359
#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:378