NAME¶
gd_native_type — returns the native data type of a field in a dirfile
SYNOPSIS¶
#include <getdata.h>
gd_type_t gd_native_type(DIRFILE *dirfile,
const char *field_code);
DESCRIPTION¶
The
gd_native_type() function queries a
dirfile(5) database specified by
dirfile and returns the native data type of the field
field_code, which may contain a representation suffix.
The
dirfile argument must point to a valid DIRFILE object previously
created by a call to
gd_open(3).
The native data type of a field of a given entry type is calculated as:
- BIT or INDEX Entry:
- GD_UINT64;
- CONST or CARRAY Entry:
- the data type of the field;
- LINCOM or POLYNOM Entry:
- if any of the scalar parameters is complex valued, or if the native data
type of any of the input fields is complex valued: GD_COMPLEX128,
otherwise: GD_FLOAT64;
- LINTERP Entry:
- if the look-up table is complex valued: GD_COMPLEX128, otherwise:
GD_FLOAT64;
- MULTIPLY or DIVIDE Entry:
- if either input field is complex valued: GD_COMPLEX128, otherwise:
GD_FLOAT64;
- PHASE Entry:
- the native data type of the input field;
- RAW Entry:
- the data type of the raw data on disk;
- RECIP Entry:
- if the dividend or the native data type of the input field is complex
valued: GD_COMPLEX128, otherwise: GD_FLOAT64;
- SBIT Entry:
- GD_INT64;
- STRING Entry:
- GD_NULL.
Furthermore, if the supplied
field_code contains a representation suffix,
and the native data type of the field is complex valued, the native type
returned will be the corresponding real valued type.
RETURN VALUE¶
Upon successful completion,
gd_native_type() returns the native data type
of the field code specified. This will be one of the symbols:
- GD_NULL, GD_UINT8, GD_INT8, GD_UINT16, GD_INT16, GD_UINT32,
GD_INT32, GD_FLOAT32, GD_FLOAT64, GD_COMPLEX64, GD_COMPLEX128.
The meanings of these symbols are explained in the
gd_getdata(3) manual
page. On error, it returns
GD_UNKNOWN and sets the dirfile error to a
non-zero error value. Possible error values are:
- GD_E_BAD_CODE
- The field specified by field_code or one of the fields it uses as
input was not found in the database.
- GD_E_BAD_DIRFILE
- The supplied dirfile was invalid.
- GD_E_BAD_REPR
- The representation suffix specified in field_code, or in one of its
input fields, was not recognised.
- GD_E_BAD_SCALAR
- A non-literal scalar used in the definition of the field or one of its
inputs was not found, or was not a CONST or CARRAY
field.
- GD_E_DIMENSION
- A scalar field was found where a vector field was expected.
- GD_E_OPEN_LINFILE
- An error occurred while trying to read a LINTERP table from disk.
- GD_E_RECURSE_LEVEL
- Too many levels of recursion were encountered while trying to resolve
field_code. This usually indicates a circular dependency in field
specification in the dirfile.
The dirfile error may be retrieved by calling
gd_error(3). A descriptive
error string for the last error encountered can be obtained from a call to
gd_error_string(3).
SEE ALSO¶
dirfile(5),
gd_open(3),
gd_getdata(3),
gd_error(3),
gd_error_string(3)