| [469] | 1 | /* $Id: heap.h,v 1.1 1999-08-10 12:43:21 phaller 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 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
|
|---|