123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753 |
- /*
- * Copyright 1996, University Corporation for Atmospheric Research
- * See netcdf/COPYRIGHT file for copying and redistribution conditions.
- */
- /* "$Id: ncx.h,v 1.65 2010/05/26 18:11:08 dmh Exp $" */
- #ifndef _NCX_H_
- #define _NCX_H_
- #include "ncdispatch.h"
- #include "ncio.h"
- #include "fbits.h"
- /*
- * An external data representation interface.
- *
- * This started out as a general replacement for ONC XDR,
- * specifically, the xdrmem family of functions.
- *
- * We eventually realized that we could write more portable
- * code if we decoupled any association between the 'C' types
- * and the external types. (XDR has this association between the 'C'
- * types and the external representations, like xdr_int() takes
- * an int argument and goes to an external int representation.)
- * So, now there is a matrix of functions.
- *
- */
- #include <config.h> /* output of 'configure' */
- #include "rnd.h"
- #include <stddef.h> /* size_t */
- #include <errno.h>
- #include <sys/types.h> /* off_t */
- #include <ncdispatch.h>
- #define longlong long long
- #if defined(_CRAY) && !defined(_CRAYIEEE) && !defined(__crayx1)
- #define CRAYFLOAT 1 /* CRAY Floating point */
- #elif defined(_SX) && defined(_FLOAT2) /* NEC SUPER-UX in CRAY mode */
- #define CRAYFLOAT 1 /* CRAY Floating point */
- #endif
- /*
- * The integer return code for the conversion routines
- * is 0 (ENOERR) when no error occured, or NC_ERANGE as appropriate
- * for an overflow conversion.
- */
- #ifndef ENOERR
- #define ENOERR 0
- #endif
- #ifndef NC_ERANGE
- #define NC_ERANGE (-60) /* N.B. must match value in netcdf.h */
- #endif
- #ifndef NC_ENOMEM
- #define NC_ENOMEM (-61) /* N.B. must match value in netcdf.h */
- #endif
- /*
- * External sizes of the primitive elements.
- */
- #define X_SIZEOF_CHAR 1
- #define X_SIZEOF_SHORT 2
- #define X_SIZEOF_INT 4 /* xdr_int */
- #if 0
- #define X_SIZEOF_LONG 8 */ /* xdr_long_long */
- #endif
- #define X_SIZEOF_FLOAT 4
- #define X_SIZEOF_DOUBLE 8
- /*
- * For now, netcdf is limited to 32 bit sizes,
- * If compiled with support for "large files", then
- * netcdf will use a 64 bit off_t and it can then write a file
- * using 64 bit offsets.
- * see also X_SIZE_MAX, X_OFF_MAX below
- */
- #define X_SIZEOF_OFF_T (sizeof(off_t))
- #define X_SIZEOF_SIZE_T X_SIZEOF_INT
- /*
- * limits of the external representation
- */
- #define X_SCHAR_MIN (-128)
- #define X_SCHAR_MAX 127
- #define X_UCHAR_MAX 255U
- #define X_SHORT_MIN (-32768)
- #define X_SHRT_MIN X_SHORT_MIN /* alias compatible with limits.h */
- #define X_SHORT_MAX 32767
- #define X_SHRT_MAX X_SHORT_MAX /* alias compatible with limits.h */
- #define X_USHORT_MAX 65535U
- #define X_USHRT_MAX X_USHORT_MAX /* alias compatible with limits.h */
- #define X_INT_MIN (-2147483647-1)
- #define X_INT_MAX 2147483647
- #define X_UINT_MAX 4294967295U
- #define X_LONGLONG_MIN (-9223372036854775807LL-1LL)
- #define X_LONGLONG_MAX 9223372036854775807LL
- #define X_ULONGLONG_MAX 18446744073709551615ULL
- #define X_FLOAT_MAX 3.402823466e+38f
- #define X_FLOAT_MIN (-X_FLOAT_MAX)
- #define X_FLT_MAX X_FLOAT_MAX /* alias compatible with limits.h */
- #if CRAYFLOAT
- /* ldexp(1. - ldexp(.5 , -46), 1024) */
- #define X_DOUBLE_MAX 1.79769313486230e+308
- #else
- /* scalb(1. - scalb(.5 , -52), 1024) */
- #define X_DOUBLE_MAX 1.7976931348623157e+308
- #endif
- #define X_DOUBLE_MIN (-X_DOUBLE_MAX)
- #define X_DBL_MAX X_DOUBLE_MAX /* alias compatible with limits.h */
- #define X_SIZE_MAX X_UINT_MAX
- #define X_OFF_MAX X_INT_MAX
- /* Begin ncx_len */
- /*
- * ncx_len_xxx() interfaces are defined as macros below,
- * These give the length of an array of nelems of the type.
- * N.B. The 'char' and 'short' interfaces give the X_ALIGNED length.
- */
- #define X_ALIGN 4 /* a.k.a. BYTES_PER_XDR_UNIT */
- #define ncx_len_char(nelems) \
- _RNDUP((nelems), X_ALIGN)
- #define ncx_len_short(nelems) \
- (((nelems) + (nelems)%2) * X_SIZEOF_SHORT)
- #define ncx_len_int(nelems) \
- ((nelems) * X_SIZEOF_INT)
- #define ncx_len_long(nelems) \
- ((nelems) * X_SIZEOF_LONG)
- #define ncx_len_float(nelems) \
- ((nelems) * X_SIZEOF_FLOAT)
- #define ncx_len_double(nelems) \
- ((nelems) * X_SIZEOF_DOUBLE)
- /* End ncx_len */
- #if __CHAR_UNSIGNED__
- /* 'char' is unsigned, declare ncbyte as 'signed char' */
- typedef signed char schar;
- #else
- /* 'char' is signed */
- typedef signed char schar;
- #endif /* __CHAR_UNSIGNED__ */
- /*
- * Primitive numeric conversion functions.
- * The `put' functions convert from native internal
- * type to the external type, while the `get' functions
- * convert from the external to the internal.
- *
- * These take the form
- * int ncx_get_{external_type}_{internal_type}(
- * const void *xp,
- * internal_type *ip
- * );
- * int ncx_put_{external_type}_{internal_type}(
- * void *xp,
- * const internal_type *ip
- * );
- * where
- * `external_type' and `internal_type' chosen from
- schar
- uchar
- short
- ushort
- int
- uint
- long
- ulong
- float
- double
- *
- * Not all combinations make sense.
- * We may not implement all combinations that make sense.
- * The netcdf functions that use this ncx interface don't
- * use these primitive conversion functions. They use the
- * aggregate conversion functions declared below.
- *
- * Storage for a single element of external type is at the `void * xp'
- * argument.
- *
- * Storage for a single element of internal type is at `ip' argument.
- *
- * These functions return 0 (ENOERR) when no error occured,
- * or NC_ERANGE when the value being converted is too large.
- * When NC_ERANGE occurs, an undefined (implementation dependent)
- * conversion may have occured.
- *
- * Note that loss of precision may occur silently.
- *
- */
- #if 0
- extern int
- ncx_get_schar_schar(const void *xp, schar *ip);
- extern int
- ncx_get_schar_uchar(const void *xp, uchar *ip);
- extern int
- ncx_get_schar_short(const void *xp, short *ip);
- extern int
- ncx_get_schar_int(const void *xp, int *ip);
- extern int
- ncx_get_schar_long(const void *xp, long *ip);
- extern int
- ncx_get_schar_float(const void *xp, float *ip);
- extern int
- ncx_get_schar_double(const void *xp, double *ip);
- extern int
- ncx_put_schar_schar(void *xp, const schar *ip);
- extern int
- ncx_put_schar_uchar(void *xp, const uchar *ip);
- extern int
- ncx_put_schar_short(void *xp, const short *ip);
- extern int
- ncx_put_schar_int(void *xp, const int *ip);
- extern int
- ncx_put_schar_long(void *xp, const long *ip);
- extern int
- ncx_put_schar_float(void *xp, const float *ip);
- extern int
- ncx_put_schar_double(void *xp, const double *ip);
- #endif
-
- extern int
- ncx_get_short_schar(const void *xp, schar *ip);
- extern int
- ncx_get_short_uchar(const void *xp, uchar *ip);
- extern int
- ncx_get_short_short(const void *xp, short *ip);
- extern int
- ncx_get_short_int(const void *xp, int *ip);
- extern int
- ncx_get_short_long(const void *xp, long *ip);
- extern int
- ncx_get_short_float(const void *xp, float *ip);
- extern int
- ncx_get_short_double(const void *xp, double *ip);
- extern int
- ncx_put_short_schar(void *xp, const schar *ip);
- extern int
- ncx_put_short_uchar(void *xp, const uchar *ip);
- extern int
- ncx_put_short_short(void *xp, const short *ip);
- extern int
- ncx_put_short_int(void *xp, const int *ip);
- extern int
- ncx_put_short_long(void *xp, const long *ip);
- extern int
- ncx_put_short_float(void *xp, const float *ip);
- extern int
- ncx_put_short_double(void *xp, const double *ip);
-
- extern int
- ncx_get_int_schar(const void *xp, schar *ip);
- extern int
- ncx_get_int_uchar(const void *xp, uchar *ip);
- extern int
- ncx_get_int_short(const void *xp, short *ip);
- extern int
- ncx_get_int_int(const void *xp, int *ip);
- extern int
- ncx_get_int_long(const void *xp, long *ip);
- extern int
- ncx_get_int_float(const void *xp, float *ip);
- extern int
- ncx_get_int_double(const void *xp, double *ip);
- extern int
- ncx_put_int_schar(void *xp, const schar *ip);
- extern int
- ncx_put_int_uchar(void *xp, const uchar *ip);
- extern int
- ncx_put_int_short(void *xp, const short *ip);
- extern int
- ncx_put_int_int(void *xp, const int *ip);
- extern int
- ncx_put_int_long(void *xp, const long *ip);
- extern int
- ncx_put_int_float(void *xp, const float *ip);
- extern int
- ncx_put_int_double(void *xp, const double *ip);
-
- extern int
- ncx_get_float_schar(const void *xp, schar *ip);
- extern int
- ncx_get_float_uchar(const void *xp, uchar *ip);
- extern int
- ncx_get_float_short(const void *xp, short *ip);
- extern int
- ncx_get_float_int(const void *xp, int *ip);
- extern int
- ncx_get_float_long(const void *xp, long *ip);
- extern int
- ncx_get_float_float(const void *xp, float *ip);
- extern int
- ncx_get_float_double(const void *xp, double *ip);
- extern int
- ncx_put_float_schar(void *xp, const schar *ip);
- extern int
- ncx_put_float_uchar(void *xp, const uchar *ip);
- extern int
- ncx_put_float_short(void *xp, const short *ip);
- extern int
- ncx_put_float_int(void *xp, const int *ip);
- extern int
- ncx_put_float_long(void *xp, const long *ip);
- extern int
- ncx_put_float_float(void *xp, const float *ip);
- extern int
- ncx_put_float_double(void *xp, const double *ip);
-
- extern int
- ncx_get_double_schar(const void *xp, schar *ip);
- extern int
- ncx_get_double_uchar(const void *xp, uchar *ip);
- extern int
- ncx_get_double_short(const void *xp, short *ip);
- extern int
- ncx_get_double_int(const void *xp, int *ip);
- extern int
- ncx_get_double_long(const void *xp, long *ip);
- extern int
- ncx_get_double_float(const void *xp, float *ip);
- extern int
- ncx_get_double_double(const void *xp, double *ip);
- extern int
- ncx_put_double_schar(void *xp, const schar *ip);
- extern int
- ncx_put_double_uchar(void *xp, const uchar *ip);
- extern int
- ncx_put_double_short(void *xp, const short *ip);
- extern int
- ncx_put_double_int(void *xp, const int *ip);
- extern int
- ncx_put_double_long(void *xp, const long *ip);
- extern int
- ncx_put_double_float(void *xp, const float *ip);
- extern int
- ncx_put_double_double(void *xp, const double *ip);
-
- /*
- * Other primitive conversion functions
- * N.B. slightly different interface
- * Used by netcdf.
- */
- /* ncx_get_int_size_t */
- extern int
- ncx_get_size_t(const void **xpp, size_t *ulp);
- /* ncx_get_int_off_t */
- extern int
- ncx_get_off_t(const void **xpp, off_t *lp, size_t sizeof_off_t);
- /* ncx_put_int_size_t */
- extern int
- ncx_put_size_t(void **xpp, const size_t *ulp);
- /* ncx_put_int_off_t */
- extern int
- ncx_put_off_t(void **xpp, const off_t *lp, size_t sizeof_off_t);
- /*
- * Aggregate numeric conversion functions.
- * Convert an array. Replaces xdr_array(...).
- * These functions are used by netcdf. Unlike the xdr
- * interface, we optimize for aggregate conversions.
- * This functions should be implemented to take advantage
- * of multiple processor / parallel hardware where available.
- *
- * These take the form
- * int ncx_getn_{external_type}_{internal_type}(
- * const void *xpp,
- * size_t nelems,
- * internal_type *ip
- * );
- * int ncx_putn_{external_type}_{internal_type}(
- * void **xpp,
- * size_t nelems,
- * const internal_type *ip
- * );
- * Where the types are as in the primitive numeric conversion functions.
- *
- * The value of the pointer to pointer argument, *xpp, is
- * expected to reference storage for `nelems' of the external
- * type. On return, it modified to reference just past the last
- * converted external element.
- *
- * The types whose external size is less than X_ALIGN also have `pad'
- * interfaces. These round (and zero fill on put) *xpp up to X_ALIGN
- * boundaries. (This is the usual xdr behavior.)
- *
- * The `ip' argument should point to an array of `nelems' of
- * internal_type.
- *
- * Range errors (NC_ERANGE) for a individual values in the array
- * DO NOT terminate the array conversion. All elements are converted,
- * with some having undefined values.
- * If any range error occurs, the function returns NC_ERANGE.
- *
- */
- extern int
- ncx_getn_schar_schar(const void **xpp, size_t nelems, schar *ip);
- extern int
- ncx_getn_schar_uchar(const void **xpp, size_t nelems, uchar *ip);
- extern int
- ncx_getn_schar_short(const void **xpp, size_t nelems, short *ip);
- extern int
- ncx_getn_schar_int(const void **xpp, size_t nelems, int *ip);
- extern int
- ncx_getn_schar_long(const void **xpp, size_t nelems, long *ip);
- extern int
- ncx_getn_schar_float(const void **xpp, size_t nelems, float *ip);
- extern int
- ncx_getn_schar_double(const void **xpp, size_t nelems, double *ip);
- extern int
- ncx_getn_schar_uint(const void **xpp, size_t nelems, unsigned int *ip);
- extern int
- ncx_getn_schar_longlong(const void **xpp, size_t nelems, longlong *ip);
- extern int
- ncx_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
- extern int
- ncx_pad_getn_schar_schar(const void **xpp, size_t nelems, schar *ip);
- extern int
- ncx_pad_getn_schar_uchar(const void **xpp, size_t nelems, uchar *ip);
- extern int
- ncx_pad_getn_schar_short(const void **xpp, size_t nelems, short *ip);
- extern int
- ncx_pad_getn_schar_int(const void **xpp, size_t nelems, int *ip);
- extern int
- ncx_pad_getn_schar_long(const void **xpp, size_t nelems, long *ip);
- extern int
- ncx_pad_getn_schar_float(const void **xpp, size_t nelems, float *ip);
- extern int
- ncx_pad_getn_schar_double(const void **xpp, size_t nelems, double *ip);
- extern int
- ncx_pad_getn_schar_uint(const void **xpp, size_t nelems, unsigned int *ip);
- extern int
- ncx_pad_getn_schar_longlong(const void **xpp, size_t nelems, longlong *ip);
- extern int
- ncx_pad_getn_schar_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
- extern int
- ncx_putn_schar_schar(void **xpp, size_t nelems, const schar *ip);
- extern int
- ncx_putn_schar_uchar(void **xpp, size_t nelems, const uchar *ip);
- extern int
- ncx_putn_schar_short(void **xpp, size_t nelems, const short *ip);
- extern int
- ncx_putn_schar_int(void **xpp, size_t nelems, const int *ip);
- extern int
- ncx_putn_schar_long(void **xpp, size_t nelems, const long *ip);
- extern int
- ncx_putn_schar_float(void **xpp, size_t nelems, const float *ip);
- extern int
- ncx_putn_schar_double(void **xpp, size_t nelems, const double *ip);
- extern int
- ncx_putn_schar_uint(void **xpp, size_t nelems, const unsigned int *ip);
- extern int
- ncx_putn_schar_longlong(void **xpp, size_t nelems, const longlong *ip);
- extern int
- ncx_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
-
- extern int
- ncx_pad_putn_schar_schar(void **xpp, size_t nelems, const schar *ip);
- extern int
- ncx_pad_putn_schar_uchar(void **xpp, size_t nelems, const uchar *ip);
- extern int
- ncx_pad_putn_schar_short(void **xpp, size_t nelems, const short *ip);
- extern int
- ncx_pad_putn_schar_int(void **xpp, size_t nelems, const int *ip);
- extern int
- ncx_pad_putn_schar_long(void **xpp, size_t nelems, const long *ip);
- extern int
- ncx_pad_putn_schar_float(void **xpp, size_t nelems, const float *ip);
- extern int
- ncx_pad_putn_schar_double(void **xpp, size_t nelems, const double *ip);
- extern int
- ncx_pad_putn_schar_uint(void **xpp, size_t nelems, const unsigned int *ip);
- extern int
- ncx_pad_putn_schar_longlong(void **xpp, size_t nelems, const longlong *ip);
- extern int
- ncx_pad_putn_schar_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
- extern int
- ncx_getn_short_schar(const void **xpp, size_t nelems, schar *ip);
- extern int
- ncx_getn_short_uchar(const void **xpp, size_t nelems, uchar *ip);
- extern int
- ncx_getn_short_short(const void **xpp, size_t nelems, short *ip);
- extern int
- ncx_getn_short_int(const void **xpp, size_t nelems, int *ip);
- extern int
- ncx_getn_short_long(const void **xpp, size_t nelems, long *ip);
- extern int
- ncx_getn_short_float(const void **xpp, size_t nelems, float *ip);
- extern int
- ncx_getn_short_double(const void **xpp, size_t nelems, double *ip);
- extern int
- ncx_getn_short_uint(const void **xpp, size_t nelems, unsigned int *ip);
- extern int
- ncx_getn_short_longlong(const void **xpp, size_t nelems, longlong *ip);
- extern int
- ncx_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
- extern int
- ncx_pad_getn_short_schar(const void **xpp, size_t nelems, schar *ip);
- extern int
- ncx_pad_getn_short_uchar(const void **xpp, size_t nelems, uchar *ip);
- extern int
- ncx_pad_getn_short_short(const void **xpp, size_t nelems, short *ip);
- extern int
- ncx_pad_getn_short_int(const void **xpp, size_t nelems, int *ip);
- extern int
- ncx_pad_getn_short_long(const void **xpp, size_t nelems, long *ip);
- extern int
- ncx_pad_getn_short_float(const void **xpp, size_t nelems, float *ip);
- extern int
- ncx_pad_getn_short_double(const void **xpp, size_t nelems, double *ip);
- extern int
- ncx_pad_getn_short_uint(const void **xpp, size_t nelems, unsigned int *ip);
- extern int
- ncx_pad_getn_short_longlong(const void **xpp, size_t nelems, longlong *ip);
- extern int
- ncx_pad_getn_short_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
- extern int
- ncx_putn_short_schar(void **xpp, size_t nelems, const schar *ip);
- extern int
- ncx_putn_short_uchar(void **xpp, size_t nelems, const uchar *ip);
- extern int
- ncx_putn_short_short(void **xpp, size_t nelems, const short *ip);
- extern int
- ncx_putn_short_int(void **xpp, size_t nelems, const int *ip);
- extern int
- ncx_putn_short_long(void **xpp, size_t nelems, const long *ip);
- extern int
- ncx_putn_short_float(void **xpp, size_t nelems, const float *ip);
- extern int
- ncx_putn_short_double(void **xpp, size_t nelems, const double *ip);
- extern int
- ncx_putn_short_uint(void **xpp, size_t nelems, const unsigned int *ip);
- extern int
- ncx_putn_short_longlong(void **xpp, size_t nelems, const longlong *ip);
- extern int
- ncx_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
-
- extern int
- ncx_pad_putn_short_schar(void **xpp, size_t nelems, const schar *ip);
- extern int
- ncx_pad_putn_short_uchar(void **xpp, size_t nelems, const uchar *ip);
- extern int
- ncx_pad_putn_short_short(void **xpp, size_t nelems, const short *ip);
- extern int
- ncx_pad_putn_short_int(void **xpp, size_t nelems, const int *ip);
- extern int
- ncx_pad_putn_short_long(void **xpp, size_t nelems, const long *ip);
- extern int
- ncx_pad_putn_short_float(void **xpp, size_t nelems, const float *ip);
- extern int
- ncx_pad_putn_short_double(void **xpp, size_t nelems, const double *ip);
- extern int
- ncx_pad_putn_short_uint(void **xpp, size_t nelems, const unsigned int *ip);
- extern int
- ncx_pad_putn_short_longlong(void **xpp, size_t nelems, const longlong *ip);
- extern int
- ncx_pad_putn_short_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
- extern int
- ncx_getn_int_schar(const void **xpp, size_t nelems, schar *ip);
- extern int
- ncx_getn_int_uchar(const void **xpp, size_t nelems, uchar *ip);
- extern int
- ncx_getn_int_short(const void **xpp, size_t nelems, short *ip);
- extern int
- ncx_getn_int_int(const void **xpp, size_t nelems, int *ip);
- extern int
- ncx_getn_int_long(const void **xpp, size_t nelems, long *ip);
- extern int
- ncx_getn_int_float(const void **xpp, size_t nelems, float *ip);
- extern int
- ncx_getn_int_double(const void **xpp, size_t nelems, double *ip);
- extern int
- ncx_getn_int_uint(const void **xpp, size_t nelems, unsigned int *ip);
- extern int
- ncx_getn_int_longlong(const void **xpp, size_t nelems, longlong *ip);
- extern int
- ncx_getn_int_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
- extern int
- ncx_putn_int_schar(void **xpp, size_t nelems, const schar *ip);
- extern int
- ncx_putn_int_uchar(void **xpp, size_t nelems, const uchar *ip);
- extern int
- ncx_putn_int_short(void **xpp, size_t nelems, const short *ip);
- extern int
- ncx_putn_int_int(void **xpp, size_t nelems, const int *ip);
- extern int
- ncx_putn_int_long(void **xpp, size_t nelems, const long *ip);
- extern int
- ncx_putn_int_float(void **xpp, size_t nelems, const float *ip);
- extern int
- ncx_putn_int_double(void **xpp, size_t nelems, const double *ip);
- extern int
- ncx_putn_int_uint(void **xpp, size_t nelems, const unsigned int *ip);
- extern int
- ncx_putn_int_longlong(void **xpp, size_t nelems, const longlong *ip);
- extern int
- ncx_putn_int_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
-
- extern int
- ncx_getn_float_schar(const void **xpp, size_t nelems, schar *ip);
- extern int
- ncx_getn_float_uchar(const void **xpp, size_t nelems, uchar *ip);
- extern int
- ncx_getn_float_short(const void **xpp, size_t nelems, short *ip);
- extern int
- ncx_getn_float_int(const void **xpp, size_t nelems, int *ip);
- extern int
- ncx_getn_float_long(const void **xpp, size_t nelems, long *ip);
- extern int
- ncx_getn_float_float(const void **xpp, size_t nelems, float *ip);
- extern int
- ncx_getn_float_double(const void **xpp, size_t nelems, double *ip);
- extern int
- ncx_getn_float_uint(const void **xpp, size_t nelems, unsigned int *ip);
- extern int
- ncx_getn_float_longlong(const void **xpp, size_t nelems, longlong *ip);
- extern int
- ncx_getn_float_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
- extern int
- ncx_putn_float_schar(void **xpp, size_t nelems, const schar *ip);
- extern int
- ncx_putn_float_uchar(void **xpp, size_t nelems, const uchar *ip);
- extern int
- ncx_putn_float_short(void **xpp, size_t nelems, const short *ip);
- extern int
- ncx_putn_float_int(void **xpp, size_t nelems, const int *ip);
- extern int
- ncx_putn_float_long(void **xpp, size_t nelems, const long *ip);
- extern int
- ncx_putn_float_float(void **xpp, size_t nelems, const float *ip);
- extern int
- ncx_putn_float_double(void **xpp, size_t nelems, const double *ip);
- extern int
- ncx_putn_float_uint(void **xpp, size_t nelems, const unsigned int *ip);
- extern int
- ncx_putn_float_longlong(void **xpp, size_t nelems, const longlong *ip);
- extern int
- ncx_putn_float_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
-
- extern int
- ncx_getn_double_schar(const void **xpp, size_t nelems, schar *ip);
- extern int
- ncx_getn_double_uchar(const void **xpp, size_t nelems, uchar *ip);
- extern int
- ncx_getn_double_short(const void **xpp, size_t nelems, short *ip);
- extern int
- ncx_getn_double_int(const void **xpp, size_t nelems, int *ip);
- extern int
- ncx_getn_double_long(const void **xpp, size_t nelems, long *ip);
- extern int
- ncx_getn_double_float(const void **xpp, size_t nelems, float *ip);
- extern int
- ncx_getn_double_double(const void **xpp, size_t nelems, double *ip);
- extern int
- ncx_getn_double_uint(const void **xpp, size_t nelems, unsigned int *ip);
- extern int
- ncx_getn_double_longlong(const void **xpp, size_t nelems, longlong *ip);
- extern int
- ncx_getn_double_ulonglong(const void **xpp, size_t nelems, ulonglong *ip);
- extern int
- ncx_putn_double_schar(void **xpp, size_t nelems, const schar *ip);
- extern int
- ncx_putn_double_uchar(void **xpp, size_t nelems, const uchar *ip);
- extern int
- ncx_putn_double_short(void **xpp, size_t nelems, const short *ip);
- extern int
- ncx_putn_double_int(void **xpp, size_t nelems, const int *ip);
- extern int
- ncx_putn_double_long(void **xpp, size_t nelems, const long *ip);
- extern int
- ncx_putn_double_float(void **xpp, size_t nelems, const float *ip);
- extern int
- ncx_putn_double_double(void **xpp, size_t nelems, const double *ip);
- extern int
- ncx_putn_double_uint(void **xpp, size_t nelems, const unsigned int *ip);
- extern int
- ncx_putn_double_longlong(void **xpp, size_t nelems, const longlong *ip);
- extern int
- ncx_putn_double_ulonglong(void **xpp, size_t nelems, const ulonglong *ip);
-
- /*
- * Other aggregate conversion functions.
- */
- /* read ASCII characters */
- extern int
- ncx_getn_text(const void **xpp, size_t nchars, char *cp);
- extern int
- ncx_pad_getn_text(const void **xpp, size_t nchars, char *cp);
- /* write ASCII characters */
- extern int
- ncx_putn_text(void **xpp, size_t nchars, const char *cp);
- extern int
- ncx_pad_putn_text(void **xpp, size_t nchars, const char *cp);
- /* for symmetry */
- #define ncx_getn_char_char(xpp, nelems, fillp) ncx_getn_text(xpp, nelems, fillp)
- #define ncx_putn_char_char(xpp, nelems, fillp) ncx_putn_text(xpp, nelems, fillp)
- /* read opaque data */
- extern int
- ncx_getn_void(const void **xpp, size_t nchars, void *vp);
- extern int
- ncx_pad_getn_void(const void **xpp, size_t nchars, void *vp);
- /* write opaque data */
- extern int
- ncx_putn_void(void **xpp, size_t nchars, const void *vp);
- extern int
- ncx_pad_putn_void(void **xpp, size_t nchars, const void *vp);
- #endif /* _NCX_H_ */
|