summaryrefslogtreecommitdiffstats
path: root/src/asn1c/per_decoder.h
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-06-09 13:30:57 -0400
committerSimo Sorce <simo@redhat.com>2015-06-09 17:53:34 -0400
commitabd7c2e0ce5bd17997fb4c05eb2c7453060c0a3a (patch)
treef314e3a13669997c31a50511031298eba661566e /src/asn1c/per_decoder.h
parent9cfa62da9119d2cd62314e5328215f8ea45c64b1 (diff)
Use a compiler to marshall/unmarshall the sessions
This way changes are easier, all is needed is to change the session.asn1 file to add or remove elements, and different session types can also be supported at the same time.
Diffstat (limited to 'src/asn1c/per_decoder.h')
-rw-r--r--src/asn1c/per_decoder.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/asn1c/per_decoder.h b/src/asn1c/per_decoder.h
new file mode 100644
index 0000000..8397a54
--- /dev/null
+++ b/src/asn1c/per_decoder.h
@@ -0,0 +1,56 @@
+/*-
+ * Copyright (c) 2005, 2007 Lev Walkin <vlm@lionet.info>. All rights reserved.
+ * Redistribution and modifications are permitted subject to BSD license.
+ */
+#ifndef _PER_DECODER_H_
+#define _PER_DECODER_H_
+
+#include <asn_application.h>
+#include <per_support.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct asn_TYPE_descriptor_s; /* Forward declaration */
+
+/*
+ * Unaligned PER decoder of a "complete encoding" as per X.691#10.1.
+ * On success, this call always returns (.consumed >= 1), as per X.691#10.1.3.
+ */
+asn_dec_rval_t uper_decode_complete(struct asn_codec_ctx_s *opt_codec_ctx,
+ struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */
+ void **struct_ptr, /* Pointer to a target structure's pointer */
+ const void *buffer, /* Data to be decoded */
+ size_t size /* Size of data buffer */
+ );
+
+/*
+ * Unaligned PER decoder of any ASN.1 type. May be invoked by the application.
+ * WARNING: This call returns the number of BITS read from the stream. Beware.
+ */
+asn_dec_rval_t uper_decode(struct asn_codec_ctx_s *opt_codec_ctx,
+ struct asn_TYPE_descriptor_s *type_descriptor, /* Type to decode */
+ void **struct_ptr, /* Pointer to a target structure's pointer */
+ const void *buffer, /* Data to be decoded */
+ size_t size, /* Size of data buffer */
+ int skip_bits, /* Number of unused leading bits, 0..7 */
+ int unused_bits /* Number of unused tailing bits, 0..7 */
+ );
+
+
+/*
+ * Type of the type-specific PER decoder function.
+ */
+typedef asn_dec_rval_t (per_type_decoder_f)(asn_codec_ctx_t *opt_codec_ctx,
+ struct asn_TYPE_descriptor_s *type_descriptor,
+ asn_per_constraints_t *constraints,
+ void **struct_ptr,
+ asn_per_data_t *per_data
+ );
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PER_DECODER_H_ */