1/*********************************************************************
2 *   Copyright 1993, University Corporation for Atmospheric Research
3 *   See netcdf/COPYRIGHT file for copying and redistribution conditions.
4 *   $Header: /upc/share/CVS/netcdf-3/ncdump/dumplib.h,v 1.28 2009/08/13 21:06:13 russ Exp $
5 *********************************************************************/
6#ifndef _DUMPLIB_H_
7#define _DUMPLIB_H_
8
9#include "config.h"
10
11extern char *progname; /* for error messages */
12
13#ifndef NO_NETCDF_2
14#define NO_NETCDF_2 /* assert we aren't using any netcdf-2 stuff */
15#endif
16
17#ifndef EXIT_FAILURE
18#ifndef vms
19#define EXIT_SUCCESS 0
20#define EXIT_FAILURE 1
21#else
22#define EXIT_SUCCESS 1
23#define EXIT_FAILURE 0
24#endif
25#endif
26
27/* more than enough characters needed to represent any single numeric
28 * primitive value (e.g. int, float, double, long long, ...) using
29 * printf functions */
30#define PRIM_LEN 100
31
32#define FLT_DIGITS 7 /* default sig. digits for float data */
33#define DBL_DIGITS 15 /* default sig. digits for double data */
34
35extern int float_precision_specified; /* -p option specified float precision */
36extern int double_precision_specified; /* -p option specified double precision */
37extern char float_var_fmt[];
38extern char double_var_fmt[];
39extern char float_att_fmt[];
40extern char float_attx_fmt[];
41extern char double_att_fmt[];
42
43/* Display for netCDF-4 and HDF5 string values representing NULL
44 * pointers rather than empty strings.  HDF5 distinguishes these two
45 * kinds of string values so NULL pointers can be used as fill values
46 * for lists of strings that might include empty strings. */
47#define NIL_STRING "NIL"
48
49#ifdef __cplusplus
50extern "C" {
51#endif
52
53#ifndef HAVE_STRLCAT
54/* Append src to dst of size siz */
55extern size_t strlcat(char *dst, const char *src, size_t siz);
56#endif /* ! HAVE_STRLCAT */
57
58/* In case different formats specified with -d option, set them here. */
59extern void set_formats ( int flt_digs, int dbl_digs );
60
61/* Determine print format to use for each value for this variable. */
62const char * get_fmt ( int ncid, int varidnc_type typeid );
63
64/* Add type info to type list */
65extern void typeadd ( nctype_t *typep );
66
67/* From type id, get full type info (in current typlelist context)  */
68extern nctype_t *get_typeinfo ( int typeid );
69
70/* From type id, get type name */
71extern void get_type_name(int ncidnc_type type, char *name);
72
73/* set tostring member function */
74extern void set_tostring_func ( ncvar_t *varp);
75
76/* helper function for output of opaque attributes */
77extern int ncopaque_val_as_hex ( size_t size, char *buf, const void *valp );
78
79/* Initialize list of types, only need primitive types for netCDF-3 */
80extern void init_types ( int ncid );
81
82/* Deallocate type list  */
83/* extern void     xfree_typeinfo ( ); */
84
85/* Test if variable is a coordinate variable */
86extern int      iscoordvar ( int ncid, int varid );
87
88/* Test if user-defined type */
89extern int  is_user_defined_type ( nc_type type );
90
91/* Initialize global constants used in slightly fuzzy float comparisons */
92extern void init_epsilons ( void );
93
94/* Initialize string buffer */
95safebuf_t *sbuf_new();
96
97/* Copy string s2 to buffer in sbuf, growing if necessary */
98void sbuf_cpy(safebuf_t *sbuf, const char *s2);
99
100/* Concatenate string s2 to end of buffer in sbuf, growing if necessary */
101void sbuf_cat(safebuf_t *sbuf, const char *s2);
102
103/* Concatenate sbuf s2 to end of sbuf s1, growing if necessary */
104void sbuf_catb(safebuf_t *s1, const safebuf_t *s2);
105
106/* Return length of the string in sbuf */
107size_t sbuf_len(const safebuf_t *sbuf);
108
109/* Return the C string inside an sbuf */
110char *sbuf_str(const safebuf_t *sbuf);
111
112/* Free string buffer */
113void sbuf_free(safebuf_t *sbuf);
114
115/* Print simple type name symbol or as absolute path, if necessary.
116 * Escape any special chars. */
117void print_type_name(int locid, int typeid);
118
119int nctime_val_tostring(const ncvar_t *varpsafebuf_t *sfbf, const void *valp);
120
121/* Return true if dimid is an unlimited dimension */
122extern bool_t is_unlim_dim(int ncid, int dimid);
123
124#ifdef __cplusplus
125}
126#endif
127
128#endif /*_DUMPLIB_H_ */


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