Allocating Enumerations in libadr
adr_data_t *adr_data_new_enum (adr_type_t *type, int value); adr_data_t *adr_data_new_enum_byname (adr_type_t *type, const char * name);
The two ways to allocate an enumeration adr_data_t
both require that the adr_type_t
of the enumeration be specified. The first form, adr_data_new_enum, takes a scalar value as an argument and initializes the enumeration adr_data_t
to the enumerated value that was assigned (implicitly or explicitly) that scalar value. The second form, adr_data_new_enum_byname, takes a pointer to a string as an argument and initializes the enumeration adr_data_t
to the enumerated value that has that name. If value does not correspond to an assigned scalar value or name does not correspond to an enumerated value name, the respective allocation routine fails.
The nature of an enumeration is that all possible values are known. Enumerated types generated by radadrgen
have singleton adr_data_t
values that will be returned by adr_data_new_enum and adr_data_new_enum_byname. For efficiency and to reduce the error handling that needs to be performed at runtime, these values have defined symbols that may be referenced directly.
The value of type
must be an enumeration data-type.