X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=Bouncer%2Fe2sm_kpm%2Fheaders%2Fconstr_SET.h;fp=Bouncer%2Fe2sm_kpm%2Fheaders%2Fconstr_SET.h;h=d64a00f1af0fc60481b21791536b03d993e84abc;hb=fbc7e3ad84fc7269233a2f0b5d416cb1c6f8a6ea;hp=0000000000000000000000000000000000000000;hpb=eb27c05c05b5042d115480c40cffa16e7d473d80;p=ric-app%2Fbouncer.git diff --git a/Bouncer/e2sm_kpm/headers/constr_SET.h b/Bouncer/e2sm_kpm/headers/constr_SET.h new file mode 100644 index 0000000..d64a00f --- /dev/null +++ b/Bouncer/e2sm_kpm/headers/constr_SET.h @@ -0,0 +1,87 @@ +/*- + * Copyright (c) 2003-2017 Lev Walkin . All rights reserved. + * Redistribution and modifications are permitted subject to BSD license. + */ +#ifndef _CONSTR_SET_H_ +#define _CONSTR_SET_H_ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct asn_SET_specifics_s { + /* + * Target structure description. + */ + unsigned struct_size; /* Size of the target structure. */ + unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */ + unsigned pres_offset; /* Offset of _presence_map member */ + + /* + * Tags to members mapping table (sorted). + * Sometimes suitable for DER encoding (untagged CHOICE is present); + * if so, tag2el_count will be greater than td->elements_count. + */ + const asn_TYPE_tag2member_t *tag2el; + unsigned tag2el_count; + + /* + * Tags to members mapping table, second edition. + * Suitable for CANONICAL-XER encoding. + */ + const asn_TYPE_tag2member_t *tag2el_cxer; + unsigned tag2el_cxer_count; + + /* + * Extensions-related stuff. + */ + int extensible; /* Whether SET is extensible */ + const unsigned int *_mandatory_elements; /* Bitmask of mandatory ones */ +} asn_SET_specifics_t; + +/* + * A set specialized functions dealing with the SET type. + */ +asn_struct_free_f SET_free; +asn_struct_print_f SET_print; +asn_struct_compare_f SET_compare; +asn_constr_check_f SET_constraint; +ber_type_decoder_f SET_decode_ber; +der_type_encoder_f SET_encode_der; +xer_type_decoder_f SET_decode_xer; +xer_type_encoder_f SET_encode_xer; +per_type_decoder_f SET_decode_uper; +per_type_encoder_f SET_encode_uper; +asn_random_fill_f SET_random_fill; +extern asn_TYPE_operation_t asn_OP_SET; + +/*********************** + * Some handy helpers. * + ***********************/ + +/* + * Figure out whether the SET member indicated by PR_x has already been decoded. + * It is very simple bitfield test, despite its visual complexity. + */ +#define ASN_SET_ISPRESENT(set_ptr, PR_x) \ + ASN_SET_ISPRESENT2(&((set_ptr)->_presence_map), PR_x) +#define ASN_SET_ISPRESENT2(map_ptr, PR_x) \ + (((unsigned int *)(map_ptr)) \ + [(PR_x) / (8 * sizeof(unsigned int))] \ + & (1u << ((8 * sizeof(unsigned int)) - 1 \ + - ((PR_x) % (8 * sizeof(unsigned int)))))) + +#define ASN_SET_MKPRESENT(map_ptr, PR_x) \ + (((unsigned int *)(map_ptr)) \ + [(PR_x) / (8 * sizeof(unsigned int))] \ + |= (1u << ((8 * sizeof(unsigned int)) - 1 \ + - ((PR_x) % (8 * sizeof(unsigned int)))))) + +#ifdef __cplusplus +} +#endif + +#endif /* _CONSTR_SET_H_ */