Initial commit
This commit is contained in:
		
							
								
								
									
										35
									
								
								include/mem.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								include/mem.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| #ifndef MEM_INCLUDED | ||||
| #define MEM_INCLUDED | ||||
|  | ||||
| #include "except.h" // Exceptions | ||||
| #include <stddef.h> // size_t | ||||
|  | ||||
| /* General Macros*/ | ||||
| #define MEM_KB(x) ((size_t)(x) * 1024ULL) | ||||
| #define MEM_MB(x) ((size_t)(x) * 1024ULL * 1024ULL) | ||||
| #define MEM_GB(x) ((size_t)(x) * 1024ULL * 1024ULL * 1024ULL) | ||||
| #define MEM_SIZE(x)    (ptrdiff_t)sizeof(x) | ||||
| #define MEM_COUNT(a)   (MEM_SIZE(a) / MEM_SIZE(*(a))) | ||||
| #define MEM_LEN(s)     (MEM_COUNT(s) - 1) | ||||
|  | ||||
| /* Default behavior is to throw exceptions and zero out memory*/ | ||||
| enum MemFlags { | ||||
|     NOZERO       = 1 << 0,  /* 0001 */ | ||||
|     SOFT_FAIL    = 1 << 1,  /* 0010 */ | ||||
|     HARD_FAIL    = 1 << 2,  /* 0100 */ | ||||
| }; | ||||
|  | ||||
| extern const Exception OOM; // Out of memory | ||||
|  | ||||
| extern void *mem_alloc (int flags, size_t nbytes, const char *file, int line); | ||||
| extern void mem_free(void *ptr, const char *file, int line); | ||||
| extern void *mem_resize(int flags, void *ptr, size_t nbytes, const char *file, int line); | ||||
| extern int mem_is_zero(const void *ptr, size_t nbytes); | ||||
|  | ||||
|  | ||||
| #define ALLOC(flags, nbytes)  mem_alloc((flags), (nbytes), __FILE__, __LINE__) | ||||
| #define FREE(ptr) ((void)(mem_free((ptr), __FILE__, __LINE__), (ptr) = 0)) | ||||
| #define RESIZE(flags, ptr, nbytes) 	((ptr) = mem_resize((flags), (ptr), \ | ||||
| 	(nbytes), __FILE__, __LINE__)) | ||||
|  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user