* 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., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
/*
* GLib at ftp://ftp.gtk.org/pub/gtk/.
*/
+#ifndef __G_QUARK_H__
+#define __G_QUARK_H__
+
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error "Only <glib.h> can be included directly."
#endif
-#ifndef __G_QUARK_H__
-#define __G_QUARK_H__
-
#include <glib/gtypes.h>
G_BEGIN_DECLS
/* Quarks (string<->id association)
*/
+GLIB_AVAILABLE_IN_ALL
GQuark g_quark_try_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
GQuark g_quark_from_static_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
GQuark g_quark_from_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
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; \
+ static GQuark q; \
+ \
+ if G_UNLIKELY (q == 0) \
+ q = g_quark_from_static_string (#QN); \
+ \
+ return q; \
}
+GLIB_AVAILABLE_IN_ALL
const gchar * g_intern_string (const gchar *string);
+GLIB_AVAILABLE_IN_ALL
const gchar * g_intern_static_string (const gchar *string);
G_END_DECLS