blob: 17754bb57baf3d2f268ba045901ac6f5781ab4d3 [file] [log] [blame]
Lev Walkinf15320b2004-06-03 03:38:44 +00001/*-
2 * Copyright (c) 2003, 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
3 * Redistribution and modifications are permitted subject to BSD license.
4 */
5#ifndef _CONSTR_SEQUENCE_H_
6#define _CONSTR_SEQUENCE_H_
7
8#include <constr_TYPE.h>
9
10/*
11 * A single element of the SEQUENCE type.
12 */
13typedef struct asn1_SEQUENCE_element_s {
14 int memb_offset; /* Offset of the element */
15 int optional; /* Whether the element is optional */
16 ber_tlv_tag_t tag; /* Outmost (most immediate) tag */
17 int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */
Lev Walkin4c36e302004-06-06 07:20:02 +000018 asn1_TYPE_descriptor_t *type; /* Member type descriptor */
Lev Walkinf15320b2004-06-03 03:38:44 +000019 char *name; /* ASN.1 identifier of the element */
20} asn1_SEQUENCE_element_t;
21
22typedef struct asn1_SEQUENCE_specifics_s {
23 /*
24 * Target structure description.
25 */
26 int struct_size; /* Size of the target structure. */
27 int ctx_offset; /* Offset of the ber_dec_ctx_t member */
28
29 /*
30 * Members of the SEQUENCE structure.
31 */
32 asn1_SEQUENCE_element_t *elements;
33 int elements_count;
34
35 /*
Lev Walkin4c36e302004-06-06 07:20:02 +000036 * Tags to members mapping table (sorted).
37 */
38 asn1_TYPE_tag2member_t *tag2el;
39 int tag2el_count;
40
41 /*
Lev Walkinf15320b2004-06-03 03:38:44 +000042 * Description of an extensions group.
43 */
44 int ext_after; /* Extensions start after this member */
45 int ext_before; /* Extensions stop before this member */
46} asn1_SEQUENCE_specifics_t;
47
48
49/*
50 * A set specialized functions dealing with the SEQUENCE type.
51 */
52asn_constr_check_f SEQUENCE_constraint;
53ber_type_decoder_f SEQUENCE_decode_ber;
54der_type_encoder_f SEQUENCE_encode_der;
55asn_struct_print_f SEQUENCE_print;
56asn_struct_free_f SEQUENCE_free;
57
58#endif /* _CONSTR_SEQUENCE_H_ */