Skip to content

Commit

Permalink
Adding support for std::string_view to sf::String
Browse files Browse the repository at this point in the history
  • Loading branch information
khatharr committed Mar 14, 2023
1 parent b6c54ac commit d80a03c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 3 deletions.
4 changes: 4 additions & 0 deletions include/SFML/System/String.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@

#include <locale>
#include <string>
#include <string_view>


namespace sf
Expand Down Expand Up @@ -117,6 +118,7 @@ class SFML_SYSTEM_API String
/// \param locale Locale to use for conversion
///
////////////////////////////////////////////////////////////
String(std::string_view ansiString, const std::locale& locale = std::locale());
String(const std::string& ansiString, const std::locale& locale = std::locale());

////////////////////////////////////////////////////////////
Expand All @@ -133,6 +135,7 @@ class SFML_SYSTEM_API String
/// \param wideString Wide string to convert
///
////////////////////////////////////////////////////////////
String(std::wstring_view wideString);
String(const std::wstring& wideString);

////////////////////////////////////////////////////////////
Expand All @@ -149,6 +152,7 @@ class SFML_SYSTEM_API String
/// \param utf32String UTF-32 string to assign
///
////////////////////////////////////////////////////////////
String(std::basic_string_view<std::uint32_t> utf32String);
String(const std::basic_string<std::uint32_t>& utf32String);

////////////////////////////////////////////////////////////
Expand Down
25 changes: 22 additions & 3 deletions src/SFML/System/String.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,19 @@ String::String(const char* ansiString, const std::locale& locale)


////////////////////////////////////////////////////////////
String::String(const std::string& ansiString, const std::locale& locale)
String::String(std::string_view ansiString, const std::locale& locale)
{
m_string.reserve(ansiString.length() + 1);
Utf32::fromAnsi(ansiString.begin(), ansiString.end(), std::back_inserter(m_string), locale);
}


////////////////////////////////////////////////////////////
String::String(const std::string& ansiString, const std::locale& locale) :
String(std::string_view(ansiString), locale)
{
}

////////////////////////////////////////////////////////////
String::String(const wchar_t* wideString)
{
Expand All @@ -98,13 +104,20 @@ String::String(const wchar_t* wideString)


////////////////////////////////////////////////////////////
String::String(const std::wstring& wideString)
String::String(std::wstring_view wideString)
{
m_string.reserve(wideString.length() + 1);
Utf32::fromWide(wideString.begin(), wideString.end(), std::back_inserter(m_string));
}


////////////////////////////////////////////////////////////
String::String(const std::wstring& wideString) :
String(std::wstring_view(wideString))
{
}


////////////////////////////////////////////////////////////
String::String(const std::uint32_t* utf32String)
{
Expand All @@ -114,11 +127,17 @@ String::String(const std::uint32_t* utf32String)


////////////////////////////////////////////////////////////
String::String(const std::basic_string<std::uint32_t>& utf32String) : m_string(utf32String)
String::String(std::basic_string_view<std::uint32_t> utf32String) : m_string(utf32String)
{
}


////////////////////////////////////////////////////////////
String::String(const std::basic_string<std::uint32_t>& utf32String) :
String(std::basic_string_view<std::uint32_t>(utf32String))
{
}

////////////////////////////////////////////////////////////
String::String(const String& copy) = default;

Expand Down

0 comments on commit d80a03c

Please sign in to comment.