xsil/table.hh

00001 /* -*- mode: c++; c-basic-offset: 4; -*- */
00002 #ifndef XSIL_TABLE_HH
00003 #define XSIL_TABLE_HH
00004 
00005 #include "xsil/xobj.hh"
00006 #include "xsil/stream.hh"
00007 #include <list>
00008 #include <string>
00009 
00010 namespace xsil {
00011     class column;
00012     class Xwriter;
00013 
00020 class table : public xobj {
00021 public:
00025     table(void);
00026 
00030     table(const char* Name, const char* Type=0);
00031 
00035     table(const table& x);
00036 
00040     virtual ~table(void);
00041 
00046     void Spew(Xwriter& xout) const;
00047 
00052     virtual table* Clone(void) const;
00053 
00057     bool empty(void) const;
00058 
00063     const char* getObjType(void) const;
00064 
00069     const char* getUnit(void) const;
00070 
00078     column* addColumn(const char* Name, const char* Type=0, 
00079                       const char* Unit=0);
00080 
00086     column* addColumn(const column& col);
00087 
00092     column& refColumn(const char* name);
00093 
00099     const column& refColumn(const char* name) const;
00100 
00105     Stream& refStream(void);
00106 
00111     const Stream& refStream(void) const;
00112 
00117     void setStream(const Stream& istr);
00118 
00123     void setUnit(const char* Unit);
00124 
00125 private:
00126     typedef std::list<column> ColumnList;
00127     typedef ColumnList::const_iterator const_column_iterator;
00128     typedef ColumnList::iterator       column_iterator;
00129 
00130 private:
00131     std::string mUnit;
00132     ColumnList mColumn;
00133     Stream mData;
00134 };
00135 
00136 //--------------------------------------  Stream reference functions.
00137 inline bool 
00138 xsil::table::empty(void) const {
00139     return mData.empty();
00140 }
00141 
00142 inline const char*
00143 xsil::table::getUnit(void) const {
00144     return mUnit.c_str();
00145 }
00146 
00147 //--------------------------------------  Stream reference functions.
00148 inline xsil::Stream& 
00149 xsil::table::refStream(void) {
00150     return mData;
00151 }
00152 
00153 inline const xsil::Stream& 
00154 xsil::table::refStream(void) const {
00155     return mData;
00156 }
00157 
00158 }
00159 
00160 #endif  //  XSIL_TABLE_HH

Generated on Sun Mar 8 19:20:49 2009 for dmt by  doxygen 1.5.4