Chris@16
|
1 // error_handling.hpp --------------------------------------------------------------//
|
Chris@16
|
2
|
Chris@16
|
3 // Copyright 2010 Vicente J. Botet Escriba
|
Chris@16
|
4
|
Chris@16
|
5 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
6 // See http://www.boost.org/LICENSE_1_0.txt
|
Chris@16
|
7
|
Chris@16
|
8
|
Chris@16
|
9 #ifndef BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP
|
Chris@16
|
10 #define BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP
|
Chris@16
|
11
|
Chris@16
|
12 #include <boost/detail/winapi/basic_types.hpp>
|
Chris@16
|
13 #include <boost/detail/winapi/GetCurrentThread.hpp>
|
Chris@16
|
14
|
Chris@16
|
15 #ifdef BOOST_HAS_PRAGMA_ONCE
|
Chris@16
|
16 #pragma once
|
Chris@16
|
17 #endif
|
Chris@16
|
18
|
Chris@16
|
19 namespace boost {
|
Chris@16
|
20 namespace detail {
|
Chris@16
|
21 namespace winapi {
|
Chris@16
|
22
|
Chris@16
|
23 #if defined( BOOST_USE_WINDOWS_H )
|
Chris@16
|
24 using ::FormatMessageA;
|
Chris@16
|
25 using ::FormatMessageW;
|
Chris@16
|
26
|
Chris@16
|
27 const int FORMAT_MESSAGE_ALLOCATE_BUFFER_= FORMAT_MESSAGE_ALLOCATE_BUFFER;
|
Chris@16
|
28 const int FORMAT_MESSAGE_IGNORE_INSERTS_= FORMAT_MESSAGE_IGNORE_INSERTS;
|
Chris@16
|
29 const int FORMAT_MESSAGE_FROM_STRING_= FORMAT_MESSAGE_FROM_STRING;
|
Chris@16
|
30 const int FORMAT_MESSAGE_FROM_HMODULE_= FORMAT_MESSAGE_FROM_HMODULE;
|
Chris@16
|
31 const int FORMAT_MESSAGE_FROM_SYSTEM_= FORMAT_MESSAGE_FROM_SYSTEM;
|
Chris@16
|
32 const int FORMAT_MESSAGE_ARGUMENT_ARRAY_= FORMAT_MESSAGE_ARGUMENT_ARRAY;
|
Chris@16
|
33 const int FORMAT_MESSAGE_MAX_WIDTH_MASK_= FORMAT_MESSAGE_MAX_WIDTH_MASK;
|
Chris@16
|
34
|
Chris@16
|
35 const char LANG_NEUTRAL_= LANG_NEUTRAL;
|
Chris@16
|
36 const char LANG_INVARIANT_= LANG_INVARIANT;
|
Chris@16
|
37
|
Chris@16
|
38 const char SUBLANG_DEFAULT_= SUBLANG_DEFAULT; // user default
|
Chris@16
|
39 inline WORD_ MAKELANGID_(WORD_ p, WORD_ s) {
|
Chris@16
|
40 return MAKELANGID(p,s);
|
Chris@16
|
41 }
|
Chris@16
|
42 #else
|
Chris@16
|
43 extern "C" {
|
Chris@16
|
44 // using ::FormatMessageA;
|
Chris@16
|
45 __declspec(dllimport)
|
Chris@16
|
46 DWORD_
|
Chris@16
|
47 WINAPI
|
Chris@16
|
48 FormatMessageA(
|
Chris@16
|
49 DWORD_ dwFlags,
|
Chris@16
|
50 LPCVOID_ lpSource,
|
Chris@16
|
51 DWORD_ dwMessageId,
|
Chris@16
|
52 DWORD_ dwLanguageId,
|
Chris@16
|
53 LPSTR_ lpBuffer,
|
Chris@16
|
54 DWORD_ nSize,
|
Chris@16
|
55 va_list *Arguments
|
Chris@16
|
56 );
|
Chris@16
|
57
|
Chris@16
|
58 // using ::FormatMessageW;
|
Chris@16
|
59 __declspec(dllimport)
|
Chris@16
|
60 DWORD_
|
Chris@16
|
61 WINAPI
|
Chris@16
|
62 FormatMessageW(
|
Chris@16
|
63 DWORD_ dwFlags,
|
Chris@16
|
64 LPCVOID_ lpSource,
|
Chris@16
|
65 DWORD_ dwMessageId,
|
Chris@16
|
66 DWORD_ dwLanguageId,
|
Chris@16
|
67 LPWSTR_ lpBuffer,
|
Chris@16
|
68 DWORD_ nSize,
|
Chris@16
|
69 va_list *Arguments
|
Chris@16
|
70 );
|
Chris@16
|
71
|
Chris@16
|
72 const int FORMAT_MESSAGE_ALLOCATE_BUFFER_= 0x00000100;
|
Chris@16
|
73 const int FORMAT_MESSAGE_IGNORE_INSERTS_= 0x00000200;
|
Chris@16
|
74 const int FORMAT_MESSAGE_FROM_STRING_= 0x00000400;
|
Chris@16
|
75 const int FORMAT_MESSAGE_FROM_HMODULE_= 0x00000800;
|
Chris@16
|
76 const int FORMAT_MESSAGE_FROM_SYSTEM_= 0x00001000;
|
Chris@16
|
77 const int FORMAT_MESSAGE_ARGUMENT_ARRAY_= 0x00002000;
|
Chris@16
|
78 const int FORMAT_MESSAGE_MAX_WIDTH_MASK_= 0x000000FF;
|
Chris@16
|
79
|
Chris@16
|
80 const char LANG_NEUTRAL_= 0x00;
|
Chris@16
|
81 const char LANG_INVARIANT_= 0x7f;
|
Chris@16
|
82
|
Chris@16
|
83 const char SUBLANG_DEFAULT_= 0x01; // user default
|
Chris@16
|
84 inline WORD_ MAKELANGID_(WORD_ p, WORD_ s) {
|
Chris@16
|
85 return ((((WORD_ )(s)) << 10) | (WORD_ )(p));
|
Chris@16
|
86 }
|
Chris@16
|
87
|
Chris@16
|
88 }
|
Chris@16
|
89 #endif
|
Chris@16
|
90 }
|
Chris@16
|
91 }
|
Chris@16
|
92 }
|
Chris@16
|
93 #endif // BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP
|