Jump to content

  • Log In with Google      Sign In   
  • Create Account


- - - - -

Custom memory and addons


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 FDsagizi   Members   -  Reputation: 514

Like
0Likes
Like

Posted 19 April 2013 - 02:09 AM

Hy smile.png

 

 

this method:

AS_API int asSetGlobalMemoryFunctions(asALLOCFUNC_t allocFunc, asFREEFUNC_t freeFunc);

 

work only with AngelScript engine, module, contex, but - AS have addons.



Sponsor:

#2 Andreas Jonsson   Moderators   -  Reputation: 3292

Like
0Likes
Like

Posted 19 April 2013 - 03:12 PM

True. The add-ons do not use the custom memory functions set in engine. I currently do not have any plans on changing that.
AngelCode.com - game development and more - Reference DB - game developer references
AngelScript - free scripting library - BMFont - free bitmap font generator - Tower - free puzzle game

#3 FDsagizi   Members   -  Reputation: 514

Like
0Likes
Like

Posted 20 April 2013 - 12:50 AM

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 *);

 

 

but  asNEW, asDELTE, asNEWARRAY and asDELETEARRAY we can't use from CScriptArray besoce he live in
 
as_memory.h
 
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
 

 


Edited by FDsagizi, 20 April 2013 - 01:09 AM.


#4 Andreas Jonsson   Moderators   -  Reputation: 3292

Like
0Likes
Like

Posted 20 April 2013 - 11:37 AM

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

#5 FDsagizi   Members   -  Reputation: 514

Like
0Likes
Like

Posted 20 April 2013 - 12:16 PM

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?

 

So, it's good question, for my types i use my memory allocator.
 
i understand you. You right!
 
What you think, about make possible set custom memory allocator for addons, example asSetGlobalMemoryFunctions_for_CScriptScrint. ( i use standard CScriptArray, and i think -  many guys too ) that it would be convenient, to use from a box!


#6 Andreas Jonsson   Moderators   -  Reputation: 3292

Like
0Likes
Like

Posted 20 April 2013 - 02:18 PM

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




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS