X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Farray.h;h=dc17fbd7ef56fdd3f8b1a44c532fb9c964c28c90;hb=01e18746832583769419e3f59824b80229321275;hp=c80fb24c5bb5f717a82d7e9a45e0e31685c5d35d;hpb=e7d0a9f16192ceeff9243f0ede8e399ee1ef0d44;p=pspp diff --git a/src/libpspp/array.h b/src/libpspp/array.h index c80fb24c5b..dc17fbd7ef 100644 --- a/src/libpspp/array.h +++ b/src/libpspp/array.h @@ -108,6 +108,20 @@ void remove_range (void *array, size_t count, size_t size, void remove_element (void *array, size_t count, size_t size, size_t idx); +/* Makes room for N elements starting at IDX in ARRAY, which + initially consists of COUNT elements of SIZE bytes each, by + shifting elements IDX...COUNT (exclusive) to the right by N + positions. */ +void insert_range (void *array, size_t count, size_t size, + size_t idx, size_t n); + +/* Makes room for a new element at IDX in ARRAY, which initially + consists of COUNT elements of SIZE bytes each, by shifting + elements IDX...COUNT (exclusive) to the right by one + position. */ +void insert_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)) @@ -115,6 +129,12 @@ void remove_element (void *array, size_t count, size_t size, void move_element (void *array, size_t count, size_t size, size_t old_idx, size_t new_idx); +/* Moves N elements in ARRAY starting at OLD_IDX, which consists + of COUNT elements of SIZE bytes each, so that they now start + at NEW_IDX, shifting around other elements as needed. */ +void move_range (void *array, size_t count, size_t size, + size_t old_idx, size_t new_idx, size_t n); + /* 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 @@ -203,8 +223,8 @@ void sort_heap (void *array, size_t count, size_t size, algo_compare_func *compare, const void *aux); /* ARRAY contains COUNT elements of SIZE bytes each. This - function tests whether ARRAY is a heap and returns true if so, - false otherwise. Uses COMPARE to compare elements, passing + function tests whether ARRAY is a heap and returns true if so, + false otherwise. Uses COMPARE to compare elements, passing AUX as auxiliary data. */ bool is_heap (const void *array, size_t count, size_t size, algo_compare_func *compare, const void *aux);