code: Convert is_integral assertions to concepts

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>
This commit is contained in:
Pavel Emelyanov
2022-02-24 16:38:18 +03:00
parent 680195564d
commit b8401f2ddd
3 changed files with 9 additions and 9 deletions

View File

@@ -186,16 +186,16 @@ static_assert(FragmentedView<buffer_view<bytes_ostream::fragment_iterator>>);
using size_type = uint32_t;
template<typename T, typename Input>
requires std::is_integral_v<T>
inline T deserialize_integral(Input& input) {
static_assert(std::is_integral<T>::value, "T should be integral");
T data;
input.read(reinterpret_cast<char*>(&data), sizeof(T));
return le_to_cpu(data);
}
template<typename T, typename Output>
requires std::is_integral_v<T>
inline void serialize_integral(Output& output, T data) {
static_assert(std::is_integral<T>::value, "T should be integral");
data = cpu_to_le(data);
output.write(reinterpret_cast<const char*>(&data), sizeof(T));
}

View File

@@ -61,15 +61,15 @@ struct disk_data_value_view {
};
template <typename Size, typename Members>
requires std::is_integral_v<Size>
struct disk_array {
static_assert(std::is_integral<Size>::value, "Length type must be convertible to integer");
utils::chunked_vector<Members> elements;
};
// A wrapper struct for integers to be written using variable-length encoding
template <typename T>
requires std::is_integral_v<T>
struct vint {
static_assert(std::is_integral_v<T>, "Can only wrap integral types");
T value;
};
@@ -80,8 +80,8 @@ struct disk_array_vint_size {
};
template <typename Size, typename Members>
requires std::is_integral_v<Size>
struct disk_array_ref {
static_assert(std::is_integral<Size>::value, "Length type must be convertible to integer");
const utils::chunked_vector<Members>& elements;
disk_array_ref(const utils::chunked_vector<Members>& elements) : elements(elements) {}
};

View File

@@ -157,8 +157,8 @@ public:
uint32_t crc32_vpmsum(uint32_t crc, const uint8_t* p, size_t len);
template <class T>
requires std::is_integral_v<T>
void process_le(T in) {
static_assert(std::is_integral<T>::value, "T must be integral type.");
#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
switch (sizeof(T)) {
case 1: break;
@@ -171,8 +171,8 @@ public:
}
template <class T>
requires std::is_integral_v<T>
void process_be(T in) {
static_assert(std::is_integral<T>::value, "T must be integral type.");
in = seastar::net::hton(in);
_r = crc32_vpmsum(_r, reinterpret_cast<const uint8_t*>(&in), sizeof(T));
}
@@ -182,8 +182,8 @@ public:
}
#else
template <class T>
requires std::is_integral_v<T>
void process_le(T in) {
static_assert(std::is_integral<T>::value, "T must be integral type.");
#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
switch (sizeof(T)) {
case 1: break;
@@ -196,8 +196,8 @@ public:
}
template <class T>
requires std::is_integral_v<T>
void process_be(T in) {
static_assert(std::is_integral<T>::value, "T must be integral type.");
in = seastar::net::hton(in);
_r = ::crc32(_r, reinterpret_cast<const uint8_t*>(&in), sizeof(T));
}