1 /*
2  * Copyright 2010 Vicente J. Botet Escriba
3  * Copyright 2015, 2017 Andrey Semashev
4  *
5  * Distributed under the Boost Software License, Version 1.0.
6  * See http://www.boost.org/LICENSE_1_0.txt
7  */
8 
9 #ifndef BOOST_WINAPI_HEAP_MEMORY_HPP_INCLUDED_
10 #define BOOST_WINAPI_HEAP_MEMORY_HPP_INCLUDED_
11 
12 #include <boost/winapi/basic_types.hpp>
13 
14 #ifdef BOOST_HAS_PRAGMA_ONCE
15 #pragma once
16 #endif
17 
18 #if !defined( BOOST_USE_WINDOWS_H )
19 #undef HeapAlloc
20 extern "C" {
21 
22 #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
23 BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
24 GetProcessHeaps(boost::winapi::DWORD_ NumberOfHeaps, boost::winapi::PHANDLE_ ProcessHeaps);
25 #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
26 
27 BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
28 GetProcessHeap(BOOST_WINAPI_DETAIL_VOID);
29 
30 BOOST_SYMBOL_IMPORT boost::winapi::LPVOID_ BOOST_WINAPI_WINAPI_CC
31 HeapAlloc(
32     boost::winapi::HANDLE_ hHeap,
33     boost::winapi::DWORD_ dwFlags,
34     boost::winapi::SIZE_T_ dwBytes);
35 
36 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
37 HeapFree(
38     boost::winapi::HANDLE_ hHeap,
39     boost::winapi::DWORD_ dwFlags,
40     boost::winapi::LPVOID_ lpMem);
41 
42 BOOST_SYMBOL_IMPORT boost::winapi::LPVOID_ BOOST_WINAPI_WINAPI_CC
43 HeapReAlloc(
44     boost::winapi::HANDLE_ hHeap,
45     boost::winapi::DWORD_ dwFlags,
46     boost::winapi::LPVOID_ lpMem,
47     boost::winapi::SIZE_T_ dwBytes);
48 
49 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
50 BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
51 HeapCreate(
52     boost::winapi::DWORD_ flOptions,
53     boost::winapi::SIZE_T_ dwInitialSize,
54     boost::winapi::SIZE_T_ dwMaximumSize);
55 
56 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
57 HeapDestroy(boost::winapi::HANDLE_ hHeap);
58 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
59 
60 } // extern "C"
61 #endif // !defined( BOOST_USE_WINDOWS_H )
62 
63 namespace boost {
64 namespace winapi {
65 
66 #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
67 using ::GetProcessHeaps;
68 #endif
69 
70 using ::GetProcessHeap;
71 using ::HeapAlloc;
72 using ::HeapFree;
73 using ::HeapReAlloc;
74 
75 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
76 using ::HeapCreate;
77 using ::HeapDestroy;
78 #endif
79 
80 }
81 }
82 
83 #endif // BOOST_WINAPI_HEAP_MEMORY_HPP_INCLUDED_
84