00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #ifndef __OFFSCREENGECKO_GECKOMEM_H__
00038 #define __OFFSCREENGECKO_GECKOMEM_H__
00039
00044 #include <memory.h>
00045 #include "baseobj.h"
00046
00051 OSGK_DERIVEDTYPE(OSGK_GeckoMem);
00052
00059 OSGK_EXTERN_C OSGK_API void* osgk_geckomem_alloc (OSGK_GeckoMem* mem, size_t size);
00065 OSGK_EXTERN_C OSGK_API void osgk_geckomem_free (OSGK_GeckoMem* mem, void* p);
00074 OSGK_EXTERN_C OSGK_API void* osgk_geckomem_realloc (OSGK_GeckoMem* mem,
00075 void* p, size_t size);
00084 static OSGK_INLINE void* osgk_geckomem_clone (OSGK_GeckoMem* mem, const void* p, size_t size)
00085 {
00086 void* newP = osgk_geckomem_alloc (mem, size);
00087 if (newP != 0)
00088 memcpy (newP, p, size);
00089 return newP;
00090 }
00091
00092 #ifdef __cplusplus
00093
00094 namespace OSGK
00095 {
00100 struct GeckoMem : public CXXAPI::Wrap<OSGK_GeckoMem>
00101 {
00102 explicit GeckoMem (WrappedType* obj) : WrapperType (obj) {}
00103 GeckoMem& operator=(const GeckoMem& other)
00104 {
00105 WrapperType::operator=(other);
00106 return *this;
00107 }
00108
00114 void* Alloc (size_t size)
00115 {
00116 return osgk_geckomem_alloc (GetObject(), size);
00117 }
00122 void Free (void* p)
00123 {
00124 return osgk_geckomem_free (GetObject(), p);
00125 }
00133 void* Realloc (void* p, size_t size)
00134 {
00135 return osgk_geckomem_realloc (GetObject(), p, size);
00136 }
00144 void* Clone (const void* p, size_t size)
00145 {
00146 return osgk_geckomem_clone (GetObject(), p, size);
00147 }
00148 };
00149 }
00150 #endif
00151
00152 #endif // __OFFSCREENGECKO_GECKOMEM_H__