| /* |
| * Copyright (c) 2017 Lev Walkin <vlm@lionet.info>. All rights reserved. |
| * Redistribution and modifications are permitted subject to BSD license. |
| */ |
| #ifndef OER_ENCODER_H |
| #define OER_ENCODER_H |
| |
| #include <asn_application.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| struct asn_TYPE_descriptor_s; /* Forward declaration */ |
| |
| /* |
| * The Octet Encoding Rules (OER, X.696 08/2015) encoder for any type. |
| * This function may be invoked directly by the application. |
| * Produces CANONICAL-OER output compatible with CANONICAL-OER |
| * and BASIC-OER decoders. |
| */ |
| asn_enc_rval_t oer_encode(const struct asn_TYPE_descriptor_s *type_descriptor, |
| const void *struct_ptr, /* Structure to be encoded */ |
| asn_app_consume_bytes_f *consume_bytes_cb, |
| void *app_key /* Arbitrary callback argument */ |
| ); |
| |
| /* A variant of oer_encode() which encodes data into the pre-allocated buffer */ |
| asn_enc_rval_t oer_encode_to_buffer( |
| const struct asn_TYPE_descriptor_s *type_descriptor, |
| const asn_oer_constraints_t *constraints, |
| const void *struct_ptr, /* Structure to be encoded */ |
| void *buffer, /* Pre-allocated buffer */ |
| size_t buffer_size /* Initial buffer size (maximum) */ |
| ); |
| |
| /* |
| * Type of the generic OER encoder. |
| */ |
| typedef asn_enc_rval_t(oer_type_encoder_f)( |
| const struct asn_TYPE_descriptor_s *type_descriptor, |
| const asn_oer_constraints_t *constraints, |
| const void *struct_ptr, /* Structure to be encoded */ |
| asn_app_consume_bytes_f *consume_bytes_cb, /* Callback */ |
| void *app_key /* Arbitrary callback argument */ |
| ); |
| |
| /* |
| * Write out the Open Type (X.696 (08/2015), #30). |
| * RETURN VALUES: |
| * -1: Fatal error encoding the type. |
| * >0: Number of bytes serialized. |
| */ |
| ssize_t oer_open_type_put(const struct asn_TYPE_descriptor_s *td, |
| const asn_oer_constraints_t *constraints, |
| const void *struct_ptr, |
| asn_app_consume_bytes_f *consume_bytes_cb, |
| void *app_key); |
| |
| |
| /* |
| * Length-prefixed buffer encoding for primitive types. |
| */ |
| oer_type_encoder_f oer_encode_primitive; |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* OER_ENCODER_H */ |