[2119] | 1 | /* $Id: heap.h,v 1.2 1999-12-18 19:30:46 achimha Exp $ */
|
---|
[469] | 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 );
|
---|
[2119] | 32 | extern LPSTR WIN32API HEAP_strdupA ( HANDLE heap, DWORD flags, LPCSTR str );
|
---|
[469] | 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
|
---|