VAPoR  3.0.0
NetCDFCpp.h
Go to the documentation of this file.
1 #include <vector>
2 #include <map>
3 #include <iostream>
4 #include <netcdf.h>
5 #include <vapor/MyBase.h>
6 
7 #ifndef _NetCDFCpp_H_
8 #define _NetCDFCpp_H_
9 
10 namespace VAPoR {
11 
42 //
44 public:
45  NetCDFCpp();
46  virtual ~NetCDFCpp();
47 
53  //
54  virtual int Create(
55  string path, int cmode, size_t initialsz,
56  size_t &bufrsizehintp
57  );
58 
63  //
64  virtual int Open(string path, int mode);
65 
67  virtual int DefDim(string name, size_t len) const;
68 
70  virtual int DefVar(
71  string name, int xtype, vector <string> dimnames
72  );
73 
75  virtual int InqVarDims(
76  string name, vector <string> &dimnames, vector <size_t> &dims
77  ) const;
78 
80  virtual int InqDimlen(string name, size_t &len) const;
81 
82 
83 
84 
85  //
86  // PutAtt - Integer
87  //
88 
90  virtual int PutAtt(
91  string varname, string attname, int value
92  ) const;
93  virtual int PutAtt(
94  string varname, string attname, vector <int> values
95  ) const;
96  virtual int PutAtt(
97  string varname, string attname, const int values[], size_t n
98  ) const;
99 
100  //
101  // GetAtt - Integer
102  //
103 
105  virtual int GetAtt(
106  string varname, string attname, int &value
107  ) const;
108  virtual int GetAtt(
109  string varname, string attname, vector <int> &values
110  ) const;
111  virtual int GetAtt(
112  string varname, string attname, int values[], size_t n
113  ) const;
114 
115  //
116  // PutAtt - size_t
117  //
118  virtual int PutAtt(
119  string varname, string attname, size_t value
120  ) const;
121  virtual int PutAtt(
122  string varname, string attname, vector <size_t> values
123  ) const;
124  virtual int PutAtt(
125  string varname, string attname,
126  const size_t values[], size_t n
127  ) const;
128 
129  //
130  // GetAtt - size_t
131  //
132  virtual int GetAtt(
133  string varname, string attname, size_t &value
134  ) const;
135  virtual int GetAtt(
136  string varname, string attname, vector <size_t> &values
137  ) const;
138  virtual int GetAtt(
139  string varname, string attname, size_t values[], size_t n
140  ) const;
141 
142  //
143  // PutAtt - Float
144  //
145  virtual int PutAtt(
146  string varname, string attname, float value
147  ) const;
148  virtual int PutAtt(
149  string varname, string attname, vector <float> values
150  ) const;
151  virtual int PutAtt(
152  string varname, string attname, const float values[], size_t n
153  ) const;
154 
155  //
156  // GetAtt - Float
157  //
158  virtual int GetAtt(
159  string varname, string attname, float &value
160  ) const;
161  virtual int GetAtt(
162  string varname, string attname, vector <float> &values
163  ) const;
164  virtual int GetAtt(
165  string varname, string attname, float values[], size_t n
166  ) const;
167 
168  //
169  // PutAtt - Double
170  //
171  virtual int PutAtt(
172  string varname, string attname, double value
173  ) const;
174  virtual int PutAtt(
175  string varname, string attname, vector <double> values
176  ) const;
177  virtual int PutAtt(
178  string varname, string attname, const double values[], size_t n
179  ) const;
180 
181  //
182  // GetAtt - Double
183  //
184  virtual int GetAtt(
185  string varname, string attname, double &value
186  ) const;
187  virtual int GetAtt(
188  string varname, string attname, vector <double> &values
189  ) const;
190  virtual int GetAtt(
191  string varname, string attname, double values[], size_t n
192  ) const;
193 
194  //
195  // PutAtt - String
196  //
197  virtual int PutAtt(
198  string varname, string attname, string value
199  ) const;
200  virtual int PutAtt(
201  string varname, string attname, vector <string> values
202  ) const;
203  virtual int PutAtt(
204  string varname, string attname, const char values[], size_t n
205  ) const;
206 
207  //
208  // GetAtt - String
209  //
210  virtual int GetAtt(
211  string varname, string attname, string &value
212  ) const;
213  virtual int GetAtt(
214  string varname, string attname, char values[], size_t n
215  ) const;
216 
224  //
225  virtual int GetAtt(
226  string varname, string attname, vector <string> &values
227  ) const;
228 
230  virtual int InqVarid(string varname, int &varid ) const;
231 
233  virtual int InqAtt(
234  string varname, string attname, nc_type &xtype, size_t &len
235  ) const;
236 
238  //
239  virtual int InqVartype(string varname, nc_type &xtype) const;
240 
242  virtual int SetFill(int fillmode, int &old_modep);
243 
245  virtual int EndDef() const;
246 
248  virtual int Close();
249 
251  virtual int PutVara(
252  string varname,
253  vector <size_t> start, vector <size_t> count, const void *data
254  );
255  virtual int PutVara(
256  string varname,
257  vector <size_t> start, vector <size_t> count, const float *data
258  );
259  virtual int PutVara(
260  string varname,
261  vector <size_t> start, vector <size_t> count, const double *data
262  );
263  virtual int PutVara(
264  string varname,
265  vector <size_t> start, vector <size_t> count, const int *data
266  );
267  virtual int PutVara(
268  string varname,
269  vector <size_t> start, vector <size_t> count, const long *data
270  );
271  virtual int PutVara(
272  string varname,
273  vector <size_t> start, vector <size_t> count, const unsigned char *data
274  );
275 
277  virtual int PutVar(string varname, const void *data);
278  virtual int PutVar(string varname, const float *data);
279  virtual int PutVar(string varname, const double *data);
280  virtual int PutVar(string varname, const int *data);
281  virtual int PutVar(string varname, const long *data);
282  virtual int PutVar(string varname, const unsigned char *data);
283 
285  virtual int GetVara(
286  string varname,
287  vector <size_t> start, vector <size_t> count, void *data
288  );
289  virtual int GetVara(
290  string varname,
291  vector <size_t> start, vector <size_t> count, float *data
292  );
293  virtual int GetVara(
294  string varname,
295  vector <size_t> start, vector <size_t> count, double *data
296  );
297  virtual int GetVara(
298  string varname,
299  vector <size_t> start, vector <size_t> count, int *data
300  );
301  virtual int GetVara(
302  string varname,
303  vector <size_t> start, vector <size_t> count, long *data
304  );
305  virtual int GetVara(
306  string varname,
307  vector <size_t> start, vector <size_t> count, unsigned char *data
308  );
309 
311  virtual int GetVar(string varname, void *data);
312  virtual int GetVar(string varname, float *data);
313  virtual int GetVar(string varname, double *data);
314  virtual int GetVar(string varname, int *data);
315  virtual int GetVar(string varname, long *data);
316  virtual int GetVar(string varname, unsigned char *data);
317 
318 
321  static size_t SizeOf(int nctype);
322 
328  virtual bool ValidFile(string path);
329 
333  //
334  virtual bool InqDimDefined(string dimname);
335 
339  //
340  virtual bool InqAttDefined(string varname, string attname);
341 
346  //
347  virtual int InqVarnames(vector <string> &varnames) const;
348 
349 private:
350 
351  int _ncid;
352  string _path;
353 
354  int _PutVara(
355  string varname, vector <size_t> start, vector <size_t> count,
356  const void *data, string func
357  );
358  int _PutVar( string varname, const void *data, string func);
359 
360  int _GetVara(
361  string varname, vector <size_t> start, vector <size_t> count,
362  void *data, string func
363  );
364  int _GetVar( string varname, void *data, string func);
365 
366 };
367 
368 }
369 
370 #endif // _NetCDFCpp_H_
VetsUtil base class.
Definition: MyBase.h:68
Defines simple C++ wrapper for NetCDF.
Definition: NetCDFCpp.h:43
#define WASP_API
Definition: DC.h:10