| /* |
| * |
| * Copyright (c) 2003 Dr John Maddock |
| * Use, modification and distribution is subject to the |
| * Boost Software License, Version 1.0. (See accompanying file |
| * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| * |
| */ |
| |
| #include <boost/shared_ptr.hpp> |
| #include <boost/filesystem/path.hpp> |
| |
| class fileview |
| { |
| public: |
| // types: |
| typedef const char& reference; |
| typedef reference const_reference; |
| typedef const char* iterator; // See _lib.container.requirements_ |
| typedef iterator const_iterator; // See _lib.container.requirements_ |
| typedef std::size_t size_type; |
| typedef std::ptrdiff_t difference_type; |
| typedef char value_type; |
| typedef const char* pointer; |
| typedef pointer const_pointer; |
| #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION |
| typedef std::reverse_iterator<iterator> reverse_iterator; |
| typedef std::reverse_iterator<const_iterator> const_reverse_iterator; |
| #endif |
| |
| // construct: |
| fileview(); |
| fileview(const boost::filesystem::path& p); |
| ~fileview(); |
| fileview(const fileview& that); |
| fileview& operator=(const fileview& that); |
| void close(); |
| void open(const boost::filesystem::path& p); |
| |
| // iterators: |
| const_iterator begin() const; |
| const_iterator end() const; |
| #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION |
| const_reverse_iterator rbegin() const; |
| const_reverse_iterator rend() const; |
| #endif |
| |
| // capacity: |
| size_type size() const; |
| size_type max_size() const; |
| bool empty() const; |
| |
| // element access: |
| const_reference operator[](size_type n) const; |
| const_reference at(size_type n) const; |
| const_reference front() const; |
| const_reference back() const; |
| void swap(fileview& that); |
| |
| private: |
| void cow(); |
| struct implementation; |
| boost::shared_ptr<implementation> pimpl; |
| }; |
| |
| |