mirror of
https://github.com/microsoft/GSL.git
synced 2024-11-03 17:56:43 -05:00
parent
51ae678d08
commit
75ad0c1b40
@ -376,6 +376,21 @@ std::basic_string<CharT, Traits, Allocator> to_basic_string(basic_string_span<gC
|
|||||||
return {view.data(), static_cast<std::size_t>(view.length())};
|
return {view.data(), static_cast<std::size_t>(view.length())};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template <class ElementType, std::ptrdiff_t Extent>
|
||||||
|
basic_string_span<const byte, details::calculate_byte_size<ElementType, Extent>::value>
|
||||||
|
as_bytes(basic_string_span<ElementType, Extent> s) noexcept
|
||||||
|
{
|
||||||
|
return { reinterpret_cast<const byte*>(s.data()), s.size_bytes() };
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class ElementType, std::ptrdiff_t Extent,
|
||||||
|
class = std::enable_if_t<!std::is_const<ElementType>::value>>
|
||||||
|
basic_string_span<byte, details::calculate_byte_size<ElementType, Extent>::value>
|
||||||
|
as_writeable_bytes(basic_string_span<ElementType, Extent> s) noexcept
|
||||||
|
{
|
||||||
|
return {reinterpret_cast<byte*>(s.data()), s.size_bytes()};
|
||||||
|
}
|
||||||
|
|
||||||
// zero-terminated string span, used to convert
|
// zero-terminated string span, used to convert
|
||||||
// zero-terminated spans to legacy strings
|
// zero-terminated spans to legacy strings
|
||||||
template <typename CharT, std::ptrdiff_t Extent = dynamic_extent>
|
template <typename CharT, std::ptrdiff_t Extent = dynamic_extent>
|
||||||
|
@ -1167,3 +1167,22 @@ TEST_CASE("char32_t type")
|
|||||||
CHECK(ss8 <= ss9);
|
CHECK(ss8 <= ss9);
|
||||||
CHECK(ss8 != ss9);
|
CHECK(ss8 != ss9);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("as_bytes")
|
||||||
|
{
|
||||||
|
cwzstring_span<> v(L"qwerty");
|
||||||
|
const auto s = v.as_string_span();
|
||||||
|
const auto bs = as_bytes(s);
|
||||||
|
CHECK(static_cast<const void*>(bs.data()) == static_cast<const void*>(s.data()));
|
||||||
|
CHECK(bs.size() == s.size_bytes());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("as_writeable_bytes")
|
||||||
|
{
|
||||||
|
wchar_t buf[]{L"qwerty"};
|
||||||
|
wzstring_span<> v(buf);
|
||||||
|
const auto s = v.as_string_span();
|
||||||
|
const auto bs = as_writeable_bytes(s);
|
||||||
|
CHECK(static_cast<const void*>(bs.data()) == static_cast<const void*>(s.data()));
|
||||||
|
CHECK(bs.size() == s.size_bytes());
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user