1 | /* $Id: heap.h,v 1.2 1999-12-18 19:30:46 achimha Exp $ */
|
---|
2 |
|
---|
3 | /*
|
---|
4 | * Project Odin Software License can be found in LICENSE.TXT
|
---|
5 | * Win32 heap API functions for OS/2
|
---|
6 | * Copyright 1998 Sander van Leeuwen
|
---|
7 | */
|
---|
8 | #ifndef __HEAP_H__
|
---|
9 | #define __HEAP_H__
|
---|
10 |
|
---|
11 |
|
---|
12 | #include <winbase.h>
|
---|
13 |
|
---|
14 | #ifndef HEAP_NO_SERIALIZE
|
---|
15 | #define HEAP_NO_SERIALIZE 1
|
---|
16 | #endif
|
---|
17 |
|
---|
18 | #ifndef HEAP_ZERO_MEMORY
|
---|
19 | #define HEAP_ZERO_MEMORY 8
|
---|
20 | #endif
|
---|
21 |
|
---|
22 |
|
---|
23 | //extern HANDLE SystemHeap;
|
---|
24 | //extern HANDLE SegptrHeap;
|
---|
25 | static HANDLE SegptrHeap;
|
---|
26 |
|
---|
27 | //extern int HEAP_IsInsideHeap( HANDLE heap, DWORD flags, LPCVOID ptr );
|
---|
28 | //extern SEGPTR HEAP_GetSegptr ( HANDLE heap, DWORD flags, LPCVOID ptr );
|
---|
29 |
|
---|
30 | //extern LPVOID HEAP_xalloc ( HANDLE heap, DWORD flags, DWORD size );
|
---|
31 | //extern LPVOID HEAP_xrealloc ( HANDLE heap, DWORD flags, LPVOID lpMem, DWORD size );
|
---|
32 | extern LPSTR WIN32API HEAP_strdupA ( HANDLE heap, DWORD flags, LPCSTR str );
|
---|
33 | //extern LPWSTR HEAP_strdupW ( HANDLE heap, DWORD flags, LPCWSTR str );
|
---|
34 | //extern LPWSTR HEAP_strdupAtoW ( HANDLE heap, DWORD flags, LPCSTR str );
|
---|
35 | //extern LPSTR HEAP_strdupWtoA ( HANDLE heap, DWORD flags, LPCWSTR str );
|
---|
36 |
|
---|
37 | /* SEGPTR helper macros */
|
---|
38 |
|
---|
39 | #define SEGPTR_ALLOC(size) \
|
---|
40 | (HeapAlloc( SegptrHeap, 0, (size) ))
|
---|
41 | #define SEGPTR_NEW(type) \
|
---|
42 | ((type *)HeapAlloc( SegptrHeap, 0, sizeof(type) ))
|
---|
43 | #define SEGPTR_STRDUP(str) \
|
---|
44 | (HIWORD(str) ? HEAP_strdupA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
|
---|
45 | #define SEGPTR_STRDUP_WtoA(str) \
|
---|
46 | (HIWORD(str) ? HEAP_strdupWtoA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
|
---|
47 |
|
---|
48 | #if 0
|
---|
49 | /* define an inline function, a macro won't do */
|
---|
50 | static SEGPTR SEGPTR_Get(LPCVOID ptr)
|
---|
51 | {
|
---|
52 | return (HIWORD(ptr) ? HEAP_GetSegptr( SegptrHeap, 0, ptr ) : (SEGPTR)ptr);
|
---|
53 | }
|
---|
54 |
|
---|
55 | #define SEGPTR_GET(ptr) SEGPTR_Get(ptr)
|
---|
56 | #define SEGPTR_FREE(ptr) \
|
---|
57 | (HIWORD(ptr) ? HeapFree( SegptrHeap, 0, (ptr) ) : 0)
|
---|
58 | #endif
|
---|
59 |
|
---|
60 |
|
---|
61 | LPVOID WIN32API HeapAlloc (HANDLE hHeap, DWORD dwFlags, DWORD dwBytes);
|
---|
62 | LPVOID WIN32API HeapReAlloc (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, DWORD dwBytes);
|
---|
63 | BOOL WIN32API HeapFree (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);
|
---|
64 | HANDLE WIN32API HeapCreate (DWORD flOptions, DWORD dwInitialSize, DWORD dwMaximumSize);
|
---|
65 | BOOL WIN32API HeapDestroy (HANDLE hHeap);
|
---|
66 | DWORD WIN32API HeapSize (HANDLE hHeap, DWORD arg2, PVOID arg3);
|
---|
67 | DWORD WIN32API HeapCompact (HANDLE hHeap, DWORD dwFlags);
|
---|
68 | BOOL WIN32API HeapValidate (HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem);
|
---|
69 | BOOL WIN32API HeapUnlock (HANDLE hHeap);
|
---|
70 | BOOL WIN32API HeapLock (HANDLE hHeap);
|
---|
71 | BOOL WIN32API HeapWalk (HANDLE hHeap, void *lpEntry);
|
---|
72 | HANDLE WIN32API GetProcessHeap(VOID);
|
---|
73 | HLOCAL WIN32API LocalAlloc (UINT fuFlags, DWORD cbBytes);
|
---|
74 | HLOCAL WIN32API LocalDiscard (HLOCAL hMem);
|
---|
75 | UINT WIN32API LocalFlags (HLOCAL hMem);
|
---|
76 | HLOCAL WIN32API LocalFree (HLOCAL hMem);
|
---|
77 | HLOCAL WIN32API LocalHandle (PCVOID lpMem);
|
---|
78 | BOOL WIN32API LocalUnlock (HLOCAL hMem);
|
---|
79 | HLOCAL WIN32API LocalReAlloc (HLOCAL hMem, DWORD cbBytes, UINT fuFlags);
|
---|
80 | UINT WIN32API LocalSize (HLOCAL hMem);
|
---|
81 | PVOID WIN32API LocalLock (HLOCAL hMem);
|
---|
82 | UINT WIN32API LocalShrink (HLOCAL hMem, UINT cbNewSize);
|
---|
83 | UINT WIN32API LocalCompact (UINT cbNewSize);
|
---|
84 | HGLOBAL WIN32API GlobalAlloc (UINT fuFlags, DWORD dwBytes);
|
---|
85 | HGLOBAL WIN32API GlobalFree (HGLOBAL arg1);
|
---|
86 | HGLOBAL WIN32API GlobalHandle (LPCVOID arg1);
|
---|
87 | UINT WIN32API GlobalFlags (HGLOBAL arg1);
|
---|
88 | DWORD WIN32API GlobalCompact (DWORD dwMinFree);
|
---|
89 | PVOID WIN32API GlobalLock (HGLOBAL arg1);
|
---|
90 | HGLOBAL WIN32API GlobalReAlloc (HGLOBAL arg1, DWORD arg2, UINT arg3);
|
---|
91 | DWORD WIN32API GlobalSize (HGLOBAL arg1);
|
---|
92 | BOOL WIN32API GlobalUnlock (HGLOBAL arg1);
|
---|
93 |
|
---|
94 |
|
---|
95 | #endif
|
---|