X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Falgorithm.h;h=10e589a1e4f43eb147062f33e2644c5b1ece38ac;hb=92fb12eb06716d14c05b781f5d9dcde956d77c30;hp=707acf28145486b8c56d0c36d9c70fda387aee91;hpb=bc963dae9be291ea0a7cccf189d13e00d3797cfd;p=pspp diff --git a/src/algorithm.h b/src/algorithm.h index 707acf2814..10e589a1e4 100644 --- a/src/algorithm.h +++ b/src/algorithm.h @@ -95,6 +95,25 @@ size_t copy_if (const void *array, size_t count, size_t size, void *result, algo_predicate_func *predicate, void *aux); +/* Removes N elements starting at IDX from ARRAY, which consists + of COUNT elements of SIZE bytes each, by shifting the elements + following them, if any, into its position. */ +void remove_range (void *array, size_t count, size_t size, + size_t idx, size_t n); + +/* Removes element IDX from ARRAY, which consists of COUNT + elements of SIZE bytes each, by shifting the elements + following it, if any, into its position. */ +void remove_element (void *array, size_t count, size_t size, + size_t idx); + +/* Moves an element in ARRAY, which consists of COUNT elements of + SIZE bytes each, from OLD_IDX to NEW_IDX, shifting around + other elements as needed. Runs in O(abs(OLD_IDX - NEW_IDX)) + time. */ +void move_element (void *array, size_t count, size_t size, + size_t old_idx, size_t new_idx); + /* Removes elements equal to ELEMENT from ARRAY, which consists of COUNT elements of SIZE bytes each. Returns the number of remaining elements. AUX is passed to COMPARE as auxiliary