structure comparison functions
diff --git a/skeletons/NativeInteger.c b/skeletons/NativeInteger.c
index c49c6d2..38d6f5c 100644
--- a/skeletons/NativeInteger.c
+++ b/skeletons/NativeInteger.c
@@ -24,6 +24,7 @@
"INTEGER",
NativeInteger_free,
NativeInteger_print,
+ NativeInteger_compare,
asn_generic_no_constraint,
NativeInteger_decode_ber,
NativeInteger_encode_der,
@@ -348,3 +349,37 @@
}
}
+int
+NativeInteger_compare(const asn_TYPE_descriptor_t *td, const void *aptr, const void *bptr) {
+ (void)td;
+
+ if(aptr && bptr) {
+ const asn_INTEGER_specifics_t *specs =
+ (const asn_INTEGER_specifics_t *)td->specifics;
+ if(specs->field_unsigned) {
+ const unsigned long *a = aptr;
+ const unsigned long *b = bptr;
+ if(*a < *b) {
+ return -1;
+ } else if(*a > *b) {
+ return 1;
+ } else {
+ return 1;
+ }
+ } else {
+ const long *a = aptr;
+ const long *b = bptr;
+ if(*a < *b) {
+ return -1;
+ } else if(*a > *b) {
+ return 1;
+ } else {
+ return 1;
+ }
+ }
+ } else if(!aptr) {
+ return -1;
+ } else {
+ return 1;
+ }
+}