20 #ifndef _FBXSDK_CORE_ARCH_ALLOC_H_ 21 #define _FBXSDK_CORE_ARCH_ALLOC_H_ 25 #if defined(_DEBUG) && defined(FBXSDK_ENV_WIN) 29 #if defined(FBXSDK_ENV_MAC) 30 #include <malloc/malloc.h> 37 #if defined(FBXSDK_CPU_32) && !defined(FBXSDK_ENV_IOS) 38 #define FBXSDK_MEMORY_ALIGNMENT ((size_t)8U) 40 #define FBXSDK_MEMORY_ALIGNMENT ((size_t)16U) 43 #define FBXSDK_MEMORY_COPY(dst, src, size) {memcpy(dst,src,size);} 45 typedef void* (*FbxMallocProc)(size_t);
46 typedef void* (*FbxCallocProc)(size_t, size_t);
47 typedef void* (*FbxReallocProc)(
void*, size_t);
101 #ifndef DOXYGEN_SHOULD_SKIP_THIS 103 FBXSDK_DLL void* FbxCalloc(
size_t pCount,
size_t pSize);
104 FBXSDK_DLL void* FbxRealloc(
void* pData,
size_t pSize);
106 FBXSDK_DLL char* FbxStrDup(
const char* pString);
107 FBXSDK_DLL wchar_t* FbxStrDupWC(
const wchar_t* pString);
111 FBXSDK_DLL void* FbxMallocDebug(
size_t pSize,
int pBlock,
const char* pFile,
int pLine);
112 FBXSDK_DLL void* FbxCallocDebug(
size_t pCount,
size_t pSize,
int pBlock,
const char* pFile,
int pLine);
113 FBXSDK_DLL void* FbxReallocDebug(
void* pData,
size_t pSize,
int pBlock,
const char* pFile,
int pLine);
114 FBXSDK_DLL void FbxFreeDebug(
void* pData,
int pBlock);
117 #if defined(FBXSDK_ALLOC_DEBUG) 118 #define FbxMalloc(s) FbxMallocDebug(s, _NORMAL_BLOCK, __FILE__, __LINE__) 119 #define FbxCalloc(c, s) FbxCallocDebug(c, s, _NORMAL_BLOCK, __FILE__, __LINE__) 120 #define FbxRealloc(p, s) FbxReallocDebug(p, s, _NORMAL_BLOCK, __FILE__, __LINE__) 121 #define FbxFree(p) FbxFreeDebug(p, _NORMAL_BLOCK) 141 template<
typename T>
void FbxDelete(T* p);
142 template<
typename T>
void FbxDelete(
const T* p);
190 template<
class Type,
class Policy=FbxDeletionPolicyDefault<Type> >
class FbxAutoPtr 200 inline Type*
Get()
const {
return mPtr; }
206 inline operator Type* ()
const {
return mPtr; }
215 inline operator bool ()
const {
return mPtr != 0; }
220 FBX_ASSERT(pPtr == 0 || pPtr != mPtr);
227 Type* TmpPtr = pOther.mPtr;
243 #ifndef DOXYGEN_SHOULD_SKIP_THIS 288 int DecRef() { count--;
if (count < 0) count = 0;
return count; }
294 template<
class Type,
class Policy=FbxDeletionPolicyDefault<Type> >
class FbxSharedPtr 321 if (pSPtr.mPtr != 0 && mRef != 0)
336 FBX_ASSERT(mRef !=
NULL);
349 inline Type*
Get()
const {
return mPtr; }
355 inline operator Type* ()
const {
return mPtr; }
364 inline operator bool ()
const {
return mPtr != 0; }
370 #ifndef DOXYGEN_SHOULD_SKIP_THIS 376 FBX_ASSERT(mPtr != 0);
377 if (mRef->DecRef() == 0)
379 Policy::DeleteIt(&mPtr);
void Reset(Type *pPtr=0)
Reset the scoped pointer by swapping with another pointer.
FbxAutoPtr mimics the auto_ptr class template implementation available in the C++ Standard Library...
FbxSharedDestroyPtr(Type *pPtr=0)
Construct from a pointer.
FBX SDK environment definition.
FbxSharedPtr(Type *pPtr)
Construct from a pointer.
void FbxSetFreeHandler(FbxFreeProc pHandler)
Set the global memory freeing function used internally by the FBX SDK.
FbxReallocProc FbxGetDefaultReallocHandler()
Get the default global memory re-allocation function used internally by the FBX SDK.
Deletion policy for pointer template classes that uses the FbxFree() function.
FbxReallocProc FbxGetReallocHandler()
Get the global memory re-allocation function used internally by the FBX SDK.
FbxSharedPtr class describes an object that stores a pointer to a single allocated object of type Typ...
FbxCallocProc FbxGetDefaultCallocHandler()
Get the default global zero'd memory allocation function used internally by the FBX SDK...
FbxSharedPtr(const FbxSharedPtr &pSPtr)
Copy constructor.
FbxMallocProc FbxGetMallocHandler()
Get the global memory allocation function used internally by the FBX SDK.
~FbxSharedPtr()
Destructor.
Type * operator->() const
Member access operator.
static void DeleteIt(Type **pPtr)
Destruction policy implementation.
FbxAutoDeletePtr(Type *pPtr=0)
Construct from a pointer.
Deletion policy for pointer template classes that uses the Destroy() function.
Type * Get() const
Retrieve the pointer it holds.
FbxAutoDestroyPtr(Type *pPtr=0)
Construct from a pointer.
void FbxDelete(T *p)
Deletion policy for pointer template classes that uses the FbxDelete() function.
FbxSharedDeletePtr(Type *pPtr=0)
Construct from a pointer.
bool operator!() const
Logical not operator.
Type & operator*() const
Dereference operator.
void *(* FbxReallocProc)(void *, size_t)
Function pointer signature used to replace "calloc".
FbxCallocProc FbxGetCallocHandler()
Get the global zero'd memory allocation function used internally by the FBX SDK.
static void DeleteIt(Type **pPtr)
Destruction policy implementation.
FbxFreeProc FbxGetDefaultFreeHandler()
Get the default global memory freeing function used internally by the FBX SDK.
void *(* FbxMallocProc)(size_t)
static void DeleteIt(Type **pPtr)
Destruction policy implementation.
Type & operator*() const
Dereference operator.
void *(* FbxCallocProc)(size_t, size_t)
Function pointer signature used to replace "malloc".
Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate.
void FbxSetMallocHandler(FbxMallocProc pHandler)
Function pointer signature used to replace "free".
FbxFreeProc FbxGetFreeHandler()
Get the global memory freeing function used internally by the FBX SDK.
void FbxSetReallocHandler(FbxReallocProc pHandler)
Set the global memory re-allocation function used internally by the FBX SDK.
Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate.
void FbxSetCallocHandler(FbxCallocProc pHandler)
Set the global zero'd memory allocation function used internally by the FBX SDK.
Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. ...
Type * Get() const
Retrieve the pointer it holds.
bool operator!() const
Logical not operator.
Deletion policy for pointer template classes that uses the delete operator.
Scoped pointer for FbxNew allocations, which call FbxDelete() to deallocate.
FbxAutoFreePtr(Type *pPtr=0)
Construct from a pointer.
FbxMallocProc FbxGetDefaultMallocHandler()
Get the default global memory allocation function used internally by the FBX SDK. ...
void(* FbxFreeProc)(void *)
Function pointer signature used to replace "realloc".
Scoped pointer for FbxMalloc allocations, which call FbxFree() to deallocate.
FbxAutoPtr(Type *pPtr=0)
Construct from a pointer.
FbxSharedPtr & operator=(const FbxSharedPtr &pSPtr)
Scoped pointer for FbxObject derived classes, which call Destroy() to deallocate. ...
void Swap(FbxAutoPtr &pOther)
Swap with another pointer.
FbxSharedFreePtr(Type *pPtr=0)
Construct from a pointer.
Type * operator->() const
Member access operator.
static void DeleteIt(Type **mPtr)
Destruction policy implementation.
Type * Release()
Release the pointer, so that it won't perform deletion in its destruction.