BOOLEAN_uper.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 
10 BOOLEAN_decode_uper(const asn_codec_ctx_t *opt_codec_ctx,
11  const asn_TYPE_descriptor_t *td,
12  const asn_per_constraints_t *constraints, void **sptr,
13  asn_per_data_t *pd) {
14  asn_dec_rval_t rv;
15  BOOLEAN_t *st = (BOOLEAN_t *)*sptr;
16 
17  (void)opt_codec_ctx;
18  (void)td;
19  (void)constraints;
20 
21  if(!st) {
22  st = (BOOLEAN_t *)(*sptr = MALLOC(sizeof(*st)));
23  if(!st) ASN__DECODE_FAILED;
24  }
25 
26  /*
27  * Extract a single bit
28  */
29  switch(per_get_few_bits(pd, 1)) {
30  case 1: *st = 1; break;
31  case 0: *st = 0; break;
32  case -1: default: ASN__DECODE_STARVED;
33  }
34 
35  ASN_DEBUG("%s decoded as %s", td->name, *st ? "TRUE" : "FALSE");
36 
37  rv.code = RC_OK;
38  rv.consumed = 1;
39  return rv;
40 }
41 
42 
45  const asn_per_constraints_t *constraints, const void *sptr,
46  asn_per_outp_t *po) {
47  const BOOLEAN_t *st = (const BOOLEAN_t *)sptr;
48  asn_enc_rval_t er = { 0, 0, 0 };
49 
50  (void)constraints;
51 
52  if(!st) ASN__ENCODE_FAILED;
53 
54  if(per_put_few_bits(po, *st ? 1 : 0, 1))
56 
57  ASN__ENCODED_OK(er);
58 }
asn_bit_outp_s
Definition: asn_bit_data.h:56
BOOLEAN_encode_uper
asn_enc_rval_t BOOLEAN_encode_uper(const asn_TYPE_descriptor_t *td, const asn_per_constraints_t *constraints, const void *sptr, asn_per_outp_t *po)
Definition: BOOLEAN_uper.c:44
BOOLEAN.h
ASN__ENCODED_OK
#define ASN__ENCODED_OK(rval)
Definition: asn_codecs.h:67
asn_TYPE_descriptor_s::name
const char * name
Definition: constr_TYPE.h:225
asn_enc_rval_s
Definition: asn_codecs.h:41
per_get_few_bits
#define per_get_few_bits(data, bits)
Definition: per_support.h:39
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
RC_OK
@ RC_OK
Definition: asn_codecs.h:82
asn_dec_rval_s::consumed
size_t consumed
Definition: asn_codecs.h:88
MALLOC
#define MALLOC(size)
Definition: asn_internal.h:38
ASN__DECODE_STARVED
#define ASN__DECODE_STARVED
Definition: asn_codecs.h:97
asn_internal.h
asn_codec_ctx_s
Definition: asn_codecs.h:23
asn_dec_rval_s
Definition: asn_codecs.h:86
ASN__DECODE_FAILED
#define ASN__DECODE_FAILED
Definition: asn_codecs.h:90
asn_per_constraints_s
Definition: per_support.h:30
BOOLEAN_t
unsigned BOOLEAN_t
Definition: BOOLEAN.h:19
BOOLEAN_decode_uper
asn_dec_rval_t BOOLEAN_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)
Definition: BOOLEAN_uper.c:10
per_put_few_bits
#define per_put_few_bits(out, bits, obits)
Definition: per_support.h:46
asn_dec_rval_s::code
enum asn_dec_rval_code_e code
Definition: asn_codecs.h:87


etsi_its_cam_ts_coding
Author(s): Jean-Pierre Busch , Guido Küppers , Lennart Reiher
autogenerated on Sun May 18 2025 02:21:22