Add g_type_module_register_enum() and g_type_module_register_flags().
authorMatthias Clasen <maclas@gmx.de>
Tue, 6 Jul 2004 04:56:36 +0000 (04:56 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 6 Jul 2004 04:56:36 +0000 (04:56 +0000)
Tue Jul  6 00:54:38 2004  Matthias Clasen  <maclas@gmx.de>

* gobject/gobject-sections.txt:
* gobject/tmpl/gtypemodule.sgml: Add g_type_module_register_enum()
and g_type_module_register_flags().

docs/reference/ChangeLog
docs/reference/gobject/gobject-sections.txt
docs/reference/gobject/tmpl/gtypemodule.sgml
gobject/ChangeLog
gobject/gtypemodule.c
gobject/gtypemodule.h

index d36fd42..3171b77 100644 (file)
@@ -1,3 +1,9 @@
+Tue Jul  6 00:54:38 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gobject/gobject-sections.txt: 
+       * gobject/tmpl/gtypemodule.sgml: Add g_type_module_register_enum()
+       and g_type_module_register_flags().
+
 Mon Jul  5 18:49:56 2004  Matthias Clasen  <maclas@gmx.de>
 
        * glib/tmpl/messages.sgml: 
index 6908415..c8de644 100644 (file)
@@ -185,6 +185,8 @@ g_type_module_unuse
 g_type_module_set_name
 g_type_module_register_type
 g_type_module_add_interface
+g_type_module_register_enum
+g_type_module_register_flags
 <SUBSECTION Standard>
 G_TYPE_MODULE
 G_IS_TYPE_MODULE
index 9f4c034..ed3cc58 100644 (file)
@@ -145,3 +145,42 @@ not be unloaded.
 @interface_info: type information structure
 
 
+<!-- ##### FUNCTION g_type_module_register_enum ##### -->
+<para>
+Looks up or registers an enumeration that is implemented with a particular
+type plugin. If a type with name @type_name was previously registered,
+the #GType identifier for the type is returned, otherwise the type
+is newly registered, and the resulting #GType identifier returned.
+</para>
+<para>
+As long as any instances of the type exist, the type plugin will
+not be unloaded.
+</para>
+
+@module:              a #GTypeModule
+@name:                name for the type
+@const_static_values: an array of #GEnumValue structs for the possible
+  enumeration values. The array is terminated by a struct with all 
+  members being 0.
+@Returns: the new or existing type ID
+@Since: 2.6
+
+<!-- ##### FUNCTION g_type_module_register_flags ##### -->
+<para>
+Looks up or registers a flags type that is implemented with a particular
+type plugin. If a type with name @type_name was previously registered,
+the #GType identifier for the type is returned, otherwise the type
+is newly registered, and the resulting #GType identifier returned.
+</para>
+<para>
+As long as any instances of the type exist, the type plugin will
+not be unloaded.
+</para>
+
+@module:              a #GTypeModule
+@name:                name for the type
+@const_static_values: an array of #GFlagsValue structs for the possible
+  flags values. The array is terminated by a struct with all 
+  members being 0.
+@Returns: the new or existing type ID
+@Since: 2.6
index 1d8aef2..5d912c4 100644 (file)
@@ -1,7 +1,15 @@
+Tue Jul  6 00:46:43 2004  Matthias Clasen  <maclas@gmx.de>
+
+       * gtypemodule.h: 
+       * gtypemodule.c (g_type_module_register_flags): 
+       * gtypemodule.c (g_type_module_register_enum): New 
+       functions to register enum and flags types from a 
+       GTypeModule.  (#145396, Sven Neumann)
+
 Wed Jun 23 12:55:34 2004  Matthias Clasen  <maclas@gmx.de>
 
        * gtype.h (G_DEFINE_TYPE_EXTENDED): Add an initializer for
-       the g_define_type_info.value_table.  (#144678,Mariano 
+       the g_define_type_info.value_table.  (#144678, Mariano 
        Suárez-Alvarez) 
 
 Tue Jun 22 21:50:47 2004  Matthias Clasen  <maclas@gmx.de>
index dcffca1..bb3df5b 100644 (file)
@@ -387,3 +387,39 @@ g_type_module_add_interface (GTypeModule          *module,
   module_interface_info->loaded = TRUE;
   module_interface_info->info = *interface_info;
 }
+
+void
+g_type_module_register_enum (GTypeModule      *module,
+                             const gchar      *name,
+                             const GEnumValue *const_static_values)
+{
+  GTypeInfo enum_type_info = { 0, };
+
+  g_return_val_if_fail (G_IS_TYPE_MODULE (module), 0);
+  g_return_val_if_fail (name != NULL, 0);
+  g_return_val_if_fail (const_static_values != NULL, 0);
+
+  g_enum_complete_type_info (G_TYPE_ENUM,
+                             &enum_type_info, const_static_values);
+
+  return g_type_module_register_type (G_TYPE_MODULE (module),
+                                      G_TYPE_ENUM, name, &enum_type_info, 0);
+}
+
+void
+g_type_module_register_flags (GTypeModule      *module,
+                             const gchar       *name,
+                             const GFlagsValue *const_static_values)
+{
+  GTypeInfo flags_type_info = { 0, };
+
+  g_return_val_if_fail (G_IS_TYPE_MODULE (module), 0);
+  g_return_val_if_fail (name != NULL, 0);
+  g_return_val_if_fail (const_static_values != NULL, 0);
+
+  g_flags_complete_type_info (G_TYPE_FLAGS,
+                             &flags_type_info, const_static_values);
+
+  return g_type_module_register_type (G_TYPE_MODULE (module),
+                                      G_TYPE_FLAGS, name, &flags_type_info, 0);
+}
index e7746ec..863ea15 100644 (file)
@@ -65,20 +65,26 @@ struct _GTypeModuleClass
   void (*reserved4) (void);
 };
 
-GType    g_type_module_get_type      (void);
-gboolean g_type_module_use           (GTypeModule     *module);
-void     g_type_module_unuse         (GTypeModule     *module);
-void     g_type_module_set_name      (GTypeModule     *module,
-                                     const gchar     *name);
-GType    g_type_module_register_type (GTypeModule     *module,
-                                     GType            parent_type,
-                                     const gchar     *type_name,
-                                     const GTypeInfo *type_info,
-                                     GTypeFlags       flags);
-void     g_type_module_add_interface (GTypeModule           *module,
-                                     GType                  instance_type,
-                                     GType                  interface_type,
-                                     const GInterfaceInfo  *interface_info);
+GType    g_type_module_get_type       (void);
+gboolean g_type_module_use            (GTypeModule          *module);
+void     g_type_module_unuse          (GTypeModule          *module);
+void     g_type_module_set_name       (GTypeModule          *module,
+                                       const gchar          *name);
+GType    g_type_module_register_type  (GTypeModule          *module,
+                                       GType                 parent_type,
+                                       const gchar          *type_name,
+                                       const GTypeInfo      *type_info,
+                                       GTypeFlags            flags);
+void     g_type_module_add_interface  (GTypeModule          *module,
+                                       GType                 instance_type,
+                                       GType                 interface_type,
+                                       const GInterfaceInfo *interface_info);
+void     g_type_module_register_enum  (GTypeModule          *module,
+                                       const gchar          *name,
+                                       const GEnumValue     *const_static_values);
+void     g_type_module_register_flags (GTypeModule          *module,
+                                       const gchar          *name,
+                                       const GFlagsValue    *const_static_values);
 
 G_END_DECLS