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;