about summary refs log tree commit diff
path: root/third_party/git/list-objects-filter.h
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/list-objects-filter.h')
-rw-r--r--third_party/git/list-objects-filter.h40
1 files changed, 17 insertions, 23 deletions
diff --git a/third_party/git/list-objects-filter.h b/third_party/git/list-objects-filter.h
index cfd784e203..1d45a4ad57 100644
--- a/third_party/git/list-objects-filter.h
+++ b/third_party/git/list-objects-filter.h
@@ -60,36 +60,30 @@ enum list_objects_filter_situation {
 	LOFS_BLOB
 };
 
-struct filter;
-
-/*
- * Constructor for the set of defined list-objects filters.
- * The `omitted` set is optional. It is populated with objects that the
- * filter excludes. This set should not be considered finalized until
- * after list_objects_filter__free is called on the returned `struct
- * filter *`.
- */
-struct filter *list_objects_filter__init(
-	struct oidset *omitted,
-	struct list_objects_filter_options *filter_options);
-
-/*
- * Lets `filter` decide how to handle the `obj`. If `filter` is NULL, this
- * function behaves as expected if no filter is configured: all objects are
- * included.
- */
-enum list_objects_filter_result list_objects_filter__filter_object(
+typedef enum list_objects_filter_result (*filter_object_fn)(
 	struct repository *r,
 	enum list_objects_filter_situation filter_situation,
 	struct object *obj,
 	const char *pathname,
 	const char *filename,
-	struct filter *filter);
+	void *filter_data);
+
+typedef void (*filter_free_fn)(void *filter_data);
 
 /*
- * Destroys `filter` and finalizes the `omitted` set, if present. Does
- * nothing if `filter` is null.
+ * Constructor for the set of defined list-objects filters.
+ * Returns a generic "void *filter_data".
+ *
+ * The returned "filter_fn" will be used by traverse_commit_list()
+ * to filter the results.
+ *
+ * The returned "filter_free_fn" is a destructor for the
+ * filter_data.
  */
-void list_objects_filter__free(struct filter *filter);
+void *list_objects_filter__init(
+	struct oidset *omitted,
+	struct list_objects_filter_options *filter_options,
+	filter_object_fn *filter_fn,
+	filter_free_fn *filter_free_fn);
 
 #endif /* LIST_OBJECTS_FILTER_H */