heap.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:2k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*
  2.  * Win32 heap definitions
  3.  *
  4.  * Copyright 1996 Alexandre Julliard
  5.  */
  6. #ifndef __WINE_HEAP_H
  7. #define __WINE_HEAP_H
  8. #include "config.h"
  9. #include "winbase.h"
  10. extern HANDLE SystemHeap;
  11. extern HANDLE SegptrHeap;
  12. extern int HEAP_IsInsideHeap( HANDLE heap, DWORD flags, LPCVOID ptr );
  13. extern SEGPTR HEAP_GetSegptr( HANDLE heap, DWORD flags, LPCVOID ptr );
  14. extern LPSTR HEAP_strdupA( HANDLE heap, DWORD flags, LPCSTR str );
  15. extern LPWSTR HEAP_strdupW( HANDLE heap, DWORD flags, LPCWSTR str );
  16. extern LPWSTR HEAP_strdupAtoW( HANDLE heap, DWORD flags, LPCSTR str );
  17. extern LPSTR HEAP_strdupWtoA( HANDLE heap, DWORD flags, LPCWSTR str );
  18. /* SEGPTR helper macros */
  19. #define SEGPTR_ALLOC(size) 
  20.          (HeapAlloc( SegptrHeap, 0, (size) ))
  21. #define SEGPTR_NEW(type) 
  22.          ((type *)HeapAlloc( SegptrHeap, 0, sizeof(type) ))
  23. #define SEGPTR_STRDUP(str) 
  24.          (HIWORD(str) ? HEAP_strdupA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
  25. #define SEGPTR_STRDUP_WtoA(str) 
  26.          (HIWORD(str) ? HEAP_strdupWtoA( SegptrHeap, 0, (str) ) : (LPSTR)(str))
  27. /* define an inline function, a macro won't do */
  28. static inline SEGPTR WINE_UNUSED SEGPTR_Get(LPCVOID ptr) {
  29.          return (HIWORD(ptr) ? HEAP_GetSegptr( SegptrHeap, 0, ptr ) : (SEGPTR)ptr);
  30. }
  31. #define SEGPTR_GET(ptr) SEGPTR_Get(ptr)
  32. #define SEGPTR_FREE(ptr) 
  33.          (HIWORD(ptr) ? HeapFree( SegptrHeap, 0, (ptr) ) : 0)
  34. /* system heap private data */
  35. /* you must lock the system heap before using this structure */
  36. typedef struct
  37. {
  38.     void     *gdi;        /* GDI heap */
  39.     void     *user;       /* USER handle table */
  40.     void     *cursor;     /* cursor information */
  41.     void     *queue;      /* message queues descriptor */
  42.     void     *win;        /* windows descriptor */
  43.     void     *root;       /* X11 root window */
  44. } SYSTEM_HEAP_DESCR;
  45. extern SYSTEM_HEAP_DESCR *SystemHeapDescr;
  46. #endif  /* __WINE_HEAP_H */