/usr/include/cdTime/cdunifint.h is in libcmor-dev 2.9.1-6.1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 | /* -*-Mode: C;-*-
* Module: cdunifint.h - cdunif internal include file
*
* Copyright: 1994, Regents of the University of California
* This software may not be distributed to others without
* permission of the author.
*
* Author: Bob Drach, Lawrence Livermore National Laboratory
* drach@llnl.gov
*
* Version: $Id$
*
* Revision History:
*
* $Log: cdunifint.h,v $
* Revision 1.2 1998/07/02 23:40:47 drach
* - Added support for absolute time, via routines cdAbs2Comp, cdComp2Abs, cdDecodeRelativeTime, and cdDecodeAbsoluteTime
* - Added support for the LANL POP ocean data format
*
* Revision 1.1.1.1 1997/12/09 18:57:39 drach
* Copied from cirrus
*
* Revision 1.15 1997/12/03 22:21:53 drach
* - In cdunifdrs.c, dimensions which are reversed or subsetted wrt a
* coordinate dimension are now treated as local.
* - Added cdDimGetDouble to cdmsslab.c
* - Fixed wraparound, reading wraparound dimensions in cdmsslab.c
*
* Revision 1.14 1997/11/24 17:28:06 drach
* - Added QL package to cdunif
* - Added NdimIntersect function to CDMS
*
* Revision 1.13 1997/10/24 18:23:36 drach
* - Cache netCDF unlimited dimensions
* - Consistent with GrADS src170
*
* Revision 1.12 1997/09/26 21:45:27 drach
* - Added HDF
* - Repaired fouled up cddrs includes
*
* Revision 1.11 1997/01/06 17:47:14 drach
* - Added HDF to cdunif
*
* Revision 1.10 1995/10/16 18:57:20 drach
* - Added CuInt datatype, DEC Alpha version
* - Modified prototypes for casting routines
*
* Revision 1.9 1995/09/15 21:18:52 drach
* - Modified for Cray
*
* Revision 1.8 1995/03/09 00:35:19 drach
* Added netCDF, upgraded cureadarray with casting, user-specified indices
*
* Revision 1.7 1995/01/18 02:53:59 drach
* - Made cuseterropts a dispatch function
*
* Revision 1.6 1994/12/20 23:12:46 drach
* - Added GrADS function declarations
*
* Revision 1.5 1994/12/20 01:20:07 drach
* - Added copybuffer size define
*
* Revision 1.4 1994/12/17 00:43:26 drach
* - remove cuNextLu extern def - localized in cdunif.c now
*
* Revision 1.3 1994/12/14 02:33:40 drach
* - Renamed _CDUNIFIO_H to _CDUNIFINT_H
*
* Revision 1.2 1994/11/18 00:12:47 drach
* Added error processing routines and externs.
*
* Revision 1.1 1994/11/17 21:39:13 drach
* Initial version
*
*
*/
#ifndef _CDUNIFINT_H
#define _CDUNIFINT_H
#include <stdlib.h>
#include "cdunif.h"
/*
* =================================================================
* Magic cookies
* =================================================================
*/
#if defined(cray)
#define DRS_MAGIC_COOKIE 0x4452532044494354
#define NETCDF_MAGIC_COOKIE 0x4344460100000000
#define NETCDF4_MAGIC_COOKIE 0x894844460000000
#define NETCDF4_64BIT_MAGIC_COOKIE 0x460243440000000
#define NETCDF4_64BIT_MAGIC_COOKIE2 0x444689480000000
#define HDF_MAGIC_COOKIE 0x0e03130100000000
#elif defined(__alpha)
#define DRS_MAGIC_COOKIE 0x5443494420535244
#define NETCDF_MAGIC_COOKIE 0x0000000001464443
#define NETCDF4_MAGIC_COOKIE 0x000000046444889
#define NETCDF4_64BIT_MAGIC_COOKIE 0x000000002464443
#define NETCDF4_64BIT_MAGIC_COOKIE2 0x0000000046444889
#define HDF_MAGIC_COOKIE 0x000000000113030e
#elif defined(__ia64)
#define DRS_MAGIC_COOKIE 0x5443494420535244
#define NETCDF_MAGIC_COOKIE 0x0000000001464443
#define NETCDF4_MAGIC_COOKIE 0x000000046444889
#define NETCDF4_64BIT_MAGIC_COOKIE 0x000000002464443
#define NETCDF4_64BIT_MAGIC_COOKIE2 0x000000046444889
#define HDF_MAGIC_COOKIE 0x000000000113030e
#elif defined(__x86_64__)
#define DRS_MAGIC_COOKIE 0x5443494420535244
#define NETCDF_MAGIC_COOKIE 0x0000000001464443
#define NETCDF4_MAGIC_COOKIE 0x000000002464443
#define NETCDF4_64BIT_MAGIC_COOKIE 0x000000002464443
#define NETCDF4_64BIT_MAGIC_COOKIE2 0x000000046444889
#define HDF_MAGIC_COOKIE 0x000000000113030e
#elif defined(BYTESWAP)
#define DRS_MAGIC_COOKIE 0x20535244
#define NETCDF_MAGIC_COOKIE 0x01464443
#define HDF_MAGIC_COOKIE 0x0113030e
#define NETCDF4_MAGIC_COOKIE 1178880137
#define NETCDF4_64BIT_MAGIC_COOKIE 0x02464443
#define NETCDF4_64BIT_MAGIC_COOKIE2 0x46444889
#else
#define DRS_MAGIC_COOKIE 0x44525320
#define NETCDF_MAGIC_COOKIE 0x43444601
#define HDF_MAGIC_COOKIE 0x0e031301
#define NETCDF4_MAGIC_COOKIE -1991752634
#define NETCDF4_64BIT_MAGIC_COOKIE 0x46024344
#define NETCDF4_64BIT_MAGIC_COOKIE2 0x44468948
#endif
#define CU_BUFSIZE 204800 /* Size of cureadarray copy buffer, in bytes */
/*
* =================================================================
* Structures
* =================================================================
*/
typedef struct cu_file CuFile;
typedef struct cu_var CuVar;
typedef struct cu_dim CuDim;
typedef struct cu_att CuAtt;
struct cu_att { /* Attribute */
char name[CU_MAX_NAME+1]; /* Attribute name */
CuType datatype; /* Datatype of the attribute */
long len; /* Number of elements (NOT bytes) */
void *val; /* Pointer to internal structure for GrADS */
};
struct cu_dim { /* Dimension */
char name[CU_MAX_NAME+1]; /* Dimension name */
char units[CU_MAX_NAME+1]; /* Dimension units */
CuVar* var; /* Variable for local dimensions; (CuVar*)0 for global */
CuVar* coord; /* Associated coordinate variable if global, or (CuVar*)0 if local */
int internid; /* Internal integer ID (0-origin dimension number for DRS) */
int spacing; /* For DRS, IDRS_EQUALLY_SPACED or IDRS_UNEQUALLY_SPACED */
double first; /* First dimension value, for DRS eq-spaced dimensions, or first coordinate value for DRS uneq-spaced dimensions */
double interval; /* Dimension interval for DRS eq-spaced dimensions */
void *internp; /* Pointer to internal structure for GrADS */
long len; /* Number of elements (NOT bytes) */
CuType datatype; /* Datatype of related coordinate dimension, or CuDouble if none */
CuDimType dimtype; /* Type of dimensions (CuGlobalDim or CuLocalDim) */
};
struct cu_var { /* Variable */
int id; /* Cdunif ID */
char name[CU_MAX_NAME+1]; /* Variable name */
CuFile *file; /* File containing this variable */
int internalid; /* Internal ID (e.g., for netCDF) */
void *internp; /* Pointer to internal structure for GrADS */
CuType datatype; /* Datatype of variable */
int ndims; /* Number of dimensions */
int dims[CU_MAX_VAR_DIMS]; /* Pointer to array of dimension IDs */
int natts; /* Number of attributes for this variable */
CuAtt *atts; /* Pointer to array of attributes */
};
struct cu_file { /* File */
char controlpath[CU_MAX_PATH+1]; /* Pathname of control file */
char datapath[CU_MAX_PATH+1]; /* Pathname of datafile (e.g., for DRS) */
int id; /* Cdunif ID */
int internid1; /* First internal ID (e.g. dictionary LU for DRS); netCDF file ID */
int internid2; /* Second internal ID (e.g., datafile LU for DRS) */
void *internp; /* Pointer to internal structure for GrADS */
CuFileType filetype; /* File format */
int ndims; /* Total number of global AND local dimensions */
CuDim* dims; /* Pointer to array of global and local dimensions */
int recdim; /* Record dimension, or -1 if not applicable */
void *recdimcache; /* Record dimension cached values, or 0 if no values */
int nvars; /* Number of variables */
CuVar* vars; /* Pointer to array of variables */
int ngatts; /* Number of global attributes */
CuAtt* atts; /* Pointer to array of global attributes */
CuFile* next; /* Next file in list */
};
/*
* =================================================================
* Function prototypes
* =================================================================
*/
/* cdunif internal functions */
extern CuFile* CuCreateFile(CuFileType filetype);
extern CuFile* CuLookupFile(int fileid);
extern int CuDeleteFile(int fileid);
extern CuVar* CuCreateVars(CuFile* file, int nvars);
extern CuVar* CuLookupVar(CuFile* file, int varid);
extern int CuDeleteVars(CuFile* file);
extern CuDim* CuCreateDims(CuFile* file, int ndims);
extern CuDim* CuLookupDim(CuFile* file, int dimid);
extern CuAtt* CuCreateAtts(CuFile* file, CuVar* var, int natts);
extern int CuSetAtt(CuFile* file, CuVar* var, int attnum, const char *name, CuType datatype, long len, void *values);
extern CuAtt* CuLookupAtt(CuFile* file, int varid, const char *name);
extern int CuDeleteAtts(CuFile* file, CuVar *var);
extern CuFileType CuGetFileType(const char *controlpath);
extern void CuError(int ierr, char *fmt, ...);
/* cureadarray internal functions */
extern int cuCopyArray(char *a, CuRRA *aIndices, char *b, CuRRA *bIndices, const long transpose[], size_t elemSize);
extern int cureadarray1(int fileid, int varid, CuRRA *vIndices, const long transpose[], void *userArray,
CuRRA *uIndices, void *copyBuffer, long lenBuffer, long iter);
extern int cuCast(CuType fromType, CuType toType, long nelems, void *array);
extern void cuFloat2Double(long nelems, void *buf);
extern void cuDouble2LongDouble(long nelems, void *buf);
extern void cuChar2Short(long nelems, void *buf);
extern void cuShort2Int(long nelems, void *buf);
extern void cuInt2Long(long nelems, void *buf);
extern void cuDouble2Float(long nelems, void *buf);
extern void cuLongDouble2Double(long nelems, void *buf);
extern void cuShort2Char(long nelems, void *buf);
extern void cuInt2Short(long nelems, void *buf);
extern void cuLong2Int(long nelems, void *buf);
/* Stub functions */
extern int cuclose_stub(CuFile* file);
extern int cuinquire_stub(CuFile* file, int* ngdims, int* nvars, int* natts, int* recdim);
extern int cudimid_stub(CuFile* file, int varid, const char* name);
extern int cudiminq_stub(CuFile* file, int dimid, char* dimname, char* dimunits, CuType* dataType, CuDimType* dimtype, int* varid, long* length);
extern int cudimget_stub(CuFile* file, int dimid, void* values);
extern int cuvarid_stub(CuFile* file, const char* name);
extern int cuvarinq_stub(CuFile* file, int varid, char* name, CuType* datatype, int* ndims, int dimids[], int* natts);
extern int cuvarget_stub(CuFile* file, int varid, const long start[], const long count[], void* value);
extern int cuattinq_stub(CuFile* file, int varid, const char* name, CuType* datatype, int* len);
extern int cuattget_stub(CuFile* file, int varid, const char* name, void* value);
extern int cuattname_stub(CuFile* file, int varid, int attnum, char* name);
/* Generic functions use cdunifint structures built at */
/* file open, can be used for any format which builds */
/* the proper structures */
extern int cuinquire_gen(CuFile* file, int* ngdims, int* nvars, int* natts, int* recdim);
extern int cudimid_gen(CuFile* file, int varid, const char* name);
extern int cudiminq_gen(CuFile* file, int dimid, char* dimname, char* dimunits, CuType* dataType, CuDimType* dimtype, int* varid, long* length);
extern int cuvarid_gen(CuFile* file, const char* name);
extern int cuvarinq_gen(CuFile* file, int varid, char* name, CuType* datatype, int* ndims, int dimids[], int* natts);
extern int cuattinq_gen(CuFile* file, int varid, const char* name, CuType* datatype, int* len);
extern int cuattget_gen(CuFile* file, int varid, const char* name, void* value);
extern int cuattname_gen(CuFile* file, int varid, int attnum, char* name);
extern void cuseterropts_gen(int erropts);
/* DRS functions */
#ifdef drs
extern int cuopenread_drs(const char* controlpath, const char* datapath);
extern int cuclose_drs(CuFile* file);
extern int cudimget_drs(CuFile* file, int dimid, void* values);
extern int cuvarget_drs(CuFile* file, int varid, const long start[], const long count[], void* value);
extern void cuseterropts_drs(int erropts);
extern char* custrtrim(char* s);
#else
extern int cuopenread_stub_drs(const char* controlpath, const char* datapath);
#endif
/* GrADS functions */
#ifdef grads
extern int cuopenread_grads(const char* controlpath, const char* datapath);
extern int cuclose_grads(CuFile* file);
extern int cudimget_grads(CuFile* file, int dimid, void* value);
extern int cuvarget_grads(CuFile* file, int varid, const long start[], const long count[], void* value);
#else
extern int cuopenread_stub_grads(const char* controlpath, const char* datapath);
#endif
/* netCDF functions */
#ifdef netcdf
#include "netcdf.h"
extern int cuopenread_nc(const char* controlpath, const char* datapath);
extern int cuclose_nc(CuFile* file);
extern int cuinquire_nc(CuFile* file, int* ngdims, int* nvars, int* natts, int* recdim);
extern int cudimid_nc(CuFile* file, int varid, const char* name);
extern int cudiminq_nc(CuFile* file, int dimid, char* dimname, char* dimunits, CuType* dataType, CuDimType* dimtype, int* varid, long* length);
extern int cudimget_nc(CuFile* file, int dimid, void* values);
extern int cuvarid_nc(CuFile* file, const char* name);
extern int cuvarinq_nc(CuFile* file, int varid, char* name, CuType* datatype, int* ndims, int dimids[], int* natts);
extern int cuvarget_nc(CuFile* file, int varid, const long start[], const long count[], void* value);
extern int cuattinq_nc(CuFile* file, int varid, const char* name, CuType* datatype, int* len);
extern int cuattget_nc(CuFile* file, int varid, const char* name, void* value);
extern int cuattname_nc(CuFile* file, int varid, int attnum, char* name);
extern void cuseterropts_nc(int erropts);
extern void cumapdatatype_nc(nc_type nctype, CuType* cutype);
extern int cugetattany_nc(CuFile* file, int varid, const char *name, CuType xtype, void *data);
#else
extern int cuopenread_stub_nc(const char* controlpath, const char* datapath);
#endif
/* HDF functions */
#ifdef hdf
#include "hdfi.h"
typedef int32 hdf_type;
extern int cuopenread_hdf(const char* controlpath, const char* datapath);
extern int cuclose_hdf(CuFile* file);
extern int cuinquire_hdf(CuFile* file, int* ngdims, int* nvars, int* natts, int* recdim);
extern int cudimid_hdf(CuFile* file, int varid, const char* name);
extern int cudiminq_hdf(CuFile* file, int dimid, char* dimname, char* dimunits, CuType* dataType, CuDimType* dimtype, int* varid, long* length);
extern int cudimget_hdf(CuFile* file, int dimid, void* values);
extern int cuvarid_hdf(CuFile* file, const char* name);
extern int cuvarinq_hdf(CuFile* file, int varid, char* name, CuType* datatype, int* ndims, int dimids[], int* natts);
extern int cuvarget_hdf(CuFile* file, int varid, const long start[], const long count[], void* value);
extern int cuattinq_hdf(CuFile* file, int varid, const char* name, CuType* datatype, int* len);
extern int cuattget_hdf(CuFile* file, int varid, const char* name, void* value);
extern int cuattname_hdf(CuFile* file, int varid, int attnum, char* name);
extern void cuseterropts_hdf(int erropts);
extern void cuerrorreport_hdf(/* NO ARGS */);
extern void cumapdatatype_hdf(hdf_type nctype, CuType* cutype);
#else
extern int cuopenread_stub_hdf(const char* controlpath, const char* datapath);
#endif
/* QL functions */
#ifdef HAVE_QL
extern int cuopenread_ql(const char* controlpath, const char* datapath);
extern int cuclose_ql(CuFile* file);
extern int cuinquire_ql(CuFile* file, int* ngdims, int* nvars, int* natts, int* recdim);
extern int cudimid_ql(CuFile* file, int varid, const char* name);
extern int cudiminq_ql(CuFile* file, int dimid, char* dimname, char* dimunits, CuType* dataType, CuDimType* dimtype, int* varid, long* length);
extern int cudimget_ql(CuFile* file, int dimid, void* values);
extern int cuvarid_ql(CuFile* file, const char* name);
extern int cuvarinq_ql(CuFile* file, int varid, char* name, CuType* datatype, int* ndims, int dimids[], int* natts);
extern int cuvarget_ql(CuFile* file, int varid, const long start[], const long count[], void* value);
extern int cuattinq_ql(CuFile* file, int varid, const char* name, CuType* datatype, int* len);
extern int cuattget_ql(CuFile* file, int varid, const char* name, void* value);
extern int cuattname_ql(CuFile* file, int varid, int attnum, char* name);
extern void cuseterropts_ql(int erropts);
#else
extern int cuopenread_stub_ql(const char* controlpath, const char* datapath);
#endif
/* POP functions */
#ifdef HAVE_POP
#include "apic.h"
extern int cuopenread_pop(const char* controlpath, const char* datapath);
extern int cuclose_pop(CuFile* file);
extern int cuinquire_pop(CuFile* file, int* ngdims, int* nvars, int* natts, int* recdim);
extern int cudimid_pop(CuFile* file, int varid, const char* name);
extern int cudiminq_pop(CuFile* file, int dimid, char* dimname, char* dimunits, CuType* dataType, CuDimType* dimtype, int* varid, long* length);
extern int cudimget_pop(CuFile* file, int dimid, void* values);
extern int cuvarid_pop(CuFile* file, const char* name);
extern int cuvarinq_pop(CuFile* file, int varid, char* name, CuType* datatype, int* ndims, int dimids[], int* natts);
extern int cuvarget_pop(CuFile* file, int varid, const long start[], const long count[], void* value);
extern int cuattinq_pop(CuFile* file, int varid, const char* name, CuType* datatype, int* len);
extern int cuattget_pop(CuFile* file, int varid, const char* name, void* value);
extern int cuattname_pop(CuFile* file, int varid, int attnum, char* name);
extern void cuseterropts_pop(int erropts);
extern void cumapdatatype_pop(Type nctype, CuType* cutype);
#else
extern int cuopenread_stub_pop(const char* controlpath, const char* datapath);
#endif
/* PP functions */
#ifdef HAVE_PP
extern int cuopenread_pp(const char* controlpath, const char* datapath);
extern int cuclose_pp(CuFile* file);
extern int cudimget_pp(CuFile* file, int dimid, void* values);
extern int cuvarget_pp(CuFile* file, int varid, const long start[], const long count[], void* value);
#else
extern int cuopenread_stub_pp(const char* controlpath, const char* datapath);
#endif
/* Globals */
extern int cuLastDrsErr; /* Most recent DRS error number */
extern int cuLastError; /* Most recent cdunif error */
#endif
|