]> git.ipfire.org Git - people/ms/libloc.git/commitdiff
network-list: Drop sorting functions
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 24 Nov 2020 15:04:03 +0000 (15:04 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 24 Nov 2020 15:13:11 +0000 (15:13 +0000)
Since the list is always sorted, there is no point in
sorting it again...

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/database.c
src/libloc.sym
src/loc/network-list.h
src/network-list.c
src/test-network.c

index ba4f98ad14b79191a85e050423cacef5a160f946..55460919206c831021d51b2c1893f9d5ad6d18d8 100644 (file)
@@ -1372,17 +1372,13 @@ static int __loc_database_enumerator_next_network_flattened(
        // We no longer need the excluded list
        loc_network_list_unref(excluded);
 
-       // Sort all subnets
-       loc_network_list_sort(subnets);
-
        // Replace network with the first one
        loc_network_unref(*network);
 
        *network = loc_network_list_pop_first(subnets);
 
        // Push the rest onto the stack
-       loc_network_list_merge_reverse(enumerator->stack, subnets);
-
+       loc_network_list_merge(enumerator->stack, subnets);
        loc_network_list_unref(subnets);
 
        return 0;
index 28cc8e8531440bbd317838717ed1cb996e859db7..4b0ce45a4b56ec3c8169e10028ddaa077f04173e 100644 (file)
@@ -141,15 +141,12 @@ global:
        loc_network_list_empty;
        loc_network_list_get;
        loc_network_list_merge;
-       loc_network_list_merge_reverse;
        loc_network_list_new;
        loc_network_list_pop;
        loc_network_list_pop_first;
        loc_network_list_push;
        loc_network_list_ref;
-       loc_network_list_reverse;
        loc_network_list_size;
-       loc_network_list_sort;
        loc_network_list_unref;
 
        # Writer
index 89776a6784012a0727f712fdc18a899c13403a69..21c74027c3fdce0d78a94916493b0c55978465a0 100644 (file)
@@ -30,9 +30,6 @@ int loc_network_list_push(struct loc_network_list* list, struct loc_network* net
 struct loc_network* loc_network_list_pop(struct loc_network_list* list);
 struct loc_network* loc_network_list_pop_first(struct loc_network_list* list);
 int loc_network_list_contains(struct loc_network_list* list, struct loc_network* network);
-void loc_network_list_sort(struct loc_network_list* list);
-void loc_network_list_reverse(struct loc_network_list* list);
 int loc_network_list_merge(struct loc_network_list* self, struct loc_network_list* other);
-int loc_network_list_merge_reverse(struct loc_network_list* self, struct loc_network_list* other);
 
 #endif
index 6e9cd379e942aba90a25b36776778b111289f5b7..7e8b5f3a616f08f3d2ee793947e1efa6e0f05f68 100644 (file)
@@ -257,45 +257,6 @@ LOC_EXPORT int loc_network_list_contains(struct loc_network_list* list, struct l
        return found;
 }
 
-static void loc_network_list_swap(struct loc_network_list* list, unsigned int i1, unsigned int i2) {
-       // Do nothing for invalid indices
-       if (i1 >= list->size || i2 >= list->size)
-               return;
-
-       struct loc_network* network1 = list->elements[i1];
-       struct loc_network* network2 = list->elements[i2];
-
-       list->elements[i1] = network2;
-       list->elements[i2] = network1;
-}
-
-LOC_EXPORT void loc_network_list_reverse(struct loc_network_list* list) {
-       unsigned int i = 0;
-       unsigned int j = list->size - 1;
-
-       while (i < j) {
-               loc_network_list_swap(list, i++, j--);
-       }
-}
-
-LOC_EXPORT void loc_network_list_sort(struct loc_network_list* list) {
-       unsigned int n = list->size;
-       int swapped;
-
-       do {
-               swapped = 0;
-
-               for (unsigned int i = 1; i < n; i++) {
-                       if (loc_network_gt(list->elements[i-1], list->elements[i]) > 0) {
-                               loc_network_list_swap(list, i-1, i);
-                               swapped = 1;
-                       }
-               }
-
-               n--;
-       } while (swapped);
-}
-
 LOC_EXPORT int loc_network_list_merge(
                struct loc_network_list* self, struct loc_network_list* other) {
        int r;
@@ -308,16 +269,3 @@ LOC_EXPORT int loc_network_list_merge(
 
        return 0;
 }
-
-LOC_EXPORT int loc_network_list_merge_reverse(
-               struct loc_network_list* self, struct loc_network_list* other) {
-       int r;
-
-       for (int i = other->size - 1; i >= 0; i--) {
-               r = loc_network_list_push(self, other->elements[i]);
-               if (r)
-                       return r;
-       }
-
-       return 0;
-}
index 79c29679edb3e2fdc820cb4c35cb731b099ffca6..8a6763c953d1e8247dd0d0451129246f3617ab42 100644 (file)
@@ -188,15 +188,6 @@ int main(int argc, char** argv) {
        }
 
        loc_network_list_dump(excluded);
-
-       // Reverse it
-       loc_network_list_reverse(excluded);
-       loc_network_list_dump(excluded);
-
-       // Sort them and dump them again
-       loc_network_list_sort(excluded);
-       loc_network_list_dump(excluded);
-
        loc_network_list_unref(excluded);
 
        // Create a database