NetCDF  4.9.3
dvarput.c
Go to the documentation of this file.
1 
8 #include "ncdispatch.h"
9 
10 struct PUTodometer {
11  int rank;
12  size_t index[NC_MAX_VAR_DIMS];
13  size_t start[NC_MAX_VAR_DIMS];
14  size_t edges[NC_MAX_VAR_DIMS];
15  ptrdiff_t stride[NC_MAX_VAR_DIMS];
16  size_t stop[NC_MAX_VAR_DIMS];
17 };
18 
29 static void
30 odom_init(struct PUTodometer* odom, int rank, const size_t* start,
31  const size_t* edges, const ptrdiff_t* stride)
32 {
33  int i;
34  memset(odom,0,sizeof(struct PUTodometer));
35  odom->rank = rank;
36  assert(odom->rank <= NC_MAX_VAR_DIMS);
37  for(i=0;i<odom->rank;i++) {
38  odom->start[i] = (start != NULL ? start[i] : 0);
39  odom->edges[i] = (edges != NULL ? edges[i] : 1);
40  odom->stride[i] = (stride != NULL ? stride[i] : 1);
41  odom->stop[i] = odom->start[i] + (odom->edges[i]*(size_t)odom->stride[i]);
42  odom->index[i] = odom->start[i];
43  }
44 }
45 
53 static int
54 odom_more(struct PUTodometer* odom)
55 {
56  return (odom->index[0] < odom->stop[0]);
57 }
58 
66 static int
67 odom_next(struct PUTodometer* odom)
68 {
69  int i;
70  if(odom->rank == 0) return 0;
71  for(i=odom->rank-1;i>=0;i--) {
72  odom->index[i] += (size_t)odom->stride[i];
73  if(odom->index[i] < odom->stop[i]) break;
74  if(i == 0) return 0; /* leave the 0th entry if it overflows*/
75  odom->index[i] = odom->start[i]; /* reset this position*/
76  }
77  return 1;
78 }
79 
83 static int
84 NC_put_vara(int ncid, int varid, const size_t *start,
85  const size_t *edges, const void *value, nc_type memtype)
86 {
87  NC* ncp;
88  size_t *my_count = (size_t *)edges;
89 
90  int stat = NC_check_id(ncid, &ncp);
91  if(stat != NC_NOERR) return stat;
92 
93  if(start == NULL || edges == NULL) {
94  stat = NC_check_nulls(ncid, varid, start, &my_count, NULL);
95  if(stat != NC_NOERR) return stat;
96  }
97  stat = ncp->dispatch->put_vara(ncid, varid, start, my_count, value, memtype);
98  if(edges == NULL) free(my_count);
99  return stat;
100 }
101 
105 static int
106 NC_put_var(int ncid, int varid, const void *value, nc_type memtype)
107 {
108  int ndims;
109  size_t shape[NC_MAX_VAR_DIMS];
110  int stat = nc_inq_varndims(ncid,varid, &ndims);
111  if(stat) return stat;
112  stat = NC_getshape(ncid,varid, ndims, shape);
113  if(stat) return stat;
114  return NC_put_vara(ncid, varid, NC_coord_zero, shape, value, memtype);
115 }
116 
120 static int
121 NC_put_var1(int ncid, int varid, const size_t *coord, const void* value,
122  nc_type memtype)
123 {
124  return NC_put_vara(ncid, varid, coord, NC_coord_one, value, memtype);
125 }
126 
130 int
131 NCDEFAULT_put_vars(int ncid, int varid, const size_t * start,
132  const size_t * edges, const ptrdiff_t * stride,
133  const void *value0, nc_type memtype)
134 {
135  /* Rebuilt put_vars code to simplify and avoid use of put_varm */
136 
137  int status = NC_NOERR;
138  int i,isstride1,isrecvar;
139  int rank;
140  struct PUTodometer odom;
141  nc_type vartype = NC_NAT;
142  NC* ncp;
143  size_t vartypelen;
144  size_t nels;
145  int memtypelen;
146  const char* value = (const char*)value0;
147  int nrecdims; /* number of record dims for a variable */
148  int is_recdim[NC_MAX_VAR_DIMS]; /* for variable's dimensions */
149  size_t varshape[NC_MAX_VAR_DIMS];
150  size_t mystart[NC_MAX_VAR_DIMS];
151  size_t myedges[NC_MAX_VAR_DIMS];
152  ptrdiff_t mystride[NC_MAX_VAR_DIMS];
153  const char* memptr = value;
154 
155  status = NC_check_id (ncid, &ncp);
156  if(status != NC_NOERR) return status;
157 
158  status = nc_inq_vartype(ncid, varid, &vartype);
159  if(status != NC_NOERR) return status;
160 
161  if(memtype == NC_NAT) memtype = vartype;
162 
163  /* compute the variable type size */
164  status = nc_inq_type(ncid,vartype,NULL,&vartypelen);
165  if(status != NC_NOERR) return status;
166 
167  if(memtype > NC_MAX_ATOMIC_TYPE)
168  memtypelen = (int)vartypelen;
169  else
170  memtypelen = nctypelen(memtype);
171 
172  /* Check gross internal/external type compatibility */
173  if(vartype != memtype) {
174  /* If !atomic, the two types must be the same */
175  if(vartype > NC_MAX_ATOMIC_TYPE
176  || memtype > NC_MAX_ATOMIC_TYPE)
177  return NC_EBADTYPE;
178  /* ok, the types differ but both are atomic */
179  if(memtype == NC_CHAR || vartype == NC_CHAR)
180  return NC_ECHAR;
181  }
182 
183  /* Get the variable rank */
184  status = nc_inq_varndims(ncid, varid, &rank);
185  if(status != NC_NOERR) return status;
186 
187  /* Start array is always required for non-scalar vars. */
188  if(rank > 0 && start == NULL)
189  return NC_EINVALCOORDS;
190 
191  /* Get variable dimension sizes */
192  status = NC_inq_recvar(ncid,varid,&nrecdims,is_recdim);
193  if(status != NC_NOERR) return status;
194  isrecvar = (nrecdims > 0);
195  NC_getshape(ncid,varid,rank,varshape);
196 
197  /* Optimize out using various checks */
198  if (rank == 0) {
199  /*
200  * The variable is a scalar; consequently,
201  * there is only one thing to get and only one place to put it.
202  * (Why was I called?)
203  */
204  size_t edge1[1] = {1};
205  return NC_put_vara(ncid, varid, start, edge1, value0, memtype);
206  }
207 
208  /* Do various checks and fixups on start/edges/stride */
209  isstride1 = 1; /* assume so */
210  nels = 1;
211  for(i=0;i<rank;i++) {
212  size_t dimlen;
213  mystart[i] = (start == NULL ? 0 : start[i]);
214 #if 0
215  dimlen = (i == 0 && isrecvar ? numrecs : varshape[i]);
216  if(i == 0 && isrecvar) {/*do nothing*/}
217 #else
218  /* illegal value checks */
219  dimlen = varshape[i];
220  if(is_recdim[i]) {/*do nothing*/}
221 #endif
222  else {
223  /* mystart is unsigned, will never be < 0 */
224  if (mystart[i] > dimlen) return NC_EINVALCOORDS;
225  }
226  if(edges == NULL) {
227 #if 0
228  if(i == 0 && isrecvar)
229  myedges[i] = numrecs - start[i];
230 #else
231  if(is_recdim[i] && isrecvar)
232  myedges[i] = varshape[i] - start[i];
233 #endif
234  else
235  myedges[i] = varshape[i] - mystart[i];
236  } else
237  myedges[i] = edges[i];
238 
239  if(!is_recdim[i]) {
240  if (mystart[i] == dimlen && myedges[i] > 0)
241  return NC_EINVALCOORDS;
242  }
243 
244  if(!is_recdim[i]) {
245  /* myediges is unsigned, will never be < 0 */
246  if(mystart[i] + myedges[i] > dimlen)
247  return NC_EEDGE;
248  }
249  mystride[i] = (stride == NULL ? 1 : stride[i]);
250  if(mystride[i] <= 0
251  /* cast needed for braindead systems with signed size_t */
252  || ((unsigned long) mystride[i] >= X_INT_MAX))
253  return NC_ESTRIDE;
254  if(mystride[i] != 1) isstride1 = 0;
255  nels *= myedges[i];
256  }
257 
258  if(isstride1) {
259  return NC_put_vara(ncid, varid, mystart, myedges, value, memtype);
260  }
261 
262  if(nels == 0) {
263  /* This should be here instead of before NC_put_vara call to
264  * avoid hang in parallel write for single stride.
265  * Still issue with parallel hang if stride > 1
266  */
267  return NC_NOERR; /* cannot write anything */
268  }
269 
270  /* Initial version uses and odometer to walk the variable
271  and read each value one at a time. This can later be optimized
272  to read larger chunks at a time.
273  */
274 
275 
276  odom_init(&odom,rank,mystart,myedges,mystride);
277 
278  /* walk the odometer to extract values */
279  while(odom_more(&odom)) {
280  int localstatus = NC_NOERR;
281  /* Write a single value */
282  localstatus = NC_put_vara(ncid,varid,odom.index,NC_coord_one,memptr,memtype);
283  /* So it turns out that when get_varm is used, all errors are
284  delayed and ERANGE will be overwritten by more serious errors.
285  */
286  if(localstatus != NC_NOERR) {
287  if(status == NC_NOERR || localstatus != NC_ERANGE)
288  status = localstatus;
289  }
290  memptr += memtypelen;
291  odom_next(&odom);
292  }
293  return status;
294 }
295 
299 int
300 NCDEFAULT_put_varm(
301  int ncid,
302  int varid,
303  const size_t * start,
304  const size_t * edges,
305  const ptrdiff_t * stride,
306  const ptrdiff_t * imapp,
307  const void *value0,
308  nc_type memtype)
309 {
310  int status = NC_NOERR;
311  nc_type vartype = NC_NAT;
312  int varndims = 0;
313  int maxidim = 0;
314  NC* ncp;
315  int memtypelen;
316  const char* value = (char*)value0;
317 
318  status = NC_check_id (ncid, &ncp);
319  if(status != NC_NOERR) return status;
320 
321 /*
322  if(NC_indef(ncp)) return NC_EINDEFINE;
323  if(NC_readonly (ncp)) return NC_EPERM;
324 */
325 
326  /* mid body */
327  status = nc_inq_vartype(ncid, varid, &vartype);
328  if(status != NC_NOERR) return status;
329  /* Check that this is an atomic type */
330  if(vartype > NC_MAX_ATOMIC_TYPE)
331  return NC_EMAPTYPE;
332 
333  status = nc_inq_varndims(ncid, varid, &varndims);
334  if(status != NC_NOERR) return status;
335 
336  if(memtype == NC_NAT) {
337  memtype = vartype;
338  }
339 
340  if(memtype == NC_CHAR && vartype != NC_CHAR)
341  return NC_ECHAR;
342  else if(memtype != NC_CHAR && vartype == NC_CHAR)
343  return NC_ECHAR;
344 
345  memtypelen = nctypelen(memtype);
346 
347  maxidim = (int) varndims - 1;
348 
349  if (maxidim < 0)
350  {
351  /*
352  * The variable is a scalar; consequently,
353  * there s only one thing to get and only one place to put it.
354  * (Why was I called?)
355  */
356  size_t edge1[1] = {1};
357  return NC_put_vara(ncid, varid, start, edge1, value, memtype);
358  }
359 
360  /*
361  * else
362  * The variable is an array.
363  */
364  {
365  int idim;
366  size_t *mystart = NULL;
367  size_t *myedges = 0;
368  size_t *iocount= 0; /* count vector */
369  size_t *stop = 0; /* stop indexes */
370  size_t *length = 0; /* edge lengths in bytes */
371  ptrdiff_t *mystride = 0;
372  ptrdiff_t *mymap= 0;
373  size_t varshape[NC_MAX_VAR_DIMS];
374  int isrecvar;
375  size_t numrecs;
376  int stride1; /* is stride all ones? */
377 
378  /*
379  * Verify stride argument.
380  */
381  stride1 = 1; /* assume ok; */
382  if(stride != NULL) {
383  for (idim = 0; idim <= maxidim; ++idim) {
384  if ((stride[idim] == 0)
385  /* cast needed for braindead systems with signed size_t */
386  || ((unsigned long) stride[idim] >= X_INT_MAX))
387  {
388  return NC_ESTRIDE;
389  }
390  if(stride[idim] != 1) stride1 = 0;
391  }
392  }
393 
394  /* If stride1 is true, and there is no imap, then call get_vara
395  directly
396  */
397  if(stride1 && imapp == NULL) {
398  return NC_put_vara(ncid, varid, start, edges, value, memtype);
399  }
400 
401  /* Compute some dimension related values */
402  isrecvar = NC_is_recvar(ncid,varid,&numrecs);
403  NC_getshape(ncid,varid,varndims,varshape);
404 
405  /* assert(sizeof(ptrdiff_t) >= sizeof(size_t)); */
406  mystart = (size_t *)calloc((size_t)(varndims * 7), sizeof(ptrdiff_t));
407  if(mystart == NULL) return NC_ENOMEM;
408  myedges = mystart + varndims;
409  iocount = myedges + varndims;
410  stop = iocount + varndims;
411  length = stop + varndims;
412  mystride = (ptrdiff_t *)(length + varndims);
413  mymap = mystride + varndims;
414 
415  /*
416  * Check start, edges
417  */
418  for (idim = maxidim; idim >= 0; --idim)
419  {
420  mystart[idim] = start != NULL
421  ? start[idim]
422  : 0;
423 
424  myedges[idim] = edges != NULL
425  ? edges[idim]
426  : idim == 0 && isrecvar
427  ? numrecs - mystart[idim]
428  : varshape[idim] - mystart[idim];
429  }
430 
431  for (idim = isrecvar; idim <= maxidim; ++idim)
432  {
433  if (mystart[idim] > varshape[idim] ||
434  (mystart[idim] == varshape[idim] && myedges[idim] > 0))
435  {
436  status = NC_EINVALCOORDS;
437  goto done;
438  }
439 
440  if (mystart[idim] + myedges[idim] > varshape[idim])
441  {
442  status = NC_EEDGE;
443  goto done;
444  }
445  }
446 
447  /*
448  * Initialize I/O parameters.
449  */
450  for (idim = maxidim; idim >= 0; --idim)
451  {
452  if (edges != NULL && edges[idim] == 0)
453  {
454  status = NC_NOERR; /* read/write no data */
455  goto done;
456  }
457 
458  mystride[idim] = stride != NULL
459  ? stride[idim]
460  : 1;
461  mymap[idim] = imapp != NULL
462  ? imapp[idim]
463  : idim == maxidim
464  ? 1
465  : mymap[idim + 1] * (ptrdiff_t) myedges[idim + 1];
466 
467  iocount[idim] = 1;
468  length[idim] = ((size_t)mymap[idim]) * myedges[idim];
469  stop[idim] = mystart[idim] + myedges[idim] * (size_t)mystride[idim];
470  }
471 
472  /* Lower body */
473  /*
474  * As an optimization, adjust I/O parameters when the fastest
475  * dimension has unity stride both externally and internally.
476  * In this case, the user could have called a simpler routine
477  * (i.e. ncvar$1()
478  */
479  if (mystride[maxidim] == 1
480  && mymap[maxidim] == 1)
481  {
482  iocount[maxidim] = myedges[maxidim];
483  mystride[maxidim] = (ptrdiff_t) myedges[maxidim];
484  mymap[maxidim] = (ptrdiff_t) length[maxidim];
485  }
486 
487  /*
488  * Perform I/O. Exit when done.
489  */
490  for (;;)
491  {
492  /* TODO: */
493  int lstatus = NC_put_vara(ncid, varid, mystart, iocount,
494  value, memtype);
495  if (lstatus != NC_NOERR) {
496  if(status == NC_NOERR || lstatus != NC_ERANGE)
497  status = lstatus;
498  }
499 
500  /*
501  * The following code permutes through the variable s
502  * external start-index space and it s internal address
503  * space. At the UPC, this algorithm is commonly
504  * called "odometer code".
505  */
506  idim = maxidim;
507  carry:
508  value += (mymap[idim] * memtypelen);
509  mystart[idim] += (size_t)mystride[idim];
510  if (mystart[idim] == stop[idim])
511  {
512  size_t l = (length[idim] * (size_t)memtypelen);
513  value -= l;
514  mystart[idim] = start[idim];
515  if (--idim < 0)
516  break; /* normal return */
517  goto carry;
518  }
519  } /* I/O loop */
520  done:
521  free(mystart);
522  } /* variable is array */
523  return status;
524 }
525 
529 static int
530 NC_put_vars(int ncid, int varid, const size_t *start,
531  const size_t *edges, const ptrdiff_t *stride,
532  const void *value, nc_type memtype)
533 {
534  NC* ncp;
535  size_t *my_count = (size_t *)edges;
536  ptrdiff_t *my_stride = (ptrdiff_t *)stride;
537  int stat;
538 
539  stat = NC_check_id(ncid, &ncp);
540  if(stat != NC_NOERR) return stat;
541 
542  /* Handle any NULL parameters. */
543  if(start == NULL || edges == NULL || stride == NULL) {
544  stat = NC_check_nulls(ncid, varid, start, &my_count, &my_stride);
545  if(stat != NC_NOERR) return stat;
546  }
547 
548  stat = ncp->dispatch->put_vars(ncid, varid, start, my_count, my_stride,
549  value, memtype);
550  if(edges == NULL) free(my_count);
551  if(stride == NULL) free(my_stride);
552  return stat;
553 }
554 
558 static int
559 NC_put_varm(int ncid, int varid, const size_t *start,
560  const size_t *edges, const ptrdiff_t *stride, const ptrdiff_t* map,
561  const void *value, nc_type memtype)
562 {
563  NC* ncp;
564  size_t *my_count = (size_t *)edges;
565  ptrdiff_t *my_stride = (ptrdiff_t *)stride;
566  int stat;
567 
568  stat = NC_check_id(ncid, &ncp);
569  if(stat != NC_NOERR) return stat;
570 
571  /* Handle any NULL parameters. */
572  if(start == NULL || edges == NULL || stride == NULL) {
573  stat = NC_check_nulls(ncid, varid, start, &my_count, &my_stride);
574  if(stat != NC_NOERR) return stat;
575  }
576 
577  stat = ncp->dispatch->put_varm(ncid, varid, start, my_count, my_stride,
578  map, value, memtype);
579  if(edges == NULL) free(my_count);
580  if(stride == NULL) free(my_stride);
581  return stat;
582 }
583  /* All these functions are part of this named group... */
588 
632 int
633 nc_put_vara(int ncid, int varid, const size_t *startp,
634  const size_t *countp, const void *op)
635 {
636  NC* ncp;
637  int stat = NC_check_id(ncid, &ncp);
638  nc_type xtype;
639  if(stat != NC_NOERR) return stat;
640  stat = nc_inq_vartype(ncid, varid, &xtype);
641  if(stat != NC_NOERR) return stat;
642  return NC_put_vara(ncid, varid, startp, countp, op, xtype);
643 }
644 
645 int
646 nc_put_vara_text(int ncid, int varid, const size_t *startp,
647  const size_t *countp, const char *op)
648 {
649  return NC_put_vara(ncid, varid, startp, countp,
650  (void*)op, NC_CHAR);
651 }
652 
653 int
654 nc_put_vara_schar(int ncid, int varid, const size_t *startp,
655  const size_t *countp, const signed char *op)
656 {
657  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
658  NC_BYTE);
659 }
660 
661 int
662 nc_put_vara_uchar(int ncid, int varid, const size_t *startp,
663  const size_t *countp, const unsigned char *op)
664 {
665  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
666  T_uchar);
667 }
668 
669 int
670 nc_put_vara_short(int ncid, int varid, const size_t *startp,
671  const size_t *countp, const short *op)
672 {
673  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
674  NC_SHORT);
675 }
676 
677 int
678 nc_put_vara_int(int ncid, int varid, const size_t *startp,
679  const size_t *countp, const int *op)
680 {
681  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
682  NC_INT);
683 }
684 
685 int
686 nc_put_vara_long(int ncid, int varid, const size_t *startp,
687  const size_t *countp, const long *op)
688 {
689  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
690  T_long);
691 }
692 
693 int
694 nc_put_vara_float(int ncid, int varid, const size_t *startp,
695  const size_t *countp, const float *op)
696 {
697  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
698  T_float);
699 }
700 
701 int
702 nc_put_vara_double(int ncid, int varid, const size_t *startp,
703  const size_t *countp, const double *op)
704 {
705  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
706  T_double);
707 }
708 
709 int
710 nc_put_vara_ubyte(int ncid, int varid, const size_t *startp,
711  const size_t *countp, const unsigned char *op)
712 {
713  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
714  T_ubyte);
715 }
716 
717 int
718 nc_put_vara_ushort(int ncid, int varid, const size_t *startp,
719  const size_t *countp, const unsigned short *op)
720 {
721  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
722  T_ushort);
723 }
724 
725 int
726 nc_put_vara_uint(int ncid, int varid, const size_t *startp,
727  const size_t *countp, const unsigned int *op)
728 {
729  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
730  T_uint);
731 }
732 
733 int
734 nc_put_vara_longlong(int ncid, int varid, const size_t *startp,
735  const size_t *countp, const long long *op)
736 {
737  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
738  T_longlong);
739 }
740 
741 int
742 nc_put_vara_ulonglong(int ncid, int varid, const size_t *startp,
743  const size_t *countp, const unsigned long long *op)
744 {
745  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
746  NC_UINT64);
747 }
748 
749 int
750 nc_put_vara_string(int ncid, int varid, const size_t *startp,
751  const size_t *countp, const char* *op)
752 {
753  return NC_put_vara(ncid, varid, startp, countp, (void *)op,
754  NC_STRING);
755 }
756 
782 int
783 nc_put_var1(int ncid, int varid, const size_t *indexp, const void *op)
784 {
785  return NC_put_var1(ncid, varid, indexp, op, NC_NAT);
786 }
787 
788 int
789 nc_put_var1_text(int ncid, int varid, const size_t *indexp, const char *op)
790 {
791  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_CHAR);
792 }
793 
794 int
795 nc_put_var1_schar(int ncid, int varid, const size_t *indexp, const signed char *op)
796 {
797  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_BYTE);
798 }
799 
800 int
801 nc_put_var1_uchar(int ncid, int varid, const size_t *indexp, const unsigned char *op)
802 {
803  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_UBYTE);
804 }
805 
806 int
807 nc_put_var1_short(int ncid, int varid, const size_t *indexp, const short *op)
808 {
809  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_SHORT);
810 }
811 
812 int
813 nc_put_var1_int(int ncid, int varid, const size_t *indexp, const int *op)
814 {
815  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_INT);
816 }
817 
818 int
819 nc_put_var1_long(int ncid, int varid, const size_t *indexp, const long *op)
820 {
821  return NC_put_var1(ncid, varid, indexp, (void*)op, longtype);
822 }
823 
824 int
825 nc_put_var1_float(int ncid, int varid, const size_t *indexp, const float *op)
826 {
827  return NC_put_var1(ncid, varid, indexp, (void*)op, NC_FLOAT);
828 }
829 
830 int
831 nc_put_var1_double(int ncid, int varid, const size_t *indexp, const double *op)
832 {
833  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_DOUBLE);
834 }
835 
836 int
837 nc_put_var1_ubyte(int ncid, int varid, const size_t *indexp, const unsigned char *op)
838 {
839  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_UBYTE);
840 }
841 
842 int
843 nc_put_var1_ushort(int ncid, int varid, const size_t *indexp, const unsigned short *op)
844 {
845  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_USHORT);
846 }
847 
848 int
849 nc_put_var1_uint(int ncid, int varid, const size_t *indexp, const unsigned int *op)
850 {
851  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_UINT);
852 }
853 
854 int
855 nc_put_var1_longlong(int ncid, int varid, const size_t *indexp, const long long *op)
856 {
857  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_INT64);
858 }
859 
860 int
861 nc_put_var1_ulonglong(int ncid, int varid, const size_t *indexp, const unsigned long long *op)
862 {
863  return NC_put_var1(ncid, varid, indexp, (void *)op, NC_UINT64);
864 }
865 
866 int
867 nc_put_var1_string(int ncid, int varid, const size_t *indexp, const char* *op)
868 {
869  return NC_put_var1(ncid, varid, indexp, (void*)op, NC_STRING);
870 }
871 
921 int
922 nc_put_var(int ncid, int varid, const void *op)
923 {
924  return NC_put_var(ncid, varid, op, NC_NAT);
925 }
926 
927 int
928 nc_put_var_text(int ncid, int varid, const char *op)
929 {
930  return NC_put_var(ncid,varid,(void*)op,NC_CHAR);
931 }
932 
933 int
934 nc_put_var_schar(int ncid, int varid, const signed char *op)
935 {
936  return NC_put_var(ncid,varid,(void*)op,NC_BYTE);
937 }
938 
939 int
940 nc_put_var_uchar(int ncid, int varid, const unsigned char *op)
941 {
942  return NC_put_var(ncid,varid,(void*)op,T_uchar);
943 }
944 
945 int
946 nc_put_var_short(int ncid, int varid, const short *op)
947 {
948  return NC_put_var(ncid,varid,(void*)op,NC_SHORT);
949 }
950 
951 int
952 nc_put_var_int(int ncid, int varid, const int *op)
953 {
954  return NC_put_var(ncid,varid,(void*)op,NC_INT);
955 }
956 
957 int
958 nc_put_var_long(int ncid, int varid, const long *op)
959 {
960  return NC_put_var(ncid,varid,(void*)op,T_long);
961 }
962 
963 int
964 nc_put_var_float(int ncid, int varid, const float *op)
965 {
966  return NC_put_var(ncid,varid,(void*)op,T_float);
967 }
968 
969 int
970 nc_put_var_double(int ncid, int varid, const double *op)
971 {
972  return NC_put_var(ncid,varid,(void*)op,T_double);
973 }
974 
975 int
976 nc_put_var_ubyte(int ncid, int varid, const unsigned char *op)
977 {
978  return NC_put_var(ncid,varid,(void*)op,T_ubyte);
979 }
980 
981 int
982 nc_put_var_ushort(int ncid, int varid, const unsigned short *op)
983 {
984  return NC_put_var(ncid,varid,(void*)op,T_ushort);
985 }
986 
987 int
988 nc_put_var_uint(int ncid, int varid, const unsigned int *op)
989 {
990  return NC_put_var(ncid,varid,(void*)op,T_uint);
991 }
992 
993 int
994 nc_put_var_longlong(int ncid, int varid, const long long *op)
995 {
996  return NC_put_var(ncid,varid,(void*)op,T_longlong);
997 }
998 
999 int
1000 nc_put_var_ulonglong(int ncid, int varid, const unsigned long long *op)
1001 {
1002  return NC_put_var(ncid,varid,(void*)op,NC_UINT64);
1003 }
1004 
1005 int
1006 nc_put_var_string(int ncid, int varid, const char* *op)
1007 {
1008  return NC_put_var(ncid,varid,(void*)op,NC_STRING);
1009 }
1010 
1047 int
1048 nc_put_vars(int ncid, int varid, const size_t *startp,
1049  const size_t *countp, const ptrdiff_t *stridep,
1050  const void *op)
1051 {
1052  return NC_put_vars(ncid, varid, startp, countp, stridep, op, NC_NAT);
1053 }
1054 
1055 int
1056 nc_put_vars_text(int ncid, int varid, const size_t *startp,
1057  const size_t *countp, const ptrdiff_t *stridep,
1058  const char *op)
1059 {
1060  return NC_put_vars(ncid, varid, startp, countp,
1061  stridep,(void*)op,NC_CHAR);
1062 }
1063 
1064 int
1065 nc_put_vars_schar(int ncid, int varid, const size_t *startp,
1066  const size_t *countp, const ptrdiff_t *stridep,
1067  const signed char *op)
1068 {
1069  return NC_put_vars(ncid, varid, startp, countp,
1070  stridep,(void*)op,NC_BYTE);
1071 }
1072 
1073 int
1074 nc_put_vars_uchar(int ncid, int varid,
1075  const size_t *startp, const size_t *countp,
1076  const ptrdiff_t *stridep,
1077  const unsigned char *op)
1078 {
1079  return NC_put_vars(ncid, varid, startp, countp,
1080  stridep, (void *)op, T_uchar);
1081 }
1082 
1083 int
1084 nc_put_vars_short(int ncid, int varid,
1085  const size_t *startp, const size_t *countp,
1086  const ptrdiff_t *stridep,
1087  const short *op)
1088 {
1089  return NC_put_vars(ncid, varid, startp, countp,
1090  stridep, (void *)op, NC_SHORT);
1091 }
1092 
1093 int
1094 nc_put_vars_int(int ncid, int varid,
1095  const size_t *startp, const size_t *countp,
1096  const ptrdiff_t *stridep,
1097  const int *op)
1098 {
1099  return NC_put_vars(ncid, varid, startp, countp,
1100  stridep, (void *)op, NC_INT);
1101 }
1102 
1103 int
1104 nc_put_vars_long(int ncid, int varid,
1105  const size_t *startp, const size_t *countp,
1106  const ptrdiff_t *stridep,
1107  const long *op)
1108 {
1109  return NC_put_vars(ncid, varid, startp, countp,
1110  stridep, (void *)op, T_long);
1111 }
1112 
1113 int
1114 nc_put_vars_float(int ncid, int varid,
1115  const size_t *startp, const size_t *countp,
1116  const ptrdiff_t *stridep,
1117  const float *op)
1118 {
1119  return NC_put_vars(ncid, varid, startp, countp,
1120  stridep, (void *)op, T_float);
1121 }
1122 
1123 int
1124 nc_put_vars_double(int ncid, int varid,
1125  const size_t *startp, const size_t *countp,
1126  const ptrdiff_t *stridep,
1127  const double *op)
1128 {
1129  return NC_put_vars(ncid, varid, startp, countp,
1130  stridep, (void *)op, T_double);
1131 }
1132 
1133 int
1134 nc_put_vars_ubyte(int ncid, int varid,
1135  const size_t *startp, const size_t *countp,
1136  const ptrdiff_t *stridep,
1137  const unsigned char *op)
1138 {
1139  return NC_put_vars(ncid, varid, startp, countp,
1140  stridep, (void *)op, T_ubyte);
1141 }
1142 
1143 int
1144 nc_put_vars_ushort(int ncid, int varid,
1145  const size_t *startp, const size_t *countp,
1146  const ptrdiff_t *stridep,
1147  const unsigned short *op)
1148 {
1149  return NC_put_vars(ncid, varid, startp, countp,
1150  stridep, (void *)op, T_ushort);
1151 }
1152 
1153 int
1154 nc_put_vars_uint(int ncid, int varid,
1155  const size_t *startp, const size_t *countp,
1156  const ptrdiff_t *stridep,
1157  const unsigned int *op)
1158 {
1159  return NC_put_vars(ncid, varid, startp, countp,
1160  stridep, (void *)op, T_uint);
1161 }
1162 
1163 int
1164 nc_put_vars_longlong(int ncid, int varid,
1165  const size_t *startp, const size_t *countp,
1166  const ptrdiff_t *stridep,
1167  const long long *op)
1168 {
1169  return NC_put_vars(ncid, varid, startp, countp,
1170  stridep, (void *)op, T_longlong);
1171 }
1172 
1173 int
1174 nc_put_vars_ulonglong(int ncid, int varid,
1175  const size_t *startp, const size_t *countp,
1176  const ptrdiff_t *stridep,
1177  const unsigned long long *op)
1178 {
1179  return NC_put_vars(ncid, varid, startp, countp,
1180  stridep, (void *)op, NC_UINT64);
1181 }
1182 
1183 int
1184 nc_put_vars_string(int ncid, int varid,
1185  const size_t *startp, const size_t *countp,
1186  const ptrdiff_t *stridep,
1187  const char**op)
1188 {
1189  return NC_put_vars(ncid, varid, startp, countp, stridep,
1190  (void *)op, NC_STRING);
1191 }
1192 
1242 int
1243 nc_put_varm(int ncid, int varid, const size_t *startp,
1244  const size_t *countp, const ptrdiff_t *stridep,
1245  const ptrdiff_t *imapp, const void *op)
1246 {
1247  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp, op, NC_NAT);
1248 }
1249 
1250 int
1251 nc_put_varm_text(int ncid, int varid, const size_t *startp,
1252  const size_t *countp, const ptrdiff_t *stridep,
1253  const ptrdiff_t *imapp, const char *op)
1254 {
1255  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1256  (void *)op, NC_CHAR);
1257 }
1258 
1259 int
1260 nc_put_varm_schar(int ncid, int varid,
1261  const size_t *startp, const size_t *countp,
1262  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1263  const signed char *op)
1264 {
1265  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1266  (void *)op, NC_BYTE);
1267 }
1268 
1269 int
1270 nc_put_varm_uchar(int ncid, int varid,
1271  const size_t *startp, const size_t *countp,
1272  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1273  const unsigned char *op)
1274 {
1275  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1276  (void *)op, T_uchar);
1277 }
1278 
1279 int
1280 nc_put_varm_short(int ncid, int varid,
1281  const size_t *startp, const size_t *countp,
1282  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1283  const short *op)
1284 {
1285  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1286  (void *)op, NC_SHORT);
1287 }
1288 
1289 int
1290 nc_put_varm_int(int ncid, int varid,
1291  const size_t *startp, const size_t *countp,
1292  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1293  const int *op)
1294 {
1295  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1296  (void *)op, NC_INT);
1297 }
1298 
1299 int
1300 nc_put_varm_long(int ncid, int varid,
1301  const size_t *startp, const size_t *countp,
1302  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1303  const long *op)
1304 {
1305  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1306  (void *)op, T_long);
1307 }
1308 
1309 int
1310 nc_put_varm_float(int ncid, int varid,
1311  const size_t *startp, const size_t *countp,
1312  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1313  const float *op)
1314 {
1315  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1316  (void *)op, T_float);
1317 }
1318 
1319 int
1320 nc_put_varm_double(int ncid, int varid,
1321  const size_t *startp, const size_t *countp,
1322  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1323  const double *op)
1324 {
1325  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1326  (void *)op, T_double);
1327 }
1328 
1329 int
1330 nc_put_varm_ubyte(int ncid, int varid,
1331  const size_t *startp, const size_t *countp,
1332  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1333  const unsigned char *op)
1334 {
1335  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1336  (void *)op, T_ubyte);
1337 }
1338 
1339 int
1340 nc_put_varm_ushort(int ncid, int varid,
1341  const size_t *startp, const size_t *countp,
1342  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1343  const unsigned short *op)
1344 {
1345  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1346  (void *)op, T_ushort);
1347 }
1348 
1349 int
1350 nc_put_varm_uint(int ncid, int varid,
1351  const size_t *startp, const size_t *countp,
1352  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1353  const unsigned int *op)
1354 {
1355  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1356  (void *)op, T_uint);
1357 }
1358 
1359 int
1360 nc_put_varm_longlong(int ncid, int varid,
1361  const size_t *startp, const size_t *countp,
1362  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1363  const long long *op)
1364 {
1365  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1366  (void *)op, T_longlong);
1367 }
1368 
1369 int
1370 nc_put_varm_ulonglong(int ncid, int varid,
1371  const size_t *startp, const size_t *countp,
1372  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1373  const unsigned long long *op)
1374 {
1375  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1376  (void *)op, NC_UINT64);
1377 }
1378 
1379 int
1380 nc_put_varm_string(int ncid, int varid,
1381  const size_t *startp, const size_t *countp,
1382  const ptrdiff_t *stridep, const ptrdiff_t *imapp,
1383  const char**op)
1384 {
1385  return NC_put_varm(ncid, varid, startp, countp, stridep, imapp,
1386  (void *)op, NC_STRING);
1387 }
1388  /*End of named group... */
int nc_put_var_long(int ncid, int varid, const long *op)
Write an entire variable with one call.
Definition: dvarput.c:958
#define NC_ENOMEM
Memory allocation (malloc) failure.
Definition: netcdf.h:458
int nc_put_varm_ubyte(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const unsigned char *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1330
int nc_put_vars_double(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const double *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1124
#define NC_CHAR
ISO/ASCII character.
Definition: netcdf.h:36
int nc_put_vars_uchar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const unsigned char *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1074
int nc_put_vara_schar(int ncid, int varid, const size_t *startp, const size_t *countp, const signed char *op)
Write an array of values to a variable.
Definition: dvarput.c:654
int nc_put_var1_string(int ncid, int varid, const size_t *indexp, const char **op)
Write one datum.
Definition: dvarput.c:867
int nc_put_vars_uint(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const unsigned int *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1154
#define NC_UBYTE
unsigned 1 byte int
Definition: netcdf.h:42
#define NC_EMAPTYPE
Mapped access for atomic types only.
Definition: netcdf.h:511
#define NC_ERANGE
Math result not representable.
Definition: netcdf.h:457
#define NC_MAX_VAR_DIMS
max per variable dimensions
Definition: netcdf.h:292
int nc_put_vara_uchar(int ncid, int varid, const size_t *startp, const size_t *countp, const unsigned char *op)
Write an array of values to a variable.
Definition: dvarput.c:662
#define NC_UINT
unsigned 4-byte int
Definition: netcdf.h:44
int nc_put_var_uint(int ncid, int varid, const unsigned int *op)
Write an entire variable with one call.
Definition: dvarput.c:988
int nc_put_vars_longlong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const long long *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1164
int nc_put_vara_longlong(int ncid, int varid, const size_t *startp, const size_t *countp, const long long *op)
Write an array of values to a variable.
Definition: dvarput.c:734
int nc_put_var_ulonglong(int ncid, int varid, const unsigned long long *op)
Write an entire variable with one call.
Definition: dvarput.c:1000
int nc_put_varm_ushort(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const unsigned short *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1340
int nc_put_vars_int(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const int *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1094
#define NC_EINVALCOORDS
Index exceeds dimension bound.
Definition: netcdf.h:410
int nc_put_vars_ubyte(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const unsigned char *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1134
int nc_put_vars_ushort(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const unsigned short *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1144
int nc_put_var_schar(int ncid, int varid, const signed char *op)
Write an entire variable with one call.
Definition: dvarput.c:934
int nc_put_vara_double(int ncid, int varid, const size_t *startp, const size_t *countp, const double *op)
Write an array of values to a variable.
Definition: dvarput.c:702
int nc_put_var_int(int ncid, int varid, const int *op)
Write an entire variable with one call.
Definition: dvarput.c:952
int nc_put_var1_uchar(int ncid, int varid, const size_t *indexp, const unsigned char *op)
Write one datum.
Definition: dvarput.c:801
int nc_put_vara_float(int ncid, int varid, const size_t *startp, const size_t *countp, const float *op)
Write an array of values to a variable.
Definition: dvarput.c:694
#define NC_INT64
signed 8-byte int
Definition: netcdf.h:45
int nc_put_var(int ncid, int varid, const void *op)
Write an entire variable with one call.
Definition: dvarput.c:922
int nc_put_var1_ushort(int ncid, int varid, const size_t *indexp, const unsigned short *op)
Write one datum.
Definition: dvarput.c:843
#define NC_STRING
string
Definition: netcdf.h:47
int nc_put_vara(int ncid, int varid, const size_t *startp, const size_t *countp, const void *op)
Write an array of values to a variable.
Definition: dvarput.c:633
#define NC_DOUBLE
double precision floating point number
Definition: netcdf.h:41
EXTERNL int nc_inq_varndims(int ncid, int varid, int *ndimsp)
Learn how many dimensions are associated with a variable.
Definition: dvarinq.c:202
int nc_put_var1_double(int ncid, int varid, const size_t *indexp, const double *op)
Write one datum.
Definition: dvarput.c:831
int nc_put_varm(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const void *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1243
int nc_put_vars_short(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const short *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1084
int nc_type
The nc_type type is just an int.
Definition: netcdf.h:25
int nc_put_varm_int(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const int *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1290
int nc_put_vars(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const void *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1048
int nc_put_var_string(int ncid, int varid, const char **op)
Write an entire variable with one call.
Definition: dvarput.c:1006
int nc_put_vara_short(int ncid, int varid, const size_t *startp, const size_t *countp, const short *op)
Write an array of values to a variable.
Definition: dvarput.c:670
#define NC_BYTE
signed 1 byte integer
Definition: netcdf.h:35
int nc_put_vara_uint(int ncid, int varid, const size_t *startp, const size_t *countp, const unsigned int *op)
Write an array of values to a variable.
Definition: dvarput.c:726
int nc_put_varm_short(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const short *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1280
int nc_put_var_ubyte(int ncid, int varid, const unsigned char *op)
Write an entire variable with one call.
Definition: dvarput.c:976
int nc_put_vars_float(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const float *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1114
int nc_put_vara_string(int ncid, int varid, const size_t *startp, const size_t *countp, const char **op)
Write an array of values to a variable.
Definition: dvarput.c:750
int nc_put_vara_text(int ncid, int varid, const size_t *startp, const size_t *countp, const char *op)
Write an array of values to a variable.
Definition: dvarput.c:646
int nc_put_var1_float(int ncid, int varid, const size_t *indexp, const float *op)
Write one datum.
Definition: dvarput.c:825
int nc_put_var_longlong(int ncid, int varid, const long long *op)
Write an entire variable with one call.
Definition: dvarput.c:994
int nc_put_vara_ubyte(int ncid, int varid, const size_t *startp, const size_t *countp, const unsigned char *op)
Write an array of values to a variable.
Definition: dvarput.c:710
int nc_put_varm_text(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const char *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1251
int nc_put_var1_int(int ncid, int varid, const size_t *indexp, const int *op)
Write one datum.
Definition: dvarput.c:813
int nc_put_varm_string(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const char **op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1380
int nc_put_varm_ulonglong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const unsigned long long *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1370
int nc_put_vara_ushort(int ncid, int varid, const size_t *startp, const size_t *countp, const unsigned short *op)
Write an array of values to a variable.
Definition: dvarput.c:718
#define NC_EBADTYPE
Not a netcdf data type.
Definition: netcdf.h:420
int nc_put_var1_longlong(int ncid, int varid, const size_t *indexp, const long long *op)
Write one datum.
Definition: dvarput.c:855
#define NC_EEDGE
Start+count exceeds dimension bound.
Definition: netcdf.h:448
int nc_put_vara_long(int ncid, int varid, const size_t *startp, const size_t *countp, const long *op)
Write an array of values to a variable.
Definition: dvarput.c:686
#define NC_ESTRIDE
Illegal stride.
Definition: netcdf.h:449
int nc_put_varm_longlong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const long long *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1360
int nc_put_var1(int ncid, int varid, const size_t *indexp, const void *op)
Write one datum.
Definition: dvarput.c:783
#define NC_INT
signed 4 byte integer
Definition: netcdf.h:38
#define NC_NAT
Not A Type.
Definition: netcdf.h:34
int nc_put_var1_schar(int ncid, int varid, const size_t *indexp, const signed char *op)
Write one datum.
Definition: dvarput.c:795
EXTERNL int nc_inq_vartype(int ncid, int varid, nc_type *xtypep)
Learn the type of a variable.
Definition: dvarinq.c:178
EXTERNL int nc_inq_type(int ncid, nc_type xtype, char *name, size_t *size)
Inquire about a type.
Definition: dfile.c:1728
int nc_put_vara_int(int ncid, int varid, const size_t *startp, const size_t *countp, const int *op)
Write an array of values to a variable.
Definition: dvarput.c:678
int nc_put_varm_schar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const signed char *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1260
#define NC_USHORT
unsigned 2-byte int
Definition: netcdf.h:43
int nc_put_var1_ulonglong(int ncid, int varid, const size_t *indexp, const unsigned long long *op)
Write one datum.
Definition: dvarput.c:861
int nc_put_varm_double(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const double *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1320
int nc_put_var1_short(int ncid, int varid, const size_t *indexp, const short *op)
Write one datum.
Definition: dvarput.c:807
int nc_put_var_double(int ncid, int varid, const double *op)
Write an entire variable with one call.
Definition: dvarput.c:970
int nc_put_varm_long(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const long *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1300
int nc_put_var_text(int ncid, int varid, const char *op)
Write an entire variable with one call.
Definition: dvarput.c:928
#define NC_SHORT
signed 2 byte integer
Definition: netcdf.h:37
int nc_put_varm_uint(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const unsigned int *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1350
int nc_put_var1_text(int ncid, int varid, const size_t *indexp, const char *op)
Write one datum.
Definition: dvarput.c:789
int nc_put_vara_ulonglong(int ncid, int varid, const size_t *startp, const size_t *countp, const unsigned long long *op)
Write an array of values to a variable.
Definition: dvarput.c:742
int nc_put_var_float(int ncid, int varid, const float *op)
Write an entire variable with one call.
Definition: dvarput.c:964
int nc_put_vars_text(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const char *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1056
int nc_put_var1_long(int ncid, int varid, const size_t *indexp, const long *op)
Write one datum.
Definition: dvarput.c:819
int nc_put_var_ushort(int ncid, int varid, const unsigned short *op)
Write an entire variable with one call.
Definition: dvarput.c:982
int nc_put_vars_schar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const signed char *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1065
#define NC_NOERR
No Error.
Definition: netcdf.h:378
int nc_put_vars_long(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const long *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1104
#define NC_ECHAR
Attempt to convert between text & numbers.
Definition: netcdf.h:439
int nc_put_vars_ulonglong(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const unsigned long long *op)
Write a strided array of values to a variable.
Definition: dvarput.c:1174
int nc_put_var1_uint(int ncid, int varid, const size_t *indexp, const unsigned int *op)
Write one datum.
Definition: dvarput.c:849
int nc_put_var_uchar(int ncid, int varid, const unsigned char *op)
Write an entire variable with one call.
Definition: dvarput.c:940
int nc_put_var_short(int ncid, int varid, const short *op)
Write an entire variable with one call.
Definition: dvarput.c:946
#define NC_FLOAT
single precision floating point number
Definition: netcdf.h:40
int nc_put_varm_float(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const float *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1310
int nc_put_var1_ubyte(int ncid, int varid, const size_t *indexp, const unsigned char *op)
Write one datum.
Definition: dvarput.c:837
int nc_put_varm_uchar(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const ptrdiff_t *imapp, const unsigned char *op)
Write a mapped array of values to a variable.
Definition: dvarput.c:1270
#define NC_UINT64
unsigned 8-byte int
Definition: netcdf.h:46
int nc_put_vars_string(int ncid, int varid, const size_t *startp, const size_t *countp, const ptrdiff_t *stridep, const char **op)
Write a strided array of values to a variable.
Definition: dvarput.c:1184