const GtkBitmask *relevant)
{
memset (lookup, 0, sizeof (*lookup));
-
- if (relevant)
- {
- lookup->missing = _gtk_bitmask_copy (relevant);
- }
- else
- {
- lookup->missing = _gtk_bitmask_new ();
- lookup->missing = _gtk_bitmask_invert_range (lookup->missing, 0, GTK_CSS_PROPERTY_N_PROPERTIES);
- }
}
void
_gtk_css_lookup_destroy (GtkCssLookup *lookup)
{
- _gtk_bitmask_free (lookup->missing);
}
gboolean
{
gtk_internal_return_val_if_fail (lookup != NULL, FALSE);
- return _gtk_bitmask_get (lookup->missing, id);
+ return lookup->values[id].value == NULL;
+}
+
+gboolean
+_gtk_css_lookup_all_set (const GtkCssLookup *lookup)
+{
+ return lookup->n_set_values == GTK_CSS_PROPERTY_N_PROPERTIES;
}
/**
GtkCssValue *value)
{
gtk_internal_return_if_fail (lookup != NULL);
- gtk_internal_return_if_fail (_gtk_bitmask_get (lookup->missing, id));
gtk_internal_return_if_fail (value != NULL);
+ gtk_internal_return_if_fail (lookup->values[id].value == NULL);
- lookup->missing = _gtk_bitmask_set (lookup->missing, id, FALSE);
lookup->values[id].value = value;
lookup->values[id].section = section;
+ lookup->n_set_values ++;
}
/**
} GtkCssLookupValue;
struct _GtkCssLookup {
- GtkBitmask *missing;
+ guint n_set_values;
GtkCssLookupValue values[GTK_CSS_PROPERTY_N_PROPERTIES];
};
void _gtk_css_lookup_init (GtkCssLookup *lookup,
const GtkBitmask *relevant);
void _gtk_css_lookup_destroy (GtkCssLookup *lookup);
-
-static inline const GtkBitmask *_gtk_css_lookup_get_missing (const GtkCssLookup *lookup);
gboolean _gtk_css_lookup_is_missing (const GtkCssLookup *lookup,
guint id);
+gboolean _gtk_css_lookup_all_set (const GtkCssLookup *lookup);
void _gtk_css_lookup_set (GtkCssLookup *lookup,
guint id,
GtkCssSection *section,
GtkCssStaticStyle *style,
GtkCssStyle *parent_style);
-static inline const GtkBitmask *
-_gtk_css_lookup_get_missing (const GtkCssLookup *lookup)
-{
- return lookup->missing;
-}
-
-
-
G_END_DECLS
#endif /* __GTK_CSS_LOOKUP_PRIVATE_H__ */
if (ruleset->styles == NULL)
continue;
- if (!_gtk_bitmask_intersects (_gtk_css_lookup_get_missing (lookup),
- ruleset->set_styles))
- continue;
-
for (j = 0; j < ruleset->n_styles; j++)
{
GtkCssStyleProperty *prop = ruleset->styles[j].property;
_gtk_css_lookup_set (lookup,
id,
ruleset->styles[j].section,
- ruleset->styles[j].value);
+ ruleset->styles[j].value);
}
- if (_gtk_bitmask_is_empty (_gtk_css_lookup_get_missing (lookup)))
+ if (_gtk_css_lookup_all_set (lookup))
break;
}