aboutsummaryrefslogtreecommitdiff
path: root/toolsrc
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-03-28 12:27:11 -0700
committerAlexander Karatarakis <alkarata@microsoft.com>2017-03-28 18:48:03 -0700
commit8a21d95f5ba329c59228924f0271922b26a47d57 (patch)
tree19e6010dfaceb7cb2558b3e14534ee4548346998 /toolsrc
parenta9a8772ad470280bf63d81896c3019eac74bd21a (diff)
downloadvcpkg-8a21d95f5ba329c59228924f0271922b26a47d57.tar.gz
vcpkg-8a21d95f5ba329c59228924f0271922b26a47d57.zip
Introduce cstring_view and cwstring_view
Diffstat (limited to 'toolsrc')
-rw-r--r--toolsrc/include/vcpkg_Strings.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/toolsrc/include/vcpkg_Strings.h b/toolsrc/include/vcpkg_Strings.h
index abf3651e5..879542a94 100644
--- a/toolsrc/include/vcpkg_Strings.h
+++ b/toolsrc/include/vcpkg_Strings.h
@@ -2,6 +2,40 @@
#include <vector>
+namespace vcpkg
+{
+ struct cstring_view
+ {
+ cstring_view(const char* cstr) : cstr(cstr) {}
+ cstring_view(const std::string& str) : cstr(str.c_str()) {}
+
+ operator const char*() const { return cstr; }
+
+ const char* c_str() const { return cstr; }
+
+ private:
+ const char* cstr;
+ };
+
+ inline const char* to_printf_arg(const cstring_view spec) { return spec.c_str(); }
+
+
+ struct cwstring_view
+ {
+ cwstring_view(const wchar_t* cstr) : cstr(cstr) {}
+ cwstring_view(const std::wstring& str) : cstr(str.c_str()) {}
+
+ operator const wchar_t*() const { return cstr; }
+
+ const wchar_t* c_str() const { return cstr; }
+
+ private:
+ const wchar_t* cstr;
+ };
+
+ inline const wchar_t* to_wprintf_arg(const cwstring_view spec) { return spec.c_str(); }
+}
+
namespace vcpkg::Strings::details
{
inline const char* to_printf_arg(const std::string& s)