#pragma once #include "il2cpp-config.h" #include #include "StringView.h" #define STRING_TO_STRINGVIEW(sv) il2cpp::utils::StringViewUtils::StringToStringView(sv) namespace il2cpp { namespace utils { class StringViewUtils { public: template static StringView StringToStringView(const std::basic_string& str) { return StringView(str.c_str(), str.length()); } // This will prevent accidentally assigning temporary values (like function return values) // to a string view. While this protection will only be enabled on C++11 compiles, even those // are enough to catch the bug in our runtime #if IL2CPP_HAS_DELETED_FUNCTIONS template static StringView StringToStringView(const std::basic_string&& str) { IL2CPP_ASSERT(0 && "Cannot create stringview into R-value reference"); return StringView::Empty(); } #endif }; } }