Chris@16: // error_handling.hpp --------------------------------------------------------------// Chris@16: Chris@16: // Copyright 2010 Vicente J. Botet Escriba Chris@16: Chris@16: // Distributed under the Boost Software License, Version 1.0. Chris@16: // See http://www.boost.org/LICENSE_1_0.txt Chris@16: Chris@16: Chris@16: #ifndef BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP Chris@16: #define BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: #ifdef BOOST_HAS_PRAGMA_ONCE Chris@16: #pragma once Chris@16: #endif Chris@16: Chris@16: namespace boost { Chris@16: namespace detail { Chris@16: namespace winapi { Chris@16: Chris@16: #if defined( BOOST_USE_WINDOWS_H ) Chris@16: using ::FormatMessageA; Chris@16: using ::FormatMessageW; Chris@16: Chris@16: const int FORMAT_MESSAGE_ALLOCATE_BUFFER_= FORMAT_MESSAGE_ALLOCATE_BUFFER; Chris@16: const int FORMAT_MESSAGE_IGNORE_INSERTS_= FORMAT_MESSAGE_IGNORE_INSERTS; Chris@16: const int FORMAT_MESSAGE_FROM_STRING_= FORMAT_MESSAGE_FROM_STRING; Chris@16: const int FORMAT_MESSAGE_FROM_HMODULE_= FORMAT_MESSAGE_FROM_HMODULE; Chris@16: const int FORMAT_MESSAGE_FROM_SYSTEM_= FORMAT_MESSAGE_FROM_SYSTEM; Chris@16: const int FORMAT_MESSAGE_ARGUMENT_ARRAY_= FORMAT_MESSAGE_ARGUMENT_ARRAY; Chris@16: const int FORMAT_MESSAGE_MAX_WIDTH_MASK_= FORMAT_MESSAGE_MAX_WIDTH_MASK; Chris@16: Chris@16: const char LANG_NEUTRAL_= LANG_NEUTRAL; Chris@16: const char LANG_INVARIANT_= LANG_INVARIANT; Chris@16: Chris@16: const char SUBLANG_DEFAULT_= SUBLANG_DEFAULT; // user default Chris@16: inline WORD_ MAKELANGID_(WORD_ p, WORD_ s) { Chris@16: return MAKELANGID(p,s); Chris@16: } Chris@16: #else Chris@16: extern "C" { Chris@16: // using ::FormatMessageA; Chris@16: __declspec(dllimport) Chris@16: DWORD_ Chris@16: WINAPI Chris@16: FormatMessageA( Chris@16: DWORD_ dwFlags, Chris@16: LPCVOID_ lpSource, Chris@16: DWORD_ dwMessageId, Chris@16: DWORD_ dwLanguageId, Chris@16: LPSTR_ lpBuffer, Chris@16: DWORD_ nSize, Chris@16: va_list *Arguments Chris@16: ); Chris@16: Chris@16: // using ::FormatMessageW; Chris@16: __declspec(dllimport) Chris@16: DWORD_ Chris@16: WINAPI Chris@16: FormatMessageW( Chris@16: DWORD_ dwFlags, Chris@16: LPCVOID_ lpSource, Chris@16: DWORD_ dwMessageId, Chris@16: DWORD_ dwLanguageId, Chris@16: LPWSTR_ lpBuffer, Chris@16: DWORD_ nSize, Chris@16: va_list *Arguments Chris@16: ); Chris@16: Chris@16: const int FORMAT_MESSAGE_ALLOCATE_BUFFER_= 0x00000100; Chris@16: const int FORMAT_MESSAGE_IGNORE_INSERTS_= 0x00000200; Chris@16: const int FORMAT_MESSAGE_FROM_STRING_= 0x00000400; Chris@16: const int FORMAT_MESSAGE_FROM_HMODULE_= 0x00000800; Chris@16: const int FORMAT_MESSAGE_FROM_SYSTEM_= 0x00001000; Chris@16: const int FORMAT_MESSAGE_ARGUMENT_ARRAY_= 0x00002000; Chris@16: const int FORMAT_MESSAGE_MAX_WIDTH_MASK_= 0x000000FF; Chris@16: Chris@16: const char LANG_NEUTRAL_= 0x00; Chris@16: const char LANG_INVARIANT_= 0x7f; Chris@16: Chris@16: const char SUBLANG_DEFAULT_= 0x01; // user default Chris@16: inline WORD_ MAKELANGID_(WORD_ p, WORD_ s) { Chris@16: return ((((WORD_ )(s)) << 10) | (WORD_ )(p)); Chris@16: } Chris@16: Chris@16: } Chris@16: #endif Chris@16: } Chris@16: } Chris@16: } Chris@16: #endif // BOOST_DETAIL_WINAPI_ERROR_HANDLING_HPP