blob: f9dd4e5ef952d0c8eac86e4a9f3f25678c6a81d9 [file] [log] [blame]
Lev Walkinf15320b2004-06-03 03:38:44 +00001/*-
Lev Walkin20696a42017-10-17 21:27:33 -07002 * Copyright (c) 2003-2017 Lev Walkin <vlm@lionet.info>. All rights reserved.
Lev Walkinf15320b2004-06-03 03:38:44 +00003 * Redistribution and modifications are permitted subject to BSD license.
4 */
5#ifndef _CONSTR_SEQUENCE_H_
6#define _CONSTR_SEQUENCE_H_
7
Lev Walkin11c3e172004-09-24 21:00:50 +00008#include <asn_application.h>
Lev Walkinf15320b2004-06-03 03:38:44 +00009
Lev Walkin21b41ac2005-07-24 09:03:44 +000010#ifdef __cplusplus
11extern "C" {
12#endif
13
Lev Walkind84f6032017-10-03 16:33:59 -070014typedef struct asn_SEQUENCE_specifics_s {
Lev Walkinf15320b2004-06-03 03:38:44 +000015 /*
16 * Target structure description.
17 */
Lev Walkin9ec239e2017-08-10 05:46:42 -070018 unsigned struct_size; /* Size of the target structure. */
19 unsigned ctx_offset; /* Offset of the asn_struct_ctx_t member */
Lev Walkinf15320b2004-06-03 03:38:44 +000020
21 /*
Lev Walkin4c36e302004-06-06 07:20:02 +000022 * Tags to members mapping table (sorted).
23 */
Wim Lewisfb6344e2014-07-28 12:16:01 -070024 const asn_TYPE_tag2member_t *tag2el;
Bi-Ruei, Chiu1f87ac02017-08-20 01:25:45 +080025 unsigned tag2el_count;
Lev Walkin4c36e302004-06-06 07:20:02 +000026
Bi-Ruei, Chiu1f87ac02017-08-20 01:25:45 +080027 /*
Lev Walkin59b176e2005-11-26 11:25:14 +000028 * Optional members of the extensions root (roms) or additions (aoms).
29 * Meaningful for PER.
30 */
Bi-Ruei, Chiu1f87ac02017-08-20 01:25:45 +080031 const int *oms; /* Optional MemberS */
32 unsigned roms_count; /* Root optional members count */
33 unsigned aoms_count; /* Additions optional members count */
Lev Walkin59b176e2005-11-26 11:25:14 +000034
Bi-Ruei, Chiu1f87ac02017-08-20 01:25:45 +080035 /*
Lev Walkinf15320b2004-06-03 03:38:44 +000036 * Description of an extensions group.
Lev Walkin83668612017-10-21 00:24:31 -070037 * Root components are clustered at the beginning of the structure,
38 * whereas extensions are clustered at the end. -1 means not extensible.
Lev Walkinf15320b2004-06-03 03:38:44 +000039 */
Lev Walkin83668612017-10-21 00:24:31 -070040 signed first_extension; /* First extension addition */
Lev Walkin5e033762004-09-29 13:26:15 +000041} asn_SEQUENCE_specifics_t;
Lev Walkinf15320b2004-06-03 03:38:44 +000042
43
44/*
45 * A set specialized functions dealing with the SEQUENCE type.
46 */
Lev Walkina9cc46e2004-09-22 16:06:28 +000047asn_struct_free_f SEQUENCE_free;
48asn_struct_print_f SEQUENCE_print;
Lev Walkincd2f48e2017-08-10 02:14:59 -070049asn_struct_compare_f SEQUENCE_compare;
Lev Walkinf15320b2004-06-03 03:38:44 +000050asn_constr_check_f SEQUENCE_constraint;
51ber_type_decoder_f SEQUENCE_decode_ber;
52der_type_encoder_f SEQUENCE_encode_der;
Lev Walkin1bbc2002004-10-23 13:27:30 +000053xer_type_decoder_f SEQUENCE_decode_xer;
Lev Walkina9cc46e2004-09-22 16:06:28 +000054xer_type_encoder_f SEQUENCE_encode_xer;
Lev Walkin602aacb2017-07-24 01:46:41 +040055oer_type_decoder_f SEQUENCE_decode_oer;
56oer_type_encoder_f SEQUENCE_encode_oer;
Lev Walkin59b176e2005-11-26 11:25:14 +000057per_type_decoder_f SEQUENCE_decode_uper;
Lev Walkin523de9e2006-08-18 01:34:18 +000058per_type_encoder_f SEQUENCE_encode_uper;
Lev Walkina5972be2017-09-29 23:15:58 -070059asn_random_fill_f SEQUENCE_random_fill;
Bi-Ruei, Chiu1f87ac02017-08-20 01:25:45 +080060extern asn_TYPE_operation_t asn_OP_SEQUENCE;
Lev Walkinf15320b2004-06-03 03:38:44 +000061
Lev Walkin21b41ac2005-07-24 09:03:44 +000062#ifdef __cplusplus
63}
64#endif
65
Lev Walkinf15320b2004-06-03 03:38:44 +000066#endif /* _CONSTR_SEQUENCE_H_ */