Uses custom hash/equals functions so that we can actually fetch equivalent FileDatas...
[geeqie.git] / src / filecluster.h
index 07d3be1..660f5eb 100644 (file)
 
 #include "main.h"
 
-typedef struct _FileCluster FileCluster;
-typedef struct _FileClusterList FileClusterList;
-
-// A FileCluster is a GList with HashTable access to each node (to perform contains() checks quickly).
-struct _FileCluster
-{
-       GList *head;
-       GList *items;
-};
-
-struct _FileClusterList
-{
-       // All of the elements in the list, regardless of whether they're part of a cluster or not.
-       GList *fd_list;
-
-       // A map from any clustered FileData to the FileCluster object that describes the cluster.
-       GHashTable *clusters;
-};
-
 FileClusterList *fileclusterlist_new();
 FileCluster *filecluster_new();  // internal?
 void fileclusterlist_free(FileClusterList *fcl);
 void filecluster_free(FileCluster *fc);
 
+gboolean filecluster_toggle_show_children(FileCluster *fc);
+
 // Creates a cluster with items that must already be in the cluster list.  Will fail (and make no
 // changes) if any of the specified items isn't in the list, or if any of the items is already
 // part of a different cluster.
@@ -53,5 +36,7 @@ FileCluster *fileclusterlist_create_cluster(FileClusterList *fcl, GList *fd_item
 gboolean fileclusterlist_has_head(FileClusterList *fcl, FileData *fd);
 gboolean fileclusterlist_has_child(FileClusterList *fcl, FileData *fd);
 
+GList *fileclusterlist_next_non_child(FileClusterList *fcl, GList *list);
+GList *fileclusterlist_remove_children_from_list(FileClusterList *fcl, GList *list);
 
 #endif  // FILECLUSTER_H