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