mirror of https://gerrit.osmocom.org/asn1c
74 lines
2.1 KiB
C
74 lines
2.1 KiB
C
/*
|
|
* This is a parser of the ASN.1 grammar.
|
|
*/
|
|
#ifndef ASN1PARSER_H
|
|
#define ASN1PARSER_H
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "config.h"
|
|
#endif /* HAVE_CONFIG_H */
|
|
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif /* HAVE_SYS_TYPES_H */
|
|
#ifdef HAVE_INTTYPES_H
|
|
#include <inttypes.h> /* POSIX 1003.1-2001, C99 */
|
|
#else /* HAVE_INTTYPES_H */
|
|
#ifdef HAVE_STDINT_H
|
|
#include <stdint.h> /* SUSv2+ */
|
|
#endif /* HAVE_STDINT_H */
|
|
#endif /* HAVE_INTTYPES_H */
|
|
|
|
/*
|
|
* Basic integer type used in numerous places.
|
|
* ASN.1 does not define any limits on this number, so it must be sufficiently
|
|
* large to accomodate typical inputs. It does not have to be a dynamically
|
|
* allocated type with potentially unlimited width: consider the width of
|
|
* an integer defined here as one of the "compiler limitations".
|
|
* NOTE: this is NOT a type for ASN.1 "INTEGER" type representation, this
|
|
* type is used by the compiler itself to handle large integer values
|
|
* specified inside ASN.1 grammar.
|
|
*/
|
|
typedef intmax_t asn1_integer_t;
|
|
|
|
#include <asn1p_list.h>
|
|
#include <asn1p_oid.h> /* Object identifiers (OIDs) */
|
|
#include <asn1p_ref.h> /* References to custom types */
|
|
#include <asn1p_value.h> /* Value definition */
|
|
#include <asn1p_param.h> /* Parametrization */
|
|
#include <asn1p_constr.h> /* Type Constraints */
|
|
#include <asn1p_xports.h> /* IMports/EXports */
|
|
#include <asn1p_module.h> /* ASN.1 definition module */
|
|
#include <asn1p_class.h> /* CLASS-related stuff */
|
|
#include <asn1p_expr.h> /* A single ASN.1 expression */
|
|
|
|
/*
|
|
* Parser flags.
|
|
*/
|
|
enum asn1p_flags {
|
|
A1P_NOFLAGS,
|
|
/*
|
|
* Enable verbose debugging output from lexer.
|
|
*/
|
|
A1P_LEXER_DEBUG = 0x0001,
|
|
/*
|
|
* Embedded types restricted to ASN.1:1988
|
|
*/
|
|
A1P_TYPES_RESTRICT_TO_1988 = 0x0010,
|
|
/*
|
|
* Embedded constructs (concepts) restricted to ASN.1:1990
|
|
*/
|
|
A1P_CONSTRUCTS_RESTRICT_TO_1990 = 0x0020,
|
|
};
|
|
|
|
/*
|
|
* Perform low-level parsing of ASN.1 module[s]
|
|
* and return a list of module trees.
|
|
*/
|
|
asn1p_t *asn1p_parse_file(const char *filename,
|
|
enum asn1p_flags);
|
|
asn1p_t *asn1p_parse_buffer(const char *buffer, int size /* = -1 */,
|
|
enum asn1p_flags);
|
|
|
|
#endif /* ASN1PARSER_H */
|