added automake.mk files in src/language
[pspp] / src / algorithm.h
index 707acf28145486b8c56d0c36d9c70fda387aee91..10e589a1e4f43eb147062f33e2644c5b1ece38ac 100644 (file)
@@ -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