r3rememb
real/support/r3rememb.h
r3support
Memory managment class. Allocats large chunk of memory from which smaller chunks can be fetched quickly. All the allocated memory can be freed in one call very efficiently.
r3Root
R3CLID_ROOT
r3Remember
R3CLID_REMEMBER - 300
int R3RegisterRememberClass(R3APP *app);
R3REMM_ALLOC
ALLOC
R3REMM_ALLOC
void*, allocated memory or NULL if failed
R3INT, size of memory to be allocated
R3INT, flags (R3MEMF_CLEAR).
rc = obj.ALLOC(p1, p3);
Allocate memory
R3REMM_FREE
FREE
R3REMM_FREE
obj.FREE();
Free all the memory
Avail
Avail
R3REMA_Avail
Integer
R3INT
avail mem
value = jsobj.GetAvail();
R3INT value;
R3GetAttrs(r3obj, R3REMA_Avail, &value, R3TAG_END);
Size
Size
R3REMA_Size
Integer
R3INT
pool size
jsobj.SetSize(value);
value = jsobj.GetSize();
R3INT value = ...;
R3SetAttrs(r3obj, R3REMA_Size, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3REMA_Size, &value, R3TAG_END);
Limit
Limit
R3REMA_Limit
Integer
R3INT
limit for single allocs
jsobj.SetLimit(value);
value = jsobj.GetLimit();
R3INT value = ...;
R3SetAttrs(r3obj, R3REMA_Limit, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3REMA_Limit, &value, R3TAG_END);
Total
Total
R3REMA_Total
Integer
R3INT
total memory allocated via this key
jsobj.SetTotal(value);
value = jsobj.GetTotal();
R3INT value = ...;
R3SetAttrs(r3obj, R3REMA_Total, value, R3TAG_END);
R3INT value;
R3GetAttrs(r3obj, R3REMA_Total, &value, R3TAG_END);
TotalUsed
TotalUsed
R3REMA_TotalUsed
Integer
int*
pointer to int
value = jsobj.GetTotalUsed();
int* value;
R3GetAttrs(r3obj, R3REMA_TotalUsed, &value, R3TAG_END);
MemKey
MemKey
R3REMA_MemKey
String
void*
key which can be passed to actual alloc
value = jsobj.GetMemKey();
void* value;
R3GetAttrs(r3obj, R3REMA_MemKey, &value, R3TAG_END);
Use these handy macros
r3appobj *