table of contents
gd_get_carray_slice(3) | GETDATA | gd_get_carray_slice(3) |
NAME¶
gd_get_carray, gd_get_carray_slice — retrieve CARRAY data from a dirfile databaseSYNOPSIS¶
#include <getdata.h>int gd_get_carray_slice(DIRFILE *dirfile, const
char *field_code, unsigned int start,
size_t len, gd_type_t return_type, void
*data_out);
int gd_get_carray(DIRFILE *dirfile, const char
*field_code, gd_type_t return_type, void
*data_out);
DESCRIPTION¶
The gd_get_carray_slice() function queries a dirfile(5) database specified by dirfile for the CARRAY scalar array field_code, which may contain a representation suffix. The data in the field is converted to the data type specified by return_type, and stored in the user-supplied buffer data_out. The first element of the field stored is given by start, and the number of elements stored is given by len. The gd_get_carray() function behaves similarly, except it returns the entire field. The dirfile argument must point to a valid DIRFILE object previously created by a call to gd_open(3). The argument data_out must point to a valid memory location of sufficient size to hold all the requested data of the return type specified. The number of elements returned by gd_get_carray() may be obtained by calling gd_carray_len(3). Unlike gd_getdata(3), calling gd_get_carray_slice() never results in a short read; attempting to read past the end of the CARRAY will result in an error, and no data will be returned. The return_type argument should be one of the following symbols, which indicates the desired return type of the data:- GD_UINT8
- unsigned 8-bit integer
- GD_INT8
- signed (two's complement) 8-bit integer
- GD_UINT16
- unsigned 16-bit integer
- GD_INT16
- signed (two's complement) 16-bit integer
- GD_UINT32
- unsigned 32-bit integer
- GD_INT32
- signed (two's complement) 32-bit integer
- GD_UINT64
- unsigned 64-bit integer
- GD_INT64
- signed (two's complement) 64-bit integer
- GD_FLOAT32
- IEEE-754 standard 32-bit single precision floating point number
- GD_FLOAT64
- IEEE-754 standard 64-bit double precision floating point number
- GD_COMPLEX64
- C99-conformant 64-bit single precision complex number
- GD_COMPLEX128
- C99-conformant 128-bit double precision complex number
- GD_NULL
- the null type: the database is queried as usual, but no data is returned. In this case, data_out is ignored and may be NULL.
RETURN VALUE¶
On success, gd_get_carray() and gd_get_carray_slice() return zero. On error, they return -1 and set the dirfile error to a non-zero value. Possible error values are:- GD_E_BAD_CODE
- The field specified by field_code was not found in the database.
- GD_E_BAD_DIRFILE
- An invalid dirfile was supplied.
- GD_E_BAD_FIELD_TYPE
- The supplied field_code referred to a field of a type other than CARRAY. The caller should use gd_getdata(3), gd_get_constant(3), or gd_get_string(3) instead.
- GD_E_BAD_REPR
- The representation suffix specified in field_code, or in one of the field codes it uses for input, was invalid.
- GD_E_BAD_TYPE
- An invalid return_type was specified.
- GE_E_BOUNDS
- A request for data beyond the end of the field was made.
- GD_E_INTERNAL_ERROR
- An internal error occurred in the library while trying to perform the task. This indicates a bug in the library. Please report the incident to the maintainer.
SEE ALSO¶
dirfile(5), gd_carray_len(3), gd_carrays(3), gd_error(3), gd_error_string(3), gd_get_constant(3), gd_open(3), gd_put_carray_slice(3)3 Novmeber 2010 | Version 0.7.0 |