2  * Copyright (c) 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
 
   3  * Redistribution and modifications are permitted subject to BSD license.
 
   5 #ifndef ASN_CODECS_PRIM_H
 
   6 #define ASN_CODECS_PRIM_H
 
   8 #include <asn_application.h>
 
  14 typedef struct ASN__PRIMITIVE_TYPE_s {
 
  15         uint8_t *buf;   /* Buffer with consecutive primitive encoding bytes */
 
  16         int size;       /* Size of the buffer */
 
  17 } ASN__PRIMITIVE_TYPE_t;        /* Do not use this type directly! */
 
  19 asn_struct_free_f ASN__PRIMITIVE_TYPE_free;
 
  20 ber_type_decoder_f ber_decode_primitive;
 
  21 der_type_encoder_f der_encode_primitive;
 
  24  * A callback specification for the xer_decode_primitive() function below.
 
  27         XPBD_SYSTEM_FAILURE,    /* System failure (memory shortage, etc) */
 
  28         XPBD_DECODER_LIMIT,     /* Hit some decoder limitation or deficiency */
 
  29         XPBD_BROKEN_ENCODING,   /* Encoding of a primitive body is broken */
 
  30         XPBD_NOT_BODY_IGNORE,   /* Not a body format, but safe to ignore */
 
  31         XPBD_BODY_CONSUMED      /* Body is recognized and consumed */
 
  33 typedef enum xer_pbd_rval (xer_primitive_body_decoder_f)
 
  34         (asn_TYPE_descriptor_t *td, void *struct_ptr,
 
  35                 const void *chunk_buf, size_t chunk_size);
 
  38  * Specific function to decode simple primitive types.
 
  39  * Also see xer_decode_general() in xer_decoder.h
 
  41 asn_dec_rval_t xer_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
 
  42         asn_TYPE_descriptor_t *type_descriptor,
 
  43         void **struct_ptr, size_t struct_size,
 
  44         const char *opt_mname,
 
  45         const void *buf_ptr, size_t size,
 
  46         xer_primitive_body_decoder_f *prim_body_decoder
 
  53 #endif  /* ASN_CODECS_PRIM_H */