diff options
author | Lev Walkin <vlm@lionet.info> | 2004-08-20 13:36:32 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2004-08-20 13:36:32 +0000 |
commit | 2e3055da17fa7ce03affa3263edef740232ad2ff (patch) | |
tree | 50c4db6d5966e9d373a1cba550ebba9eb1112700 /tests/46-redefine-OK.asn1.-PR | |
parent | 5253da42fdf66eec4c96455ab5dbd57e9ccee1fa (diff) |
new meaning of life
Diffstat (limited to 'tests/46-redefine-OK.asn1.-PR')
-rw-r--r-- | tests/46-redefine-OK.asn1.-PR | 153 |
1 files changed, 83 insertions, 70 deletions
diff --git a/tests/46-redefine-OK.asn1.-PR b/tests/46-redefine-OK.asn1.-PR index 639ded02..ee7aceb4 100644 --- a/tests/46-redefine-OK.asn1.-PR +++ b/tests/46-redefine-OK.asn1.-PR @@ -18,26 +18,7 @@ der_type_encoder_f PrimitiveType_encode_der; asn_struct_print_f PrimitiveType_print; asn_struct_free_f PrimitiveType_free; -/*** <<< STAT-DEFS [PrimitiveType] >>> ***/ - -static ber_tlv_tag_t asn1_DEF_PrimitiveType_tags[] = { - (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) -}; -asn1_TYPE_descriptor_t asn1_DEF_PrimitiveType = { - "PrimitiveType", - PrimitiveType_constraint, - PrimitiveType_decode_ber, - PrimitiveType_encode_der, - PrimitiveType_print, - PrimitiveType_free, - 0, /* Use generic outmost tag fetcher */ - asn1_DEF_PrimitiveType_tags, - sizeof(asn1_DEF_PrimitiveType_tags) - /sizeof(asn1_DEF_PrimitiveType_tags[0]), /* 1 */ - 1, /* Tags to skip */ - -0, /* Unknown yet */ - 0 /* No specifics */ -}; +/*** <<< CODE [PrimitiveType] >>> ***/ int PrimitiveType_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, @@ -54,19 +35,21 @@ PrimitiveType_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, * so adjust the DEF appropriately. */ static void -inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) { - td->ber_decoder = asn1_DEF_OCTET_STRING.ber_decoder; - td->der_encoder = asn1_DEF_OCTET_STRING.der_encoder; - td->free_struct = asn1_DEF_OCTET_STRING.free_struct; - td->print_struct = asn1_DEF_OCTET_STRING.print_struct; - td->last_tag_form = asn1_DEF_OCTET_STRING.last_tag_form; - td->specifics = asn1_DEF_OCTET_STRING.specifics; +PrimitiveType_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) { + td->ber_decoder = asn1_DEF_OCTET_STRING.ber_decoder; + td->der_encoder = asn1_DEF_OCTET_STRING.der_encoder; + td->free_struct = asn1_DEF_OCTET_STRING.free_struct; + td->print_struct = asn1_DEF_OCTET_STRING.print_struct; + td->last_tag_form = asn1_DEF_OCTET_STRING.last_tag_form; + td->elements = asn1_DEF_OCTET_STRING.elements; + td->elements_count = asn1_DEF_OCTET_STRING.elements_count; + td->specifics = asn1_DEF_OCTET_STRING.specifics; } ber_dec_rval_t PrimitiveType_decode_ber(asn1_TYPE_descriptor_t *td, void **structure, void *bufptr, size_t size, int tag_mode) { - inherit_TYPE_descriptor(td); + PrimitiveType_inherit_TYPE_descriptor(td); return td->ber_decoder(td, structure, bufptr, size, tag_mode); } @@ -75,25 +58,48 @@ der_enc_rval_t PrimitiveType_encode_der(asn1_TYPE_descriptor_t *td, void *structure, int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { - inherit_TYPE_descriptor(td); + PrimitiveType_inherit_TYPE_descriptor(td); return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); } int PrimitiveType_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr, int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - inherit_TYPE_descriptor(td); + PrimitiveType_inherit_TYPE_descriptor(td); return td->print_struct(td, struct_ptr, ilevel, cb, app_key); } void PrimitiveType_free(asn1_TYPE_descriptor_t *td, void *struct_ptr, int contents_only) { - inherit_TYPE_descriptor(td); + PrimitiveType_inherit_TYPE_descriptor(td); td->free_struct(td, struct_ptr, contents_only); } +/*** <<< STAT-DEFS [PrimitiveType] >>> ***/ + +static ber_tlv_tag_t asn1_DEF_PrimitiveType_tags[] = { + (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)) +}; +asn1_TYPE_descriptor_t asn1_DEF_PrimitiveType = { + "PrimitiveType", + PrimitiveType_constraint, + PrimitiveType_decode_ber, + PrimitiveType_encode_der, + PrimitiveType_print, + PrimitiveType_free, + 0, /* Use generic outmost tag fetcher */ + asn1_DEF_PrimitiveType_tags, + sizeof(asn1_DEF_PrimitiveType_tags) + /sizeof(asn1_DEF_PrimitiveType_tags[0]), /* 1 */ + 1, /* Tags to skip */ + -0, /* Unknown yet */ + 0, 0, /* No members */ + 0 /* No specifics */ +}; + + /*** <<< INCLUDES [ConstructedType] >>> ***/ #include <PrimitiveType.h> @@ -115,12 +121,13 @@ typedef struct ConstructedType { /*** <<< STAT-DEFS [ConstructedType] >>> ***/ -static asn1_SEQUENCE_element_t asn1_DEF_ConstructedType_elements[] = { - { offsetof(struct ConstructedType, field), 0, - (ASN_TAG_CLASS_CONTEXT | (5 << 2)), - -1, /* IMPLICIT tag at current level */ - (void *)&asn1_DEF_PrimitiveType, - "field" +static asn1_TYPE_member_t asn1_MBR_ConstructedType[] = { + { 0, offsetof(struct ConstructedType, field), + .tag = (ASN_TAG_CLASS_CONTEXT | (5 << 2)), + .tag_mode = -1, /* IMPLICIT tag at current level */ + .type = (void *)&asn1_DEF_PrimitiveType, + .memb_constraints = 0, /* Defer to actual type */ + .name = "field" }, }; static ber_tlv_tag_t asn1_DEF_ConstructedType_tags[] = { @@ -132,8 +139,6 @@ static asn1_TYPE_tag2member_t asn1_DEF_ConstructedType_tag2el[] = { static asn1_SEQUENCE_specifics_t asn1_DEF_ConstructedType_specs = { sizeof(struct ConstructedType), offsetof(struct ConstructedType, _ber_dec_ctx), - asn1_DEF_ConstructedType_elements, - 1, /* Elements count */ asn1_DEF_ConstructedType_tag2el, 1, /* Count of tags in the map */ -1, /* Start extensions */ @@ -152,6 +157,8 @@ asn1_TYPE_descriptor_t asn1_DEF_ConstructedType = { /sizeof(asn1_DEF_ConstructedType_tags[0]), /* 1 */ 1, /* Tags to skip */ 1, /* Whether CONSTRUCTED */ + asn1_MBR_ConstructedType, + 1, /* Elements count */ &asn1_DEF_ConstructedType_specs /* Additional specs */ }; @@ -175,26 +182,7 @@ der_type_encoder_f T_encode_der; asn_struct_print_f T_print; asn_struct_free_f T_free; -/*** <<< STAT-DEFS [T] >>> ***/ - -static ber_tlv_tag_t asn1_DEF_T_tags[] = { - (ASN_TAG_CLASS_CONTEXT | (3 << 2)) -}; -asn1_TYPE_descriptor_t asn1_DEF_T = { - "T", - T_constraint, - T_decode_ber, - T_encode_der, - T_print, - T_free, - 0, /* Use generic outmost tag fetcher */ - asn1_DEF_T_tags, - sizeof(asn1_DEF_T_tags) - /sizeof(asn1_DEF_T_tags[0]), /* 1 */ - 1, /* Tags to skip */ - -0, /* Unknown yet */ - 0 /* No specifics */ -}; +/*** <<< CODE [T] >>> ***/ int T_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, @@ -211,19 +199,21 @@ T_constraint(asn1_TYPE_descriptor_t *td, const void *sptr, * so adjust the DEF appropriately. */ static void -inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) { - td->ber_decoder = asn1_DEF_ConstructedType.ber_decoder; - td->der_encoder = asn1_DEF_ConstructedType.der_encoder; - td->free_struct = asn1_DEF_ConstructedType.free_struct; - td->print_struct = asn1_DEF_ConstructedType.print_struct; - td->last_tag_form = asn1_DEF_ConstructedType.last_tag_form; - td->specifics = asn1_DEF_ConstructedType.specifics; +T_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) { + td->ber_decoder = asn1_DEF_ConstructedType.ber_decoder; + td->der_encoder = asn1_DEF_ConstructedType.der_encoder; + td->free_struct = asn1_DEF_ConstructedType.free_struct; + td->print_struct = asn1_DEF_ConstructedType.print_struct; + td->last_tag_form = asn1_DEF_ConstructedType.last_tag_form; + td->elements = asn1_DEF_ConstructedType.elements; + td->elements_count = asn1_DEF_ConstructedType.elements_count; + td->specifics = asn1_DEF_ConstructedType.specifics; } ber_dec_rval_t T_decode_ber(asn1_TYPE_descriptor_t *td, void **structure, void *bufptr, size_t size, int tag_mode) { - inherit_TYPE_descriptor(td); + T_inherit_TYPE_descriptor(td); return td->ber_decoder(td, structure, bufptr, size, tag_mode); } @@ -232,21 +222,44 @@ der_enc_rval_t T_encode_der(asn1_TYPE_descriptor_t *td, void *structure, int tag_mode, ber_tlv_tag_t tag, asn_app_consume_bytes_f *cb, void *app_key) { - inherit_TYPE_descriptor(td); + T_inherit_TYPE_descriptor(td); return td->der_encoder(td, structure, tag_mode, tag, cb, app_key); } int T_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr, int ilevel, asn_app_consume_bytes_f *cb, void *app_key) { - inherit_TYPE_descriptor(td); + T_inherit_TYPE_descriptor(td); return td->print_struct(td, struct_ptr, ilevel, cb, app_key); } void T_free(asn1_TYPE_descriptor_t *td, void *struct_ptr, int contents_only) { - inherit_TYPE_descriptor(td); + T_inherit_TYPE_descriptor(td); td->free_struct(td, struct_ptr, contents_only); } + +/*** <<< STAT-DEFS [T] >>> ***/ + +static ber_tlv_tag_t asn1_DEF_T_tags[] = { + (ASN_TAG_CLASS_CONTEXT | (3 << 2)) +}; +asn1_TYPE_descriptor_t asn1_DEF_T = { + "T", + T_constraint, + T_decode_ber, + T_encode_der, + T_print, + T_free, + 0, /* Use generic outmost tag fetcher */ + asn1_DEF_T_tags, + sizeof(asn1_DEF_T_tags) + /sizeof(asn1_DEF_T_tags[0]), /* 1 */ + 1, /* Tags to skip */ + -0, /* Unknown yet */ + 0, 0, /* Defined elsewhere */ + 0 /* No specifics */ +}; + |