source: XIOS/dev/dev_cmip6_omp/extern/src_netcdf4/ncx.h @ 1606

Last change on this file since 1606 was 409, checked in by ymipsl, 11 years ago

Add improved nectdf internal library src

YM

  • Property svn:eol-style set to native
File size: 23.0 KB
Line 
1/*
2 *      Copyright 1996, University Corporation for Atmospheric Research
3 *      See netcdf/COPYRIGHT file for copying and redistribution conditions.
4 */
5/* "$Id: ncx.h,v 1.65 2010/05/26 18:11:08 dmh Exp $" */
6
7#ifndef _NCX_H_
8#define _NCX_H_
9
10#include "ncdispatch.h"
11#include "ncio.h"
12#include "fbits.h"
13
14/*
15 * An external data representation interface.
16
17 *
18 * This started out as a general replacement for ONC XDR,
19 * specifically, the xdrmem family of functions.
20 *
21 * We eventually realized that we could write more portable
22 * code if we decoupled any association between the 'C' types
23 * and the external types. (XDR has this association between the 'C'
24 * types and the external representations, like xdr_int() takes
25 * an int argument and goes to an external int representation.)
26 * So, now there is a matrix of functions.
27 *
28 */
29
30#include <config.h> /* output of 'configure' */
31#include "rnd.h"
32#include <stddef.h> /* size_t */
33#include <errno.h>
34#include <sys/types.h> /* off_t */
35#include <ncdispatch.h>
36#define longlong long long
37
38#if defined(_CRAY) && !defined(_CRAYIEEE) && !defined(__crayx1)
39#define CRAYFLOAT 1 /* CRAY Floating point */
40#elif defined(_SX) && defined(_FLOAT2)  /* NEC SUPER-UX in CRAY mode */
41#define CRAYFLOAT 1 /* CRAY Floating point */
42#endif
43
44/*
45 * The integer return code for the conversion routines
46 * is 0 (ENOERR) when no error occured, or NC_ERANGE as appropriate
47 * for an overflow conversion.
48 */
49#ifndef ENOERR
50#define ENOERR 0
51#endif
52#ifndef NC_ERANGE
53#define NC_ERANGE (-60) /* N.B. must match value in netcdf.h */
54#endif
55#ifndef NC_ENOMEM
56#define NC_ENOMEM (-61) /* N.B. must match value in netcdf.h */
57#endif
58
59
60/*
61 * External sizes of the primitive elements.
62 */
63#define X_SIZEOF_CHAR           1
64#define X_SIZEOF_SHORT          2
65#define X_SIZEOF_INT            4       /* xdr_int */
66#if 0
67#define X_SIZEOF_LONG           8 */    /* xdr_long_long */
68#endif
69#define X_SIZEOF_FLOAT          4
70#define X_SIZEOF_DOUBLE         8
71
72/*
73 * For now, netcdf is limited to 32 bit sizes,
74 * If compiled with support for "large files", then
75 * netcdf will use a 64 bit off_t and it can then write a file
76 * using 64 bit offsets.
77 *  see also X_SIZE_MAX, X_OFF_MAX below
78 */
79#define X_SIZEOF_OFF_T          (sizeof(off_t))
80#define X_SIZEOF_SIZE_T         X_SIZEOF_INT
81
82/*
83 * limits of the external representation
84 */
85#define X_SCHAR_MIN     (-128)
86#define X_SCHAR_MAX     127
87#define X_UCHAR_MAX     255U
88#define X_SHORT_MIN     (-32768)
89#define X_SHRT_MIN      X_SHORT_MIN     /* alias compatible with limits.h */
90#define X_SHORT_MAX     32767
91#define X_SHRT_MAX      X_SHORT_MAX     /* alias compatible with limits.h */
92#define X_USHORT_MAX    65535U
93#define X_USHRT_MAX     X_USHORT_MAX    /* alias compatible with limits.h */
94#define X_INT_MIN       (-2147483647-1)
95#define X_INT_MAX       2147483647
96#define X_UINT_MAX      4294967295U
97#define X_LONGLONG_MIN  (-9223372036854775807LL-1LL)
98#define X_LONGLONG_MAX  9223372036854775807LL
99#define X_ULONGLONG_MAX 18446744073709551615ULL
100#define X_FLOAT_MAX     3.402823466e+38f
101#define X_FLOAT_MIN     (-X_FLOAT_MAX)
102#define X_FLT_MAX       X_FLOAT_MAX     /* alias compatible with limits.h */
103#if CRAYFLOAT
104/* ldexp(1. - ldexp(.5 , -46), 1024) */
105#define X_DOUBLE_MAX    1.79769313486230e+308
106#else
107/* scalb(1. - scalb(.5 , -52), 1024) */
108#define X_DOUBLE_MAX    1.7976931348623157e+308
109#endif
110#define X_DOUBLE_MIN    (-X_DOUBLE_MAX)
111#define X_DBL_MAX       X_DOUBLE_MAX    /* alias compatible with limits.h */
112
113#define X_SIZE_MAX      X_UINT_MAX
114#define X_OFF_MAX       X_INT_MAX
115
116
117/* Begin ncx_len */
118
119/*
120 * ncx_len_xxx() interfaces are defined as macros below,
121 * These give the length of an array of nelems of the type.
122 * N.B. The 'char' and 'short' interfaces give the X_ALIGNED length.
123 */
124#define X_ALIGN                 4       /* a.k.a. BYTES_PER_XDR_UNIT */
125
126#define ncx_len_char(nelems) \
127        _RNDUP((nelems), X_ALIGN)
128
129#define ncx_len_short(nelems) \
130        (((nelems) + (nelems)%2)  * X_SIZEOF_SHORT)
131
132#define ncx_len_int(nelems) \
133        ((nelems) * X_SIZEOF_INT)
134
135#define ncx_len_long(nelems) \
136        ((nelems) * X_SIZEOF_LONG)
137
138#define ncx_len_float(nelems) \
139        ((nelems) * X_SIZEOF_FLOAT)
140
141#define ncx_len_double(nelems) \
142        ((nelems) * X_SIZEOF_DOUBLE)
143
144/* End ncx_len */
145
146#if __CHAR_UNSIGNED__
147        /* 'char' is unsigned, declare ncbyte as 'signed char' */
148typedef signed char schar;
149
150#else
151        /* 'char' is signed */
152typedef signed char schar;
153
154#endif  /* __CHAR_UNSIGNED__ */
155
156/*
157 * Primitive numeric conversion functions.
158 * The `put' functions convert from native internal
159 * type to the external type, while the `get' functions
160 * convert from the external to the internal.
161 *
162 * These take the form
163 *      int ncx_get_{external_type}_{internal_type}(
164 *              const void *xp,
165 *              internal_type *ip
166 *      );
167 *      int ncx_put_{external_type}_{internal_type}(
168 *              void *xp,
169 *              const internal_type *ip
170 *      );
171 * where
172 *      `external_type' and `internal_type' chosen from
173                schar
174                uchar
175                short
176                ushort
177                int
178                uint
179                long
180                ulong
181                float
182                double
183 *
184 * Not all combinations make sense.
185 * We may not implement all combinations that make sense.
186 * The netcdf functions that use this ncx interface don't
187 * use these primitive conversion functions. They use the
188 * aggregate conversion functions declared below.
189 *
190 * Storage for a single element of external type is at the `void * xp'
191 * argument.
192 *
193 * Storage for a single element of internal type is at `ip' argument.
194 *
195 * These functions return 0 (ENOERR) when no error occured,
196 * or NC_ERANGE when the value being converted is too large.
197 * When NC_ERANGE occurs, an undefined (implementation dependent)
198 * conversion may have occured.
199 *
200 * Note that loss of precision may occur silently.
201 *
202 */
203
204#if 0
205extern int
206ncx_get_schar_schar(const void *xp, schar *ip);
207extern int
208ncx_get_schar_uchar(const void *xp, uchar *ip);
209extern int
210ncx_get_schar_short(const void *xp, short *ip);
211extern int
212ncx_get_schar_int(const void *xp, int *ip);
213extern int
214ncx_get_schar_long(const void *xp, long *ip);
215extern int
216ncx_get_schar_float(const void *xp, float *ip);
217extern int
218ncx_get_schar_double(const void *xp, double *ip);
219
220extern int
221ncx_put_schar_schar(void *xp, const schar *ip);
222extern int
223ncx_put_schar_uchar(void *xp, const uchar *ip);
224extern int
225ncx_put_schar_short(void *xp, const short *ip);
226extern int
227ncx_put_schar_int(void *xp, const int *ip);
228extern int
229ncx_put_schar_long(void *xp, const long *ip);
230extern int
231ncx_put_schar_float(void *xp, const float *ip);
232extern int
233ncx_put_schar_double(void *xp, const double *ip);
234#endif
235 
236
237extern int
238ncx_get_short_schar(const void *xp, schar *ip);
239extern int
240ncx_get_short_uchar(const void *xp, uchar *ip);
241extern int
242ncx_get_short_short(const void *xp, short *ip);
243extern int
244ncx_get_short_int(const void *xp, int *ip);
245extern int
246ncx_get_short_long(const void *xp, long *ip);
247extern int
248ncx_get_short_float(const void *xp, float *ip);
249extern int
250ncx_get_short_double(const void *xp, double *ip);
251
252extern int
253ncx_put_short_schar(void *xp, const schar *ip);
254extern int
255ncx_put_short_uchar(void *xp, const uchar *ip);
256extern int
257ncx_put_short_short(void *xp, const short *ip);
258extern int
259ncx_put_short_int(void *xp, const int *ip);
260extern int
261ncx_put_short_long(void *xp, const long *ip);
262extern int
263ncx_put_short_float(void *xp, const float *ip);
264extern int
265ncx_put_short_double(void *xp, const double *ip);
266 
267
268extern int
269ncx_get_int_schar(const void *xp, schar *ip);
270extern int
271ncx_get_int_uchar(const void *xp, uchar *ip);
272extern int
273ncx_get_int_short(const void *xp, short *ip);
274extern int
275ncx_get_int_int(const void *xp, int *ip);
276extern int
277ncx_get_int_long(const void *xp, long *ip);
278extern int
279ncx_get_int_float(const void *xp, float *ip);
280extern int
281ncx_get_int_double(const void *xp, double *ip);
282
283extern int
284ncx_put_int_schar(void *xp, const schar *ip);
285extern int
286ncx_put_int_uchar(void *xp, const uchar *ip);
287extern int
288ncx_put_int_short(void *xp, const short *ip);
289extern int
290ncx_put_int_int(void *xp, const int *ip);
291extern int
292ncx_put_int_long(void *xp, const long *ip);
293extern int
294ncx_put_int_float(void *xp, const float *ip);
295extern int
296ncx_put_int_double(void *xp, const double *ip);
297 
298
299extern int
300ncx_get_float_schar(const void *xp, schar *ip);
301extern int
302ncx_get_float_uchar(const void *xp, uchar *ip);
303extern int
304ncx_get_float_short(const void *xp, short *ip);
305extern int
306ncx_get_float_int(const void *xp, int *ip);
307extern int
308ncx_get_float_long(const void *xp, long *ip);
309extern int
310ncx_get_float_float(const void *xp, float *ip);
311extern int
312ncx_get_float_double(const void *xp, double *ip);
313
314extern int
315ncx_put_float_schar(void *xp, const schar *ip);
316extern int
317ncx_put_float_uchar(void *xp, const uchar *ip);
318extern int
319ncx_put_float_short(void *xp, const short *ip);
320extern int
321ncx_put_float_int(void *xp, const int *ip);
322extern int
323ncx_put_float_long(void *xp, const long *ip);
324extern int
325ncx_put_float_float(void *xp, const float *ip);
326extern int
327ncx_put_float_double(void *xp, const double *ip);
328 
329
330extern int
331ncx_get_double_schar(const void *xp, schar *ip);
332extern int
333ncx_get_double_uchar(const void *xp, uchar *ip);
334extern int
335ncx_get_double_short(const void *xp, short *ip);
336extern int
337ncx_get_double_int(const void *xp, int *ip);
338extern int
339ncx_get_double_long(const void *xp, long *ip);
340extern int
341ncx_get_double_float(const void *xp, float *ip);
342extern int
343ncx_get_double_double(const void *xp, double *ip);
344
345extern int
346ncx_put_double_schar(void *xp, const schar *ip);
347extern int
348ncx_put_double_uchar(void *xp, const uchar *ip);
349extern int
350ncx_put_double_short(void *xp, const short *ip);
351extern int
352ncx_put_double_int(void *xp, const int *ip);
353extern int
354ncx_put_double_long(void *xp, const long *ip);
355extern int
356ncx_put_double_float(void *xp, const float *ip);
357extern int
358ncx_put_double_double(void *xp, const double *ip);
359 
360
361/*
362 * Other primitive conversion functions
363 * N.B. slightly different interface
364 * Used by netcdf.
365 */
366
367/* ncx_get_int_size_t */
368extern int
369ncx_get_size_t(const void **xpp, size_t *ulp);
370/* ncx_get_int_off_t */
371extern int
372ncx_get_off_t(const void **xpp, off_t *lp, size_t sizeof_off_t);
373
374/* ncx_put_int_size_t */
375extern int
376ncx_put_size_t(void **xpp, const size_t *ulp);
377/* ncx_put_int_off_t */
378extern int
379ncx_put_off_t(void **xpp, const off_t *lp, size_t sizeof_off_t);
380
381
382/*
383 * Aggregate numeric conversion functions.
384 * Convert an array.  Replaces xdr_array(...).
385 * These functions are used by netcdf. Unlike the xdr
386 * interface, we optimize for aggregate conversions.
387 * This functions should be implemented to take advantage
388 * of multiple processor / parallel hardware where available.
389 *
390 * These take the form
391 *      int ncx_getn_{external_type}_{internal_type}(
392 *              const void *xpp,
393 *              size_t nelems,
394 *              internal_type *ip
395 *      );
396 *      int ncx_putn_{external_type}_{internal_type}(
397 *              void **xpp,
398 *              size_t nelems,
399 *              const internal_type *ip
400 *      );
401 * Where the types are as in the primitive numeric conversion functions.
402 *
403 * The value of the pointer to pointer argument, *xpp, is
404 * expected to reference storage for `nelems' of the external
405 * type.  On return, it modified to reference just past the last
406 * converted external element.
407 *
408 * The types whose external size is less than X_ALIGN also have `pad'
409 * interfaces. These round (and zero fill on put) *xpp up to X_ALIGN
410 * boundaries. (This is the usual xdr behavior.)
411 *
412 * The `ip' argument should point to an array of `nelems' of
413 * internal_type.
414 *
415 * Range errors (NC_ERANGE) for a individual values in the array
416 * DO NOT terminate the array conversion. All elements are converted,
417 * with some having undefined values.
418 * If any range error occurs, the function returns NC_ERANGE.
419 *
420 */
421
422extern int
423ncx_getn_schar_schar(const void **xpp, size_t nelems, schar *ip);
424extern int
425ncx_getn_schar_uchar(const void **xpp, size_t nelems, uchar *ip);
426extern int
427ncx_getn_schar_short(const void **xpp, size_t nelems, short *ip);
428extern int
429ncx_getn_schar_int(const void **xpp, size_t nelems, int *ip);
430extern int
431ncx_getn_schar_long(const void **xpp, size_t nelems, long *ip);
432extern int
433ncx_getn_schar_float(const void **xpp, size_t nelems, float *ip);
434extern int
435ncx_getn_schar_double(const void **xpp, size_t nelems, double *ip);
436extern int
437ncx_getn_schar_uint(const void **xpp, size_t nelems, unsigned int *ip);
438extern int
439ncx_getn_schar_longlong(const void **xpp, size_t nelems, longlong *ip);
440extern int
441ncx_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
442
443extern int
444ncx_pad_getn_schar_schar(const void **xpp, size_t nelems, schar *ip);
445extern int
446ncx_pad_getn_schar_uchar(const void **xpp, size_t nelems, uchar *ip);
447extern int
448ncx_pad_getn_schar_short(const void **xpp, size_t nelems, short *ip);
449extern int
450ncx_pad_getn_schar_int(const void **xpp, size_t nelems, int *ip);
451extern int
452ncx_pad_getn_schar_long(const void **xpp, size_t nelems, long *ip);
453extern int
454ncx_pad_getn_schar_float(const void **xpp, size_t nelems, float *ip);
455extern int
456ncx_pad_getn_schar_double(const void **xpp, size_t nelems, double *ip);
457extern int
458ncx_pad_getn_schar_uint(const void **xpp, size_t nelems, unsigned int *ip);
459extern int
460ncx_pad_getn_schar_longlong(const void **xpp, size_t nelems, longlong *ip);
461extern int
462ncx_pad_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
463
464extern int
465ncx_putn_schar_schar(void **xpp, size_t nelems, const schar *ip);
466extern int
467ncx_putn_schar_uchar(void **xpp, size_t nelems, const uchar *ip);
468extern int
469ncx_putn_schar_short(void **xpp, size_t nelems, const short *ip);
470extern int
471ncx_putn_schar_int(void **xpp, size_t nelems, const int *ip);
472extern int
473ncx_putn_schar_long(void **xpp, size_t nelems, const long *ip);
474extern int
475ncx_putn_schar_float(void **xpp, size_t nelems, const float *ip);
476extern int
477ncx_putn_schar_double(void **xpp, size_t nelems, const double *ip);
478extern int
479ncx_putn_schar_uint(void **xpp, size_t nelems, const unsigned int *ip);
480extern int
481ncx_putn_schar_longlong(void **xpp, size_t nelems, const longlong *ip);
482extern int
483ncx_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
484 
485extern int
486ncx_pad_putn_schar_schar(void **xpp, size_t nelems, const schar *ip);
487extern int
488ncx_pad_putn_schar_uchar(void **xpp, size_t nelems, const uchar *ip);
489extern int
490ncx_pad_putn_schar_short(void **xpp, size_t nelems, const short *ip);
491extern int
492ncx_pad_putn_schar_int(void **xpp, size_t nelems, const int *ip);
493extern int
494ncx_pad_putn_schar_long(void **xpp, size_t nelems, const long *ip);
495extern int
496ncx_pad_putn_schar_float(void **xpp, size_t nelems, const float *ip);
497extern int
498ncx_pad_putn_schar_double(void **xpp, size_t nelems, const double *ip);
499extern int
500ncx_pad_putn_schar_uint(void **xpp, size_t nelems, const unsigned int *ip);
501extern int
502ncx_pad_putn_schar_longlong(void **xpp, size_t nelems, const longlong *ip);
503extern int
504ncx_pad_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
505
506
507extern int
508ncx_getn_short_schar(const void **xpp, size_t nelems, schar *ip);
509extern int
510ncx_getn_short_uchar(const void **xpp, size_t nelems, uchar *ip);
511extern int
512ncx_getn_short_short(const void **xpp, size_t nelems, short *ip);
513extern int
514ncx_getn_short_int(const void **xpp, size_t nelems, int *ip);
515extern int
516ncx_getn_short_long(const void **xpp, size_t nelems, long *ip);
517extern int
518ncx_getn_short_float(const void **xpp, size_t nelems, float *ip);
519extern int
520ncx_getn_short_double(const void **xpp, size_t nelems, double *ip);
521extern int
522ncx_getn_short_uint(const void **xpp, size_t nelems, unsigned int *ip);
523extern int
524ncx_getn_short_longlong(const void **xpp, size_t nelems, longlong *ip);
525extern int
526ncx_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
527
528extern int
529ncx_pad_getn_short_schar(const void **xpp, size_t nelems, schar *ip);
530extern int
531ncx_pad_getn_short_uchar(const void **xpp, size_t nelems, uchar *ip);
532extern int
533ncx_pad_getn_short_short(const void **xpp, size_t nelems, short *ip);
534extern int
535ncx_pad_getn_short_int(const void **xpp, size_t nelems, int *ip);
536extern int
537ncx_pad_getn_short_long(const void **xpp, size_t nelems, long *ip);
538extern int
539ncx_pad_getn_short_float(const void **xpp, size_t nelems, float *ip);
540extern int
541ncx_pad_getn_short_double(const void **xpp, size_t nelems, double *ip);
542extern int
543ncx_pad_getn_short_uint(const void **xpp, size_t nelems, unsigned int *ip);
544extern int
545ncx_pad_getn_short_longlong(const void **xpp, size_t nelems, longlong *ip);
546extern int
547ncx_pad_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
548
549extern int
550ncx_putn_short_schar(void **xpp, size_t nelems, const schar *ip);
551extern int
552ncx_putn_short_uchar(void **xpp, size_t nelems, const uchar *ip);
553extern int
554ncx_putn_short_short(void **xpp, size_t nelems, const short *ip);
555extern int
556ncx_putn_short_int(void **xpp, size_t nelems, const int *ip);
557extern int
558ncx_putn_short_long(void **xpp, size_t nelems, const long *ip);
559extern int
560ncx_putn_short_float(void **xpp, size_t nelems, const float *ip);
561extern int
562ncx_putn_short_double(void **xpp, size_t nelems, const double *ip);
563extern int
564ncx_putn_short_uint(void **xpp, size_t nelems, const unsigned int *ip);
565extern int
566ncx_putn_short_longlong(void **xpp, size_t nelems, const longlong *ip);
567extern int
568ncx_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
569 
570extern int
571ncx_pad_putn_short_schar(void **xpp, size_t nelems, const schar *ip);
572extern int
573ncx_pad_putn_short_uchar(void **xpp, size_t nelems, const uchar *ip);
574extern int
575ncx_pad_putn_short_short(void **xpp, size_t nelems, const short *ip);
576extern int
577ncx_pad_putn_short_int(void **xpp, size_t nelems, const int *ip);
578extern int
579ncx_pad_putn_short_long(void **xpp, size_t nelems, const long *ip);
580extern int
581ncx_pad_putn_short_float(void **xpp, size_t nelems, const float *ip);
582extern int
583ncx_pad_putn_short_double(void **xpp, size_t nelems, const double *ip);
584extern int
585ncx_pad_putn_short_uint(void **xpp, size_t nelems, const unsigned int *ip);
586extern int
587ncx_pad_putn_short_longlong(void **xpp, size_t nelems, const longlong *ip);
588extern int
589ncx_pad_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
590
591
592extern int
593ncx_getn_int_schar(const void **xpp, size_t nelems, schar *ip);
594extern int
595ncx_getn_int_uchar(const void **xpp, size_t nelems, uchar *ip);
596extern int
597ncx_getn_int_short(const void **xpp, size_t nelems, short *ip);
598extern int
599ncx_getn_int_int(const void **xpp, size_t nelems, int *ip);
600extern int
601ncx_getn_int_long(const void **xpp, size_t nelems, long *ip);
602extern int
603ncx_getn_int_float(const void **xpp, size_t nelems, float *ip);
604extern int
605ncx_getn_int_double(const void **xpp, size_t nelems, double *ip);
606extern int
607ncx_getn_int_uint(const void **xpp, size_t nelems, unsigned int *ip);
608extern int
609ncx_getn_int_longlong(const void **xpp, size_t nelems, longlong *ip);
610extern int
611ncx_getn_int_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
612
613extern int
614ncx_putn_int_schar(void **xpp, size_t nelems, const schar *ip);
615extern int
616ncx_putn_int_uchar(void **xpp, size_t nelems, const uchar *ip);
617extern int
618ncx_putn_int_short(void **xpp, size_t nelems, const short *ip);
619extern int
620ncx_putn_int_int(void **xpp, size_t nelems, const int *ip);
621extern int
622ncx_putn_int_long(void **xpp, size_t nelems, const long *ip);
623extern int
624ncx_putn_int_float(void **xpp, size_t nelems, const float *ip);
625extern int
626ncx_putn_int_double(void **xpp, size_t nelems, const double *ip);
627extern int
628ncx_putn_int_uint(void **xpp, size_t nelems, const unsigned int *ip);
629extern int
630ncx_putn_int_longlong(void **xpp, size_t nelems, const longlong *ip);
631extern int
632ncx_putn_int_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
633 
634
635extern int
636ncx_getn_float_schar(const void **xpp, size_t nelems, schar *ip);
637extern int
638ncx_getn_float_uchar(const void **xpp, size_t nelems, uchar *ip);
639extern int
640ncx_getn_float_short(const void **xpp, size_t nelems, short *ip);
641extern int
642ncx_getn_float_int(const void **xpp, size_t nelems, int *ip);
643extern int
644ncx_getn_float_long(const void **xpp, size_t nelems, long *ip);
645extern int
646ncx_getn_float_float(const void **xpp, size_t nelems, float *ip);
647extern int
648ncx_getn_float_double(const void **xpp, size_t nelems, double *ip);
649extern int
650ncx_getn_float_uint(const void **xpp, size_t nelems, unsigned int *ip);
651extern int
652ncx_getn_float_longlong(const void **xpp, size_t nelems, longlong *ip);
653extern int
654ncx_getn_float_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
655
656extern int
657ncx_putn_float_schar(void **xpp, size_t nelems, const schar *ip);
658extern int
659ncx_putn_float_uchar(void **xpp, size_t nelems, const uchar *ip);
660extern int
661ncx_putn_float_short(void **xpp, size_t nelems, const short *ip);
662extern int
663ncx_putn_float_int(void **xpp, size_t nelems, const int *ip);
664extern int
665ncx_putn_float_long(void **xpp, size_t nelems, const long *ip);
666extern int
667ncx_putn_float_float(void **xpp, size_t nelems, const float *ip);
668extern int
669ncx_putn_float_double(void **xpp, size_t nelems, const double *ip);
670extern int
671ncx_putn_float_uint(void **xpp, size_t nelems, const unsigned int *ip);
672extern int
673ncx_putn_float_longlong(void **xpp, size_t nelems, const longlong *ip);
674extern int
675ncx_putn_float_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
676 
677
678extern int
679ncx_getn_double_schar(const void **xpp, size_t nelems, schar *ip);
680extern int
681ncx_getn_double_uchar(const void **xpp, size_t nelems, uchar *ip);
682extern int
683ncx_getn_double_short(const void **xpp, size_t nelems, short *ip);
684extern int
685ncx_getn_double_int(const void **xpp, size_t nelems, int *ip);
686extern int
687ncx_getn_double_long(const void **xpp, size_t nelems, long *ip);
688extern int
689ncx_getn_double_float(const void **xpp, size_t nelems, float *ip);
690extern int
691ncx_getn_double_double(const void **xpp, size_t nelems, double *ip);
692extern int
693ncx_getn_double_uint(const void **xpp, size_t nelems, unsigned int *ip);
694extern int
695ncx_getn_double_longlong(const void **xpp, size_t nelems, longlong *ip);
696extern int
697ncx_getn_double_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
698
699extern int
700ncx_putn_double_schar(void **xpp, size_t nelems, const schar *ip);
701extern int
702ncx_putn_double_uchar(void **xpp, size_t nelems, const uchar *ip);
703extern int
704ncx_putn_double_short(void **xpp, size_t nelems, const short *ip);
705extern int
706ncx_putn_double_int(void **xpp, size_t nelems, const int *ip);
707extern int
708ncx_putn_double_long(void **xpp, size_t nelems, const long *ip);
709extern int
710ncx_putn_double_float(void **xpp, size_t nelems, const float *ip);
711extern int
712ncx_putn_double_double(void **xpp, size_t nelems, const double *ip);
713extern int
714ncx_putn_double_uint(void **xpp, size_t nelems, const unsigned int *ip);
715extern int
716ncx_putn_double_longlong(void **xpp, size_t nelems, const longlong *ip);
717extern int
718ncx_putn_double_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
719 
720
721/*
722 * Other aggregate conversion functions.
723 */
724
725/* read ASCII characters */
726extern int
727ncx_getn_text(const void **xpp, size_t nchars, char *cp);
728extern int
729ncx_pad_getn_text(const void **xpp, size_t nchars, char *cp);
730
731/* write ASCII characters */
732extern int
733ncx_putn_text(void **xpp, size_t nchars, const char *cp);
734extern int
735ncx_pad_putn_text(void **xpp, size_t nchars, const char *cp);
736
737/* for symmetry */
738#define ncx_getn_char_char(xpp, nelems, fillp) ncx_getn_text(xpp, nelems, fillp)
739#define ncx_putn_char_char(xpp, nelems, fillp) ncx_putn_text(xpp, nelems, fillp)
740
741/* read opaque data */
742extern int
743ncx_getn_void(const void **xpp, size_t nchars, void *vp);
744extern int
745ncx_pad_getn_void(const void **xpp, size_t nchars, void *vp);
746
747/* write opaque data */
748extern int
749ncx_putn_void(void **xpp, size_t nchars, const void *vp);
750extern int
751ncx_pad_putn_void(void **xpp, size_t nchars, const void *vp);
752
753#endif /* _NCX_H_ */
Note: See TracBrowser for help on using the repository browser.