/* * Copyright (c) 2017 Lev Walkin . All rights reserved. * Redistribution and modifications are permitted subject to BSD license. */ #ifndef OER_ENCODER_H #define OER_ENCODER_H #include #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 */