26 #if defined(_WIN32) && defined(HR_ENGINE_SHARED) 28 # define MR_DllDeclare __declspec( dllexport ) 30 # define MR_DllDeclare __declspec( dllimport ) 33 # define MR_DllDeclare 54 UW(
const char *s =
nullptr) noexcept : cs(Utf8ToWide(s)) { }
55 explicit UW(
const std::string &s) noexcept : cs(
Utf8ToWide(s.c_str())) { }
56 ~UW() noexcept { free(cs); }
57 operator const wchar_t*()
const noexcept {
return cs; }
58 operator const std::wstring()
const {
return cs; }
66 WU(
const wchar_t *ws =
nullptr) noexcept : cs(WideToUtf8(ws)) { }
67 explicit WU(
const std::wstring &s) noexcept : cs(
WideToUtf8(s.c_str())) { }
68 ~WU() noexcept { free(cs); }
69 operator const char*()
const noexcept {
return cs; }
70 operator const std::string()
const {
return cs; }
74 #ifdef WITH_WIDE_PATHS 85 # ifdef WITH_WIDE_PATHS 88 explicit PU(
const OS::path_t &path) noexcept : cs(path.wstring()) { }
89 operator const char*()
const noexcept {
return (
const char*)cs; }
90 operator const std::string()
const {
return std::string((
const char*)cs); }
94 explicit PU(
const OS::path_t &path) noexcept : cs(path.string()) { }
95 operator const char*()
const noexcept {
return cs.c_str(); }
96 operator const std::string()
const {
return cs; }
101 #ifdef WITH_WIDE_PATHS 112 # ifdef WITH_WIDE_PATHS 115 explicit PW(
const OS::path_t &path) noexcept : cs(path.wstring()) { }
116 operator const wchar_t*()
const noexcept {
return cs.c_str(); }
117 operator const std::wstring()
const {
return cs; }
122 operator const wchar_t*()
const noexcept {
return (
const wchar_t*)cs; }
123 operator const std::wstring()
const {
return cs; }
141 explicit Lua(
const std::string &s) : s(s) { }
144 std::ostream &StreamOut(std::ostream &os)
const;
MR_DllDeclare wchar_t * Utf8ToWide(const char *s)
Convert a UTF-8 string to a wide string.
Definition: Str.cpp:83
boost::filesystem::path path_t
Definition: OS.h:57
Utility class for easy conversion of wide strings to UTF-8.
Definition: Str.h:62
UW(const std::string &s) noexcept
Definition: Str.h:55
Lua(const std::string &s)
Definition: Str.h:141
WU(const std::wstring &s) noexcept
Definition: Str.h:67
OS::path_t UP(const char *s=nullptr) noexcept
Definition: Str.h:78
~UW() noexcept
Definition: Str.h:56
MR_DllDeclare size_t Assign(std::string &dest, const std::string &src, size_t len)
Assign a UTF-8 string to another, with a maximum length.
Definition: Str.cpp:165
Mark a string to be streamed out escaped for Lua.
Definition: Str.h:138
OS::path_t WP(const wchar_t *s=NULL) noexcept
Definition: Str.h:105
Utility class for easy conversion of UTF-8 to wide strings.
Definition: Str.h:50
wchar_t * cs
Definition: Str.h:52
std::ostream & StreamOut(std::ostream &os) const
Definition: Str.cpp:181
MR_DllDeclare char * WideToUtf8(const wchar_t *ws)
Convert a wide string to a UTF-8 string.
Definition: Str.cpp:114
#define MR_DllDeclare
Definition: Str.h:33
PU(const OS::path_t &path) noexcept
Definition: Str.h:94
WU(const wchar_t *ws=nullptr) noexcept
Definition: Str.h:66
~WU() noexcept
Definition: Str.h:68
MR_DllDeclare void Append(std::string &dest, const std::string &src, size_t len)
Append a string onto another string with a specific maximum length.
Definition: Str.cpp:146
std::string s
Definition: Str.h:147
UW(const char *s=nullptr) noexcept
Definition: Str.h:54
PW(const OS::path_t &path) noexcept
Definition: Str.h:121
Definition: Announcement.h:24
std::string cs
Definition: Str.h:92
std::ostream & operator<<(std::ostream &os, const Lua &lua)
Definition: Str.h:150
UW cs
Definition: Str.h:119
char * cs
Definition: Str.h:64