diff options
Diffstat (limited to 'externals/ace/Unbounded_Set_Ex.h')
| -rw-r--r-- | externals/ace/Unbounded_Set_Ex.h | 376 |
1 files changed, 0 insertions, 376 deletions
diff --git a/externals/ace/Unbounded_Set_Ex.h b/externals/ace/Unbounded_Set_Ex.h deleted file mode 100644 index 3d290a6acb3..00000000000 --- a/externals/ace/Unbounded_Set_Ex.h +++ /dev/null @@ -1,376 +0,0 @@ -// -*- C++ -*- - -//============================================================================= -/** - * @file Unbounded_Set_Ex.h - * - * $Id: Unbounded_Set_Ex.h 88978 2010-02-13 16:03:31Z hillj $ - * - * @author Douglas C. Schmidt <schmidt@cs.wustl.edu> - */ -//============================================================================= - -#ifndef ACE_UNBOUNDED_SET_EX_H -#define ACE_UNBOUNDED_SET_EX_H -#include /**/ "ace/pre.h" - -#include "ace/Node.h" -#include "ace/os_include/os_stddef.h" -#include <iterator> - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -ACE_BEGIN_VERSIONED_NAMESPACE_DECL - -class ACE_Allocator; - -template <class T, class C> -class ACE_Unbounded_Set_Ex_Iterator; - -template <class T, class C> -class ACE_Unbounded_Set_Ex_Const_Iterator; - -template <class T, class C> -class ACE_Unbounded_Set_Ex; - -/** - * @class ACE_Unbounded_Set_Ex_Iterator - * - * @brief Implement an iterator over an unbounded set. - */ -template <class T, class C> -class ACE_Unbounded_Set_Ex_Iterator -{ -public: - /// Type definition of the container type. - typedef ACE_Unbounded_Set_Ex<T, C> container_type; - - // = std::iterator_traits typedefs/traits. - typedef std::forward_iterator_tag iterator_category; - typedef typename container_type::value_type value_type; - typedef typename container_type::reference reference; - typedef typename container_type::pointer pointer; - typedef typename container_type::difference_type difference_type; - - // = Initialization method. - ACE_Unbounded_Set_Ex_Iterator (ACE_Unbounded_Set_Ex<T, C> &s, bool end = false); - - // = Iteration methods. - - /// Pass back the @a next_item that hasn't been seen in the Set. - /// Returns 0 when all items have been seen, else 1. - int next (T *&next_item); - - /// Move forward by one element in the set. Returns 0 when all the - /// items in the set have been seen, else 1. - int advance (void); - - /// Move to the first element in the set. Returns 0 if the - /// set is empty, else 1. - int first (void); - - /// Returns 1 when all items have been seen, else 0. - int done (void) const; - - /// Dump the state of an object. - void dump (void) const; - - // = STL styled iteration, compare, and reference functions. - - /// Postfix advance. - ACE_Unbounded_Set_Ex_Iterator<T, C> operator++ (int); - - /// Prefix advance. - ACE_Unbounded_Set_Ex_Iterator<T, C>& operator++ (void); - - /// Returns a reference to the internal element @c this is pointing to. - T& operator* (void); - - /// Check if two iterators point to the same position - bool operator== (const ACE_Unbounded_Set_Ex_Iterator<T, C> &) const; - bool operator!= (const ACE_Unbounded_Set_Ex_Iterator<T, C> &) const; - - /// Declare the dynamic allocation hooks. - ACE_ALLOC_HOOK_DECLARE; - -private: - - /// Pointer to the current node in the iteration. - ACE_Node<T, C> *current_; - - /// Pointer to the set we're iterating over. - ACE_Unbounded_Set_Ex<T, C> *set_; -}; - -/** - * @class ACE_Unbounded_Set_Ex_Const_Iterator - * - * @brief Implement an const iterator over an unbounded set. - */ -template <class T, class C> -class ACE_Unbounded_Set_Ex_Const_Iterator -{ -public: - typedef ACE_Unbounded_Set_Ex<T, C> container_type; - - // = std::iterator_traits typedefs/traits. - typedef std::forward_iterator_tag iterator_category; - typedef typename container_type::const_value_type value_type; - typedef typename container_type::const_reference reference; - typedef typename container_type::const_pointer pointer; - typedef typename container_type::difference_type difference_type; - - // = Initialization method. - ACE_Unbounded_Set_Ex_Const_Iterator (const ACE_Unbounded_Set_Ex<T, C> &s, - bool end = false); - - // = Iteration methods. - - /// Pass back the @a next_item that hasn't been seen in the Set. - /// @return Returns 0 when all items have been seen, else 1. - int next (T *&next_item); - - /// Move forward by one element in the set. Returns 0 when all the - /// items in the set have been seen, else 1. - int advance (void); - - /// Move to the first element in the set. Returns 0 if the - /// set is empty, else 1. - int first (void); - - /// Returns 1 when all items have been seen, else 0. - int done (void) const; - - /// Dump the state of an object. - void dump (void) const; - - // = STL styled iteration, compare, and reference functions. - - /// Postfix advance. - ACE_Unbounded_Set_Ex_Const_Iterator<T, C> operator++ (int); - - /// Prefix advance. - ACE_Unbounded_Set_Ex_Const_Iterator<T, C>& operator++ (void); - - /// Returns a reference to the internal element @c this is pointing to. - T& operator* (void); - - /// Check if two iterators point to the same position - bool operator== (const ACE_Unbounded_Set_Ex_Const_Iterator<T, C> &) const; - bool operator!= (const ACE_Unbounded_Set_Ex_Const_Iterator<T, C> &) const; - - /// Declare the dynamic allocation hooks. - ACE_ALLOC_HOOK_DECLARE; - -private: - - /// Pointer to the current node in the iteration. - ACE_Node<T, C> *current_; - - /// Pointer to the set we're iterating over. - const ACE_Unbounded_Set_Ex<T, C> *set_; -}; - -/** - * @class ACE_Unbounded_Set_Ex - * - * @brief Implement a simple unordered set of <T> of unbounded size. - * - * This implementation of an unordered set uses a circular - * linked list with a dummy node. This implementation does not - * allow duplicates, but it maintains FIFO ordering of insertions. - * - * This implementation may also be parameterized with a comparator - * functor, which must implement bool operator () (const T&, const T&) const, - * returning true if the given items are equivalent. The default comparator - * is sufficient for objects reliably compared with operator==. - * - * <b> Requirements and Performance Characteristics</b> - * - Internal Structure - * Circular linked list - * - Duplicates allowed? - * No - * - Random access allowed? - * No - * - Search speed - * Linear - * - Insert/replace speed - * Linear - * - Iterator still valid after change to container? - * Yes - * - Frees memory for removed elements? - * Yes - * - Items inserted by - * Value - * - Requirements for contained type - * -# Default constructor - * -# Copy constructor - * -# operator= - * -# operator== const - * - */ -template <class T, class C> -class ACE_Unbounded_Set_Ex -{ -public: - friend class ACE_Unbounded_Set_Ex_Iterator<T, C>; - friend class ACE_Unbounded_Set_Ex_Const_Iterator<T, C>; - - // Trait definition. - typedef ACE_Unbounded_Set_Ex_Iterator<T, C> ITERATOR; - typedef ACE_Unbounded_Set_Ex_Iterator<T, C> iterator; - typedef ACE_Unbounded_Set_Ex_Const_Iterator<T, C> CONST_ITERATOR; - typedef ACE_Unbounded_Set_Ex_Const_Iterator<T, C> const_iterator; - typedef C COMP; - typedef ACE_Node<T, C> NODE; - - // = STL typedefs/traits. - typedef T value_type; - typedef T const const_value_type; - typedef value_type & reference; - typedef const_value_type & const_reference; - typedef value_type * pointer; - typedef const_value_type * const_pointer; - typedef ptrdiff_t difference_type; - - // = Initialization and termination methods. - /// Constructor. Use user specified allocation strategy - /// if specified. - /** - * Initialize an empty set using the allocation strategy of the user if - * provided. - */ - ACE_Unbounded_Set_Ex (ACE_Allocator *alloc = 0); - - /** - * Initialize an empty set using the allocation strategy of the user if - * provided, and a given comparator functor. - */ - ACE_Unbounded_Set_Ex (const C &comparator, ACE_Allocator *alloc = 0); - - /// Copy constructor. - /** - * Initialize this set to be an exact copy of the set provided. - */ - ACE_Unbounded_Set_Ex (const ACE_Unbounded_Set_Ex<T, C> &); - - /// Assignment operator. - /** - * Perform a deep copy of the rhs into the lhs. - */ - ACE_Unbounded_Set_Ex<T, C> & operator= (const ACE_Unbounded_Set_Ex<T, C> &); - - /// Destructor. - /** - * Destroy the nodes of the set. - */ - ~ACE_Unbounded_Set_Ex (void); - - // = Check boundary conditions. - - /// Returns @c true if the container is empty, otherwise returns @c false. - /** - * Constant time is_empty check. - */ - bool is_empty (void) const; - - /// Returns @c false. - /** - * Always returns @c false since the set can never fill up. - */ - bool is_full (void) const; - - // = Classic unordered set operations. - - /// Linear insertion of an item. - /** - * Insert @a new_item into the set (doesn't allow duplicates). - * Returns -1 if failures occur, 1 if item is already present, else - * 0. - */ - int insert (const T &new_item); - - /// Insert @a item at the tail of the set (doesn't check for - /// duplicates). - /** - * Constant time insert at the end of the set. - */ - int insert_tail (const T &item); - - /// Linear remove operation. - /** - * Remove first occurrence of @a item from the set. Returns 0 if - * it removes the item, -1 if it can't find the item, and -1 if a - * failure occurs. - */ - int remove (const T &item); - - /// Finds if @a item occurs in the set. Returns 0 if find succeeds, - /// else -1. - /** - * Performs a linear find operation. - */ - int find (const T &item) const; - - /// Size of the set. - /** - * Access the size of the set. - */ - size_t size (void) const; - - /// Dump the state of an object. - void dump (void) const; - - /// Reset the ACE_Unbounded_Set_Ex to be empty. - /** - * Delete the nodes of the set. - */ - void reset (void); - - // = STL-styled unidirectional iterator factory. - iterator begin (void); - iterator end (void); - const_iterator begin (void) const; - const_iterator end (void) const; - - /// Declare the dynamic allocation hooks. - ACE_ALLOC_HOOK_DECLARE; - -private: - /// Delete all the nodes in the Set. - void delete_nodes (void); - - /// Copy nodes into this set. - void copy_nodes (const ACE_Unbounded_Set_Ex<T, C> &); - - /// Head of the linked list of Nodes. - NODE *head_; - - /// Current size of the set. - size_t cur_size_; - - /// Allocation strategy of the set. - ACE_Allocator *allocator_; - - /// Comparator to be used - COMP comp_; -}; - -ACE_END_VERSIONED_NAMESPACE_DECL - -#if defined (__ACE_INLINE__) -#include "ace/Unbounded_Set_Ex.inl" -#endif /* __ACE_INLINE__ */ - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "ace/Unbounded_Set_Ex.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Unbounded_Set_Ex.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#include /**/ "ace/post.h" -#endif /* ACE_UNBOUNDED_SET_H */ |
