NativeInteger_aper.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  */
8 
11  const asn_TYPE_descriptor_t *td,
12  const asn_per_constraints_t *constraints, void **sptr, asn_per_data_t *pd) {
13 
14  const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics;
15  asn_dec_rval_t rval;
16  long *native = (long *)*sptr;
17  INTEGER_t tmpint;
18  void *tmpintptr = &tmpint;
19 
20  (void)opt_codec_ctx;
21  ASN_DEBUG("Decoding NativeInteger %s (APER)", td->name);
22 
23  if(!native) {
24  native = (long *)(*sptr = CALLOC(1, sizeof(*native)));
25  if(!native) ASN__DECODE_FAILED;
26  }
27 
28  memset(&tmpint, 0, sizeof tmpint);
29  rval = INTEGER_decode_aper(opt_codec_ctx, td, constraints,
30  &tmpintptr, pd);
31  if(rval.code == RC_OK) {
32  if((specs&&specs->field_unsigned)
33  ? asn_INTEGER2ulong(&tmpint, (unsigned long *)native)
34  : asn_INTEGER2long(&tmpint, native))
35  rval.code = RC_FAIL;
36  else
37  ASN_DEBUG("NativeInteger %s got value %ld",
38  td->name, *native);
39  }
41 
42  return rval;
43 }
44 
47  const asn_per_constraints_t *constraints,
48  const void *sptr, asn_per_outp_t *po) {
49 
50  const asn_INTEGER_specifics_t *specs = (const asn_INTEGER_specifics_t *)td->specifics;
51  asn_enc_rval_t er = {0,0,0};
52  long native;
53  INTEGER_t tmpint;
54 
55  if(!sptr) ASN__ENCODE_FAILED;
56 
57  native = *(const long *)sptr;
58 
59  ASN_DEBUG("Encoding NativeInteger %s %ld (APER)", td->name, native);
60 
61  memset(&tmpint, 0, sizeof(tmpint));
62  if((specs&&specs->field_unsigned)
63  ? asn_ulong2INTEGER(&tmpint, (unsigned long)native)
64  : asn_long2INTEGER(&tmpint, native))
66  er = INTEGER_encode_aper(td, constraints, &tmpint, po);
68  return er;
69 }
asn_bit_outp_s
Definition: asn_bit_data.h:56
ASN__PRIMITIVE_TYPE_s
Definition: asn_codecs_prim.h:14
asn_TYPE_descriptor_s::name
const char * name
Definition: constr_TYPE.h:225
asn_enc_rval_s
Definition: asn_codecs.h:41
CALLOC
#define CALLOC(nmemb, size)
Definition: asn_internal.h:37
asn_DEF_INTEGER
asn_TYPE_descriptor_t asn_DEF_INTEGER
Definition: INTEGER.c:75
asn_bit_data_s
Definition: asn_bit_data.h:17
ASN__ENCODE_FAILED
#define ASN__ENCODE_FAILED
Definition: asn_codecs.h:59
asn_TYPE_descriptor_s
Definition: constr_TYPE.h:224
asn_TYPE_descriptor_s::specifics
const void * specifics
Definition: constr_TYPE.h:259
asn_INTEGER_specifics_s
Definition: INTEGER.h:28
RC_OK
@ RC_OK
Definition: asn_codecs.h:82
NativeInteger_encode_aper
asn_enc_rval_t NativeInteger_encode_aper(const asn_TYPE_descriptor_t *td, const asn_per_constraints_t *constraints, const void *sptr, asn_per_outp_t *po)
Definition: NativeInteger_aper.c:46
NativeInteger_decode_aper
asn_dec_rval_t NativeInteger_decode_aper(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)
Definition: NativeInteger_aper.c:10
INTEGER_decode_aper
per_type_decoder_f INTEGER_decode_aper
Definition: INTEGER.h:79
asn_internal.h
asn_codec_ctx_s
Definition: asn_codecs.h:23
asn_dec_rval_s
Definition: asn_codecs.h:86
INTEGER_encode_aper
per_type_encoder_f INTEGER_encode_aper
Definition: INTEGER.h:80
ASN__DECODE_FAILED
#define ASN__DECODE_FAILED
Definition: asn_codecs.h:90
asn_ulong2INTEGER
int asn_ulong2INTEGER(INTEGER_t *i, unsigned long l)
Definition: INTEGER.c:419
asn_INTEGER2ulong
int asn_INTEGER2ulong(const INTEGER_t *i, unsigned long *l)
Definition: INTEGER.c:399
asn_long2INTEGER
int asn_long2INTEGER(INTEGER_t *i, long l)
Definition: INTEGER.c:414
asn_per_constraints_s
Definition: per_support.h:30
asn_INTEGER_specifics_s::field_unsigned
int field_unsigned
Definition: INTEGER.h:35
ASN_STRUCT_FREE_CONTENTS_ONLY
#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr)
Definition: constr_TYPE.h:123
asn_INTEGER2long
int asn_INTEGER2long(const INTEGER_t *i, long *l)
Definition: INTEGER.c:384
NativeInteger.h
RC_FAIL
@ RC_FAIL
Definition: asn_codecs.h:84


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