jer_encoder.c
Go to the documentation of this file.
1 /*-
2  * Copyright (c) 2003, 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
3  * Redistribution and modifications are permitted subject to BSD license.
4  */
6 #include <stdio.h>
7 #include <errno.h>
8 
9 /*
10  * The JER encoder of any type. May be invoked by the application.
11  */
13 jer_encode(const asn_TYPE_descriptor_t *td, const void *sptr,
14  enum jer_encoder_flags_e jer_flags,
15  asn_app_consume_bytes_f *cb, void *app_key) {
16  asn_enc_rval_t er = {0, 0, 0};
17  asn_enc_rval_t tmper;
18 
19  if(!td || !sptr) goto cb_failed;
20 
21  tmper = td->op->jer_encoder(td, 0, sptr, 0, jer_flags, cb, app_key);
22  if(tmper.encoded == -1) return tmper;
23  er.encoded += tmper.encoded;
24 
25  ASN__ENCODED_OK(er);
26 cb_failed:
28 }
29 
30 /*
31  * This is a helper function for jer_fprint, which directs all incoming data
32  * into the provided file descriptor.
33  */
34 static int
35 jer__print2fp(const void *buffer, size_t size, void *app_key) {
36  FILE *stream = (FILE *)app_key;
37 
38  if(fwrite(buffer, 1, size, stream) != size)
39  return -1;
40 
41  return 0;
42 }
43 
44 int
45 jer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr) {
46  asn_enc_rval_t er = {0,0,0};
47 
48  if(!stream) stream = stdout;
49  if(!td || !sptr)
50  return -1;
51 
52  er = jer_encode(td, sptr, JER_F, jer__print2fp, stream);
53  if(er.encoded == -1)
54  return -1;
55 
56  return fflush(stream);
57 }
58 
ASN__ENCODED_OK
#define ASN__ENCODED_OK(rval)
Definition: asn_codecs.h:67
jer__print2fp
static int jer__print2fp(const void *buffer, size_t size, void *app_key)
Definition: jer_encoder.c:35
asn_enc_rval_s
Definition: asn_codecs.h:41
jer_encoder_flags_e
jer_encoder_flags_e
Definition: jer_encoder.h:20
JER_F
@ JER_F
Definition: jer_encoder.h:22
asn_TYPE_operation_s::jer_encoder
jer_type_encoder_f * jer_encoder
Definition: constr_TYPE.h:194
jer_fprint
int jer_fprint(FILE *stream, const asn_TYPE_descriptor_t *td, const void *sptr)
Definition: jer_encoder.c:45
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::op
asn_TYPE_operation_t * op
Definition: constr_TYPE.h:232
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
asn_internal.h
jer_encode
asn_enc_rval_t jer_encode(const asn_TYPE_descriptor_t *td, const void *sptr, enum jer_encoder_flags_e jer_flags, asn_app_consume_bytes_f *cb, void *app_key)
Definition: jer_encoder.c:13
asn_enc_rval_s::encoded
ssize_t encoded
Definition: asn_codecs.h:47


etsi_its_vam_ts_coding
Author(s): Jean-Pierre Busch , Guido Küppers , Lennart Reiher
autogenerated on Sun May 18 2025 02:30:55