1#ifndef NCGEN_UTIL_H
2#define NCGEN_UTIL_H
3/*********************************************************************
4 *   Copyright 1993, UCAR/Unidata
5 *   See netcdf/COPYRIGHT file for copying and redistribution conditions.
6 *   $Header: /upc/share/CVS/netcdf-3/ncgen/util.h,v 1.3 2010/04/04 19:39:57 dmh Exp $
7 *********************************************************************/
8
9#define MAX(x,y) ((x)>(y)?(x):(y))
10
11extern void expe2d(char*);
12extern int pow2(int);
13extern void tztrim(char*);
14extern unsigned int chartohex(char c);
15
16extern void reclaimvardata(List*);
17extern void reclaimattptrs(void*, long);
18extern void cleanup(void);
19extern char* fullname(Symbol*);
20
21extern int isunlimited0(Dimset*);
22extern int hasunlimited(Dimsetdimset);
23extern int classicunlimited(Dimsetdimset);
24extern int isbounded(Dimsetdimset);
25extern char* nctypename(nc_type);
26extern char* ncclassname(nc_class);
27extern int ncsize(nc_type);
28
29extern nc_type signedtype(nc_type nctype);
30extern nc_type unsignedtype(nc_type nctype);
31
32/* We have several versions of primitive testing*/
33extern int isinttype(nc_type nctype); /* some kind of integer*/
34extern int isuinttype(nc_type nctype); /* some kind of integer*/
35extern int isfloattype(nc_type nctype); /* some kind of float*/
36extern int isclassicprim(nc_type); /* a classic primitive type*/
37extern int isclassicprimplus(nc_type); /* classic + String*/
38extern int isprim(nc_type); /* a netcdf4 primitive type*/
39extern int isprimplus(nc_type); /* a netcdf4 primitive type + OPAQUE + ENUM*/
40
41extern void collectpath(SymbolgrpListgrpstack);
42extern Listprefixdup(List*);
43extern int prefixeq(List*,List*);
44#define prefixlen(sequence) (listlength(sequence))
45
46extern char* poolalloc(size_t);
47extern char* pooldup(const char*);
48extern char* poolcat(const char* s1, const char* s2);
49
50/* compute the total n-dimensional size as 1 long array;
51   if stop == 0, then stop = dimset->ndims.
52*/
53extern size_t crossproduct(Dimsetdimset, int start, int stop);
54extern int findunlimited(Dimsetdimset, int start);
55extern int findlastunlimited(Dimsetdimset);
56extern int countunlimited(Dimsetdimset);
57
58extern unsigned char* makebytestring(char* s, size_t* lenp);
59extern int getpadding(int offset, int alignment);
60
61extern void check_err(const int stat, const int line, const char* file);
62extern void check_err2(const int stat, const int cdlline, const int line, const char* file);
63extern const char* kind_string(int kind);
64extern int getrootid(int grpid);
65
66/* Inline functions */
67#define isunlimited(dimset,i) ((dimset)->dimsyms[i]->dim.isunlimited)
68#define declsizefor(dimset,i) ((dimset)->dimsyms[i]->dim.declsize)
69#define rankfor(dimset) ((dimset)->ndims)
70
71#endif /*NCGEN_UTIL_H*/


HyperKWIC - Version 7.20DA executed at 11:37 on 27 Oct 2017 | Polyhedron Solutions - INTERNAL USE | COMMERCIAL (Any O/S) SN 4AKIed