-#ifndef SORT_ALGO_H
-#define SORT_ALGO_H 1
+#ifndef ALGORITHM_H
+#define ALGORITHM_H 1
#include <stddef.h>
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
algo_compare_func *compare, void *aux);
-#endif /* sort-algo.h */
+#endif /* algorithm.h */