character_code_conversion.hpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. * Copyright 2016 Andrey Semashev
  3. *
  4. * Distributed under the Boost Software License, Version 1.0.
  5. * See http://www.boost.org/LICENSE_1_0.txt
  6. */
  7. #ifndef BOOST_WINAPI_CHARACTER_CODE_CONVERSION_HPP_INCLUDED_
  8. #define BOOST_WINAPI_CHARACTER_CODE_CONVERSION_HPP_INCLUDED_
  9. #include <boost/winapi/basic_types.hpp>
  10. #ifdef BOOST_HAS_PRAGMA_ONCE
  11. #pragma once
  12. #endif
  13. #if !defined( BOOST_USE_WINDOWS_H )
  14. extern "C" {
  15. BOOST_SYMBOL_IMPORT int BOOST_WINAPI_WINAPI_CC
  16. MultiByteToWideChar(
  17. boost::winapi::UINT_ CodePage,
  18. boost::winapi::DWORD_ dwFlags,
  19. boost::winapi::LPCSTR_ lpMultiByteStr,
  20. int cbMultiByte,
  21. boost::winapi::LPWSTR_ lpWideCharStr,
  22. int cchWideChar);
  23. BOOST_SYMBOL_IMPORT int BOOST_WINAPI_WINAPI_CC
  24. WideCharToMultiByte(
  25. boost::winapi::UINT_ CodePage,
  26. boost::winapi::DWORD_ dwFlags,
  27. boost::winapi::LPCWSTR_ lpWideCharStr,
  28. int cchWideChar,
  29. boost::winapi::LPSTR_ lpMultiByteStr,
  30. int cbMultiByte,
  31. boost::winapi::LPCSTR_ lpDefaultChar,
  32. boost::winapi::LPBOOL_ lpUsedDefaultChar);
  33. } // extern "C"
  34. #endif // #if !defined( BOOST_USE_WINDOWS_H )
  35. namespace boost {
  36. namespace winapi {
  37. #if defined( BOOST_USE_WINDOWS_H )
  38. BOOST_CONSTEXPR_OR_CONST UINT_ CP_ACP_ = CP_ACP;
  39. BOOST_CONSTEXPR_OR_CONST UINT_ CP_OEMCP_ = CP_OEMCP;
  40. BOOST_CONSTEXPR_OR_CONST UINT_ CP_MACCP_ = CP_MACCP;
  41. BOOST_CONSTEXPR_OR_CONST UINT_ CP_THREAD_ACP_ = CP_THREAD_ACP;
  42. BOOST_CONSTEXPR_OR_CONST UINT_ CP_SYMBOL_ = CP_SYMBOL;
  43. BOOST_CONSTEXPR_OR_CONST UINT_ CP_UTF7_ = CP_UTF7;
  44. BOOST_CONSTEXPR_OR_CONST UINT_ CP_UTF8_ = CP_UTF8;
  45. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_PRECOMPOSED_ = MB_PRECOMPOSED;
  46. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_COMPOSITE_ = MB_COMPOSITE;
  47. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_USEGLYPHCHARS_ = MB_USEGLYPHCHARS;
  48. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_ERR_INVALID_CHARS_ = MB_ERR_INVALID_CHARS;
  49. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_COMPOSITECHECK_ = WC_COMPOSITECHECK;
  50. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_DISCARDNS_ = WC_DISCARDNS;
  51. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_SEPCHARS_ = WC_SEPCHARS;
  52. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_DEFAULTCHAR_ = WC_DEFAULTCHAR;
  53. #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
  54. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_NO_BEST_FIT_CHARS_ = WC_NO_BEST_FIT_CHARS;
  55. #endif
  56. #else // defined( BOOST_USE_WINDOWS_H )
  57. BOOST_CONSTEXPR_OR_CONST UINT_ CP_ACP_ = 0u;
  58. BOOST_CONSTEXPR_OR_CONST UINT_ CP_OEMCP_ = 1u;
  59. BOOST_CONSTEXPR_OR_CONST UINT_ CP_MACCP_ = 2u;
  60. BOOST_CONSTEXPR_OR_CONST UINT_ CP_THREAD_ACP_ = 3u;
  61. BOOST_CONSTEXPR_OR_CONST UINT_ CP_SYMBOL_ = 42u;
  62. BOOST_CONSTEXPR_OR_CONST UINT_ CP_UTF7_ = 65000u;
  63. BOOST_CONSTEXPR_OR_CONST UINT_ CP_UTF8_ = 65001u;
  64. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_PRECOMPOSED_ = 0x00000001;
  65. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_COMPOSITE_ = 0x00000002;
  66. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_USEGLYPHCHARS_ = 0x00000004;
  67. BOOST_CONSTEXPR_OR_CONST DWORD_ MB_ERR_INVALID_CHARS_ = 0x00000008;
  68. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_COMPOSITECHECK_ = 0x00000200;
  69. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_DISCARDNS_ = 0x00000010;
  70. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_SEPCHARS_ = 0x00000020;
  71. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_DEFAULTCHAR_ = 0x00000040;
  72. #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
  73. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_NO_BEST_FIT_CHARS_ = 0x00000400;
  74. #endif
  75. #endif // defined( BOOST_USE_WINDOWS_H )
  76. #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
  77. // This constant is not present in MinGW
  78. BOOST_CONSTEXPR_OR_CONST DWORD_ WC_ERR_INVALID_CHARS_ = 0x00000080;
  79. #endif
  80. using ::MultiByteToWideChar;
  81. using ::WideCharToMultiByte;
  82. } // namespace winapi
  83. } // namespace boost
  84. #endif // BOOST_WINAPI_CHARACTER_CODE_CONVERSION_HPP_INCLUDED_