mirror of
				https://gitlab.gnome.org/GNOME/glib.git
				synced 2025-11-04 01:58:54 +01:00 
			
		
		
		
	
		
			
	
	
		
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/* deftype.c
							 | 
						||
| 
								 | 
							
								 * Copyright (C) 2006 Behdad Esfahbod
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * 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 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., 59 Temple Place, Suite 330,
							 | 
						||
| 
								 | 
							
								 * Boston, MA 02111-1307, USA.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								#include <glib-object.h>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* see http://bugzilla.gnome.org/show_bug.cgi?id=337128 for the purpose of this test */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MY_G_IMPLEMENT_INTERFACE(TYPE_IFACE, iface_init)       { \
							 | 
						||
| 
								 | 
							
								  static const GInterfaceInfo g_implement_interface_info = { \
							 | 
						||
| 
								 | 
							
								      (GInterfaceInitFunc) iface_init, \
							 | 
						||
| 
								 | 
							
								      NULL, \
							 | 
						||
| 
								 | 
							
								      NULL \
							 | 
						||
| 
								 | 
							
								    }; \
							 | 
						||
| 
								 | 
							
								  g_type_add_interface_static (g_define_type_id, TYPE_IFACE, &g_implement_interface_info); \
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define MY_DEFINE_TYPE(TN, t_n, T_P) \
							 | 
						||
| 
								 | 
							
									G_DEFINE_TYPE_WITH_CODE (TN, t_n, T_P, \
							 | 
						||
| 
								 | 
							
												 MY_G_IMPLEMENT_INTERFACE (G_TYPE_INTERFACE, NULL))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct _TypeName {
							 | 
						||
| 
								 | 
							
								  GObject parent_instance;
							 | 
						||
| 
								 | 
							
								  const char *name;
							 | 
						||
| 
								 | 
							
								} TypeName;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct _TypeNameClass {
							 | 
						||
| 
								 | 
							
								  GObjectClass parent_parent;
							 | 
						||
| 
								 | 
							
								} TypeNameClass;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MY_DEFINE_TYPE (TypeName, type_name, G_TYPE_OBJECT)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static void     type_name_init              (TypeName      *self)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								static void     type_name_class_init        (TypeNameClass *klass)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int
							 | 
						||
| 
								 | 
							
								main (void)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  return 0;
							 | 
						||
| 
								 | 
							
								}
							 |