added const qualifier


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@801 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/BMPString.c b/skeletons/BMPString.c
index 10469ed..42b84f6 100644
--- a/skeletons/BMPString.c
+++ b/skeletons/BMPString.c
@@ -79,7 +79,7 @@
 asn_dec_rval_t
 BMPString_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rc;
 
 	rc = OCTET_STRING_decode_xer_utf8(opt_codec_ctx, td, sptr, opt_mname,
diff --git a/skeletons/BOOLEAN.c b/skeletons/BOOLEAN.c
index 04e6560..360b664 100644
--- a/skeletons/BOOLEAN.c
+++ b/skeletons/BOOLEAN.c
@@ -37,7 +37,7 @@
 asn_dec_rval_t
 BOOLEAN_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 		asn_TYPE_descriptor_t *td,
-		void **bool_value, void *buf_ptr, size_t size,
+		void **bool_value, const void *buf_ptr, size_t size,
 		int tag_mode) {
 	BOOLEAN_t *st = (BOOLEAN_t *)*bool_value;
 	asn_dec_rval_t rval;
@@ -66,7 +66,7 @@
 
 	ASN_DEBUG("Boolean length is %d bytes", (int)length);
 
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -84,7 +84,7 @@
 		 * value is already TRUE.
 		 * BOOLEAN is not supposed to contain meaningful data anyway.
 		 */
-		*st |= ((uint8_t *)buf_ptr)[lidx];
+		*st |= ((const uint8_t *)buf_ptr)[lidx];
 	}
 
 	rval.code = RC_OK;
@@ -169,7 +169,7 @@
 asn_dec_rval_t
 BOOLEAN_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(BOOLEAN_t), opt_mname, buf_ptr, size,
diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c
index 164bf3f..2579153 100644
--- a/skeletons/INTEGER.c
+++ b/skeletons/INTEGER.c
@@ -409,7 +409,7 @@
 asn_dec_rval_t
 INTEGER_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(INTEGER_t), opt_mname,
diff --git a/skeletons/NULL.c b/skeletons/NULL.c
index d5d98d9..5b0351e 100644
--- a/skeletons/NULL.c
+++ b/skeletons/NULL.c
@@ -81,7 +81,7 @@
 asn_dec_rval_t
 NULL_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(NULL_t), opt_mname, buf_ptr, size,
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index 102372c..acdbff6 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -44,7 +44,7 @@
 asn_dec_rval_t
 NativeInteger_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **nint_ptr, void *buf_ptr, size_t size, int tag_mode) {
+	void **nint_ptr, const void *buf_ptr, size_t size, int tag_mode) {
 	long *native = (long *)*nint_ptr;
 	asn_dec_rval_t rval;
 	ber_tlv_len_t length;
@@ -77,7 +77,7 @@
 	/*
 	 * Make sure we have this length.
 	 */
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -93,7 +93,7 @@
 	{
 		INTEGER_t tmp;
 		long l;
-		tmp.buf = (uint8_t *)buf_ptr;
+		(const uint8_t *)tmp.buf = (const uint8_t *)buf_ptr;
 		tmp.size = length;
 
 		if(asn_INTEGER2long(&tmp, &l)) {
@@ -169,7 +169,7 @@
 asn_dec_rval_t
 NativeInteger_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rval;
 	INTEGER_t *st = 0;
 	void *st_ptr = (void *)&st;
diff --git a/skeletons/NativeReal.c b/skeletons/NativeReal.c
index 810d510..5bc95b0 100644
--- a/skeletons/NativeReal.c
+++ b/skeletons/NativeReal.c
@@ -45,7 +45,7 @@
 asn_dec_rval_t
 NativeReal_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **dbl_ptr, void *buf_ptr, size_t size, int tag_mode) {
+	void **dbl_ptr, const void *buf_ptr, size_t size, int tag_mode) {
 	double *Dbl = (double *)*dbl_ptr;
 	asn_dec_rval_t rval;
 	ber_tlv_len_t length;
@@ -79,7 +79,7 @@
 	/*
 	 * Make sure we have this length.
 	 */
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -95,7 +95,7 @@
 	{
 		REAL_t tmp;
 		double d;
-		tmp.buf = (uint8_t *)buf_ptr;
+		(const uint8_t *)tmp.buf = (const uint8_t *)buf_ptr;
 		tmp.size = length;
 
 		if(asn_REAL2double(&tmp, &d)) {
@@ -158,7 +158,7 @@
 asn_dec_rval_t
 NativeReal_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rval;
 	REAL_t *st = 0;
 	double *Dbl = (double *)*sptr;
diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c
index 798929f..f899ab0 100644
--- a/skeletons/OBJECT_IDENTIFIER.c
+++ b/skeletons/OBJECT_IDENTIFIER.c
@@ -310,7 +310,7 @@
 asn_dec_rval_t
 OBJECT_IDENTIFIER_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(OBJECT_IDENTIFIER_t), opt_mname,
diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c
index 26df4bc..207b528 100644
--- a/skeletons/OCTET_STRING.c
+++ b/skeletons/OCTET_STRING.c
@@ -54,7 +54,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {			\
 		size_t num = (num_bytes);		\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -164,7 +164,7 @@
 asn_dec_rval_t
 OCTET_STRING_decode_ber(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **os_structure, void *buf_ptr, size_t size, int tag_mode) {
+	void **os_structure, const void *buf_ptr, size_t size, int tag_mode) {
 	asn_OCTET_STRING_specifics_t *specs = td->specifics
 				? (asn_OCTET_STRING_specifics_t *)td->specifics
 				: &asn_DEF_OCTET_STRING_specs;
@@ -285,7 +285,7 @@
 		tlv_constr = BER_TLV_CONSTRUCTED(buf_ptr);
 
 		ll = ber_fetch_length(tlv_constr,
-				(char *)buf_ptr + tl, Left - tl, &tlv_len);
+				(const char *)buf_ptr + tl,Left - tl,&tlv_len);
 		ASN_DEBUG("Got tag=%s, tc=%d, left=%ld, tl=%ld, len=%ld, ll=%ld",
 			ber_tlv_tag_string(tlv_tag), tlv_constr,
 				(long)Left, (long)tl, (long)tlv_len, (long)ll);
@@ -295,8 +295,8 @@
 		}
 
 		if(sel && sel->want_nulls
-			&& ((uint8_t *)buf_ptr)[0] == 0
-			&& ((uint8_t *)buf_ptr)[1] == 0)
+			&& ((const uint8_t *)buf_ptr)[0] == 0
+			&& ((const uint8_t *)buf_ptr)[1] == 0)
 		{
 
 			ASN_DEBUG("Eat EOC; wn=%d--", sel->want_nulls);
@@ -426,8 +426,8 @@
 			if(type_variant == _TT_BIT_STRING
 			&& sel->bits_chopped == 0) {
 				/* Put the unused-bits-octet away */
-				st->bits_unused = *(uint8_t *)buf_ptr;
-				APPEND(((char *)buf_ptr+1), (len - 1));
+				st->bits_unused = *(const uint8_t *)buf_ptr;
+				APPEND(((const char *)buf_ptr+1), (len - 1));
 				sel->bits_chopped = 1;
 			} else {
 				APPEND(buf_ptr, len);
@@ -457,7 +457,7 @@
 		if(size < (size_t)ctx->left) {
 			if(!size) RETURN(RC_WMORE);
 			if(type_variant == _TT_BIT_STRING && ctx->step == 0) {
-				st->bits_unused = *(uint8_t *)buf_ptr;
+				st->bits_unused = *(const uint8_t *)buf_ptr;
 				ctx->left--;
 				ADVANCE(1);
 			}
@@ -469,7 +469,7 @@
 		} else {
 			if(type_variant == _TT_BIT_STRING
 			&& ctx->step == 0 && ctx->left) {
-				st->bits_unused = *(uint8_t *)buf_ptr;
+				st->bits_unused = *(const uint8_t *)buf_ptr;
 				ctx->left--;
 				ADVANCE(1);
 			}
@@ -1096,7 +1096,7 @@
 static asn_dec_rval_t
 OCTET_STRING__decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-	const char *opt_mname, void *buf_ptr, size_t size,
+	const char *opt_mname, const void *buf_ptr, size_t size,
 	int (*opt_unexpected_tag_decoder)
 		(void *struct_ptr, const void *chunk_buf, size_t chunk_size),
 	ssize_t (*body_receiver)
@@ -1156,7 +1156,7 @@
 asn_dec_rval_t
 OCTET_STRING_decode_xer_hex(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
 		buf_ptr, size, 0, OCTET_STRING__convert_hexadecimal);
 }
@@ -1167,7 +1167,7 @@
 asn_dec_rval_t
 OCTET_STRING_decode_xer_binary(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
 		buf_ptr, size, 0, OCTET_STRING__convert_binary);
 }
@@ -1178,7 +1178,7 @@
 asn_dec_rval_t
 OCTET_STRING_decode_xer_utf8(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	return OCTET_STRING__decode_xer(opt_codec_ctx, td, sptr, opt_mname,
 		buf_ptr, size,
 		OCTET_STRING__handle_control_chars,
diff --git a/skeletons/REAL.c b/skeletons/REAL.c
index 4b73f4b..6a5e7cd 100644
--- a/skeletons/REAL.c
+++ b/skeletons/REAL.c
@@ -325,7 +325,7 @@
 asn_dec_rval_t
 REAL_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(REAL_t), opt_mname,
diff --git a/skeletons/RELATIVE-OID.c b/skeletons/RELATIVE-OID.c
index 97b69f6..b0be622 100644
--- a/skeletons/RELATIVE-OID.c
+++ b/skeletons/RELATIVE-OID.c
@@ -134,7 +134,7 @@
 asn_dec_rval_t
 RELATIVE_OID_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 
 	return xer_decode_primitive(opt_codec_ctx, td,
 		sptr, sizeof(RELATIVE_OID_t), opt_mname,
diff --git a/skeletons/UniversalString.c b/skeletons/UniversalString.c
index 2918d07..27f1cda 100644
--- a/skeletons/UniversalString.c
+++ b/skeletons/UniversalString.c
@@ -98,7 +98,7 @@
 asn_dec_rval_t
 UniversalString_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td, void **sptr,
-		const char *opt_mname, void *buf_ptr, size_t size) {
+		const char *opt_mname, const void *buf_ptr, size_t size) {
 	asn_dec_rval_t rc;
 
 	rc = OCTET_STRING_decode_xer_utf8(opt_codec_ctx, td, sptr, opt_mname,
diff --git a/skeletons/asn_codecs_prim.c b/skeletons/asn_codecs_prim.c
index a2aeeee..afadb72 100644
--- a/skeletons/asn_codecs_prim.c
+++ b/skeletons/asn_codecs_prim.c
@@ -13,7 +13,7 @@
 asn_dec_rval_t
 ber_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	void **sptr, void *buf_ptr, size_t size, int tag_mode) {
+	void **sptr, const void *buf_ptr, size_t size, int tag_mode) {
 	ASN__PRIMITIVE_TYPE_t *st = (ASN__PRIMITIVE_TYPE_t *)*sptr;
 	asn_dec_rval_t rval;
 	ber_tlv_len_t length;
@@ -47,7 +47,7 @@
 	/*
 	 * Make sure we have this length.
 	 */
-	buf_ptr = ((char *)buf_ptr) + rval.consumed;
+	buf_ptr = ((const char *)buf_ptr) + rval.consumed;
 	size -= rval.consumed;
 	if(length > (ber_tlv_len_t)size) {
 		rval.code = RC_WMORE;
@@ -238,7 +238,7 @@
 	void **sptr,
 	size_t struct_size,
 	const char *opt_mname,
-	void *buf_ptr, size_t size,
+	const void *buf_ptr, size_t size,
 	xer_primitive_body_decoder_f *prim_body_decoder
 ) {
 	const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
diff --git a/skeletons/asn_codecs_prim.h b/skeletons/asn_codecs_prim.h
index ceadf51..b928b1a 100644
--- a/skeletons/asn_codecs_prim.h
+++ b/skeletons/asn_codecs_prim.h
@@ -38,7 +38,7 @@
 	asn_TYPE_descriptor_t *type_descriptor,
 	void **struct_ptr, size_t struct_size,
 	const char *opt_mname,
-	void *buf_ptr, size_t size,
+	const void *buf_ptr, size_t size,
 	xer_primitive_body_decoder_f *prim_body_decoder
 );
 
diff --git a/skeletons/ber_decoder.c b/skeletons/ber_decoder.c
index f0a3551..dc097fc 100644
--- a/skeletons/ber_decoder.c
+++ b/skeletons/ber_decoder.c
@@ -8,7 +8,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {					\
 		size_t num = num_bytes;					\
-		ptr = ((char *)ptr) + num;				\
+		ptr = ((const char *)ptr) + num;			\
 		size -= num;						\
 		consumed_myself += num;					\
 	} while(0)
@@ -30,7 +30,7 @@
 asn_dec_rval_t
 ber_decode(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *type_descriptor,
-	void **struct_ptr, void *ptr, size_t size) {
+	void **struct_ptr, const void *ptr, size_t size) {
 	asn_codec_ctx_t s_codec_ctx;
 
 	/*
@@ -58,7 +58,7 @@
 asn_dec_rval_t
 ber_check_tags(asn_codec_ctx_t *opt_codec_ctx,
 		asn_TYPE_descriptor_t *td, asn_struct_ctx_t *opt_ctx,
-		void *ptr, size_t size, int tag_mode, int last_tag_form,
+		const void *ptr, size_t size, int tag_mode, int last_tag_form,
 		ber_tlv_len_t *last_length, int *opt_tlv_form) {
 	ssize_t consumed_myself = 0;
 	ssize_t tag_len;
@@ -128,7 +128,7 @@
 		}
 		tlv_constr = BER_TLV_CONSTRUCTED(ptr);
 		len_len = ber_fetch_length(tlv_constr,
-			(char *)ptr + tag_len, size - tag_len, &tlv_len);
+			(const char *)ptr + tag_len, size - tag_len, &tlv_len);
 		switch(len_len) {
 		case -1: RETURN(RC_FAIL);
 		case 0: RETURN(RC_WMORE);
@@ -208,7 +208,7 @@
 		 * Fetch and process L from TLV.
 		 */
 		len_len = ber_fetch_length(tlv_constr,
-			(char *)ptr + tag_len, size - tag_len, &tlv_len);
+			(const char *)ptr + tag_len, size - tag_len, &tlv_len);
 		ASN_DEBUG("Fetchinig len = %ld", (long)len_len);
 		switch(len_len) {
 		case -1: RETURN(RC_FAIL);
diff --git a/skeletons/ber_decoder.h b/skeletons/ber_decoder.h
index b835b0f..af8d8e3 100644
--- a/skeletons/ber_decoder.h
+++ b/skeletons/ber_decoder.h
@@ -17,7 +17,7 @@
 asn_dec_rval_t ber_decode(struct asn_codec_ctx_s *opt_codec_ctx,
 	struct asn_TYPE_descriptor_s *type_descriptor,
 	void **struct_ptr,	/* Pointer to a target structure's pointer */
-	void *buffer,		/* Data to be decoded */
+	const void *buffer,	/* Data to be decoded */
 	size_t size		/* Size of that buffer */
 	);
 
@@ -27,7 +27,7 @@
 typedef asn_dec_rval_t (ber_type_decoder_f)(
 		struct asn_codec_ctx_s *opt_codec_ctx,
 		struct asn_TYPE_descriptor_s *type_descriptor,
-		void **struct_ptr, void *buf_ptr, size_t size,
+		void **struct_ptr, const void *buf_ptr, size_t size,
 		int tag_mode);
 
 /*******************************
@@ -45,7 +45,7 @@
 		struct asn_codec_ctx_s *opt_codec_ctx,	/* optional context */
 		struct asn_TYPE_descriptor_s *type_dsc,
 		asn_struct_ctx_t *opt_ctx,	/* saved decoding context */
-		void *ptr, size_t size,
+		const void *ptr, size_t size,
 		int tag_mode,		/* {-1,0,1}: IMPLICIT, no, EXPLICIT */
 		int last_tag_form,	/* {-1,0:1}: any, primitive, constr */
 		ber_tlv_len_t *last_length,
diff --git a/skeletons/ber_tlv_length.c b/skeletons/ber_tlv_length.c
index 4f1ea88..49343d3 100644
--- a/skeletons/ber_tlv_length.c
+++ b/skeletons/ber_tlv_length.c
@@ -7,15 +7,15 @@
 #include <ber_tlv_tag.h>
 
 ssize_t
-ber_fetch_length(int _is_constructed, void *bufptr, size_t size,
+ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
 		ber_tlv_len_t *len_r) {
-	uint8_t *buf = (uint8_t *)bufptr;
+	const uint8_t *buf = (const uint8_t *)bufptr;
 	unsigned oct;
 
 	if(size == 0)
 		return 0;	/* Want more */
 
-	oct = *(uint8_t *)buf;
+	oct = *(const uint8_t *)buf;
 	if((oct & 0x80) == 0) {
 		/*
 		 * Short definite length.
@@ -75,7 +75,7 @@
 
 ssize_t
 ber_skip_length(asn_codec_ctx_t *opt_codec_ctx,
-		int _is_constructed, void *ptr, size_t size) {
+		int _is_constructed, const void *ptr, size_t size) {
 	ber_tlv_len_t vlen;	/* Length of V in TLV */
 	ssize_t tl;		/* Length of L in TLV */
 	ssize_t ll;		/* Length of L in TLV */
@@ -116,7 +116,7 @@
 	 * Indefinite length!
 	 */
 	ASN_DEBUG("Skipping indefinite length");
-	for(skip = ll, ptr = ((char *)ptr) + ll, size -= ll;;) {
+	for(skip = ll, ptr = ((const char *)ptr) + ll, size -= ll;;) {
 		ber_tlv_tag_t tag;
 
 		/* Fetch the tag */
@@ -125,7 +125,7 @@
 
 		ll = ber_skip_length(opt_codec_ctx,
 			BER_TLV_CONSTRUCTED(ptr),
-			((char *)ptr) + tl, size - tl);
+			((const char *)ptr) + tl, size - tl);
 		if(ll <= 0) return ll;
 
 		skip += tl + ll;
@@ -135,11 +135,11 @@
 		 * two consecutive 0 octets.
 		 * Check if it is true.
 		 */
-		if(((uint8_t *)ptr)[0] == 0
-		&& ((uint8_t *)ptr)[1] == 0)
+		if(((const uint8_t *)ptr)[0] == 0
+		&& ((const uint8_t *)ptr)[1] == 0)
 			return skip;
 
-		ptr = ((char *)ptr) + tl + ll;
+		ptr = ((const char *)ptr) + tl + ll;
 		size -= tl + ll;
  	}
 
diff --git a/skeletons/ber_tlv_length.h b/skeletons/ber_tlv_length.h
index 9d99e66..b7d6f74 100644
--- a/skeletons/ber_tlv_length.h
+++ b/skeletons/ber_tlv_length.h
@@ -17,7 +17,7 @@
  * On return with >0, len_r is constrained as -1..MAX, where -1 mean
  * that the value is of indefinite length.
  */
-ssize_t ber_fetch_length(int _is_constructed, void *bufptr, size_t size,
+ssize_t ber_fetch_length(int _is_constructed, const void *bufptr, size_t size,
 	ber_tlv_len_t *len_r);
 
 /*
@@ -30,7 +30,7 @@
 struct asn_codec_ctx_s;	/* Forward declaration */
 ssize_t ber_skip_length(
 	struct asn_codec_ctx_s *opt_codec_ctx,	/* optional context */
-	int _is_constructed, void *bufptr, size_t size);
+	int _is_constructed, const void *bufptr, size_t size);
 
 /*
  * This function serializes the length (L from TLV) in DER format.
diff --git a/skeletons/ber_tlv_tag.c b/skeletons/ber_tlv_tag.c
index 43a2d1a..4270876 100644
--- a/skeletons/ber_tlv_tag.c
+++ b/skeletons/ber_tlv_tag.c
@@ -7,7 +7,7 @@
 #include <errno.h>
 
 ssize_t
-ber_fetch_tag(void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
+ber_fetch_tag(const void *ptr, size_t size, ber_tlv_tag_t *tag_r) {
 	ber_tlv_tag_t val;
 	ber_tlv_tag_t tclass;
 	size_t skipped;
@@ -15,7 +15,7 @@
 	if(size == 0)
 		return 0;
 
-	val = *(uint8_t *)ptr;
+	val = *(const uint8_t *)ptr;
 	tclass = (val >> 6);
 	if((val &= 0x1F) != 0x1F) {
 		/*
@@ -30,9 +30,10 @@
 	 * Each octet contains 7 bits of useful information.
 	 * The MSB is 0 if it is the last octet of the tag.
 	 */
-	for(val = 0, ptr = ((char *)ptr) + 1, skipped = 2;
-			skipped <= size; ptr = ((char *)ptr) + 1, skipped++) {
-		unsigned int oct = *(uint8_t *)ptr;
+	for(val = 0, ptr = ((const char *)ptr) + 1, skipped = 2;
+			skipped <= size;
+				ptr = ((const char *)ptr) + 1, skipped++) {
+		unsigned int oct = *(const uint8_t *)ptr;
 		if(oct & 0x80) {
 			val = (val << 7) | (oct & 0x7F);
 			/*
diff --git a/skeletons/ber_tlv_tag.h b/skeletons/ber_tlv_tag.h
index 52a1141..51c9a08 100644
--- a/skeletons/ber_tlv_tag.h
+++ b/skeletons/ber_tlv_tag.h
@@ -18,7 +18,7 @@
  */
 #define	BER_TAG_CLASS(tag)	((tag) & 0x3)
 #define	BER_TAG_VALUE(tag)	((tag) >> 2)
-#define	BER_TLV_CONSTRUCTED(tagptr)	(((*(uint8_t *)tagptr) & 0x20)?1:0)
+#define	BER_TLV_CONSTRUCTED(tagptr)	(((*(const uint8_t *)tagptr)&0x20)?1:0)
 
 #define	BER_TAGS_EQUAL(tag1, tag2)	((tag1) == (tag2))
 
@@ -39,7 +39,7 @@
  * 	-1:	Fatal error deciphering tag.
  *	>0:	Number of bytes used from bufptr. tag_r will contain the tag.
  */
-ssize_t ber_fetch_tag(void *bufptr, size_t size, ber_tlv_tag_t *tag_r);
+ssize_t ber_fetch_tag(const void *bufptr, size_t size, ber_tlv_tag_t *tag_r);
 
 /*
  * This function serializes the tag (T from TLV) in BER format.
diff --git a/skeletons/constr_CHOICE.c b/skeletons/constr_CHOICE.c
index 4e90bbd..bcf4c16 100644
--- a/skeletons/constr_CHOICE.c
+++ b/skeletons/constr_CHOICE.c
@@ -34,7 +34,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -99,7 +99,7 @@
  */
 asn_dec_rval_t
 CHOICE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -211,7 +211,8 @@
 
 				skip = ber_skip_length(opt_codec_ctx,
 					BER_TLV_CONSTRUCTED(ptr),
-					(char *)ptr + tag_len, LEFT - tag_len);
+					(const char *)ptr + tag_len,
+					LEFT - tag_len);
 
 				switch(skip) {
 				case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
@@ -320,13 +321,13 @@
 			/*
 			 * Expected <0><0>...
 			 */
-			if(((uint8_t *)ptr)[0] == 0) {
+			if(((const uint8_t *)ptr)[0] == 0) {
 				if(LEFT < 2) {
 					if(SIZE_VIOLATION)
 						RETURN(RC_FAIL);
 					else
 						RETURN(RC_WMORE);
-				} else if(((uint8_t *)ptr)[1] == 0) {
+				} else if(((const uint8_t *)ptr)[1] == 0) {
 					/*
 					 * Correctly finished with <0><0>.
 					 */
@@ -543,7 +544,7 @@
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -554,7 +555,7 @@
 asn_dec_rval_t
 CHOICE_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index baecf2d..d952667 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -34,7 +34,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -110,7 +110,7 @@
  */
 asn_dec_rval_t
 SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -240,13 +240,13 @@
 		case -1: RETURN(RC_FAIL);
 		}
 
-		if(ctx->left < 0 && ((uint8_t *)ptr)[0] == 0) {
+		if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
 			if(LEFT < 2) {
 				if(SIZE_VIOLATION)
 					RETURN(RC_FAIL);
 				else
 					RETURN(RC_WMORE);
-			} else if(((uint8_t *)ptr)[1] == 0) {
+			} else if(((const uint8_t *)ptr)[1] == 0) {
 			ASN_DEBUG("edx = %d, opt = %d, ec=%d",
 				edx, elements[edx].optional,
 				td->elements_count);
@@ -362,7 +362,8 @@
 
 				skip = ber_skip_length(opt_codec_ctx,
 					BER_TLV_CONSTRUCTED(ptr),
-					(char *)ptr + tag_len, LEFT - tag_len);
+					(const char *)ptr + tag_len,
+					LEFT - tag_len);
 				ASN_DEBUG("Skip length %d in %s",
 					(int)skip, td->name);
 				switch(skip) {
@@ -455,13 +456,13 @@
 			 * If expected <0><0>...
 			 */
 			if(ctx->left < 0
-				&& ((uint8_t *)ptr)[0] == 0) {
+				&& ((const uint8_t *)ptr)[0] == 0) {
 				if(LEFT < 2) {
 					if(SIZE_VIOLATION)
 						RETURN(RC_FAIL);
 					else
 						RETURN(RC_WMORE);
-				} else if(((uint8_t *)ptr)[1] == 0) {
+				} else if(((const uint8_t *)ptr)[1] == 0) {
 					/*
 					 * Correctly finished with <0><0>.
 					 */
@@ -484,7 +485,7 @@
 
 			ll = ber_skip_length(opt_codec_ctx,
 				BER_TLV_CONSTRUCTED(ptr),
-				(char *)ptr + tl, LEFT - tl);
+				(const char *)ptr + tl, LEFT - tl);
 			switch(ll) {
 			case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
 				/* Fall through */
@@ -593,7 +594,7 @@
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -604,7 +605,7 @@
 asn_dec_rval_t
 SEQUENCE_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index 4099186..1b2f85f 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -42,7 +42,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -101,7 +101,7 @@
  */
 asn_dec_rval_t
 SET_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -211,13 +211,13 @@
 		case -1: RETURN(RC_FAIL);
 		}
 
-		if(ctx->left < 0 && ((uint8_t *)ptr)[0] == 0) {
+		if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
 			if(LEFT < 2) {
 				if(SIZE_VIOLATION)
 					RETURN(RC_FAIL);
 				else
 					RETURN(RC_WMORE);
-			} else if(((uint8_t *)ptr)[1] == 0) {
+			} else if(((const uint8_t *)ptr)[1] == 0) {
 				/*
 				 * Found the terminator of the
 				 * indefinite length structure.
@@ -253,7 +253,7 @@
 
 			skip = ber_skip_length(opt_codec_ctx,
 				BER_TLV_CONSTRUCTED(ptr),
-				(char *)ptr + tag_len, LEFT - tag_len);
+				(const char *)ptr + tag_len, LEFT - tag_len);
 
 			switch(skip) {
 			case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
@@ -345,13 +345,13 @@
 			 * If expected <0><0>...
 			 */
 			if(ctx->left < 0
-				&& ((uint8_t *)ptr)[0] == 0) {
+				&& ((const uint8_t *)ptr)[0] == 0) {
 				if(LEFT < 2) {
 					if(SIZE_VIOLATION)
 						RETURN(RC_FAIL);
 					else
 						RETURN(RC_WMORE);
-				} else if(((uint8_t *)ptr)[1] == 0) {
+				} else if(((const uint8_t *)ptr)[1] == 0) {
 					/*
 					 * Correctly finished with <0><0>.
 					 */
@@ -366,13 +366,13 @@
 				ASN_DEBUG("Unexpected continuation "
 					"of a non-extensible type %s "
 					"(ptr=%02x)",
-					td->name, *(uint8_t *)ptr);
+					td->name, *(const uint8_t *)ptr);
 				RETURN(RC_FAIL);
 			}
 
 			ll = ber_skip_length(opt_codec_ctx,
 				BER_TLV_CONSTRUCTED(ptr),
-				(char *)ptr + tl, LEFT - tl);
+				(const char *)ptr + tl, LEFT - tl);
 			switch(ll) {
 			case 0: if(!SIZE_VIOLATION) RETURN(RC_WMORE);
 				/* Fall through */
@@ -573,7 +573,7 @@
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -584,7 +584,7 @@
 asn_dec_rval_t
 SET_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/constr_SET_OF.c b/skeletons/constr_SET_OF.c
index c6ec6af..84892e7 100644
--- a/skeletons/constr_SET_OF.c
+++ b/skeletons/constr_SET_OF.c
@@ -34,7 +34,7 @@
 #undef	ADVANCE
 #define	ADVANCE(num_bytes)	do {		\
 		size_t num = num_bytes;		\
-		ptr = ((char *)ptr) + num;	\
+		ptr = ((const char *)ptr) + num;\
 		size -= num;			\
 		if(ctx->left >= 0)		\
 			ctx->left -= num;	\
@@ -67,7 +67,7 @@
  */
 asn_dec_rval_t
 SET_OF_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-	void **struct_ptr, void *ptr, size_t size, int tag_mode) {
+	void **struct_ptr, const void *ptr, size_t size, int tag_mode) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
@@ -166,13 +166,13 @@
 		case -1: RETURN(RC_FAIL);
 		}
 
-		if(ctx->left < 0 && ((uint8_t *)ptr)[0] == 0) {
+		if(ctx->left < 0 && ((const uint8_t *)ptr)[0] == 0) {
 			if(LEFT < 2) {
 				if(SIZE_VIOLATION)
 					RETURN(RC_FAIL);
 				else
 					RETURN(RC_WMORE);
-			} else if(((uint8_t *)ptr)[1] == 0) {
+			} else if(((const uint8_t *)ptr)[1] == 0) {
 				/*
 				 * Found the terminator of the
 				 * indefinite length structure.
@@ -241,15 +241,15 @@
 		 */
 		while(ctx->left < 0) {
 			if(LEFT < 2) {
-				if(LEFT > 0 && ((char *)ptr)[0] != 0) {
+				if(LEFT > 0 && ((const char *)ptr)[0] != 0) {
 					/* Unexpected tag */
 					RETURN(RC_FAIL);
 				} else {
 					RETURN(RC_WMORE);
 				}
 			}
-			if(((char *)ptr)[0] == 0
-			&& ((char *)ptr)[1] == 0) {
+			if(((const char *)ptr)[0] == 0
+			&& ((const char *)ptr)[1] == 0) {
 				ADVANCE(2);
 				ctx->left++;
 			} else {
@@ -452,7 +452,7 @@
 #undef	XER_ADVANCE
 #define	XER_ADVANCE(num_bytes)	do {			\
 		size_t num = num_bytes;			\
-		buf_ptr = ((char *)buf_ptr) + num;	\
+		buf_ptr = ((const char *)buf_ptr) + num;\
 		size -= num;				\
 		consumed_myself += num;			\
 	} while(0)
@@ -463,7 +463,7 @@
 asn_dec_rval_t
 SET_OF_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 	void **struct_ptr, const char *opt_mname,
-		void *buf_ptr, size_t size) {
+		const void *buf_ptr, size_t size) {
 	/*
 	 * Bring closer parts of structure description.
 	 */
diff --git a/skeletons/xer_decoder.c b/skeletons/xer_decoder.c
index 6456666..d0a0878 100644
--- a/skeletons/xer_decoder.c
+++ b/skeletons/xer_decoder.c
@@ -10,7 +10,7 @@
  */
 asn_dec_rval_t
 xer_decode(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
-		void **struct_ptr, void *buffer, size_t size) {
+		void **struct_ptr, const void *buffer, size_t size) {
 	asn_codec_ctx_t s_codec_ctx;
 
 	/*
diff --git a/skeletons/xer_decoder.h b/skeletons/xer_decoder.h
index 4f6b537..e372bbd 100644
--- a/skeletons/xer_decoder.h
+++ b/skeletons/xer_decoder.h
@@ -15,7 +15,7 @@
 asn_dec_rval_t xer_decode(struct asn_codec_ctx_s *opt_codec_ctx,
 	struct asn_TYPE_descriptor_s *type_descriptor,
 	void **struct_ptr,	/* Pointer to a target structure's pointer */
-	void *buffer,		/* Data to be decoded */
+	const void *buffer,	/* Data to be decoded */
 	size_t size		/* Size of that buffer */
 	);
 
@@ -26,7 +26,7 @@
 		struct asn_TYPE_descriptor_s *type_descriptor,
 		void **struct_ptr,
 		const char *opt_mname,	/* Member name */
-		void *buf_ptr, size_t size
+		const void *buf_ptr, size_t size
 	);
 
 /*******************************
@@ -61,7 +61,7 @@
   typedef enum pxer_chunk_type {
 	PXER_TAG,	/* Complete XER tag */
 	PXER_TEXT,	/* Plain text between XER tags */
-	PXER_COMMENT,	/* A comment, may be part of */
+	PXER_COMMENT	/* A comment, may be part of */
   } pxer_chunk_type_e;
 ssize_t xer_next_token(int *stateContext,
 	const void *buffer, size_t size, pxer_chunk_type_e *_ch_type);
@@ -77,7 +77,7 @@
 	XCT__UNK__MASK	= 4,	/* Mask of everything unexpected */
 	XCT_UNKNOWN_OP	= 5,	/* Unexpected <opening> tag */
 	XCT_UNKNOWN_CL	= 6,	/* Unexpected </closing> tag */
-	XCT_UNKNOWN_BO	= 7,	/* Unexpected <modified/> tag */
+	XCT_UNKNOWN_BO	= 7	/* Unexpected <modified/> tag */
   } xer_check_tag_e;
 xer_check_tag_e xer_check_tag(const void *buf_ptr, int size,
 		const char *need_tag);