diff options
author | 2007-12-17 15:19:59 +0000 | |
---|---|---|
committer | 2007-12-17 15:19:59 +0000 | |
commit | 7b77f1218624ea26dbb2efd85a19f795f5d4e02e (patch) | |
tree | 19209304095572b4fd61c2a2d6a5aa75c4e471ad /src/emu/restrack.h | |
parent | 3da7f476068b3ffef713218ba2fc1bd5030f2c38 (diff) |
Initial checkin of MAME 0.121.mame0121
Diffstat (limited to 'src/emu/restrack.h')
-rw-r--r-- | src/emu/restrack.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/emu/restrack.h b/src/emu/restrack.h new file mode 100644 index 00000000000..9453710668b --- /dev/null +++ b/src/emu/restrack.h @@ -0,0 +1,90 @@ +/*************************************************************************** + + restrack.h + + Core MAME resource tracking. + + Copyright (c) 1996-2007, Nicola Salmoria and the MAME Team. + Visit http://mamedev.org for licensing and usage restrictions. + +***************************************************************************/ + +#ifndef __RESTRACK_H__ +#define __RESTRACK_H__ + +#include "mamecore.h" +#include "pool.h" +#include "astring.h" + + +/*************************************************************************** + MACROS +***************************************************************************/ + +#define OBJTYPE_ASTRING OBJECT_TYPE('a','s','t','r') +#define OBJTYPE_BITMAP OBJECT_TYPE('b','i','t','m') +#define OBJTYPE_TIMER OBJECT_TYPE('t','i','m','r') +#define OBJTYPE_STATEREG OBJECT_TYPE('s','t','a','t') + + + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +/* initialize the resource tracking system */ +void init_resource_tracking(void); + +/* tear down the resource tracking system */ +void exit_resource_tracking(void); + +/* begin tracking resources */ +void begin_resource_tracking(void); + +/* stop tracking resources and free everything since the last begin */ +void end_resource_tracking(void); + +/* register an object with the current pool */ +void *restrack_register_object(object_type type, void *ptr, size_t size, const char *file, int line); + +/* validate that a block of memory has been allocated by auto_malloc() */ +void validate_auto_malloc_memory(void *memory, size_t memory_size); + +/* return the current resource tag */ +INLINE int get_resource_tag(void) +{ + extern int resource_tracking_tag; + return resource_tracking_tag; +} + + +/* allocate memory and fatalerror if there's a problem */ +#define malloc_or_die(s) malloc_or_die_file_line(s, __FILE__, __LINE__) +void *malloc_or_die_file_line(size_t size, const char *file, int line) ATTR_MALLOC; + +/* allocate memory that will be freed at the next end_resource_tracking */ +#define auto_malloc(s) auto_malloc_file_line(s, __FILE__, __LINE__) +void *auto_malloc_file_line(size_t size, const char *file, int line) ATTR_MALLOC; + +/* allocate memory that will be freed at the next end_resource_tracking */ +#define auto_realloc(p, s) auto_realloc_file_line(p, s, __FILE__, __LINE__) +void *auto_realloc_file_line(void *ptr, size_t size, const char *file, int line) ATTR_MALLOC; + +/* allocate memory and duplicate a string that will be freed at the next end_resource_tracking */ +#define auto_strdup(s) auto_strdup_file_line(s, __FILE__, __LINE__) +char *auto_strdup_file_line(const char *str, const char *file, int line) ATTR_MALLOC; + +/* auto_strdup() variant that tolerates NULL */ +#define auto_strdup_allow_null(s) auto_strdup_allow_null_file_line(s, __FILE__, __LINE__) +char *auto_strdup_allow_null_file_line(const char *str, const char *file, int line) ATTR_MALLOC; + +/* allocate a bitmap that will be freed at the next end_resource_tracking */ +#define auto_astring_alloc() auto_astring_alloc_file_line(__FILE__, __LINE__) +astring *auto_astring_alloc_file_line(const char *file, int line); + +/* allocate a bitmap that will be freed at the next end_resource_tracking */ +#define auto_bitmap_alloc(w,h,f) auto_bitmap_alloc_file_line(w, h, f, __FILE__, __LINE__) +bitmap_t *auto_bitmap_alloc_file_line(int width, int height, bitmap_format format, const char *file, int line); + + +#endif /* __RESTRACK_H__ */ |