153 #define fill_with_garbage(block,size) memset((void *)(block), 0xBB, (size))
157 #endif // __cplusplus
159 template <
typename T>
162 memset(static_cast<void *>(block), 0xBB, (size));
168 #endif // __cplusplus
170 #endif // !USE_MACROS
174 #define fill_with_garbage(block,size) { }
178 #define MISCELLANEOUS_MEM_USAGE 0
179 #define HASH_TABLE_MEM_USAGE 1
180 #define STRING_MEM_USAGE 2
181 #define POOL_MEM_USAGE 3
182 #define STATS_OVERHEAD_MEM_USAGE 4
184 #define NUM_MEM_USAGE_CODES 5
203 #define savestring(x) (char *) strcpy ((char *)(malloc (strlen (x) + 1)), (x))
204 #define memsize_of_growable_string(gs) (*((int *)(gs)))
205 #define length_of_growable_string(gs) (*(((int *)(gs))+1))
206 #define text_of_growable_string(gs) (((char *)(gs)) + 2*sizeof(int *))
214 return strcpy(static_cast<char *>(malloc (strlen (x) + 1)), (x));
219 return (*((
int *)(gs)));
224 return (*(((
int *)(gs))+1));
229 return (((
char *)(gs)) + 2*
sizeof(
int *));
242 #define MAX_POOL_NAME_LENGTH 15
259 #ifdef MEMORY_POOL_STATS
263 #define increment_used_count(p) {(p)->used_count++;}
264 #define decrement_used_count(p) {(p)->used_count--;}
272 template <
typename P>
278 template <
typename P>
293 #define increment_used_count(p) { }
294 #define decrement_used_count(p) { }
301 #define MEM_POOLS_ENABLED 1
303 template <
typename T>
304 inline void allocate_with_pool(
agent* thisAgent,
memory_pool* p, T** dest_item_pointer)
307 #if MEM_POOLS_ENABLED
311 *(dest_item_pointer) = static_cast< T* > ((p)->free_list);
318 (p)->
free_list = *(
void * *)(*(dest_item_pointer));
323 #else // !MEM_POOLS_ENABLED
327 *dest_item_pointer =
static_cast< T *
> (malloc(
sizeof(T)));
333 #endif // !MEM_POOLS_ENABLED
336 template <
typename T>
337 inline void free_with_pool(
memory_pool* p, T * item)
339 #if MEM_POOLS_ENABLED
345 #else // !MEM_POOLS_ENABLED
353 #endif // !MEM_POOLS_ENABLED
376 #define insert_at_head_of_dll(header,item,next_field_name,prev_field_name) { \
377 ((item)->next_field_name) = (header) ; \
378 ((item)->prev_field_name) = NIL ; \
379 if (header) ((header)->prev_field_name) = (item) ; \
380 (header) = (item) ; }
394 #define remove_from_dll(header,item,next_field_name,prev_field_name) { \
395 if ((item)->next_field_name) \
396 ((item)->next_field_name->prev_field_name) = ((item)->prev_field_name); \
397 if ((item)->prev_field_name) { \
398 ((item)->prev_field_name->next_field_name) = ((item)->next_field_name); \
400 (header) = ((item)->next_field_name); \
418 #define fast_remove_from_dll(header,item,typename,next_field_name,prev_field_name) { \
419 typename *tempnext, *tempprev; \
420 tempnext = (item)->next_field_name; \
421 tempprev = (item)->prev_field_name; \
422 if (tempnext) tempnext->prev_field_name = tempprev; \
424 tempprev->next_field_name = tempnext; \
426 (header) = tempnext; } }
479 typedef uint32_t ((*hash_function)(
void *item,
short num_bits));