1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 
6 #ifndef HECMW_MALLOC_INCLUDED
7 #define HECMW_MALLOC_INCLUDED
8 
9 #include <stdlib.h>
10 #include <string.h>
11 #include <stdio.h>
12 
13 #ifdef HECMW_MALLOC
14 #define HECMW_malloc(size) HECMW_malloc_(size, __FILE__, __LINE__)
15 #define HECMW_calloc(nmemb, size) HECMW_calloc_(nmemb, size, __FILE__, __LINE__)
16 #define HECMW_realloc(ptr, size) HECMW_realloc_(ptr, size, __FILE__, __LINE__)
17 #define HECMW_strdup(s) HECMW_strdup_(s, __FILE__, __LINE__)
18 #define HECMW_free(ptr) HECMW_free_(ptr, __FILE__, __LINE__)
19 #else
20 #define HECMW_malloc(size) malloc(size)
21 #define HECMW_calloc(nmemb, size) calloc(nmemb, size)
22 #define HECMW_realloc(ptr, size) realloc(ptr, size)
23 #define HECMW_strdup(s) strdup(s)
24 #define HECMW_free(ptr) free(ptr)
25 #endif
26 
27 extern void *HECMW_malloc_(size_t size, char *file, int line);
28 
29 extern void *HECMW_calloc_(size_t nmemb, size_t size, char *file, int line);
30 
31 extern void *HECMW_realloc_(void *ptr, size_t size, char *file, int line);
32 
33 extern char *HECMW_strdup_(const char *s, char *file, int line);
34 
35 extern void HECMW_free_(void *ptr, char *file, int line);
36 
37 extern int HECMW_check_memleak(void);
38 
39 extern long HECMW_get_memsize(void);
40 
41 extern void HECMW_set_autocheck_memleak(int flag);
42 
43 extern int HECMW_list_meminfo(FILE *fp);
44 
45 #endif
46