[glib] Add a G_DEFINE_QUARK macro
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] Add a G_DEFINE_QUARK macro
- Date: Tue, 28 Aug 2012 04:08:28 +0000 (UTC)
commit 702b44886572c657d552f3ec15e9794acd4265e5
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Aug 27 23:34:30 2012 -0400
Add a G_DEFINE_QUARK macro
https://bugzilla.gnome.org/show_bug.cgi?id=627240
docs/reference/glib/glib-sections.txt | 1 +
glib/gquark.c | 12 ++++++++++++
glib/gquark.h | 13 +++++++++++++
3 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/glib/glib-sections.txt b/docs/reference/glib/glib-sections.txt
index ddede24..57e0533 100644
--- a/docs/reference/glib/glib-sections.txt
+++ b/docs/reference/glib/glib-sections.txt
@@ -2538,6 +2538,7 @@ g_node_destroy
<TITLE>Quarks</TITLE>
<FILE>quarks</FILE>
GQuark
+G_DEFINE_QUARK
g_quark_from_string
g_quark_from_static_string
g_quark_to_string
diff --git a/glib/gquark.c b/glib/gquark.c
index 2afbf8a..782388a 100644
--- a/glib/gquark.c
+++ b/glib/gquark.c
@@ -93,6 +93,18 @@ static gint quark_block_offset = 0;
**/
/**
+ * G_DEFINE_QUARK:
+ * @QN: the string to return a #GQuark for
+ * @q_n: prefix for the function name
+ *
+ * A convenience macro which defines a function returning the
+ * #GQuark for the string @QN. The function will be named
+ * @q_n<!-- -->_quark().
+ *
+ * Since: 2.34
+ */
+
+/**
* g_quark_try_string:
* @string: (allow-none): a string.
* @Returns: the #GQuark associated with the string, or 0 if @string is
diff --git a/glib/gquark.h b/glib/gquark.h
index 78b9546..7689447 100644
--- a/glib/gquark.h
+++ b/glib/gquark.h
@@ -44,6 +44,19 @@ GQuark g_quark_from_static_string (const gchar *string);
GQuark g_quark_from_string (const gchar *string);
const gchar * g_quark_to_string (GQuark quark) G_GNUC_CONST;
+#define G_DEFINE_QUARK(QN, q_n) \
+GQuark \
+q_n##_quark (void) \
+{ \
+ static volatile gsize g_define_quark__volatile = 0; \
+ if (g_once_init_enter (&g_define_quark__volatile)) \
+ { \
+ GQuark g_define_quark = g_quark_from_string (#QN); \
+ g_once_init_leave (&g_define_quark__volatile, g_define_quark); \
+ } \
+ return g_define_quark__volatile; \
+}
+
const gchar * g_intern_string (const gchar *string);
const gchar * g_intern_static_string (const gchar *string);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]