1 /*********************************************************************
2  * Copyright 2010, UCAR/Unidata. See netcdf/COPYRIGHT file for copying
3  * and redistribution conditions.
4  *
5  * This header file contains the prototypes for the netCDF-4 versions
6  * of all the netCDF functions.
7  *********************************************************************/
8 
9 #ifndef _NC4DISPATCH_H
10 #define _NC4DISPATCH_H
11 
12 #include "config.h"
13 #include <stddef.h> /* size_t, ptrdiff_t */
14 #include <errno.h>  /* netcdf functions sometimes return system errors */
15 #include "ncdispatch.h"
16 
17 #if defined(__cplusplus)
18 extern "C" {
19 #endif
20 
21 #define NCLOGLEVELENV "NETCDF_LOG_LEVEL"
22 
23 EXTERNL int
24 NC4_create(const char *path, int cmode,
25            size_t initialsz, int basepe, size_t *chunksizehintp,
26            void* parameters, NC_Dispatch*, NC*);
27 
28 EXTERNL int
29 NC4_open(const char *path, int mode,
30          int basepe, size_t *chunksizehintp,
31          void* parameters, NC_Dispatch*, NC*);
32 
33 EXTERNL int
34 NC4_redef(int ncid);
35 
36 EXTERNL int
37 NC4__enddef(int ncid, size_t h_minfree, size_t v_align,
38 	size_t v_minfree, size_t r_align);
39 
40 EXTERNL int
41 NC4_sync(int ncid);
42 
43 EXTERNL int
44 NC4_abort(int ncid);
45 
46 EXTERNL int
47 NC4_close(int ncid,void*);
48 
49 EXTERNL int
50 NC4_set_fill(int ncid, int fillmode, int *old_modep);
51 
52 EXTERNL int
53 NC4_set_base_pe(int ncid, int pe);
54 
55 EXTERNL int
56 NC4_inq_base_pe(int ncid, int *pe);
57 
58 EXTERNL int
59 NC4_inq_format(int ncid, int *formatp);
60 
61 EXTERNL int
62 NC4_inq_format_extended(int ncid, int *formatp, int *modep);
63 
64 EXTERNL int
65 NC4_inq(int ncid, int *ndimsp, int *nvarsp, int *nattsp, int *unlimdimidp);
66 
67 EXTERNL int
68 NC4_inq_type(int, nc_type, char *, size_t *);
69 
70 /* Begin _dim */
71 
72 EXTERNL int
73 NC4_def_dim(int ncid, const char *name, size_t len, int *idp);
74 
75 EXTERNL int
76 NC4_inq_dimid(int ncid, const char *name, int *idp);
77 
78 EXTERNL int
79 NC4_inq_dim(int ncid, int dimid, char *name, size_t *lenp);
80 
81 EXTERNL int
82 NC4_inq_unlimdim(int ncid, int *unlimdimidp);
83 
84 EXTERNL int
85 NC4_rename_dim(int ncid, int dimid, const char *name);
86 
87 /* End _dim */
88 /* Begin _att */
89 
90 EXTERNL int
91 NC4_inq_att(int ncid, int varid, const char *name,
92 	    nc_type *xtypep, size_t *lenp);
93 
94 EXTERNL int
95 NC4_inq_attid(int ncid, int varid, const char *name, int *idp);
96 
97 EXTERNL int
98 NC4_inq_attname(int ncid, int varid, int attnum, char *name);
99 
100 EXTERNL int
101 NC4_rename_att(int ncid, int varid, const char *name, const char *newname);
102 
103 EXTERNL int
104 NC4_del_att(int ncid, int varid, const char*);
105 
106 /* End _att */
107 /* Begin {put,get}_att */
108 
109 EXTERNL int
110 NC4_get_att(int ncid, int varid, const char *name, void *value, nc_type);
111 
112 EXTERNL int
113 NC4_put_att(int ncid, int varid, const char *name, nc_type datatype,
114 	   size_t len, const void *value, nc_type);
115 
116 /* End {put,get}_att */
117 /* Begin _var */
118 
119 EXTERNL int
120 NC4_def_var(int ncid, const char *name,
121 	 nc_type xtype, int ndims, const int *dimidsp, int *varidp);
122 
123 EXTERNL int
124 NC4_inq_var_all(int ncid, int varid, char *name, nc_type *xtypep,
125                int *ndimsp, int *dimidsp, int *nattsp,
126                int *shufflep, int *deflatep, int *deflate_levelp,
127                int *fletcher32p, int *contiguousp, size_t *chunksizesp,
128                int *no_fill, void *fill_valuep, int *endiannessp,
129 	       unsigned int* idp, size_t* nparamsp, unsigned int* params
130 	       );
131 
132 EXTERNL int
133 NC4_inq_varid(int ncid, const char *name, int *varidp);
134 
135 EXTERNL int
136 NC4_rename_var(int ncid, int varid, const char *name);
137 
138 EXTERNL int
139 NC4_put_vara(int ncid, int varid,
140    	     const size_t *start, const size_t *count,
141              const void *value, nc_type);
142 
143 EXTERNL int
144 NC4_get_vara(int ncid, int varid,
145 	     const size_t *start, const size_t *count,
146              void *value, nc_type);
147 
148 extern int
149 NC4_put_vars(int ncid, int varid,
150    	     const size_t *start, const size_t *count, const ptrdiff_t* stride,
151              const void *value, nc_type);
152 
153 extern int
154 NC4_get_vars(int ncid, int varid,
155 	     const size_t *start, const size_t *count, const ptrdiff_t* stride,
156              void *value, nc_type);
157 
158 /* End _var */
159 
160 /* netCDF4 API only */
161 EXTERNL int
162 NC4_var_par_access(int, int, int);
163 
164 EXTERNL int
165 NC4_inq_ncid(int, const char *, int *);
166 
167 EXTERNL int
168 NC4_inq_grps(int, int *, int *);
169 
170 EXTERNL int
171 NC4_inq_grpname(int, char *);
172 
173 EXTERNL int
174 NC4_inq_grpname_full(int, size_t *, char *);
175 
176 EXTERNL int
177 NC4_inq_grp_parent(int, int *);
178 
179 EXTERNL int
180 NC4_inq_grp_full_ncid(int, const char *, int *);
181 
182 EXTERNL int
183 NC4_inq_varids(int, int * nvars, int *);
184 
185 EXTERNL int
186 NC4_inq_dimids(int, int * ndims, int *, int);
187 
188 EXTERNL int
189 NC4_inq_typeids(int, int * ntypes, int *);
190 
191 EXTERNL int
192 NC4_inq_type_equal(int, nc_type, int, nc_type, int *);
193 
194 EXTERNL int
195 NC4_def_grp(int, const char *, int *);
196 
197 EXTERNL int
198 NC4_rename_grp(int, const char *);
199 
200 EXTERNL int
201 NC4_inq_user_type(int, nc_type, char *, size_t *, nc_type *,
202 		  size_t *, int *);
203 
204 EXTERNL int
205 NC4_def_compound(int, size_t, const char *, nc_type *);
206 
207 EXTERNL int
208 NC4_insert_compound(int, nc_type, const char *, size_t, nc_type);
209 
210 EXTERNL int
211 NC4_insert_array_compound(int, nc_type, const char *, size_t,
212 			  nc_type, int, const int *);
213 
214 EXTERNL int
215 NC4_inq_typeid(int, const char *, nc_type *);
216 
217 EXTERNL int
218 NC4_inq_compound_field(int, nc_type, int, char *, size_t *,
219 		       nc_type *, int *, int *);
220 
221 EXTERNL int
222 NC4_inq_compound_fieldindex(int, nc_type, const char *, int *);
223 
224 EXTERNL int
225 NC4_def_vlen(int, const char *, nc_type base_typeid, nc_type *);
226 
227 EXTERNL int
228 NC4_put_vlen_element(int, int, void *, size_t, const void *);
229 
230 EXTERNL int
231 NC4_get_vlen_element(int, int, const void *, size_t *, void *);
232 
233 EXTERNL int
234 NC4_def_enum(int, nc_type, const char *, nc_type *);
235 
236 EXTERNL int
237 NC4_insert_enum(int, nc_type, const char *, const void *);
238 
239 EXTERNL int
240 NC4_inq_enum_member(int, nc_type, int, char *, void *);
241 
242 EXTERNL int
243 NC4_inq_enum_ident(int, nc_type, long long, char *);
244 
245 EXTERNL int
246 NC4_def_opaque(int, size_t, const char *, nc_type *);
247 
248 EXTERNL int
249 NC4_def_var_deflate(int, int, int, int, int);
250 
251 EXTERNL int
252 NC4_def_var_fletcher32(int, int, int);
253 
254 EXTERNL int
255 NC4_def_var_chunking(int, int, int, const size_t *);
256 
257 EXTERNL int
258 NC4_def_var_fill(int, int, int, const void *);
259 
260 EXTERNL int
261 NC4_def_var_endian(int, int, int);
262 
263 EXTERNL int
264 NC4_def_var_filter(int, int, unsigned int, size_t, const unsigned int*);
265 
266 EXTERNL int
267 NC4_set_var_chunk_cache(int, int, size_t, size_t, float);
268 
269 EXTERNL int
270 NC4_get_var_chunk_cache(int, int, size_t *, size_t *, float *);
271 
272 EXTERNL int
273 NC4_inq_unlimdims(int, int *, int *);
274 
275 EXTERNL int
276 NC4_show_metadata(int);
277 
278 #if defined(__cplusplus)
279 }
280 #endif
281 
282 #endif /*_NC4DISPATCH_H */
283