3 #include "g_cont_common.h"
10 #define EQUAL_TO_CAPACITY ((size_t)-1)
11 #define EQUAL_TO_CURRENT ((size_t)-1)
26 virtual void* reserveScalar (
size_t ) = 0;
28 virtual void unreserve (
void* ) = 0;
33 virtual void* reserveArray (
size_t data_capacity ,
size_t suggested_capacity = EQUAL_TO_CAPACITY ) = 0;
36 virtual void* reallocArray (
void* ,
size_t current_data_size ,
size_t data_capacity = EQUAL_TO_CURRENT ,
size_t suggested_data_capacity = EQUAL_TO_CAPACITY ) = 0;
38 template <
class T > T* reserveScalarT ( ) {
return (T*)reserveScalar (
sizeof(T) ); }
39 template <
class T > T* reallocArrayT ( T* ,
size_t current_item_num ,
size_t item_capacity = EQUAL_TO_CURRENT,
size_t suggested_item_capacity = EQUAL_TO_CAPACITY );
40 template <
class T > T* reserveArrayT (
size_t item_capacity ,
size_t suggested_item_capacity = EQUAL_TO_CAPACITY );
42 virtual size_t getLocationSize (
void* ) {
G_EXC_UNIMPLEMENTED (
"size_t HeapAbstract::getLocationSize ( void* location )" );
return 0; }
43 virtual void* searchLocation (
size_t ) {
G_EXC_UNIMPLEMENTED (
"void* HeapAbstract::searchLocation ( size_t size )" );
return 0; }
58 virtual void* reserveScalar (
size_t s );
59 virtual void unreserve (
void* );
61 virtual void* reserveArray (
size_t data_capacity ,
size_t suggested_capacity = EQUAL_TO_CAPACITY );
62 virtual void* reallocArray (
void* ,
size_t current_data_size ,
size_t aDataCapacity = EQUAL_TO_CURRENT ,
size_t suggested_data_capacity = EQUAL_TO_CAPACITY );
65 template<
class T> T* HeapAbstract::reserveArrayT (
size_t item_capacity ,
size_t suggested_item_capacity )
67 size_t data_cap = (item_capacity == EQUAL_TO_CURRENT )?EQUAL_TO_CURRENT: (item_capacity *
sizeof(T));
68 size_t suggested_data_cap = (suggested_item_capacity == EQUAL_TO_CAPACITY )?EQUAL_TO_CAPACITY: (suggested_item_capacity *
sizeof(T));
70 return reinterpret_cast<T*
> (reserveArray ( data_cap , suggested_data_cap ) );
73 template <
class T > T* HeapAbstract::reallocArrayT ( T* aOldData ,
size_t current_item_num ,
size_t item_capacity ,
size_t suggested_item_capacity )
75 size_t data_cap = (item_capacity == EQUAL_TO_CURRENT )?EQUAL_TO_CURRENT: (item_capacity *
sizeof(T));
76 size_t suggested_data_cap = (suggested_item_capacity == EQUAL_TO_CAPACITY )?EQUAL_TO_CAPACITY: (suggested_item_capacity *
sizeof(T));
78 return reinterpret_cast<T*
> (reallocArray ( (
void*)aOldData ,
sizeof(T) * current_item_num , data_cap , suggested_data_cap ) );
#define G_EXC_DEFINE_MSG(aexctypename, abaseexctypename, amsg)
Definition: g_exception_macros.h:43
Definition: g.mthread.ThreadSimpleEvent.h:5
Definition: g_cont_HeapAbstract.h:53
Definition: g_cont_HeapAbstract.h:20
#define G_EXC_UNIMPLEMENTED(acontextstr)
Sets a function as unimplemented ( raises UnimplemetedException ).
Definition: g_exception_macros.h:137
Anchestor Exception class for g::lib.
Definition: g_Exception.h:17