1#ifndef NC_GENLIB_H
2#define NC_GENLIB_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/genlib.h,v 1.20 2010/05/17 23:26:45 dmh Exp $
7 *********************************************************************/
8#include "config.h"
9#include <stdlib.h>
10#include <limits.h>
11#include "generr.h"
12
13/* break if C Line length exceeds this*/
14#define C_MAX_STMT 72
15/* break if FORTRAN Line length exceeds this*/
16#define F77_MAX_STMT 66
17
18#define PATHSEPARATOR   "/"
19
20/* Convenience*/
21#define REQUIRED 1
22#define DONTCARE -1
23#define NOTFLAT 0
24
25#define nulllen(s) ((s)==NULL?0:strlen(s))
26
27#define PRIMNO (NC_STRING - NC_NAT + 1)
28extern struct Symbolprimsymbols[PRIMNO];
29
30extern void derror ( const char *fmt, ... )
31#ifdef _GNUC_
32       __attribute__ ((format (printf, 1, 2)))
33#endif
34;
35
36extern void verror ( const char *fmt, ... )
37#ifdef _GNUC_
38       __attribute__ ((format (printf, 1, 2)))
39#endif
40;
41
42extern void markcdf4(const char *msg);
43extern char* getmarkcdf4(void);
44
45extern void markcdf5(const char *msg);
46extern char* getmarkcdf4(void);
47
48
49/*
50All external procedures in ncgen.h have been moved to this file.
51*/
52
53/* from: genlib.c */
54extern void define_netcdf(void);/* generates all define mode stuff */
55extern void close_netcdf ( void ); /* generates close */
56extern char* cprefixed(Listprefix, char* suffix, char* separator);
57extern void topfqn(Symbolsym);
58extern void nestedfqn(Symbolsym);
59extern void attfqn(Symbolsym);
60
61/* from: escapes.c */
62extern int unescape(char*, const char*, int, int);
63extern int unescapeoct(const char* s);
64extern int unescapehex(const char* s);
65extern char* cescapifychar(unsigned int c, int quote);
66extern char* codify(const char *name);
67extern char* escapifychar(unsigned int c, char* s0, int quote);
68extern char* escapify(char*,int,size_t);
69extern char* escapifyname(char* s0);
70extern void cquotestring(Bytebuffer*,char quote);
71extern void f77quotestring(Bytebuffer*);
72extern char* xescapify(char* s0, int quote, size_t len);
73extern char* jescapify(char* s0, int quote, size_t len);
74extern char* jescapifyname(char* s0);
75extern char* fqnescape(const char* s);
76
77/* from: getfill.c */
78extern void nc_getfill(NCConstant*);
79extern char* nc_dfaltfillname(nc_type);
80extern struct Datalistgetfiller(Symbol*); /* symbol isa variable|type */
81
82/* from: ncgen.y */
83extern Symbolinstall(const char *sname);
84extern Symbolbasetypefor(nc_type nctype);/* Convert nctype to a Symbol*/
85extern Symbolmakearraytype(Symbol*, Dimset*);
86
87/* from: cvt.c */
88extern void convert1(NCConstant*,NCConstant*); /* Convert an arbitrary value to another */
89extern void setprimlength(NCConstantprim, unsigned long len);
90extern struct Datalistconvertstringtochars(NCConstantstr);
91
92
93/* from: semantic.c */
94extern  void processsemantics(void);
95extern  size_t nctypesize(nc_type);
96extern  Symbollocate(Symbolrefsym);
97extern  Symbollookup(nc_class objectclassSymbolpattern);
98extern  Symbollookupingroup(nc_class objectclass, char* nameSymbolgrp);
99extern  Symbollookupgroup(Listprefix);
100extern int nounlimited(Dimsetdimset, int from);
101extern int lastunlimited(Dimsetdimset);
102extern void padstring(NCConstantcon, size_t desiredlength, int fillchar);
103
104extern Datalistexplodestrings(Datalist*,char*);
105extern Datalistimplodestrings(Datalist*,char*);
106extern int explodestringconst(NCConstantcon, char* tagNCConstant*);
107
108extern char* indented(int n);
109
110/* Generators for cdf, c, and fortran */
111
112#ifdef ENABLE_BINARY
113/* from: genbin.c */
114extern Generatorbin_generator;
115extern void gen_netcdf(const char *filename);
116extern void cl_netcdf(void);
117#endif
118
119#ifdef ENABLE_C
120/* from: genc.c */
121extern Generatorc_generator;
122extern void gen_ncc(const char *filename);
123extern void cl_c(void);
124extern const char* ctypename(Symbol*);
125extern const char* nctype(nc_type type);
126extern const char* ncctype(nc_type type);
127extern const char* ncstype(nc_type type);
128extern const char* cname(Symbolsym);
129
130#endif
131
132#ifdef ENABLE_F77
133/* from: genf77.c */
134extern Generatorf77_generator;
135extern void gen_ncf77(const char *filename);
136extern void cl_f77(void);
137extern const char* f77name(Symbol*);
138extern const char* f77typename(Symbol*);
139#endif
140
141#ifdef ENABLE_JAVA
142/* from: genj.c */
143extern Generatorj_generator;
144extern void gen_ncjava(const char *filename);
145extern void cl_java(void);
146extern void jpartial(char*);
147extern void jline(char*);
148extern void jlined(int,char*);
149extern void jflush(void);
150#endif
151
152
153/* from: main.c */
154extern int k_flag;    /* -k value from command line*/
155extern int format_attribute; /* 1 if format came from _FORMAT attribute */
156extern int enhanced_flag; /* 1 => netcdf-4 constructs appear in the parse */
157extern int cdf5_flag; /* 1 => cdf-5 unsigned types in the parse */
158extern int specials_flag; /* 1 => special attributes are present */
159extern int usingclassic;   /* 1 => k_flag == 1|2|5 */
160extern int k_flag;
161extern int ncloglevel;
162extern GlobalSpecialData globalspecials;
163
164/* Global data */
165
166extern Symbolsymlist;      /* all symbol objects created */
167extern Symbolrootgroup;
168
169/* Track definitions of dims, types, attributes, and vars*/
170extern Listgrpdefs;
171extern Listdimdefs;
172extern Listattdefs;
173extern Listgattdefs;
174extern Listxattdefs;
175extern Listtypdefs;
176extern Listvardefs;
177extern Listcondefs;
178
179extern int CDFmodel;
180
181extern int lineno;
182extern int derror_count;
183extern int kflag_flag;
184extern int cmode_modifier;
185extern Language l_flag;
186extern char* binary_ext;
187extern int nofill_flag;
188extern int header_only;
189extern char* mainname;
190extern size_t nciterbuffersize;
191
192extern char* progname; /* for error messages*/
193extern char *netcdf_name; /* command line -o file name */
194extern char *datasetname; /* name from the netcdf <name> {} */
195extern char *cdlname; /* name from the command line */
196
197/* from: util.c */
198extern void* emalloc (size_t);
199extern void* ecalloc (size_t);
200extern void* erealloc(void*,size_t);
201
202extern const char* specialname(int tag);
203
204#endif /*!NC_GENLIB_H*/


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