#include "array_ref.h" #include i8 kit_ar_equal_bytes(i64 left_element_size, i64 left_size, void *left_data, i64 right_element_size, i64 right_size, void *right_data) { i64 i; if (left_element_size != right_element_size) return 0; if (left_size != right_size) return 0; for (i = 0; i < left_size; i++) if (memcmp((u8 *) left_data + i * left_element_size, (u8 *) right_data + i * left_element_size, left_element_size) != 0) return 0; return 1; } i8 kit_ar_compare(i64 left_element_size, i64 left_size, void *left_data, i64 right_element_size, i64 right_size, void *right_data, kit_ar_compare_fn compare) { i64 i; if (left_element_size < right_element_size) return -1; if (left_element_size > right_element_size) return 1; for (i = 0; i < left_size && i < right_size; i++) { i8 c = compare((u8 *) left_data + i * left_element_size, (u8 *) right_data + i * left_element_size); if (c != 0) return c; } if (left_size < right_size) return -1; if (left_size > right_size) return 1; return 0; }