/* How much space in the header is required for the NC data structure? */ size_t ncx_len_NC(const NC *ncp, size_t sizeof_off_t) { size_t xlen = sizeof(ncmagic); assert(ncp != NULL); xlen += X_SIZEOF_SIZE_T; /* numrecs */ xlen += ncx_len_NC_dimarray(&ncp->dims); xlen += ncx_len_NC_attrarray(&ncp->attrs); xlen += ncx_len_NC_vararray(&ncp->vars, sizeof_off_t); return xlen; }
/* * How much space will the xdr'd var take. * Formerly NC_xlen_var(vpp) */ static size_t ncx_len_NC_var(const NC_var *varp, size_t sizeof_off_t) { size_t sz; assert(varp != NULL); assert(sizeof_off_t != 0); sz = ncx_len_NC_string(varp->name); sz += X_SIZEOF_SIZE_T; /* ndims */ sz += ncx_len_int(varp->ndims); /* dimids */ sz += ncx_len_NC_attrarray(&varp->attrs); sz += X_SIZEOF_NC_TYPE; /* type */ sz += X_SIZEOF_SIZE_T; /* len */ sz += sizeof_off_t; /* begin */ return(sz); }
/* How much space in the header is required for the NC data structure? */ size_t ncx_len_NC(const NC3_INFO* ncp, size_t sizeof_off_t) { int version=1; size_t xlen = sizeof(ncmagic); assert(ncp != NULL); if (fIsSet(ncp->flags, NC_64BIT_DATA)) /* CDF-5 */ version = 5; else if (fIsSet(ncp->flags, NC_64BIT_OFFSET)) /* CDF-2 */ version = 2; xlen += (version == 5) ? X_SIZEOF_INT64 : X_SIZEOF_SIZE_T; /* numrecs */ xlen += ncx_len_NC_dimarray(&ncp->dims, version); xlen += ncx_len_NC_attrarray(&ncp->attrs, version); xlen += ncx_len_NC_vararray(&ncp->vars, sizeof_off_t, version); return xlen; }
/* * How much space will the xdr'd var take. * Formerly NC_xlen_var(vpp) */ static size_t ncx_len_NC_var(const NC_var *varp, size_t sizeof_off_t, int version) { size_t sz; assert(varp != NULL); assert(sizeof_off_t != 0); sz = ncx_len_NC_string(varp->name, version); if (version == 5) { sz += X_SIZEOF_INT64; /* ndims */ sz += ncx_len_int64(varp->ndims); /* dimids */ } else { sz += X_SIZEOF_SIZE_T; /* ndims */ sz += ncx_len_int(varp->ndims); /* dimids */ } sz += ncx_len_NC_attrarray(&varp->attrs, version); sz += X_SIZEOF_NC_TYPE; /* nc_type */ sz += (version == 5) ? X_SIZEOF_INT64 : X_SIZEOF_SIZE_T; /* vsize */ sz += sizeof_off_t; /* begin */ return(sz); }