• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * nghttp3
3  *
4  * Copyright (c) 2019 nghttp3 contributors
5  * Copyright (c) 2017 ngtcp2 contributors
6  * Copyright (c) 2014 nghttp2 contributors
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining
9  * a copy of this software and associated documentation files (the
10  * "Software"), to deal in the Software without restriction, including
11  * without limitation the rights to use, copy, modify, merge, publish,
12  * distribute, sublicense, and/or sell copies of the Software, and to
13  * permit persons to whom the Software is furnished to do so, subject to
14  * the following conditions:
15  *
16  * The above copyright notice and this permission notice shall be
17  * included in all copies or substantial portions of the Software.
18  *
19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
22  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
23  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
24  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
25  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26  */
27 #ifndef NGHTTP3_MEM_H
28 #define NGHTTP3_MEM_H
29 
30 #ifdef HAVE_CONFIG_H
31 #  include <config.h>
32 #endif /* HAVE_CONFIG_H */
33 
34 #include <nghttp3/nghttp3.h>
35 
36 /* Convenient wrapper functions to call allocator function in
37    |mem|. */
38 #ifndef MEMDEBUG
39 void *nghttp3_mem_malloc(const nghttp3_mem *mem, size_t size);
40 void nghttp3_mem_free(const nghttp3_mem *mem, void *ptr);
41 void *nghttp3_mem_calloc(const nghttp3_mem *mem, size_t nmemb, size_t size);
42 void *nghttp3_mem_realloc(const nghttp3_mem *mem, void *ptr, size_t size);
43 #else /* MEMDEBUG */
44 void *nghttp3_mem_malloc_debug(const nghttp3_mem *mem, size_t size,
45                                const char *func, const char *file, size_t line);
46 
47 #  define nghttp3_mem_malloc(MEM, SIZE)                                        \
48     nghttp3_mem_malloc_debug((MEM), (SIZE), __func__, __FILE__, __LINE__)
49 
50 void nghttp3_mem_free_debug(const nghttp3_mem *mem, void *ptr, const char *func,
51                             const char *file, size_t line);
52 
53 #  define nghttp3_mem_free(MEM, PTR)                                           \
54     nghttp3_mem_free_debug((MEM), (PTR), __func__, __FILE__, __LINE__)
55 
56 void nghttp3_mem_free2_debug(nghttp3_free free_func, void *ptr, void *user_data,
57                              const char *func, const char *file, size_t line);
58 
59 #  define nghttp3_mem_free2(FREE_FUNC, PTR, USER_DATA)                         \
60     nghttp3_mem_free2_debug((FREE_FUNC), (PTR), (USER_DATA), __func__,         \
61                             __FILE__, __LINE__)
62 
63 void *nghttp3_mem_calloc_debug(const nghttp3_mem *mem, size_t nmemb,
64                                size_t size, const char *func, const char *file,
65                                size_t line);
66 
67 #  define nghttp3_mem_calloc(MEM, NMEMB, SIZE)                                 \
68     nghttp3_mem_calloc_debug((MEM), (NMEMB), (SIZE), __func__, __FILE__,       \
69                              __LINE__)
70 
71 void *nghttp3_mem_realloc_debug(const nghttp3_mem *mem, void *ptr, size_t size,
72                                 const char *func, const char *file,
73                                 size_t line);
74 
75 #  define nghttp3_mem_realloc(MEM, PTR, SIZE)                                  \
76     nghttp3_mem_realloc_debug((MEM), (PTR), (SIZE), __func__, __FILE__,        \
77                               __LINE__)
78 #endif /* MEMDEBUG */
79 
80 #endif /* NGHTTP3_MEM_H */
81