macro for free_struct()
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@1086 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/ANY.c b/skeletons/ANY.c
index b1e35bf..a96aac0 100644
--- a/skeletons/ANY.c
+++ b/skeletons/ANY.c
@@ -133,7 +133,7 @@
return 0;
} else {
/* Remove possibly partially decoded data. */
- td->free_struct(td, newst, 0);
+ ASN_STRUCT_FREE(*td, newst);
return -1;
}
}
diff --git a/skeletons/GeneralizedTime.c b/skeletons/GeneralizedTime.c
index 6934a82..79f62e8 100644
--- a/skeletons/GeneralizedTime.c
+++ b/skeletons/GeneralizedTime.c
@@ -218,8 +218,7 @@
rv = OCTET_STRING_encode_xer_utf8(td, sptr, ilevel, flags,
cb, app_key);
- asn_DEF_GeneralizedTime.free_struct(&asn_DEF_GeneralizedTime,
- gt, 0);
+ ASN_STRUCT_FREE(asn_DEF_GeneralizedTime, gt);
return rv;
} else {
return OCTET_STRING_encode_xer_utf8(td, sptr, ilevel, flags,
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index b974ebf..2f2b32d 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -194,7 +194,7 @@
*/
rval.consumed = 0;
}
- asn_DEF_INTEGER.free_struct(&asn_DEF_INTEGER, &st, 1);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &st);
return rval;
}
@@ -248,7 +248,7 @@
ASN_DEBUG("NativeInteger %s got value %ld",
td->name, *native);
}
- asn_DEF_INTEGER.free_struct(&asn_DEF_INTEGER, &tmpint, 1);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_INTEGER, &tmpint);
return rval;
}
diff --git a/skeletons/NativeReal.c b/skeletons/NativeReal.c
index 9b30368..3e6c254 100644
--- a/skeletons/NativeReal.c
+++ b/skeletons/NativeReal.c
@@ -152,7 +152,7 @@
}
/* Free possibly allocated members of the temporary structure */
- asn_DEF_REAL.free_struct(&asn_DEF_REAL, &tmp, 1);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_REAL, &tmp);
return erval;
}
@@ -190,7 +190,7 @@
} else {
rval.consumed = 0;
}
- asn_DEF_REAL.free_struct(&asn_DEF_REAL, st, 0);
+ ASN_STRUCT_FREE(asn_DEF_REAL, st);
return rval;
}
diff --git a/skeletons/asn-decoder-template.c b/skeletons/asn-decoder-template.c
index 3225b66..dd0efdc 100644
--- a/skeletons/asn-decoder-template.c
+++ b/skeletons/asn-decoder-template.c
@@ -244,7 +244,7 @@
break;
}
- pduType->free_struct(pduType, structure, 0);
+ ASN_STRUCT_FREE(*pduType, structure);
}
}
@@ -425,7 +425,7 @@
fclose(fp);
/* Clean up partially decoded structure */
- pduType->free_struct(pduType, structure, 0);
+ ASN_STRUCT_FREE(*pduType, structure);
fprintf(stderr, "%s: "
"Decode failed past byte %ld: %s\n",
diff --git a/skeletons/constr_CHOICE.c b/skeletons/constr_CHOICE.c
index 33cec7e..26fd8dd 100644
--- a/skeletons/constr_CHOICE.c
+++ b/skeletons/constr_CHOICE.c
@@ -959,10 +959,10 @@
if(elm->flags & ATF_POINTER) {
memb_ptr = *(void **)((char *)ptr + elm->memb_offset);
if(memb_ptr)
- elm->type->free_struct(elm->type, memb_ptr, 0);
+ ASN_STRUCT_FREE(*elm->type, memb_ptr);
} else {
memb_ptr = (void *)((char *)ptr + elm->memb_offset);
- elm->type->free_struct(elm->type, memb_ptr, 1);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
}
}
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index e4a5b08..80cd6af 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -958,10 +958,10 @@
if(elm->flags & ATF_POINTER) {
memb_ptr = *(void **)((char *)sptr + elm->memb_offset);
if(memb_ptr)
- elm->type->free_struct(elm->type, memb_ptr, 0);
+ ASN_STRUCT_FREE(*elm->type, memb_ptr);
} else {
memb_ptr = (void *)((char *)sptr + elm->memb_offset);
- elm->type->free_struct(elm->type, memb_ptr, 1);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
}
}
diff --git a/skeletons/constr_SET.c b/skeletons/constr_SET.c
index e83abd7..bb99eed 100644
--- a/skeletons/constr_SET.c
+++ b/skeletons/constr_SET.c
@@ -924,10 +924,10 @@
if(elm->flags & ATF_POINTER) {
memb_ptr = *(void **)((char *)ptr + elm->memb_offset);
if(memb_ptr)
- elm->type->free_struct(elm->type, memb_ptr, 0);
+ ASN_STRUCT_FREE(*elm->type, memb_ptr);
} else {
memb_ptr = (void *)((char *)ptr + elm->memb_offset);
- elm->type->free_struct(elm->type, memb_ptr, 1);
+ ASN_STRUCT_FREE_CONTENTS_ONLY(*elm->type, memb_ptr);
}
}
diff --git a/skeletons/constr_SET_OF.c b/skeletons/constr_SET_OF.c
index 7ca23a4..bb6d2d3 100644
--- a/skeletons/constr_SET_OF.c
+++ b/skeletons/constr_SET_OF.c
@@ -798,7 +798,7 @@
for(i = 0; i < list->count; i++) {
void *memb_ptr = list->array[i];
if(memb_ptr)
- elm->type->free_struct(elm->type, memb_ptr, 0);
+ ASN_STRUCT_FREE(*elm->type, memb_ptr);
}
list->count = 0; /* No meaningful elements left */
@@ -925,7 +925,7 @@
ASN_DEBUG("Failed decoding %s of %s (SET OF)",
elm->type->name, td->name);
}
- if(ptr) elm->type->free_struct(elm->type, ptr, 0);
+ if(ptr) ASN_STRUCT_FREE(*elm->type, ptr);
_ASN_DECODE_FAILED;
}
diff --git a/skeletons/constr_TYPE.h b/skeletons/constr_TYPE.h
index 37d21f6..70e7882 100644
--- a/skeletons/constr_TYPE.h
+++ b/skeletons/constr_TYPE.h
@@ -52,6 +52,9 @@
typedef void (asn_struct_free_f)(
struct asn_TYPE_descriptor_s *type_descriptor,
void *struct_ptr, int free_contents_only);
+#define ASN_STRUCT_FREE(asn_DEF, ptr) (asn_DEF).free_struct(&(asn_DEF),ptr,0)
+#define ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF, ptr) \
+ (asn_DEF).free_struct(&(asn_DEF),ptr,1)
/*
* Print the structure according to its specification.