diff --git a/SConstruct b/SConstruct index e3c0a892c..6c35b2b8d 100644 --- a/SConstruct +++ b/SConstruct @@ -202,8 +202,6 @@ common.add_inst_headers([ 'array-trace-resolver.h', 'trace-root.h', 'terminal-trace-resolver.h', - 'smartvector.h', - 'smartset.h', 'data-rate.h', ]) diff --git a/src/common/smartset.h b/src/common/smartset.h deleted file mode 100644 index 61e9d7d0d..000000000 --- a/src/common/smartset.h +++ /dev/null @@ -1,118 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -// -// Copyright (c) 2006 Georgia Tech Research Corporation -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2 as -// published by the Free Software Foundation; -// -// 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// Author: George F. Riley -// - -#ifndef __SMART_SET_H__ -#define __SMART_SET_H__ - -#include - -namespace ns3 { - -// Define a "smart" set container to be used by any ns3 object -// maintaining a collection of pointers, which must be freed at -// a later time. The template parameter T must be a pointer, or an -// object supporting the delete operator, and the dereferenced object -// must support a Copy() function. The set implementation -// has a O(1) "Remove" operation, that removes and deletes -// a single element in the container. However, additions to the -// set are O(n) due to the sorted nature of the underlying STL set. - -// Define a "smart" set container -template class SmartSet { -public: - typedef typename std::set::const_iterator const_iterator; - typedef typename std::set::iterator iterator; - typedef typename std::set::size_type size_type; - SmartSet() - { // Nothing needed for default constructor - } - - ~SmartSet() - { // Smart container destructor - for (const_iterator i = m_elements.begin(); i != m_elements.end(); ++i) - { - delete *i; - } - // No need to "clear" the set, as the set destructor does this - } - - SmartSet(const SmartSet& o) - { // Copy constructor, copy all underlying objects - for (iterator i = o.Begin(); i != o.End(); ++i) - { - Add((*i)->Copy()); - } - } - - void Add(const T& t) // Add element, will be deleted on Clear or destructor - { - m_elements.insert(t); - } - - bool Remove(T& t) // Remove and delete specified element - { // Find the specified element, delete it, and remove from the container. - // Returns true if found - iterator i = m_elements.find(t); - if (i != m_elements.end()) - { // Found it, delete it - delete t; // Delete the object - m_elements.erase(i); // Erase the element - return true; - } - return false; - } - - void Clear() - { // Delete and remove all elements from the smart container - for (const_iterator i = m_elements.begin(); i != m_elements.end(); ++i) - { - delete *i; - } - m_elements.clear(); - } - - // Iterator access - iterator Begin() const - { - return m_elements.begin(); - } - - iterator End() const - { - return m_elements.end(); - } - - // Miscellaneous - size_type Size() const - { - return m_elements.size(); - } - - bool Empty() const - { - return m_elements.empty(); - } - -private: - std::set m_elements; -}; - -} // namespace ns3 -#endif diff --git a/src/common/smartvector.h b/src/common/smartvector.h deleted file mode 100644 index fc76b19dc..000000000 --- a/src/common/smartvector.h +++ /dev/null @@ -1,142 +0,0 @@ -/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ -// -// Copyright (c) 2006 Georgia Tech Research Corporation -// All rights reserved. -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU General Public License version 2 as -// published by the Free Software Foundation; -// -// 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -// -// Author: George F. Riley -// - -#ifndef __SMART_VECTOR_H__ -#define __SMART_VECTOR_H__ - -#include - -namespace ns3 { - -// Define a "smart" vector container to be used by any ns3 object -// maintaining a collection of pointers, which must be freed at -// a later time. The template parameter T must be a pointer, or an -// object supporting the delete operator, and the dereferenced object -// must support the Copy() operation. The vector implementation -// has in inefficient "Remove" operation, that removes and deletes -// a single element in the container. If frequent "Remove" operations -// are needed, the SmartSet is likey a better choice. - -template class SmartVector { -public: - typedef typename std::vector::const_iterator const_iterator; - typedef typename std::vector::iterator iterator; - typedef typename std::vector::size_type size_type; - SmartVector() - { // Nothing needed for default constructor - } - ~SmartVector() - { // Smart container destructor - for (const_iterator i = m_elements.begin(); i != m_elements.end(); ++i) - { - delete *i; - } - // No need to "clear" the vector, as the vector destructor does this - } - - SmartVector(const SmartVector& o) - { // Copy constructor, copy each underlying object - for (const_iterator i = o.Begin(); i != o.End(); ++i) - { - Add((*i)->Copy()); - } - } - - void Add(const T& t) // Add element, will be deleted on Clear or destructor - { - m_elements.push_back(t); - } - - bool Remove() - { // Remove the back element - if (Empty()) return false; // No back element exists - m_elements.pop_back(); - return true; - } - - bool Remove(const T& t) // Remove and delete specified element - { // Find the specified element, delete it, and remove from the container. - // Returns true if found. - // Note, this implementation is not particularly efficient. If - // explicit individual element removal is a frequent operation for a given - // smart container, an implementation based on STL "set" will - // be a better choice. See "SmartSet" if for this approach. - // The SmartSet adds extra overhead in that the elementes are sorted, - // so it should be used with caution. - for (const_iterator i = m_elements.begin(); i != m_elements.end(); ++i) - { - if (*i == t) - { // Found it - delete t; // Delete the object - m_elements.erase(i); // Erase the element - return true; - } - } - return false; - } - - void Clear() - { // Delete and remove all elements from the smart container - for (const_iterator i = m_elements.begin(); i != m_elements.end(); ++i) - { - delete *i; - } - m_elements.clear(); - } - - // Iterator access - const_iterator Begin() const - { - return m_elements.begin(); - } - - const_iterator End() const - { - return m_elements.end(); - } - - // Miscellaneous - size_type Size() const - { - return m_elements.size(); - } - - bool Empty() const - { - return m_elements.empty(); - } - - T& Back() - { - return m_elements.back(); - } - - T operator[](size_type i) const - { // Indexing operator - return m_elements[i]; - } - -private: - std::vector m_elements; -}; - -} // Namespace ns3 -#endif