Doxygen Source Code Documentation
attr.c File Reference
#include "nc.h"
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "ncx.h"
#include "fbits.h"
#include "rnd.h"
Go to the source code of this file.
Functions | |
void | free_NC_attr (NC_attr *attrp) |
size_t | ncx_len_NC_attrV (nc_type type, size_t nelems) |
NC_attr * | new_x_NC_attr (NC_string *strp, nc_type type, size_t nelems) |
NC_attr * | new_NC_attr (const char *name, nc_type type, size_t nelems) |
NC_attr * | dup_NC_attr (const NC_attr *rattrp) |
void | free_NC_attrarrayV0 (NC_attrarray *ncap) |
void | free_NC_attrarrayV (NC_attrarray *ncap) |
int | dup_NC_attrarrayV (NC_attrarray *ncap, const NC_attrarray *ref) |
int | incr_NC_attrarray (NC_attrarray *ncap, NC_attr *newelemp) |
NC_attr * | elem_NC_attrarray (const NC_attrarray *ncap, size_t elem) |
NC_attrarray * | NC_attrarray0 (NC *ncp, int varid) |
NC_attr ** | NC_findattr (const NC_attrarray *ncap, const char *name) |
int | NC_lookupattr (int ncid, int varid, const char *name, NC_attr **attrpp) |
int | nc_inq_attname (int ncid, int varid, int attnum, char *name) |
int | nc_inq_attid (int ncid, int varid, const char *name, int *attnump) |
int | nc_inq_atttype (int ncid, int varid, const char *name, nc_type *datatypep) |
int | nc_inq_attlen (int ncid, int varid, const char *name, size_t *lenp) |
int | nc_inq_att (int ncid, int varid, const char *name, nc_type *datatypep, size_t *lenp) |
int | nc_rename_att (int ncid, int varid, const char *name, const char *newname) |
int | nc_copy_att (int ncid_in, int varid_in, const char *name, int ncid_out, int ovarid) |
int | nc_del_att (int ncid, int varid, const char *name) |
int | ncx_pad_putn_Iuchar (void **xpp, size_t nelems, const uchar *tp, nc_type type) |
int | ncx_pad_getn_Iuchar (const void **xpp, size_t nelems, uchar *tp, nc_type type) |
int | ncx_pad_putn_Ischar (void **xpp, size_t nelems, const schar *tp, nc_type type) |
int | ncx_pad_getn_Ischar (const void **xpp, size_t nelems, schar *tp, nc_type type) |
int | ncx_pad_putn_Ishort (void **xpp, size_t nelems, const short *tp, nc_type type) |
int | ncx_pad_getn_Ishort (const void **xpp, size_t nelems, short *tp, nc_type type) |
int | ncx_pad_putn_Iint (void **xpp, size_t nelems, const int *tp, nc_type type) |
int | ncx_pad_getn_Iint (const void **xpp, size_t nelems, int *tp, nc_type type) |
int | ncx_pad_putn_Ilong (void **xpp, size_t nelems, const long *tp, nc_type type) |
int | ncx_pad_getn_Ilong (const void **xpp, size_t nelems, long *tp, nc_type type) |
int | ncx_pad_putn_Ifloat (void **xpp, size_t nelems, const float *tp, nc_type type) |
int | ncx_pad_getn_Ifloat (const void **xpp, size_t nelems, float *tp, nc_type type) |
int | ncx_pad_putn_Idouble (void **xpp, size_t nelems, const double *tp, nc_type type) |
int | ncx_pad_getn_Idouble (const void **xpp, size_t nelems, double *tp, nc_type type) |
int | nc_put_att_text (int ncid, int varid, const char *name, size_t nelems, const char *value) |
int | nc_get_att_text (int ncid, int varid, const char *name, char *str) |
int | nc_put_att_schar (int ncid, int varid, const char *name, nc_type type, size_t nelems, const signed char *value) |
int | nc_get_att_schar (int ncid, int varid, const char *name, signed char *tp) |
int | nc_put_att_uchar (int ncid, int varid, const char *name, nc_type type, size_t nelems, const unsigned char *value) |
int | nc_get_att_uchar (int ncid, int varid, const char *name, unsigned char *tp) |
int | nc_put_att_short (int ncid, int varid, const char *name, nc_type type, size_t nelems, const short *value) |
int | nc_get_att_short (int ncid, int varid, const char *name, short *tp) |
int | nc_put_att_int (int ncid, int varid, const char *name, nc_type type, size_t nelems, const int *value) |
int | nc_get_att_int (int ncid, int varid, const char *name, int *tp) |
int | nc_put_att_long (int ncid, int varid, const char *name, nc_type type, size_t nelems, const long *value) |
int | nc_get_att_long (int ncid, int varid, const char *name, long *tp) |
int | nc_put_att_float (int ncid, int varid, const char *name, nc_type type, size_t nelems, const float *value) |
int | nc_get_att_float (int ncid, int varid, const char *name, float *tp) |
int | nc_put_att_double (int ncid, int varid, const char *name, nc_type type, size_t nelems, const double *value) |
int | nc_get_att_double (int ncid, int varid, const char *name, double *tp) |
int | nc_put_att (int ncid, int varid, const char *name, nc_type type, size_t nelems, const void *value) |
int | nc_get_att (int ncid, int varid, const char *name, void *value) |
Function Documentation
|
Definition at line 121 of file attr.c. References NC_string::cp, NC_attr::name, NC_attr::nelems, new_NC_attr(), NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by dup_NC_attrarrayV().
|
|
Definition at line 184 of file attr.c. References dup_NC_attr(), free_NC_attrarrayV(), malloc, NC_attrarray::nalloc, NC_attrarray::nelems, ref, and NC_attrarray::value. Referenced by dup_NC(), and dup_NC_var().
00185 { 00186 int status = NC_NOERR; 00187 00188 assert(ref != NULL); 00189 assert(ncap != NULL); 00190 00191 if(ref->nelems != 0) 00192 { 00193 const size_t sz = ref->nelems * sizeof(NC_attr *); 00194 ncap->value = (NC_attr **) malloc(sz); 00195 if(ncap->value == NULL) 00196 return NC_ENOMEM; 00197 00198 (void) memset(ncap->value, 0, sz); 00199 ncap->nalloc = ref->nelems; 00200 } 00201 00202 ncap->nelems = 0; 00203 { 00204 NC_attr **app = ncap->value; 00205 const NC_attr **drpp = (const NC_attr **)ref->value; 00206 NC_attr *const *const end = &app[ref->nelems]; 00207 for( /*NADA*/; app < end; drpp++, app++, ncap->nelems++) 00208 { 00209 *app = dup_NC_attr(*drpp); 00210 if(*app == NULL) 00211 { 00212 status = NC_ENOMEM; 00213 break; 00214 } 00215 } 00216 } 00217 00218 if(status != NC_NOERR) 00219 { 00220 free_NC_attrarrayV(ncap); 00221 return status; 00222 } 00223 00224 assert(ncap->nelems == ref->nelems); 00225 00226 return NC_NOERR; 00227 } |
|
Definition at line 273 of file attr.c. References NC_attrarray::nelems, and NC_attrarray::value. Referenced by nc_inq_attname().
|
|
Definition at line 22 of file attr.c. References free, free_NC_string(), and NC_attr::name. Referenced by free_NC_attrarrayV0(), nc_copy_att(), nc_del_att(), nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), nc_put_att_uchar(), and v1h_get_NC_attr().
00023 { 00024 00025 if(attrp == NULL) 00026 return; 00027 free_NC_string(attrp->name); 00028 free(attrp); 00029 } |
|
Definition at line 166 of file attr.c. References free, free_NC_attrarrayV0(), NC_attrarray::nalloc, and NC_attrarray::value. Referenced by dup_NC_attrarrayV(), free_NC(), free_NC_var(), read_NC(), and v1h_get_NC_attrarray().
|
|
Definition at line 138 of file attr.c. References free_NC_attr(), NC_attrarray::nelems, and NC_attrarray::value. Referenced by free_NC_attrarrayV().
00139 { 00140 assert(ncap != NULL); 00141 00142 if(ncap->nelems == 0) 00143 return; 00144 00145 assert(ncap->value != NULL); 00146 00147 { 00148 NC_attr **app = ncap->value; 00149 NC_attr *const *const end = &app[ncap->nelems]; 00150 for( /*NADA*/; app < end; app++) 00151 { 00152 free_NC_attr(*app); 00153 *app = NULL; 00154 } 00155 } 00156 ncap->nelems = 0; 00157 } |
|
Definition at line 236 of file attr.c. References malloc, NC_attrarray::nalloc, NC_ARRAY_GROWBY, NC_attrarray::nelems, realloc, and NC_attrarray::value. Referenced by nc_copy_att(), nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), and nc_put_att_uchar().
00237 { 00238 NC_attr **vp; 00239 00240 assert(ncap != NULL); 00241 00242 if(ncap->nalloc == 0) 00243 { 00244 assert(ncap->nelems == 0); 00245 vp = (NC_attr **) malloc(NC_ARRAY_GROWBY * sizeof(NC_attr *)); 00246 if(vp == NULL) 00247 return NC_ENOMEM; 00248 00249 ncap->value = vp; 00250 ncap->nalloc = NC_ARRAY_GROWBY; 00251 } 00252 else if(ncap->nelems +1 > ncap->nalloc) 00253 { 00254 vp = (NC_attr **) realloc(ncap->value, 00255 (ncap->nalloc + NC_ARRAY_GROWBY) * sizeof(NC_attr *)); 00256 if(vp == NULL) 00257 return NC_ENOMEM; 00258 00259 ncap->value = vp; 00260 ncap->nalloc += NC_ARRAY_GROWBY; 00261 } 00262 00263 if(newelemp != NULL) 00264 { 00265 ncap->value[ncap->nelems] = newelemp; 00266 ncap->nelems++; 00267 } 00268 return NC_NOERR; 00269 } |
|
Definition at line 292 of file attr.c. References NC::attrs, NC_vararray::nelems, NC_vararray::value, and NC::vars. Referenced by nc_copy_att(), nc_del_att(), nc_inq_attid(), nc_inq_attname(), NC_lookupattr(), nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), nc_put_att_uchar(), and nc_rename_att().
00293 { 00294 NC_attrarray *ap; 00295 00296 if(varid == NC_GLOBAL) /* Global attribute, attach to cdf */ 00297 { 00298 ap = &ncp->attrs; 00299 } 00300 else if(varid >= 0 && (size_t) varid < ncp->vars.nelems) 00301 { 00302 NC_var **vpp; 00303 vpp = (NC_var **)ncp->vars.value; 00304 vpp += varid; 00305 ap = &(*vpp)->attrs; 00306 } else { 00307 ap = NULL; 00308 } 00309 return(ap); 00310 } |
|
Definition at line 555 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_doHsync, NC_findattr(), NC_indef, NC_lookupattr(), NC_readonly, NC_sync(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by ncattcopy().
00556 { 00557 int status; 00558 NC_attr *iattrp; 00559 NC *ncp; 00560 NC_attrarray *ncap; 00561 NC_attr **attrpp; 00562 NC_attr *old = NULL; 00563 NC_attr *attrp; 00564 00565 status = NC_lookupattr(ncid_in, varid_in, name, &iattrp); 00566 if(status != NC_NOERR) 00567 return status; 00568 00569 status = NC_check_id(ncid_out, &ncp); 00570 if(status != NC_NOERR) 00571 return status; 00572 00573 if(NC_readonly(ncp)) 00574 return NC_EPERM; 00575 00576 ncap = NC_attrarray0(ncp, ovarid); 00577 if(ncap == NULL) 00578 return NC_ENOTVAR; 00579 00580 attrpp = NC_findattr(ncap, name); 00581 if(attrpp != NULL) /* name in use */ 00582 { 00583 if(!NC_indef(ncp) ) 00584 { 00585 attrp = *attrpp; /* convenience */ 00586 00587 if(iattrp->xsz > attrp->xsz) 00588 return NC_ENOTINDEFINE; 00589 /* else, we can reuse existing without redef */ 00590 00591 attrp->xsz = iattrp->xsz; 00592 attrp->type = iattrp->type; 00593 attrp->nelems = iattrp->nelems; 00594 00595 (void) memcpy(attrp->xvalue, iattrp->xvalue, 00596 iattrp->xsz); 00597 00598 set_NC_hdirty(ncp); 00599 00600 if(NC_doHsync(ncp)) 00601 { 00602 status = NC_sync(ncp); 00603 if(status != NC_NOERR) 00604 return status; 00605 } 00606 00607 return NC_NOERR; 00608 } 00609 /* else, redefine using existing array slot */ 00610 old = *attrpp; 00611 } 00612 else 00613 { 00614 if(!NC_indef(ncp)) 00615 return NC_ENOTINDEFINE; 00616 00617 if(ncap->nelems >= NC_MAX_ATTRS) 00618 return NC_EMAXATTS; 00619 } 00620 00621 attrp = new_NC_attr(name, iattrp->type, iattrp->nelems); 00622 if(attrp == NULL) 00623 return NC_ENOMEM; 00624 00625 (void) memcpy(attrp->xvalue, iattrp->xvalue, 00626 iattrp->xsz); 00627 00628 if(attrpp != NULL) 00629 { 00630 assert(old != NULL); 00631 *attrpp = attrp; 00632 free_NC_attr(old); 00633 } 00634 else 00635 { 00636 status = incr_NC_attrarray(ncap, attrp); 00637 if(status != NC_NOERR) 00638 { 00639 free_NC_attr(attrp); 00640 return status; 00641 } 00642 } 00643 00644 return NC_NOERR; 00645 } |
|
Definition at line 649 of file attr.c. References free_NC_attr(), name, NC_attrarray0(), NC_check_id(), NC_indef, NC_attrarray::nelems, and NC_attrarray::value. Referenced by main(), and ncattdel().
00650 { 00651 int status; 00652 NC *ncp; 00653 NC_attrarray *ncap; 00654 NC_attr **attrpp; 00655 NC_attr *old = NULL; 00656 int attrid; 00657 size_t slen; 00658 00659 status = NC_check_id(ncid, &ncp); 00660 if(status != NC_NOERR) 00661 return status; 00662 00663 if(!NC_indef(ncp)) 00664 return NC_ENOTINDEFINE; 00665 00666 ncap = NC_attrarray0(ncp, varid); 00667 if(ncap == NULL) 00668 return NC_ENOTVAR; 00669 00670 /* sortof inline NC_findattr() */ 00671 slen = strlen(name); 00672 00673 attrpp = (NC_attr **) ncap->value; 00674 for(attrid = 0; (size_t) attrid < ncap->nelems; attrid++, attrpp++) 00675 { 00676 if( slen == (*attrpp)->name->nchars && 00677 strncmp(name, (*attrpp)->name->cp, slen) == 0) 00678 { 00679 old = *attrpp; 00680 break; 00681 } 00682 } 00683 if( (size_t) attrid == ncap->nelems ) 00684 return NC_ENOTATT; 00685 /* end inline NC_findattr() */ 00686 00687 /* shuffle down */ 00688 for(attrid++; (size_t) attrid < ncap->nelems; attrid++) 00689 { 00690 *attrpp = *(attrpp + 1); 00691 attrpp++; 00692 } 00693 *attrpp = NULL; 00694 /* decrement count */ 00695 ncap->nelems--; 00696 00697 free_NC_attr(old); 00698 00699 return NC_NOERR; 00700 } |
|
Definition at line 318 of file attr.c. References name, NC_attrarray::nelems, and NC_attrarray::value. Referenced by fill_NC_var(), nc_copy_att(), nc_inq_attid(), NC_lookupattr(), nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), nc_put_att_uchar(), and nc_rename_att().
00319 { 00320 NC_attr **attrpp; 00321 size_t attrid; 00322 size_t slen; 00323 00324 assert(ncap != NULL); 00325 00326 if(ncap->nelems == 0) 00327 return NULL; 00328 00329 attrpp = (NC_attr **) ncap->value; 00330 00331 slen = strlen(name); 00332 00333 for(attrid = 0; attrid < ncap->nelems; attrid++, attrpp++) 00334 { 00335 if(strlen((*attrpp)->name->cp) == slen && 00336 strncmp((*attrpp)->name->cp, name, slen) == 0) 00337 { 00338 return(attrpp); /* Normal return */ 00339 } 00340 } 00341 return(NULL); 00342 } |
|
Definition at line 2214 of file attr.c. References name, nc_get_att_double(), nc_get_att_float(), nc_get_att_int(), nc_get_att_long(), nc_get_att_schar(), nc_get_att_short(), nc_get_att_text(), NC_lookupattr(), and NC_attr::type. Referenced by ncattget().
02215 { 02216 int status; 02217 NC_attr *attrp; 02218 02219 status = NC_lookupattr(ncid, varid, name, &attrp); 02220 if(status != NC_NOERR) 02221 return status; 02222 02223 switch (attrp->type) { 02224 case NC_BYTE: 02225 return nc_get_att_schar(ncid, varid, name, 02226 (schar *)value); 02227 case NC_CHAR: 02228 return nc_get_att_text(ncid, varid, name, 02229 (char *)value); 02230 case NC_SHORT: 02231 return nc_get_att_short(ncid, varid, name, 02232 (short *)value); 02233 case NC_INT: 02234 #if (SIZEOF_INT >= X_SIZEOF_INT) 02235 return nc_get_att_int(ncid, varid, name, 02236 (int *)value); 02237 #elif SIZEOF_LONG == X_SIZEOF_INT 02238 return nc_get_att_long(ncid, varid, name, 02239 (long *)value); 02240 #endif 02241 case NC_FLOAT: 02242 return nc_get_att_float(ncid, varid, name, 02243 (float *)value); 02244 case NC_DOUBLE: 02245 return nc_get_att_double(ncid, varid, name, 02246 (double *)value); 02247 } 02248 return NC_EBADTYPE; 02249 } |
|
Definition at line 2150 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_Idouble(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue. Referenced by do_ncdump(), main(), nc_get_att(), and pr_att().
02151 { 02152 int status; 02153 NC_attr *attrp; 02154 02155 status = NC_lookupattr(ncid, varid, name, &attrp); 02156 if(status != NC_NOERR) 02157 return status; 02158 02159 if(attrp->nelems == 0) 02160 return NC_NOERR; 02161 02162 if(attrp->type == NC_CHAR) 02163 return NC_ECHAR; 02164 02165 { 02166 const void *xp = attrp->xvalue; 02167 return ncx_pad_getn_Idouble(&xp, attrp->nelems, tp, attrp->type); 02168 } 02169 } |
|
Definition at line 2003 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_Ifloat(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue. Referenced by nc_get_att(), read_mincdim(), THD_load_minc(), and THD_open_minc().
02004 { 02005 int status; 02006 NC_attr *attrp; 02007 02008 status = NC_lookupattr(ncid, varid, name, &attrp); 02009 if(status != NC_NOERR) 02010 return status; 02011 02012 if(attrp->nelems == 0) 02013 return NC_NOERR; 02014 02015 if(attrp->type == NC_CHAR) 02016 return NC_ECHAR; 02017 02018 { 02019 const void *xp = attrp->xvalue; 02020 return ncx_pad_getn_Ifloat(&xp, attrp->nelems, tp, attrp->type); 02021 } 02022 } |
|
Definition at line 1709 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_Iint(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue. Referenced by nc_get_att().
01710 { 01711 int status; 01712 NC_attr *attrp; 01713 01714 status = NC_lookupattr(ncid, varid, name, &attrp); 01715 if(status != NC_NOERR) 01716 return status; 01717 01718 if(attrp->nelems == 0) 01719 return NC_NOERR; 01720 01721 if(attrp->type == NC_CHAR) 01722 return NC_ECHAR; 01723 01724 { 01725 const void *xp = attrp->xvalue; 01726 return ncx_pad_getn_Iint(&xp, attrp->nelems, tp, attrp->type); 01727 } 01728 } |
|
Definition at line 1856 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_Ilong(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue. Referenced by nc_get_att().
01857 { 01858 int status; 01859 NC_attr *attrp; 01860 01861 status = NC_lookupattr(ncid, varid, name, &attrp); 01862 if(status != NC_NOERR) 01863 return status; 01864 01865 if(attrp->nelems == 0) 01866 return NC_NOERR; 01867 01868 if(attrp->type == NC_CHAR) 01869 return NC_ECHAR; 01870 01871 { 01872 const void *xp = attrp->xvalue; 01873 return ncx_pad_getn_Ilong(&xp, attrp->nelems, tp, attrp->type); 01874 } 01875 } |
|
Definition at line 1268 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_Ischar(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue. Referenced by nc_get_att().
01269 { 01270 int status; 01271 NC_attr *attrp; 01272 01273 status = NC_lookupattr(ncid, varid, name, &attrp); 01274 if(status != NC_NOERR) 01275 return status; 01276 01277 if(attrp->nelems == 0) 01278 return NC_NOERR; 01279 01280 if(attrp->type == NC_CHAR) 01281 return NC_ECHAR; 01282 01283 { 01284 const void *xp = attrp->xvalue; 01285 return ncx_pad_getn_Ischar(&xp, attrp->nelems, tp, attrp->type); 01286 } 01287 } |
|
Definition at line 1562 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_Ishort(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue. Referenced by nc_get_att().
01563 { 01564 int status; 01565 NC_attr *attrp; 01566 01567 status = NC_lookupattr(ncid, varid, name, &attrp); 01568 if(status != NC_NOERR) 01569 return status; 01570 01571 if(attrp->nelems == 0) 01572 return NC_NOERR; 01573 01574 if(attrp->type == NC_CHAR) 01575 return NC_ECHAR; 01576 01577 { 01578 const void *xp = attrp->xvalue; 01579 return ncx_pad_getn_Ishort(&xp, attrp->nelems, tp, attrp->type); 01580 } 01581 } |
|
Definition at line 1118 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_text(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue. Referenced by do_ncdump(), has_c_format_att(), main(), nc_get_att(), pr_att(), read_mincdim(), and THD_open_minc().
01119 { 01120 int status; 01121 NC_attr *attrp; 01122 01123 status = NC_lookupattr(ncid, varid, name, &attrp); 01124 if(status != NC_NOERR) 01125 return status; 01126 01127 if(attrp->nelems == 0) 01128 return NC_NOERR; 01129 01130 if(attrp->type != NC_CHAR) 01131 return NC_ECHAR; 01132 01133 /* else */ 01134 { 01135 const void *xp = attrp->xvalue; 01136 return ncx_pad_getn_text(&xp, attrp->nelems, str); 01137 } 01138 } |
|
Definition at line 1415 of file attr.c. References name, NC_lookupattr(), ncx_pad_getn_Iuchar(), NC_attr::nelems, NC_attr::type, and NC_attr::xvalue.
01416 { 01417 int status; 01418 NC_attr *attrp; 01419 01420 status = NC_lookupattr(ncid, varid, name, &attrp); 01421 if(status != NC_NOERR) 01422 return status; 01423 01424 if(attrp->nelems == 0) 01425 return NC_NOERR; 01426 01427 if(attrp->type == NC_CHAR) 01428 return NC_ECHAR; 01429 01430 { 01431 const void *xp = attrp->xvalue; 01432 return ncx_pad_getn_Iuchar(&xp, attrp->nelems, tp, attrp->type); 01433 } 01434 } |
|
Definition at line 466 of file attr.c. References name, NC_lookupattr(), NC_attr::nelems, and NC_attr::type. Referenced by do_ncdump(), has_c_format_att(), main(), ncattinq(), and pr_att().
00471 { 00472 int status; 00473 NC_attr *attrp; 00474 00475 status = NC_lookupattr(ncid, varid, name, &attrp); 00476 if(status != NC_NOERR) 00477 return status; 00478 00479 if(datatypep != NULL) 00480 *datatypep = attrp->type; 00481 if(lenp != NULL) 00482 *lenp = attrp->nelems; 00483 00484 return NC_NOERR; 00485 } |
|
Definition at line 407 of file attr.c. References name, NC_attrarray0(), NC_check_id(), NC_findattr(), and NC_attrarray::value.
00408 { 00409 int status; 00410 NC *ncp; 00411 NC_attrarray *ncap; 00412 NC_attr **attrpp; 00413 00414 status = NC_check_id(ncid, &ncp); 00415 if(status != NC_NOERR) 00416 return status; 00417 00418 ncap = NC_attrarray0(ncp, varid); 00419 if(ncap == NULL) 00420 return NC_ENOTVAR; 00421 00422 00423 attrpp = NC_findattr(ncap, name); 00424 if(attrpp == NULL) 00425 return NC_ENOTATT; 00426 00427 if(attnump != NULL) 00428 *attnump = (int)(attrpp - ncap->value); 00429 00430 return NC_NOERR; 00431 } |
|
Definition at line 450 of file attr.c. References name, NC_lookupattr(), and NC_attr::nelems. Referenced by read_mincdim(), and THD_open_minc().
00451 { 00452 int status; 00453 NC_attr *attrp; 00454 00455 status = NC_lookupattr(ncid, varid, name, &attrp); 00456 if(status != NC_NOERR) 00457 return status; 00458 00459 if(lenp != NULL) 00460 *lenp = attrp->nelems; 00461 00462 return NC_NOERR; 00463 } |
|
Definition at line 380 of file attr.c. References NC_string::cp, elem_NC_attrarray(), name, NC_attr::name, NC_attrarray0(), NC_check_id(), and NC_string::nchars. Referenced by main(), ncattname(), and pr_att().
00381 { 00382 int status; 00383 NC *ncp; 00384 NC_attrarray *ncap; 00385 NC_attr *attrp; 00386 00387 status = NC_check_id(ncid, &ncp); 00388 if(status != NC_NOERR) 00389 return status; 00390 00391 ncap = NC_attrarray0(ncp, varid); 00392 if(ncap == NULL) 00393 return NC_ENOTVAR; 00394 00395 attrp = elem_NC_attrarray(ncap, (size_t)attnum); 00396 if(attrp == NULL) 00397 return NC_ENOTATT; 00398 00399 (void) strncpy(name, attrp->name->cp, attrp->name->nchars); 00400 name[attrp->name->nchars] = 0; 00401 00402 return NC_NOERR; 00403 } |
|
Definition at line 434 of file attr.c. References name, NC_lookupattr(), and NC_attr::type.
00435 { 00436 int status; 00437 NC_attr *attrp; 00438 00439 status = NC_lookupattr(ncid, varid, name, &attrp); 00440 if(status != NC_NOERR) 00441 return status; 00442 00443 if(datatypep != NULL) 00444 *datatypep = attrp->type; 00445 00446 return NC_NOERR; 00447 } |
|
Definition at line 349 of file attr.c. References name, NC_attrarray0(), NC_check_id(), and NC_findattr(). Referenced by nc_copy_att(), nc_get_att(), nc_get_att_double(), nc_get_att_float(), nc_get_att_int(), nc_get_att_long(), nc_get_att_schar(), nc_get_att_short(), nc_get_att_text(), nc_get_att_uchar(), nc_inq_att(), nc_inq_attlen(), and nc_inq_atttype().
00353 { 00354 int status; 00355 NC *ncp; 00356 NC_attrarray *ncap; 00357 NC_attr **tmp; 00358 00359 status = NC_check_id(ncid, &ncp); 00360 if(status != NC_NOERR) 00361 return status; 00362 00363 ncap = NC_attrarray0(ncp, varid); 00364 if(ncap == NULL) 00365 return NC_ENOTVAR; 00366 00367 tmp = NC_findattr(ncap, name); 00368 if(tmp == NULL) 00369 return NC_ENOTATT; 00370 00371 if(attrpp != NULL) 00372 *attrpp = *tmp; 00373 00374 return ENOERR; 00375 } |
|
Definition at line 2175 of file attr.c. References name, nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), and nc_put_att_text(). Referenced by ncattput().
02182 { 02183 switch (type) { 02184 case NC_BYTE: 02185 return nc_put_att_schar(ncid, varid, name, type, nelems, 02186 (schar *)value); 02187 case NC_CHAR: 02188 return nc_put_att_text(ncid, varid, name, nelems, 02189 (char *)value); 02190 case NC_SHORT: 02191 return nc_put_att_short(ncid, varid, name, type, nelems, 02192 (short *)value); 02193 case NC_INT: 02194 #if (SIZEOF_INT >= X_SIZEOF_INT) 02195 return nc_put_att_int(ncid, varid, name, type, nelems, 02196 (int *)value); 02197 #elif SIZEOF_LONG == X_SIZEOF_INT 02198 return nc_put_att_long(ncid, varid, name, type, nelems, 02199 (long *)value); 02200 #endif 02201 case NC_FLOAT: 02202 return nc_put_att_float(ncid, varid, name, type, nelems, 02203 (float *)value); 02204 case NC_DOUBLE: 02205 return nc_put_att_double(ncid, varid, name, type, nelems, 02206 (double *)value); 02207 } 02208 return NC_EBADTYPE; 02209 } |
|
Definition at line 2026 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), nc_cktype(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_Idouble(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by createtestvars(), main(), and nc_put_att().
02028 { 02029 int status; 02030 NC *ncp; 02031 NC_attrarray *ncap; 02032 NC_attr **attrpp; 02033 NC_attr *old = NULL; 02034 NC_attr *attrp; 02035 02036 status = NC_check_id(ncid, &ncp); 02037 if(status != NC_NOERR) 02038 return status; 02039 02040 if(NC_readonly(ncp)) 02041 return NC_EPERM; 02042 02043 ncap = NC_attrarray0(ncp, varid); 02044 if(ncap == NULL) 02045 return NC_ENOTVAR; 02046 02047 status = nc_cktype(type); 02048 if(status != NC_NOERR) 02049 return status; 02050 02051 if(type == NC_CHAR) 02052 return NC_ECHAR; 02053 02054 /* cast needed for braindead systems with signed size_t */ 02055 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 02056 return NC_EINVAL; /* Invalid nelems */ 02057 02058 if(nelems != 0 && value == NULL) 02059 return NC_EINVAL; /* Null arg */ 02060 02061 attrpp = NC_findattr(ncap, name); 02062 if(attrpp != NULL) /* name in use */ 02063 { 02064 if(!NC_indef(ncp) ) 02065 { 02066 const size_t xsz = ncx_len_NC_attrV(type, nelems); 02067 attrp = *attrpp; /* convenience */ 02068 02069 if(xsz > attrp->xsz) 02070 return NC_ENOTINDEFINE; 02071 /* else, we can reuse existing without redef */ 02072 02073 attrp->xsz = xsz; 02074 attrp->type = type; 02075 attrp->nelems = nelems; 02076 02077 if(nelems != 0) 02078 { 02079 void *xp = attrp->xvalue; 02080 status = ncx_pad_putn_Idouble(&xp, nelems, 02081 value, type); 02082 } 02083 02084 set_NC_hdirty(ncp); 02085 02086 if(NC_doHsync(ncp)) 02087 { 02088 const int lstatus = NC_sync(ncp); 02089 /* 02090 * N.B.: potentially overrides NC_ERANGE 02091 * set by ncx_pad_putn_Idouble 02092 */ 02093 if(lstatus != ENOERR) 02094 return lstatus; 02095 } 02096 02097 return status; 02098 } 02099 /* else, redefine using existing array slot */ 02100 old = *attrpp; 02101 } 02102 else 02103 { 02104 if(!NC_indef(ncp)) 02105 return NC_ENOTINDEFINE; 02106 02107 if(ncap->nelems >= NC_MAX_ATTRS) 02108 return NC_EMAXATTS; 02109 } 02110 02111 status = NC_check_name(name); 02112 if(status != NC_NOERR) 02113 return status; 02114 02115 attrp = new_NC_attr(name, type, nelems); 02116 if(attrp == NULL) 02117 return NC_ENOMEM; 02118 02119 if(nelems != 0) 02120 { 02121 void *xp = attrp->xvalue; 02122 status = ncx_pad_putn_Idouble(&xp, nelems, 02123 value, type); 02124 } 02125 02126 if(attrpp != NULL) 02127 { 02128 assert(old != NULL); 02129 *attrpp = attrp; 02130 free_NC_attr(old); 02131 } 02132 else 02133 { 02134 const int lstatus = incr_NC_attrarray(ncap, attrp); 02135 /* 02136 * N.B.: potentially overrides NC_ERANGE 02137 * set by ncx_pad_putn_Idouble 02138 */ 02139 if(lstatus != NC_NOERR) 02140 { 02141 free_NC_attr(attrp); 02142 return lstatus; 02143 } 02144 } 02145 02146 return status; 02147 } |
|
Definition at line 1879 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), nc_cktype(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_Ifloat(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by nc_put_att().
01881 { 01882 int status; 01883 NC *ncp; 01884 NC_attrarray *ncap; 01885 NC_attr **attrpp; 01886 NC_attr *old = NULL; 01887 NC_attr *attrp; 01888 01889 status = NC_check_id(ncid, &ncp); 01890 if(status != NC_NOERR) 01891 return status; 01892 01893 if(NC_readonly(ncp)) 01894 return NC_EPERM; 01895 01896 ncap = NC_attrarray0(ncp, varid); 01897 if(ncap == NULL) 01898 return NC_ENOTVAR; 01899 01900 status = nc_cktype(type); 01901 if(status != NC_NOERR) 01902 return status; 01903 01904 if(type == NC_CHAR) 01905 return NC_ECHAR; 01906 01907 /* cast needed for braindead systems with signed size_t */ 01908 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 01909 return NC_EINVAL; /* Invalid nelems */ 01910 01911 if(nelems != 0 && value == NULL) 01912 return NC_EINVAL; /* Null arg */ 01913 01914 attrpp = NC_findattr(ncap, name); 01915 if(attrpp != NULL) /* name in use */ 01916 { 01917 if(!NC_indef(ncp) ) 01918 { 01919 const size_t xsz = ncx_len_NC_attrV(type, nelems); 01920 attrp = *attrpp; /* convenience */ 01921 01922 if(xsz > attrp->xsz) 01923 return NC_ENOTINDEFINE; 01924 /* else, we can reuse existing without redef */ 01925 01926 attrp->xsz = xsz; 01927 attrp->type = type; 01928 attrp->nelems = nelems; 01929 01930 if(nelems != 0) 01931 { 01932 void *xp = attrp->xvalue; 01933 status = ncx_pad_putn_Ifloat(&xp, nelems, 01934 value, type); 01935 } 01936 01937 set_NC_hdirty(ncp); 01938 01939 if(NC_doHsync(ncp)) 01940 { 01941 const int lstatus = NC_sync(ncp); 01942 /* 01943 * N.B.: potentially overrides NC_ERANGE 01944 * set by ncx_pad_putn_Ifloat 01945 */ 01946 if(lstatus != ENOERR) 01947 return lstatus; 01948 } 01949 01950 return status; 01951 } 01952 /* else, redefine using existing array slot */ 01953 old = *attrpp; 01954 } 01955 else 01956 { 01957 if(!NC_indef(ncp)) 01958 return NC_ENOTINDEFINE; 01959 01960 if(ncap->nelems >= NC_MAX_ATTRS) 01961 return NC_EMAXATTS; 01962 } 01963 01964 status = NC_check_name(name); 01965 if(status != NC_NOERR) 01966 return status; 01967 01968 attrp = new_NC_attr(name, type, nelems); 01969 if(attrp == NULL) 01970 return NC_ENOMEM; 01971 01972 if(nelems != 0) 01973 { 01974 void *xp = attrp->xvalue; 01975 status = ncx_pad_putn_Ifloat(&xp, nelems, 01976 value, type); 01977 } 01978 01979 if(attrpp != NULL) 01980 { 01981 assert(old != NULL); 01982 *attrpp = attrp; 01983 free_NC_attr(old); 01984 } 01985 else 01986 { 01987 const int lstatus = incr_NC_attrarray(ncap, attrp); 01988 /* 01989 * N.B.: potentially overrides NC_ERANGE 01990 * set by ncx_pad_putn_Ifloat 01991 */ 01992 if(lstatus != NC_NOERR) 01993 { 01994 free_NC_attr(attrp); 01995 return lstatus; 01996 } 01997 } 01998 01999 return status; 02000 } |
|
Definition at line 1585 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), nc_cktype(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_Iint(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by main(), and nc_put_att().
01587 { 01588 int status; 01589 NC *ncp; 01590 NC_attrarray *ncap; 01591 NC_attr **attrpp; 01592 NC_attr *old = NULL; 01593 NC_attr *attrp; 01594 01595 status = NC_check_id(ncid, &ncp); 01596 if(status != NC_NOERR) 01597 return status; 01598 01599 if(NC_readonly(ncp)) 01600 return NC_EPERM; 01601 01602 ncap = NC_attrarray0(ncp, varid); 01603 if(ncap == NULL) 01604 return NC_ENOTVAR; 01605 01606 status = nc_cktype(type); 01607 if(status != NC_NOERR) 01608 return status; 01609 01610 if(type == NC_CHAR) 01611 return NC_ECHAR; 01612 01613 /* cast needed for braindead systems with signed size_t */ 01614 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 01615 return NC_EINVAL; /* Invalid nelems */ 01616 01617 if(nelems != 0 && value == NULL) 01618 return NC_EINVAL; /* Null arg */ 01619 01620 attrpp = NC_findattr(ncap, name); 01621 if(attrpp != NULL) /* name in use */ 01622 { 01623 if(!NC_indef(ncp) ) 01624 { 01625 const size_t xsz = ncx_len_NC_attrV(type, nelems); 01626 attrp = *attrpp; /* convenience */ 01627 01628 if(xsz > attrp->xsz) 01629 return NC_ENOTINDEFINE; 01630 /* else, we can reuse existing without redef */ 01631 01632 attrp->xsz = xsz; 01633 attrp->type = type; 01634 attrp->nelems = nelems; 01635 01636 if(nelems != 0) 01637 { 01638 void *xp = attrp->xvalue; 01639 status = ncx_pad_putn_Iint(&xp, nelems, 01640 value, type); 01641 } 01642 01643 set_NC_hdirty(ncp); 01644 01645 if(NC_doHsync(ncp)) 01646 { 01647 const int lstatus = NC_sync(ncp); 01648 /* 01649 * N.B.: potentially overrides NC_ERANGE 01650 * set by ncx_pad_putn_Iint 01651 */ 01652 if(lstatus != ENOERR) 01653 return lstatus; 01654 } 01655 01656 return status; 01657 } 01658 /* else, redefine using existing array slot */ 01659 old = *attrpp; 01660 } 01661 else 01662 { 01663 if(!NC_indef(ncp)) 01664 return NC_ENOTINDEFINE; 01665 01666 if(ncap->nelems >= NC_MAX_ATTRS) 01667 return NC_EMAXATTS; 01668 } 01669 01670 status = NC_check_name(name); 01671 if(status != NC_NOERR) 01672 return status; 01673 01674 attrp = new_NC_attr(name, type, nelems); 01675 if(attrp == NULL) 01676 return NC_ENOMEM; 01677 01678 if(nelems != 0) 01679 { 01680 void *xp = attrp->xvalue; 01681 status = ncx_pad_putn_Iint(&xp, nelems, 01682 value, type); 01683 } 01684 01685 if(attrpp != NULL) 01686 { 01687 assert(old != NULL); 01688 *attrpp = attrp; 01689 free_NC_attr(old); 01690 } 01691 else 01692 { 01693 const int lstatus = incr_NC_attrarray(ncap, attrp); 01694 /* 01695 * N.B.: potentially overrides NC_ERANGE 01696 * set by ncx_pad_putn_Iint 01697 */ 01698 if(lstatus != NC_NOERR) 01699 { 01700 free_NC_attr(attrp); 01701 return lstatus; 01702 } 01703 } 01704 01705 return status; 01706 } |
|
Definition at line 1732 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), nc_cktype(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_Ilong(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by nc_put_att().
01734 { 01735 int status; 01736 NC *ncp; 01737 NC_attrarray *ncap; 01738 NC_attr **attrpp; 01739 NC_attr *old = NULL; 01740 NC_attr *attrp; 01741 01742 status = NC_check_id(ncid, &ncp); 01743 if(status != NC_NOERR) 01744 return status; 01745 01746 if(NC_readonly(ncp)) 01747 return NC_EPERM; 01748 01749 ncap = NC_attrarray0(ncp, varid); 01750 if(ncap == NULL) 01751 return NC_ENOTVAR; 01752 01753 status = nc_cktype(type); 01754 if(status != NC_NOERR) 01755 return status; 01756 01757 if(type == NC_CHAR) 01758 return NC_ECHAR; 01759 01760 /* cast needed for braindead systems with signed size_t */ 01761 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 01762 return NC_EINVAL; /* Invalid nelems */ 01763 01764 if(nelems != 0 && value == NULL) 01765 return NC_EINVAL; /* Null arg */ 01766 01767 attrpp = NC_findattr(ncap, name); 01768 if(attrpp != NULL) /* name in use */ 01769 { 01770 if(!NC_indef(ncp) ) 01771 { 01772 const size_t xsz = ncx_len_NC_attrV(type, nelems); 01773 attrp = *attrpp; /* convenience */ 01774 01775 if(xsz > attrp->xsz) 01776 return NC_ENOTINDEFINE; 01777 /* else, we can reuse existing without redef */ 01778 01779 attrp->xsz = xsz; 01780 attrp->type = type; 01781 attrp->nelems = nelems; 01782 01783 if(nelems != 0) 01784 { 01785 void *xp = attrp->xvalue; 01786 status = ncx_pad_putn_Ilong(&xp, nelems, 01787 value, type); 01788 } 01789 01790 set_NC_hdirty(ncp); 01791 01792 if(NC_doHsync(ncp)) 01793 { 01794 const int lstatus = NC_sync(ncp); 01795 /* 01796 * N.B.: potentially overrides NC_ERANGE 01797 * set by ncx_pad_putn_Ilong 01798 */ 01799 if(lstatus != ENOERR) 01800 return lstatus; 01801 } 01802 01803 return status; 01804 } 01805 /* else, redefine using existing array slot */ 01806 old = *attrpp; 01807 } 01808 else 01809 { 01810 if(!NC_indef(ncp)) 01811 return NC_ENOTINDEFINE; 01812 01813 if(ncap->nelems >= NC_MAX_ATTRS) 01814 return NC_EMAXATTS; 01815 } 01816 01817 status = NC_check_name(name); 01818 if(status != NC_NOERR) 01819 return status; 01820 01821 attrp = new_NC_attr(name, type, nelems); 01822 if(attrp == NULL) 01823 return NC_ENOMEM; 01824 01825 if(nelems != 0) 01826 { 01827 void *xp = attrp->xvalue; 01828 status = ncx_pad_putn_Ilong(&xp, nelems, 01829 value, type); 01830 } 01831 01832 if(attrpp != NULL) 01833 { 01834 assert(old != NULL); 01835 *attrpp = attrp; 01836 free_NC_attr(old); 01837 } 01838 else 01839 { 01840 const int lstatus = incr_NC_attrarray(ncap, attrp); 01841 /* 01842 * N.B.: potentially overrides NC_ERANGE 01843 * set by ncx_pad_putn_Ilong 01844 */ 01845 if(lstatus != NC_NOERR) 01846 { 01847 free_NC_attr(attrp); 01848 return lstatus; 01849 } 01850 } 01851 01852 return status; 01853 } |
|
Definition at line 1144 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), nc_cktype(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_Ischar(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by nc_put_att().
01146 { 01147 int status; 01148 NC *ncp; 01149 NC_attrarray *ncap; 01150 NC_attr **attrpp; 01151 NC_attr *old = NULL; 01152 NC_attr *attrp; 01153 01154 status = NC_check_id(ncid, &ncp); 01155 if(status != NC_NOERR) 01156 return status; 01157 01158 if(NC_readonly(ncp)) 01159 return NC_EPERM; 01160 01161 ncap = NC_attrarray0(ncp, varid); 01162 if(ncap == NULL) 01163 return NC_ENOTVAR; 01164 01165 status = nc_cktype(type); 01166 if(status != NC_NOERR) 01167 return status; 01168 01169 if(type == NC_CHAR) 01170 return NC_ECHAR; 01171 01172 /* cast needed for braindead systems with signed size_t */ 01173 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 01174 return NC_EINVAL; /* Invalid nelems */ 01175 01176 if(nelems != 0 && value == NULL) 01177 return NC_EINVAL; /* Null arg */ 01178 01179 attrpp = NC_findattr(ncap, name); 01180 if(attrpp != NULL) /* name in use */ 01181 { 01182 if(!NC_indef(ncp) ) 01183 { 01184 const size_t xsz = ncx_len_NC_attrV(type, nelems); 01185 attrp = *attrpp; /* convenience */ 01186 01187 if(xsz > attrp->xsz) 01188 return NC_ENOTINDEFINE; 01189 /* else, we can reuse existing without redef */ 01190 01191 attrp->xsz = xsz; 01192 attrp->type = type; 01193 attrp->nelems = nelems; 01194 01195 if(nelems != 0) 01196 { 01197 void *xp = attrp->xvalue; 01198 status = ncx_pad_putn_Ischar(&xp, nelems, 01199 value, type); 01200 } 01201 01202 set_NC_hdirty(ncp); 01203 01204 if(NC_doHsync(ncp)) 01205 { 01206 const int lstatus = NC_sync(ncp); 01207 /* 01208 * N.B.: potentially overrides NC_ERANGE 01209 * set by ncx_pad_putn_Ischar 01210 */ 01211 if(lstatus != ENOERR) 01212 return lstatus; 01213 } 01214 01215 return status; 01216 } 01217 /* else, redefine using existing array slot */ 01218 old = *attrpp; 01219 } 01220 else 01221 { 01222 if(!NC_indef(ncp)) 01223 return NC_ENOTINDEFINE; 01224 01225 if(ncap->nelems >= NC_MAX_ATTRS) 01226 return NC_EMAXATTS; 01227 } 01228 01229 status = NC_check_name(name); 01230 if(status != NC_NOERR) 01231 return status; 01232 01233 attrp = new_NC_attr(name, type, nelems); 01234 if(attrp == NULL) 01235 return NC_ENOMEM; 01236 01237 if(nelems != 0) 01238 { 01239 void *xp = attrp->xvalue; 01240 status = ncx_pad_putn_Ischar(&xp, nelems, 01241 value, type); 01242 } 01243 01244 if(attrpp != NULL) 01245 { 01246 assert(old != NULL); 01247 *attrpp = attrp; 01248 free_NC_attr(old); 01249 } 01250 else 01251 { 01252 const int lstatus = incr_NC_attrarray(ncap, attrp); 01253 /* 01254 * N.B.: potentially overrides NC_ERANGE 01255 * set by ncx_pad_putn_Ischar 01256 */ 01257 if(lstatus != NC_NOERR) 01258 { 01259 free_NC_attr(attrp); 01260 return lstatus; 01261 } 01262 } 01263 01264 return status; 01265 } |
|
Definition at line 1438 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), nc_cktype(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_Ishort(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by nc_put_att().
01440 { 01441 int status; 01442 NC *ncp; 01443 NC_attrarray *ncap; 01444 NC_attr **attrpp; 01445 NC_attr *old = NULL; 01446 NC_attr *attrp; 01447 01448 status = NC_check_id(ncid, &ncp); 01449 if(status != NC_NOERR) 01450 return status; 01451 01452 if(NC_readonly(ncp)) 01453 return NC_EPERM; 01454 01455 ncap = NC_attrarray0(ncp, varid); 01456 if(ncap == NULL) 01457 return NC_ENOTVAR; 01458 01459 status = nc_cktype(type); 01460 if(status != NC_NOERR) 01461 return status; 01462 01463 if(type == NC_CHAR) 01464 return NC_ECHAR; 01465 01466 /* cast needed for braindead systems with signed size_t */ 01467 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 01468 return NC_EINVAL; /* Invalid nelems */ 01469 01470 if(nelems != 0 && value == NULL) 01471 return NC_EINVAL; /* Null arg */ 01472 01473 attrpp = NC_findattr(ncap, name); 01474 if(attrpp != NULL) /* name in use */ 01475 { 01476 if(!NC_indef(ncp) ) 01477 { 01478 const size_t xsz = ncx_len_NC_attrV(type, nelems); 01479 attrp = *attrpp; /* convenience */ 01480 01481 if(xsz > attrp->xsz) 01482 return NC_ENOTINDEFINE; 01483 /* else, we can reuse existing without redef */ 01484 01485 attrp->xsz = xsz; 01486 attrp->type = type; 01487 attrp->nelems = nelems; 01488 01489 if(nelems != 0) 01490 { 01491 void *xp = attrp->xvalue; 01492 status = ncx_pad_putn_Ishort(&xp, nelems, 01493 value, type); 01494 } 01495 01496 set_NC_hdirty(ncp); 01497 01498 if(NC_doHsync(ncp)) 01499 { 01500 const int lstatus = NC_sync(ncp); 01501 /* 01502 * N.B.: potentially overrides NC_ERANGE 01503 * set by ncx_pad_putn_Ishort 01504 */ 01505 if(lstatus != ENOERR) 01506 return lstatus; 01507 } 01508 01509 return status; 01510 } 01511 /* else, redefine using existing array slot */ 01512 old = *attrpp; 01513 } 01514 else 01515 { 01516 if(!NC_indef(ncp)) 01517 return NC_ENOTINDEFINE; 01518 01519 if(ncap->nelems >= NC_MAX_ATTRS) 01520 return NC_EMAXATTS; 01521 } 01522 01523 status = NC_check_name(name); 01524 if(status != NC_NOERR) 01525 return status; 01526 01527 attrp = new_NC_attr(name, type, nelems); 01528 if(attrp == NULL) 01529 return NC_ENOMEM; 01530 01531 if(nelems != 0) 01532 { 01533 void *xp = attrp->xvalue; 01534 status = ncx_pad_putn_Ishort(&xp, nelems, 01535 value, type); 01536 } 01537 01538 if(attrpp != NULL) 01539 { 01540 assert(old != NULL); 01541 *attrpp = attrp; 01542 free_NC_attr(old); 01543 } 01544 else 01545 { 01546 const int lstatus = incr_NC_attrarray(ncap, attrp); 01547 /* 01548 * N.B.: potentially overrides NC_ERANGE 01549 * set by ncx_pad_putn_Ishort 01550 */ 01551 if(lstatus != NC_NOERR) 01552 { 01553 free_NC_attr(attrp); 01554 return lstatus; 01555 } 01556 } 01557 01558 return status; 01559 } |
|
Definition at line 1006 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_text(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by createtestvars(), main(), and nc_put_att().
01008 { 01009 int status; 01010 NC *ncp; 01011 NC_attrarray *ncap; 01012 NC_attr **attrpp; 01013 NC_attr *old = NULL; 01014 NC_attr *attrp; 01015 01016 status = NC_check_id(ncid, &ncp); 01017 if(status != NC_NOERR) 01018 return status; 01019 01020 if(NC_readonly(ncp)) 01021 return NC_EPERM; 01022 01023 ncap = NC_attrarray0(ncp, varid); 01024 if(ncap == NULL) 01025 return NC_ENOTVAR; 01026 01027 status = NC_check_name(name); 01028 if(status != NC_NOERR) 01029 return status; 01030 01031 /* cast needed for braindead systems with signed size_t */ 01032 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 01033 return NC_EINVAL; /* Invalid nelems */ 01034 01035 if(nelems != 0 && value == NULL) 01036 return NC_EINVAL; /* Null arg */ 01037 01038 attrpp = NC_findattr(ncap, name); 01039 if(attrpp != NULL) /* name in use */ 01040 { 01041 if(!NC_indef(ncp) ) 01042 { 01043 const size_t xsz = ncx_len_NC_attrV(NC_CHAR, nelems); 01044 attrp = *attrpp; /* convenience */ 01045 01046 if(xsz > attrp->xsz) 01047 return NC_ENOTINDEFINE; 01048 /* else, we can reuse existing without redef */ 01049 01050 attrp->xsz = xsz; 01051 attrp->type = NC_CHAR; 01052 attrp->nelems = nelems; 01053 01054 if(nelems != 0) 01055 { 01056 void *xp = attrp->xvalue; 01057 status = ncx_pad_putn_text(&xp, nelems, value); 01058 if(status != NC_NOERR) 01059 return status; 01060 } 01061 01062 set_NC_hdirty(ncp); 01063 01064 if(NC_doHsync(ncp)) 01065 { 01066 status = NC_sync(ncp); 01067 if(status != NC_NOERR) 01068 return status; 01069 } 01070 01071 return NC_NOERR; 01072 } 01073 /* else, redefine using existing array slot */ 01074 old = *attrpp; 01075 } 01076 else 01077 { 01078 if(!NC_indef(ncp)) 01079 return NC_ENOTINDEFINE; 01080 01081 if(ncap->nelems >= NC_MAX_ATTRS) 01082 return NC_EMAXATTS; 01083 } 01084 01085 attrp = new_NC_attr(name, NC_CHAR, nelems); 01086 if(attrp == NULL) 01087 return NC_ENOMEM; 01088 01089 if(nelems != 0) 01090 { 01091 void *xp = attrp->xvalue; 01092 status = ncx_pad_putn_text(&xp, nelems, value); 01093 if(status != NC_NOERR) 01094 return status; 01095 } 01096 01097 if(attrpp != NULL) 01098 { 01099 assert(old != NULL); 01100 *attrpp = attrp; 01101 free_NC_attr(old); 01102 } 01103 else 01104 { 01105 status = incr_NC_attrarray(ncap, attrp); 01106 if(status != NC_NOERR) 01107 { 01108 free_NC_attr(attrp); 01109 return status; 01110 } 01111 } 01112 01113 return NC_NOERR; 01114 } |
|
Definition at line 1291 of file attr.c. References free_NC_attr(), incr_NC_attrarray(), name, NC_attrarray0(), NC_check_id(), NC_check_name(), nc_cktype(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), ncx_len_NC_attrV(), ncx_pad_putn_Iuchar(), NC_attr::nelems, NC_attrarray::nelems, new_NC_attr(), set_NC_hdirty, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue.
01293 { 01294 int status; 01295 NC *ncp; 01296 NC_attrarray *ncap; 01297 NC_attr **attrpp; 01298 NC_attr *old = NULL; 01299 NC_attr *attrp; 01300 01301 status = NC_check_id(ncid, &ncp); 01302 if(status != NC_NOERR) 01303 return status; 01304 01305 if(NC_readonly(ncp)) 01306 return NC_EPERM; 01307 01308 ncap = NC_attrarray0(ncp, varid); 01309 if(ncap == NULL) 01310 return NC_ENOTVAR; 01311 01312 status = nc_cktype(type); 01313 if(status != NC_NOERR) 01314 return status; 01315 01316 if(type == NC_CHAR) 01317 return NC_ECHAR; 01318 01319 /* cast needed for braindead systems with signed size_t */ 01320 if((unsigned long) nelems > X_INT_MAX) /* backward compat */ 01321 return NC_EINVAL; /* Invalid nelems */ 01322 01323 if(nelems != 0 && value == NULL) 01324 return NC_EINVAL; /* Null arg */ 01325 01326 attrpp = NC_findattr(ncap, name); 01327 if(attrpp != NULL) /* name in use */ 01328 { 01329 if(!NC_indef(ncp) ) 01330 { 01331 const size_t xsz = ncx_len_NC_attrV(type, nelems); 01332 attrp = *attrpp; /* convenience */ 01333 01334 if(xsz > attrp->xsz) 01335 return NC_ENOTINDEFINE; 01336 /* else, we can reuse existing without redef */ 01337 01338 attrp->xsz = xsz; 01339 attrp->type = type; 01340 attrp->nelems = nelems; 01341 01342 if(nelems != 0) 01343 { 01344 void *xp = attrp->xvalue; 01345 status = ncx_pad_putn_Iuchar(&xp, nelems, 01346 value, type); 01347 } 01348 01349 set_NC_hdirty(ncp); 01350 01351 if(NC_doHsync(ncp)) 01352 { 01353 const int lstatus = NC_sync(ncp); 01354 /* 01355 * N.B.: potentially overrides NC_ERANGE 01356 * set by ncx_pad_putn_Iuchar 01357 */ 01358 if(lstatus != ENOERR) 01359 return lstatus; 01360 } 01361 01362 return status; 01363 } 01364 /* else, redefine using existing array slot */ 01365 old = *attrpp; 01366 } 01367 else 01368 { 01369 if(!NC_indef(ncp)) 01370 return NC_ENOTINDEFINE; 01371 01372 if(ncap->nelems >= NC_MAX_ATTRS) 01373 return NC_EMAXATTS; 01374 } 01375 01376 status = NC_check_name(name); 01377 if(status != NC_NOERR) 01378 return status; 01379 01380 attrp = new_NC_attr(name, type, nelems); 01381 if(attrp == NULL) 01382 return NC_ENOMEM; 01383 01384 if(nelems != 0) 01385 { 01386 void *xp = attrp->xvalue; 01387 status = ncx_pad_putn_Iuchar(&xp, nelems, 01388 value, type); 01389 } 01390 01391 if(attrpp != NULL) 01392 { 01393 assert(old != NULL); 01394 *attrpp = attrp; 01395 free_NC_attr(old); 01396 } 01397 else 01398 { 01399 const int lstatus = incr_NC_attrarray(ncap, attrp); 01400 /* 01401 * N.B.: potentially overrides NC_ERANGE 01402 * set by ncx_pad_putn_Iuchar 01403 */ 01404 if(lstatus != NC_NOERR) 01405 { 01406 free_NC_attr(attrp); 01407 return lstatus; 01408 } 01409 } 01410 01411 return status; 01412 } |
|
Definition at line 489 of file attr.c. References free_NC_string(), name, NC_attr::name, NC_attrarray0(), NC_check_id(), NC_check_name(), NC_doHsync, NC_findattr(), NC_indef, NC_readonly, NC_sync(), new_NC_string(), set_NC_hdirty, and set_NC_string(). Referenced by main(), and ncattrename().
00490 { 00491 int status; 00492 NC *ncp; 00493 NC_attrarray *ncap; 00494 NC_attr **tmp; 00495 NC_attr *attrp; 00496 NC_string *newStr, *old; 00497 00498 /* sortof inline clone of NC_lookupattr() */ 00499 status = NC_check_id(ncid, &ncp); 00500 if(status != NC_NOERR) 00501 return status; 00502 00503 if(NC_readonly(ncp)) 00504 return NC_EPERM; 00505 00506 ncap = NC_attrarray0(ncp, varid); 00507 if(ncap == NULL) 00508 return NC_ENOTVAR; 00509 00510 status = NC_check_name(name); 00511 if(status != NC_NOERR) 00512 return status; 00513 00514 tmp = NC_findattr(ncap, name); 00515 if(tmp == NULL) 00516 return NC_ENOTATT; 00517 attrp = *tmp; 00518 /* end inline clone NC_lookupattr() */ 00519 00520 if(NC_findattr(ncap, newname) != NULL) 00521 { 00522 /* name in use */ 00523 return NC_ENAMEINUSE; 00524 } 00525 00526 old = attrp->name; 00527 if(NC_indef(ncp)) 00528 { 00529 newStr = new_NC_string(strlen(newname), newname); 00530 if( newStr == NULL) 00531 return NC_ENOMEM; 00532 attrp->name = newStr; 00533 free_NC_string(old); 00534 return NC_NOERR; 00535 } 00536 /* else */ 00537 status = set_NC_string(old, newname); 00538 if( status != NC_NOERR) 00539 return status; 00540 00541 set_NC_hdirty(ncp); 00542 00543 if(NC_doHsync(ncp)) 00544 { 00545 status = NC_sync(ncp); 00546 if(status != NC_NOERR) 00547 return status; 00548 } 00549 00550 return NC_NOERR; 00551 } |
|
Definition at line 37 of file attr.c. References ncx_len_char, ncx_len_double, ncx_len_float, ncx_len_int, and ncx_len_short. Referenced by nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), nc_put_att_uchar(), and new_x_NC_attr().
00038 { 00039 switch(type) { 00040 case NC_BYTE: 00041 case NC_CHAR: 00042 return ncx_len_char(nelems); 00043 case NC_SHORT: 00044 return ncx_len_short(nelems); 00045 case NC_INT: 00046 return ncx_len_int(nelems); 00047 case NC_FLOAT: 00048 return ncx_len_float(nelems); 00049 case NC_DOUBLE: 00050 return ncx_len_double(nelems); 00051 } 00052 /* default */ 00053 assert("ncx_len_NC_attr bad type" == 0); 00054 return 0; 00055 } |
|
Definition at line 983 of file attr.c. References ncx_getn_double_double(), ncx_getn_float_double(), ncx_getn_int_double(), ncx_pad_getn_schar_double(), and ncx_pad_getn_short_double(). Referenced by nc_get_att_double().
00984 { 00985 switch(type) { 00986 case NC_CHAR: 00987 return NC_ECHAR; 00988 case NC_BYTE: 00989 return ncx_pad_getn_schar_double(xpp, nelems, tp); 00990 case NC_SHORT: 00991 return ncx_pad_getn_short_double(xpp, nelems, tp); 00992 case NC_INT: 00993 return ncx_getn_int_double(xpp, nelems, tp); 00994 case NC_FLOAT: 00995 return ncx_getn_float_double(xpp, nelems, tp); 00996 case NC_DOUBLE: 00997 return ncx_getn_double_double(xpp, nelems, tp); 00998 } 00999 assert("ncx_pad_getn_Idouble invalid type" == 0); 01000 return NC_EBADTYPE; 01001 } |
|
Definition at line 940 of file attr.c. References ncx_getn_double_float(), ncx_getn_float_float(), ncx_getn_int_float(), ncx_pad_getn_schar_float(), and ncx_pad_getn_short_float(). Referenced by nc_get_att_float().
00941 { 00942 switch(type) { 00943 case NC_CHAR: 00944 return NC_ECHAR; 00945 case NC_BYTE: 00946 return ncx_pad_getn_schar_float(xpp, nelems, tp); 00947 case NC_SHORT: 00948 return ncx_pad_getn_short_float(xpp, nelems, tp); 00949 case NC_INT: 00950 return ncx_getn_int_float(xpp, nelems, tp); 00951 case NC_FLOAT: 00952 return ncx_getn_float_float(xpp, nelems, tp); 00953 case NC_DOUBLE: 00954 return ncx_getn_double_float(xpp, nelems, tp); 00955 } 00956 assert("ncx_pad_getn_Ifloat invalid type" == 0); 00957 return NC_EBADTYPE; 00958 } |
|
Definition at line 854 of file attr.c. References ncx_getn_double_int(), ncx_getn_float_int(), ncx_getn_int_int(), ncx_pad_getn_schar_int(), and ncx_pad_getn_short_int(). Referenced by nc_get_att_int().
00855 { 00856 switch(type) { 00857 case NC_CHAR: 00858 return NC_ECHAR; 00859 case NC_BYTE: 00860 return ncx_pad_getn_schar_int(xpp, nelems, tp); 00861 case NC_SHORT: 00862 return ncx_pad_getn_short_int(xpp, nelems, tp); 00863 case NC_INT: 00864 return ncx_getn_int_int(xpp, nelems, tp); 00865 case NC_FLOAT: 00866 return ncx_getn_float_int(xpp, nelems, tp); 00867 case NC_DOUBLE: 00868 return ncx_getn_double_int(xpp, nelems, tp); 00869 } 00870 assert("ncx_pad_getn_Iint invalid type" == 0); 00871 return NC_EBADTYPE; 00872 } |
|
Definition at line 897 of file attr.c. References ncx_getn_double_long(), ncx_getn_float_long(), ncx_getn_int_long(), ncx_pad_getn_schar_long(), and ncx_pad_getn_short_long(). Referenced by nc_get_att_long().
00898 { 00899 switch(type) { 00900 case NC_CHAR: 00901 return NC_ECHAR; 00902 case NC_BYTE: 00903 return ncx_pad_getn_schar_long(xpp, nelems, tp); 00904 case NC_SHORT: 00905 return ncx_pad_getn_short_long(xpp, nelems, tp); 00906 case NC_INT: 00907 return ncx_getn_int_long(xpp, nelems, tp); 00908 case NC_FLOAT: 00909 return ncx_getn_float_long(xpp, nelems, tp); 00910 case NC_DOUBLE: 00911 return ncx_getn_double_long(xpp, nelems, tp); 00912 } 00913 assert("ncx_pad_getn_Ilong invalid type" == 0); 00914 return NC_EBADTYPE; 00915 } |
|
Definition at line 768 of file attr.c. References ncx_getn_double_schar(), ncx_getn_float_schar(), ncx_getn_int_schar(), ncx_pad_getn_schar_schar(), and ncx_pad_getn_short_schar(). Referenced by nc_get_att_schar().
00769 { 00770 switch(type) { 00771 case NC_CHAR: 00772 return NC_ECHAR; 00773 case NC_BYTE: 00774 return ncx_pad_getn_schar_schar(xpp, nelems, tp); 00775 case NC_SHORT: 00776 return ncx_pad_getn_short_schar(xpp, nelems, tp); 00777 case NC_INT: 00778 return ncx_getn_int_schar(xpp, nelems, tp); 00779 case NC_FLOAT: 00780 return ncx_getn_float_schar(xpp, nelems, tp); 00781 case NC_DOUBLE: 00782 return ncx_getn_double_schar(xpp, nelems, tp); 00783 } 00784 assert("ncx_pad_getn_Ischar invalid type" == 0); 00785 return NC_EBADTYPE; 00786 } |
|
Definition at line 811 of file attr.c. References ncx_getn_double_short(), ncx_getn_float_short(), ncx_getn_int_short(), ncx_pad_getn_schar_short(), and ncx_pad_getn_short_short(). Referenced by nc_get_att_short().
00812 { 00813 switch(type) { 00814 case NC_CHAR: 00815 return NC_ECHAR; 00816 case NC_BYTE: 00817 return ncx_pad_getn_schar_short(xpp, nelems, tp); 00818 case NC_SHORT: 00819 return ncx_pad_getn_short_short(xpp, nelems, tp); 00820 case NC_INT: 00821 return ncx_getn_int_short(xpp, nelems, tp); 00822 case NC_FLOAT: 00823 return ncx_getn_float_short(xpp, nelems, tp); 00824 case NC_DOUBLE: 00825 return ncx_getn_double_short(xpp, nelems, tp); 00826 } 00827 assert("ncx_pad_getn_Ishort invalid type" == 0); 00828 return NC_EBADTYPE; 00829 } |
|
Definition at line 725 of file attr.c. References ncx_getn_double_uchar(), ncx_getn_float_uchar(), ncx_getn_int_uchar(), ncx_pad_getn_schar_uchar(), and ncx_pad_getn_short_uchar(). Referenced by nc_get_att_uchar().
00726 { 00727 switch(type) { 00728 case NC_CHAR: 00729 return NC_ECHAR; 00730 case NC_BYTE: 00731 return ncx_pad_getn_schar_uchar(xpp, nelems, tp); 00732 case NC_SHORT: 00733 return ncx_pad_getn_short_uchar(xpp, nelems, tp); 00734 case NC_INT: 00735 return ncx_getn_int_uchar(xpp, nelems, tp); 00736 case NC_FLOAT: 00737 return ncx_getn_float_uchar(xpp, nelems, tp); 00738 case NC_DOUBLE: 00739 return ncx_getn_double_uchar(xpp, nelems, tp); 00740 } 00741 assert("ncx_pad_getn_Iuchar invalid type" == 0); 00742 return NC_EBADTYPE; 00743 } |
|
Definition at line 962 of file attr.c. References ncx_pad_putn_schar_double(), ncx_pad_putn_short_double(), ncx_putn_double_double(), ncx_putn_float_double(), and ncx_putn_int_double(). Referenced by nc_put_att_double().
00963 { 00964 switch(type) { 00965 case NC_CHAR: 00966 return NC_ECHAR; 00967 case NC_BYTE: 00968 return ncx_pad_putn_schar_double(xpp, nelems, tp); 00969 case NC_SHORT: 00970 return ncx_pad_putn_short_double(xpp, nelems, tp); 00971 case NC_INT: 00972 return ncx_putn_int_double(xpp, nelems, tp); 00973 case NC_FLOAT: 00974 return ncx_putn_float_double(xpp, nelems, tp); 00975 case NC_DOUBLE: 00976 return ncx_putn_double_double(xpp, nelems, tp); 00977 } 00978 assert("ncx_pad_putn_Idouble invalid type" == 0); 00979 return NC_EBADTYPE; 00980 } |
|
Definition at line 919 of file attr.c. References ncx_pad_putn_schar_float(), ncx_pad_putn_short_float(), ncx_putn_double_float(), ncx_putn_float_float(), and ncx_putn_int_float(). Referenced by nc_put_att_float().
00920 { 00921 switch(type) { 00922 case NC_CHAR: 00923 return NC_ECHAR; 00924 case NC_BYTE: 00925 return ncx_pad_putn_schar_float(xpp, nelems, tp); 00926 case NC_SHORT: 00927 return ncx_pad_putn_short_float(xpp, nelems, tp); 00928 case NC_INT: 00929 return ncx_putn_int_float(xpp, nelems, tp); 00930 case NC_FLOAT: 00931 return ncx_putn_float_float(xpp, nelems, tp); 00932 case NC_DOUBLE: 00933 return ncx_putn_double_float(xpp, nelems, tp); 00934 } 00935 assert("ncx_pad_putn_Ifloat invalid type" == 0); 00936 return NC_EBADTYPE; 00937 } |
|
Definition at line 833 of file attr.c. References ncx_pad_putn_schar_int(), ncx_pad_putn_short_int(), ncx_putn_double_int(), ncx_putn_float_int(), and ncx_putn_int_int(). Referenced by nc_put_att_int().
00834 { 00835 switch(type) { 00836 case NC_CHAR: 00837 return NC_ECHAR; 00838 case NC_BYTE: 00839 return ncx_pad_putn_schar_int(xpp, nelems, tp); 00840 case NC_SHORT: 00841 return ncx_pad_putn_short_int(xpp, nelems, tp); 00842 case NC_INT: 00843 return ncx_putn_int_int(xpp, nelems, tp); 00844 case NC_FLOAT: 00845 return ncx_putn_float_int(xpp, nelems, tp); 00846 case NC_DOUBLE: 00847 return ncx_putn_double_int(xpp, nelems, tp); 00848 } 00849 assert("ncx_pad_putn_Iint invalid type" == 0); 00850 return NC_EBADTYPE; 00851 } |
|
Definition at line 876 of file attr.c. References ncx_pad_putn_schar_long(), ncx_pad_putn_short_long(), ncx_putn_double_long(), ncx_putn_float_long(), and ncx_putn_int_long(). Referenced by nc_put_att_long().
00877 { 00878 switch(type) { 00879 case NC_CHAR: 00880 return NC_ECHAR; 00881 case NC_BYTE: 00882 return ncx_pad_putn_schar_long(xpp, nelems, tp); 00883 case NC_SHORT: 00884 return ncx_pad_putn_short_long(xpp, nelems, tp); 00885 case NC_INT: 00886 return ncx_putn_int_long(xpp, nelems, tp); 00887 case NC_FLOAT: 00888 return ncx_putn_float_long(xpp, nelems, tp); 00889 case NC_DOUBLE: 00890 return ncx_putn_double_long(xpp, nelems, tp); 00891 } 00892 assert("ncx_pad_putn_Ilong invalid type" == 0); 00893 return NC_EBADTYPE; 00894 } |
|
Definition at line 747 of file attr.c. References ncx_pad_putn_schar_schar(), ncx_pad_putn_short_schar(), ncx_putn_double_schar(), ncx_putn_float_schar(), and ncx_putn_int_schar(). Referenced by nc_put_att_schar().
00748 { 00749 switch(type) { 00750 case NC_CHAR: 00751 return NC_ECHAR; 00752 case NC_BYTE: 00753 return ncx_pad_putn_schar_schar(xpp, nelems, tp); 00754 case NC_SHORT: 00755 return ncx_pad_putn_short_schar(xpp, nelems, tp); 00756 case NC_INT: 00757 return ncx_putn_int_schar(xpp, nelems, tp); 00758 case NC_FLOAT: 00759 return ncx_putn_float_schar(xpp, nelems, tp); 00760 case NC_DOUBLE: 00761 return ncx_putn_double_schar(xpp, nelems, tp); 00762 } 00763 assert("ncx_pad_putn_Ischar invalid type" == 0); 00764 return NC_EBADTYPE; 00765 } |
|
Definition at line 790 of file attr.c. References ncx_pad_putn_schar_short(), ncx_pad_putn_short_short(), ncx_putn_double_short(), ncx_putn_float_short(), and ncx_putn_int_short(). Referenced by nc_put_att_short().
00791 { 00792 switch(type) { 00793 case NC_CHAR: 00794 return NC_ECHAR; 00795 case NC_BYTE: 00796 return ncx_pad_putn_schar_short(xpp, nelems, tp); 00797 case NC_SHORT: 00798 return ncx_pad_putn_short_short(xpp, nelems, tp); 00799 case NC_INT: 00800 return ncx_putn_int_short(xpp, nelems, tp); 00801 case NC_FLOAT: 00802 return ncx_putn_float_short(xpp, nelems, tp); 00803 case NC_DOUBLE: 00804 return ncx_putn_double_short(xpp, nelems, tp); 00805 } 00806 assert("ncx_pad_putn_Ishort invalid type" == 0); 00807 return NC_EBADTYPE; 00808 } |
|
Definition at line 704 of file attr.c. References ncx_pad_putn_schar_uchar(), ncx_pad_putn_short_uchar(), ncx_putn_double_uchar(), ncx_putn_float_uchar(), and ncx_putn_int_uchar(). Referenced by nc_put_att_uchar().
00705 { 00706 switch(type) { 00707 case NC_CHAR: 00708 return NC_ECHAR; 00709 case NC_BYTE: 00710 return ncx_pad_putn_schar_uchar(xpp, nelems, tp); 00711 case NC_SHORT: 00712 return ncx_pad_putn_short_uchar(xpp, nelems, tp); 00713 case NC_INT: 00714 return ncx_putn_int_uchar(xpp, nelems, tp); 00715 case NC_FLOAT: 00716 return ncx_putn_float_uchar(xpp, nelems, tp); 00717 case NC_DOUBLE: 00718 return ncx_putn_double_uchar(xpp, nelems, tp); 00719 } 00720 assert("ncx_pad_putn_Iuchar invalid type" == 0); 00721 return NC_EBADTYPE; 00722 } |
|
Definition at line 95 of file attr.c. References free_NC_string(), name, new_NC_string(), new_x_NC_attr(), and strp. Referenced by dup_NC_attr(), nc_copy_att(), nc_put_att_double(), nc_put_att_float(), nc_put_att_int(), nc_put_att_long(), nc_put_att_schar(), nc_put_att_short(), nc_put_att_text(), and nc_put_att_uchar().
00099 { 00100 NC_string *strp; 00101 NC_attr *attrp; 00102 00103 assert(name != NULL && *name != 0); 00104 00105 strp = new_NC_string(strlen(name), name); 00106 if(strp == NULL) 00107 return NULL; 00108 00109 attrp = new_x_NC_attr(strp, type, nelems); 00110 if(attrp == NULL) 00111 { 00112 free_NC_string(strp); 00113 return NULL; 00114 } 00115 00116 return(attrp); 00117 } |
|
Definition at line 59 of file attr.c. References M_RNDUP, malloc, NC_attr::name, ncx_len_NC_attrV(), NC_attr::nelems, strp, NC_attr::type, NC_attr::xsz, and NC_attr::xvalue. Referenced by new_NC_attr(), and v1h_get_NC_attr().
00063 { 00064 NC_attr *attrp; 00065 const size_t xsz = ncx_len_NC_attrV(type, nelems); 00066 size_t sz = M_RNDUP(sizeof(NC_attr)); 00067 00068 assert(!(xsz == 0 && nelems != 0)); 00069 00070 sz += xsz; 00071 00072 attrp = (NC_attr *) malloc(sz); 00073 if(attrp == NULL ) 00074 return NULL; 00075 00076 attrp->xsz = xsz; 00077 00078 attrp->name = strp; 00079 attrp->type = type; 00080 attrp->nelems = nelems; 00081 if(xsz != 0) 00082 attrp->xvalue = (char *)attrp + M_RNDUP(sizeof(NC_attr)); 00083 else 00084 attrp->xvalue = NULL; 00085 00086 return(attrp); 00087 } |