| 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
 | 
|---|