source: trunk/include/heap.h@ 4927

Last change on this file since 4927 was 2119, checked in by achimha, 26 years ago

enable HEAP_strdupA definition

File size: 3.6 KB
Line 
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;
25static 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 );
32extern 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 */
50static 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
61LPVOID WIN32API HeapAlloc (HANDLE hHeap, DWORD dwFlags, DWORD dwBytes);
62LPVOID WIN32API HeapReAlloc (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, DWORD dwBytes);
63BOOL WIN32API HeapFree (HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);
64HANDLE WIN32API HeapCreate (DWORD flOptions, DWORD dwInitialSize, DWORD dwMaximumSize);
65BOOL WIN32API HeapDestroy (HANDLE hHeap);
66DWORD WIN32API HeapSize (HANDLE hHeap, DWORD arg2, PVOID arg3);
67DWORD WIN32API HeapCompact (HANDLE hHeap, DWORD dwFlags);
68BOOL WIN32API HeapValidate (HANDLE hHeap, DWORD dwFlags, LPCVOID lpMem);
69BOOL WIN32API HeapUnlock (HANDLE hHeap);
70BOOL WIN32API HeapLock (HANDLE hHeap);
71BOOL WIN32API HeapWalk (HANDLE hHeap, void *lpEntry);
72HANDLE WIN32API GetProcessHeap(VOID);
73HLOCAL WIN32API LocalAlloc (UINT fuFlags, DWORD cbBytes);
74HLOCAL WIN32API LocalDiscard (HLOCAL hMem);
75UINT WIN32API LocalFlags (HLOCAL hMem);
76HLOCAL WIN32API LocalFree (HLOCAL hMem);
77HLOCAL WIN32API LocalHandle (PCVOID lpMem);
78BOOL WIN32API LocalUnlock (HLOCAL hMem);
79HLOCAL WIN32API LocalReAlloc (HLOCAL hMem, DWORD cbBytes, UINT fuFlags);
80UINT WIN32API LocalSize (HLOCAL hMem);
81PVOID WIN32API LocalLock (HLOCAL hMem);
82UINT WIN32API LocalShrink (HLOCAL hMem, UINT cbNewSize);
83UINT WIN32API LocalCompact (UINT cbNewSize);
84HGLOBAL WIN32API GlobalAlloc (UINT fuFlags, DWORD dwBytes);
85HGLOBAL WIN32API GlobalFree (HGLOBAL arg1);
86HGLOBAL WIN32API GlobalHandle (LPCVOID arg1);
87UINT WIN32API GlobalFlags (HGLOBAL arg1);
88DWORD WIN32API GlobalCompact (DWORD dwMinFree);
89PVOID WIN32API GlobalLock (HGLOBAL arg1);
90HGLOBAL WIN32API GlobalReAlloc (HGLOBAL arg1, DWORD arg2, UINT arg3);
91DWORD WIN32API GlobalSize (HGLOBAL arg1);
92BOOL WIN32API GlobalUnlock (HGLOBAL arg1);
93
94
95#endif
Note: See TracBrowser for help on using the repository browser.