Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct TranslateStringOptions {
- bool _allowCP1252 = false;
- bool _allowSurrogate = false;
- bool _byteSwap = false;
- bool _addBOM = false;
- TranslateStringOptions &allowCP1252(bool allowCP1252_value = true) {
- _allowCP1252 = allowCP1252_value;
- return *this;
- }
- TranslateStringOptions &allowSurrogate(bool allowSurrogate_value = true) {
- _allowSurrogate = allowSurrogate_value;
- return *this;
- }
- TranslateStringOptions &byteSwap(bool byteSwap_value = true) {
- _byteSwap = byteSwap_value;
- return *this;
- }
- TranslateStringOptions &addBOM(bool addBOM_value = true) {
- _addBOM = addBOM_value;
- return *this;
- }
- };
- template<typename T, typename U, std::enable_if_t<sizeof(T::value_type) == sizeof(U::value_Type), int> = 0>
- T translateString(const T &inputString, TranslateStringOptions)
- {
- T outputString;
- for (auto inputCharacter: inputString) {
- outputString.push_back(inputCharacter);
- }
- return outputString;
- }
- template<typename T, typename U, std::enable_if_t<sizeof(T::value_type) != sizeof(U::value_Type), int> = 0>
- T translateString(const U &inputString, TranslateStringOptions options = {})
- {
- const auto intermediateString = translateString<std::u32string>(inputString, options);
- return translateString<T>(intermediateString, options);
- }
- template<>
- std::u32string translateString(const std::string &inputString, TranslateStringOptions options)
- {
- return {};
- }
- template<>
- std::u32string translateString(const std::u16string &inputString, TranslateStringOptions options)
- {
- return {};
- }
- template<>
- std::u16string translateString(const std::u32string &inputString, TranslateStringOptions options)
- {
- return {};
- }
- template<>
- std::string translateString(const std::u32string &inputString, TranslateStringOptions options)
- {
- return {};
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement