Zycore  1.2.0.0
Allocator.h
Go to the documentation of this file.
1 /***************************************************************************************************
2 
3  Zyan Core Library (Zycore-C)
4 
5  Original Author : Florian Bernd
6 
7  * Permission is hereby granted, free of charge, to any person obtaining a copy
8  * of this software and associated documentation files (the "Software"), to deal
9  * in the Software without restriction, including without limitation the rights
10  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11  * copies of the Software, and to permit persons to whom the Software is
12  * furnished to do so, subject to the following conditions:
13  *
14  * The above copyright notice and this permission notice shall be included in all
15  * copies or substantial portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23  * SOFTWARE.
24 
25 ***************************************************************************************************/
26 
32 #ifndef ZYCORE_ALLOCATOR_H
33 #define ZYCORE_ALLOCATOR_H
34 
35 #include <Zycore/Status.h>
36 #include <Zycore/Types.h>
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 /* ============================================================================================== */
43 /* Enums and types */
44 /* ============================================================================================== */
45 
46 struct ZyanAllocator_;
47 
64 typedef ZyanStatus (*ZyanAllocatorAllocate)(struct ZyanAllocator_* allocator, void** p,
65  ZyanUSize element_size, ZyanUSize n);
66 
77 typedef ZyanStatus (*ZyanAllocatorDeallocate)(struct ZyanAllocator_* allocator, void* p,
78  ZyanUSize element_size, ZyanUSize n);
79 
88 typedef struct ZyanAllocator_
89 {
103 
104 /* ============================================================================================== */
105 /* Exported functions */
106 /* ============================================================================================== */
107 
119  ZyanAllocatorAllocate reallocate, ZyanAllocatorDeallocate deallocate);
120 
121 #ifndef ZYAN_NO_LIBC
122 
133 
134 #endif // ZYAN_NO_LIBC
135 
136 /* ============================================================================================== */
137 
138 #ifdef __cplusplus
139 }
140 #endif
141 
142 #endif /* ZYCORE_ALLOCATOR_H */
ZYCORE_EXPORT ZYAN_REQUIRES_LIBC ZyanAllocator * ZyanAllocatorDefault(void)
ZyanStatus(* ZyanAllocatorAllocate)(struct ZyanAllocator_ *allocator, void **p, ZyanUSize element_size, ZyanUSize n)
Definition: Allocator.h:64
ZyanStatus(* ZyanAllocatorDeallocate)(struct ZyanAllocator_ *allocator, void *p, ZyanUSize element_size, ZyanUSize n)
Definition: Allocator.h:77
ZYCORE_EXPORT ZyanStatus ZyanAllocatorInit(ZyanAllocator *allocator, ZyanAllocatorAllocate allocate, ZyanAllocatorAllocate reallocate, ZyanAllocatorDeallocate deallocate)
struct ZyanAllocator_ ZyanAllocator
#define ZYAN_REQUIRES_LIBC
Definition: Defines.h:352
#define ZYCORE_EXPORT
Definition: Defines.h:221
ZyanU32 ZyanStatus
Definition: Status.h:48
Definition: Allocator.h:89
ZyanAllocatorAllocate reallocate
Definition: Allocator.h:97
ZyanAllocatorDeallocate deallocate
Definition: Allocator.h:101
ZyanAllocatorAllocate allocate
Definition: Allocator.h:93