| // ptr_list.hpp |
| // Copyright (c) 2007-2009 Ben Hanson (http://www.benhanson.net/) |
| // |
| // Distributed under the Boost Software License, Version 1.0. (See accompanying |
| // file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
| #ifndef BOOST_LEXER_PTR_LIST_HPP |
| #define BOOST_LEXER_PTR_LIST_HPP |
| |
| #include <list> |
| |
| namespace boost |
| { |
| namespace lexer |
| { |
| namespace detail |
| { |
| template<typename Type> |
| class ptr_list |
| { |
| public: |
| typedef std::list<Type *> list; |
| |
| ptr_list () |
| { |
| } |
| |
| ~ptr_list () |
| { |
| clear (); |
| } |
| |
| list *operator -> () |
| { |
| return &_list; |
| } |
| |
| const list *operator -> () const |
| { |
| return &_list; |
| } |
| |
| list &operator * () |
| { |
| return _list; |
| } |
| |
| const list &operator * () const |
| { |
| return _list; |
| } |
| |
| void clear () |
| { |
| while (!_list.empty ()) |
| { |
| delete _list.front (); |
| _list.pop_front (); |
| } |
| } |
| |
| private: |
| list _list; |
| |
| ptr_list (const ptr_list &); // No copy construction. |
| ptr_list &operator = (const ptr_list &); // No assignment. |
| }; |
| } |
| } |
| } |
| |
| #endif |