src/third-party/lzma/Alloc.h (view raw)
1/* Alloc.h -- Memory allocation functions
22018-02-19 : Igor Pavlov : Public domain */
3
4#ifndef __COMMON_ALLOC_H
5#define __COMMON_ALLOC_H
6
7#include "7zTypes.h"
8
9EXTERN_C_BEGIN
10
11void *MyAlloc(size_t size);
12void MyFree(void *address);
13
14#ifdef _WIN32
15
16void SetLargePageSize();
17
18void *MidAlloc(size_t size);
19void MidFree(void *address);
20void *BigAlloc(size_t size);
21void BigFree(void *address);
22
23#else
24
25#define MidAlloc(size) MyAlloc(size)
26#define MidFree(address) MyFree(address)
27#define BigAlloc(size) MyAlloc(size)
28#define BigFree(address) MyFree(address)
29
30#endif
31
32extern const ISzAlloc g_Alloc;
33extern const ISzAlloc g_BigAlloc;
34extern const ISzAlloc g_MidAlloc;
35extern const ISzAlloc g_AlignedAlloc;
36
37
38typedef struct
39{
40 ISzAlloc vt;
41 ISzAllocPtr baseAlloc;
42 unsigned numAlignBits; /* ((1 << numAlignBits) >= sizeof(void *)) */
43 size_t offset; /* (offset == (k * sizeof(void *)) && offset < (1 << numAlignBits) */
44} CAlignOffsetAlloc;
45
46void AlignOffsetAlloc_CreateVTable(CAlignOffsetAlloc *p);
47
48
49EXTERN_C_END
50
51#endif