| /* |
| * 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 */ |