+__attribute__((nonnull(1,2)))
+static inline int filter_find_with_name(A(filter_t) *array, const char *name)
+{
+ int start = 0;
+ int end = array->len;
+
+ while (start < end) {
+ int mid = (start + end) / 2;
+ int cmp = strcmp(name, array_elt(*array, mid).name);
+
+ if (cmp == 0) {
+ return mid;
+ } else if (cmp < 0) {
+ end = mid;
+ } else {
+ start = mid + 1;
+ }
+ }
+ return -1;
+}
+
+__attribute__((nonnull(1,2)))
+bool filter_update_references(filter_t *filter, A(filter_t) *array);
+