Hy
this method:
AS_API int asSetGlobalMemoryFunctions(asALLOCFUNC_t allocFunc, asFREEFUNC_t freeFunc);
work only with AngelScript engine, module, contex, but - AS have addons.
Hy
this method:
AS_API int asSetGlobalMemoryFunctions(asALLOCFUNC_t allocFunc, asFREEFUNC_t freeFunc);
work only with AngelScript engine, module, contex, but - AS have addons.
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game
i think i'ts no big task, i can modificate addons, but i have small problem for do this
in angelscript.h - have
typedef void *(*asALLOCFUNC_t)(size_t);
typedef void (*asFREEFUNC_t)(void *);
extern asALLOCFUNC_t userAlloc;
extern asFREEFUNC_t userFree;
// We don't overload the new operator as that would affect the application as well
#ifndef AS_DEBUG
#define asNEW(x) new(userAlloc(sizeof(x))) x
#define asDELETE(ptr,x) {void *tmp = ptr; (ptr)->~x(); userFree(tmp);}
#define asNEWARRAY(x,cnt) (x*)userAlloc(sizeof(x)*cnt)
#define asDELETEARRAY(ptr) userFree(ptr)
#else
typedef void *(*asALLOCFUNCDEBUG_t)(size_t, const char *, unsigned int);
#define asNEW(x) new(((asALLOCFUNCDEBUG_t)(userAlloc))(sizeof(x), __FILE__, __LINE__)) x
#define asDELETE(ptr,x) {void *tmp = ptr; (ptr)->~x(); userFree(tmp);}
#define asNEWARRAY(x,cnt) (x*)((asALLOCFUNCDEBUG_t)(userAlloc))(sizeof(x)*cnt, __FILE__, __LINE__)
#define asDELETEARRAY(ptr) userFree(ptr)
#endif
need move asNEW, asDELTE, asNEWARRAY and asDELETEARRAY from as_memory to angelscript.h for we can use this.
added:
ans so, if addons will be use asNEW, what will be with this code:
#if defined(__S3E__) // Marmalade doesn't understand (nothrow)
newBuffer = (SArrayBuffer*)new asBYTE[sizeof(SArrayBuffer)-1 + elementSize*(buffer->numElements + delta)];
#else
newBuffer = (SArrayBuffer*)new (nothrow) asBYTE[sizeof(SArrayBuffer)-1 + elementSize*(buffer->numElements + delta)];
#endif
Rather than exposing the internal macros, it would be easier just to use set a pair of global function pointers and declare a new pair of macros. That way your code won't be so tightly tied to the internals of the library.
Remember that the add-ons are not part of the core library. They should be treated as if they are part of the application. How are you doing the memory allocations for your own types that you register with the library?
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game
Remember that the add-ons are not part of the core library. They should be treated as if they are part of the application. How are you doing the memory allocations for your own types that you register with the library?
Yes. I do think it would be good to allow the use of custom memory allocators in the add-ons too. I just haven't spent any time on thinking about the best way of doing it.
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game