#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.
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