NetCDF 4.9.3
Loading...
Searching...
No Matches
dvarput.c
Go to the documentation of this file.
1
7
8#include "ncdispatch.h"
9
10struct 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
29static void
30odom_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
53static int
54odom_more(struct PUTodometer* odom)
55{
56 return (odom->index[0] < odom->stop[0]);
57}
58
66static int
67odom_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
83static int
84NC_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
105static int
106NC_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
120static int
121NC_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
130int
131NCDEFAULT_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
299int
300NCDEFAULT_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
529static int
530NC_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
558static int
559NC_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
632int
633nc_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
645int
646nc_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
653int
654nc_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
661int
662nc_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
669int
670nc_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
677int
678nc_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
685int
686nc_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
693int
694nc_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
701int
702nc_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
709int
710nc_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
717int
718nc_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
725int
726nc_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
733int
734nc_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
741int
742nc_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
749int
750nc_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
758
782int
783nc_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
788int
789nc_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
794int
795nc_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
800int
801nc_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
806int
807nc_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
812int
813nc_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
818int
819nc_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
824int
825nc_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
830int
831nc_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
836int
837nc_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
842int
843nc_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
848int
849nc_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
854int
855nc_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
860int
861nc_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
866int
867nc_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
873
921int
922nc_put_var(int ncid, int varid, const void *op)
923{
924 return NC_put_var(ncid, varid, op, NC_NAT);
925}
926
927int
928nc_put_var_text(int ncid, int varid, const char *op)
929{
930 return NC_put_var(ncid,varid,(void*)op,NC_CHAR);
931}
932
933int
934nc_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
939int
940nc_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
945int
946nc_put_var_short(int ncid, int varid, const short *op)
947{
948 return NC_put_var(ncid,varid,(void*)op,NC_SHORT);
949}
950
951int
952nc_put_var_int(int ncid, int varid, const int *op)
953{
954 return NC_put_var(ncid,varid,(void*)op,NC_INT);
955}
956
957int
958nc_put_var_long(int ncid, int varid, const long *op)
959{
960 return NC_put_var(ncid,varid,(void*)op,T_long);
961}
962
963int
964nc_put_var_float(int ncid, int varid, const float *op)
965{
966 return NC_put_var(ncid,varid,(void*)op,T_float);
967}
968
969int
970nc_put_var_double(int ncid, int varid, const double *op)
971{
972 return NC_put_var(ncid,varid,(void*)op,T_double);
973}
974
975int
976nc_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
981int
982nc_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
987int
988nc_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
993int
994nc_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
999int
1000nc_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
1005int
1006nc_put_var_string(int ncid, int varid, const char* *op)
1007{
1008 return NC_put_var(ncid,varid,(void*)op,NC_STRING);
1009}
1010
1012
1047int
1048nc_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
1055int
1056nc_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
1064int
1065nc_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
1073int
1074nc_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
1083int
1084nc_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
1093int
1094nc_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
1103int
1104nc_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
1113int
1114nc_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
1123int
1124nc_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
1133int
1134nc_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
1143int
1144nc_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
1153int
1154nc_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
1163int
1164nc_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
1173int
1174nc_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
1183int
1184nc_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
1194
1242int
1243nc_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
1250int
1251nc_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
1259int
1260nc_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
1269int
1270nc_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
1279int
1280nc_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
1289int
1290nc_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
1299int
1300nc_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
1309int
1310nc_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
1319int
1320nc_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
1329int
1330nc_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
1339int
1340nc_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
1349int
1350nc_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
1359int
1360nc_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
1369int
1370nc_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
1379int
1380nc_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
1390 /*End of named group... */
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_var_ushort(int ncid, int varid, const unsigned short *op)
Write an entire variable with one call.
Definition dvarput.c:982
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_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_var_longlong(int ncid, int varid, const long long *op)
Write an entire variable with one call.
Definition dvarput.c:994
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_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_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
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_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
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_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
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
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_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
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_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_var_short(int ncid, int varid, const short *op)
Write an entire variable with one call.
Definition dvarput.c:946
int nc_put_var1_ushort(int ncid, int varid, const size_t *indexp, const unsigned short *op)
Write one datum.
Definition dvarput.c:843
int nc_put_var_long(int ncid, int varid, const long *op)
Write an entire variable with one call.
Definition dvarput.c:958
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_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
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(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_var_float(int ncid, int varid, const float *op)
Write an entire variable with one call.
Definition dvarput.c:964
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(int ncid, int varid, const void *op)
Write an entire variable with one call.
Definition dvarput.c:922
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_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_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_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_var_double(int ncid, int varid, const double *op)
Write an entire variable with one call.
Definition dvarput.c:970
int nc_put_var_text(int ncid, int varid, const char *op)
Write an entire variable with one call.
Definition dvarput.c:928
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_ubyte(int ncid, int varid, const size_t *indexp, const unsigned char *op)
Write one datum.
Definition dvarput.c:837
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_var_string(int ncid, int varid, const char **op)
Write an entire variable with one call.
Definition dvarput.c:1006
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_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_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
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_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
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_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_var_schar(int ncid, int varid, const signed char *op)
Write an entire variable with one call.
Definition dvarput.c:934
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_var_int(int ncid, int varid, const int *op)
Write an entire variable with one call.
Definition dvarput.c:952
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_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_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_ulonglong(int ncid, int varid, const size_t *indexp, const unsigned long long *op)
Write one datum.
Definition dvarput.c:861
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
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_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_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_var1_long(int ncid, int varid, const size_t *indexp, const long *op)
Write one datum.
Definition dvarput.c:819
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_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_var1_longlong(int ncid, int varid, const size_t *indexp, const long long *op)
Write one datum.
Definition dvarput.c:855
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
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_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_ubyte(int ncid, int varid, const unsigned char *op)
Write an entire variable with one call.
Definition dvarput.c:976
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_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_var1(int ncid, int varid, const size_t *indexp, const void *op)
Write one datum.
Definition dvarput.c:783
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_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
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
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_var1_int(int ncid, int varid, const size_t *indexp, const int *op)
Write one datum.
Definition dvarput.c:813
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
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_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
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_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_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_ECHAR
Attempt to convert between text & numbers.
Definition netcdf.h:439
#define NC_EBADTYPE
Not a netcdf data type.
Definition netcdf.h:420
#define NC_UINT
unsigned 4-byte int
Definition netcdf.h:44
#define NC_INT
signed 4 byte integer
Definition netcdf.h:38
#define NC_MAX_VAR_DIMS
max per variable dimensions
Definition netcdf.h:292
#define NC_BYTE
signed 1 byte integer
Definition netcdf.h:35
#define NC_NAT
Not A Type.
Definition netcdf.h:34
#define NC_EEDGE
Start+count exceeds dimension bound.
Definition netcdf.h:448
#define NC_DOUBLE
double precision floating point number
Definition netcdf.h:41
#define NC_UBYTE
unsigned 1 byte int
Definition netcdf.h:42
#define NC_FLOAT
single precision floating point number
Definition netcdf.h:40
#define NC_ENOMEM
Memory allocation (malloc) failure.
Definition netcdf.h:458
#define NC_SHORT
signed 2 byte integer
Definition netcdf.h:37
#define NC_EINVALCOORDS
Index exceeds dimension bound.
Definition netcdf.h:410
#define NC_INT64
signed 8-byte int
Definition netcdf.h:45
#define NC_UINT64
unsigned 8-byte int
Definition netcdf.h:46
#define NC_NOERR
No Error.
Definition netcdf.h:378
#define NC_USHORT
unsigned 2-byte int
Definition netcdf.h:43
#define NC_STRING
string
Definition netcdf.h:47
#define NC_EMAPTYPE
Mapped access for atomic types only.
Definition netcdf.h:511
#define NC_ESTRIDE
Illegal stride.
Definition netcdf.h:449
#define NC_CHAR
ISO/ASCII character.
Definition netcdf.h:36
#define NC_ERANGE
Math result not representable.
Definition netcdf.h:457
int nc_type
The nc_type type is just an int.
Definition netcdf.h:25