Go to the documentation of this file.
14 #define IN_EXTENSION_GROUP(specs, memb_idx) \
15 ((specs)->first_extension >= 0 \
16 && (unsigned)(specs)->first_extension <= (memb_idx))
41 ASN_DEBUG(
"Decoding %s as SEQUENCE (UPER)", td->
name);
52 memset(&opmd, 0,
sizeof(opmd));
63 ASN_DEBUG(
"Read in presence bitmap for %s of %d bits (%x..)",
84 memb_ptr2 = (
void **)((
char *)st + elm->
memb_offset);
87 memb_ptr2 = &memb_ptr;
93 ASN_DEBUG(
"Member %s->%s is optional, p=%d (%d->%d)",
95 (
int)opmd.nboff, (
int)opmd.nbits);
104 ASN_DEBUG(
"Filled-in default");
113 ASN_DEBUG(
"Decoding member \"%s\" in %s", elm->
name, td->
name);
122 if(rv.code !=
RC_OK) {
123 ASN_DEBUG(
"Failed decode %s in %s",
146 epres = (uint8_t *)
MALLOC((bmlength + 15) >> 3);
155 memset(&epmd, 0,
sizeof(epmd));
157 epmd.
nbits = bmlength;
158 ASN_DEBUG(
"Read in extensions bitmap for %s of %ld bits (%x..)",
159 td->
name, (
long)bmlength, *epres);
170 memb_ptr2 = (
void **)((
char *)st + elm->
memb_offset);
172 memb_ptr = (
void *)((
char *)st + elm->
memb_offset);
173 memb_ptr2 = &memb_ptr;
178 if(present < 0)
break;
182 ASN_DEBUG(
"Decoding member %s in %s %p", elm->
name, td->
name,
187 if(rv.code !=
RC_OK) {
196 ASN_DEBUG(
"Getting overflow extensions");
205 ASN_DEBUG(
"Skipped overflow extension");
229 memb_ptr2 = (
void **)((
char *)st + elm->
memb_offset);
230 if(*memb_ptr2)
continue;
252 int exts_present = 0;
263 const void *memb_ptr;
264 const void *
const *memb_ptr2;
270 (
const void *
const *)((
const char *)sptr + elm->
memb_offset);
271 present = (*memb_ptr2 != 0);
273 memb_ptr = (
const void *)((
const char *)sptr + elm->
memb_offset);
274 memb_ptr2 = &memb_ptr;
281 exts_present += present;
295 return exts_present ? exts_count : 0;
316 ASN_DEBUG(
"Encoding %s as SEQUENCE (UPER)", td->name);
322 if(specs->first_extension < 0) {
333 for(i = 0; i < specs->roms_count; i++) {
335 const void *memb_ptr;
336 const void *
const *memb_ptr2;
340 elm = &td->elements[edx];
345 (
const void *
const *)((
const char *)sptr + elm->
memb_offset);
346 present = (*memb_ptr2 != 0);
348 memb_ptr = (
const void *)((
const char *)sptr + elm->
memb_offset);
349 memb_ptr2 = &memb_ptr;
358 ASN_DEBUG(
"Element %s %s %s->%s is %s",
361 td->name, elm->
name, present ?
"present" :
"absent");
369 ASN_DEBUG(
"first_extension = %d, elements = %d", specs->first_extension,
372 edx < ((specs->first_extension < 0) ? td->elements_count
373 : (
size_t)specs->first_extension);
376 const void *memb_ptr;
377 const void *
const *memb_ptr2;
379 ASN_DEBUG(
"About to encode %s", elm->
type->
name);
384 (
const void *
const *)((
const char *)sptr + elm->
memb_offset);
394 memb_ptr = (
const void *)((
const char *)sptr + elm->
memb_offset);
395 memb_ptr2 = &memb_ptr;
402 ASN_DEBUG(
"Encoding %s->%s:%s", td->name, elm->
name, elm->
type->
name);
406 if(er.encoded == -1)
return er;
412 ASN_DEBUG(
"Length of extensions %d bit-map", n_extensions);
417 ASN_DEBUG(
"Bit-map of %d elements", n_extensions);
423 ASN_DEBUG(
"Writing %d extensions", n_extensions);
#define ASN__ENCODED_OK(rval)
int uper_open_type_put(const asn_TYPE_descriptor_t *td, const asn_per_constraints_t *constraints, const void *sptr, asn_per_outp_t *po)
#define CALLOC(nmemb, size)
#define per_get_few_bits(data, bits)
static int SEQUENCE__handle_extensions(const asn_TYPE_descriptor_t *td, const void *sptr, asn_per_outp_t *po1, asn_per_outp_t *po2)
#define ASN__ENCODE_FAILED
asn_TYPE_descriptor_t * type
asn_enc_rval_t SEQUENCE_encode_uper(const asn_TYPE_descriptor_t *td, const asn_per_constraints_t *constraints, const void *sptr, asn_per_outp_t *po)
asn_TYPE_operation_t * op
static int CC_NOTUSED ASN__STACK_OVERFLOW_CHECK(const asn_codec_ctx_t *ctx)
static void ssize_t size_t
asn_dec_rval_t SEQUENCE_decode_uper(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd)
#define ASN__DECODE_STARVED
#define per_get_many_bits(data, dst, align, bits)
const struct asn_per_constraints_s * per_constraints
struct asn_TYPE_member_s * elements
ssize_t uper_get_nslength(asn_per_data_t *pd)
#define ASN__DECODE_FAILED
per_type_encoder_f * uper_encoder
per_type_decoder_f * uper_decoder
#define IN_EXTENSION_GROUP(specs, memb_idx)
enum asn_TYPE_flags_e flags
int(* default_value_cmp)(const void *sptr)
asn_dec_rval_t OPEN_TYPE_uper_get(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *parent_type, void *parent_structure, const asn_TYPE_member_t *element, asn_per_data_t *pd)
int uper_put_nslength(asn_per_outp_t *po, size_t length)
int uper_open_type_skip(const asn_codec_ctx_t *opt_codec_ctx, asn_per_data_t *pd)
#define per_put_few_bits(out, bits, obits)
asn_encoding_constraints_t encoding_constraints
asn_dec_rval_t uper_open_type_get(const asn_codec_ctx_t *opt_codec_ctx, const asn_TYPE_descriptor_t *td, const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd)
int(* default_value_set)(void **sptr)
etsi_its_denm_coding
Author(s): Jean-Pierre Busch
, Guido Küppers , Lennart Reiher
autogenerated on Sun May 18 2025 02:23:47