1/* Copyright 2009, UCAR/Unidata and OPeNDAP, Inc.
2   See the COPYRIGHT file for more information. */
3
4#ifndef OCUTIL_H
5#define OCUTIL_H 1
6
7/* Forward */
8struct OCstate;
9
10#define ocmax(x,y) ((x) > (y) ? (x) : (y))
11
12extern char* ocstrndup(const char* s, size_t len);
13extern int ocstrncmp(const char* s1, const char* s2, size_t len);
14
15extern int occopycat(char* dst, size_t size, size_t n, ...);
16extern int occoncat(char* dst, size_t size, size_t n, ...);
17
18extern size_t octypesize(OCtype etype);
19extern char*  octypetostring(OCtype octype);
20extern char*  octypetoddsstring(OCtype octype);
21extern char* ocerrstring(int err);
22extern OCerror ocsvcerrordata(struct OCstate*,char**,char**,long*);
23extern OCerror octypeprint(OCtype etype, void* value, size_t bufsize, char* buf);
24extern size_t xxdrsize(OCtype etype);
25
26extern int oc_ispacked(OCnodenode);
27
28extern size_t octotaldimsize(size_t,size_t*);
29
30extern size_t ocarrayoffset(size_t rank, size_t*, size_t*);
31extern void ocarrayindices(size_t index, size_t rank, size_t*, size_t*);
32extern size_t ocedgeoffset(size_t rank, size_t*, size_t*);
33
34extern int ocvalidateindices(size_t rank, size_t*, size_t*);
35
36extern void ocmakedimlist(OClistpathOClistdims);
37
38extern int ocfindbod(OCbytesbuffer, size_t*, size_t*);
39
40/* Reclaimers*/
41extern void ocfreeprojectionclause(OCprojectionclauseclause);
42
43/* Misc. */
44
45/* merge two envv style lists */
46extern char** ocmerge(const char** list1, const char** list2);
47
48extern int ocmktmp(const char* base, char** tmpnamep);
49
50extern void ocdataddsmsg(struct OCstate*, struct OCtree*);
51
52extern const char* ocdtmodestring(OCDT mode,int compact);
53
54/* Define some classifiers */
55#define ociscontainer(t) ((t) == OC_Dataset || (t) == OC_Structure || (t) == OC_Sequence || (t) == OC_Grid || (t) == OC_Attributeset)
56
57#define ocisatomic(t) ((t) == OC_Atomic)
58
59#endif /*UTIL_H*/


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