Files
ckittylib/src/ckitty/memory/data_view.hpp
T
2026-07-29 10:22:20 -06:00

55 lines
1.2 KiB
C++

#pragma once
#include <ckitty/memory/primitives.hpp>
namespace ckitty {
/**
* @brief Represents a piece of a shared buffer that
* is not owned by this object.
*/
class data_view {
private:
const u8* _begin;
const u8* _end;
public:
data_view(const u8* begin, const u8* end)
: _begin(begin), _end(end) {}
data_view(const u8* data, const isize length)
: _begin(data), _end(data + length) {}
data_view(const std::string& str)
: _begin((const u8*) str.begin().base()),
_end((const u8*) str.end().base()) {}
const u8* begin() const {
return _begin;
}
const u8* end() const {
return _end;
}
u8 operator[](isize i) const {
return *(_begin + i);
}
isize length() const {
return isize(_end - _begin);
}
const data_view sub_off(isize offset, isize length) const {
return data_view(_begin + offset, _begin + offset + length);
}
const data_view sub_abs(isize begin, isize end) const {
return data_view(_begin + begin, _begin + end);
}
};
}