NetCDF  4.8.1
dvarget.c
Go to the documentation of this file.
1 
9 #include "ncdispatch.h"
10 
15 struct GETodometer {
16  int rank;
17  size_t index[NC_MAX_VAR_DIMS];
18  size_t start[NC_MAX_VAR_DIMS];
19  size_t edges[NC_MAX_VAR_DIMS];
20  ptrdiff_t stride[NC_MAX_VAR_DIMS];
21  size_t stop[NC_MAX_VAR_DIMS];
22 };
23 
24 
35 static void
36 odom_init(struct GETodometer* odom, int rank, const size_t* start,
37  const size_t* edges, const ptrdiff_t* stride)
38 {
39  int i;
40  memset(odom,0,sizeof(struct GETodometer));
41  odom->rank = rank;
42  assert(odom->rank <= NC_MAX_VAR_DIMS);
43  for(i=0;i<odom->rank;i++) {
44  odom->start[i] = (start != NULL ? start[i] : 0);
45  odom->edges[i] = (edges != NULL ? edges[i] : 1);
46  odom->stride[i] = (stride != NULL ? stride[i] : 1);
47  odom->stop[i] = odom->start[i] + (odom->edges[i]*((size_t)odom->stride[i]));
48  odom->index[i] = odom->start[i];
49  }
50 }
51 
59 static int
60 odom_more(struct GETodometer* odom)
61 {
62  return (odom->index[0] < odom->stop[0]);
63 }
64 
72 static int
73 odom_next(struct GETodometer* odom)
74 {
75  int i;
76  if(odom->rank == 0) return 0;
77  for(i=odom->rank-1;i>=0;i--) {
78  odom->index[i] += (size_t)odom->stride[i];
79  if(odom->index[i] < odom->stop[i]) break;
80  if(i == 0) return 0; /* leave the 0th entry if it overflows*/
81  odom->index[i] = odom->start[i]; /* reset this position*/
82  }
83  return 1;
84 }
85 
90 int
91 NC_get_vara(int ncid, int varid,
92  const size_t *start, const size_t *edges,
93  void *value, nc_type memtype)
94 {
95  NC* ncp;
96  size_t *my_count = (size_t *)edges;
97  int stat = NC_check_id(ncid, &ncp);
98  if(stat != NC_NOERR) return stat;
99 
100  if(start == NULL || edges == NULL) {
101  stat = NC_check_nulls(ncid, varid, start, &my_count, NULL);
102  if(stat != NC_NOERR) return stat;
103  }
104  stat = ncp->dispatch->get_vara(ncid,varid,start,my_count,value,memtype);
105  if(edges == NULL) free(my_count);
106  return stat;
107 }
108 
135 static int
136 NC_get_var(int ncid, int varid, void *value, nc_type memtype)
137 {
138  return NC_get_vara(ncid, varid, NC_coord_zero, NULL, value, memtype);
139 }
140 
145 int
146 NCDEFAULT_get_vars(int ncid, int varid, const size_t * start,
147  const size_t * edges, const ptrdiff_t * stride,
148  void *value0, nc_type memtype)
149 {
150  /* Rebuilt get_vars code to simplify and avoid use of get_varm */
151 
152  int status = NC_NOERR;
153  int i,simplestride,isrecvar;
154  int rank;
155  struct GETodometer odom;
156  nc_type vartype = NC_NAT;
157  NC* ncp;
158  int memtypelen;
159  size_t vartypelen;
160  size_t nels;
161  char* value = (char*)value0;
162  size_t numrecs;
163  size_t varshape[NC_MAX_VAR_DIMS];
164  size_t mystart[NC_MAX_VAR_DIMS];
165  size_t myedges[NC_MAX_VAR_DIMS];
166  ptrdiff_t mystride[NC_MAX_VAR_DIMS];
167  char *memptr = NULL;
168 
169  status = NC_check_id (ncid, &ncp);
170  if(status != NC_NOERR) return status;
171 
172  status = nc_inq_vartype(ncid, varid, &vartype);
173  if(status != NC_NOERR) return status;
174 
175  if(memtype == NC_NAT) memtype = vartype;
176 
177  /* compute the variable type size */
178  status = nc_inq_type(ncid,vartype,NULL,&vartypelen);
179  if(status != NC_NOERR) return status;
180 
181  if(memtype > NC_MAX_ATOMIC_TYPE)
182  memtypelen = (int)vartypelen;
183  else
184  memtypelen = nctypelen(memtype);
185 
186  /* Check gross internal/external type compatibility */
187  if(vartype != memtype) {
188  /* If !atomic, the two types must be the same */
189  if(vartype > NC_MAX_ATOMIC_TYPE
190  || memtype > NC_MAX_ATOMIC_TYPE)
191  return NC_EBADTYPE;
192  /* ok, the types differ but both are atomic */
193  if(memtype == NC_CHAR || vartype == NC_CHAR)
194  return NC_ECHAR;
195  }
196 
197  /* Get the variable rank */
198  status = nc_inq_varndims(ncid, varid, &rank);
199  if(status != NC_NOERR) return status;
200 
201  /* Start array is always required for non-scalar vars. */
202  if(rank > 0 && start == NULL)
203  return NC_EINVALCOORDS;
204 
205  /* Get variable dimension sizes */
206  isrecvar = NC_is_recvar(ncid,varid,&numrecs);
207  NC_getshape(ncid,varid,rank,varshape);
208 
209  /* Optimize out using various checks */
210  if (rank == 0) {
211  /*
212  * The variable is a scalar; consequently,
213  * there s only one thing to get and only one place to put it.
214  * (Why was I called?)
215  */
216  size_t edge1[1] = {1};
217  return NC_get_vara(ncid, varid, start, edge1, value, memtype);
218  }
219 
220  /* Do various checks and fixups on start/edges/stride */
221  simplestride = 1; /* assume so */
222  nels = 1;
223  for(i=0;i<rank;i++) {
224  size_t dimlen;
225  mystart[i] = (start == NULL ? 0 : start[i]);
226  /* illegal value checks */
227  dimlen = (i == 0 && isrecvar ? numrecs : varshape[i]);
228  /* mystart is unsigned, never < 0 */
229  if (mystart[i] > dimlen) return NC_EINVALCOORDS;
230 
231  if(edges == NULL) {
232  if(i == 0 && isrecvar)
233  myedges[i] = numrecs - start[i];
234  else
235  myedges[i] = varshape[i] - mystart[i];
236  } else
237  myedges[i] = edges[i];
238 
239  if (mystart[i] == dimlen && myedges[i] > 0) return NC_EINVALCOORDS;
240 
241  /* myedges is unsigned, never < 0 */
242  if(mystart[i] + myedges[i] > dimlen)
243  return NC_EEDGE;
244  mystride[i] = (stride == NULL ? 1 : stride[i]);
245  if(mystride[i] <= 0
246  /* cast needed for braindead systems with signed size_t */
247  || ((unsigned long) mystride[i] >= X_INT_MAX))
248  return NC_ESTRIDE;
249  if(mystride[i] != 1) simplestride = 0;
250  if(myedges[i] == 0)
251  nels = 0;
252  }
253  if(nels == 0)
254  return NC_NOERR; /* cannot read anything */
255  if(simplestride) {
256  return NC_get_vara(ncid, varid, mystart, myedges, value, memtype);
257  }
258 
259  /* memptr indicates where to store the next value */
260  memptr = value;
261 
262  odom_init(&odom,rank,mystart,myedges,mystride);
263 
264  /* walk the odometer to extract values */
265  while(odom_more(&odom)) {
266  int localstatus = NC_NOERR;
267  /* Read a single value */
268  localstatus = NC_get_vara(ncid,varid,odom.index,NC_coord_one,memptr,memtype);
269  /* So it turns out that when get_varm is used, all errors are
270  delayed and ERANGE will be overwritten by more serious errors.
271  */
272  if(localstatus != NC_NOERR) {
273  if(status == NC_NOERR || localstatus != NC_ERANGE)
274  status = localstatus;
275  }
276  memptr += memtypelen;
277  odom_next(&odom);
278  }
279  return status;
280 }
281 
285 static int
286 NC_get_var1(int ncid, int varid, const size_t *coord, void* value,
287  nc_type memtype)
288 {
289  return NC_get_vara(ncid, varid, coord, NC_coord_one, value, memtype);
290 }
291 
295 int
296 NCDEFAULT_get_varm(int ncid, int varid, const size_t *start,
297  const size_t *edges, const ptrdiff_t *stride,
298  const ptrdiff_t *imapp, void *value0, nc_type memtype)
299 {
300  int status = NC_NOERR;
301  nc_type vartype = NC_NAT;
302  int varndims,maxidim;
303  NC* ncp;
304  int memtypelen;
305  char* value = (char*)value0;
306 
307  status = NC_check_id (ncid, &ncp);
308  if(status != NC_NOERR) return status;
309 
310 /*
311  if(NC_indef(ncp)) return NC_EINDEFINE;
312 */
313 
314  status = nc_inq_vartype(ncid, varid, &vartype);
315  if(status != NC_NOERR) return status;
316  /* Check that this is an atomic type */
317  if(vartype > NC_MAX_ATOMIC_TYPE)
318  return NC_EMAPTYPE;
319 
320  status = nc_inq_varndims(ncid, varid, &varndims);
321  if(status != NC_NOERR) return status;
322 
323  if(memtype == NC_NAT) {
324  memtype = vartype;
325  }
326 
327  if(memtype == NC_CHAR && vartype != NC_CHAR)
328  return NC_ECHAR;
329  else if(memtype != NC_CHAR && vartype == NC_CHAR)
330  return NC_ECHAR;
331 
332  memtypelen = nctypelen(memtype);
333 
334  maxidim = (int) varndims - 1;
335 
336  if (maxidim < 0)
337  {
338  /*
339  * The variable is a scalar; consequently,
340  * there s only one thing to get and only one place to put it.
341  * (Why was I called?)
342  */
343  size_t edge1[1] = {1};
344  return NC_get_vara(ncid, varid, start, edge1, value, memtype);
345  }
346 
347  /*
348  * else
349  * The variable is an array.
350  */
351  {
352  int idim;
353  size_t *mystart = NULL;
354  size_t *myedges;
355  size_t *iocount; /* count vector */
356  size_t *stop; /* stop indexes */
357  size_t *length; /* edge lengths in bytes */
358  ptrdiff_t *mystride;
359  ptrdiff_t *mymap;
360  size_t varshape[NC_MAX_VAR_DIMS];
361  int isrecvar;
362  size_t numrecs;
363 
364  /* Compute some dimension related values */
365  isrecvar = NC_is_recvar(ncid,varid,&numrecs);
366  NC_getshape(ncid,varid,varndims,varshape);
367 
368  /*
369  * Verify stride argument; also see if stride is all ones
370  */
371  if(stride != NULL) {
372  int stride1 = 1;
373  for (idim = 0; idim <= maxidim; ++idim)
374  {
375  if (stride[idim] == 0
376  /* cast needed for braindead systems with signed size_t */
377  || ((unsigned long) stride[idim] >= X_INT_MAX))
378  {
379  return NC_ESTRIDE;
380  }
381  if(stride[idim] != 1) stride1 = 0;
382  }
383  /* If stride1 is true, and there is no imap
384  then call get_vara directly.
385  */
386  if(stride1 && imapp == NULL) {
387  return NC_get_vara(ncid, varid, start, edges, value, memtype);
388  }
389  }
390 
391  /* assert(sizeof(ptrdiff_t) >= sizeof(size_t)); */
392  /* Allocate space for mystart,mystride,mymap etc.all at once */
393  mystart = (size_t *)calloc((size_t)(varndims * 7), sizeof(ptrdiff_t));
394  if(mystart == NULL) return NC_ENOMEM;
395  myedges = mystart + varndims;
396  iocount = myedges + varndims;
397  stop = iocount + varndims;
398  length = stop + varndims;
399  mystride = (ptrdiff_t *)(length + varndims);
400  mymap = mystride + varndims;
401 
402  /*
403  * Check start, edges
404  */
405  for (idim = maxidim; idim >= 0; --idim)
406  {
407  size_t dimlen =
408  idim == 0 && isrecvar
409  ? numrecs
410  : varshape[idim];
411 
412  mystart[idim] = start != NULL
413  ? start[idim]
414  : 0;
415 
416  if (mystart[idim] > dimlen)
417  {
418  status = NC_EINVALCOORDS;
419  goto done;
420  }
421 
422 #ifdef COMPLEX
423  myedges[idim] = edges != NULL
424  ? edges[idim]
425  : idim == 0 && isrecvar
426  ? numrecs - mystart[idim]
427  : varshape[idim] - mystart[idim];
428 #else
429  if(edges != NULL)
430  myedges[idim] = edges[idim];
431  else if (idim == 0 && isrecvar)
432  myedges[idim] = numrecs - mystart[idim];
433  else
434  myedges[idim] = varshape[idim] - mystart[idim];
435 #endif
436 
437  if (mystart[idim] == dimlen && myedges[idim] > 0)
438  {
439  status = NC_EINVALCOORDS;
440  goto done;
441  }
442 
443  if (mystart[idim] + myedges[idim] > dimlen)
444  {
445  status = NC_EEDGE;
446  goto done;
447  }
448  }
449 
450 
451  /*
452  * Initialize I/O parameters.
453  */
454  for (idim = maxidim; idim >= 0; --idim)
455  {
456  if (edges != NULL && edges[idim] == 0)
457  {
458  status = NC_NOERR; /* read/write no data */
459  goto done;
460  }
461 
462  mystride[idim] = stride != NULL
463  ? stride[idim]
464  : 1;
465 
466  /* Remember: in netCDF-2 imapp is byte oriented, not index oriented
467  * Starting from netCDF-3, imapp is index oriented */
468 #ifdef COMPLEX
469  mymap[idim] = (imapp != NULL
470  ? imapp[idim]
471  : (idim == maxidim ? 1
472  : mymap[idim + 1] * (ptrdiff_t) myedges[idim + 1]));
473 #else
474  if(imapp != NULL)
475  mymap[idim] = imapp[idim];
476  else if (idim == maxidim)
477  mymap[idim] = 1;
478  else
479  mymap[idim] =
480  mymap[idim + 1] * (ptrdiff_t) myedges[idim + 1];
481 #endif
482  iocount[idim] = 1;
483  length[idim] = ((size_t)mymap[idim]) * myedges[idim];
484  stop[idim] = (mystart[idim] + myedges[idim] * (size_t)mystride[idim]);
485  }
486 
487  /* Lower body */
488  /*
489  * As an optimization, adjust I/O parameters when the fastest
490  * dimension has unity stride both externally and internally.
491  * In this case, the user could have called a simpler routine
492  * (i.e. ncvar$1()
493  */
494  if (mystride[maxidim] == 1
495  && mymap[maxidim] == 1)
496  {
497  iocount[maxidim] = myedges[maxidim];
498  mystride[maxidim] = (ptrdiff_t) myedges[maxidim];
499  mymap[maxidim] = (ptrdiff_t) length[maxidim];
500  }
501 
502  /*
503  * Perform I/O. Exit when done.
504  */
505  for (;;)
506  {
507  /* TODO: */
508  int lstatus = NC_get_vara(ncid, varid, mystart, iocount,
509  value, memtype);
510  if (lstatus != NC_NOERR) {
511  if(status == NC_NOERR || lstatus != NC_ERANGE)
512  status = lstatus;
513  }
514  /*
515  * The following code permutes through the variable s
516  * external start-index space and it s internal address
517  * space. At the UPC, this algorithm is commonly
518  * called "odometer code".
519  */
520  idim = maxidim;
521  carry:
522  value += (((int)mymap[idim]) * memtypelen);
523  mystart[idim] += (size_t)mystride[idim];
524  if (mystart[idim] == stop[idim])
525  {
526  size_t l = (length[idim] * (size_t)memtypelen);
527  value -= l;
528  mystart[idim] = start[idim];
529  if (--idim < 0)
530  break; /* normal return */
531  goto carry;
532  }
533  } /* I/O loop */
534  done:
535  free(mystart);
536  } /* variable is array */
537  return status;
538 }
539 
572 static int
573 NC_get_vars(int ncid, int varid, const size_t *start,
574  const size_t *edges, const ptrdiff_t *stride, void *value,
575  nc_type memtype)
576 {
577  NC* ncp;
578  size_t *my_count = (size_t *)edges;
579  ptrdiff_t *my_stride = (ptrdiff_t *)stride;
580  int stat;
581 
582  stat = NC_check_id(ncid, &ncp);
583  if(stat != NC_NOERR) return stat;
584 
585  /* Handle any NULL parameters. */
586  if(start == NULL || edges == NULL || stride == NULL) {
587  stat = NC_check_nulls(ncid, varid, start, &my_count, &my_stride);
588  if(stat != NC_NOERR) return stat;
589  }
590 
591  stat = ncp->dispatch->get_vars(ncid,varid,start,my_count,my_stride,
592  value,memtype);
593  if(edges == NULL) free(my_count);
594  if(stride == NULL) free(my_stride);
595  return stat;
596 }
597 
634 static int
635 NC_get_varm(int ncid, int varid, const size_t *start,
636  const size_t *edges, const ptrdiff_t *stride, const ptrdiff_t* map,
637  void *value, nc_type memtype)
638 {
639  NC* ncp;
640  size_t *my_count = (size_t *)edges;
641  ptrdiff_t *my_stride = (ptrdiff_t *)stride;
642  int stat;
643 
644  stat = NC_check_id(ncid, &ncp);
645  if(stat != NC_NOERR) return stat;
646 
647  /* Handle any NULL parameters. */
648  if(start == NULL || edges == NULL || stride == NULL) {
649  stat = NC_check_nulls(ncid, varid, start, &my_count, &my_stride);
650  if(stat != NC_NOERR) return stat;
651  }
652 
653  stat = ncp->dispatch->get_varm(ncid, varid, start, my_count, my_stride,
654  map, value, memtype);
655  if(edges == NULL) free(my_count);
656  if(stride == NULL) free(my_stride);
657  return stat;
658 }
659  /* All these functions are part of this named group... */
664 
740 int
741 nc_get_vara(int ncid, int varid, const size_t *startp,
742  const size_t *countp, void *ip)
743 {
744  NC* ncp;
745  nc_type xtype = NC_NAT;
746  int stat = NC_check_id(ncid, &ncp);
747  if(stat != NC_NOERR) return stat;
748  stat = nc_inq_vartype(ncid, varid, &xtype);
749  if(stat != NC_NOERR) return stat;
750  return NC_get_vara(ncid, varid, startp, countp, ip, xtype);
751 }
752 
753 int
754 nc_get_vara_text(int ncid, int varid, const size_t *startp,
755  const size_t *countp, char *ip)
756 {
757  return NC_get_vara(ncid, varid, startp, countp, (void *)ip, NC_CHAR);
758 }
759 
760 int
761 nc_get_vara_schar(int ncid, int varid, const size_t *startp,
762  const size_t *countp, signed char *ip)
763 {
764  return NC_get_vara(ncid, varid, startp, countp, (void *)ip, NC_BYTE);
765 }
766 
767 int
768 nc_get_vara_uchar(int ncid, int varid, const size_t *startp,
769  const size_t *countp, unsigned char *ip)
770 {
771  return NC_get_vara(ncid, varid, startp, countp, (void *)ip, T_uchar);
772 }
773 
774 int
775 nc_get_vara_short(int ncid, int varid, const size_t *startp,
776  const size_t *countp, short *ip)
777 {
778  return NC_get_vara(ncid, varid, startp, countp, (void *)ip, NC_SHORT);
779 }
780 
781 int
782 nc_get_vara_int(int ncid, int varid,
783  const size_t *startp, const size_t *countp, int *ip)
784 {
785  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,NC_INT);
786 }
787 
788 int
789 nc_get_vara_long(int ncid, int varid,
790  const size_t *startp, const size_t *countp, long *ip)
791 {
792  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,T_long);
793 }
794 
795 int
796 nc_get_vara_float(int ncid, int varid,
797  const size_t *startp, const size_t *countp, float *ip)
798 {
799  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,T_float);
800 }
801 
802 int
803 nc_get_vara_double(int ncid, int varid, const size_t *startp,
804  const size_t *countp, double *ip)
805 {
806  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,T_double);
807 }
808 
809 int
810 nc_get_vara_ubyte(int ncid, int varid,
811  const size_t *startp, const size_t *countp, unsigned char *ip)
812 {
813  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,T_ubyte);
814 }
815 
816 int
817 nc_get_vara_ushort(int ncid, int varid,
818  const size_t *startp, const size_t *countp, unsigned short *ip)
819 {
820  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,T_ushort);
821 }
822 
823 int
824 nc_get_vara_uint(int ncid, int varid,
825  const size_t *startp, const size_t *countp, unsigned int *ip)
826 {
827  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,T_uint);
828 }
829 
830 int
831 nc_get_vara_longlong(int ncid, int varid,
832  const size_t *startp, const size_t *countp, long long *ip)
833 {
834  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,T_longlong);
835 }
836 
837 int
838 nc_get_vara_ulonglong(int ncid, int varid, const size_t *startp,
839  const size_t *countp, unsigned long long *ip)
840 {
841  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,NC_UINT64);
842 }
843 
844 int
845 nc_get_vara_string(int ncid, int varid, const size_t *startp,
846  const size_t *countp, char* *ip)
847 {
848  return NC_get_vara(ncid,varid,startp,countp, (void *)ip,NC_STRING);
849 }
850 
888 int
889 nc_get_var1(int ncid, int varid, const size_t *indexp, void *ip)
890 {
891  return NC_get_var1(ncid, varid, indexp, ip, NC_NAT);
892 }
893 
894 int
895 nc_get_var1_text(int ncid, int varid, const size_t *indexp, char *ip)
896 {
897  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_CHAR);
898 }
899 
900 int
901 nc_get_var1_schar(int ncid, int varid, const size_t *indexp, signed char *ip)
902 {
903  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_BYTE);
904 }
905 
906 int
907 nc_get_var1_uchar(int ncid, int varid, const size_t *indexp, unsigned char *ip)
908 {
909  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_UBYTE);
910 }
911 
912 int
913 nc_get_var1_short(int ncid, int varid, const size_t *indexp, short *ip)
914 {
915  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_SHORT);
916 }
917 
918 int
919 nc_get_var1_int(int ncid, int varid, const size_t *indexp, int *ip)
920 {
921  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_INT);
922 }
923 
924 int
925 nc_get_var1_long(int ncid, int varid, const size_t *indexp,
926  long *ip)
927 {
928  return NC_get_var1(ncid, varid, indexp, (void *)ip, longtype);
929 }
930 
931 int
932 nc_get_var1_float(int ncid, int varid, const size_t *indexp,
933  float *ip)
934 {
935  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_FLOAT);
936 }
937 
938 int
939 nc_get_var1_double(int ncid, int varid, const size_t *indexp,
940  double *ip)
941 {
942  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_DOUBLE);
943 }
944 
945 int
946 nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp,
947  unsigned char *ip)
948 {
949  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_UBYTE);
950 }
951 
952 int
953 nc_get_var1_ushort(int ncid, int varid, const size_t *indexp,
954  unsigned short *ip)
955 {
956  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_USHORT);
957 }
958 
959 int
960 nc_get_var1_uint(int ncid, int varid, const size_t *indexp,
961  unsigned int *ip)
962 {
963  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_UINT);
964 }
965 
966 int
967 nc_get_var1_longlong(int ncid, int varid, const size_t *indexp,
968  long long *ip)
969 {
970  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_INT64);
971 }
972 
973 int
974 nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp,
975  unsigned long long *ip)
976 {
977  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_UINT64);
978 }
979 
980 int
981 nc_get_var1_string(int ncid, int varid, const size_t *indexp, char* *ip)
982 {
983  return NC_get_var1(ncid, varid, indexp, (void *)ip, NC_STRING);
984 }
985 
1032 int
1033 nc_get_var(int ncid, int varid, void *ip)
1034 {
1035  return NC_get_var(ncid, varid, ip, NC_NAT);
1036 }
1037 
1038 int
1039 nc_get_var_text(int ncid, int varid, char *ip)
1040 {
1041  return NC_get_var(ncid, varid, (void *)ip, NC_CHAR);
1042 }
1043 
1044 int
1045 nc_get_var_schar(int ncid, int varid, signed char *ip)
1046 {
1047  return NC_get_var(ncid, varid, (void *)ip, NC_BYTE);
1048 }
1049 
1050 int
1051 nc_get_var_uchar(int ncid, int varid, unsigned char *ip)
1052 {
1053  return NC_get_var(ncid,varid, (void *)ip, NC_UBYTE);
1054 }
1055 
1056 int
1057 nc_get_var_short(int ncid, int varid, short *ip)
1058 {
1059  return NC_get_var(ncid, varid, (void *)ip, NC_SHORT);
1060 }
1061 
1062 int
1063 nc_get_var_int(int ncid, int varid, int *ip)
1064 {
1065  return NC_get_var(ncid,varid, (void *)ip, NC_INT);
1066 }
1067 
1068 int
1069 nc_get_var_long(int ncid, int varid, long *ip)
1070 {
1071  return NC_get_var(ncid,varid, (void *)ip, longtype);
1072 }
1073 
1074 int
1075 nc_get_var_float(int ncid, int varid, float *ip)
1076 {
1077  return NC_get_var(ncid,varid, (void *)ip, NC_FLOAT);
1078 }
1079 
1080 int
1081 nc_get_var_double(int ncid, int varid, double *ip)
1082 {
1083  return NC_get_var(ncid,varid, (void *)ip, NC_DOUBLE);
1084 }
1085 
1086 int
1087 nc_get_var_ubyte(int ncid, int varid, unsigned char *ip)
1088 {
1089  return NC_get_var(ncid,varid, (void *)ip, NC_UBYTE);
1090 }
1091 
1092 int
1093 nc_get_var_ushort(int ncid, int varid, unsigned short *ip)
1094 {
1095  return NC_get_var(ncid,varid, (void *)ip, NC_USHORT);
1096 }
1097 
1098 int
1099 nc_get_var_uint(int ncid, int varid, unsigned int *ip)
1100 {
1101  return NC_get_var(ncid,varid, (void *)ip, NC_UINT);
1102 }
1103 
1104 int
1105 nc_get_var_longlong(int ncid, int varid, long long *ip)
1106 {
1107  return NC_get_var(ncid,varid, (void *)ip, NC_INT64);
1108 }
1109 
1110 int
1111 nc_get_var_ulonglong(int ncid, int varid, unsigned long long *ip)
1112 {
1113  return NC_get_var(ncid,varid, (void *)ip,NC_UINT64);
1114 }
1115 
1116 int
1117 nc_get_var_string(int ncid, int varid, char* *ip)
1118 {
1119  return NC_get_var(ncid,varid, (void *)ip,NC_STRING);
1120 }
1164 int
1165 nc_get_vars(int ncid, int varid, const size_t * startp,
1166  const size_t * countp, const ptrdiff_t * stridep,
1167  void *ip)
1168 {
1169  return NC_get_vars(ncid, varid, startp, countp, stridep,
1170  ip, NC_NAT);
1171 }
1172 
1173 int
1174 nc_get_vars_text(int ncid, int varid, const size_t *startp,
1175  const size_t *countp, const ptrdiff_t * stridep,
1176  char *ip)
1177 {
1178  return NC_get_vars(ncid,varid,startp, countp, stridep,
1179  (void *)ip, NC_CHAR);
1180 }
1181 
1182 int
1183 nc_get_vars_schar(int ncid, int varid, const size_t *startp,
1184  const size_t *countp, const ptrdiff_t * stridep,
1185  signed char *ip)
1186 {
1187  return NC_get_vars(ncid,varid,startp, countp, stridep,
1188  (void *)ip, NC_BYTE);
1189 }
1190 
1191 int
1192 nc_get_vars_uchar(int ncid, int varid, const size_t *startp,
1193  const size_t *countp, const ptrdiff_t * stridep,
1194  unsigned char *ip)
1195 {
1196  return NC_get_vars(ncid,varid,startp, countp, stridep,
1197  (void *)ip, T_uchar);
1198 }
1199 
1200 int
1201 nc_get_vars_short(int ncid, int varid, const size_t *startp,
1202  const size_t *countp, const ptrdiff_t *stridep,
1203  short *ip)
1204 {
1205  return NC_get_vars(ncid,varid,startp, countp, stridep,
1206  (void *)ip, NC_SHORT);
1207 }
1208 
1209 int
1210 nc_get_vars_int(int ncid, int varid, const size_t *startp,
1211  const size_t *countp, const ptrdiff_t * stridep,
1212  int *ip)
1213 {
1214  return NC_get_vars(ncid,varid,startp, countp, stridep,
1215  (void *)ip, NC_INT);
1216 }
1217 
1218 int
1219 nc_get_vars_long(int ncid, int varid, const size_t *startp,
1220  const size_t *countp, const ptrdiff_t * stridep,
1221  long *ip)
1222 {
1223  return NC_get_vars(ncid,varid,startp, countp, stridep,
1224  (void *)ip, T_long);
1225 }
1226 
1227 int
1228 nc_get_vars_float(int ncid, int varid, const size_t *startp,
1229  const size_t *countp, const ptrdiff_t * stridep,
1230  float *ip)
1231 {
1232  return NC_get_vars(ncid,varid,startp, countp, stridep,
1233  (void *)ip, T_float);
1234 }
1235 
1236 int
1237 nc_get_vars_double(int ncid, int varid, const size_t *startp,
1238  const size_t *countp, const ptrdiff_t * stridep,
1239  double *ip)
1240 {
1241  return NC_get_vars(ncid,varid,startp, countp, stridep,
1242  (void *)ip, T_double);
1243 }
1244 
1245 int
1246 nc_get_vars_ubyte(int ncid, int varid, const size_t *startp,
1247  const size_t *countp, const ptrdiff_t * stridep,
1248  unsigned char *ip)
1249 {
1250  return NC_get_vars(ncid,varid, startp, countp, stridep,
1251  (void *)ip, T_ubyte);
1252 }
1253 
1254 int
1255 nc_get_vars_ushort(int ncid, int varid, const size_t *startp,
1256  const size_t *countp, const ptrdiff_t * stridep,
1257  unsigned short *ip)
1258 {
1259  return NC_get_vars(ncid,varid,startp,countp, stridep,
1260  (void *)ip, T_ushort);
1261 }
1262 
1263 int
1264 nc_get_vars_uint(int ncid, int varid, const size_t *startp,
1265  const size_t *countp, const ptrdiff_t * stridep,
1266  unsigned int *ip)
1267 {
1268  return NC_get_vars(ncid,varid,startp, countp, stridep,
1269  (void *)ip, T_uint);
1270 }
1271 
1272 int
1273 nc_get_vars_longlong(int ncid, int varid, const size_t *startp,
1274  const size_t *countp, const ptrdiff_t * stridep,
1275  long long *ip)
1276 {
1277  return NC_get_vars(ncid, varid, startp, countp, stridep,
1278  (void *)ip, T_longlong);
1279 }
1280 
1281 int
1282 nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp,
1283  const size_t *countp, const ptrdiff_t * stridep,
1284  unsigned long long *ip)
1285 {
1286  return NC_get_vars(ncid, varid, startp, countp, stridep,
1287  (void *)ip, NC_UINT64);
1288 }
1289 
1290 int
1291 nc_get_vars_string(int ncid, int varid,
1292  const size_t *startp, const size_t *countp,
1293  const ptrdiff_t * stridep,
1294  char* *ip)
1295 {
1296  return NC_get_vars(ncid, varid, startp, countp, stridep,
1297  (void *)ip, NC_STRING);
1298 }
1299 
1358 int
1359 nc_get_varm(int ncid, int varid, const size_t * startp,
1360  const size_t * countp, const ptrdiff_t * stridep,
1361  const ptrdiff_t * imapp, void *ip)
1362 {
1363  return NC_get_varm(ncid, varid, startp, countp, stridep, imapp, ip, NC_NAT);
1364 }
1365 
1366 int
1367 nc_get_varm_schar(int ncid, int varid,
1368  const size_t *startp, const size_t *countp,
1369  const ptrdiff_t *stridep,
1370  const ptrdiff_t *imapp, signed char *ip)
1371 {
1372  return NC_get_varm(ncid, varid, startp, countp,
1373  stridep, imapp, (void *)ip, NC_BYTE);
1374 }
1375 
1376 int
1377 nc_get_varm_uchar(int ncid, int varid,
1378  const size_t *startp, const size_t *countp,
1379  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1380  unsigned char *ip)
1381 {
1382  return NC_get_varm(ncid,varid,startp,countp,stridep,imapp, (void *)ip,T_uchar);
1383 }
1384 
1385 int
1386 nc_get_varm_short(int ncid, int varid, const size_t *startp,
1387  const size_t *countp, const ptrdiff_t *stridep,
1388  const ptrdiff_t *imapp, short *ip)
1389 {
1390  return NC_get_varm(ncid,varid,startp,countp,stridep,imapp, (void *)ip,NC_SHORT);
1391 }
1392 
1393 int
1394 nc_get_varm_int(int ncid, int varid,
1395  const size_t *startp, const size_t *countp,
1396  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1397  int *ip)
1398 {
1399  return NC_get_varm(ncid,varid,startp,countp,stridep,imapp, (void *)ip,NC_INT);
1400 }
1401 
1402 int
1403 nc_get_varm_long(int ncid, int varid,
1404  const size_t *startp, const size_t *countp,
1405  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1406  long *ip)
1407 {
1408  return NC_get_varm(ncid,varid,startp,countp,stridep,imapp, (void *)ip,T_long);
1409 }
1410 
1411 int
1412 nc_get_varm_float(int ncid, int varid,
1413  const size_t *startp, const size_t *countp,
1414  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1415  float *ip)
1416 {
1417  return NC_get_varm(ncid,varid,startp,countp,stridep,imapp, (void *)ip,T_float);
1418 }
1419 
1420 int
1421 nc_get_varm_double(int ncid, int varid,
1422  const size_t *startp, const size_t *countp,
1423  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1424  double *ip)
1425 {
1426  return NC_get_varm(ncid,varid,startp,countp,stridep,imapp, (void *)ip,T_double);
1427 }
1428 
1429 int
1430 nc_get_varm_ubyte(int ncid, int varid,
1431  const size_t *startp, const size_t *countp,
1432  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1433  unsigned char *ip)
1434 {
1435  return NC_get_varm(ncid,varid,startp,countp,stridep,
1436  imapp, (void *)ip, T_ubyte);
1437 }
1438 
1439 int
1440 nc_get_varm_ushort(int ncid, int varid,
1441  const size_t *startp, const size_t *countp,
1442  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1443  unsigned short *ip)
1444 {
1445  return NC_get_varm(ncid, varid, startp, countp, stridep,
1446  imapp, (void *)ip, T_ushort);
1447 }
1448 
1449 int
1450 nc_get_varm_uint(int ncid, int varid,
1451  const size_t *startp, const size_t *countp,
1452  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1453  unsigned int *ip)
1454 {
1455  return NC_get_varm(ncid, varid, startp, countp,
1456  stridep, imapp, (void *)ip, T_uint);
1457 }
1458 
1459 int
1460 nc_get_varm_longlong(int ncid, int varid, const size_t *startp,
1461  const size_t *countp, const ptrdiff_t *stridep,
1462  const ptrdiff_t *imapp, long long *ip)
1463 {
1464  return NC_get_varm(ncid, varid, startp, countp, stridep, imapp,
1465  (void *)ip, T_longlong);
1466 }
1467 
1468 int
1469 nc_get_varm_ulonglong(int ncid, int varid,
1470  const size_t *startp, const size_t *countp,
1471  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1472  unsigned long long *ip)
1473 {
1474  return NC_get_varm(ncid, varid, startp, countp, stridep, imapp,
1475  (void *)ip, NC_UINT64);
1476 }
1477 
1478 int
1479 nc_get_varm_text(int ncid, int varid, const size_t *startp,
1480  const size_t *countp, const ptrdiff_t *stridep,
1481  const ptrdiff_t *imapp, char *ip)
1482 {
1483  return NC_get_varm(ncid, varid, startp, countp, stridep, imapp,
1484  (void *)ip, NC_CHAR);
1485 }
1486 
1487 int
1488 nc_get_varm_string(int ncid, int varid, const size_t *startp,
1489  const size_t *countp, const ptrdiff_t *stridep,
1490  const ptrdiff_t *imapp, char **ip)
1491 {
1492  return NC_get_varm(ncid, varid, startp, countp, stridep, imapp,
1493  (void *)ip, NC_STRING);
1494 } /* End of named group... */
NC_USHORT
#define NC_USHORT
unsigned 2-byte int
Definition: netcdf.h:43
NC_NOERR
#define NC_NOERR
No Error.
Definition: netcdf.h:333
nc_get_vara_double
int nc_get_vara_double(int ncid, int varid, const size_t *startp, const size_t *countp, double *ip)
Definition: dvarget.c:803
nc_get_vars_schar
int nc_get_vars_schar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, signed char *ip)
Definition: dvarget.c:1183
nc_get_vara_uchar
int nc_get_vara_uchar(int ncid, int varid, const size_t *startp, const size_t *countp, unsigned char *ip)
Definition: dvarget.c:768
nc_get_vars_double
int nc_get_vars_double(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, double *ip)
Definition: dvarget.c:1237
nc_get_vars_text
int nc_get_vars_text(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, char *ip)
Definition: dvarget.c:1174
nc_get_var1_double
int nc_get_var1_double(int ncid, int varid, const size_t *indexp, double *ip)
Definition: dvarget.c:939
NC_FLOAT
#define NC_FLOAT
single precision floating point number
Definition: netcdf.h:40
NC_DOUBLE
#define NC_DOUBLE
double precision floating point number
Definition: netcdf.h:41
nc_get_vara_ushort
int nc_get_vara_ushort(int ncid, int varid, const size_t *startp, const size_t *countp, unsigned short *ip)
Definition: dvarget.c:817
nc_get_vara_string
int nc_get_vara_string(int ncid, int varid, const size_t *startp, const size_t *countp, char **ip)
Definition: dvarget.c:845
nc_inq_varndims
EXTERNL int nc_inq_varndims(int ncid, int varid, int *ndimsp)
Learn how many dimensions are associated with a variable.
Definition: dvarinq.c:202
nc_get_vars_ubyte
int nc_get_vars_ubyte(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, unsigned char *ip)
Definition: dvarget.c:1246
nc_get_varm_string
int nc_get_varm_string(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, char **ip)
Definition: dvarget.c:1488
nc_get_var1_longlong
int nc_get_var1_longlong(int ncid, int varid, const size_t *indexp, long long *ip)
Definition: dvarget.c:967
nc_get_var_uint
int nc_get_var_uint(int ncid, int varid, unsigned int *ip)
Definition: dvarget.c:1099
NC_EEDGE
#define NC_EEDGE
Start+count exceeds dimension bound.
Definition: netcdf.h:403
nc_get_varm_int
int nc_get_varm_int(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, int *ip)
Definition: dvarget.c:1394
nc_get_var_long
int nc_get_var_long(int ncid, int varid, long *ip)
Definition: dvarget.c:1069
NC_BYTE
#define NC_BYTE
signed 1 byte integer
Definition: netcdf.h:35
nc_get_varm_ubyte
int nc_get_varm_ubyte(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, unsigned char *ip)
Definition: dvarget.c:1430
nc_get_var1_float
int nc_get_var1_float(int ncid, int varid, const size_t *indexp, float *ip)
Definition: dvarget.c:932
nc_get_var_int
int nc_get_var_int(int ncid, int varid, int *ip)
Definition: dvarget.c:1063
nc_get_var_schar
int nc_get_var_schar(int ncid, int varid, signed char *ip)
Definition: dvarget.c:1045
NC_INT
#define NC_INT
signed 4 byte integer
Definition: netcdf.h:38
nc_get_var_ulonglong
int nc_get_var_ulonglong(int ncid, int varid, unsigned long long *ip)
Definition: dvarget.c:1111
NC_UBYTE
#define NC_UBYTE
unsigned 1 byte int
Definition: netcdf.h:42
nc_get_varm_ulonglong
int nc_get_varm_ulonglong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, unsigned long long *ip)
Definition: dvarget.c:1469
nc_get_var
int nc_get_var(int ncid, int varid, void *ip)
Definition: dvarget.c:1033
nc_get_vara_uint
int nc_get_vara_uint(int ncid, int varid, const size_t *startp, const size_t *countp, unsigned int *ip)
Definition: dvarget.c:824
nc_get_vara_ulonglong
int nc_get_vara_ulonglong(int ncid, int varid, const size_t *startp, const size_t *countp, unsigned long long *ip)
Definition: dvarget.c:838
nc_get_var1_text
int nc_get_var1_text(int ncid, int varid, const size_t *indexp, char *ip)
Definition: dvarget.c:895
NC_EMAPTYPE
#define NC_EMAPTYPE
Mapped access for atomic types only.
Definition: netcdf.h:466
NC_ERANGE
#define NC_ERANGE
Math result not representable.
Definition: netcdf.h:412
nc_get_var_text
int nc_get_var_text(int ncid, int varid, char *ip)
Definition: dvarget.c:1039
NC_MAX_VAR_DIMS
#define NC_MAX_VAR_DIMS
max per variable dimensions
Definition: netcdf.h:277
nc_get_var_double
int nc_get_var_double(int ncid, int varid, double *ip)
Definition: dvarget.c:1081
nc_get_vars_longlong
int nc_get_vars_longlong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, long long *ip)
Definition: dvarget.c:1273
nc_get_varm
int nc_get_varm(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, void *ip)
Definition: dvarget.c:1359
nc_get_var_ubyte
int nc_get_var_ubyte(int ncid, int varid, unsigned char *ip)
Definition: dvarget.c:1087
nc_get_varm_float
int nc_get_varm_float(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, float *ip)
Definition: dvarget.c:1412
nc_get_varm_text
int nc_get_varm_text(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, char *ip)
Definition: dvarget.c:1479
nc_get_vara_float
int nc_get_vara_float(int ncid, int varid, const size_t *startp, const size_t *countp, float *ip)
Definition: dvarget.c:796
nc_get_var_short
int nc_get_var_short(int ncid, int varid, short *ip)
Definition: dvarget.c:1057
nc_get_vars_float
int nc_get_vars_float(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, float *ip)
Definition: dvarget.c:1228
nc_get_var1_ushort
int nc_get_var1_ushort(int ncid, int varid, const size_t *indexp, unsigned short *ip)
Definition: dvarget.c:953
nc_get_varm_schar
int nc_get_varm_schar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, signed char *ip)
Definition: dvarget.c:1367
nc_get_vars_ushort
int nc_get_vars_ushort(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, unsigned short *ip)
Definition: dvarget.c:1255
nc_get_var_float
int nc_get_var_float(int ncid, int varid, float *ip)
Definition: dvarget.c:1075
nc_get_vara_schar
int nc_get_vara_schar(int ncid, int varid, const size_t *startp, const size_t *countp, signed char *ip)
Definition: dvarget.c:761
nc_get_varm_uint
int nc_get_varm_uint(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, unsigned int *ip)
Definition: dvarget.c:1450
nc_get_vars_long
int nc_get_vars_long(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, long *ip)
Definition: dvarget.c:1219
nc_get_vars_uchar
int nc_get_vars_uchar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, unsigned char *ip)
Definition: dvarget.c:1192
nc_get_varm_uchar
int nc_get_varm_uchar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, unsigned char *ip)
Definition: dvarget.c:1377
nc_inq_type
EXTERNL int nc_inq_type(int ncid, nc_type xtype, char *name, size_t *size)
Definition: dfile.c:1719
nc_get_vara_ubyte
int nc_get_vara_ubyte(int ncid, int varid, const size_t *startp, const size_t *countp, unsigned char *ip)
Definition: dvarget.c:810
nc_get_vara_text
int nc_get_vara_text(int ncid, int varid, const size_t *startp, const size_t *countp, char *ip)
Definition: dvarget.c:754
nc_get_vars_string
int nc_get_vars_string(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, char **ip)
Definition: dvarget.c:1291
nc_get_varm_ushort
int nc_get_varm_ushort(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, unsigned short *ip)
Definition: dvarget.c:1440
nc_get_var_longlong
int nc_get_var_longlong(int ncid, int varid, long long *ip)
Definition: dvarget.c:1105
NC_SHORT
#define NC_SHORT
signed 2 byte integer
Definition: netcdf.h:37
nc_get_var1_uchar
int nc_get_var1_uchar(int ncid, int varid, const size_t *indexp, unsigned char *ip)
Definition: dvarget.c:907
nc_get_var_ushort
int nc_get_var_ushort(int ncid, int varid, unsigned short *ip)
Definition: dvarget.c:1093
nc_get_vara_int
int nc_get_vara_int(int ncid, int varid, const size_t *startp, const size_t *countp, int *ip)
Definition: dvarget.c:782
nc_get_vara_long
int nc_get_vara_long(int ncid, int varid, const size_t *startp, const size_t *countp, long *ip)
Definition: dvarget.c:789
nc_type
int nc_type
The nc_type type is just an int.
Definition: netcdf.h:25
nc_inq_vartype
EXTERNL int nc_inq_vartype(int ncid, int varid, nc_type *xtypep)
Learn the type of a variable.
Definition: dvarinq.c:178
NC_EBADTYPE
#define NC_EBADTYPE
Not a netcdf data type.
Definition: netcdf.h:375
nc_get_var1_ulonglong
int nc_get_var1_ulonglong(int ncid, int varid, const size_t *indexp, unsigned long long *ip)
Definition: dvarget.c:974
nc_get_var1_ubyte
int nc_get_var1_ubyte(int ncid, int varid, const size_t *indexp, unsigned char *ip)
Definition: dvarget.c:946
nc_get_var1
int nc_get_var1(int ncid, int varid, const size_t *indexp, void *ip)
Definition: dvarget.c:889
nc_get_var1_uint
int nc_get_var1_uint(int ncid, int varid, const size_t *indexp, unsigned int *ip)
Definition: dvarget.c:960
NC_ECHAR
#define NC_ECHAR
Attempt to convert between text & numbers.
Definition: netcdf.h:394
nc_get_vara_longlong
int nc_get_vara_longlong(int ncid, int varid, const size_t *startp, const size_t *countp, long long *ip)
Definition: dvarget.c:831
nc_get_var_string
int nc_get_var_string(int ncid, int varid, char **ip)
Definition: dvarget.c:1117
nc_get_vars_short
int nc_get_vars_short(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, short *ip)
Definition: dvarget.c:1201
nc_get_vara_short
int nc_get_vara_short(int ncid, int varid, const size_t *startp, const size_t *countp, short *ip)
Definition: dvarget.c:775
nc_get_vara
int nc_get_vara(int ncid, int varid, const size_t *startp, const size_t *countp, void *ip)
Definition: dvarget.c:741
nc_get_vars_ulonglong
int nc_get_vars_ulonglong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, unsigned long long *ip)
Definition: dvarget.c:1282
NC_EINVALCOORDS
#define NC_EINVALCOORDS
Index exceeds dimension bound.
Definition: netcdf.h:365
NC_ENOMEM
#define NC_ENOMEM
Memory allocation (malloc) failure.
Definition: netcdf.h:413
NC_NAT
#define NC_NAT
Not A Type.
Definition: netcdf.h:34
nc_get_varm_short
int nc_get_varm_short(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, short *ip)
Definition: dvarget.c:1386
NC_UINT64
#define NC_UINT64
unsigned 8-byte int
Definition: netcdf.h:46
nc_get_var1_string
int nc_get_var1_string(int ncid, int varid, const size_t *indexp, char **ip)
Definition: dvarget.c:981
NC_UINT
#define NC_UINT
unsigned 4-byte int
Definition: netcdf.h:44
nc_get_varm_longlong
int nc_get_varm_longlong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, long long *ip)
Definition: dvarget.c:1460
NC_STRING
#define NC_STRING
string
Definition: netcdf.h:47
nc_get_vars_int
int nc_get_vars_int(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, int *ip)
Definition: dvarget.c:1210
nc_get_vars
int nc_get_vars(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, void *ip)
Definition: dvarget.c:1165
nc_get_varm_long
int nc_get_varm_long(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, long *ip)
Definition: dvarget.c:1403
nc_get_vars_uint
int nc_get_vars_uint(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, unsigned int *ip)
Definition: dvarget.c:1264
NC_CHAR
#define NC_CHAR
ISO/ASCII character.
Definition: netcdf.h:36
NC_ESTRIDE
#define NC_ESTRIDE
Illegal stride.
Definition: netcdf.h:404
nc_get_var_uchar
int nc_get_var_uchar(int ncid, int varid, unsigned char *ip)
Definition: dvarget.c:1051
nc_get_var1_schar
int nc_get_var1_schar(int ncid, int varid, const size_t *indexp, signed char *ip)
Definition: dvarget.c:901
nc_get_var1_int
int nc_get_var1_int(int ncid, int varid, const size_t *indexp, int *ip)
Definition: dvarget.c:919
nc_get_varm_double
int nc_get_varm_double(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, double *ip)
Definition: dvarget.c:1421
nc_get_var1_short
int nc_get_var1_short(int ncid, int varid, const size_t *indexp, short *ip)
Definition: dvarget.c:913
nc_get_var1_long
int nc_get_var1_long(int ncid, int varid, const size_t *indexp, long *ip)
Definition: dvarget.c:925
NC_INT64
#define NC_INT64
signed 8-byte int
Definition: netcdf.h:45