| 1 | /* $Id: heap.h,v 1.2 1999-06-01 19:48:18 phaller Exp $ */
|
|---|
| 2 |
|
|---|
| 3 | /*
|
|---|
| 4 | * Win32 heap definitions
|
|---|
| 5 | *
|
|---|
| 6 | * Copyright 1996 Alexandre Julliard
|
|---|
| 7 | */
|
|---|
| 8 |
|
|---|
| 9 | #ifndef __WINE_HEAP_H
|
|---|
| 10 | #define __WINE_HEAP_H
|
|---|
| 11 |
|
|---|
| 12 | #include "winbase.h"
|
|---|
| 13 |
|
|---|
| 14 | extern HANDLE SystemHeap;
|
|---|
| 15 | extern HANDLE SegptrHeap;
|
|---|
| 16 |
|
|---|
| 17 | extern int HEAP_IsInsideHeap( HANDLE heap, DWORD flags, LPCVOID ptr );
|
|---|
| 18 | extern SEGPTR HEAP_GetSegptr( HANDLE heap, DWORD flags, LPCVOID ptr );
|
|---|
| 19 | extern LPVOID HEAP_xalloc( HANDLE heap, DWORD flags, DWORD size );
|
|---|
| 20 | extern LPVOID HEAP_xrealloc( HANDLE heap, DWORD flags, LPVOID lpMem, DWORD size );
|
|---|
| 21 | extern LPSTR HEAP_strdupA( HANDLE heap, DWORD flags, LPCSTR str );
|
|---|
| 22 | extern LPWSTR HEAP_strdupW( HANDLE heap, DWORD flags, LPCWSTR str );
|
|---|
| 23 | extern LPWSTR HEAP_strdupAtoW( HANDLE heap, DWORD flags, LPCSTR str );
|
|---|
| 24 | extern LPSTR HEAP_strdupWtoA( HANDLE heap, DWORD flags, LPCWSTR str );
|
|---|
| 25 |
|
|---|
| 26 | /* SEGPTR helper macros */
|
|---|
| 27 |
|
|---|
| 28 | #define SEGPTR_ALLOC(size) \
|
|---|
| 29 | (HeapAlloc( SegptrHeap, 0, (size) ))
|
|---|
| 30 | #define SEGPTR_NEW(type) \
|
|---|
| 31 | ((type *)HeapAlloc( SegptrHeap, 0, sizeof(type) ))
|
|---|
| 32 | #define SEGPTR_STRDUP(str) \
|
|---|
| 33 | (HIWORD(str) ? HEAP_strdupA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
|
|---|
| 34 | #define SEGPTR_STRDUP_WtoA(str) \
|
|---|
| 35 | (HIWORD(str) ? HEAP_strdupWtoA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
|
|---|
| 36 |
|
|---|
| 37 | /* define an inline function, a macro won't do */
|
|---|
| 38 | static SEGPTR SEGPTR_Get(LPCVOID ptr)
|
|---|
| 39 | {
|
|---|
| 40 | return (HIWORD(ptr) ? HEAP_GetSegptr( SegptrHeap, 0, ptr ) : (SEGPTR)ptr);
|
|---|
| 41 | }
|
|---|
| 42 |
|
|---|
| 43 | #define SEGPTR_GET(ptr) SEGPTR_Get(ptr)
|
|---|
| 44 | #define SEGPTR_FREE(ptr) \
|
|---|
| 45 | (HIWORD(ptr) ? HeapFree( SegptrHeap, 0, (ptr) ) : 0)
|
|---|
| 46 |
|
|---|
| 47 |
|
|---|
| 48 | #endif /* __WINE_HEAP_H */
|
|---|