mirror of
https://github.com/microsoft/GSL.git
synced 2025-04-02 09:18:33 -04:00
do not use gsl::byte if it is deprecated
This commit is contained in:
parent
93e508e206
commit
7b3165edbe
@ -74,6 +74,12 @@
|
|||||||
#define byte_may_alias
|
#define byte_may_alias
|
||||||
#endif // defined __clang__ || defined __GNUC__
|
#endif // defined __clang__ || defined __GNUC__
|
||||||
|
|
||||||
|
#if GSL_USE_STD_BYTE
|
||||||
|
#define BYTE_TYPE std::byte
|
||||||
|
#else // !GSL_USE_STD_BYTE
|
||||||
|
#define BYTE_TYPE byte
|
||||||
|
#endif // GSL_USE_STD_BYTE
|
||||||
|
|
||||||
#if GSL_USE_STD_BYTE
|
#if GSL_USE_STD_BYTE
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
#endif
|
#endif
|
||||||
@ -158,23 +164,24 @@ constexpr IntegerType to_integer(byte b) noexcept
|
|||||||
|
|
||||||
#endif // GSL_USE_STD_BYTE
|
#endif // GSL_USE_STD_BYTE
|
||||||
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
// NOTE: need suppression since c++14 does not allow "return {t}"
|
// NOTE: need suppression since c++14 does not allow "return {t}"
|
||||||
// GSL_SUPPRESS(type.4) // NO-FORMAT: attribute // TODO: suppression does not work
|
// GSL_SUPPRESS(type.4) // NO-FORMAT: attribute // TODO: suppression does not work
|
||||||
constexpr byte to_byte(T t) noexcept
|
constexpr BYTE_TYPE to_byte(T t) noexcept
|
||||||
{
|
{
|
||||||
static_assert(std::is_same<T, unsigned char>::value,
|
static_assert(std::is_same<T, unsigned char>::value,
|
||||||
"gsl::to_byte(t) must be provided an unsigned char, otherwise data loss may occur. "
|
"gsl::to_byte(t) must be provided an unsigned char, otherwise data loss may occur. "
|
||||||
"If you are calling to_byte with an integer constant use: gsl::to_byte<t>() version.");
|
"If you are calling to_byte with an integer constant use: gsl::to_byte<t>() version.");
|
||||||
return byte(t);
|
return BYTE_TYPE(t);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <int I>
|
template <int I>
|
||||||
constexpr byte to_byte() noexcept
|
constexpr BYTE_TYPE to_byte() noexcept
|
||||||
{
|
{
|
||||||
static_assert(I >= 0 && I <= 255,
|
static_assert(I >= 0 && I <= 255,
|
||||||
"gsl::byte only has 8 bits of storage, values must be in range 0-255");
|
"gsl::byte only has 8 bits of storage, values must be in range 0-255");
|
||||||
return static_cast<byte>(I);
|
return static_cast<BYTE_TYPE>(I);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace gsl
|
} // namespace gsl
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#define GSL_SPAN_H
|
#define GSL_SPAN_H
|
||||||
|
|
||||||
#include "./assert" // for Expects
|
#include "./assert" // for Expects
|
||||||
#include "./byte" // for byte
|
#include "./byte" // for BYTE_TYPE
|
||||||
#include "./span_ext" // for span specialization of gsl::at and other span-related extensions
|
#include "./span_ext" // for span specialization of gsl::at and other span-related extensions
|
||||||
#include "./util" // for narrow_cast
|
#include "./util" // for narrow_cast
|
||||||
|
|
||||||
@ -824,28 +824,28 @@ namespace details
|
|||||||
|
|
||||||
// [span.objectrep], views of object representation
|
// [span.objectrep], views of object representation
|
||||||
template <class ElementType, std::size_t Extent>
|
template <class ElementType, std::size_t Extent>
|
||||||
span<const byte, details::calculate_byte_size<ElementType, Extent>::value>
|
span<const BYTE_TYPE, details::calculate_byte_size<ElementType, Extent>::value>
|
||||||
as_bytes(span<ElementType, Extent> s) noexcept
|
as_bytes(span<ElementType, Extent> s) noexcept
|
||||||
{
|
{
|
||||||
using type = span<const byte, details::calculate_byte_size<ElementType, Extent>::value>;
|
using type = span<const BYTE_TYPE, details::calculate_byte_size<ElementType, Extent>::value>;
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
|
GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
|
||||||
// clang-format on
|
// clang-format on
|
||||||
return type{reinterpret_cast<const byte*>(s.data()), s.size_bytes()};
|
return type{reinterpret_cast<const BYTE_TYPE*>(s.data()), s.size_bytes()};
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class ElementType, std::size_t Extent,
|
template <class ElementType, std::size_t Extent,
|
||||||
std::enable_if_t<!std::is_const<ElementType>::value, int> = 0>
|
std::enable_if_t<!std::is_const<ElementType>::value, int> = 0>
|
||||||
span<byte, details::calculate_byte_size<ElementType, Extent>::value>
|
span<BYTE_TYPE, details::calculate_byte_size<ElementType, Extent>::value>
|
||||||
as_writable_bytes(span<ElementType, Extent> s) noexcept
|
as_writable_bytes(span<ElementType, Extent> s) noexcept
|
||||||
{
|
{
|
||||||
using type = span<byte, details::calculate_byte_size<ElementType, Extent>::value>;
|
using type = span<BYTE_TYPE, details::calculate_byte_size<ElementType, Extent>::value>;
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
|
GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
|
||||||
// clang-format on
|
// clang-format on
|
||||||
return type{reinterpret_cast<byte*>(s.data()), s.size_bytes()};
|
return type{reinterpret_cast<BYTE_TYPE*>(s.data()), s.size_bytes()};
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace gsl
|
} // namespace gsl
|
||||||
|
Loading…
x
Reference in New Issue
Block a user