diff options
Diffstat (limited to 'libktorrent/util/ptrmap.h')
-rw-r--r-- | libktorrent/util/ptrmap.h | 181 |
1 files changed, 0 insertions, 181 deletions
diff --git a/libktorrent/util/ptrmap.h b/libktorrent/util/ptrmap.h deleted file mode 100644 index 36e1c20..0000000 --- a/libktorrent/util/ptrmap.h +++ /dev/null @@ -1,181 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005 by Joris Guisson * - * [email protected] * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - ***************************************************************************/ -#ifndef BTPTRMAP_H -#define BTPTRMAP_H - -#include <map> - -namespace bt -{ - /** - * @author Joris Guisson - * @brief Map of pointers - * - * A Map where the data is a pointer. The PtrMap has an autodeletion feature. - * When autodelete is on, every time we remove something from the map, the data - * will be deleted. - */ - template <class Key,class Data> - class PtrMap - { - bool autodel; - std::map<Key,Data*> pmap; - public: - /** - * Constructor. - * @param auto_del Wether or not to enable auto deletion - */ - PtrMap(bool autodel = false) : autodel(autodel) - {} - - /** - * Destructor. Will delete all objects, if auto deletion is on. - */ - virtual ~PtrMap() - { - clear(); - } - - - /** - * Return the number of key data pairs in the map. - */ - unsigned int count() const {return pmap.size();} - - /** - * Enable or disable auto deletion. - * @param yes Enable if true, disable if false - */ - void setAutoDelete(bool yes) - { - autodel = yes; - } - - typedef typename std::map<Key,Data*>::iterator iterator; - typedef typename std::map<Key,Data*>::const_iterator const_iterator; - - iterator begin() {return pmap.begin();} - iterator end() {return pmap.end();} - - const_iterator begin() const {return pmap.begin();} - const_iterator end() const {return pmap.end();} - - /** - * Remove all objects, will delete them if autodelete is on. - */ - void clear() - { - if (autodel) - { - for (iterator i = pmap.begin();i != pmap.end();i++) - { - delete i->second; - i->second = 0; - } - } - pmap.clear(); - } - - /** - * Insert a key data pair. - * @param k The key - * @param d The data - * @param overwrite Wether or not to overwrite - * @return true if the insertion took place - */ - bool insert(const Key & k,Data* d,bool overwrite = true) - { - iterator itr = pmap.find(k); - if (itr != pmap.end()) - { - if (overwrite) - { - if (autodel) - delete itr->second; - itr->second = d; - return true; - } - else - { - return false; - } - } - else - { - pmap[k] = d; - return true; - } - } - - /** - * Find a key in the map and returns it's data. - * @param k The key - * @return The data of the key, 0 if the key isn't in the map - */ - Data* find(const Key & k) - { - iterator i = pmap.find(k); - return (i == pmap.end()) ? 0 : i->second; - } - - /** - * Find a key in the map and returns it's data. - * @param k The key - * @return The data of the key, 0 if the key isn't in the map - */ - const Data* find(const Key & k) const - { - const_iterator i = pmap.find(k); - return (i == pmap.end()) ? 0 : i->second; - } - - /** - * Check to see if a key is in the map. - * @param k The key - * @return true if it is part of the map - */ - bool contains(const Key & k) const - { - const_iterator i = pmap.find(k); - return i != pmap.end(); - } - - /** - * Erase a key from the map. Will delete - * the data if autodelete is on. - * @param key The key - * @return true if an erase took place - */ - bool erase(const Key & key) - { - iterator i = pmap.find(key); - if (i == pmap.end()) - return false; - - if (autodel) - delete i->second; - pmap.erase(i); - return true; - } - }; - -} - -#endif |