00001
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
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