mirror of https://gerrit.osmocom.org/asn1c
63 lines
1.5 KiB
C
63 lines
1.5 KiB
C
/*
|
|
* Generic reference to the yet unknown type defined elsewhere.
|
|
*/
|
|
#ifndef ASN1_PARSER_REFERENCE_H
|
|
#define ASN1_PARSER_REFERENCE_H
|
|
|
|
typedef struct asn1p_ref_s {
|
|
|
|
/*
|
|
* A set of reference name components.
|
|
* A reference name consists of several components separated by dots:
|
|
* "OBJECT-CLASS.&Algorithm.&id"
|
|
*/
|
|
struct asn1p_ref_component_s {
|
|
enum asn1p_ref_lex_type_e {
|
|
RLT_UNKNOWN, /* Invalid? */
|
|
/*
|
|
* Object class reference "OCLASS1",
|
|
* type reference "Type1",
|
|
* value reference "id",
|
|
* type field reference "&Type1",
|
|
* value field reference "&id",
|
|
* "OBJECT-CLASS"
|
|
*/
|
|
RLT_CAPITALS,
|
|
RLT_Uppercase,
|
|
RLT_lowercase,
|
|
RLT_AmpUppercase,
|
|
RLT_Amplowercase,
|
|
RLT_Atlowercase,
|
|
RLT_AtDotlowercase,
|
|
RLT_MAX
|
|
} lex_type; /* Inferred lexical type of the identifier */
|
|
char *name; /* An identifier */
|
|
} *components;
|
|
|
|
int comp_count; /* Number of the components in the reference name. */
|
|
int comp_size; /* Number of allocated structures */
|
|
|
|
int _lineno; /* Number of line in the file */
|
|
} asn1p_ref_t;
|
|
|
|
/*
|
|
* Constructor and destructor.
|
|
*/
|
|
asn1p_ref_t *asn1p_ref_new(int _lineno);
|
|
void asn1p_ref_free(asn1p_ref_t *);
|
|
|
|
asn1p_ref_t *asn1p_ref_clone(asn1p_ref_t *ref);
|
|
|
|
/*
|
|
* Add a new reference component to the existing reference structure.
|
|
*
|
|
* RETURN VALUES:
|
|
* 0: All clear.
|
|
* -1/EINVAL: Invalid arguments
|
|
* -1/ENOMEM: Memory allocation failed
|
|
*/
|
|
int asn1p_ref_add_component(asn1p_ref_t *,
|
|
char *name, enum asn1p_ref_lex_type_e);
|
|
|
|
#endif /* ASN1_PARSER_REFERENCE_H */
|