Advertisement
Guest User

Untitled

a guest
Mar 21st, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.89 KB | None | 0 0
  1. struct TranslateStringOptions {
  2.     bool _allowCP1252 = false;
  3.     bool _allowSurrogate = false;
  4.     bool _byteSwap = false;
  5.     bool _addBOM = false;
  6.  
  7.     TranslateStringOptions &allowCP1252(bool allowCP1252_value = true) {
  8.         _allowCP1252 = allowCP1252_value;
  9.         return *this;
  10.     }
  11.     TranslateStringOptions &allowSurrogate(bool allowSurrogate_value = true) {
  12.         _allowSurrogate = allowSurrogate_value;
  13.         return *this;
  14.     }
  15.     TranslateStringOptions &byteSwap(bool byteSwap_value = true) {
  16.         _byteSwap = byteSwap_value;
  17.         return *this;
  18.     }
  19.     TranslateStringOptions &addBOM(bool addBOM_value = true) {
  20.         _addBOM = addBOM_value;
  21.         return *this;
  22.     }
  23. };
  24.  
  25. template<typename T, typename U, std::enable_if_t<sizeof(T::value_type) == sizeof(U::value_Type), int> = 0>
  26. T translateString(const T &inputString, TranslateStringOptions)
  27. {
  28.     T outputString;
  29.  
  30.     for (auto inputCharacter: inputString) {
  31.         outputString.push_back(inputCharacter);
  32.     }
  33.     return outputString;
  34. }
  35.  
  36. template<typename T, typename U, std::enable_if_t<sizeof(T::value_type) != sizeof(U::value_Type), int> = 0>
  37. T translateString(const U &inputString, TranslateStringOptions options = {})
  38. {
  39.     const auto intermediateString = translateString<std::u32string>(inputString, options);
  40.     return translateString<T>(intermediateString, options);
  41. }
  42.  
  43. template<>
  44. std::u32string translateString(const std::string &inputString, TranslateStringOptions options)
  45. {
  46.     return {};
  47. }
  48.  
  49. template<>
  50. std::u32string translateString(const std::u16string &inputString, TranslateStringOptions options)
  51. {
  52.     return {};
  53. }
  54.  
  55. template<>
  56. std::u16string translateString(const std::u32string &inputString, TranslateStringOptions options)
  57. {
  58.     return {};
  59. }
  60.  
  61. template<>
  62. std::string translateString(const std::u32string &inputString, TranslateStringOptions options)
  63. {
  64.     return {};
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement