mame/src/emu/restrack.h
Aaron Giles ee9f88963c Copyright cleanup:
- removed years from copyright notices
 - removed redundant (c) from copyright notices
 - updated "the MAME Team" to be "Nicola Salmoria and the MAME Team"
2008-01-06 00:47:40 +00:00

91 lines
3.4 KiB
C

/***************************************************************************
restrack.h
Core MAME resource tracking.
Copyright 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__ */