blob: b928b1a674c22dbacdabf6ea1f708dd52875752c [file] [log] [blame]
vlmc4436cf2004-10-21 11:20:50 +00001/*-
2 * Copyright (c) 2004 Lev Walkin <vlm@lionet.info>. All rights reserved.
3 * Redistribution and modifications are permitted subject to BSD license.
4 */
5#ifndef ASN_CODECS_PRIM_H
6#define ASN_CODECS_PRIM_H
7
8#include <asn_application.h>
9
10typedef struct ASN__PRIMITIVE_TYPE_s {
11 uint8_t *buf; /* Buffer with consecutive primitive encoding bytes */
12 int size; /* Size of the buffer */
13} ASN__PRIMITIVE_TYPE_t; /* Do not use this type directly! */
14
15asn_struct_free_f ASN__PRIMITIVE_TYPE_free;
16ber_type_decoder_f ber_decode_primitive;
17der_type_encoder_f der_encode_primitive;
18
19/*
vlm4df9cc12005-03-09 22:19:25 +000020 * A callback specification for the xer_decode_primitive() function below.
21 */
22enum xer_pbd_rval {
23 XPBD_SYSTEM_FAILURE, /* System failure (memory shortage, etc) */
24 XPBD_DECODER_LIMIT, /* Hit some decoder limitation or deficiency */
25 XPBD_BROKEN_ENCODING, /* Encoding of a primitive body is broken */
26 XPBD_NOT_BODY_IGNORE, /* Not a body format, but safe to ignore */
27 XPBD_BODY_CONSUMED, /* Body is recognized and consumed */
28};
29typedef enum xer_pbd_rval (xer_primitive_body_decoder_f)
30 (asn_TYPE_descriptor_t *td, void *struct_ptr,
31 const void *chunk_buf, size_t chunk_size);
32
33/*
vlmb848b2a2004-10-21 14:02:19 +000034 * Specific function to decode simple primitive types.
vlmc4436cf2004-10-21 11:20:50 +000035 * Also see xer_decode_general() in xer_decoder.h
36 */
37asn_dec_rval_t xer_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
38 asn_TYPE_descriptor_t *type_descriptor,
vlmb848b2a2004-10-21 14:02:19 +000039 void **struct_ptr, size_t struct_size,
vlmc4436cf2004-10-21 11:20:50 +000040 const char *opt_mname,
vlmb02dcc62005-03-10 18:52:02 +000041 const void *buf_ptr, size_t size,
vlm4df9cc12005-03-09 22:19:25 +000042 xer_primitive_body_decoder_f *prim_body_decoder
43);
vlmc4436cf2004-10-21 11:20:50 +000044
45#endif /* ASN_CODECS_PRIM_H */