#ifndef CORE_FXCRT_WIDESTRING_H_
#define CORE_FXCRT_WIDESTRING_H_
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <iosfwd>
#include <utility>
#include "core/fxcrt/compiler_specific.h"
#include "core/fxcrt/span.h"
#include "core/fxcrt/string_template.h"
namespace fxcrt {
class ByteString;
class WideString : public StringTemplate<wchar_t> { … };
inline WideString operator+(WideStringView str1, WideStringView str2) { … }
inline WideString operator+(WideStringView str1, const wchar_t* str2) { … }
inline WideString operator+(const wchar_t* str1, WideStringView str2) { … }
inline WideString operator+(WideStringView str1, wchar_t ch) { … }
inline WideString operator+(wchar_t ch, WideStringView str2) { … }
inline WideString operator+(const WideString& str1, const WideString& str2) { … }
inline WideString operator+(const WideString& str1, wchar_t ch) { … }
inline WideString operator+(wchar_t ch, const WideString& str2) { … }
inline WideString operator+(const WideString& str1, const wchar_t* str2) { … }
inline WideString operator+(const wchar_t* str1, const WideString& str2) { … }
inline WideString operator+(const WideString& str1, WideStringView str2) { … }
inline WideString operator+(WideStringView str1, const WideString& str2) { … }
inline bool operator==(const wchar_t* lhs, const WideString& rhs) { … }
inline bool operator==(WideStringView lhs, const WideString& rhs) { … }
inline bool operator!=(const wchar_t* lhs, const WideString& rhs) { … }
inline bool operator!=(WideStringView lhs, const WideString& rhs) { … }
inline bool operator<(const wchar_t* lhs, const WideString& rhs) { … }
std::wostream& operator<<(std::wostream& os, const WideString& str);
std::ostream& operator<<(std::ostream& os, const WideString& str);
std::wostream& operator<<(std::wostream& os, WideStringView str);
std::ostream& operator<<(std::ostream& os, WideStringView str);
void PrintTo(const WideString& str, std::ostream* os);
}
WideString;
uint32_t FX_HashCode_GetW(WideStringView str);
uint32_t FX_HashCode_GetLoweredW(WideStringView str);
namespace std {
template <>
struct hash<WideString> { … };
}
extern template struct std::hash<WideString>;
#endif