header_utils
Loading...
Searching...
No Matches
common.h
1
4
5#pragma once
6#include <cstdint>
7
9{
10#ifndef WINUSERAPI
12 extern "C"
13 {
14 typedef char CHAR;
15 typedef unsigned char BYTE;
16 typedef unsigned short WORD;
17 typedef unsigned long DWORD;
18 typedef unsigned int UINT;
19 typedef signed char INT8, * PINT8;
20 typedef signed short INT16, * PINT16;
21 typedef signed int INT32, * PINT32;
22 typedef signed __int64 INT64, * PINT64;
23 typedef unsigned char UINT8, * PUINT8;
24 typedef unsigned short UINT16, * PUINT16;
25 typedef unsigned int UINT32, * PUINT32;
26 typedef unsigned __int64 UINT64, * PUINT64;
27 typedef signed int LONG32, * PLONG32;
28 typedef unsigned int ULONG32, * PULONG32;
29 typedef unsigned int DWORD32, * PDWORD32;
30 typedef short SHORT;
31 typedef float FLOAT;
32 typedef int BOOL;
33 typedef BYTE BOOLEAN;
34 typedef long LONG;
35 typedef unsigned long ULONG;
36 typedef const wchar_t* PCWSTR, * LPCWSTR;
37 typedef const char* PCCH, * LPCCH;
38 typedef const char* LPCSTR;
41 typedef void VOID;
42 typedef void* LPVOID;
43 typedef wchar_t* LPWSTR;
44
45 typedef intptr_t LONG_PTR;
46 typedef intptr_t INT_PTR;
47 typedef uintptr_t ULONG_PTR;
48 typedef uintptr_t UINT_PTR;
49
50 typedef ULONG_PTR SIZE_T, *PSIZE_T;
51 typedef LONG_PTR SSIZE_T, *PSSIZE_T;
52 typedef ULONG_PTR DWORD_PTR, * PDWORD_PTR;
53 typedef __int64 LONG64, * PLONG64;
54 typedef unsigned __int64 ULONG64, * PULONG64;
55 typedef unsigned __int64 DWORD64, * PDWORD64;
56 typedef long HRESULT;
57 typedef LONG_PTR LPARAM;
58 typedef UINT_PTR WPARAM;
59 typedef void* HANDLE;
60 using FARPROC = INT_PTR(__stdcall*)();
61 using PROC = INT_PTR(__stdcall*)();
62
63 #define GHPL_WIN_DECLARE_HANDLE(name) typedef struct name##_gh* name
64 GHPL_WIN_DECLARE_HANDLE(HWND);
65 GHPL_WIN_DECLARE_HANDLE(HINSTANCE);
66 GHPL_WIN_DECLARE_HANDLE(HICON);
67
68 typedef HINSTANCE HMODULE;
69
70 typedef struct _COORD {
71 SHORT X;
72 SHORT Y;
73 } COORD, * PCOORD;
74 typedef struct _SMALL_RECT {
75 SHORT Left;
76 SHORT Top;
77 SHORT Right;
78 SHORT Bottom;
79 } SMALL_RECT;
80 typedef struct _POINTFLOAT {
81 FLOAT x;
82 FLOAT y;
83 } POINTFLOAT, * LPPOINTFLOAT;
84 typedef struct _RECT {
85 LONG left;
86 LONG top;
87 LONG right;
88 LONG bottom;
89 } RECT, * LPRECT;
90 typedef struct tagPOINT {
91 LONG x;
92 LONG y;
93 } POINT, * PPOINT;
94
95 typedef DWORD COLORREF;
96 typedef DWORD* LPCOLORREF;
97
98 }
99#else
101 extern "C"
102 {
103 using BYTE = ::BYTE;
104 using WORD = ::WORD;
105 using DWORD = ::DWORD;
106 using UINT = ::UINT;
107 using FLOAT = ::FLOAT;
108 using BOOL = ::BOOL;
109 using BOOLEAN = ::BOOLEAN;
110 using LONG = ::LONG;
111 using HWND = ::HWND;
112 using HINSTANCE = ::HINSTANCE;
113 using HMODULE = ::HMODULE;
114 using HICON = ::HICON;
115 using LPCWSTR = ::LPCWSTR;
116 using LPCSTR = ::LPCSTR;
117 using LPCCH = ::LPCCH;
118 using LPWSTR = ::LPWSTR;
119 using LONG_PTR = ::LONG_PTR;
120 using ULONG_PTR = ::ULONG_PTR;
121 using UINT_PTR = ::UINT_PTR;
122 using HRESULT = ::HRESULT;
123 using LPARAM = ::LPARAM;
124 using WPARAM = ::WPARAM;
125 using FARPROC = INT_PTR(__stdcall*)();
126 using HANDLE = ::HANDLE;
127 }
128#endif
129
130 #define GHPL_WINAPI __declspec(dllimport)
131 #define GHPL_WINGDIAPI __declspec(dllimport)
132 #define GHPL_APIENTRY __stdcall
133 #define GHPL_CALLBACK __stdcall
134
135 enum
136 {
137 MEM_COMMIT_ = 0x1000,
138 MEM_RESERVE_ = 0x2000,
139 MEM_RESET_ = 0x80000,
140 MEM_RESET_UNDO_ = 0x100000,
141 MEM_TOP_DOWN_ = 0x100000,
142 MEM_WRITE_WATCH_ = 0x200000,
143 MEM_PHYSICAL_ = 0x400000,
144 MEM_LARGE_PAGES_ = 0x20000000,
145
146 PAGE_NOACCESS_ = 0x1,
147 PAGE_READONLY_ = 0x2,
148 PAGE_READWRITE_ = 0x4,
149 PAGE_WRITECOPY_ = 0x8,
150 PAGE_EXECUTE_ = 0x10,
151 PAGE_EXECUTE_READ_ = 0x20,
152 PAGE_EXECUTE_READWRITE_ = 0x40,
153 PAGE_EXECUTE_WRITECOPY_ = 0x80,
154 PAGE_GAURD_ = 0x100,
155 PAGE_NOCACHE_ = 0x200,
156 PAGE_WRITECOMBINE_ = 0x400,
157 PAGE_TARGETS_INVALID_ = 0x40000000,
158 PAGE_TARGETS_NO_UPDATE_ = 0x40000000,
159
160 MEM_DECOMMIT_ = 0x4000,
161 MEM_RELEASE_ = 0x8000,
162
163 HEAP_NO_SERIALIZE_ = 0x1,
164 HEAP_GENERATE_EXCEPTIONS_ = 0x4,
165 HEAP_ZERO_MEMORY_ = 0x8,
166 HEAP_REALLOC_IN_PLACE_ONLY_ = 0x10,
167 };
168
169 enum
170 {
171 COINIT_MULTITHREADED_ = 0x0,
172 COINIT_APARTMENTTHREADED_ = 0x2,
173 COINIT_DISABLE_OLE1DDE_ = 0x4,
174 COINIT_SPEED_OVER_MEMORY_ = 0x8
175 };
176
177 static constexpr HRESULT S_OK_ = 0;
178 static constexpr HRESULT S_FALSE_ = 1;
179 static constexpr HRESULT E_NOTIMPL_ = (HRESULT)0x80004001L;
180 static constexpr HRESULT E_NOINTERFACE_ = (HRESULT)0x80004002L;
181 static constexpr HRESULT E_POINTER_ = (HRESULT)0x80004003L;
182 static constexpr HRESULT E_ABORT_ = (HRESULT)0x80004004L;
183 static constexpr HRESULT E_FAIL_ = (HRESULT)0x80004005L;
184 static constexpr HRESULT E_UNEXPECTED_ = (HRESULT)0x8000FFFFL;
185 static constexpr HRESULT E_ACCESSDENIED_ = (HRESULT)0x80070005L;
186 static constexpr HRESULT E_HANDLE_ = (HRESULT)0x80070006L;
187 static constexpr HRESULT E_OUTOFMEMORY_ = (HRESULT)0x8007000EL;
188 static constexpr HRESULT E_INVALIDARG_ = (HRESULT)0x80070057L;
189
190 static constexpr HRESULT RPC_E_CHANGED_MODE_ = (HRESULT)0x80010106L;
191
192 extern "C"
193 {
194 GHPL_WINAPI HWND GHPL_APIENTRY GetActiveWindow(void);
195 GHPL_WINAPI HMODULE GHPL_APIENTRY GetModuleHandleW(LPCWSTR lpModuleName);
196 GHPL_WINAPI HMODULE GHPL_APIENTRY LoadLibraryW(LPCWSTR lpFileName);
197 GHPL_WINAPI FARPROC GHPL_APIENTRY GetProcAddress(HMODULE hModule, LPCSTR lpProcName);
198 GHPL_WINAPI BOOL GHPL_APIENTRY FreeLibrary(HMODULE hModule);
199 GHPL_WINAPI DWORD GHPL_APIENTRY GetLastError(void);
200 GHPL_WINAPI void GHPL_APIENTRY DebugBreak(void);
201
202 GHPL_WINAPI LPVOID GHPL_APIENTRY VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
203 GHPL_WINAPI BOOL GHPL_APIENTRY VirtualFree(LPVOID lpAddress, SIZE_T dwSize, DWORD dwFreeType);
204 GHPL_WINAPI HANDLE GHPL_APIENTRY GetProcessHeap(void);
205 GHPL_WINAPI LPVOID GHPL_APIENTRY HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes);
206 GHPL_WINAPI BOOL GHPL_APIENTRY HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);
207 GHPL_WINAPI LPVOID GHPL_APIENTRY HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, SIZE_T dwBytes);
208 GHPL_WINAPI VOID GHPL_APIENTRY ExitProcess(UINT uExitCode);
209
210 GHPL_WINAPI HRESULT GHPL_APIENTRY CoInitializeEx(LPVOID pvReserved = nullptr, DWORD dwCoInit = COINIT_MULTITHREADED_);
211 GHPL_WINAPI void GHPL_APIENTRY CoUninitialize();
212 }
213}
constexpr auto bit_count
Equal to the number of bits in the type.
Definition bits.h:33
char CHAR
Base Windows Stuff.
Definition common.h:14
void VOID
typedef char TCHAR, * PTCHAR; typedef const TCHAR* LPCTSTR;
Definition common.h:41
GHPL_WINAPI HWND GHPL_APIENTRY GetActiveWindow(void)
Possible return value from CoInitializeEx.