brushing up


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@531 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/asn_codecs_prim.c b/skeletons/asn_codecs_prim.c
index 8791475..e6725b3 100644
--- a/skeletons/asn_codecs_prim.c
+++ b/skeletons/asn_codecs_prim.c
@@ -136,8 +136,8 @@
  * Local internal type passed around as an argument.
  */
 struct xdp_arg_s {
-	ASN__PRIMITIVE_TYPE_t *sptr;
-	ssize_t (*prim_body_decode)(ASN__PRIMITIVE_TYPE_t *sptr,
+	void *struct_key;
+	ssize_t (*prim_body_decode)(void *struct_key,
 		void *chunk_buf, size_t chunk_size);
 	int decoded_something;
 	int want_more;
@@ -181,7 +181,7 @@
 		return -1;
 	}
 
-	decoded = arg->prim_body_decode(arg->sptr, chunk_buf, chunk_size);
+	decoded = arg->prim_body_decode(arg->struct_key, chunk_buf, chunk_size);
 	if(decoded < 0) {
 		return -1;
 	} else {
@@ -218,7 +218,7 @@
 		return -1;
 	}
 
-	decoded = arg->prim_body_decode(arg->sptr, chunk_buf, chunk_size);
+	decoded = arg->prim_body_decode(arg->struct_key, chunk_buf, chunk_size);
 	if(decoded < 0) {
 		return -1;
 	} else {
@@ -231,10 +231,11 @@
 asn_dec_rval_t
 xer_decode_primitive(asn_codec_ctx_t *opt_codec_ctx,
 	asn_TYPE_descriptor_t *td,
-	ASN__PRIMITIVE_TYPE_t **sptr,
+	void **sptr,
+	size_t struct_size,
 	const char *opt_mname,
 	void *buf_ptr, size_t size,
-	ssize_t (*prim_body_decode)(ASN__PRIMITIVE_TYPE_t *sptr,
+	ssize_t (*prim_body_decode)(void *struct_key,
 		void *chunk_buf, size_t chunk_size)
 ) {
 	const char *xml_tag = opt_mname ? opt_mname : td->xml_tag;
@@ -246,7 +247,7 @@
 	 * Create the structure if does not exist.
 	 */
 	if(!*sptr) {
-		*sptr = CALLOC(1, sizeof(ASN__PRIMITIVE_TYPE_t));
+		*sptr = CALLOC(1, struct_size);
 		if(!*sptr) {
 			asn_dec_rval_t rval;
 			rval.code = RC_FAIL;
@@ -256,7 +257,7 @@
 	}
 
 	memset(&s_ctx, 0, sizeof(s_ctx));
-	s_arg.sptr = *sptr;
+	s_arg.struct_key = *sptr;
 	s_arg.prim_body_decode = prim_body_decode;
 	s_arg.decoded_something = 0;
 	s_arg.want_more = 0;