[gtk/constraint-grid-2: 10/10] constraints: Add some internal apis



commit 6f41adbe510cc876e394e7e0c2eaadb4076c458a
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jun 29 14:21:58 2019 +0000

    constraints: Add some internal apis
    
    Checking if a set is empty or a singleton can
    be done more efficiently than determining its size.

 gtk/gtkconstraintexpression.c        | 12 ++++++++++++
 gtk/gtkconstraintexpressionprivate.h |  6 ++++++
 gtk/gtkconstraintsolver.c            |  4 ++--
 3 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkconstraintexpression.c b/gtk/gtkconstraintexpression.c
index fda944d801..8792337934 100644
--- a/gtk/gtkconstraintexpression.c
+++ b/gtk/gtkconstraintexpression.c
@@ -518,6 +518,18 @@ gtk_constraint_variable_set_size (GtkConstraintVariableSet *set)
   return g_sequence_get_length (set->set);
 }
 
+gboolean
+gtk_constraint_variable_set_is_empty (GtkConstraintVariableSet *set)
+{
+  return g_sequence_is_empty (set->set);
+}
+
+gboolean
+gtk_constraint_variable_set_is_singleton (GtkConstraintVariableSet *set)
+{
+  return g_sequence_iter_next (g_sequence_get_begin_iter (set->set)) == g_sequence_get_end_iter (set->set);
+}
+
 /*< private >
  * GtkConstraintVariableSetIter:
  *
diff --git a/gtk/gtkconstraintexpressionprivate.h b/gtk/gtkconstraintexpressionprivate.h
index 1d42d26883..52125d8876 100644
--- a/gtk/gtkconstraintexpressionprivate.h
+++ b/gtk/gtkconstraintexpressionprivate.h
@@ -97,6 +97,12 @@ gboolean
 gtk_constraint_variable_set_remove (GtkConstraintVariableSet *set,
                                     GtkConstraintVariable *variable);
 
+gboolean
+gtk_constraint_variable_set_is_empty (GtkConstraintVariableSet *set);
+
+gboolean
+gtk_constraint_variable_set_is_singleton (GtkConstraintVariableSet *set);
+
 int
 gtk_constraint_variable_set_size (GtkConstraintVariableSet *set);
 
diff --git a/gtk/gtkconstraintsolver.c b/gtk/gtkconstraintsolver.c
index b1ac6d4dee..da778d2dd9 100644
--- a/gtk/gtkconstraintsolver.c
+++ b/gtk/gtkconstraintsolver.c
@@ -1169,7 +1169,7 @@ gtk_constraint_solver_choose_subject (GtkConstraintSolver *self,
                   GtkConstraintVariableSet *cset = g_hash_table_lookup (self->columns, t_v);
 
                   if (cset == NULL ||
-                      (gtk_constraint_variable_set_size (cset) == 1 &&
+                      (gtk_constraint_variable_set_is_singleton (cset) &&
                        g_hash_table_contains (self->columns, self->objective)))
                     {
                       subject = t_v;
@@ -1867,7 +1867,7 @@ gtk_constraint_solver_remove_constraint (GtkConstraintSolver *self,
 
       if (exit_var == NULL)
         {
-          if (gtk_constraint_variable_set_size (set) == 0)
+          if (gtk_constraint_variable_set_is_empty (set))
             gtk_constraint_solver_remove_column (self, marker);
           else
             {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]