| /*- |
| * Copyright (c) 2003, 2004 Lev Walkin <vlm@lionet.info>. All rights reserved. |
| * Redistribution and modifications are permitted subject to BSD license. |
| */ |
| #ifndef _CONSTR_SEQUENCE_H_ |
| #define _CONSTR_SEQUENCE_H_ |
| |
| #include <constr_TYPE.h> |
| |
| /* |
| * A single element of the SEQUENCE type. |
| */ |
| typedef struct asn1_SEQUENCE_element_s { |
| int memb_offset; /* Offset of the element */ |
| int optional; /* Whether the element is optional */ |
| ber_tlv_tag_t tag; /* Outmost (most immediate) tag */ |
| int tag_mode; /* IMPLICIT/no/EXPLICIT tag at current level */ |
| asn1_TYPE_descriptor_t *type; /* Member type descriptor */ |
| char *name; /* ASN.1 identifier of the element */ |
| } asn1_SEQUENCE_element_t; |
| |
| typedef struct asn1_SEQUENCE_specifics_s { |
| /* |
| * Target structure description. |
| */ |
| int struct_size; /* Size of the target structure. */ |
| int ctx_offset; /* Offset of the ber_dec_ctx_t member */ |
| |
| /* |
| * Members of the SEQUENCE structure. |
| */ |
| asn1_SEQUENCE_element_t *elements; |
| int elements_count; |
| |
| /* |
| * Tags to members mapping table (sorted). |
| */ |
| asn1_TYPE_tag2member_t *tag2el; |
| int tag2el_count; |
| |
| /* |
| * Description of an extensions group. |
| */ |
| int ext_after; /* Extensions start after this member */ |
| int ext_before; /* Extensions stop before this member */ |
| } asn1_SEQUENCE_specifics_t; |
| |
| |
| /* |
| * A set specialized functions dealing with the SEQUENCE type. |
| */ |
| asn_constr_check_f SEQUENCE_constraint; |
| ber_type_decoder_f SEQUENCE_decode_ber; |
| der_type_encoder_f SEQUENCE_encode_der; |
| asn_struct_print_f SEQUENCE_print; |
| asn_struct_free_f SEQUENCE_free; |
| |
| #endif /* _CONSTR_SEQUENCE_H_ */ |