diff --git a/include/dwarfs/mmif.h b/include/dwarfs/mmif.h index 7af2ad09..6dcca4c3 100644 --- a/include/dwarfs/mmif.h +++ b/include/dwarfs/mmif.h @@ -21,6 +21,7 @@ #pragma once +#include #include #include #include @@ -44,22 +45,27 @@ class mmif : public boost::noncopyable { public: virtual ~mmif() = default; - template - T const* as(file_off_t offset = 0) const { + template + T const* as(U offset = 0) const { return reinterpret_cast( reinterpret_cast(this->addr()) + offset); } - template - std::span span(file_off_t offset, size_t length) const { + template + std::span span(U offset, size_t length) const { return std::span(this->as(offset), length); } - template - std::span span(file_off_t offset = 0) const { + template + std::span span(U offset) const { return span(offset, size() - offset); } + template + std::span span() const { + return span(0); + } + virtual void const* addr() const = 0; virtual size_t size() const = 0;