1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // 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
|