From 2f1028ed795e2984b41583391e4ba145e5c0c689 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 4 Jun 2020 21:35:53 -0400 Subject: [PATCH] set: Add a few useful functions Allow to find out if a set is empty, and its min and max. --- gtk/gtkset.c | 32 ++++++++++++++++++++++++++++++++ gtk/gtkset.h | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/gtk/gtkset.c b/gtk/gtkset.c index 69f1dea72e..18fab23c56 100644 --- a/gtk/gtkset.c +++ b/gtk/gtkset.c @@ -335,6 +335,38 @@ next_range: return TRUE; } +gboolean +gtk_set_is_empty (GtkSet *set) +{ + return set->ranges->len == 0; +} + +guint +gtk_set_get_min (GtkSet *set) +{ + Range *r; + + if (gtk_set_is_empty (set)) + return 0; + + r = &g_array_index (set->ranges, Range, 0); + + return r->first; +} + +guint +gtk_set_get_max (GtkSet *set) +{ + Range *r; + + if (gtk_set_is_empty (set)) + return 0; + + r = &g_array_index (set->ranges, Range, set->ranges->len - 1); + + return r->first + r->n_items - 1; +} + #if 0 void gtk_set_dump (GtkSet *set) diff --git a/gtk/gtkset.h b/gtk/gtkset.h index d0ba4e1a96..1ab6c6d1a2 100644 --- a/gtk/gtkset.h +++ b/gtk/gtkset.h @@ -67,4 +67,8 @@ void gtk_set_iter_init (GtkSetIter *iter, gboolean gtk_set_iter_next (GtkSetIter *iter, guint *item); +gboolean gtk_set_is_empty (GtkSet *set); +guint gtk_set_get_min (GtkSet *set); +guint gtk_set_get_max (GtkSet *set); + #endif /* __GTK_SET_H__ */