X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Flibpspp%2Farray.h;h=a867adea5a91301dd8185dfc394d717a654863bc;hb=522f263565607b97b83d26bff49b5fa44704df33;hp=c80fb24c5bb5f717a82d7e9a45e0e31685c5d35d;hpb=e7d0a9f16192ceeff9243f0ede8e399ee1ef0d44;p=pspp diff --git a/src/libpspp/array.h b/src/libpspp/array.h index c80fb24c5b..a867adea5a 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 + positions. */ +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