4 * An object oriented GL/GLES Abstraction/Utility Layer
6 * Copyright (C) 2010 Intel Corporation.
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library. If not, see
20 * <http://www.gnu.org/licenses/>.
26 #include <glib-object.h>
28 #ifndef __COGL_GTYPE_PRIVATE_H__
29 #define __COGL_GTYPE_PRIVATE_H__
31 #define COGL_GTYPE_DEFINE_BOXED(Name, underscore_name, copy_func, free_func) \
33 cogl_gtype_ ## underscore_name ## _get_type (void) \
35 static volatile gsize type_volatile = 0; \
36 if (g_once_init_enter (&type_volatile)) \
39 g_boxed_type_register_static (g_intern_static_string ("Cogl" Name), \
40 (GBoxedCopyFunc)copy_func, \
41 (GBoxedFreeFunc)free_func); \
42 g_once_init_leave (&type_volatile, type); \
44 return type_volatile; \
47 #endif /* __COGL_GTYPE_PRIVATE_H__ */