// ptr_map.hpp // Copyright (c) 2005-2012 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 LEXERTL_PTR_MAP_HPP #define LEXERTL_PTR_MAP_HPP #include namespace lexertl { namespace detail { template class ptr_map { public: typedef std::map map; typedef std::pair pair; typedef std::pair iter_pair; ptr_map () { } ~ptr_map () { clear (); } map *operator -> () { return &_map; } const map *operator -> () const { return &_map; } map &operator * () { return _map; } const map &operator * () const { return _map; } void clear () { for (typename map::iterator iter_ = _map.begin (), end_ = _map.end (); iter_ != end_; ++iter_) { delete iter_->second; } _map.clear (); } private: map _map; ptr_map (const ptr_map &); // No copy construction. ptr_map &operator = (const ptr_map &); // No assignment. }; } } #endif