+typedef int (item_match_predicate_t) (void *closure, item_t *item);
+
+/* Return the number of items in the bin from the given category (or
+ * from all categories if category == NULL) */
+static int
+bin_num_items_matching (bin_t *bin,
+ item_match_predicate_t *predicate,
+ void *closure)
+{
+ int i, num_items = 0;
+
+ if (predicate == NULL)
+ return bin->num_items;
+
+ for (i = 0; i < bin->num_items; i++)
+ if ((predicate) (closure, bin->items[i]))
+ num_items++;
+
+ return num_items;
+}
+