diff --git a/io_posix.cpp b/io_posix.cpp index 5e7bd692..a3846da3 100644 --- a/io_posix.cpp +++ b/io_posix.cpp @@ -79,7 +79,8 @@ mapped_file::empty (void) const ////////////////////////////////////////////////////////////////////////////// uint8_t* -mapped_file::data (void) { +mapped_file::data (void) & +{ CHECK (m_size > 0); CHECK (m_data != NULL); @@ -89,7 +90,8 @@ mapped_file::data (void) { //---------------------------------------------------------------------------- const uint8_t* -mapped_file::data (void) const { +mapped_file::data (void) const & +{ CHECK (m_size > 0); CHECK (m_data != NULL); @@ -99,21 +101,23 @@ mapped_file::data (void) const { //---------------------------------------------------------------------------- uint8_t* -mapped_file::begin (void) { +mapped_file::begin (void) & +{ return data (); } //---------------------------------------------------------------------------- uint8_t* -mapped_file::end (void) { +mapped_file::end (void) & +{ return data () + size (); } //----------------------------------------------------------------------------- const uint8_t* -mapped_file::begin (void) const +mapped_file::begin (void) const & { return data (); } @@ -121,7 +125,7 @@ mapped_file::begin (void) const //----------------------------------------------------------------------------- const uint8_t* -mapped_file::end (void) const +mapped_file::end (void) const & { return data () + size (); } @@ -129,14 +133,16 @@ mapped_file::end (void) const //---------------------------------------------------------------------------- const uint8_t* -mapped_file::cbegin (void) const { +mapped_file::cbegin (void) const & +{ return data (); } //---------------------------------------------------------------------------- const uint8_t* -mapped_file::cend (void) const { +mapped_file::cend (void) const & +{ return data () + size (); } diff --git a/io_posix.hpp b/io_posix.hpp index 4f3e12ee..7af80da6 100644 --- a/io_posix.hpp +++ b/io_posix.hpp @@ -35,20 +35,20 @@ namespace util { ~mapped_file (); - const uint8_t* data (void) const; - uint8_t* data (void); - bool empty (void) const; size_t size (void) const; - uint8_t* begin (void); - uint8_t* end (void); + const uint8_t* data (void) const &; + uint8_t* data (void) &; - const uint8_t* begin (void) const; - const uint8_t* end (void) const; + uint8_t* begin (void) &; + uint8_t* end (void) &; - const uint8_t* cbegin (void) const; - const uint8_t* cend (void) const; + const uint8_t* begin (void) const &; + const uint8_t* end (void) const &; + + const uint8_t* cbegin (void) const &; + const uint8_t* cend (void) const &; template operator util::view () const &; template operator util::view< T *restrict> () &; diff --git a/io_win32.cpp b/io_win32.cpp index f1fb7bff..856e697a 100644 --- a/io_win32.cpp +++ b/io_win32.cpp @@ -136,22 +136,6 @@ mapped_file::mapped_file (const boost::filesystem::path &path, /////////////////////////////////////////////////////////////////////////////// -const uint8_t* -mapped_file::data (void) const -{ - return m_data.get (); -} - - -//----------------------------------------------------------------------------- -uint8_t* -mapped_file::data (void) -{ - return m_data.get (); -} - - -//----------------------------------------------------------------------------- size_t mapped_file::size (void) const { @@ -167,9 +151,25 @@ mapped_file::empty (void) const } +//----------------------------------------------------------------------------- +const uint8_t* +mapped_file::data (void) const & +{ + return m_data.get (); +} + + //----------------------------------------------------------------------------- uint8_t* -mapped_file::begin (void) +mapped_file::data (void) & +{ + return m_data.get (); +} + + +//----------------------------------------------------------------------------- +uint8_t* +mapped_file::begin (void) & { return data (); } @@ -177,7 +177,7 @@ mapped_file::begin (void) //----------------------------------------------------------------------------- uint8_t* -mapped_file::end (void) +mapped_file::end (void) & { return data () + size (); } @@ -185,7 +185,7 @@ mapped_file::end (void) //----------------------------------------------------------------------------- const uint8_t* -mapped_file::begin (void) const +mapped_file::begin (void) const & { return cbegin (); } @@ -193,7 +193,7 @@ mapped_file::begin (void) const //----------------------------------------------------------------------------- const uint8_t* -mapped_file::end (void) const +mapped_file::end (void) const & { return cend (); } @@ -201,7 +201,7 @@ mapped_file::end (void) const //----------------------------------------------------------------------------- const uint8_t* -mapped_file::cbegin (void) const +mapped_file::cbegin (void) const & { return data (); } @@ -209,7 +209,7 @@ mapped_file::cbegin (void) const //----------------------------------------------------------------------------- const uint8_t* -mapped_file::cend (void) const +mapped_file::cend (void) const & { return data () + size (); } diff --git a/io_win32.hpp b/io_win32.hpp index 43f0ce67..73b69c4e 100644 --- a/io_win32.hpp +++ b/io_win32.hpp @@ -45,26 +45,23 @@ namespace util { mapped_file (const mapped_file&) = delete; mapped_file& operator= (const mapped_file&) = delete; - const uint8_t* data (void) const; - uint8_t* data (void); - size_t size (void) const; bool empty (void) const; - uint8_t* begin (void); - uint8_t* end (void); + const uint8_t* data (void) const &; + uint8_t* data (void) &; - const uint8_t* begin (void) const; - const uint8_t* end (void) const; + uint8_t* begin (void) &; + uint8_t* end (void) &; - const uint8_t* cbegin (void) const; - const uint8_t* cend (void) const; + const uint8_t* begin (void) const &; + const uint8_t* end (void) const &; - template - operator util::view () const &; + const uint8_t* cbegin (void) const &; + const uint8_t* cend (void) const &; - template - operator util::view () &; + template operator util::view () const &; + template operator util::view< T *restrict> () &; private: ::util::win32::handle m_file;