1#ifndef PROTOZERO_DATA_VIEW_HPP
2#define PROTOZERO_DATA_VIEW_HPP
29#ifdef PROTOZERO_USE_VIEW
30using data_view = PROTOZERO_USE_VIEW;
41 const char* m_data =
nullptr;
42 std::size_t m_size = 0;
57 constexpr
data_view(const
char* ptr, std::
size_t length) noexcept
79 m_size{std::strlen(ptr)} {
89 swap(m_data, other.m_data);
90 swap(m_size, other.m_size);
94 constexpr const char*
data() const noexcept {
99 constexpr std::size_t
size() const noexcept {
104 constexpr bool empty() const noexcept {
108#ifndef PROTOZERO_STRICT_API
119 protozero_assert(m_data);
120 return {m_data, m_size};
129 explicit operator std::string()
const {
130 protozero_assert(m_data);
131 return {m_data, m_size};
145 assert(m_data && other.m_data);
146 const int cmp = std::memcmp(
data(), other.data(),
147 std::min(
size(), other.size()));
149 if (
size() == other.size()) {
152 return size() < other.size() ? -1 : 1;
177 return lhs.size() == rhs.size() &&
178 std::equal(lhs.data(), lhs.data() + lhs.size(), rhs.data());
189 return !(lhs == rhs);
199 return lhs.compare(rhs) < 0;
209 return lhs.compare(rhs) <= 0;
219 return lhs.compare(rhs) > 0;
229 return lhs.compare(rhs) >= 0;
Definition data_view.hpp:39
constexpr data_view() noexcept=default
constexpr bool empty() const noexcept
Returns true if size is 0.
Definition data_view.hpp:104
std::string to_string() const
Definition data_view.hpp:118
int compare(data_view other) const noexcept
Definition data_view.hpp:144
void swap(data_view &other) noexcept
Definition data_view.hpp:87
data_view(const char *ptr) noexcept
Definition data_view.hpp:77
data_view(const std::string &str) noexcept
Definition data_view.hpp:67
constexpr std::size_t size() const noexcept
Return length of data in bytes.
Definition data_view.hpp:99
constexpr const char * data() const noexcept
Return pointer to data.
Definition data_view.hpp:94
Contains macro checks for different configurations.
All parts of the protozero header-only library are in this namespace.
Definition basic_pbf_builder.hpp:24
bool operator<(const data_view lhs, const data_view rhs) noexcept
Definition data_view.hpp:198
void swap(basic_pbf_writer< TBuffer > &lhs, basic_pbf_writer< TBuffer > &rhs) noexcept
Definition basic_pbf_writer.hpp:936
constexpr bool operator!=(const data_view lhs, const data_view rhs) noexcept
Definition data_view.hpp:188
constexpr bool operator==(const data_view lhs, const data_view rhs) noexcept
Definition data_view.hpp:176
bool operator>=(const data_view lhs, const data_view rhs) noexcept
Definition data_view.hpp:228
bool operator<=(const data_view lhs, const data_view rhs) noexcept
Definition data_view.hpp:208
bool operator>(const data_view lhs, const data_view rhs) noexcept
Definition data_view.hpp:218