9#ifndef HPP_DXL_SEQUENTIAL_FILE_VIEW_TODORENAME
10#define HPP_DXL_SEQUENTIAL_FILE_VIEW_TODORENAME
62 Data(
const std::byte* pData, std::size_t n) :
p(pData),
end(
p + n) {}
66 std::size_t
Remaining() const noexcept {
return static_cast<std::size_t
>(
end -
p); }
78 template <
typename TCheck = alib::CHK>
80 if constexpr ( TCheck::value ) {
81 if (
p>=
end)
return std::byte{0};
94 template <
typename TCheck = alib::CHK>
96 if constexpr ( TCheck::value ) {
97 if (
p>=
end)
return char{0};
106 const std::byte*
Current() const noexcept {
return p; }
115 template <
typename TCheck = alib::CHK>
117 if constexpr ( TCheck::value ) {
118 if (n >
Remaining())
throw std::out_of_range(
"Data advance past end");
128 #if defined(_POSIX_MAPPED_FILES) && _POSIX_MAPPED_FILES > 0
129 void* mapAddr =
nullptr;
143 MappedFile(
const char* path, std::size_t knownSize= std::numeric_limits<std::size_t>::max(),
144 bool preferMmap =
true)
145 {
Open(path, knownSize, preferMmap); }
162 Data
Open(
const char* path,
163 std::size_t knownSize= std::numeric_limits<std::size_t>::max(),
164 bool disableMMap =
false);
167 void Close() noexcept;
170 bool IsMMap() const noexcept {
return mapAddr !=
nullptr; }
#define ALIB_ASSERT_ERROR(cond, domain,...)
bool IsEOF() const noexcept
const std::byte * p
Current pointer position.
Data()
Defaulted default-constructor.
Data(const std::byte *pData, std::size_t n)
const std::byte * end
Pointer to the end of the data.
std::size_t Remaining() const noexcept
const std::byte * Current() const noexcept
std::size_t size
Size of the loaded data.
MappedFile(MappedFile &&)=delete
Deleted move constructor.
bool IsEmpty() const noexcept
MappedFile(const MappedFile &)=delete
Deleted copy constructor.
MappedFile(const char *path, std::size_t knownSize=std::numeric_limits< std::size_t >::max(), bool preferMmap=true)
MappedFile & operator=(const MappedFile &)=delete
Deleted copy assignment operator.
std::vector< std::byte > noMMapBuf
Internal buffer used for fallback read mode.
Data Open(const char *path, std::size_t knownSize=std::numeric_limits< std::size_t >::max(), bool disableMMap=false)
~MappedFile()
Destructor. Calls Close.
MappedFile & operator=(MappedFile &&)=delete
void Close() noexcept
Release resources (unmap / free buffer).
bool IsMMap() const noexcept
MappedFile()=default
Default constructor. Creates an empty view.
std::size_t Size() const noexcept