]> git.stg.codes - stg.git/blobdiff - libs/smux/include/stg/constr_CHOICE.h
More std::jthread stuff.
[stg.git] / libs / smux / include / stg / constr_CHOICE.h
index e824a2206e0895151de540ac3a3096c6f47846c1..7649480942d3c5a8cf391eaa2e90ea27e94fb935 100644 (file)
@@ -1,6 +1,5 @@
-/*-
- * Copyright (c) 2003, 2004, 2005 Lev Walkin <vlm@lionet.info>.
- * All rights reserved.
+/*
+ * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
  * Redistribution and modifications are permitted subject to BSD license.
  */
 #ifndef        _CONSTR_CHOICE_H_
  * Redistribution and modifications are permitted subject to BSD license.
  */
 #ifndef        _CONSTR_CHOICE_H_
 extern "C" {
 #endif
 
 extern "C" {
 #endif
 
-typedef const struct asn_CHOICE_specifics_s {
+typedef struct asn_CHOICE_specifics_s {
        /*
         * Target structure description.
         */
        /*
         * Target structure description.
         */
-       int struct_size;        /* Size of the target structure. */
-       int ctx_offset;         /* Offset of the asn_codec_ctx_t member */
-       int pres_offset;        /* Identifier of the present member */
-       int pres_size;          /* Size of the identifier (enum) */
+       unsigned struct_size;       /* Size of the target structure. */
+       unsigned ctx_offset;        /* Offset of the asn_codec_ctx_t member */
+       unsigned pres_offset;       /* Identifier of the present member */
+       unsigned pres_size;         /* Size of the identifier (enum) */
 
        /*
         * Tags to members mapping table.
         */
        const asn_TYPE_tag2member_t *tag2el;
 
        /*
         * Tags to members mapping table.
         */
        const asn_TYPE_tag2member_t *tag2el;
-       int tag2el_count;
+       unsigned tag2el_count;
 
        /* Canonical ordering of CHOICE elements, for PER */
 
        /* Canonical ordering of CHOICE elements, for PER */
-       int *canonical_order;
+       const unsigned *to_canonical_order;
+       const unsigned *from_canonical_order;
 
        /*
         * Extensions-related stuff.
         */
 
        /*
         * Extensions-related stuff.
         */
-       int ext_start;          /* First member of extensions, or -1 */
+       signed ext_start; /* First member of extensions, or -1 */
 } asn_CHOICE_specifics_t;
 
 /*
 } asn_CHOICE_specifics_t;
 
 /*
@@ -41,14 +41,35 @@ typedef const struct asn_CHOICE_specifics_s {
  */
 asn_struct_free_f CHOICE_free;
 asn_struct_print_f CHOICE_print;
  */
 asn_struct_free_f CHOICE_free;
 asn_struct_print_f CHOICE_print;
+asn_struct_compare_f CHOICE_compare;
 asn_constr_check_f CHOICE_constraint;
 ber_type_decoder_f CHOICE_decode_ber;
 der_type_encoder_f CHOICE_encode_der;
 xer_type_decoder_f CHOICE_decode_xer;
 xer_type_encoder_f CHOICE_encode_xer;
 asn_constr_check_f CHOICE_constraint;
 ber_type_decoder_f CHOICE_decode_ber;
 der_type_encoder_f CHOICE_encode_der;
 xer_type_decoder_f CHOICE_decode_xer;
 xer_type_encoder_f CHOICE_encode_xer;
+oer_type_decoder_f CHOICE_decode_oer;
+oer_type_encoder_f CHOICE_encode_oer;
 per_type_decoder_f CHOICE_decode_uper;
 per_type_encoder_f CHOICE_encode_uper;
 asn_outmost_tag_f CHOICE_outmost_tag;
 per_type_decoder_f CHOICE_decode_uper;
 per_type_encoder_f CHOICE_encode_uper;
 asn_outmost_tag_f CHOICE_outmost_tag;
+asn_random_fill_f CHOICE_random_fill;
+extern asn_TYPE_operation_t asn_OP_CHOICE;
+
+/*
+ * Return the 1-based choice variant presence index.
+ * Returns 0 in case of error.
+ */
+unsigned CHOICE_variant_get_presence(const asn_TYPE_descriptor_t *td,
+                                     const void *structure_ptr);
+
+/*
+ * Sets or resets the 1-based choice variant presence index.
+ * In case a previous index is not zero, the currently selected structure
+ * member is freed and zeroed-out first.
+ * Returns 0 on success and -1 on error.
+ */
+int CHOICE_variant_set_presence(const asn_TYPE_descriptor_t *td,
+                                void *structure_ptr, unsigned present);
 
 #ifdef __cplusplus
 }
 
 #ifdef __cplusplus
 }