MISR Toolkit  1.5.1
netcdf_dispatch.h
Go to the documentation of this file.
1 /* Copyright 2019 University Corporation for Atmospheric
2  Research/Unidata. */
3 
4 /*
5  * In order to use any of the netcdf_XXX.h files, it is necessary
6  * to include netcdf.h followed by any netcdf_XXX.h files.
7  * Various things (like EXTERNL) are defined in netcdf.h
8  * to make them available for use by the netcdf_XXX.h files.
9  */
10 
23 #ifndef NETCDF_DISPATCH_H
24 #define NETCDF_DISPATCH_H
25 
26 /* This is the version of the dispatch table. It should be changed
27  * when new functions are added to the dispatch table. */
28 #define NC_DISPATCH_VERSION 2
29 
30 /* Forward */
31 struct NC_Filterobject;
32 
33 /* This is the dispatch table, with a pointer to each netCDF
34  * function. */
36 {
37  int model; /* one of the NC_FORMATX #'s */
39 
40  int (*create)(const char *path, int cmode, size_t initialsz,
41  int basepe, size_t *chunksizehintp, void *parameters,
42  const struct NC_Dispatch *table, int ncid);
43  int (*open)(const char *path, int mode, int basepe, size_t *chunksizehintp,
44  void *parameters, const struct NC_Dispatch *table, int ncid);
45 
46  int (*redef)(int);
47  int (*_enddef)(int,size_t,size_t,size_t,size_t);
48  int (*sync)(int);
49  int (*abort)(int);
50  int (*close)(int, void *);
51  int (*set_fill)(int, int, int *);
52  int (*inq_format)(int, int*);
53  int (*inq_format_extended)(int, int *, int *);
54 
55  int (*inq)(int, int *, int *, int *, int *);
56  int (*inq_type)(int, nc_type, char *, size_t *);
57 
58  int (*def_dim)(int, const char *, size_t, int *);
59  int (*inq_dimid)(int, const char *, int *);
60  int (*inq_dim)(int, int, char *, size_t *);
61  int (*inq_unlimdim)(int ncid, int *unlimdimidp);
62  int (*rename_dim)(int, int, const char *);
63 
64  int (*inq_att)(int, int, const char *, nc_type *, size_t *);
65  int (*inq_attid)(int, int, const char *, int*);
66  int (*inq_attname)(int, int, int, char *);
67  int (*rename_att)(int, int, const char *, const char *);
68  int (*del_att)(int, int, const char *);
69  int (*get_att)(int, int, const char *, void *, nc_type);
70  int (*put_att)(int, int, const char *, nc_type, size_t, const void *,
71  nc_type);
72 
73  int (*def_var)(int, const char *, nc_type, int, const int *, int *);
74  int (*inq_varid)(int, const char *, int *);
75  int (*rename_var)(int, int, const char *);
76 
77  int (*get_vara)(int, int, const size_t *, const size_t *, void *, nc_type);
78  int (*put_vara)(int, int, const size_t *, const size_t *,
79  const void *, nc_type);
80 
81  int (*get_vars)(int, int, const size_t *, const size_t *, const ptrdiff_t *,
82  void *, nc_type);
83  int (*put_vars)(int, int, const size_t *, const size_t *, const ptrdiff_t *,
84  const void *, nc_type);
85 
86  int (*get_varm)(int, int, const size_t *, const size_t *, const ptrdiff_t *,
87  const ptrdiff_t *, void *, nc_type);
88  int (*put_varm)(int, int, const size_t *, const size_t *, const ptrdiff_t *,
89  const ptrdiff_t *, const void *, nc_type);
90 
91  int (*inq_var_all)(int ncid, int varid, char *name, nc_type *xtypep,
92  int *ndimsp, int *dimidsp, int *nattsp,
93  int *shufflep, int *deflatep, int *deflate_levelp,
94  int *fletcher32p, int *contiguousp, size_t *chunksizesp,
95  int *no_fill, void *fill_valuep, int *endiannessp,
96  unsigned int *idp, size_t *nparamsp,
97  unsigned int *params);
98 
99  int (*var_par_access)(int, int, int);
100  int (*def_var_fill)(int, int, int, const void *);
101 
102 /* Note the following are specific to netcdf4, but must still be
103  implemented by all dispatch tables. They may still be invoked by
104  netcdf client code even when the file is a classic file; they
105  will just return an error or be ignored.
106 */
107 
108  int (*show_metadata)(int);
109  int (*inq_unlimdims)(int, int*, int*);
110  int (*inq_ncid)(int, const char*, int*);
111  int (*inq_grps)(int, int*, int*);
112  int (*inq_grpname)(int, char*);
113  int (*inq_grpname_full)(int, size_t*, char*);
114  int (*inq_grp_parent)(int, int*);
115  int (*inq_grp_full_ncid)(int, const char*, int*);
116  int (*inq_varids)(int, int* nvars, int*);
117  int (*inq_dimids)(int, int* ndims, int*, int);
118  int (*inq_typeids)(int, int* ntypes, int*);
119  int (*inq_type_equal)(int, nc_type, int, nc_type, int*);
120  int (*def_grp)(int, const char*, int*);
121  int (*rename_grp)(int, const char*);
122  int (*inq_user_type)(int, nc_type, char*, size_t*, nc_type*, size_t*, int*);
123  int (*inq_typeid)(int, const char*, nc_type*);
124 
125  int (*def_compound)(int, size_t, const char *, nc_type *);
126  int (*insert_compound)(int, nc_type, const char *, size_t, nc_type);
127  int (*insert_array_compound)(int, nc_type, const char *, size_t, nc_type,
128  int, const int *);
129  int (*inq_compound_field)(int, nc_type, int, char *, size_t *, nc_type *,
130  int *, int *);
131  int (*inq_compound_fieldindex)(int, nc_type, const char *, int *);
132  int (*def_vlen)(int, const char *, nc_type base_typeid, nc_type *);
133  int (*put_vlen_element)(int, int, void *, size_t, const void *);
134  int (*get_vlen_element)(int, int, const void *, size_t *, void *);
135  int (*def_enum)(int, nc_type, const char *, nc_type *);
136  int (*insert_enum)(int, nc_type, const char *, const void *);
137  int (*inq_enum_member)(int, nc_type, int, char *, void *);
138  int (*inq_enum_ident)(int, nc_type, long long, char *);
139  int (*def_opaque)(int, size_t, const char *, nc_type*);
140  int (*def_var_deflate)(int, int, int, int, int);
141  int (*def_var_fletcher32)(int, int, int);
142  int (*def_var_chunking)(int, int, int, const size_t *);
143  int (*def_var_endian)(int, int, int);
144  int (*def_var_filter)(int, int, unsigned int, size_t, const unsigned int *);
145  int (*set_var_chunk_cache)(int, int, size_t, size_t, float);
146  int (*get_var_chunk_cache)(int ncid, int varid, size_t *sizep,
147  size_t *nelemsp, float *preemptionp);
148 
149  /* Dispatch table Version 2 or later */
150  /* Handle all filter related actions. */
151  int (*filter_actions)(int ncid, int varid, int action, struct NC_Filterobject*);
152 };
153 
154 #if defined(__cplusplus)
155 extern "C" {
156 #endif
157 
158  /* Read-only dispatch layers can use these functions to return
159  * NC_EPERM to all attempts to modify a file. */
160  EXTERNL int NC_RO_create(const char *path, int cmode, size_t initialsz, int basepe,
161  size_t *chunksizehintp, void* parameters,
162  const NC_Dispatch*, int);
163  EXTERNL int NC_RO_redef(int ncid);
164  EXTERNL int NC_RO__enddef(int ncid, size_t h_minfree, size_t v_align, size_t v_minfree,
165  size_t r_align);
166  EXTERNL int NC_RO_sync(int ncid);
167  EXTERNL int NC_RO_def_var_fill(int, int, int, const void *);
168  EXTERNL int NC_RO_rename_att(int ncid, int varid, const char *name,
169  const char *newname);
170  EXTERNL int NC_RO_del_att(int ncid, int varid, const char*);
171  EXTERNL int NC_RO_put_att(int ncid, int varid, const char *name, nc_type datatype,
172  size_t len, const void *value, nc_type);
173  EXTERNL int NC_RO_def_var(int ncid, const char *name,
174  nc_type xtype, int ndims, const int *dimidsp, int *varidp);
175  EXTERNL int NC_RO_rename_var(int ncid, int varid, const char *name);
176  EXTERNL int NC_RO_put_vara(int ncid, int varid,
177  const size_t *start, const size_t *count,
178  const void *value, nc_type);
179  EXTERNL int NC_RO_def_dim(int ncid, const char *name, size_t len, int *idp);
180  EXTERNL int NC_RO_rename_dim(int ncid, int dimid, const char *name);
181  EXTERNL int NC_RO_set_fill(int ncid, int fillmode, int *old_modep);
182 
183  /* These functions are for dispatch layers that don't implement
184  * these legacy functions. They return NC_ENOTNC3. */
185  EXTERNL int NC_NOTNC3_put_varm(int ncid, int varid, const size_t * start,
186  const size_t *edges, const ptrdiff_t *stride,
187  const ptrdiff_t *imapp, const void *value0,
188  nc_type memtype);
189  EXTERNL int NC_NOTNC3_get_varm(int ncid, int varid, const size_t *start,
190  const size_t *edges, const ptrdiff_t *stride,
191  const ptrdiff_t *imapp, void *value0, nc_type memtype);
192 
193  /* These functions are for dispatch layers that don't implement
194  * the enhanced model. They return NC_ENOTNC4. */
195  EXTERNL int NC_NOTNC4_def_var_filter(int, int, unsigned int, size_t,
196  const unsigned int*);
197  EXTERNL int NC_NOTNC4_def_grp(int, const char *, int *);
198  EXTERNL int NC_NOTNC4_rename_grp(int, const char *);
199  EXTERNL int NC_NOTNC4_def_compound(int, size_t, const char *, nc_type *);
200  EXTERNL int NC_NOTNC4_insert_compound(int, nc_type, const char *, size_t, nc_type);
201  EXTERNL int NC_NOTNC4_insert_array_compound(int, nc_type, const char *, size_t,
202  nc_type, int, const int *);
203  EXTERNL int NC_NOTNC4_inq_typeid(int, const char *, nc_type *);
204  EXTERNL int NC_NOTNC4_inq_compound_field(int, nc_type, int, char *, size_t *,
205  nc_type *, int *, int *);
206  EXTERNL int NC_NOTNC4_inq_compound_fieldindex(int, nc_type, const char *, int *);
207  EXTERNL int NC_NOTNC4_def_vlen(int, const char *, nc_type base_typeid, nc_type *);
208  EXTERNL int NC_NOTNC4_put_vlen_element(int, int, void *, size_t, const void *);
209  EXTERNL int NC_NOTNC4_get_vlen_element(int, int, const void *, size_t *, void *);
210  EXTERNL int NC_NOTNC4_def_enum(int, nc_type, const char *, nc_type *);
211  EXTERNL int NC_NOTNC4_insert_enum(int, nc_type, const char *, const void *);
212  EXTERNL int NC_NOTNC4_inq_enum_member(int, nc_type, int, char *, void *);
213  EXTERNL int NC_NOTNC4_inq_enum_ident(int, nc_type, long long, char *);
214  EXTERNL int NC_NOTNC4_def_opaque(int, size_t, const char *, nc_type *);
215  EXTERNL int NC_NOTNC4_def_var_deflate(int, int, int, int, int);
216  EXTERNL int NC_NOTNC4_def_var_fletcher32(int, int, int);
217  EXTERNL int NC_NOTNC4_def_var_chunking(int, int, int, const size_t *);
218  EXTERNL int NC_NOTNC4_def_var_endian(int, int, int);
219  EXTERNL int NC_NOTNC4_set_var_chunk_cache(int, int, size_t, size_t, float);
220  EXTERNL int NC_NOTNC4_get_var_chunk_cache(int, int, size_t *, size_t *, float *);
221  EXTERNL int NC_NOTNC4_var_par_access(int, int, int);
222  EXTERNL int NC_NOTNC4_inq_ncid(int, const char *, int *);
223  EXTERNL int NC_NOTNC4_inq_grps(int, int *, int *);
224  EXTERNL int NC_NOTNC4_inq_grpname(int, char *);
225  EXTERNL int NC_NOTNC4_inq_grpname_full(int, size_t *, char *);
226  EXTERNL int NC_NOTNC4_inq_grp_parent(int, int *);
227  EXTERNL int NC_NOTNC4_inq_grp_full_ncid(int, const char *, int *);
228  EXTERNL int NC_NOTNC4_inq_varids(int, int *, int *);
229  EXTERNL int NC_NOTNC4_inq_dimids(int, int *, int *, int);
230  EXTERNL int NC_NOTNC4_inq_typeids(int, int *, int *);
231  EXTERNL int NC_NOTNC4_inq_user_type(int, nc_type, char *, size_t *,
232  nc_type *, size_t *, int *);
233  EXTERNL int NC_NOTNC4_inq_typeid(int, const char *, nc_type *);
234  EXTERNL int NC_NOTNC4_filter_actions(int, int, int, struct NC_Filterobject*);
235 
236 #if defined(__cplusplus)
237 }
238 #endif
239 
240 #endif /* NETCDF_DISPATCH_H */
HDFFCLIBAPI intf intf intf * count
int(* inq_ncid)(int, const char *, int *)
EXTERNL int NC_NOTNC4_def_var_chunking(int, int, int, const size_t *)
HDFFCLIBAPI intf * len
EXTERNL int NC_NOTNC4_insert_enum(int, nc_type, const char *, const void *)
int(* inq_typeids)(int, int *ntypes, int *)
int(* del_att)(int, int, const char *)
int(* inq_enum_ident)(int, nc_type, long long, char *)
int(* inq_dim)(int, int, char *, size_t *)
EXTERNL int NC_NOTNC4_def_var_fletcher32(int, int, int)
EXTERNL int NC_NOTNC4_def_var_deflate(int, int, int, int, int)
nc_type
Definition: netcdf.h:253
#define EXTERNL
Definition: netcdf.h:511
EXTERNL int NC_NOTNC3_put_varm(int ncid, int varid, const size_t *start, const size_t *edges, const ptrdiff_t *stride, const ptrdiff_t *imapp, const void *value0, nc_type memtype)
EXTERNL int NC_NOTNC4_def_grp(int, const char *, int *)
EXTERNL int NC_NOTNC3_get_varm(int ncid, int varid, const size_t *start, const size_t *edges, const ptrdiff_t *stride, const ptrdiff_t *imapp, void *value0, nc_type memtype)
HDFFCLIBAPI _fcd _fcd intf intf * datatype
int(* def_var)(int, const char *, nc_type, int, const int *, int *)
int(* def_dim)(int, const char *, size_t, int *)
int(* inq_type_equal)(int, nc_type, int, nc_type, int *)
int(* inq_grp_parent)(int, int *)
EXTERNL int NC_NOTNC4_inq_grp_full_ncid(int, const char *, int *)
int(* get_varm)(int, int, const size_t *, const size_t *, const ptrdiff_t *, const ptrdiff_t *, void *, nc_type)
int(* get_vars)(int, int, const size_t *, const size_t *, const ptrdiff_t *, void *, nc_type)
int(* insert_enum)(int, nc_type, const char *, const void *)
EXTERNL int NC_RO_rename_dim(int ncid, int dimid, const char *name)
EXTERNL int NC_NOTNC4_put_vlen_element(int, int, void *, size_t, const void *)
EXTERNL int NC_NOTNC4_inq_varids(int, int *, int *)
int(* rename_dim)(int, int, const char *)
int(* create)(const char *path, int cmode, size_t initialsz, int basepe, size_t *chunksizehintp, void *parameters, const struct NC_Dispatch *table, int ncid)
int(* inq_varids)(int, int *nvars, int *)
EXTERNL int NC_RO_def_var_fill(int, int, int, const void *)
int(* def_compound)(int, size_t, const char *, nc_type *)
EXTERNL int NC_NOTNC4_inq_dimids(int, int *, int *, int)
int(* get_att)(int, int, const char *, void *, nc_type)
int(* def_enum)(int, nc_type, const char *, nc_type *)
int(* inq_dimids)(int, int *ndims, int *, int)
int(* inq)(int, int *, int *, int *, int *)
EXTERNL int NC_NOTNC4_inq_grps(int, int *, int *)
int(* inq_attname)(int, int, int, char *)
int(* close)(int, void *)
int(* inq_varid)(int, const char *, int *)
int(* inq_unlimdim)(int ncid, int *unlimdimidp)
int(* put_vara)(int, int, const size_t *, const size_t *, const void *, nc_type)
int(* get_vlen_element)(int, int, const void *, size_t *, void *)
int(* inq_format)(int, int *)
int(* insert_compound)(int, nc_type, const char *, size_t, nc_type)
int(* inq_dimid)(int, const char *, int *)
int(* def_vlen)(int, const char *, nc_type base_typeid, nc_type *)
int(* inq_user_type)(int, nc_type, char *, size_t *, nc_type *, size_t *, int *)
EXTERNL int NC_NOTNC4_set_var_chunk_cache(int, int, size_t, size_t, float)
EXTERNL int NC_RO_put_att(int ncid, int varid, const char *name, nc_type datatype, size_t len, const void *value, nc_type)
EXTERNL int NC_RO_create(const char *path, int cmode, size_t initialsz, int basepe, size_t *chunksizehintp, void *parameters, const NC_Dispatch *, int)
EXTERNL int NC_RO_put_vara(int ncid, int varid, const size_t *start, const size_t *count, const void *value, nc_type)
EXTERNL int NC_NOTNC4_inq_grpname(int, char *)
int(* inq_typeid)(int, const char *, nc_type *)
EXTERNL int NC_NOTNC4_def_enum(int, nc_type, const char *, nc_type *)
EXTERNL int NC_NOTNC4_var_par_access(int, int, int)
int(* _enddef)(int, size_t, size_t, size_t, size_t)
EXTERNL int NC_NOTNC4_inq_enum_ident(int, nc_type, long long, char *)
int(* def_var_endian)(int, int, int)
EXTERNL int NC_NOTNC4_def_compound(int, size_t, const char *, nc_type *)
EXTERNL int NC_NOTNC4_rename_grp(int, const char *)
int(* inq_unlimdims)(int, int *, int *)
int(* inq_grpname)(int, char *)
HDFFCLIBAPI _fcd name
int(* set_var_chunk_cache)(int, int, size_t, size_t, float)
EXTERNL int NC_NOTNC4_inq_grpname_full(int, size_t *, char *)
int(* inq_var_all)(int ncid, int varid, char *name, nc_type *xtypep, int *ndimsp, int *dimidsp, int *nattsp, int *shufflep, int *deflatep, int *deflate_levelp, int *fletcher32p, int *contiguousp, size_t *chunksizesp, int *no_fill, void *fill_valuep, int *endiannessp, unsigned int *idp, size_t *nparamsp, unsigned int *params)
int(* def_var_fletcher32)(int, int, int)
int(* rename_var)(int, int, const char *)
int(* def_var_filter)(int, int, unsigned int, size_t, const unsigned int *)
int(* inq_compound_field)(int, nc_type, int, char *, size_t *, nc_type *, int *, int *)
int(* insert_array_compound)(int, nc_type, const char *, size_t, nc_type, int, const int *)
EXTERNL int NC_NOTNC4_inq_compound_fieldindex(int, nc_type, const char *, int *)
EXTERNL int NC_RO_rename_var(int ncid, int varid, const char *name)
EXTERNL int NC_RO__enddef(int ncid, size_t h_minfree, size_t v_align, size_t v_minfree, size_t r_align)
EXTERNL int NC_NOTNC4_get_var_chunk_cache(int, int, size_t *, size_t *, float *)
EXTERNL int NC_NOTNC4_inq_ncid(int, const char *, int *)
EXTERNL int NC_NOTNC4_insert_array_compound(int, nc_type, const char *, size_t, nc_type, int, const int *)
EXTERNL int NC_NOTNC4_get_vlen_element(int, int, const void *, size_t *, void *)
int(* inq_grp_full_ncid)(int, const char *, int *)
int(* inq_enum_member)(int, nc_type, int, char *, void *)
int(* filter_actions)(int ncid, int varid, int action, struct NC_Filterobject *)
EXTERNL int NC_NOTNC4_inq_compound_field(int, nc_type, int, char *, size_t *, nc_type *, int *, int *)
int(* abort)(int)
int(* get_var_chunk_cache)(int ncid, int varid, size_t *sizep, size_t *nelemsp, float *preemptionp)
EXTERNL int NC_RO_rename_att(int ncid, int varid, const char *name, const char *newname)
EXTERNL int NC_NOTNC4_inq_typeid(int, const char *, nc_type *)
int(* get_vara)(int, int, const size_t *, const size_t *, void *, nc_type)
int(* def_grp)(int, const char *, int *)
EXTERNL int NC_NOTNC4_insert_compound(int, nc_type, const char *, size_t, nc_type)
EXTERNL int NC_RO_del_att(int ncid, int varid, const char *)
EXTERNL int NC_RO_def_var(int ncid, const char *name, nc_type xtype, int ndims, const int *dimidsp, int *varidp)
EXTERNL int NC_NOTNC4_def_vlen(int, const char *, nc_type base_typeid, nc_type *)
EXTERNL int NC_NOTNC4_def_var_endian(int, int, int)
int(* var_par_access)(int, int, int)
int(* set_fill)(int, int, int *)
int(* inq_att)(int, int, const char *, nc_type *, size_t *)
EXTERNL int NC_NOTNC4_inq_enum_member(int, nc_type, int, char *, void *)
EXTERNL int NC_NOTNC4_inq_grp_parent(int, int *)
EXTERNL int NC_NOTNC4_inq_typeids(int, int *, int *)
HDFFCLIBAPI intf intf start[]
EXTERNL int NC_RO_def_dim(int ncid, const char *name, size_t len, int *idp)
int(* inq_attid)(int, int, const char *, int *)
int(* inq_compound_fieldindex)(int, nc_type, const char *, int *)
EXTERNL int NC_NOTNC4_def_var_filter(int, int, unsigned int, size_t, const unsigned int *)
int(* rename_att)(int, int, const char *, const char *)
int(* inq_grps)(int, int *, int *)
int(* redef)(int)
EXTERNL int NC_NOTNC4_def_opaque(int, size_t, const char *, nc_type *)
int(* open)(const char *path, int mode, int basepe, size_t *chunksizehintp, void *parameters, const struct NC_Dispatch *table, int ncid)
HDFFCLIBAPI intf stride[]
int(* put_att)(int, int, const char *, nc_type, size_t, const void *, nc_type)
EXTERNL int NC_NOTNC4_filter_actions(int, int, int, struct NC_Filterobject *)
int(* inq_type)(int, nc_type, char *, size_t *)
int(* def_var_deflate)(int, int, int, int, int)
EXTERNL int NC_RO_set_fill(int ncid, int fillmode, int *old_modep)
EXTERNL int NC_RO_redef(int ncid)
int(* rename_grp)(int, const char *)
int(* put_vars)(int, int, const size_t *, const size_t *, const ptrdiff_t *, const void *, nc_type)
int(* def_var_chunking)(int, int, int, const size_t *)
int(* put_varm)(int, int, const size_t *, const size_t *, const ptrdiff_t *, const ptrdiff_t *, const void *, nc_type)
int(* inq_format_extended)(int, int *, int *)
int(* show_metadata)(int)
int(* put_vlen_element)(int, int, void *, size_t, const void *)
int(* def_opaque)(int, size_t, const char *, nc_type *)
int(* inq_grpname_full)(int, size_t *, char *)
int(* def_var_fill)(int, int, int, const void *)
EXTERNL int NC_RO_sync(int ncid)
EXTERNL int NC_NOTNC4_inq_user_type(int, nc_type, char *, size_t *, nc_type *, size_t *, int *)
int(* sync)(int)

MISR Toolkit - Copyright © 2005 - 2020 Jet Propulsion Laboratory
Generated on Fri Jun 19 2020 22:49:53