Changeset 249 for XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/inetcdf4.cpp
- Timestamp:
- 07/06/11 13:55:03 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/src4/xmlio/netcdf/inetcdf4.cpp
r241 r249 20 20 namespace io { 21 21 22 23 // ------------------------------ Constructeurs ----------------------------- 24 22 25 CINetCDF4::CINetCDF4(const std::string & filename) 23 26 { … … 25 28 } 26 29 30 // ------------------------------- Destructeur ------------------------------ 31 27 32 CINetCDF4::~CINetCDF4(void) 28 33 { 29 34 CheckError(nc_close(this->ncidp)); 30 35 } 36 37 // --------------------- Vérification des erreurs NetCDF -------------------- 31 38 32 39 void CINetCDF4::CheckError(int _status) throw (CException) … … 39 46 } 40 47 } 48 49 // --------------------------- Accesseurs protégés -------------------------- 41 50 42 51 int CINetCDF4::getCurrentGroup(void) … … 107 116 } 108 117 118 bool CINetCDF4::varExist(const std::string & _varname) 119 { 120 int varid = 0; 121 int grpid = this->getCurrentGroup(); 122 return (nc_inq_varid (grpid, _varname.c_str(), &varid) == NC_NOERR); 123 } 124 125 // ------------------------------- Accesseurs ------------------------------- 126 109 127 const CINetCDF4::CNetCDF4Path & CINetCDF4::getCurrentPath(void) const 110 128 { … … 112 130 } 113 131 132 // ------------------------------- Mutateurs -------------------------------- 133 114 134 void CINetCDF4::setCurrentPath(const CNetCDF4Path & path) 115 135 { 116 136 this->path = path; 117 137 } 138 139 // ----------------- Obtention des informations de lecture ------------------ 118 140 119 141 void CINetCDF4::getReadDataInfos(const std::string & _varname, … … 159 181 } 160 182 183 // ------------------------- Lecture des données -------------------------- 184 185 template <> 186 void CINetCDF4::readData_(int _grpid, int _varid, 187 const std::vector<std::size_t> & _sstart, 188 const std::vector<std::size_t> & _scount, 189 float * _data) 190 { 191 CheckError(nc_get_vara_float(_grpid, _varid, &(_sstart[0]), &(_scount[0]), _data)); 192 } 193 194 template <> 195 void CINetCDF4::readData_(int _grpid, int _varid, 196 const std::vector<std::size_t> & _sstart, 197 const std::vector<std::size_t> & _scount, 198 int * _data) 199 { 200 CheckError(nc_get_vara_int(_grpid, _varid, &(_sstart[0]), &(_scount[0]), _data)); 201 } 202 203 template <> 204 void CINetCDF4::readData_(int _grpid, int _varid, 205 const std::vector<std::size_t> & _sstart, 206 const std::vector<std::size_t> & _scount, 207 double * _data) 208 { 209 CheckError(nc_get_vara_double(_grpid, _varid, &(_sstart[0]), &(_scount[0]), _data)); 210 } 211 212 // ------------------------- Lecture des attributs -------------------------- 161 213 void CINetCDF4::readAttribute 162 214 (const std::string & _attname, std::string & _value, const std::string * _varname) … … 166 218 _value.assign(&(chart[0]), chart.size()); 167 219 } 220 221 template <> 222 void CINetCDF4::readAttribute_ 223 (const std::string & _attname, double * _value, int _grpid, int _varid) 224 { 225 CheckError(nc_get_att_double(_grpid, _varid, _attname.c_str(), _value)); 226 } 227 228 template <> 229 void CINetCDF4::readAttribute_ 230 (const std::string & _attname, float * _value, int _grpid, int _varid) 231 { 232 CheckError(nc_get_att_float(_grpid, _varid, _attname.c_str(), _value)); 233 } 234 235 template <> 236 void CINetCDF4::readAttribute_ 237 (const std::string & _attname, int * _value, int _grpid, int _varid) 238 { 239 CheckError(nc_get_att_int(_grpid, _varid, _attname.c_str(), _value)); 240 } 241 242 template <> 243 void CINetCDF4::readAttribute_ 244 (const std::string & _attname, char * _value, int _grpid, int _varid) 245 { 246 CheckError(nc_get_att_text(_grpid, _varid, _attname.c_str(), _value)); 247 } 248 249 // ----------------- Accesseur de parcours (d'exploration) ------------------ 168 250 169 251 std::vector<std::string> CINetCDF4::getAttributes(const std::string * const _varname) … … 187 269 } 188 270 return (retvalue); 189 } 190 271 } 191 272 192 273 std::map<std::string, std::size_t> CINetCDF4::getDimensions(const std::string * const _varname) … … 322 403 } 323 404 324 template <>325 void CINetCDF4::readData_(int _grpid, int _varid,326 const std::vector<std::size_t> & _sstart,327 const std::vector<std::size_t> & _scount,328 float * _data)329 {330 CheckError(nc_get_vara_float(_grpid, _varid, &(_sstart[0]), &(_scount[0]), _data));331 }332 333 template <>334 void CINetCDF4::readData_(int _grpid, int _varid,335 const std::vector<std::size_t> & _sstart,336 const std::vector<std::size_t> & _scount,337 int * _data)338 {339 CheckError(nc_get_vara_int(_grpid, _varid, &(_sstart[0]), &(_scount[0]), _data));340 }341 342 template <>343 void CINetCDF4::readData_(int _grpid, int _varid,344 const std::vector<std::size_t> & _sstart,345 const std::vector<std::size_t> & _scount,346 double * _data)347 {348 CheckError(nc_get_vara_double(_grpid, _varid, &(_sstart[0]), &(_scount[0]), _data));349 }350 351 template <>352 void CINetCDF4::readAttribute_353 (const std::string & _attname, double * _value, int _grpid, int _varid)354 {355 CheckError(nc_get_att_double(_grpid, _varid, _attname.c_str(), _value));356 }357 358 template <>359 void CINetCDF4::readAttribute_360 (const std::string & _attname, float * _value, int _grpid, int _varid)361 {362 CheckError(nc_get_att_float(_grpid, _varid, _attname.c_str(), _value));363 }364 365 template <>366 void CINetCDF4::readAttribute_367 (const std::string & _attname, int * _value, int _grpid, int _varid)368 {369 CheckError(nc_get_att_int(_grpid, _varid, _attname.c_str(), _value));370 }371 372 template <>373 void CINetCDF4::readAttribute_374 (const std::string & _attname, char * _value, int _grpid, int _varid)375 {376 CheckError(nc_get_att_text(_grpid, _varid, _attname.c_str(), _value));377 }378 379 bool CINetCDF4::varExist(const std::string & _varname)380 {381 int varid = 0;382 int grpid = this->getCurrentGroup();383 return (nc_inq_varid (grpid, _varname.c_str(), &varid) == NC_NOERR);384 }385 386 405 } // namespace io 387 406 } // namespace xmlioserver
Note: See TracChangeset
for help on using the changeset viewer.