xsil/array.hh

00001 /* -*- mode: c++; c-basic-offset: 4; -*- */
00002 #ifndef XSIL_ARRAY_HH
00003 #define XSIL_ARRAY_HH
00004 
00005 #include "xsil/xobj.hh"
00006 #include "xsil/stream.hh"
00007 #include "xsil/dim.hh"
00008 #include <string>
00009 #include <vector>
00010 
00011 namespace xsil {
00012     class Xwriter;
00013 
00022 class array : public xobj {
00023 public:
00027     array(void);
00028 
00035     array(const char *Name, const char* Type=0, const char* Unit=0);
00036 
00040     ~array(void);
00045     void Spew(Xwriter& xout) const;
00046 
00051     array* Clone(void) const;
00052 
00057     const char* getObjType(void) const;
00058 
00063     const char* getUnit(void) const;
00064 
00069     int getNDim(void) const;
00070 
00075     int getTotLen(void) const;
00076 
00082     int getDim(int iDim) const;
00083   
00088     void getData(std::vector<double>& vf);
00089   
00094     void getData(std::vector<float>&  vf);
00095   
00100     void getData(std::vector<int>&    vf);
00101   
00106     void getData(std::vector<std::string>& vf);
00107 
00114     int addDim(const char* Name, int nDim);
00115 
00121     int addDim(const dim& Dim);
00122 
00127     void setUnit(const char* Unit);
00128 
00133     void setStream(const Stream& istr);
00134 
00139     void setRemote(const char* File);
00140 
00146     void FillData(int N, int* Data);
00147 
00153     void FillData(int N, float* Data);
00154 
00160     void FillData(int N, double* Data);
00161 
00167     void FillData(int N, std::string* Data);
00168 
00173     Stream& refStream(void);
00174 
00179     const Stream& refStream(void) const;
00180 
00181 private:
00182     std::string mUnit;
00183     std::vector<dim> mDim;
00184     Stream mData;
00185 };
00186 
00187 }
00188 
00189 //--------------------------------------  Stream reference functions.
00190 inline int 
00191 xsil::array::getNDim(void) const {
00192     return mDim.size();
00193 }
00194 
00195 inline int 
00196 xsil::array::getDim(int N) const {
00197     return mDim[N].getDim();
00198 }
00199 
00200 inline const char* 
00201 xsil::array::getUnit(void) const {
00202     return mUnit.c_str();
00203 }
00204 
00205 inline xsil::Stream& 
00206 xsil::array::refStream(void) {
00207     return mData;
00208 }
00209 
00210 inline const xsil::Stream& 
00211 xsil::array::refStream(void) const {
00212     return mData;
00213 }
00214 
00215 #endif  //  XSIL_ARRAY_HH

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