constr_SEQUENCE_OF_jer.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>.
3  * All rights reserved.
4  * Redistribution and modifications are permitted subject to BSD license.
5  */
9 
12  const void *sptr, int ilevel, enum jer_encoder_flags_e flags,
13  asn_app_consume_bytes_f *cb, void *app_key) {
14  asn_enc_rval_t er = {0,0,0};
15  const asn_SET_OF_specifics_t *specs = (const asn_SET_OF_specifics_t *)td->specifics;
16  const asn_TYPE_member_t *elm = td->elements;
17  const asn_anonymous_sequence_ *list = _A_CSEQUENCE_FROM_VOID(sptr);
18  int jmin = (flags & JER_F_MINIFIED);
19  int i;
20 
21  if(!sptr) ASN__ENCODE_FAILED;
22 
23  er.encoded = 0;
24  ASN__CALLBACK("[", 1);
25 
26  for(i = 0; i < list->count; i++) {
27  asn_enc_rval_t tmper = {0,0,0};
28  void *memb_ptr = list->array[i];
29  if(!memb_ptr) continue;
30 
31  if(!jmin) ASN__TEXT_INDENT(1, ilevel + 1);
32  tmper = elm->type->op->jer_encoder(elm->type,
33  elm->encoding_constraints.jer_constraints,
34  memb_ptr, ilevel + 1,
35  flags, cb, app_key);
36  if(tmper.encoded == -1) return tmper;
37  er.encoded += tmper.encoded;
38  if(tmper.encoded == 0 && specs->as_XMLValueList) {
39  const char *name = elm->type->xml_tag;
40  size_t len = strlen(name);
41  if(!jmin) ASN__TEXT_INDENT(1, ilevel + 1);
42  ASN__CALLBACK3("\"", 1, name, len, "\"", 1);
43  }
44 
45  if (i != list->count - 1) {
46  ASN__CALLBACK(",", 1);
47  }
48  }
49 
50  if(!jmin) ASN__TEXT_INDENT(1, ilevel);
51  ASN__CALLBACK("]", 1);
52 
53  ASN__ENCODED_OK(er);
54 cb_failed:
56 }
_A_CSEQUENCE_FROM_VOID
#define _A_CSEQUENCE_FROM_VOID(ptr)
Definition: asn_SEQUENCE_OF.h:46
ASN__ENCODED_OK
#define ASN__ENCODED_OK(rval)
Definition: asn_codecs.h:67
asn_jer_constraints_s
Definition: jer_support.h:18
asn_enc_rval_s
Definition: asn_codecs.h:41
jer_encoder_flags_e
jer_encoder_flags_e
Definition: jer_encoder.h:20
JER_F_MINIFIED
@ JER_F_MINIFIED
Definition: jer_encoder.h:23
ASN__CALLBACK
#define ASN__CALLBACK(buf, size)
Definition: asn_internal.h:108
ASN__CALLBACK3
#define ASN__CALLBACK3(buf1, size1, buf2, size2, buf3, size3)
Definition: asn_internal.h:112
ASN__ENCODE_FAILED
#define ASN__ENCODE_FAILED
Definition: asn_codecs.h:59
asn_TYPE_descriptor_s
Definition: constr_TYPE.h:224
ASN__TEXT_INDENT
#define ASN__TEXT_INDENT(nl, level)
Definition: asn_internal.h:117
asn_TYPE_descriptor_s::specifics
const void * specifics
Definition: constr_TYPE.h:259
asn_SET_OF_specifics_s::as_XMLValueList
int as_XMLValueList
Definition: constr_SET_OF.h:23
constr_SEQUENCE_OF.h
asn_app_consume_bytes_f
int() asn_app_consume_bytes_f(const void *buffer, size_t size, void *application_specific_key)
Definition: asn_application.h:124
SEQUENCE_OF_encode_jer
asn_enc_rval_t SEQUENCE_OF_encode_jer(const asn_TYPE_descriptor_t *td, const asn_jer_constraints_t *constraints, const void *sptr, int ilevel, enum jer_encoder_flags_e flags, asn_app_consume_bytes_f *cb, void *app_key)
Definition: constr_SEQUENCE_OF_jer.c:11
asn_internal.h
asn_TYPE_descriptor_s::elements
struct asn_TYPE_member_s * elements
Definition: constr_TYPE.h:252
asn_enc_rval_s::encoded
ssize_t encoded
Definition: asn_codecs.h:47
asn_SEQUENCE_OF.h
asn_TYPE_member_s
Definition: constr_TYPE.h:272
asn_SET_OF_specifics_s
Definition: constr_SET_OF.h:15


etsi_its_denm_coding
Author(s): Jean-Pierre Busch , Guido Küppers , Lennart Reiher
autogenerated on Sun May 18 2025 02:23:47