Polaris: TypedCollection.h Source File

TypedCollection.h

Go to the documentation of this file.
00001 #ifndef _TYPED_COLLECT_H
00002 #define _TYPED_COLLECT_H
00003 ///
00004 /// \class TypedCollection 
00005 /// \brief A template class used to derive Lists, Sets, ...
00006 /// \defgroup Polaris
00007 /// \ingroup Polaris
00008 ///  C++ VDL
00009 /// \see TypedCollection.h
00010 /// \see TypedCollection.h
00011 ///
00012 /// \endcode
00013 /// \section Overview Overview
00014 /// The TypedCollection class is used as the base class for templatized
00015 /// collections such as List and RefList where the class of the template,
00016 /// T, must be derived from Listable.  TypedCollection simply
00017 /// specifies an interface which is used by the Iterator class in order
00018 /// to make these collections universally accessable by the Iterator.
00019 /// Other than to provide the interface for Iterator, TypedCollection
00020 /// has no bearing on the collections which inherit from it.
00021 ///
00022 /// \endcode
00023 /// \section Hierarchy Hierarchy Structure
00024 /// TypedCollection is the base for specific, usable classes
00025 /// which inherit from it.  The hierarchy can be
00026 /// represented by:
00027 ///
00028 /// \code
00029 ///                     --- :    inherited from relationship
00030 ///                     -c- :    contained in relationship
00031 ///
00032 ///
00033 ///                         Collection
00034 ///                        /          \                                          //
00035 ///                       /            \                                         //
00036 ///               BaseList   Listable   BaseRefList
00037 ///               |  \          |             /  |
00038 ///               |   \         |            /   |
00039 ///               |    c  TypedCollection   c    |
00040 ///               |     \     /     \      /     |
00041 ///               |      \   /       \    /      |
00042 ///               |      LIST        RefList     |
00043 ///               |      Set         RefSet      |
00044 ///               c                              c
00045 ///               |          Listable            |
00046 ///               |             |                |
00047 ///               |             |                |
00048 ///               |        BaseMapRoot           |
00049 ///               |       /           \          |
00050 ///               |      /             \         |
00051 ///               BaseMap               BaseRefMap
00052 ///                  |                       |
00053 ///                  |                       |                            
00054 ///             TypedBaseMap          TypedBaseRefMap
00055 ///               /     \                /         \                             //
00056 ///              /       \              /           \                            //
00057 ///    ProtoDatabase      ProtoMap   ProtoRefMap    ProtoRefDatabase
00058 ///         /  \           |    |      |     |         |         \               //
00059 ///        /    \          |    |      |     |         |          \              //
00060 /// Database KeyDatabase  Map KeyMap  RefMap KeyMap  RefDatabase RefKeyDatabase
00061 /// \endcode
00062 ///
00063 ///
00064 /// \endcode
00065 /// \section See See Also
00066 /// Collection, Listable, Iterator, List, RefList, Set, RefSet
00067 ///
00068 #include "Collection.h"
00069 #include "../Listable.h"
00070 ///
00071 template <class T> class Iterator;
00072 template <class T> class Mutator;
00073 
00074 template <class T> class TypedCollection : public Listable {
00075     friend class Iterator<T>;
00076     friend class Mutator<T>;
00077 
00078  protected:
00079     virtual const Collection &_base_collection() const = 0;
00080     virtual Collection &_base_collection() = 0;
00081  public:
00082     virtual INLINE ~TypedCollection();
00083 };
00084 
00085 template <class T>
00086 INLINE 
00087 TypedCollection<T>::~TypedCollection()
00088 {
00089     ///< Nothing to do
00090 }
00091 
00092 #endif
00093 
 © 1995-2005 University of Illinois, Urbana-Champaign. All rights reserved.  Fri Mar 25 23:06:16 2005