[gtk+] bitmask: Split bitmask code into two
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] bitmask: Split bitmask code into two
- Date: Thu, 1 Mar 2012 14:11:00 +0000 (UTC)
commit 27eb83a4101adb608949cebebe59c307627d1e9e
Author: Benjamin Otte <otte redhat com>
Date: Thu Feb 9 01:44:59 2012 +0100
bitmask: Split bitmask code into two
This does nothing but turn all GtkBitmask functions into static inline
functions that call the gtk_allocated_bitmask_*() equivalent.
The implementation of the static functions has also been put into a
private header, to not scare people who want to see how things are
implemented.
gtk/Makefile.am | 4 +-
gtk/{gtkbitmask.c => gtkallocatedbitmask.c} | 102 ++++++++++++------------
gtk/gtkallocatedbitmaskprivate.h | 64 +++++++++++++++
gtk/gtkbitmaskprivate.h | 68 +++++++++-------
gtk/gtkbitmaskprivateimpl.h | 116 +++++++++++++++++++++++++++
gtk/tests/Makefile.am | 5 +-
6 files changed, 276 insertions(+), 83 deletions(-)
---
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index da4a4ca..75ab96d 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -403,12 +403,14 @@ gtk_private_h_sources = \
gtkapplicationprivate.h \
gtkaccelgroupprivate.h \
gtkaccelmapprivate.h \
+ gtkallocatedbitmaskprivate.h \
gtkanimationdescription.h \
gtkappchooserprivate.h \
gtkappchoosermodule.h \
gtkappchooseronline.h \
gtkbindingsprivate.h \
gtkbitmaskprivate.h \
+ gtkbitmaskprivateimpl.h \
gtkborderimageprivate.h \
gtkboxprivate.h \
gtkbuilderprivate.h \
@@ -558,6 +560,7 @@ gtk_base_c_sources = \
gtkactivatable.c \
gtkadjustment.c \
gtkalignment.c \
+ gtkallocatedbitmask.c \
gtkappchooser.c \
gtkappchooserwidget.c \
gtkappchooserbutton.c \
@@ -573,7 +576,6 @@ gtk_base_c_sources = \
gtkbbox.c \
gtkbin.c \
gtkbindings.c \
- gtkbitmask.c \
gtkborder.c \
gtkborderimage.c \
gtkbox.c \
diff --git a/gtk/gtkbitmask.c b/gtk/gtkallocatedbitmask.c
similarity index 59%
rename from gtk/gtkbitmask.c
rename to gtk/gtkallocatedbitmask.c
index 6e47bb2..ef2ce9f 100644
--- a/gtk/gtkbitmask.c
+++ b/gtk/gtkallocatedbitmask.c
@@ -19,7 +19,7 @@
#include <config.h>
-#include "gtk/gtkbitmaskprivate.h"
+#include "gtk/gtkallocatedbitmaskprivate.h"
#define VALUE_TYPE gsize
@@ -32,11 +32,11 @@ struct _GtkBitmask {
};
static GtkBitmask *
-gtk_bitmask_resize (GtkBitmask *mask,
- gsize size) G_GNUC_WARN_UNUSED_RESULT;
+gtk_allocated_bitmask_resize (GtkBitmask *mask,
+ gsize size) G_GNUC_WARN_UNUSED_RESULT;
static GtkBitmask *
-gtk_bitmask_resize (GtkBitmask *mask,
- gsize size)
+gtk_allocated_bitmask_resize (GtkBitmask *mask,
+ gsize size)
{
gsize i;
@@ -51,25 +51,25 @@ gtk_bitmask_resize (GtkBitmask *mask,
}
GtkBitmask *
-_gtk_bitmask_new (void)
+_gtk_allocated_bitmask_new (void)
{
return g_malloc0 (sizeof (GtkBitmask));
}
GtkBitmask *
-_gtk_bitmask_copy (const GtkBitmask *mask)
+_gtk_allocated_bitmask_copy (const GtkBitmask *mask)
{
GtkBitmask *copy;
g_return_val_if_fail (mask != NULL, NULL);
- copy = _gtk_bitmask_new ();
+ copy = _gtk_allocated_bitmask_new ();
- return _gtk_bitmask_union (copy, mask);
+ return _gtk_allocated_bitmask_union (copy, mask);
}
void
-_gtk_bitmask_free (GtkBitmask *mask)
+_gtk_allocated_bitmask_free (GtkBitmask *mask)
{
g_return_if_fail (mask != NULL);
@@ -77,8 +77,8 @@ _gtk_bitmask_free (GtkBitmask *mask)
}
void
-_gtk_bitmask_print (const GtkBitmask *mask,
- GString *string)
+_gtk_allocated_bitmask_print (const GtkBitmask *mask,
+ GString *string)
{
int i;
@@ -87,7 +87,7 @@ _gtk_bitmask_print (const GtkBitmask *mask,
for (i = mask->len * VALUE_SIZE_BITS - 1; i >= 0; i--)
{
- if (_gtk_bitmask_get (mask, i))
+ if (_gtk_allocated_bitmask_get (mask, i))
break;
}
@@ -99,28 +99,28 @@ _gtk_bitmask_print (const GtkBitmask *mask,
for (; i >= 0; i--)
{
- g_string_append_c (string, _gtk_bitmask_get (mask, i) ? '1' : '0');
+ g_string_append_c (string, _gtk_allocated_bitmask_get (mask, i) ? '1' : '0');
}
}
char *
-_gtk_bitmask_to_string (const GtkBitmask *mask)
+_gtk_allocated_bitmask_to_string (const GtkBitmask *mask)
{
GString *string;
string = g_string_new (NULL);
- _gtk_bitmask_print (mask, string);
+ _gtk_allocated_bitmask_print (mask, string);
return g_string_free (string, FALSE);
}
/* NB: Call this function whenever the
* array might have become too large.
- * _gtk_bitmask_is_empty() depends on this.
+ * _gtk_allocated_bitmask_is_empty() depends on this.
*/
static GtkBitmask *
-gtk_bitmask_shrink (GtkBitmask *mask) G_GNUC_WARN_UNUSED_RESULT;
+gtk_allocated_bitmask_shrink (GtkBitmask *mask) G_GNUC_WARN_UNUSED_RESULT;
static GtkBitmask *
-gtk_bitmask_shrink (GtkBitmask *mask)
+gtk_allocated_bitmask_shrink (GtkBitmask *mask)
{
guint i;
@@ -130,37 +130,37 @@ gtk_bitmask_shrink (GtkBitmask *mask)
break;
}
- return gtk_bitmask_resize (mask, i);
+ return gtk_allocated_bitmask_resize (mask, i);
}
GtkBitmask *
-_gtk_bitmask_intersect (GtkBitmask *mask,
- const GtkBitmask *other)
+_gtk_allocated_bitmask_intersect (GtkBitmask *mask,
+ const GtkBitmask *other)
{
guint i;
g_return_val_if_fail (mask != NULL, NULL);
g_return_val_if_fail (other != NULL, NULL);
- mask = gtk_bitmask_resize (mask, MIN (mask->len, other->len));
+ mask = gtk_allocated_bitmask_resize (mask, MIN (mask->len, other->len));
for (i = 0; i < mask->len; i++)
{
mask->data[i] &= other->data[i];
}
- return gtk_bitmask_shrink (mask);
+ return gtk_allocated_bitmask_shrink (mask);
}
GtkBitmask *
-_gtk_bitmask_union (GtkBitmask *mask,
- const GtkBitmask *other)
+_gtk_allocated_bitmask_union (GtkBitmask *mask,
+ const GtkBitmask *other)
{
guint i;
g_return_val_if_fail (mask != NULL, NULL);
g_return_val_if_fail (other != NULL, NULL);
- mask = gtk_bitmask_resize (mask, MAX (mask->len, other->len));
+ mask = gtk_allocated_bitmask_resize (mask, MAX (mask->len, other->len));
for (i = 0; i < other->len; i++)
{
mask->data[i] |= other->data[i];
@@ -170,8 +170,8 @@ _gtk_bitmask_union (GtkBitmask *mask,
}
GtkBitmask *
-_gtk_bitmask_subtract (GtkBitmask *mask,
- const GtkBitmask *other)
+_gtk_allocated_bitmask_subtract (GtkBitmask *mask,
+ const GtkBitmask *other)
{
guint i;
@@ -183,27 +183,27 @@ _gtk_bitmask_subtract (GtkBitmask *mask,
mask->data[i] |= ~other->data[i];
}
- return gtk_bitmask_shrink (mask);
+ return gtk_allocated_bitmask_shrink (mask);
}
static void
-gtk_bitmask_indexes (guint index_,
- guint *array_index,
- guint *bit_index)
+gtk_allocated_bitmask_indexes (guint index_,
+ guint *array_index,
+ guint *bit_index)
{
*array_index = index_ / VALUE_SIZE_BITS;
*bit_index = index_ % VALUE_SIZE_BITS;
}
gboolean
-_gtk_bitmask_get (const GtkBitmask *mask,
- guint index_)
+_gtk_allocated_bitmask_get (const GtkBitmask *mask,
+ guint index_)
{
guint array_index, bit_index;
g_return_val_if_fail (mask != NULL, FALSE);
- gtk_bitmask_indexes (index_, &array_index, &bit_index);
+ gtk_allocated_bitmask_indexes (index_, &array_index, &bit_index);
if (array_index >= mask->len)
return FALSE;
@@ -212,20 +212,20 @@ _gtk_bitmask_get (const GtkBitmask *mask,
}
GtkBitmask *
-_gtk_bitmask_set (GtkBitmask *mask,
- guint index_,
- gboolean value)
+_gtk_allocated_bitmask_set (GtkBitmask *mask,
+ guint index_,
+ gboolean value)
{
guint array_index, bit_index;
g_return_val_if_fail (mask != NULL, NULL);
- gtk_bitmask_indexes (index_, &array_index, &bit_index);
+ gtk_allocated_bitmask_indexes (index_, &array_index, &bit_index);
if (value)
{
if (array_index >= mask->len)
- mask = gtk_bitmask_resize (mask, array_index + 1);
+ mask = gtk_allocated_bitmask_resize (mask, array_index + 1);
mask->data[array_index] |= VALUE_BIT (bit_index);
}
@@ -234,7 +234,7 @@ _gtk_bitmask_set (GtkBitmask *mask,
if (array_index < mask->len)
{
mask->data[array_index] &= ~ VALUE_BIT (bit_index);
- mask = gtk_bitmask_shrink (mask);
+ mask = gtk_allocated_bitmask_shrink (mask);
}
}
@@ -242,9 +242,9 @@ _gtk_bitmask_set (GtkBitmask *mask,
}
GtkBitmask *
-_gtk_bitmask_invert_range (GtkBitmask *mask,
- guint start,
- guint end)
+_gtk_allocated_bitmask_invert_range (GtkBitmask *mask,
+ guint start,
+ guint end)
{
guint i;
@@ -254,13 +254,13 @@ _gtk_bitmask_invert_range (GtkBitmask *mask,
/* I CAN HAS SPEEDUP? */
for (i = start; i < end; i++)
- mask = _gtk_bitmask_set (mask, i, !_gtk_bitmask_get (mask, i));
+ mask = _gtk_allocated_bitmask_set (mask, i, !_gtk_allocated_bitmask_get (mask, i));
return mask;
}
gboolean
-_gtk_bitmask_is_empty (const GtkBitmask *mask)
+_gtk_allocated_bitmask_is_empty (const GtkBitmask *mask)
{
g_return_val_if_fail (mask != NULL, FALSE);
@@ -268,8 +268,8 @@ _gtk_bitmask_is_empty (const GtkBitmask *mask)
}
gboolean
-_gtk_bitmask_equals (const GtkBitmask *mask,
- const GtkBitmask *other)
+_gtk_allocated_bitmask_equals (const GtkBitmask *mask,
+ const GtkBitmask *other)
{
guint i;
@@ -289,8 +289,8 @@ _gtk_bitmask_equals (const GtkBitmask *mask,
}
gboolean
-_gtk_bitmask_intersects (const GtkBitmask *mask,
- const GtkBitmask *other)
+_gtk_allocated_bitmask_intersects (const GtkBitmask *mask,
+ const GtkBitmask *other)
{
int i;
diff --git a/gtk/gtkallocatedbitmaskprivate.h b/gtk/gtkallocatedbitmaskprivate.h
new file mode 100644
index 0000000..023b70d
--- /dev/null
+++ b/gtk/gtkallocatedbitmaskprivate.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright  2011 Red Hat Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Benjamin Otte <otte gnome org>
+ */
+
+#ifndef __GTK_ALLOCATED_BITMASK_PRIVATE_H__
+#define __GTK_ALLOCATED_BITMASK_PRIVATE_H__
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GtkBitmask GtkBitmask;
+
+
+GtkBitmask * _gtk_allocated_bitmask_new (void);
+GtkBitmask * _gtk_allocated_bitmask_copy (const GtkBitmask *mask);
+void _gtk_allocated_bitmask_free (GtkBitmask *mask);
+
+char * _gtk_allocated_bitmask_to_string (const GtkBitmask *mask);
+void _gtk_allocated_bitmask_print (const GtkBitmask *mask,
+ GString *string);
+
+GtkBitmask * _gtk_allocated_bitmask_intersect (GtkBitmask *mask,
+ const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
+GtkBitmask * _gtk_allocated_bitmask_union (GtkBitmask *mask,
+ const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
+GtkBitmask * _gtk_allocated_bitmask_subtract (GtkBitmask *mask,
+ const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
+
+gboolean _gtk_allocated_bitmask_get (const GtkBitmask *mask,
+ guint index_);
+GtkBitmask * _gtk_allocated_bitmask_set (GtkBitmask *mask,
+ guint index_,
+ gboolean value) G_GNUC_WARN_UNUSED_RESULT;
+
+GtkBitmask * _gtk_allocated_bitmask_invert_range (GtkBitmask *mask,
+ guint start,
+ guint end) G_GNUC_WARN_UNUSED_RESULT;
+
+gboolean _gtk_allocated_bitmask_is_empty (const GtkBitmask *mask);
+gboolean _gtk_allocated_bitmask_equals (const GtkBitmask *mask,
+ const GtkBitmask *other);
+gboolean _gtk_allocated_bitmask_intersects (const GtkBitmask *mask,
+ const GtkBitmask *other);
+
+G_END_DECLS
+
+#endif /* __GTK_ALLOCATED_BITMASK_PRIVATE_H__ */
diff --git a/gtk/gtkbitmaskprivate.h b/gtk/gtkbitmaskprivate.h
index 7fad1f2..5e61c3c 100644
--- a/gtk/gtkbitmaskprivate.h
+++ b/gtk/gtkbitmaskprivate.h
@@ -27,36 +27,44 @@ G_BEGIN_DECLS
typedef struct _GtkBitmask GtkBitmask;
-GtkBitmask * _gtk_bitmask_new (void);
-GtkBitmask * _gtk_bitmask_copy (const GtkBitmask *mask);
-void _gtk_bitmask_free (GtkBitmask *mask);
-
-char * _gtk_bitmask_to_string (const GtkBitmask *mask);
-void _gtk_bitmask_print (const GtkBitmask *mask,
- GString *string);
-
-GtkBitmask * _gtk_bitmask_intersect (GtkBitmask *mask,
- const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
-GtkBitmask * _gtk_bitmask_union (GtkBitmask *mask,
- const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
-GtkBitmask * _gtk_bitmask_subtract (GtkBitmask *mask,
- const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
-
-gboolean _gtk_bitmask_get (const GtkBitmask *mask,
- guint index_);
-GtkBitmask * _gtk_bitmask_set (GtkBitmask *mask,
- guint index_,
- gboolean value) G_GNUC_WARN_UNUSED_RESULT;
-
-GtkBitmask * _gtk_bitmask_invert_range (GtkBitmask *mask,
- guint start,
- guint end) G_GNUC_WARN_UNUSED_RESULT;
-
-gboolean _gtk_bitmask_is_empty (const GtkBitmask *mask);
-gboolean _gtk_bitmask_equals (const GtkBitmask *mask,
- const GtkBitmask *other);
-gboolean _gtk_bitmask_intersects (const GtkBitmask *mask,
- const GtkBitmask *other);
+static inline GtkBitmask * _gtk_bitmask_new (void);
+static inline GtkBitmask * _gtk_bitmask_copy (const GtkBitmask *mask);
+static inline void _gtk_bitmask_free (GtkBitmask *mask);
+
+static inline char * _gtk_bitmask_to_string (const GtkBitmask *mask);
+static inline void _gtk_bitmask_print (const GtkBitmask *mask,
+ GString *string);
+
+static inline GtkBitmask * _gtk_bitmask_intersect (GtkBitmask *mask,
+ const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
+static inline GtkBitmask * _gtk_bitmask_union (GtkBitmask *mask,
+ const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
+static inline GtkBitmask * _gtk_bitmask_subtract (GtkBitmask *mask,
+ const GtkBitmask *other) G_GNUC_WARN_UNUSED_RESULT;
+
+static inline gboolean _gtk_bitmask_get (const GtkBitmask *mask,
+ guint index_);
+static inline GtkBitmask * _gtk_bitmask_set (GtkBitmask *mask,
+ guint index_,
+ gboolean value) G_GNUC_WARN_UNUSED_RESULT;
+
+static inline GtkBitmask * _gtk_bitmask_invert_range (GtkBitmask *mask,
+ guint start,
+ guint end) G_GNUC_WARN_UNUSED_RESULT;
+
+static inline gboolean _gtk_bitmask_is_empty (const GtkBitmask *mask);
+static inline gboolean _gtk_bitmask_equals (const GtkBitmask *mask,
+ const GtkBitmask *other);
+static inline gboolean _gtk_bitmask_intersects (const GtkBitmask *mask,
+ const GtkBitmask *other);
+
+
+/* This is the actual implementation of the functions declared above.
+ * We put it in a separate file so people don't get scared from looking at this
+ * file when reading source code.
+ */
+#include "gtkbitmaskprivateimpl.h"
+
G_END_DECLS
diff --git a/gtk/gtkbitmaskprivateimpl.h b/gtk/gtkbitmaskprivateimpl.h
new file mode 100644
index 0000000..365d438
--- /dev/null
+++ b/gtk/gtkbitmaskprivateimpl.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright  2011 Red Hat Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Authors: Benjamin Otte <otte gnome org>
+ */
+
+#include "gtkallocatedbitmaskprivate.h"
+
+static inline GtkBitmask *
+_gtk_bitmask_new (void)
+{
+ return _gtk_allocated_bitmask_new ();
+}
+
+static inline GtkBitmask *
+_gtk_bitmask_copy (const GtkBitmask *mask)
+{
+ return _gtk_allocated_bitmask_copy (mask);
+}
+
+static inline void
+_gtk_bitmask_free (GtkBitmask *mask)
+{
+ return _gtk_allocated_bitmask_free (mask);
+}
+
+static inline char *
+_gtk_bitmask_to_string (const GtkBitmask *mask)
+{
+ return _gtk_allocated_bitmask_to_string (mask);
+}
+
+static inline void
+_gtk_bitmask_print (const GtkBitmask *mask,
+ GString *string)
+{
+ return _gtk_allocated_bitmask_print (mask, string);
+}
+
+static inline GtkBitmask *
+_gtk_bitmask_intersect (GtkBitmask *mask,
+ const GtkBitmask *other)
+{
+ return _gtk_allocated_bitmask_intersect (mask, other);
+}
+
+static inline GtkBitmask *
+_gtk_bitmask_union (GtkBitmask *mask,
+ const GtkBitmask *other)
+{
+ return _gtk_allocated_bitmask_union (mask, other);
+}
+
+static inline GtkBitmask *
+_gtk_bitmask_subtract (GtkBitmask *mask,
+ const GtkBitmask *other)
+{
+ return _gtk_allocated_bitmask_subtract (mask, other);
+}
+
+static inline gboolean
+_gtk_bitmask_get (const GtkBitmask *mask,
+ guint index_)
+{
+ return _gtk_allocated_bitmask_get (mask, index_);
+}
+
+static inline GtkBitmask *
+_gtk_bitmask_set (GtkBitmask *mask,
+ guint index_,
+ gboolean value)
+{
+ return _gtk_allocated_bitmask_set (mask, index_, value);
+}
+
+static inline GtkBitmask *
+_gtk_bitmask_invert_range (GtkBitmask *mask,
+ guint start,
+ guint end)
+{
+ return _gtk_allocated_bitmask_invert_range (mask, start, end);
+}
+
+static inline gboolean
+_gtk_bitmask_is_empty (const GtkBitmask *mask)
+{
+ return _gtk_allocated_bitmask_is_empty (mask);
+}
+
+static inline gboolean
+_gtk_bitmask_equals (const GtkBitmask *mask,
+ const GtkBitmask *other)
+{
+ return _gtk_allocated_bitmask_equals (mask, other);
+}
+
+static inline gboolean
+_gtk_bitmask_intersects (const GtkBitmask *mask,
+ const GtkBitmask *other)
+{
+ return _gtk_allocated_bitmask_intersects (mask, other);
+}
diff --git a/gtk/tests/Makefile.am b/gtk/tests/Makefile.am
index f02387f..b8ef314 100644
--- a/gtk/tests/Makefile.am
+++ b/gtk/tests/Makefile.am
@@ -136,7 +136,10 @@ rbtree_LDADD = $(GTK_DEP_LIBS)
TEST_PROGS += bitmask
bitmask_CFLAGS = -DGTK_COMPILATION -UG_ENABLE_DEBUG
-bitmask_SOURCES = bitmask.c ../gtkbitmaskprivate.h ../gtkbitmask.c
+bitmask_SOURCES = bitmask.c \
+ ../gtkbitmaskprivate.h \
+ ../gtkallocatedbitmaskprivate.h \
+ ../gtkallocatedbitmask.c
bitmask_LDADD = $(GTK_DEP_LIBS)
TEST_PROGS += regression-tests
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]