diff options
| author | Robert Schumacher <roschuma@microsoft.com> | 2017-04-01 01:39:00 -0700 |
|---|---|---|
| committer | Robert Schumacher <roschuma@microsoft.com> | 2017-04-01 01:39:00 -0700 |
| commit | 162e9ce98f4dad24e271de3b3f14c189f73bf67d (patch) | |
| tree | e2cf95f27418d53f12ffeab67000daf833d4681b | |
| parent | aae15bd468c9b94118dc7d93c4c4a9856912bcc3 (diff) | |
| download | vcpkg-162e9ce98f4dad24e271de3b3f14c189f73bf67d.tar.gz vcpkg-162e9ce98f4dad24e271de3b3f14c189f73bf67d.zip | |
[vcpkg] Collapse cXstring_views into a single template.
| -rw-r--r-- | toolsrc/include/cstring_view.h | 29 |
1 files changed, 10 insertions, 19 deletions
diff --git a/toolsrc/include/cstring_view.h b/toolsrc/include/cstring_view.h index b67b7df0d..88728992b 100644 --- a/toolsrc/include/cstring_view.h +++ b/toolsrc/include/cstring_view.h @@ -3,33 +3,24 @@ namespace vcpkg { - struct cstring_view + template<class CharType> + struct basic_cstring_view { - constexpr cstring_view(const char* cstr) : cstr(cstr) {} - cstring_view(const std::string& str) : cstr(str.c_str()) {} + constexpr basic_cstring_view(const CharType* cstr) : cstr(cstr) {} + basic_cstring_view(const std::basic_string<CharType>& str) : cstr(str.c_str()) {} - constexpr operator const char*() const { return cstr; } + constexpr operator const CharType*() const { return cstr; } - constexpr const char* c_str() const { return cstr; } + constexpr const CharType* c_str() const { return cstr; } private: - const char* cstr; + const CharType* cstr; }; - inline const char* to_printf_arg(const cstring_view spec) { return spec.c_str(); } - - struct cwstring_view - { - constexpr cwstring_view(const wchar_t* cstr) : cstr(cstr) {} - cwstring_view(const std::wstring& str) : cstr(str.c_str()) {} - - constexpr operator const wchar_t*() const { return cstr; } + using cstring_view = basic_cstring_view<char>; + using cwstring_view = basic_cstring_view<wchar_t>; - constexpr const wchar_t* c_str() const { return cstr; } - - private: - const wchar_t* cstr; - }; + inline const char* to_printf_arg(const cstring_view spec) { return spec.c_str(); } inline const wchar_t* to_wprintf_arg(const cwstring_view spec) { return spec.c_str(); } |
