24 #include <string_view>
25 #include <type_traits>
60 std::string as_string()
const;
62 const uint8_t* data() const noexcept;
63 size_t size() const noexcept;
64 bool empty() const noexcept;
67 const uint8_t& operator[](
size_t index) const;
68 const uint8_t& at(
size_t index) const;
75 void clear() noexcept;
76 void reserve(
size_t capacity);
77 void resize(
size_t new_size);
80 bool is_valid() const noexcept;
81 void validate() const;
84 std::vector<uint8_t> data_;
87 void validate_index(
size_t index) const;
88 void validate_construction(const
void* ptr,
size_t size) const;
99 namespace safe_buffer_factory {
Safe data buffer for type-safe data transfer.
SafeDataBuffer & operator=(const SafeDataBuffer &)=default
~SafeDataBuffer()=default
SafeDataBuffer(const SafeDataBuffer &)=default
SafeDataBuffer(SafeDataBuffer &&)=default
SafeDataBuffer & operator=(SafeDataBuffer &&)=default
A C++17 compatible span-like class for safe array access.
SafeDataBuffer from_vector(const std::vector< uint8_t > &vec)
SafeDataBuffer from_span(ConstByteSpan span)
SafeDataBuffer from_string(const std::string &str)
SafeDataBuffer from_c_string(const char *str)
SafeDataBuffer from_raw_data(const uint8_t *data, size_t size)
std::function< void(const SafeDataBuffer &)> SafeDataHandler
Safe data handler type for callbacks.