Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

gttbasislist.hpp

Go to the documentation of this file.
00001 //************************************************************************************//
00002 // Module       : gttlist.hpp
00003 // Date         : 8/9/02 (DLR)
00004 // Copyright    : 2002-2006 Copyright University Corporation for Atmospheric
00005 //                Research
00006 // Description  : Encapsulates the methods and data associated with
00007 //                a simple templatelinked list of a template class.
00008 //                This class was taken
00009 //                largely from Algorithms and Data Structures in C++
00010 //                by Ameraal, although it has been recast as a template
00011 //                class.
00012 // Derived From : none.
00013 // Modifications:
00014 //************************************************************************************//
00015 #if !defined(GTTLIST_HPP)
00016 #define GTTLIST_HPP
00017 
00018 #include "gtypes.h"
00019 #include <iostream.h>
00020 #include <stdlib.h>
00021 #include "gtbuffer.hpp"
00022 #include "gtvector.hpp"
00023 
00024 
00025 #if !defined(FBuffList)
00026 #  define FBuffList GTTList<GDOUBLE,GBuffer>
00027 #endif
00028 
00029 #if !defined(IBuffList)
00030 #  define IBuffList GTTList<GINT ,GBuffer>
00031 #endif
00032 
00033 #if !defined(BTBuffList)
00034 #  define BTBuffList GTTList<BDYTYPE,GBuffer>
00035 #endif
00036 
00037 #if !defined(GVecList)
00038 #  define GVecList GTTList<GDOUBLE,GTVector>
00039 #endif
00040 
00041 
00042 #if !defined(TTLINKELEM)
00043 #define TTLINKELEM
00044 #define TTLinkElem LinkElemTT<TL,TT>
00045 template<class TL, template<class> class TT> class LinkElemTT {
00046 public:
00047 GINT       id;
00048 GBOOL      cf;
00049 TT<TL>     *member;
00050 TTLinkElem *next;
00051 TTLinkElem *prev;
00052 }; 
00053 #endif
00054 
00055 template<class TL, template<class> class TT> class GTTList
00056 {
00057 public:
00058                           GTTList(GBOOL renumber_on_delete=FALSE);
00059                           GTTList(GINT  nelems, GBOOL renumber_on_delete=FALSE);
00060                           GTTList(const GTTList &){};
00061                          ~GTTList();
00062 
00063          void             operator=(TL a);
00064          void             operator=(GTTList<TL,TT> &v);
00065          void             add();
00066          void             add(TT<TL> *c, GBOOL delete_here);
00067          void             add(TL *c, GINT  n, GBOOL delete_here);
00068          TT<TL>           *del(TTLinkElem *e);
00069          TT<TL>           *del(TT<TL> *c);
00070          TT<TL>           *del(GINT  id);
00071          void             start(TTLinkElem *p=NULL);
00072          GINT             size() ;
00073          TT<TL>           *member();
00074          TT<TL>           *member(GINT id);
00075          TTLinkElem       *next();
00076          TTLinkElem       *curr();
00077          TTLinkElem       *find(GINT  id);
00078          TTLinkElem       *find(TT<TL> *);
00079          TL               &operator()(const GINT iElem, const GINT i);
00080          TT<TL>           *&operator()(const GINT iElem);
00081          TT<TL>           *&operator[](const GINT iElem);
00082          GINT             dim(const GINT iElem);
00083          GBOOL            renumber();
00084          void             empty();
00085          friend ostream&  operator<<(ostream&, GTTList<GDOUBLE,GBuffer>&);
00086          friend ostream&  operator<<(ostream&, GTTList<GINT ,GBuffer>&);
00087          friend ostream&  operator<<(ostream&, GTTList<BDYTYPE,GBuffer>&);
00088          friend ostream&  operator<<(ostream&, GTTList<GDOUBLE  ,GTVector>&);
00089 #if 0
00090          friend ostream&  operator<<(ostream&, GTTList<TL,TT>&);
00091 #endif
00092 
00093 private:
00094 // Private methods:
00095 
00096 // Private data:
00097         GINT              nid;
00098         GINT              num;
00099         GBOOL             doRenumber;
00100         TTLinkElem        *pStart;
00101         TTLinkElem        *pCurr;
00102         TTLinkElem        *pEnd;
00103 
00104 };
00105 #  if defined(_LINUX) || defined(_AIX)
00106 template class GTTList<GDOUBLE,GBuffer>;
00107 template class GTTList<GINT ,GBuffer>;
00108 template class GTTList<BDYTYPE,GBuffer>;
00109 template class GTTList<GDOUBLE,GTVector>;
00110 ostream &operator <<(ostream&, GTTList<GDOUBLE,GBuffer>&);
00111 ostream &operator <<(ostream&, GTTList<GINT ,GBuffer>&);
00112 ostream &operator <<(ostream&, GTTList<BDYTYPE,GBuffer>&);
00113 ostream &operator <<(ostream&, GTTList<GDOUBLE,GTVector>&);
00114 # endif
00115 #  if 0
00116 GTTList<GDOUBLE,GBuffer>   __dec_SEFBList;
00117 GTTList<GINT ,GBuffer>   __dec_SEIList;
00118 GTTList<BDYTYPE,GBuffer> __dec_SEBTList;
00119 GTTList<GDOUBLE,GTVector>   __dec_GVecList;
00120 ostream &operator <<(ostream&, GTTList<GDOUBLE,GBuffer>&);
00121 ostream &operator <<(ostream&, GTTList<GINT ,GBuffer>&);
00122 ostream &operator <<(ostream&, GTTList<BDYTYPE,GBuffer>&);
00123 ostream &operator <<(ostream&, GTTList<GDOUBLE,GTVector>&);
00124 #  endif
00125 #endif
00126 

Generated on Wed Dec 21 16:00:48 2005 for Geophysics & Astrophysics Spectral Element Adaptive Refinement (GASpAR) 2D Code by  doxygen 1.4.4