mirror of https://gerrit.osmocom.org/asn1c
61 lines
1.4 KiB
C
61 lines
1.4 KiB
C
/*
|
|
* A generic value of different syntaxes.
|
|
*/
|
|
#ifndef ASN1_PARSER_VALUE_H
|
|
#define ASN1_PARSER_VALUE_H
|
|
|
|
/*
|
|
* A wrapper around various kinds of values.
|
|
*/
|
|
typedef struct asn1p_value_s {
|
|
/*
|
|
* The value of the element.
|
|
*/
|
|
enum {
|
|
ATV_NOVALUE,
|
|
ATV_REFERENCED,
|
|
ATV_REAL,
|
|
ATV_INTEGER,
|
|
ATV_MIN,
|
|
ATV_MAX,
|
|
ATV_FALSE,
|
|
ATV_TRUE,
|
|
ATV_STRING,
|
|
ATV_UNPARSED,
|
|
ATV_BITVECTOR,
|
|
} type; /* Value type and location */
|
|
|
|
union {
|
|
asn1p_ref_t *reference;
|
|
asn1_integer_t v_integer;
|
|
double v_double;
|
|
/*
|
|
* Binary bits vector.
|
|
*/
|
|
struct {
|
|
uint8_t *buf;
|
|
int size;
|
|
} string;
|
|
struct {
|
|
uint8_t *bits;
|
|
int size_in_bits;
|
|
} binary_vector;
|
|
} value;
|
|
} asn1p_value_t;
|
|
|
|
/*
|
|
* Constructors and destructor for value.
|
|
* If ref, bits or buffer are omitted, the corresponding function returns
|
|
* (asn1p_value_t *)0 with errno = EINVAL.
|
|
* Allocated value (where applicable) is guaranteed to be NUL-terminated.
|
|
*/
|
|
asn1p_value_t *asn1p_value_fromref(asn1p_ref_t *ref, int do_copy);
|
|
asn1p_value_t *asn1p_value_frombits(uint8_t *bits, int size_in_bits, int dc);
|
|
asn1p_value_t *asn1p_value_frombuf(char *buffer, int size, int do_copy);
|
|
asn1p_value_t *asn1p_value_fromdouble(double);
|
|
asn1p_value_t *asn1p_value_fromint(asn1_integer_t);
|
|
asn1p_value_t *asn1p_value_clone(asn1p_value_t *);
|
|
void asn1p_value_free(asn1p_value_t *);
|
|
|
|
#endif /* ASN1_PARSER_VALUE_H */
|