netcdf_sys/
functions.rs

1use std::os::raw::{
2    c_char, c_double, c_float, c_int, c_long, c_longlong, c_schar, c_short, c_uchar, c_uint,
3    c_ulonglong, c_ushort, c_void,
4};
5
6// #[cfg(feature = "4.6.2")]
7#[cfg(feature = "4.8.0")]
8use super::NC_Dispatch;
9
10pub type nc_type = c_int;
11
12#[repr(C)]
13pub struct nc_vlen_t {
14    pub len: usize,
15    pub p: *mut c_void,
16}
17
18extern "C" {
19    pub fn nc_inq_libvers() -> *const c_char;
20    pub fn nc_strerror(ncerr: c_int) -> *const c_char;
21
22    // #[cfg(feature = "4.6.2")]
23    #[cfg(feature = "4.8.0")]
24    pub fn nc_def_user_format(
25        mode_flag: c_int,
26        dispatch_table: *mut NC_Dispatch,
27        magic_number: *mut c_char,
28    ) -> c_int;
29    //#[cfg(feature = "4.6.2")]
30    #[cfg(feature = "4.8.0")]
31    pub fn nc_inq_user_format(
32        mode_flag: c_int,
33        dispatch_table: *mut *mut NC_Dispatch,
34        magic_number: *mut c_char,
35    ) -> c_int;
36
37    pub fn nc__create(
38        path: *const c_char,
39        cmode: c_int,
40        initialsz: usize,
41        chunksizehintp: *mut usize,
42        ncidp: *mut c_int,
43    ) -> c_int;
44    pub fn nc_create(path: *const c_char, cmode: c_int, ncidp: *mut c_int) -> c_int;
45    pub fn nc__open(
46        path: *const c_char,
47        mode: c_int,
48        chunksizehintp: *mut usize,
49        ncidp: *mut c_int,
50    ) -> c_int;
51    pub fn nc_open(path: *const c_char, mode: c_int, ncidp: *mut c_int) -> c_int;
52    pub fn nc_inq_path(ncid: c_int, pathlen: *mut usize, path: *mut c_char) -> c_int;
53    pub fn nc_inq_ncid(ncid: c_int, name: *const c_char, grp_ncid: *mut c_int) -> c_int;
54    pub fn nc_inq_grps(ncid: c_int, numgrps: *mut c_int, ncids: *mut c_int) -> c_int;
55    pub fn nc_inq_grpname(ncid: c_int, name: *mut c_char) -> c_int;
56    pub fn nc_inq_grpname_full(ncid: c_int, lenp: *mut usize, full_name: *mut c_char) -> c_int;
57    pub fn nc_inq_grpname_len(ncid: c_int, lenp: *mut usize) -> c_int;
58    pub fn nc_inq_grp_parent(ncid: c_int, parent_ncid: *mut c_int) -> c_int;
59    pub fn nc_inq_grp_ncid(ncid: c_int, grp_name: *const c_char, grp_ncid: *mut c_int) -> c_int;
60    pub fn nc_inq_grp_full_ncid(
61        ncid: c_int,
62        full_name: *const c_char,
63        grp_ncid: *mut c_int,
64    ) -> c_int;
65    pub fn nc_inq_varids(ncid: c_int, nvars: *mut c_int, varids: *mut c_int) -> c_int;
66    pub fn nc_inq_dimids(
67        ncid: c_int,
68        ndims: *mut c_int,
69        dimids: *mut c_int,
70        include_parents: c_int,
71    ) -> c_int;
72    pub fn nc_inq_typeids(ncid: c_int, ntypes: *mut c_int, typeids: *mut c_int) -> c_int;
73    pub fn nc_inq_type_equal(
74        ncid1: c_int,
75        typeid1: nc_type,
76        ncid2: c_int,
77        typeid2: nc_type,
78        equal: *mut c_int,
79    ) -> c_int;
80    pub fn nc_def_grp(parent_ncid: c_int, name: *const c_char, new_ncid: *mut c_int) -> c_int;
81    pub fn nc_rename_grp(grpid: c_int, name: *const c_char) -> c_int;
82    pub fn nc_def_compound(
83        ncid: c_int,
84        size: usize,
85        name: *const c_char,
86        typeidp: *mut nc_type,
87    ) -> c_int;
88    pub fn nc_insert_compound(
89        ncid: c_int,
90        xtype: nc_type,
91        name: *const c_char,
92        offset: usize,
93        field_typeid: nc_type,
94    ) -> c_int;
95    pub fn nc_insert_array_compound(
96        ncid: c_int,
97        xtype: nc_type,
98        name: *const c_char,
99        offset: usize,
100        field_typeid: nc_type,
101        ndims: c_int,
102        dim_sizes: *const c_int,
103    ) -> c_int;
104    pub fn nc_inq_type(ncid: c_int, xtype: nc_type, name: *mut c_char, size: *mut usize) -> c_int;
105    pub fn nc_inq_typeid(ncid: c_int, name: *const c_char, typeidp: *mut nc_type) -> c_int;
106    pub fn nc_inq_compound(
107        ncid: c_int,
108        xtype: nc_type,
109        name: *mut c_char,
110        sizep: *mut usize,
111        nfieldsp: *mut usize,
112    ) -> c_int;
113    pub fn nc_inq_compound_name(ncid: c_int, xtype: nc_type, name: *mut c_char) -> c_int;
114    pub fn nc_inq_compound_size(ncid: c_int, xtype: nc_type, sizep: *mut usize) -> c_int;
115    pub fn nc_inq_compound_nfields(ncid: c_int, xtype: nc_type, nfieldsp: *mut usize) -> c_int;
116    pub fn nc_inq_compound_field(
117        ncid: c_int,
118        xtype: nc_type,
119        fieldid: c_int,
120        name: *mut c_char,
121        offsetp: *mut usize,
122        field_typeidp: *mut nc_type,
123        ndimsp: *mut c_int,
124        dim_sizesp: *mut c_int,
125    ) -> c_int;
126    pub fn nc_inq_compound_fieldname(
127        ncid: c_int,
128        xtype: nc_type,
129        fieldid: c_int,
130        name: *mut c_char,
131    ) -> c_int;
132    pub fn nc_inq_compound_fieldindex(
133        ncid: c_int,
134        xtype: nc_type,
135        name: *const c_char,
136        fieldidp: *mut c_int,
137    ) -> c_int;
138    pub fn nc_inq_compound_fieldoffset(
139        ncid: c_int,
140        xtype: nc_type,
141        fieldid: c_int,
142        offsetp: *mut usize,
143    ) -> c_int;
144    pub fn nc_inq_compound_fieldtype(
145        ncid: c_int,
146        xtype: nc_type,
147        fieldid: c_int,
148        field_typeidp: *mut nc_type,
149    ) -> c_int;
150    pub fn nc_inq_compound_fieldndims(
151        ncid: c_int,
152        xtype: nc_type,
153        fieldid: c_int,
154        ndimsp: *mut c_int,
155    ) -> c_int;
156    pub fn nc_inq_compound_fielddim_sizes(
157        ncid: c_int,
158        xtype: nc_type,
159        fieldid: c_int,
160        dim_sizes: *mut c_int,
161    ) -> c_int;
162    pub fn nc_def_vlen(
163        ncid: c_int,
164        name: *const c_char,
165        base_typeid: nc_type,
166        xtypep: *mut nc_type,
167    ) -> c_int;
168    pub fn nc_inq_vlen(
169        ncid: c_int,
170        xtype: nc_type,
171        name: *mut c_char,
172        datum_sizep: *mut usize,
173        base_nc_typep: *mut nc_type,
174    ) -> c_int;
175    pub fn nc_free_vlen(vl: *mut nc_vlen_t) -> c_int;
176    pub fn nc_free_vlens(len: usize, vlens: *mut nc_vlen_t) -> c_int;
177    pub fn nc_put_vlen_element(
178        ncid: c_int,
179        typeid1: c_int,
180        vlen_element: *mut c_void,
181        len: usize,
182        data: *const c_void,
183    ) -> c_int;
184    pub fn nc_get_vlen_element(
185        ncid: c_int,
186        typeid1: c_int,
187        vlen_element: *const c_void,
188        len: *mut usize,
189        data: *mut c_void,
190    ) -> c_int;
191    pub fn nc_free_string(len: usize, data: *mut *mut c_char) -> c_int;
192    pub fn nc_inq_user_type(
193        ncid: c_int,
194        xtype: nc_type,
195        name: *mut c_char,
196        size: *mut usize,
197        base_nc_typep: *mut nc_type,
198        nfieldsp: *mut usize,
199        classp: *mut c_int,
200    ) -> c_int;
201    pub fn nc_put_att(
202        ncid: c_int,
203        varid: c_int,
204        name: *const c_char,
205        xtype: nc_type,
206        len: usize,
207        op: *const c_void,
208    ) -> c_int;
209    pub fn nc_get_att(ncid: c_int, varid: c_int, name: *const c_char, ip: *mut c_void) -> c_int;
210    pub fn nc_def_enum(
211        ncid: c_int,
212        base_typeid: nc_type,
213        name: *const c_char,
214        typeidp: *mut nc_type,
215    ) -> c_int;
216    pub fn nc_insert_enum(
217        ncid: c_int,
218        xtype: nc_type,
219        name: *const c_char,
220        value: *const c_void,
221    ) -> c_int;
222    pub fn nc_inq_enum(
223        ncid: c_int,
224        xtype: nc_type,
225        name: *mut c_char,
226        base_nc_typep: *mut nc_type,
227        base_sizep: *mut usize,
228        num_membersp: *mut usize,
229    ) -> c_int;
230    pub fn nc_inq_enum_member(
231        ncid: c_int,
232        xtype: nc_type,
233        idx: c_int,
234        name: *mut c_char,
235        value: *mut c_void,
236    ) -> c_int;
237    pub fn nc_inq_enum_ident(
238        ncid: c_int,
239        xtype: nc_type,
240        value: c_longlong,
241        identifier: *mut c_char,
242    ) -> c_int;
243    pub fn nc_def_opaque(
244        ncid: c_int,
245        size: usize,
246        name: *const c_char,
247        xtypep: *mut nc_type,
248    ) -> c_int;
249    pub fn nc_inq_opaque(
250        ncid: c_int,
251        xtype: nc_type,
252        name: *mut c_char,
253        sizep: *mut usize,
254    ) -> c_int;
255    pub fn nc_put_var(ncid: c_int, varid: c_int, op: *const c_void) -> c_int;
256    pub fn nc_get_var(ncid: c_int, varid: c_int, ip: *mut c_void) -> c_int;
257    pub fn nc_put_var1(ncid: c_int, varid: c_int, indexp: *const usize, op: *const c_void)
258        -> c_int;
259    pub fn nc_get_var1(ncid: c_int, varid: c_int, indexp: *const usize, ip: *mut c_void) -> c_int;
260    pub fn nc_put_vara(
261        ncid: c_int,
262        varid: c_int,
263        startp: *const usize,
264        countp: *const usize,
265        op: *const c_void,
266    ) -> c_int;
267    pub fn nc_get_vara(
268        ncid: c_int,
269        varid: c_int,
270        startp: *const usize,
271        countp: *const usize,
272        ip: *mut c_void,
273    ) -> c_int;
274    pub fn nc_put_vars(
275        ncid: c_int,
276        varid: c_int,
277        startp: *const usize,
278        countp: *const usize,
279        stridep: *const isize,
280        op: *const c_void,
281    ) -> c_int;
282    pub fn nc_get_vars(
283        ncid: c_int,
284        varid: c_int,
285        startp: *const usize,
286        countp: *const usize,
287        stridep: *const isize,
288        ip: *mut c_void,
289    ) -> c_int;
290    pub fn nc_put_varm(
291        ncid: c_int,
292        varid: c_int,
293        startp: *const usize,
294        countp: *const usize,
295        stridep: *const isize,
296        imapp: *const isize,
297        op: *const c_void,
298    ) -> c_int;
299    pub fn nc_get_varm(
300        ncid: c_int,
301        varid: c_int,
302        startp: *const usize,
303        countp: *const usize,
304        stridep: *const isize,
305        imapp: *const isize,
306        ip: *mut c_void,
307    ) -> c_int;
308    pub fn nc_def_var_deflate(
309        ncid: c_int,
310        varid: c_int,
311        shuffle: c_int,
312        deflate: c_int,
313        deflate_level: c_int,
314    ) -> c_int;
315    pub fn nc_inq_var_deflate(
316        ncid: c_int,
317        varid: c_int,
318        shufflep: *mut c_int,
319        deflatep: *mut c_int,
320        deflate_levelp: *mut c_int,
321    ) -> c_int;
322    #[cfg(feature = "4.7.4")]
323    pub fn nc_def_var_szip(
324        ncid: c_int,
325        varid: c_int,
326        options_mask: c_int,
327        pixels_per_block: c_int,
328    ) -> c_int;
329    pub fn nc_inq_var_szip(
330        ncid: c_int,
331        varid: c_int,
332        options_maskp: *mut c_int,
333        pixels_per_blockp: *mut c_int,
334    ) -> c_int;
335    pub fn nc_def_var_fletcher32(ncid: c_int, varid: c_int, fletcher32: c_int) -> c_int;
336    pub fn nc_inq_var_fletcher32(ncid: c_int, varid: c_int, fletcher32p: *mut c_int) -> c_int;
337    pub fn nc_def_var_chunking(
338        ncid: c_int,
339        varid: c_int,
340        storage: c_int,
341        chunksizesp: *const usize,
342    ) -> c_int;
343    pub fn nc_inq_var_chunking(
344        ncid: c_int,
345        varid: c_int,
346        storagep: *mut c_int,
347        chunksizesp: *mut usize,
348    ) -> c_int;
349    pub fn nc_def_var_fill(
350        ncid: c_int,
351        varid: c_int,
352        no_fill: c_int,
353        fill_value: *const c_void,
354    ) -> c_int;
355    pub fn nc_inq_var_fill(
356        ncid: c_int,
357        varid: c_int,
358        no_fill: *mut c_int,
359        fill_valuep: *mut c_void,
360    ) -> c_int;
361    pub fn nc_def_var_endian(ncid: c_int, varid: c_int, endian: c_int) -> c_int;
362    pub fn nc_inq_var_endian(ncid: c_int, varid: c_int, endianp: *mut c_int) -> c_int;
363    #[cfg(feature = "4.6.0")]
364    pub fn nc_def_var_filter(
365        ncid: c_int,
366        varid: c_int,
367        id: c_uint,
368        nparams: usize,
369        parms: *const c_uint,
370    ) -> c_int;
371    #[cfg(feature = "4.6.0")]
372    pub fn nc_inq_var_filter(
373        ncid: c_int,
374        varid: c_int,
375        idp: *const c_uint,
376        nparams: *mut usize,
377        params: *mut c_uint,
378    ) -> c_int;
379    pub fn nc_set_fill(ncid: c_int, fillmode: c_int, old_modep: *mut c_int) -> c_int;
380    pub fn nc_set_default_format(format: c_int, old_formatp: *mut c_int) -> c_int;
381    pub fn nc_set_chunk_cache(size: usize, nelems: usize, preemption: c_float) -> c_int;
382    pub fn nc_get_chunk_cache(
383        sizep: *mut usize,
384        nelemsp: *mut usize,
385        preemptionp: *mut c_float,
386    ) -> c_int;
387    pub fn nc_set_var_chunk_cache(
388        ncid: c_int,
389        varid: c_int,
390        size: usize,
391        nelems: usize,
392        preemption: c_float,
393    ) -> c_int;
394    pub fn nc_get_var_chunk_cache(
395        ncid: c_int,
396        varid: c_int,
397        sizep: *mut usize,
398        nelemsp: *mut usize,
399        preemptionp: *mut c_float,
400    ) -> c_int;
401    pub fn nc_redef(ncid: c_int) -> c_int;
402    pub fn nc__enddef(
403        ncid: c_int,
404        h_minfree: usize,
405        v_align: usize,
406        v_minfree: usize,
407        r_align: usize,
408    ) -> c_int;
409    pub fn nc_enddef(ncid: c_int) -> c_int;
410    pub fn nc_sync(ncid: c_int) -> c_int;
411    pub fn nc_abort(ncid: c_int) -> c_int;
412    pub fn nc_close(ncid: c_int) -> c_int;
413    pub fn nc_inq(
414        ncid: c_int,
415        ndimsp: *mut c_int,
416        nvarsp: *mut c_int,
417        nattsp: *mut c_int,
418        unlimdimidp: *mut c_int,
419    ) -> c_int;
420    pub fn nc_inq_ndims(ncid: c_int, ndimsp: *mut c_int) -> c_int;
421    pub fn nc_inq_nvars(ncid: c_int, nvarsp: *mut c_int) -> c_int;
422    pub fn nc_inq_natts(ncid: c_int, nattsp: *mut c_int) -> c_int;
423    pub fn nc_inq_unlimdim(ncid: c_int, unlimdimidp: *mut c_int) -> c_int;
424    pub fn nc_inq_unlimdims(
425        ncid: c_int,
426        nunlimdimsp: *mut c_int,
427        unlimdimidsp: *mut c_int,
428    ) -> c_int;
429    pub fn nc_inq_format(ncid: c_int, formatp: *mut c_int) -> c_int;
430    pub fn nc_inq_format_extended(ncid: c_int, formatp: *mut c_int, modep: *mut c_int) -> c_int;
431    pub fn nc_def_dim(ncid: c_int, name: *const c_char, len: usize, idp: *mut c_int) -> c_int;
432    pub fn nc_inq_dimid(ncid: c_int, name: *const c_char, idp: *mut c_int) -> c_int;
433    pub fn nc_inq_dim(ncid: c_int, dimid: c_int, name: *mut c_char, lenp: *mut usize) -> c_int;
434    pub fn nc_inq_dimname(ncid: c_int, dimid: c_int, name: *mut c_char) -> c_int;
435    pub fn nc_inq_dimlen(ncid: c_int, dimid: c_int, lenp: *mut usize) -> c_int;
436    pub fn nc_rename_dim(ncid: c_int, dimid: c_int, name: *const c_char) -> c_int;
437    pub fn nc_inq_att(
438        ncid: c_int,
439        varid: c_int,
440        name: *const c_char,
441        xtypep: *mut nc_type,
442        lenp: *mut usize,
443    ) -> c_int;
444    pub fn nc_inq_attid(ncid: c_int, varid: c_int, name: *const c_char, idp: *mut c_int) -> c_int;
445    pub fn nc_inq_atttype(
446        ncid: c_int,
447        varid: c_int,
448        name: *const c_char,
449        xtypep: *mut nc_type,
450    ) -> c_int;
451    pub fn nc_inq_attlen(ncid: c_int, varid: c_int, name: *const c_char, lenp: *mut usize)
452        -> c_int;
453    pub fn nc_inq_attname(ncid: c_int, varid: c_int, attnum: c_int, name: *mut c_char) -> c_int;
454    pub fn nc_copy_att(
455        ncid_in: c_int,
456        varid_in: c_int,
457        name: *const c_char,
458        ncid_out: c_int,
459        varid_out: c_int,
460    ) -> c_int;
461    pub fn nc_rename_att(
462        ncid: c_int,
463        varid: c_int,
464        name: *const c_char,
465        newname: *const c_char,
466    ) -> c_int;
467    pub fn nc_del_att(ncid: c_int, varid: c_int, name: *const c_char) -> c_int;
468    pub fn nc_put_att_text(
469        ncid: c_int,
470        varid: c_int,
471        name: *const c_char,
472        len: usize,
473        op: *const c_char,
474    ) -> c_int;
475    pub fn nc_get_att_text(
476        ncid: c_int,
477        varid: c_int,
478        name: *const c_char,
479        ip: *mut c_char,
480    ) -> c_int;
481    pub fn nc_put_att_uchar(
482        ncid: c_int,
483        varid: c_int,
484        name: *const c_char,
485        xtype: nc_type,
486        len: usize,
487        op: *const c_uchar,
488    ) -> c_int;
489    pub fn nc_get_att_uchar(
490        ncid: c_int,
491        varid: c_int,
492        name: *const c_char,
493        ip: *mut c_uchar,
494    ) -> c_int;
495    pub fn nc_put_att_schar(
496        ncid: c_int,
497        varid: c_int,
498        name: *const c_char,
499        xtype: nc_type,
500        len: usize,
501        op: *const c_schar,
502    ) -> c_int;
503    pub fn nc_get_att_schar(
504        ncid: c_int,
505        varid: c_int,
506        name: *const c_char,
507        ip: *mut c_schar,
508    ) -> c_int;
509    pub fn nc_put_att_short(
510        ncid: c_int,
511        varid: c_int,
512        name: *const c_char,
513        xtype: nc_type,
514        len: usize,
515        op: *const c_short,
516    ) -> c_int;
517    pub fn nc_get_att_short(
518        ncid: c_int,
519        varid: c_int,
520        name: *const c_char,
521        ip: *mut c_short,
522    ) -> c_int;
523    pub fn nc_put_att_int(
524        ncid: c_int,
525        varid: c_int,
526        name: *const c_char,
527        xtype: nc_type,
528        len: usize,
529        op: *const c_int,
530    ) -> c_int;
531    pub fn nc_get_att_int(ncid: c_int, varid: c_int, name: *const c_char, ip: *mut c_int) -> c_int;
532    pub fn nc_put_att_long(
533        ncid: c_int,
534        varid: c_int,
535        name: *const c_char,
536        xtype: nc_type,
537        len: usize,
538        op: *const c_long,
539    ) -> c_int;
540    pub fn nc_get_att_long(
541        ncid: c_int,
542        varid: c_int,
543        name: *const c_char,
544        ip: *mut c_long,
545    ) -> c_int;
546    pub fn nc_put_att_float(
547        ncid: c_int,
548        varid: c_int,
549        name: *const c_char,
550        xtype: nc_type,
551        len: usize,
552        op: *const c_float,
553    ) -> c_int;
554    pub fn nc_get_att_float(
555        ncid: c_int,
556        varid: c_int,
557        name: *const c_char,
558        ip: *mut c_float,
559    ) -> c_int;
560    pub fn nc_put_att_double(
561        ncid: c_int,
562        varid: c_int,
563        name: *const c_char,
564        xtype: nc_type,
565        len: usize,
566        op: *const c_double,
567    ) -> c_int;
568    pub fn nc_get_att_double(
569        ncid: c_int,
570        varid: c_int,
571        name: *const c_char,
572        ip: *mut c_double,
573    ) -> c_int;
574    pub fn nc_put_att_ushort(
575        ncid: c_int,
576        varid: c_int,
577        name: *const c_char,
578        xtype: nc_type,
579        len: usize,
580        op: *const c_ushort,
581    ) -> c_int;
582    pub fn nc_get_att_ushort(
583        ncid: c_int,
584        varid: c_int,
585        name: *const c_char,
586        ip: *mut c_ushort,
587    ) -> c_int;
588    pub fn nc_put_att_uint(
589        ncid: c_int,
590        varid: c_int,
591        name: *const c_char,
592        xtype: nc_type,
593        len: usize,
594        op: *const c_uint,
595    ) -> c_int;
596    pub fn nc_get_att_uint(
597        ncid: c_int,
598        varid: c_int,
599        name: *const c_char,
600        ip: *mut c_uint,
601    ) -> c_int;
602    pub fn nc_put_att_longlong(
603        ncid: c_int,
604        varid: c_int,
605        name: *const c_char,
606        xtype: nc_type,
607        len: usize,
608        op: *const c_longlong,
609    ) -> c_int;
610    pub fn nc_get_att_longlong(
611        ncid: c_int,
612        varid: c_int,
613        name: *const c_char,
614        ip: *mut c_longlong,
615    ) -> c_int;
616    pub fn nc_put_att_ulonglong(
617        ncid: c_int,
618        varid: c_int,
619        name: *const c_char,
620        xtype: nc_type,
621        len: usize,
622        op: *const c_ulonglong,
623    ) -> c_int;
624    pub fn nc_get_att_ulonglong(
625        ncid: c_int,
626        varid: c_int,
627        name: *const c_char,
628        ip: *mut c_ulonglong,
629    ) -> c_int;
630    pub fn nc_put_att_string(
631        ncid: c_int,
632        varid: c_int,
633        name: *const c_char,
634        len: usize,
635        op: *mut *const c_char,
636    ) -> c_int;
637    pub fn nc_get_att_string(
638        ncid: c_int,
639        varid: c_int,
640        name: *const c_char,
641        ip: *mut *mut c_char,
642    ) -> c_int;
643    pub fn nc_def_var(
644        ncid: c_int,
645        name: *const c_char,
646        xtype: nc_type,
647        ndims: c_int,
648        dimidsp: *const c_int,
649        varidp: *mut c_int,
650    ) -> c_int;
651    pub fn nc_inq_var(
652        ncid: c_int,
653        varid: c_int,
654        name: *mut c_char,
655        xtypep: *mut nc_type,
656        ndimsp: *mut c_int,
657        dimidsp: *mut c_int,
658        nattsp: *mut c_int,
659    ) -> c_int;
660    pub fn nc_inq_varid(ncid: c_int, name: *const c_char, varidp: *mut c_int) -> c_int;
661    pub fn nc_inq_varname(ncid: c_int, varid: c_int, name: *mut c_char) -> c_int;
662    pub fn nc_inq_vartype(ncid: c_int, varid: c_int, xtypep: *mut nc_type) -> c_int;
663    pub fn nc_inq_varndims(ncid: c_int, varid: c_int, ndimsp: *mut c_int) -> c_int;
664    pub fn nc_inq_vardimid(ncid: c_int, varid: c_int, dimidsp: *mut c_int) -> c_int;
665    pub fn nc_inq_varnatts(ncid: c_int, varid: c_int, nattsp: *mut c_int) -> c_int;
666    pub fn nc_rename_var(ncid: c_int, varid: c_int, name: *const c_char) -> c_int;
667    pub fn nc_copy_var(ncid_in: c_int, varid: c_int, ncid_out: c_int) -> c_int;
668    pub fn nc_put_var1_text(
669        ncid: c_int,
670        varid: c_int,
671        indexp: *const usize,
672        op: *const c_char,
673    ) -> c_int;
674    pub fn nc_get_var1_text(
675        ncid: c_int,
676        varid: c_int,
677        indexp: *const usize,
678        ip: *mut c_char,
679    ) -> c_int;
680    pub fn nc_put_var1_uchar(
681        ncid: c_int,
682        varid: c_int,
683        indexp: *const usize,
684        op: *const c_uchar,
685    ) -> c_int;
686    pub fn nc_get_var1_uchar(
687        ncid: c_int,
688        varid: c_int,
689        indexp: *const usize,
690        ip: *mut c_uchar,
691    ) -> c_int;
692    pub fn nc_put_var1_schar(
693        ncid: c_int,
694        varid: c_int,
695        indexp: *const usize,
696        op: *const c_schar,
697    ) -> c_int;
698    pub fn nc_get_var1_schar(
699        ncid: c_int,
700        varid: c_int,
701        indexp: *const usize,
702        ip: *mut c_schar,
703    ) -> c_int;
704    pub fn nc_put_var1_short(
705        ncid: c_int,
706        varid: c_int,
707        indexp: *const usize,
708        op: *const c_short,
709    ) -> c_int;
710    pub fn nc_get_var1_short(
711        ncid: c_int,
712        varid: c_int,
713        indexp: *const usize,
714        ip: *mut c_short,
715    ) -> c_int;
716    pub fn nc_put_var1_int(
717        ncid: c_int,
718        varid: c_int,
719        indexp: *const usize,
720        op: *const c_int,
721    ) -> c_int;
722    pub fn nc_get_var1_int(
723        ncid: c_int,
724        varid: c_int,
725        indexp: *const usize,
726        ip: *mut c_int,
727    ) -> c_int;
728    pub fn nc_put_var1_long(
729        ncid: c_int,
730        varid: c_int,
731        indexp: *const usize,
732        op: *const c_long,
733    ) -> c_int;
734    pub fn nc_get_var1_long(
735        ncid: c_int,
736        varid: c_int,
737        indexp: *const usize,
738        ip: *mut c_long,
739    ) -> c_int;
740    pub fn nc_put_var1_float(
741        ncid: c_int,
742        varid: c_int,
743        indexp: *const usize,
744        op: *const c_float,
745    ) -> c_int;
746    pub fn nc_get_var1_float(
747        ncid: c_int,
748        varid: c_int,
749        indexp: *const usize,
750        ip: *mut c_float,
751    ) -> c_int;
752    pub fn nc_put_var1_double(
753        ncid: c_int,
754        varid: c_int,
755        indexp: *const usize,
756        op: *const c_double,
757    ) -> c_int;
758    pub fn nc_get_var1_double(
759        ncid: c_int,
760        varid: c_int,
761        indexp: *const usize,
762        ip: *mut c_double,
763    ) -> c_int;
764    pub fn nc_put_var1_ushort(
765        ncid: c_int,
766        varid: c_int,
767        indexp: *const usize,
768        op: *const c_ushort,
769    ) -> c_int;
770    pub fn nc_get_var1_ushort(
771        ncid: c_int,
772        varid: c_int,
773        indexp: *const usize,
774        ip: *mut c_ushort,
775    ) -> c_int;
776    pub fn nc_put_var1_uint(
777        ncid: c_int,
778        varid: c_int,
779        indexp: *const usize,
780        op: *const c_uint,
781    ) -> c_int;
782    pub fn nc_get_var1_uint(
783        ncid: c_int,
784        varid: c_int,
785        indexp: *const usize,
786        ip: *mut c_uint,
787    ) -> c_int;
788    pub fn nc_put_var1_longlong(
789        ncid: c_int,
790        varid: c_int,
791        indexp: *const usize,
792        op: *const c_longlong,
793    ) -> c_int;
794    pub fn nc_get_var1_longlong(
795        ncid: c_int,
796        varid: c_int,
797        indexp: *const usize,
798        ip: *mut c_longlong,
799    ) -> c_int;
800    pub fn nc_put_var1_ulonglong(
801        ncid: c_int,
802        varid: c_int,
803        indexp: *const usize,
804        op: *const c_ulonglong,
805    ) -> c_int;
806    pub fn nc_get_var1_ulonglong(
807        ncid: c_int,
808        varid: c_int,
809        indexp: *const usize,
810        ip: *mut c_ulonglong,
811    ) -> c_int;
812    pub fn nc_put_var1_string(
813        ncid: c_int,
814        varid: c_int,
815        indexp: *const usize,
816        op: *mut *const c_char,
817    ) -> c_int;
818    pub fn nc_get_var1_string(
819        ncid: c_int,
820        varid: c_int,
821        indexp: *const usize,
822        ip: *mut *mut c_char,
823    ) -> c_int;
824    pub fn nc_put_vara_text(
825        ncid: c_int,
826        varid: c_int,
827        startp: *const usize,
828        countp: *const usize,
829        op: *const c_char,
830    ) -> c_int;
831    pub fn nc_get_vara_text(
832        ncid: c_int,
833        varid: c_int,
834        startp: *const usize,
835        countp: *const usize,
836        ip: *mut c_char,
837    ) -> c_int;
838    pub fn nc_put_vara_uchar(
839        ncid: c_int,
840        varid: c_int,
841        startp: *const usize,
842        countp: *const usize,
843        op: *const c_uchar,
844    ) -> c_int;
845    pub fn nc_get_vara_uchar(
846        ncid: c_int,
847        varid: c_int,
848        startp: *const usize,
849        countp: *const usize,
850        ip: *mut c_uchar,
851    ) -> c_int;
852    pub fn nc_put_vara_schar(
853        ncid: c_int,
854        varid: c_int,
855        startp: *const usize,
856        countp: *const usize,
857        op: *const c_schar,
858    ) -> c_int;
859    pub fn nc_get_vara_schar(
860        ncid: c_int,
861        varid: c_int,
862        startp: *const usize,
863        countp: *const usize,
864        ip: *mut c_schar,
865    ) -> c_int;
866    pub fn nc_put_vara_short(
867        ncid: c_int,
868        varid: c_int,
869        startp: *const usize,
870        countp: *const usize,
871        op: *const c_short,
872    ) -> c_int;
873    pub fn nc_get_vara_short(
874        ncid: c_int,
875        varid: c_int,
876        startp: *const usize,
877        countp: *const usize,
878        ip: *mut c_short,
879    ) -> c_int;
880    pub fn nc_put_vara_int(
881        ncid: c_int,
882        varid: c_int,
883        startp: *const usize,
884        countp: *const usize,
885        op: *const c_int,
886    ) -> c_int;
887    pub fn nc_get_vara_int(
888        ncid: c_int,
889        varid: c_int,
890        startp: *const usize,
891        countp: *const usize,
892        ip: *mut c_int,
893    ) -> c_int;
894    pub fn nc_put_vara_long(
895        ncid: c_int,
896        varid: c_int,
897        startp: *const usize,
898        countp: *const usize,
899        op: *const c_long,
900    ) -> c_int;
901    pub fn nc_get_vara_long(
902        ncid: c_int,
903        varid: c_int,
904        startp: *const usize,
905        countp: *const usize,
906        ip: *mut c_long,
907    ) -> c_int;
908    pub fn nc_put_vara_float(
909        ncid: c_int,
910        varid: c_int,
911        startp: *const usize,
912        countp: *const usize,
913        op: *const c_float,
914    ) -> c_int;
915    pub fn nc_get_vara_float(
916        ncid: c_int,
917        varid: c_int,
918        startp: *const usize,
919        countp: *const usize,
920        ip: *mut c_float,
921    ) -> c_int;
922    pub fn nc_put_vara_double(
923        ncid: c_int,
924        varid: c_int,
925        startp: *const usize,
926        countp: *const usize,
927        op: *const c_double,
928    ) -> c_int;
929    pub fn nc_get_vara_double(
930        ncid: c_int,
931        varid: c_int,
932        startp: *const usize,
933        countp: *const usize,
934        ip: *mut c_double,
935    ) -> c_int;
936    pub fn nc_put_vara_ushort(
937        ncid: c_int,
938        varid: c_int,
939        startp: *const usize,
940        countp: *const usize,
941        op: *const c_ushort,
942    ) -> c_int;
943    pub fn nc_get_vara_ushort(
944        ncid: c_int,
945        varid: c_int,
946        startp: *const usize,
947        countp: *const usize,
948        ip: *mut c_ushort,
949    ) -> c_int;
950    pub fn nc_put_vara_uint(
951        ncid: c_int,
952        varid: c_int,
953        startp: *const usize,
954        countp: *const usize,
955        op: *const c_uint,
956    ) -> c_int;
957    pub fn nc_get_vara_uint(
958        ncid: c_int,
959        varid: c_int,
960        startp: *const usize,
961        countp: *const usize,
962        ip: *mut c_uint,
963    ) -> c_int;
964    pub fn nc_put_vara_longlong(
965        ncid: c_int,
966        varid: c_int,
967        startp: *const usize,
968        countp: *const usize,
969        op: *const c_longlong,
970    ) -> c_int;
971    pub fn nc_get_vara_longlong(
972        ncid: c_int,
973        varid: c_int,
974        startp: *const usize,
975        countp: *const usize,
976        ip: *mut c_longlong,
977    ) -> c_int;
978    pub fn nc_put_vara_ulonglong(
979        ncid: c_int,
980        varid: c_int,
981        startp: *const usize,
982        countp: *const usize,
983        op: *const c_ulonglong,
984    ) -> c_int;
985    pub fn nc_get_vara_ulonglong(
986        ncid: c_int,
987        varid: c_int,
988        startp: *const usize,
989        countp: *const usize,
990        ip: *mut c_ulonglong,
991    ) -> c_int;
992    pub fn nc_put_vara_string(
993        ncid: c_int,
994        varid: c_int,
995        startp: *const usize,
996        countp: *const usize,
997        op: *mut *const c_char,
998    ) -> c_int;
999    pub fn nc_get_vara_string(
1000        ncid: c_int,
1001        varid: c_int,
1002        startp: *const usize,
1003        countp: *const usize,
1004        ip: *mut *mut c_char,
1005    ) -> c_int;
1006    pub fn nc_put_vars_text(
1007        ncid: c_int,
1008        varid: c_int,
1009        startp: *const usize,
1010        countp: *const usize,
1011        stridep: *const isize,
1012        op: *const c_char,
1013    ) -> c_int;
1014    pub fn nc_get_vars_text(
1015        ncid: c_int,
1016        varid: c_int,
1017        startp: *const usize,
1018        countp: *const usize,
1019        stridep: *const isize,
1020        ip: *mut c_char,
1021    ) -> c_int;
1022    pub fn nc_put_vars_uchar(
1023        ncid: c_int,
1024        varid: c_int,
1025        startp: *const usize,
1026        countp: *const usize,
1027        stridep: *const isize,
1028        op: *const c_uchar,
1029    ) -> c_int;
1030    pub fn nc_get_vars_uchar(
1031        ncid: c_int,
1032        varid: c_int,
1033        startp: *const usize,
1034        countp: *const usize,
1035        stridep: *const isize,
1036        ip: *mut c_uchar,
1037    ) -> c_int;
1038    pub fn nc_put_vars_schar(
1039        ncid: c_int,
1040        varid: c_int,
1041        startp: *const usize,
1042        countp: *const usize,
1043        stridep: *const isize,
1044        op: *const c_schar,
1045    ) -> c_int;
1046    pub fn nc_get_vars_schar(
1047        ncid: c_int,
1048        varid: c_int,
1049        startp: *const usize,
1050        countp: *const usize,
1051        stridep: *const isize,
1052        ip: *mut c_schar,
1053    ) -> c_int;
1054    pub fn nc_put_vars_short(
1055        ncid: c_int,
1056        varid: c_int,
1057        startp: *const usize,
1058        countp: *const usize,
1059        stridep: *const isize,
1060        op: *const c_short,
1061    ) -> c_int;
1062    pub fn nc_get_vars_short(
1063        ncid: c_int,
1064        varid: c_int,
1065        startp: *const usize,
1066        countp: *const usize,
1067        stridep: *const isize,
1068        ip: *mut c_short,
1069    ) -> c_int;
1070    pub fn nc_put_vars_int(
1071        ncid: c_int,
1072        varid: c_int,
1073        startp: *const usize,
1074        countp: *const usize,
1075        stridep: *const isize,
1076        op: *const c_int,
1077    ) -> c_int;
1078    pub fn nc_get_vars_int(
1079        ncid: c_int,
1080        varid: c_int,
1081        startp: *const usize,
1082        countp: *const usize,
1083        stridep: *const isize,
1084        ip: *mut c_int,
1085    ) -> c_int;
1086    pub fn nc_put_vars_long(
1087        ncid: c_int,
1088        varid: c_int,
1089        startp: *const usize,
1090        countp: *const usize,
1091        stridep: *const isize,
1092        op: *const c_long,
1093    ) -> c_int;
1094    pub fn nc_get_vars_long(
1095        ncid: c_int,
1096        varid: c_int,
1097        startp: *const usize,
1098        countp: *const usize,
1099        stridep: *const isize,
1100        ip: *mut c_long,
1101    ) -> c_int;
1102    pub fn nc_put_vars_float(
1103        ncid: c_int,
1104        varid: c_int,
1105        startp: *const usize,
1106        countp: *const usize,
1107        stridep: *const isize,
1108        op: *const c_float,
1109    ) -> c_int;
1110    pub fn nc_get_vars_float(
1111        ncid: c_int,
1112        varid: c_int,
1113        startp: *const usize,
1114        countp: *const usize,
1115        stridep: *const isize,
1116        ip: *mut c_float,
1117    ) -> c_int;
1118    pub fn nc_put_vars_double(
1119        ncid: c_int,
1120        varid: c_int,
1121        startp: *const usize,
1122        countp: *const usize,
1123        stridep: *const isize,
1124        op: *const c_double,
1125    ) -> c_int;
1126    pub fn nc_get_vars_double(
1127        ncid: c_int,
1128        varid: c_int,
1129        startp: *const usize,
1130        countp: *const usize,
1131        stridep: *const isize,
1132        ip: *mut c_double,
1133    ) -> c_int;
1134    pub fn nc_put_vars_ushort(
1135        ncid: c_int,
1136        varid: c_int,
1137        startp: *const usize,
1138        countp: *const usize,
1139        stridep: *const isize,
1140        op: *const c_ushort,
1141    ) -> c_int;
1142    pub fn nc_get_vars_ushort(
1143        ncid: c_int,
1144        varid: c_int,
1145        startp: *const usize,
1146        countp: *const usize,
1147        stridep: *const isize,
1148        ip: *mut c_ushort,
1149    ) -> c_int;
1150    pub fn nc_put_vars_uint(
1151        ncid: c_int,
1152        varid: c_int,
1153        startp: *const usize,
1154        countp: *const usize,
1155        stridep: *const isize,
1156        op: *const c_uint,
1157    ) -> c_int;
1158    pub fn nc_get_vars_uint(
1159        ncid: c_int,
1160        varid: c_int,
1161        startp: *const usize,
1162        countp: *const usize,
1163        stridep: *const isize,
1164        ip: *mut c_uint,
1165    ) -> c_int;
1166    pub fn nc_put_vars_longlong(
1167        ncid: c_int,
1168        varid: c_int,
1169        startp: *const usize,
1170        countp: *const usize,
1171        stridep: *const isize,
1172        op: *const c_longlong,
1173    ) -> c_int;
1174    pub fn nc_get_vars_longlong(
1175        ncid: c_int,
1176        varid: c_int,
1177        startp: *const usize,
1178        countp: *const usize,
1179        stridep: *const isize,
1180        ip: *mut c_longlong,
1181    ) -> c_int;
1182    pub fn nc_put_vars_ulonglong(
1183        ncid: c_int,
1184        varid: c_int,
1185        startp: *const usize,
1186        countp: *const usize,
1187        stridep: *const isize,
1188        op: *const c_ulonglong,
1189    ) -> c_int;
1190    pub fn nc_get_vars_ulonglong(
1191        ncid: c_int,
1192        varid: c_int,
1193        startp: *const usize,
1194        countp: *const usize,
1195        stridep: *const isize,
1196        ip: *mut c_ulonglong,
1197    ) -> c_int;
1198    pub fn nc_put_vars_string(
1199        ncid: c_int,
1200        varid: c_int,
1201        startp: *const usize,
1202        countp: *const usize,
1203        stridep: *const isize,
1204        op: *mut *const c_char,
1205    ) -> c_int;
1206    pub fn nc_get_vars_string(
1207        ncid: c_int,
1208        varid: c_int,
1209        startp: *const usize,
1210        countp: *const usize,
1211        stridep: *const isize,
1212        ip: *mut *mut c_char,
1213    ) -> c_int;
1214    pub fn nc_put_varm_text(
1215        ncid: c_int,
1216        varid: c_int,
1217        startp: *const usize,
1218        countp: *const usize,
1219        stridep: *const isize,
1220        imapp: *const isize,
1221        op: *const c_char,
1222    ) -> c_int;
1223    pub fn nc_get_varm_text(
1224        ncid: c_int,
1225        varid: c_int,
1226        startp: *const usize,
1227        countp: *const usize,
1228        stridep: *const isize,
1229        imapp: *const isize,
1230        ip: *mut c_char,
1231    ) -> c_int;
1232    pub fn nc_put_varm_uchar(
1233        ncid: c_int,
1234        varid: c_int,
1235        startp: *const usize,
1236        countp: *const usize,
1237        stridep: *const isize,
1238        imapp: *const isize,
1239        op: *const c_uchar,
1240    ) -> c_int;
1241    pub fn nc_get_varm_uchar(
1242        ncid: c_int,
1243        varid: c_int,
1244        startp: *const usize,
1245        countp: *const usize,
1246        stridep: *const isize,
1247        imapp: *const isize,
1248        ip: *mut c_uchar,
1249    ) -> c_int;
1250    pub fn nc_put_varm_schar(
1251        ncid: c_int,
1252        varid: c_int,
1253        startp: *const usize,
1254        countp: *const usize,
1255        stridep: *const isize,
1256        imapp: *const isize,
1257        op: *const c_schar,
1258    ) -> c_int;
1259    pub fn nc_get_varm_schar(
1260        ncid: c_int,
1261        varid: c_int,
1262        startp: *const usize,
1263        countp: *const usize,
1264        stridep: *const isize,
1265        imapp: *const isize,
1266        ip: *mut c_schar,
1267    ) -> c_int;
1268    pub fn nc_put_varm_short(
1269        ncid: c_int,
1270        varid: c_int,
1271        startp: *const usize,
1272        countp: *const usize,
1273        stridep: *const isize,
1274        imapp: *const isize,
1275        op: *const c_short,
1276    ) -> c_int;
1277    pub fn nc_get_varm_short(
1278        ncid: c_int,
1279        varid: c_int,
1280        startp: *const usize,
1281        countp: *const usize,
1282        stridep: *const isize,
1283        imapp: *const isize,
1284        ip: *mut c_short,
1285    ) -> c_int;
1286    pub fn nc_put_varm_int(
1287        ncid: c_int,
1288        varid: c_int,
1289        startp: *const usize,
1290        countp: *const usize,
1291        stridep: *const isize,
1292        imapp: *const isize,
1293        op: *const c_int,
1294    ) -> c_int;
1295    pub fn nc_get_varm_int(
1296        ncid: c_int,
1297        varid: c_int,
1298        startp: *const usize,
1299        countp: *const usize,
1300        stridep: *const isize,
1301        imapp: *const isize,
1302        ip: *mut c_int,
1303    ) -> c_int;
1304    pub fn nc_put_varm_long(
1305        ncid: c_int,
1306        varid: c_int,
1307        startp: *const usize,
1308        countp: *const usize,
1309        stridep: *const isize,
1310        imapp: *const isize,
1311        op: *const c_long,
1312    ) -> c_int;
1313    pub fn nc_get_varm_long(
1314        ncid: c_int,
1315        varid: c_int,
1316        startp: *const usize,
1317        countp: *const usize,
1318        stridep: *const isize,
1319        imapp: *const isize,
1320        ip: *mut c_long,
1321    ) -> c_int;
1322    pub fn nc_put_varm_float(
1323        ncid: c_int,
1324        varid: c_int,
1325        startp: *const usize,
1326        countp: *const usize,
1327        stridep: *const isize,
1328        imapp: *const isize,
1329        op: *const c_float,
1330    ) -> c_int;
1331    pub fn nc_get_varm_float(
1332        ncid: c_int,
1333        varid: c_int,
1334        startp: *const usize,
1335        countp: *const usize,
1336        stridep: *const isize,
1337        imapp: *const isize,
1338        ip: *mut c_float,
1339    ) -> c_int;
1340    pub fn nc_put_varm_double(
1341        ncid: c_int,
1342        varid: c_int,
1343        startp: *const usize,
1344        countp: *const usize,
1345        stridep: *const isize,
1346        imapp: *const isize,
1347        op: *const c_double,
1348    ) -> c_int;
1349    pub fn nc_get_varm_double(
1350        ncid: c_int,
1351        varid: c_int,
1352        startp: *const usize,
1353        countp: *const usize,
1354        stridep: *const isize,
1355        imapp: *const isize,
1356        ip: *mut c_double,
1357    ) -> c_int;
1358    pub fn nc_put_varm_ushort(
1359        ncid: c_int,
1360        varid: c_int,
1361        startp: *const usize,
1362        countp: *const usize,
1363        stridep: *const isize,
1364        imapp: *const isize,
1365        op: *const c_ushort,
1366    ) -> c_int;
1367    pub fn nc_get_varm_ushort(
1368        ncid: c_int,
1369        varid: c_int,
1370        startp: *const usize,
1371        countp: *const usize,
1372        stridep: *const isize,
1373        imapp: *const isize,
1374        ip: *mut c_ushort,
1375    ) -> c_int;
1376    pub fn nc_put_varm_uint(
1377        ncid: c_int,
1378        varid: c_int,
1379        startp: *const usize,
1380        countp: *const usize,
1381        stridep: *const isize,
1382        imapp: *const isize,
1383        op: *const c_uint,
1384    ) -> c_int;
1385    pub fn nc_get_varm_uint(
1386        ncid: c_int,
1387        varid: c_int,
1388        startp: *const usize,
1389        countp: *const usize,
1390        stridep: *const isize,
1391        imapp: *const isize,
1392        ip: *mut c_uint,
1393    ) -> c_int;
1394    pub fn nc_put_varm_longlong(
1395        ncid: c_int,
1396        varid: c_int,
1397        startp: *const usize,
1398        countp: *const usize,
1399        stridep: *const isize,
1400        imapp: *const isize,
1401        op: *const c_longlong,
1402    ) -> c_int;
1403    pub fn nc_get_varm_longlong(
1404        ncid: c_int,
1405        varid: c_int,
1406        startp: *const usize,
1407        countp: *const usize,
1408        stridep: *const isize,
1409        imapp: *const isize,
1410        ip: *mut c_longlong,
1411    ) -> c_int;
1412    pub fn nc_put_varm_ulonglong(
1413        ncid: c_int,
1414        varid: c_int,
1415        startp: *const usize,
1416        countp: *const usize,
1417        stridep: *const isize,
1418        imapp: *const isize,
1419        op: *const c_ulonglong,
1420    ) -> c_int;
1421    pub fn nc_get_varm_ulonglong(
1422        ncid: c_int,
1423        varid: c_int,
1424        startp: *const usize,
1425        countp: *const usize,
1426        stridep: *const isize,
1427        imapp: *const isize,
1428        ip: *mut c_ulonglong,
1429    ) -> c_int;
1430    pub fn nc_put_varm_string(
1431        ncid: c_int,
1432        varid: c_int,
1433        startp: *const usize,
1434        countp: *const usize,
1435        stridep: *const isize,
1436        imapp: *const isize,
1437        op: *mut *const c_char,
1438    ) -> c_int;
1439    pub fn nc_get_varm_string(
1440        ncid: c_int,
1441        varid: c_int,
1442        startp: *const usize,
1443        countp: *const usize,
1444        stridep: *const isize,
1445        imapp: *const isize,
1446        ip: *mut *mut c_char,
1447    ) -> c_int;
1448    pub fn nc_put_var_text(ncid: c_int, varid: c_int, op: *const c_char) -> c_int;
1449    pub fn nc_get_var_text(ncid: c_int, varid: c_int, ip: *mut c_char) -> c_int;
1450    pub fn nc_put_var_uchar(ncid: c_int, varid: c_int, op: *const c_uchar) -> c_int;
1451    pub fn nc_get_var_uchar(ncid: c_int, varid: c_int, ip: *mut c_uchar) -> c_int;
1452    pub fn nc_put_var_schar(ncid: c_int, varid: c_int, op: *const c_schar) -> c_int;
1453    pub fn nc_get_var_schar(ncid: c_int, varid: c_int, ip: *mut c_schar) -> c_int;
1454    pub fn nc_put_var_short(ncid: c_int, varid: c_int, op: *const c_short) -> c_int;
1455    pub fn nc_get_var_short(ncid: c_int, varid: c_int, ip: *mut c_short) -> c_int;
1456    pub fn nc_put_var_int(ncid: c_int, varid: c_int, op: *const c_int) -> c_int;
1457    pub fn nc_get_var_int(ncid: c_int, varid: c_int, ip: *mut c_int) -> c_int;
1458    pub fn nc_put_var_long(ncid: c_int, varid: c_int, op: *const c_long) -> c_int;
1459    pub fn nc_get_var_long(ncid: c_int, varid: c_int, ip: *mut c_long) -> c_int;
1460    pub fn nc_put_var_float(ncid: c_int, varid: c_int, op: *const c_float) -> c_int;
1461    pub fn nc_get_var_float(ncid: c_int, varid: c_int, ip: *mut c_float) -> c_int;
1462    pub fn nc_put_var_double(ncid: c_int, varid: c_int, op: *const c_double) -> c_int;
1463    pub fn nc_get_var_double(ncid: c_int, varid: c_int, ip: *mut c_double) -> c_int;
1464    pub fn nc_put_var_ushort(ncid: c_int, varid: c_int, op: *const c_ushort) -> c_int;
1465    pub fn nc_get_var_ushort(ncid: c_int, varid: c_int, ip: *mut c_ushort) -> c_int;
1466    pub fn nc_put_var_uint(ncid: c_int, varid: c_int, op: *const c_uint) -> c_int;
1467    pub fn nc_get_var_uint(ncid: c_int, varid: c_int, ip: *mut c_uint) -> c_int;
1468    pub fn nc_put_var_longlong(ncid: c_int, varid: c_int, op: *const c_longlong) -> c_int;
1469    pub fn nc_get_var_longlong(ncid: c_int, varid: c_int, ip: *mut c_longlong) -> c_int;
1470    pub fn nc_put_var_ulonglong(ncid: c_int, varid: c_int, op: *const c_ulonglong) -> c_int;
1471    pub fn nc_get_var_ulonglong(ncid: c_int, varid: c_int, ip: *mut c_ulonglong) -> c_int;
1472    pub fn nc_put_var_string(ncid: c_int, varid: c_int, op: *mut *const c_char) -> c_int;
1473    pub fn nc_get_var_string(ncid: c_int, varid: c_int, ip: *mut *mut c_char) -> c_int;
1474    pub fn nc_put_att_ubyte(
1475        ncid: c_int,
1476        varid: c_int,
1477        name: *const c_char,
1478        xtype: nc_type,
1479        len: usize,
1480        op: *const c_uchar,
1481    ) -> c_int;
1482    pub fn nc_get_att_ubyte(
1483        ncid: c_int,
1484        varid: c_int,
1485        name: *const c_char,
1486        ip: *mut c_uchar,
1487    ) -> c_int;
1488    pub fn nc_put_var1_ubyte(
1489        ncid: c_int,
1490        varid: c_int,
1491        indexp: *const usize,
1492        op: *const c_uchar,
1493    ) -> c_int;
1494    pub fn nc_get_var1_ubyte(
1495        ncid: c_int,
1496        varid: c_int,
1497        indexp: *const usize,
1498        ip: *mut c_uchar,
1499    ) -> c_int;
1500    pub fn nc_put_vara_ubyte(
1501        ncid: c_int,
1502        varid: c_int,
1503        startp: *const usize,
1504        countp: *const usize,
1505        op: *const c_uchar,
1506    ) -> c_int;
1507    pub fn nc_get_vara_ubyte(
1508        ncid: c_int,
1509        varid: c_int,
1510        startp: *const usize,
1511        countp: *const usize,
1512        ip: *mut c_uchar,
1513    ) -> c_int;
1514    pub fn nc_put_vars_ubyte(
1515        ncid: c_int,
1516        varid: c_int,
1517        startp: *const usize,
1518        countp: *const usize,
1519        stridep: *const isize,
1520        op: *const c_uchar,
1521    ) -> c_int;
1522    pub fn nc_get_vars_ubyte(
1523        ncid: c_int,
1524        varid: c_int,
1525        startp: *const usize,
1526        countp: *const usize,
1527        stridep: *const isize,
1528        ip: *mut c_uchar,
1529    ) -> c_int;
1530    pub fn nc_put_varm_ubyte(
1531        ncid: c_int,
1532        varid: c_int,
1533        startp: *const usize,
1534        countp: *const usize,
1535        stridep: *const isize,
1536        imapp: *const isize,
1537        op: *const c_uchar,
1538    ) -> c_int;
1539    pub fn nc_get_varm_ubyte(
1540        ncid: c_int,
1541        varid: c_int,
1542        startp: *const usize,
1543        countp: *const usize,
1544        stridep: *const isize,
1545        imapp: *const isize,
1546        ip: *mut c_uchar,
1547    ) -> c_int;
1548    pub fn nc_put_var_ubyte(ncid: c_int, varid: c_int, op: *const c_uchar) -> c_int;
1549    pub fn nc_get_var_ubyte(ncid: c_int, varid: c_int, ip: *mut c_uchar) -> c_int;
1550
1551    // #[cfg(feature = "")]
1552    pub fn nc_set_log_level(new_level: c_int) -> c_int;
1553
1554    pub fn nc_show_metadata(ncid: c_int) -> c_int;
1555
1556    pub fn nc_delete(path: *const c_char) -> c_int;
1557
1558    pub fn nc__create_mp(
1559        path: *const c_char,
1560        cmode: c_int,
1561        initialsz: usize,
1562        basepe: c_int,
1563        chunksizehintp: *mut usize,
1564        ncidp: *mut c_int,
1565    ) -> c_int;
1566    pub fn nc__open_mp(
1567        path: *const c_char,
1568        mode: c_int,
1569        basepe: c_int,
1570        chunksizehintp: *mut usize,
1571        ncidp: *mut c_int,
1572    ) -> c_int;
1573    pub fn nc_delete_mp(path: *const c_char, basepe: c_int) -> c_int;
1574    pub fn nc_set_base_pe(ncid: c_int, pe: c_int) -> c_int;
1575    pub fn nc_inq_base_pe(ncid: c_int, pe: *mut c_int) -> c_int;
1576    pub fn nctypelen(datatype: nc_type) -> c_int;
1577}
1578
1579/// Backward compatability
1580mod netcdf_2 {
1581    use super::*;
1582
1583    pub type nclong = c_int;
1584
1585    extern "C" {
1586        //#[cfg(feature = "..")]
1587        pub static mut ncerr: c_int;
1588        //#[cfg(feature = "..")]
1589        pub static mut ncopts: c_int;
1590
1591        pub fn nc_advise(cdf_routine_name: *const c_char, err: c_int, fmt: *const c_char, ...);
1592        pub fn nccreate(path: *const c_char, cmode: c_int) -> c_int;
1593        pub fn ncopen(path: *const c_char, mode: c_int) -> c_int;
1594        pub fn ncsetfill(ncid: c_int, fillmode: c_int) -> c_int;
1595        pub fn ncredef(ncid: c_int) -> c_int;
1596        pub fn ncendef(ncid: c_int) -> c_int;
1597        pub fn ncsync(ncid: c_int) -> c_int;
1598        pub fn ncabort(ncid: c_int) -> c_int;
1599        pub fn ncclose(ncid: c_int) -> c_int;
1600        pub fn ncinquire(
1601            ncid: c_int,
1602            ndimsp: *mut c_int,
1603            nvarsp: *mut c_int,
1604            nattsp: *mut c_int,
1605            unlimdimp: *mut c_int,
1606        ) -> c_int;
1607        pub fn ncdimdef(ncid: c_int, name: *const c_char, len: c_long) -> c_int;
1608        pub fn ncdimid(ncid: c_int, name: *const c_char) -> c_int;
1609        pub fn ncdiminq(ncid: c_int, dimid: c_int, name: *mut c_char, lenp: *mut c_long) -> c_int;
1610        pub fn ncdimrename(ncid: c_int, dimid: c_int, name: *const c_char) -> c_int;
1611        pub fn ncattput(
1612            ncid: c_int,
1613            varid: c_int,
1614            name: *const c_char,
1615            xtype: nc_type,
1616            len: c_int,
1617            op: *const c_void,
1618        ) -> c_int;
1619        pub fn ncattinq(
1620            ncid: c_int,
1621            varid: c_int,
1622            name: *const c_char,
1623            xtypep: *mut nc_type,
1624            lenp: *mut c_int,
1625        ) -> c_int;
1626        pub fn ncattget(ncid: c_int, varid: c_int, name: *const c_char, ip: *mut c_void) -> c_int;
1627        pub fn ncattcopy(
1628            ncid_in: c_int,
1629            varid_in: c_int,
1630            name: *const c_char,
1631            ncid_out: c_int,
1632            varid_out: c_int,
1633        ) -> c_int;
1634        pub fn ncattname(ncid: c_int, varid: c_int, attnum: c_int, name: *mut c_char) -> c_int;
1635        pub fn ncattrename(
1636            ncid: c_int,
1637            varid: c_int,
1638            name: *const c_char,
1639            newname: *const c_char,
1640        ) -> c_int;
1641        pub fn ncattdel(ncid: c_int, varid: c_int, name: *const c_char) -> c_int;
1642        pub fn ncvardef(
1643            ncid: c_int,
1644            name: *const c_char,
1645            xtype: nc_type,
1646            ndims: c_int,
1647            dimidsp: *const c_int,
1648        ) -> c_int;
1649        pub fn ncvarid(ncid: c_int, name: *const c_char) -> c_int;
1650        pub fn ncvarinq(
1651            ncid: c_int,
1652            varid: c_int,
1653            name: *mut c_char,
1654            xtypep: *mut nc_type,
1655            ndimsp: *mut c_int,
1656            dimidsp: *mut c_int,
1657            nattsp: *mut c_int,
1658        ) -> c_int;
1659        pub fn ncvarput1(
1660            ncid: c_int,
1661            varid: c_int,
1662            indexp: *const c_long,
1663            op: *const c_void,
1664        ) -> c_int;
1665        pub fn ncvarget1(
1666            ncid: c_int,
1667            varid: c_int,
1668            indexp: *const c_long,
1669            ip: *mut c_void,
1670        ) -> c_int;
1671        pub fn ncvarput(
1672            ncid: c_int,
1673            varid: c_int,
1674            startp: *const c_long,
1675            countp: *const c_long,
1676            op: *const c_void,
1677        ) -> c_int;
1678        pub fn ncvarget(
1679            ncid: c_int,
1680            varid: c_int,
1681            startp: *const c_long,
1682            countp: *const c_long,
1683            ip: *mut c_void,
1684        ) -> c_int;
1685        pub fn ncvarputs(
1686            ncid: c_int,
1687            varid: c_int,
1688            startp: *const c_long,
1689            countp: *const c_long,
1690            stridep: *const c_long,
1691            op: *const c_void,
1692        ) -> c_int;
1693        pub fn ncvargets(
1694            ncid: c_int,
1695            varid: c_int,
1696            startp: *const c_long,
1697            countp: *const c_long,
1698            stridep: *const c_long,
1699            ip: *mut c_void,
1700        ) -> c_int;
1701        pub fn ncvarputg(
1702            ncid: c_int,
1703            varid: c_int,
1704            startp: *const c_long,
1705            countp: *const c_long,
1706            stridep: *const c_long,
1707            imapp: *const c_long,
1708            op: *const c_void,
1709        ) -> c_int;
1710        pub fn ncvargetg(
1711            ncid: c_int,
1712            varid: c_int,
1713            startp: *const c_long,
1714            countp: *const c_long,
1715            stridep: *const c_long,
1716            imapp: *const c_long,
1717            ip: *mut c_void,
1718        ) -> c_int;
1719        pub fn ncvarrename(ncid: c_int, varid: c_int, name: *const c_char) -> c_int;
1720        pub fn ncrecinq(
1721            ncid: c_int,
1722            nrecvarsp: *mut c_int,
1723            recvaridsp: *mut c_int,
1724            recsizesp: *mut c_long,
1725        ) -> c_int;
1726        pub fn ncrecget(ncid: c_int, recnum: c_long, datap: *mut *mut c_void) -> c_int;
1727        pub fn ncrecput(ncid: c_int, recnum: c_long, datap: *const *mut c_void) -> c_int;
1728        #[cfg(feature = "4.6.2")]
1729        pub fn nc_initialize() -> c_int;
1730        pub fn nc_finalize() -> c_int;
1731
1732        #[cfg(feature = "4.9.2")]
1733        pub fn nc_rc_get(key: *const c_char) -> *mut c_char;
1734        #[cfg(feature = "4.9.2")]
1735        pub fn nc_rc_set(key: *const c_char, value: *const c_char) -> c_int;
1736    }
1737}
1738pub use netcdf_2::*;