mirror of
https://github.com/holub/mame
synced 2025-05-24 06:30:04 +03:00

- removed years from copyright notices - removed redundant (c) from copyright notices - updated "the MAME Team" to be "Nicola Salmoria and the MAME Team"
91 lines
3.4 KiB
C
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__ */
|