[glibmm] tools: Add XML docs and defs generation scripts.



commit fd90d1f8329d7e0840e176ae2e493190cea57521
Author: Josà Alburquerque <jaalburqu svn gnome org>
Date:   Tue Feb 28 14:20:48 2012 -0500

    tools: Add XML docs and defs generation scripts.
    
    	* tools/gen_scripts/gio_generate_docs.sh:
    	* tools/gen_scripts/gio_generate_enums.sh:
    	* tools/gen_scripts/gio_generate_extra_defs.sh:
    	* tools/gen_scripts/gio_generate_methods.sh:
    	* tools/gen_scripts/glib_generate_docs.sh:
    	* tools/gen_scripts/glib_generate_enums.sh:
    	* tools/gen_scripts/glib_generate_extra_defs.sh:
    	* tools/gen_scripts/glib_generate_methods.sh: Add these scripts to
    	generate the XML docs and defs files for glibmm and giomm.  A
    	'JHBUILD_SOURCES' variable pointing to the jhbuild root source
    	directory needs to be defined and the various tools (like h2def.py,
    	enum.pl, etc.) need to be in the command path for these scripts to run
    	successfully.  They generate the appropriate files, patch them if
    	necessary, and place them in the correct place.  All that's needed is
    	to run the scripts.
    
    	* gio/src/gio_docs.xml:
    	* gio/src/gio_enums.defs:
    	* gio/src/gio_methods.defs:
    	* gio/src/gio_signals.defs:
    	* glib/src/glib_docs.xml:
    	* glib/src/glib_enums.defs:
    	* glib/src/glib_functions.defs:
    	* glib/src/gmodule_functions.defs:
    	* glib/src/gobject_enums.defs:
    	* glib/src/gobject_functions.defs: Regenerate all the XML and defs
    	files to ensure that the scripts work.
    
    	* glib/src/glib_enums.defs.patch: Add this patch file so that it isn't
    	necessary to manually edit the defs file.
    	* gio/src/gio_signals.defs.patch:
    	* glib/src/glib_functions.defs.patch: Update these patch files so the
    	defs files patch successfully.
    
    	Bug #668918.

 ChangeLog                                     |   40 +
 gio/src/gio_docs.xml                          |  145 ++-
 gio/src/gio_enums.defs                        |  106 ++-
 gio/src/gio_methods.defs                      |  193 +++
 gio/src/gio_signals.defs                      |  119 ++-
 gio/src/gio_signals.defs.patch                |   30 +-
 glib/src/glib_docs.xml                        |   25 +-
 glib/src/glib_enums.defs                      |   70 ++-
 glib/src/glib_enums.defs.patch                |   52 +
 glib/src/glib_functions.defs                  | 1557 +++++++++++++++++++++++--
 glib/src/glib_functions.defs.patch            |  157 +---
 glib/src/gmodule_functions.defs               |    4 +
 glib/src/gobject_enums.defs                   |    4 +-
 glib/src/gobject_functions.defs               |  105 ++-
 tools/gen_scripts/gio_generate_docs.sh        |   21 +
 tools/gen_scripts/gio_generate_enums.sh       |   17 +
 tools/gen_scripts/gio_generate_extra_defs.sh  |   11 +
 tools/gen_scripts/gio_generate_methods.sh     |   18 +
 tools/gen_scripts/glib_generate_docs.sh       |   21 +
 tools/gen_scripts/glib_generate_enums.sh      |   21 +
 tools/gen_scripts/glib_generate_extra_defs.sh |   10 +
 tools/gen_scripts/glib_generate_methods.sh    |   21 +
 22 files changed, 2467 insertions(+), 280 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 64ec028..404f96f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,45 @@
 2012-02-28  Josà Alburquerque  <jaalburquerque gmail com>
 
+	tools: Add XML docs and defs generation scripts.
+
+	* tools/gen_scripts/gio_generate_docs.sh:
+	* tools/gen_scripts/gio_generate_enums.sh:
+	* tools/gen_scripts/gio_generate_extra_defs.sh:
+	* tools/gen_scripts/gio_generate_methods.sh:
+	* tools/gen_scripts/glib_generate_docs.sh:
+	* tools/gen_scripts/glib_generate_enums.sh:
+	* tools/gen_scripts/glib_generate_extra_defs.sh:
+	* tools/gen_scripts/glib_generate_methods.sh: Add these scripts to
+	generate the XML docs and defs files for glibmm and giomm.  A
+	'JHBUILD_SOURCES' variable pointing to the jhbuild root source
+	directory needs to be defined and the various tools (like h2def.py,
+	enum.pl, etc.) need to be in the command path for these scripts to run
+	successfully.  They generate the appropriate files, patch them if
+	necessary, and place them in the correct place.  All that's needed is
+	to run the scripts.
+
+	* gio/src/gio_docs.xml:
+	* gio/src/gio_enums.defs:
+	* gio/src/gio_methods.defs:
+	* gio/src/gio_signals.defs:
+	* glib/src/glib_docs.xml:
+	* glib/src/glib_enums.defs:
+	* glib/src/glib_functions.defs:
+	* glib/src/gmodule_functions.defs:
+	* glib/src/gobject_enums.defs:
+	* glib/src/gobject_functions.defs: Regenerate all the XML and defs
+	files to ensure that the scripts work.
+
+	* glib/src/glib_enums.defs.patch: Add this patch file so that it isn't
+	necessary to manually edit the defs file.
+	* gio/src/gio_signals.defs.patch:
+	* glib/src/glib_functions.defs.patch: Update these patch files so the
+	defs files patch successfully.
+
+	Bug #668918.
+
+2012-02-28  Josà Alburquerque  <jaalburquerque gmail com>
+
 	docextract_to_xml.py: Generate signal docs by default.
 
 	* tools/defs_gen/docextract_to_xml.py: Change the --with-signals
diff --git a/gio/src/gio_docs.xml b/gio/src/gio_docs.xml
index b33bf2a..e8ea804 100644
--- a/gio/src/gio_docs.xml
+++ b/gio/src/gio_docs.xml
@@ -1450,7 +1450,7 @@ activation occurs. See g_application_activate().
 <description>
 The ::command-line signal is emitted on the primary instance when
 a commandline is not handled locally. See g_application_run() and
-the #GApplicationCommandline documentation for more information.
+the #GApplicationCommandLine documentation for more information.
 
 
 </description>
@@ -2735,7 +2735,7 @@ an error).
 Each event except %G_SOCKET_CLIENT_COMPLETE may be emitted
 multiple times (or not at all) for a given connectable (in
 particular, if @client ends up attempting to connect to more than
-one address). However, if @client emits the #GSocketClient:event
+one address). However, if @client emits the #GSocketClient::event
 signal at all for a given connectable, that it will always emit
 it with %G_SOCKET_CLIENT_COMPLETE when it is done.
 
@@ -16927,7 +16927,7 @@ g_action_group_has_action(), g_action_group_get_action_enabled(),
 g_action_group_get_action_parameter_type(),
 g_action_group_get_action_state_type(),
 g_action_group_get_action_state_hint() and
-g_action_group_get_state() with a single function call.
+g_action_group_get_action_state() with a single function call.
 
 This provides two main benefits.
 
@@ -17977,7 +17977,7 @@ Since: 2.32
 <description>
 Activates the application.
 
-In essence, this results in the #GApplication::activate() signal being
+In essence, this results in the #GApplication::activate signal being
 emitted in the primary instance.
 
 The application must be registered before calling this function.
@@ -18513,6 +18513,30 @@ Since: 2.28
 <return></return>
 </function>
 
+<function name="g_application_quit">
+<description>
+Immediately quits the application.
+
+Upon return to the mainloop, g_application_run() will return,
+calling only the 'shutdown' function before doing so.
+
+The hold count is ignored.
+
+The result of calling g_application_run() again after it returns is
+unspecified.
+
+Since: 2.32
+
+</description>
+<parameters>
+<parameter name="application">
+<parameter_description> a #GApplication
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_application_register">
 <description>
 Attempts registration of the application.
@@ -18612,7 +18636,7 @@ instance, calling g_application_activate() or g_application_open(), etc.
 If local_command_line() returns %FALSE then the application is registered
 and the #GApplication::command-line signal is emitted in the primary
 instance (which may or may not be this instance). The signal handler
-gets passed a #GApplicationCommandline object that (among other things)
+gets passed a #GApplicationCommandLine object that (among other things)
 contains the remaining commandline arguments that have not been handled
 by local_command_line().
 
@@ -18632,7 +18656,7 @@ are assumed to be filenames and g_application_open() is called.
 
 If you need to handle commandline arguments that are not filenames,
 and you don't mind commandline handling to happen in the primary
-instance, you should set %G_APPLICATION_HANDLED_COMMAND_LINE and
+instance, you should set %G_APPLICATION_HANDLES_COMMAND_LINE and
 process the commandline arguments in your #GApplication::command-line
 signal handler, either manually or using the #GOptionContext API.
 
@@ -20814,7 +20838,7 @@ containing the data to convert.
 </parameter_description>
 </parameter>
 <parameter name="flags">
-<parameter_description> a #GConvertFlags controlling the conversion details
+<parameter_description> a #GConverterFlags controlling the conversion details
 </parameter_description>
 </parameter>
 <parameter name="bytes_read">
@@ -25233,7 +25257,7 @@ Since: 2.30
 Stops exporting @interface_ on all connections it is exported on.
 
 To unexport @interface_ from only a single connection, use
-g_dbus_interface_skeleton_export_from_connection()
+g_dbus_interface_skeleton_unexport_from_connection()
 
 Since: 2.30
 
@@ -29595,7 +29619,7 @@ ignore.
 <function name="g_drive_enumerate_identifiers">
 <description>
 Gets the kinds of identifiers that @drive has. 
-Use g_drive_get_identifer() to obtain the identifiers
+Use g_drive_get_identifier() to obtain the identifiers
 themselves.
 
 
@@ -32124,7 +32148,8 @@ Clears the status information from @info.
 
 <function name="g_file_info_copy_into">
 <description>
-Copies all of the #GFileAttribute&lt;!-- --&gt;s from @src_info to @dest_info.
+Copies all of the &lt;link linkend=&quot;gio-GFileAttribute&quot;&gt;GFileAttribute&lt;/link&gt;s
+from @src_info to @dest_info.
 
 </description>
 <parameters>
@@ -32783,7 +32808,8 @@ Removes all cases of @attribute from @info if it exists.
 
 <function name="g_file_info_set_attribute">
 <description>
-Sets the @attribute to contain the given value, if possible.
+Sets the @attribute to contain the given value, if possible. To unset the
+attribute, use %G_ATTRIBUTE_TYPE_INVALID for @type.
 
 </description>
 <parameters>
@@ -34362,7 +34388,7 @@ Opens a file in the preferred directory for temporary files (as
 returned by g_get_tmp_dir()) and returns a #GFile and
 #GFileIOStream pointing to it.
 
- template should be a string in the GLib file name encoding
+ tmpl should be a string in the GLib file name encoding
 containing a sequence of six 'X' characters, and containing no
 directory components. If it is %NULL, a default template is used.
 
@@ -37515,7 +37541,7 @@ return %FALSE and set @error appropriately if present.
 
 <function name="g_initable_new">
 <description>
-Helper function for constructing #GInitiable object. This is
+Helper function for constructing #GInitable object. This is
 similar to g_object_new() but also initializes the object
 and returns %NULL, setting an error on failure.
 
@@ -37554,7 +37580,7 @@ value pairs, and ended by %NULL.
 
 <function name="g_initable_new_valist">
 <description>
-Helper function for constructing #GInitiable object. This is
+Helper function for constructing #GInitable object. This is
 similar to g_object_new_valist() but also initializes the object
 and returns %NULL, setting an error on failure.
 
@@ -37592,7 +37618,7 @@ ignore.
 
 <function name="g_initable_newv">
 <description>
-Helper function for constructing #GInitiable object. This is
+Helper function for constructing #GInitable object. This is
 similar to g_object_newv() but also initializes the object
 and returns %NULL, setting an error on failure.
 
@@ -38432,7 +38458,7 @@ Since: 2.30
 Create a new scope for loading of IO modules. A scope can be used for
 blocking duplicate modules, or blocking a module you don't want to load.
 
-Specify the %G_IO_MODULES_SCOPE_BLOCK_DUPLICATES flag to block modules
+Specify the %G_IO_MODULE_SCOPE_BLOCK_DUPLICATES flag to block modules
 which have the same base name as a module that has already been seen
 in this scope.
 
@@ -39458,7 +39484,7 @@ Since: 2.32
 <function name="g_menu_append_submenu">
 <description>
 Convenience function for appending a submenu menu item to the end of
- menu   Combine g_menu_new_submenu() and g_menu_insert_item() for a
+ menu   Combine g_menu_item_new_submenu() and g_menu_insert_item() for a
 more flexible alternative.
 
 Since: 2.32
@@ -39513,8 +39539,8 @@ effects.
 
 If successful, @name and @value are set to the name and value of the
 attribute that has just been advanced to.  At this point,
-g_menu_item_get_name() and g_menu_item_get_value() will return the
-same values again.
+g_menu_attribute_iter_get_name() and g_menu_attribute_iter_get_value() will
+return the same values again.
 
 The value returned in @name remains valid for as long as the iterator
 remains at the current position.  The value returned in @value must
@@ -39715,7 +39741,7 @@ Since: 2.32
 <function name="g_menu_insert_submenu">
 <description>
 Convenience function for inserting a submenu menu item into @menu.
-Combine g_menu_new_submenu() and g_menu_insert_item() for a more
+Combine g_menu_item_new_submenu() and g_menu_insert_item() for a more
 flexible alternative.
 
 Since: 2.32
@@ -40078,8 +40104,7 @@ If @detailed_action contains a double colon (&quot;::&quot;) then it is used as
 a separator between an action name and a target string.  In this
 case, this call is equivalent to calling
 g_menu_item_set_action_and_target() with the part before the &quot;::&quot; and
-g_menu_item_set_target_value() with a string-type #GVariant
-containing the part following the &quot;::&quot;.
+with a string-type #GVariant containing the part following the &quot;::&quot;.
 
 If @detailed_action doesn't contain &quot;::&quot; then the action is set to
 the given string (verbatim) and the target value is unset.
@@ -40088,7 +40113,7 @@ See g_menu_item_set_action_and_target() or
 g_menu_item_set_action_and_target_value() for more flexible (but
 slightly less convenient) alternatives.
 
-See also g_menu_set_action_and_target_value() for a description of
+See also g_menu_item_set_action_and_target_value() for a description of
 the semantics of the action and target attributes.
 
 Since: 2.32
@@ -40245,7 +40270,7 @@ If that fails, then %FALSE is returned and there are no other effects.
 
 If successful, @out_link and @value are set to the name and #GMenuModel
 of the link that has just been advanced to.  At this point,
-g_menu_item_get_name() and g_menu_item_get_value() will return the
+g_menu_link_iter_get_name() and g_menu_link_iter_get_value() will return the
 same values again.
 
 The value returned in @out_link remains valid for as long as the iterator
@@ -40659,7 +40684,7 @@ Since: 2.32
 <function name="g_menu_prepend_submenu">
 <description>
 Convenience function for prepending a submenu menu item to the start
-of @menu.  Combine g_menu_new_submenu() and g_menu_insert_item() for
+of @menu.  Combine g_menu_item_new_submenu() and g_menu_insert_item() for
 a more flexible alternative.
 
 Since: 2.32
@@ -41782,7 +41807,7 @@ Creates a new #GSocketConnectable for connecting to the given
 @uri. May fail and return %NULL in case parsing @uri fails.
 
 Using this rather than g_network_address_new() or
-g_network_address_parse_host() allows #GSocketClient to determine
+g_network_address_parse() allows #GSocketClient to determine
 when to use application-specific proxy protocols.
 
 Since: 2.26
@@ -48880,6 +48905,55 @@ Since: 2.22
 </return>
 </function>
 
+<function name="g_socket_condition_timed_wait">
+<description>
+Waits for up to @timeout microseconds for @condition to become true
+on @socket. If the condition is met, %TRUE is returned.
+
+If @cancellable is cancelled before the condition is met, or if
+ timeout (or the socket's #GSocket:timeout) is reached before the
+condition is met, then %FALSE is returned and @error, if non-%NULL,
+is set to the appropriate value (%G_IO_ERROR_CANCELLED or
+%G_IO_ERROR_TIMED_OUT).
+
+If you don't want a timeout, use g_socket_condition_wait().
+(Alternatively, you can pass -1 for @timeout.)
+
+Note that although @timeout is in microseconds for consistency with
+other GLib APIs, this function actually only has millisecond
+resolution, and the behavior is undefined if @timeout is not an
+exact number of milliseconds.
+
+Since: 2.32
+
+</description>
+<parameters>
+<parameter name="socket">
+<parameter_description> a #GSocket
+</parameter_description>
+</parameter>
+<parameter name="condition">
+<parameter_description> a #GIOCondition mask to wait for
+</parameter_description>
+</parameter>
+<parameter name="timeout">
+<parameter_description> the maximum time (in microseconds) to wait, or -1
+</parameter_description>
+</parameter>
+<parameter name="cancellable">
+<parameter_description> a #GCancellable, or %NULL
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> a #GError pointer, or %NULL
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the condition was met, %FALSE otherwise
+
+</return>
+</function>
+
 <function name="g_socket_condition_wait">
 <description>
 Waits for @condition to become true on @socket. When the condition
@@ -48891,6 +48965,8 @@ met, then %FALSE is returned and @error, if non-%NULL, is set to
 the appropriate value (%G_IO_ERROR_CANCELLED or
 %G_IO_ERROR_TIMED_OUT).
 
+See also g_socket_condition_timed_wait().
+
 Since: 2.22
 
 </description>
@@ -51785,7 +51861,7 @@ unreffed when done.
 
 <function name="g_tls_backend_get_file_database_type">
 <description>
-Gets the #GTyep of @backend's #GTlsFileDatabase implementation.
+Gets the #GType of @backend's #GTlsFileDatabase implementation.
 
 Since: 2.30
 
@@ -52725,9 +52801,10 @@ Since: 2.30
 <description>
 Lookup a certificate by its handle.
 
-The handle should have been created by calling g_tls_database_create_handle()
-on a #GTlsDatabase object of the same TLS backend. The handle is designed
-to remain valid across instantiations of the database.
+The handle should have been created by calling
+g_tls_database_create_certificate_handle() on a #GTlsDatabase object of
+the same TLS backend. The handle is designed to remain valid across
+instantiations of the database.
 
 If the handle is no longer valid, or does not point to a certificate in
 this database, then %NULL will be returned.
@@ -52773,7 +52850,7 @@ Since: 2.30
 <function name="g_tls_database_lookup_certificate_for_handle_async">
 <description>
 Asynchronously lookup a certificate by its handle in the database. See
-g_tls_database_lookup_handle() for more information.
+g_tls_database_lookup_certificate_for_handle() for more information.
 
 Since: 2.30
 
@@ -52814,7 +52891,7 @@ Since: 2.30
 <function name="g_tls_database_lookup_certificate_for_handle_finish">
 <description>
 Finish an asynchronous lookup of a certificate by its handle. See
-g_tls_database_lookup_handle() for more information.
+g_tls_database_lookup_certificate_handle() for more information.
 
 If the handle is no longer valid, or does not point to a certificate in
 this database, then %NULL will be returned.
@@ -54507,7 +54584,7 @@ Frees a unix mount.
 </description>
 <parameters>
 <parameter name="mount_entry">
-<parameter_description> a #GUnixMount.
+<parameter_description> a #GUnixMountEntry.
 </parameter_description>
 </parameter>
 </parameters>
@@ -55531,7 +55608,7 @@ ignore.
 <function name="g_volume_enumerate_identifiers">
 <description>
 Gets the kinds of &lt;link linkend=&quot;volume-identifier&quot;&gt;identifiers&lt;/link&gt;
-that @volume has. Use g_volume_get_identifer() to obtain 
+that @volume has. Use g_volume_get_identifier() to obtain
 the identifiers themselves.
 
 
diff --git a/gio/src/gio_enums.defs b/gio/src/gio_enums.defs
index 145998d..09e07ad 100644
--- a/gio/src/gio_enums.defs
+++ b/gio/src/gio_enums.defs
@@ -1,3 +1,26 @@
+;; From gdbusauthmechanism.h
+
+;; Original typedef:
+;; typedef enum {
+;;   G_DBUS_AUTH_MECHANISM_STATE_INVALID,
+;;   G_DBUS_AUTH_MECHANISM_STATE_WAITING_FOR_DATA,
+;;   G_DBUS_AUTH_MECHANISM_STATE_HAVE_DATA_TO_SEND,
+;;   G_DBUS_AUTH_MECHANISM_STATE_REJECTED,
+;;   G_DBUS_AUTH_MECHANISM_STATE_ACCEPTED,
+;; } GDBusAuthMechanismState;
+
+(define-enum-extended DBusAuthMechanismState
+  (in-module "G")
+  (c-name "GDBusAuthMechanismState")
+  (values
+    '("invalid" "G_DBUS_AUTH_MECHANISM_STATE_INVALID" "0")
+    '("waiting-for-data" "G_DBUS_AUTH_MECHANISM_STATE_WAITING_FOR_DATA" "1")
+    '("have-data-to-send" "G_DBUS_AUTH_MECHANISM_STATE_HAVE_DATA_TO_SEND" "2")
+    '("rejected" "G_DBUS_AUTH_MECHANISM_STATE_REJECTED" "3")
+    '("accepted" "G_DBUS_AUTH_MECHANISM_STATE_ACCEPTED" "4")
+  )
+)
+
 ;; From gioenums.h
 
 ;; Original typedef:
@@ -189,7 +212,7 @@
 )
 
 ;; Original typedef:
-;; typedef enum {
+;; typedef enum /*< flags >*/ {
 ;;   G_MOUNT_MOUNT_NONE = 0
 ;; } GMountMountFlags;
 
@@ -217,7 +240,7 @@
 )
 
 ;; Original typedef:
-;; typedef enum {
+;; typedef enum /*< flags >*/ {
 ;;   G_DRIVE_START_NONE = 0
 ;; } GDriveStartFlags;
 
@@ -442,7 +465,6 @@
     '("busy" "G_IO_ERROR_BUSY" "26")
     '("would-block" "G_IO_ERROR_WOULD_BLOCK" "27")
     '("host-not-found" "G_IO_ERROR_HOST_NOT_FOUND" "28")
-    '("host-not-found" "G_IO_ERROR_HOST_WAS_NOT_FOUND" "28")
     '("would-merge" "G_IO_ERROR_WOULD_MERGE" "29")
     '("failed-handled" "G_IO_ERROR_FAILED_HANDLED" "30")
     '("too-many-open-files" "G_IO_ERROR_TOO_MANY_OPEN_FILES" "31")
@@ -590,6 +612,49 @@
 
 ;; Original typedef:
 ;; typedef enum {
+;;   G_RESOURCE_ERROR_NOT_FOUND,
+;;   G_RESOURCE_ERROR_INTERNAL
+;; } GResourceError;
+
+(define-enum-extended ResourceError
+  (in-module "G")
+  (c-name "GResourceError")
+  (values
+    '("not-found" "G_RESOURCE_ERROR_NOT_FOUND" "0")
+    '("internal" "G_RESOURCE_ERROR_INTERNAL" "1")
+  )
+)
+
+;; Original typedef:
+;; typedef enum {
+;;   G_RESOURCE_FLAGS_NONE       = 0,
+;;   G_RESOURCE_FLAGS_COMPRESSED = (1<<0)
+;; } GResourceFlags;
+
+(define-flags-extended ResourceFlags
+  (in-module "G")
+  (c-name "GResourceFlags")
+  (values
+    '("none" "G_RESOURCE_FLAGS_NONE" "0x0")
+    '("compressed" "G_RESOURCE_FLAGS_COMPRESSED" "(1<<0)")
+  )
+)
+
+;; Original typedef:
+;; typedef enum /*< flags >*/ {
+;;   G_RESOURCE_LOOKUP_FLAGS_NONE       = 0
+;; } GResourceLookupFlags;
+
+(define-flags-extended ResourceLookupFlags
+  (in-module "G")
+  (c-name "GResourceLookupFlags")
+  (values
+    '("none" "G_RESOURCE_LOOKUP_FLAGS_NONE" "0x0")
+  )
+)
+
+;; Original typedef:
+;; typedef enum {
 ;;   G_SOCKET_FAMILY_INVALID,
 ;; #ifdef GLIB_SYSDEF_AF_UNIX
 ;;   G_SOCKET_FAMILY_UNIX = GLIB_SYSDEF_AF_UNIX,
@@ -768,7 +833,8 @@
 ;;   G_DBUS_PROXY_FLAGS_NONE = 0,
 ;;   G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES = (1<<0),
 ;;   G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = (1<<1),
-;;   G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = (1<<2)
+;;   G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = (1<<2),
+;;   G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = (1<<3)
 ;; } GDBusProxyFlags;
 
 (define-flags-extended DBusProxyFlags
@@ -779,6 +845,7 @@
     '("do-not-load-properties" "G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES" "(1<<0)")
     '("do-not-connect-signals" "G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS" "(1<<1)")
     '("do-not-auto-start" "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START" "(1<<2)")
+    '("get-invalidated-properties" "G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES" "(1<<3)")
   )
 )
 
@@ -1304,7 +1371,7 @@
 )
 
 ;; Original typedef:
-;; typedef enum {
+;; typedef enum /*< flags >*/ {
 ;;   G_TLS_DATABASE_VERIFY_NONE = 0
 ;; } GTlsDatabaseVerifyFlags;
 
@@ -1346,6 +1413,35 @@
   )
 )
 
+;; Original typedef:
+;; typedef enum {
+;;   G_SOCKET_CLIENT_RESOLVING,
+;;   G_SOCKET_CLIENT_RESOLVED,
+;;   G_SOCKET_CLIENT_CONNECTING,
+;;   G_SOCKET_CLIENT_CONNECTED,
+;;   G_SOCKET_CLIENT_PROXY_NEGOTIATING,
+;;   G_SOCKET_CLIENT_PROXY_NEGOTIATED,
+;;   G_SOCKET_CLIENT_TLS_HANDSHAKING,
+;;   G_SOCKET_CLIENT_TLS_HANDSHAKED,
+;;   G_SOCKET_CLIENT_COMPLETE
+;; } GSocketClientEvent;
+
+(define-enum-extended SocketClientEvent
+  (in-module "G")
+  (c-name "GSocketClientEvent")
+  (values
+    '("resolving" "G_SOCKET_CLIENT_RESOLVING" "0")
+    '("resolved" "G_SOCKET_CLIENT_RESOLVED" "1")
+    '("connecting" "G_SOCKET_CLIENT_CONNECTING" "2")
+    '("connected" "G_SOCKET_CLIENT_CONNECTED" "3")
+    '("proxy-negotiating" "G_SOCKET_CLIENT_PROXY_NEGOTIATING" "4")
+    '("proxy-negotiated" "G_SOCKET_CLIENT_PROXY_NEGOTIATED" "5")
+    '("tls-handshaking" "G_SOCKET_CLIENT_TLS_HANDSHAKING" "6")
+    '("tls-handshaked" "G_SOCKET_CLIENT_TLS_HANDSHAKED" "7")
+    '("complete" "G_SOCKET_CLIENT_COMPLETE" "8")
+  )
+)
+
 ;; From gsettings.h
 
 ;; Original typedef:
diff --git a/gio/src/gio_methods.defs b/gio/src/gio_methods.defs
index 33c07ab..e7973e1 100644
--- a/gio/src/gio_methods.defs
+++ b/gio/src/gio_methods.defs
@@ -2226,6 +2226,12 @@
   )
 )
 
+(define-method get_environ
+  (of-object "GApplicationCommandLine")
+  (c-name "g_application_command_line_get_environ")
+  (return-type "const-gchar*-const*")
+)
+
 (define-method getenv
   (of-object "GApplicationCommandLine")
   (c-name "g_application_command_line_getenv")
@@ -2430,6 +2436,12 @@
   )
 )
 
+(define-method quit
+  (of-object "GApplication")
+  (c-name "g_application_quit")
+  (return-type "none")
+)
+
 (define-function g_application_get_default
   (c-name "g_application_get_default")
   (return-type "GApplication*")
@@ -6015,6 +6027,12 @@
   (return-type "const-char*")
 )
 
+(define-method get_keywords
+  (of-object "GDesktopAppInfo")
+  (c-name "g_desktop_app_info_get_keywords")
+  (return-type "const-char*-const*")
+)
+
 (define-method get_nodisplay
   (of-object "GDesktopAppInfo")
   (c-name "g_desktop_app_info_get_nodisplay")
@@ -6146,6 +6164,28 @@
   (return-type "gboolean")
 )
 
+(define-method eject
+  (of-object "GDrive")
+  (c-name "g_drive_eject")
+  (return-type "none")
+  (parameters
+    '("GMountUnmountFlags" "flags")
+    '("GCancellable*" "cancellable")
+    '("GAsyncReadyCallback" "callback")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method eject_finish
+  (of-object "GDrive")
+  (c-name "g_drive_eject_finish")
+  (return-type "gboolean")
+  (parameters
+    '("GAsyncResult*" "result")
+    '("GError**" "error")
+  )
+)
+
 (define-method poll_for_media
   (of-object "GDrive")
   (c-name "g_drive_poll_for_media")
@@ -7464,6 +7504,28 @@
   )
 )
 
+(define-method unmount_mountable
+  (of-object "GFile")
+  (c-name "g_file_unmount_mountable")
+  (return-type "none")
+  (parameters
+    '("GMountUnmountFlags" "flags")
+    '("GCancellable*" "cancellable")
+    '("GAsyncReadyCallback" "callback")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method unmount_mountable_finish
+  (of-object "GFile")
+  (c-name "g_file_unmount_mountable_finish")
+  (return-type "gboolean")
+  (parameters
+    '("GAsyncResult*" "result")
+    '("GError**" "error")
+  )
+)
+
 (define-method unmount_mountable_with_operation
   (of-object "GFile")
   (c-name "g_file_unmount_mountable_with_operation")
@@ -7487,6 +7549,28 @@
   )
 )
 
+(define-method eject_mountable
+  (of-object "GFile")
+  (c-name "g_file_eject_mountable")
+  (return-type "none")
+  (parameters
+    '("GMountUnmountFlags" "flags")
+    '("GCancellable*" "cancellable")
+    '("GAsyncReadyCallback" "callback")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method eject_mountable_finish
+  (of-object "GFile")
+  (c-name "g_file_eject_mountable_finish")
+  (return-type "gboolean")
+  (parameters
+    '("GAsyncResult*" "result")
+    '("GError**" "error")
+  )
+)
+
 (define-method eject_mountable_with_operation
   (of-object "GFile")
   (c-name "g_file_eject_mountable_with_operation")
@@ -10518,6 +10602,50 @@
   (return-type "gboolean")
 )
 
+(define-method unmount
+  (of-object "GMount")
+  (c-name "g_mount_unmount")
+  (return-type "none")
+  (parameters
+    '("GMountUnmountFlags" "flags")
+    '("GCancellable*" "cancellable")
+    '("GAsyncReadyCallback" "callback")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method unmount_finish
+  (of-object "GMount")
+  (c-name "g_mount_unmount_finish")
+  (return-type "gboolean")
+  (parameters
+    '("GAsyncResult*" "result")
+    '("GError**" "error")
+  )
+)
+
+(define-method eject
+  (of-object "GMount")
+  (c-name "g_mount_eject")
+  (return-type "none")
+  (parameters
+    '("GMountUnmountFlags" "flags")
+    '("GCancellable*" "cancellable")
+    '("GAsyncReadyCallback" "callback")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method eject_finish
+  (of-object "GMount")
+  (c-name "g_mount_eject_finish")
+  (return-type "gboolean")
+  (parameters
+    '("GAsyncResult*" "result")
+    '("GError**" "error")
+  )
+)
+
 (define-method remount
   (of-object "GMount")
   (c-name "g_mount_remount")
@@ -12056,6 +12184,16 @@
   (return-type "GType")
 )
 
+(define-function g_settings_list_schemas
+  (c-name "g_settings_list_schemas")
+  (return-type "const-gchar*-const*")
+)
+
+(define-function g_settings_list_relocatable_schemas
+  (c-name "g_settings_list_relocatable_schemas")
+  (return-type "const-gchar*-const*")
+)
+
 (define-function g_settings_new
   (c-name "g_settings_new")
   (is-constructor-of "GSettings")
@@ -13701,6 +13839,18 @@
   )
 )
 
+(define-method condition_timed_wait
+  (of-object "GSocket")
+  (c-name "g_socket_condition_timed_wait")
+  (return-type "gboolean")
+  (parameters
+    '("GIOCondition" "condition")
+    '("gint64" "timeout")
+    '("GCancellable*" "cancellable")
+    '("GError**" "error")
+  )
+)
+
 (define-method accept
   (of-object "GSocket")
   (c-name "g_socket_accept")
@@ -14241,6 +14391,12 @@
   )
 )
 
+(define-method get_names
+  (of-object "GThemedIcon")
+  (c-name "g_themed_icon_get_names")
+  (return-type "const-gchar*-const*")
+)
+
 
 
 ;; From gthreadedresolver.h
@@ -15551,6 +15707,15 @@
   )
 )
 
+(define-function g_unix_socket_address_new_abstract
+  (c-name "g_unix_socket_address_new_abstract")
+  (return-type "GSocketAddress*")
+  (parameters
+    '("const-gchar*" "path")
+    '("gint" "path_len")
+  )
+)
+
 (define-function g_unix_socket_address_new_with_type
   (c-name "g_unix_socket_address_new_with_type")
   (return-type "GSocketAddress*")
@@ -15631,6 +15796,12 @@
   )
 )
 
+(define-method get_supported_uri_schemes
+  (of-object "GVfs")
+  (c-name "g_vfs_get_supported_uri_schemes")
+  (return-type "const-gchar*-const*")
+)
+
 (define-method parse_name
   (of-object "GVfs")
   (c-name "g_vfs_parse_name")
@@ -15730,6 +15901,28 @@
   )
 )
 
+(define-method eject
+  (of-object "GVolume")
+  (c-name "g_volume_eject")
+  (return-type "none")
+  (parameters
+    '("GMountUnmountFlags" "flags")
+    '("GCancellable*" "cancellable")
+    '("GAsyncReadyCallback" "callback")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method eject_finish
+  (of-object "GVolume")
+  (c-name "g_volume_eject_finish")
+  (return-type "gboolean")
+  (parameters
+    '("GAsyncResult*" "result")
+    '("GError**" "error")
+  )
+)
+
 (define-method get_identifier
   (of-object "GVolume")
   (c-name "g_volume_get_identifier")
diff --git a/gio/src/gio_signals.defs b/gio/src/gio_signals.defs
index 595b5e3..f322e24 100644
--- a/gio/src/gio_signals.defs
+++ b/gio/src/gio_signals.defs
@@ -98,6 +98,12 @@
 (define-signal startup
   (of-object "GApplication")
   (return-type "void")
+  (when "first")
+)
+
+(define-signal shutdown
+  (of-object "GApplication")
+  (return-type "void")
   (when "last")
 )
 
@@ -769,6 +775,15 @@
   )
 )
 
+(define-property settings-schema
+  (of-object "GSettings")
+  (prop-type "GParamBoxed")
+  (docs "The GSettingsSchema for this settings object")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
 (define-property schema
   (of-object "GSettings")
   (prop-type "GParamString")
@@ -778,6 +793,15 @@
   (construct-only #t)
 )
 
+(define-property schema-id
+  (of-object "GSettings")
+  (prop-type "GParamString")
+  (docs "The name of the schema for this settings object")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
 (define-property backend
   (of-object "GSettings")
   (prop-type "GParamObject")
@@ -843,8 +867,8 @@
   (prop-type "GParamString")
   (docs "The name used to invoke the action")
   (readable #t)
-  (writable #f)
-  (construct-only #f)
+  (writable #t)
+  (construct-only #t)
 )
 
 (define-property parameter-type
@@ -852,8 +876,8 @@
   (prop-type "GParamBoxed")
   (docs "The type of GVariant passed to activate()")
   (readable #t)
-  (writable #f)
-  (construct-only #f)
+  (writable #t)
+  (construct-only #t)
 )
 
 (define-property enabled
@@ -861,7 +885,7 @@
   (prop-type "GParamBoolean")
   (docs "If the action can be activated")
   (readable #t)
-  (writable #f)
+  (writable #t)
   (construct-only #f)
 )
 
@@ -879,7 +903,7 @@
   (prop-type "GParamVariant")
   (docs "The state the action is in")
   (readable #t)
-  (writable #f)
+  (writable #t)
   (construct-only #f)
 )
 
@@ -1166,6 +1190,24 @@
   (construct-only #t)
 )
 
+(define-property flowinfo
+  (of-object "GInetSocketAddress")
+  (prop-type "GParamUInt")
+  (docs "IPv6 flow info")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
+(define-property scope-id
+  (of-object "GInetSocketAddress")
+  (prop-type "GParamUInt")
+  (docs "IPv6 scope ID")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
 ;; From GSocketAddress
 
 (define-property family
@@ -1297,6 +1339,15 @@
   )
 )
 
+(define-property settings-schema
+  (of-object "GSettings")
+  (prop-type "GParamBoxed")
+  (docs "The GSettingsSchema for this settings object")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
 (define-property schema
   (of-object "GSettings")
   (prop-type "GParamString")
@@ -1306,6 +1357,15 @@
   (construct-only #t)
 )
 
+(define-property schema-id
+  (of-object "GSettings")
+  (prop-type "GParamString")
+  (docs "The name of the schema for this settings object")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
 (define-property backend
   (of-object "GSettings")
   (prop-type "GParamObject")
@@ -1434,8 +1494,55 @@
   (construct-only #f)
 )
 
+(define-property ttl
+  (of-object "GSocket")
+  (prop-type "GParamUInt")
+  (docs "Time-to-live of outgoing unicast packets")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property broadcast
+  (of-object "GSocket")
+  (prop-type "GParamBoolean")
+  (docs "Whether to allow sending to and receiving from broadcast addresses")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property multicast-loopback
+  (of-object "GSocket")
+  (prop-type "GParamBoolean")
+  (docs "Whether outgoing multicast packets loop back to the local host")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property multicast-ttl
+  (of-object "GSocket")
+  (prop-type "GParamUInt")
+  (docs "Time-to-live of outgoing multicast packets")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GSocketClient
 
+(define-signal event
+  (of-object "GSocketClient")
+  (return-type "void")
+  (when "last")
+  (parameters
+    '("GSocketClientEvent" "p0")
+    '("GSocketConnectable*" "p1")
+    '("GIOStream*" "p2")
+  )
+)
+
 (define-property family
   (of-object "GSocketClient")
   (prop-type "GParamEnum")
diff --git a/gio/src/gio_signals.defs.patch b/gio/src/gio_signals.defs.patch
index 9a630c4..a7b07ba 100644
--- a/gio/src/gio_signals.defs.patch
+++ b/gio/src/gio_signals.defs.patch
@@ -1,6 +1,6 @@
---- gio_signals.defs	2011-06-19 18:11:11.000000000 -0400
-+++ gio_signals_new.defs	2011-06-19 17:18:06.000000000 -0400
-@@ -36,7 +36,7 @@
+--- gio_signals.defs	2012-02-28 13:19:25.000000000 -0500
++++ gio_signals.defs.new	2012-02-28 12:47:50.000000000 -0500
+@@ -83,7 +83,7 @@
    (when "last")
    (parameters
      '("const-gchar*" "p0")
@@ -9,7 +9,7 @@
    )
  )
  
-@@ -526,7 +526,7 @@
+@@ -579,7 +579,7 @@
    (when "last")
    (parameters
      '("const-gchar*" "p0")
@@ -18,7 +18,25 @@
    )
  )
  
-@@ -1613,8 +1613,8 @@
+@@ -849,7 +849,7 @@
+   (return-type "void")
+   (when "last")
+   (parameters
+-    '("GVariant" "p0")
++    '("GVariant*" "p0")
+   )
+ )
+ 
+@@ -858,7 +858,7 @@
+   (return-type "void")
+   (when "last")
+   (parameters
+-    '("GVariant" "p0")
++    '("GVariant*" "p0")
+   )
+ )
+ 
+@@ -1824,8 +1824,8 @@
    (return-type "void")
    (when "last")
    (parameters
@@ -29,7 +47,7 @@
    )
  )
  
-@@ -1625,7 +1625,7 @@
+@@ -1836,7 +1836,7 @@
    (parameters
      '("const-gchar*" "p0")
      '("const-gchar*" "p1")
diff --git a/glib/src/glib_docs.xml b/glib/src/glib_docs.xml
index c46b3ca..fe2971e 100644
--- a/glib/src/glib_docs.xml
+++ b/glib/src/glib_docs.xml
@@ -1936,7 +1936,7 @@ This function must be called while holding the @queue's lock.
 <parameter_description> a #GAsyncQueue
 </parameter_description>
 </parameter>
-<parameter name="time">
+<parameter name="timeout">
 <parameter_description> the number of microseconds to wait
 </parameter_description>
 </parameter>
@@ -11584,7 +11584,7 @@ Since: 2.32
 <parameters>
 <parameter name="envp">
 <parameter_description> an environment
-list (eg, as returned from g_get_environ())
+list that can be freed using g_strfreev() (e.g., as returned from g_get_environ())
 </parameter_description>
 </parameter>
 <parameter name="variable">
@@ -11601,7 +11601,7 @@ list (eg, as returned from g_get_environ())
 </parameter>
 </parameters>
 <return> the
-updated environment
+updated environment list. Free it using g_strfreev().
 
 </return>
 </function>
@@ -11617,7 +11617,7 @@ Since: 2.32
 <parameters>
 <parameter name="envp">
 <parameter_description> an environment
-list (eg, as returned from g_get_environ())
+list that can be freed using g_strfreev() (e.g., as returned from g_get_environ())
 </parameter_description>
 </parameter>
 <parameter name="variable">
@@ -11626,7 +11626,7 @@ list (eg, as returned from g_get_environ())
 </parameter>
 </parameters>
 <return> the
-updated environment
+updated environment list. Free it using g_strfreev().
 
 </return>
 </function>
@@ -16954,7 +16954,7 @@ Since: 2.6
 </parameter_description>
 </parameter>
 <parameter name="length">
-<parameter_description> the length of @data in bytes
+<parameter_description> the length of @data in bytes (or -1 if data is nul-terminated)
 </parameter_description>
 </parameter>
 <parameter name="flags">
@@ -17055,7 +17055,7 @@ of the file, or %NULL
 <function name="g_key_file_load_from_file">
 <description>
 Loads a key file into an empty #GKeyFile structure.
-If the file could not be loaded then %error is set to 
+If the file could not be loaded then @error is set to
 either a #GFileError or #GKeyFileError.
 
 Since: 2.6
@@ -19981,7 +19981,7 @@ of the #GMappedFile. Therefore, mapping should only be used if the file
 will not be modified, or if all modifications of the file are done
 atomically (e.g. using g_file_set_contents()).
 
-Since: 2.30
+Since: 2.32
 
 </description>
 <parameters>
@@ -42547,10 +42547,11 @@ instances (if not abstract).  The value of @flags determines the nature
 <function name="g_type_register_fundamental">
 <description>
 Registers @type_id as the predefined identifier and @type_name as the
-name of a fundamental type.  The type system uses the information
-contained in the #GTypeInfo structure pointed to by @info and the
-#GTypeFundamentalInfo structure pointed to by @finfo to manage the
-type and its instances.  The value of @flags determines additional
+name of a fundamental type. If @type_id is already registered, or a type
+named @type_name is already registered, the behaviour is undefined. The type
+system uses the information contained in the #GTypeInfo structure pointed to
+by @info and the #GTypeFundamentalInfo structure pointed to by @finfo to
+manage the type and its instances. The value of @flags determines additional
 characteristics of the fundamental type.
 
 
diff --git a/glib/src/glib_enums.defs b/glib/src/glib_enums.defs
index 09c252b..c62901f 100644
--- a/glib/src/glib_enums.defs
+++ b/glib/src/glib_enums.defs
@@ -28,6 +28,24 @@
   )
 )
 
+;; From gbsearcharray.h
+
+;; Original typedef:
+;; typedef enum
+;; {
+;;   G_BSEARCH_ARRAY_ALIGN_POWER2  = 1 << 0, /* align memory to power2 sizes */
+;;   G_BSEARCH_ARRAY_AUTO_SHRINK  = 1 << 1   /* shrink array upon removal */
+;; } GBSearchArrayFlags;
+
+(define-flags-extended BSearchArrayFlags
+  (in-module "G")
+  (c-name "GBSearchArrayFlags")
+  (values
+    '("align-power2" "G_BSEARCH_ARRAY_ALIGN_POWER2" "1 << 0")
+    '("auto-shrink" "G_BSEARCH_ARRAY_AUTO_SHRINK" "1 << 1")
+  )
+)
+
 ;; From gchecksum.h
 
 ;; Original typedef:
@@ -930,6 +948,8 @@
 ;;   
 ;;   G_TOKEN_COMMENT_SINGLE,
 ;;   G_TOKEN_COMMENT_MULTI,
+;; 
+;;   /*< private >*/
 ;;   G_TOKEN_LAST
 ;; } GTokenType;
 
@@ -1347,7 +1367,9 @@
 ;;   G_UNICODE_BREAK_HANGUL_T_JAMO,
 ;;   G_UNICODE_BREAK_HANGUL_LV_SYLLABLE,
 ;;   G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE,
-;;   G_UNICODE_BREAK_CLOSE_PARANTHESIS
+;;   G_UNICODE_BREAK_CLOSE_PARANTHESIS,
+;;   G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER,
+;;   G_UNICODE_BREAK_HEBREW_LETTER
 ;; } GUnicodeBreakType;
 
 (define-enum-extended UnicodeBreakType
@@ -1391,6 +1413,8 @@
     '("hangul-lv-syllable" "G_UNICODE_BREAK_HANGUL_LV_SYLLABLE" "34")
     '("hangul-lvt-syllable" "G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE" "35")
     '("close-paranthesis" "G_UNICODE_BREAK_CLOSE_PARANTHESIS" "36")
+    '("conditional-japanese-starter" "G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER" "37")
+    '("hebrew-letter" "G_UNICODE_BREAK_HEBREW_LETTER" "38")
   )
 )
 
@@ -1399,13 +1423,13 @@
 ;; {                         /* ISO 15924 code */
 ;;   G_UNICODE_SCRIPT_INVALID_CODE = -1,
 ;;   G_UNICODE_SCRIPT_COMMON       = 0,   /* Zyyy */
-;;   G_UNICODE_SCRIPT_INHERITED,          /* Qaai */
+;;   G_UNICODE_SCRIPT_INHERITED,          /* Zinh (Qaai) */
 ;;   G_UNICODE_SCRIPT_ARABIC,             /* Arab */
 ;;   G_UNICODE_SCRIPT_ARMENIAN,           /* Armn */
 ;;   G_UNICODE_SCRIPT_BENGALI,            /* Beng */
 ;;   G_UNICODE_SCRIPT_BOPOMOFO,           /* Bopo */
 ;;   G_UNICODE_SCRIPT_CHEROKEE,           /* Cher */
-;;   G_UNICODE_SCRIPT_COPTIC,             /* Qaac */
+;;   G_UNICODE_SCRIPT_COPTIC,             /* Copt (Qaac) */
 ;;   G_UNICODE_SCRIPT_CYRILLIC,           /* Cyrl (Cyrs) */
 ;;   G_UNICODE_SCRIPT_DESERET,            /* Dsrt */
 ;;   G_UNICODE_SCRIPT_DEVANAGARI,         /* Deva */
@@ -1505,7 +1529,16 @@
 ;;   /* Unicode-6.0 additions */
 ;;   G_UNICODE_SCRIPT_BATAK,                  /* Batk */
 ;;   G_UNICODE_SCRIPT_BRAHMI,                 /* Brah */
-;;   G_UNICODE_SCRIPT_MANDAIC                 /* Mand */
+;;   G_UNICODE_SCRIPT_MANDAIC,                /* Mand */
+;; 
+;;   /* Unicode-6.1 additions */
+;;   G_UNICODE_SCRIPT_CHAKMA,                 /* Cakm */
+;;   G_UNICODE_SCRIPT_MEROITIC_CURSIVE,       /* Merc */
+;;   G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS,   /* Mero */
+;;   G_UNICODE_SCRIPT_MIAO,                   /* Plrd */
+;;   G_UNICODE_SCRIPT_SHARADA,                /* Shrd */
+;;   G_UNICODE_SCRIPT_SORA_SOMPENG,           /* Sora */
+;;   G_UNICODE_SCRIPT_TAKRI                   /* Takr */
 ;; } GUnicodeScript;
 
 (define-enum-extended UnicodeScript
@@ -1609,6 +1642,13 @@
     '("batak" "G_UNICODE_SCRIPT_BATAK" "93")
     '("brahmi" "G_UNICODE_SCRIPT_BRAHMI" "94")
     '("mandaic" "G_UNICODE_SCRIPT_MANDAIC" "95")
+    '("chakma" "G_UNICODE_SCRIPT_CHAKMA" "96")
+    '("meroitic-cursive" "G_UNICODE_SCRIPT_MEROITIC_CURSIVE" "97")
+    '("meroitic-hieroglyphs" "G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS" "98")
+    '("miao" "G_UNICODE_SCRIPT_MIAO" "99")
+    '("sharada" "G_UNICODE_SCRIPT_SHARADA" "100")
+    '("sora-sompeng" "G_UNICODE_SCRIPT_SORA_SOMPENG" "101")
+    '("takri" "G_UNICODE_SCRIPT_TAKRI" "102")
   )
 )
 
@@ -1787,3 +1827,25 @@
   )
 )
 
+;; From gthread.h
+
+;; Original typedef:
+;; typedef enum
+;; {
+;;   G_THREAD_PRIORITY_LOW,
+;;   G_THREAD_PRIORITY_NORMAL,
+;;   G_THREAD_PRIORITY_HIGH,
+;;   G_THREAD_PRIORITY_URGENT
+;; } GThreadPriority;
+
+(define-enum-extended ThreadPriority
+  (in-module "G")
+  (c-name "GThreadPriority")
+  (values
+    '("low" "G_THREAD_PRIORITY_LOW" "0")
+    '("normal" "G_THREAD_PRIORITY_NORMAL" "1")
+    '("high" "G_THREAD_PRIORITY_HIGH" "2")
+    '("urgent" "G_THREAD_PRIORITY_URGENT" "3")
+  )
+)
+
diff --git a/glib/src/glib_enums.defs.patch b/glib/src/glib_enums.defs.patch
new file mode 100644
index 0000000..feac2c2
--- /dev/null
+++ b/glib/src/glib_enums.defs.patch
@@ -0,0 +1,52 @@
+--- glib_enums.defs	2012-02-28 12:17:21.000000000 -0500
++++ glib_enums.defs.new	2012-02-28 12:00:52.000000000 -0500
+@@ -386,16 +386,24 @@
+ ;;   G_IO_NVAL	GLIB_SYSDEF_POLLNVAL
+ ;; } GIOCondition;
+ 
++;; We hand-edit these to use the actual enum values,
++;; because the values are actually defines that contain a =,
++;; which is very bizarre.
++;; We would need to include the header anyway,
++;; because we can't just use numeric values.
++;; If you regenerate this .defs file and forget to make this change
++;; then you will see compiler errors like this:
++;; ../glibmm/iochannel.h:154:12: error: expected primary-expression before '=' token
+ (define-flags-extended IOCondition
+   (in-module "G")
+   (c-name "GIOCondition")
+   (values
+-    '("in" "G_IO_IN" "GLIB_SYSDEF_POLLIN")
+-    '("out" "G_IO_OUT" "GLIB_SYSDEF_POLLOUT")
+-    '("pri" "G_IO_PRI" "GLIB_SYSDEF_POLLPRI")
+-    '("err" "G_IO_ERR" "GLIB_SYSDEF_POLLERR")
+-    '("hup" "G_IO_HUP" "GLIB_SYSDEF_POLLHUP")
+-    '("nval" "G_IO_NVAL" "GLIB_SYSDEF_POLLNVAL")
++    '("in" "G_IO_IN" "G_IO_IN")
++    '("out" "G_IO_OUT" "G_IO_OUT")
++    '("pri" "G_IO_PRI" "G_IO_PRI")
++    '("err" "G_IO_ERR" "G_IO_ERR")
++    '("hup" "G_IO_HUP" "G_IO_HUP")
++    '("nval" "G_IO_NVAL" "G_IO_NVAL")
+   )
+ )
+ 
+@@ -411,6 +419,10 @@
+ ;;   G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK,
+ ;;   G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK
+ ;; } GIOFlags;
++;; Note that we add is-writeable in glibmm to preserve API.
++;; They do that with a #define in glib, though an enum would have been OK:
++;; See http://git.gnome.org/browse/glib/commit/glib/giochannel.h?id=0d1a2eb4bfcd733e0c015c76fb0ca0308b8a61f0
++;; and https://bugzilla.gnome.org/show_bug.cgi?id=657045#c6
+ 
+ (define-flags-extended IOFlags
+   (in-module "G")
+@@ -419,6 +431,7 @@
+     '("append" "G_IO_FLAG_APPEND" "1 << 0")
+     '("nonblock" "G_IO_FLAG_NONBLOCK" "1 << 1")
+     '("is-readable" "G_IO_FLAG_IS_READABLE" "1 << 2")
++    '("is-writeable" "G_IO_FLAG_IS_WRITEABLE" "1 << 3")
+     '("is-writable" "G_IO_FLAG_IS_WRITABLE" "1 << 3")
+     '("is-seekable" "G_IO_FLAG_IS_SEEKABLE" "1 << 4")
+     '("mask" "G_IO_FLAG_MASK" "(1 << 5) - 1")
diff --git a/glib/src/glib_functions.defs b/glib/src/glib_functions.defs
index 76d35cb..3d60dc6 100644
--- a/glib/src/glib_functions.defs
+++ b/glib/src/glib_functions.defs
@@ -18,6 +18,16 @@
   )
 )
 
+(define-flags ArrayFlags
+  (in-module "GBSearch")
+  (c-name "GBSearchArrayFlags")
+  (gtype-id "G_TYPE_B_SEARCH_ARRAY_FLAGS")
+  (values
+    '("align-power2" "G_BSEARCH_ARRAY_ALIGN_POWER2")
+    '("auto-shrink" "G_BSEARCH_ARRAY_AUTO_SHRINK")
+  )
+)
+
 (define-enum Type
   (in-module "GChecksum")
   (c-name "GChecksumType")
@@ -713,6 +723,8 @@
     '("hangul-lv-syllable" "G_UNICODE_BREAK_HANGUL_LV_SYLLABLE")
     '("hangul-lvt-syllable" "G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE")
     '("close-paranthesis" "G_UNICODE_BREAK_CLOSE_PARANTHESIS")
+    '("conditional-japanese-starter" "G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER")
+    '("hebrew-letter" "G_UNICODE_BREAK_HEBREW_LETTER")
   )
 )
 
@@ -818,6 +830,13 @@
     '("batak" "G_UNICODE_SCRIPT_BATAK")
     '("brahmi" "G_UNICODE_SCRIPT_BRAHMI")
     '("mandaic" "G_UNICODE_SCRIPT_MANDAIC")
+    '("chakma" "G_UNICODE_SCRIPT_CHAKMA")
+    '("meroitic-cursive" "G_UNICODE_SCRIPT_MEROITIC_CURSIVE")
+    '("meroitic-hieroglyphs" "G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS")
+    '("miao" "G_UNICODE_SCRIPT_MIAO")
+    '("sharada" "G_UNICODE_SCRIPT_SHARADA")
+    '("sora-sompeng" "G_UNICODE_SCRIPT_SORA_SOMPENG")
+    '("takri" "G_UNICODE_SCRIPT_TAKRI")
   )
 )
 
@@ -917,6 +936,18 @@
   )
 )
 
+(define-enum Priority
+  (in-module "GThread")
+  (c-name "GThreadPriority")
+  (gtype-id "G_TYPE_THREAD_PRIORITY")
+  (values
+    '("low" "G_THREAD_PRIORITY_LOW")
+    '("normal" "G_THREAD_PRIORITY_NORMAL")
+    '("high" "G_THREAD_PRIORITY_HIGH")
+    '("urgent" "G_THREAD_PRIORITY_URGENT")
+  )
+)
+
 
 ;; From galloca.h
 
@@ -1068,6 +1099,15 @@
   )
 )
 
+(define-method set_clear_func
+  (of-object "GArray")
+  (c-name "g_array_set_clear_func")
+  (return-type "none")
+  (parameters
+    '("GDestroyNotify" "clear_func")
+  )
+)
+
 (define-function g_ptr_array_new
   (c-name "g_ptr_array_new")
   (is-constructor-of "GPtrArray")
@@ -1229,6 +1269,15 @@
   (return-type "GByteArray*")
 )
 
+(define-function g_byte_array_new_take
+  (c-name "g_byte_array_new_take")
+  (return-type "GByteArray*")
+  (parameters
+    '("guint8*" "data")
+    '("gsize" "len")
+  )
+)
+
 (define-function g_byte_array_sized_new
   (c-name "g_byte_array_sized_new")
   (is-constructor-of "GByteArraySized")
@@ -1247,6 +1296,12 @@
   )
 )
 
+(define-method free_to_bytes
+  (of-object "GByteArray")
+  (c-name "g_byte_array_free_to_bytes")
+  (return-type "GBytes*")
+)
+
 (define-method ref
   (of-object "GByteArray")
   (c-name "g_byte_array_ref")
@@ -1377,6 +1432,18 @@
   (return-type "none")
 )
 
+(define-method ref_unlocked
+  (of-object "GAsyncQueue")
+  (c-name "g_async_queue_ref_unlocked")
+  (return-type "none")
+)
+
+(define-method unref_and_unlock
+  (of-object "GAsyncQueue")
+  (c-name "g_async_queue_unref_and_unlock")
+  (return-type "none")
+)
+
 (define-method push
   (of-object "GAsyncQueue")
   (c-name "g_async_queue_push")
@@ -1441,21 +1508,21 @@
   (return-type "gpointer")
 )
 
-(define-method timed_pop
+(define-method timeout_pop
   (of-object "GAsyncQueue")
-  (c-name "g_async_queue_timed_pop")
+  (c-name "g_async_queue_timeout_pop")
   (return-type "gpointer")
   (parameters
-    '("GTimeVal*" "end_time")
+    '("guint64" "timeout")
   )
 )
 
-(define-method timed_pop_unlocked
+(define-method timeout_pop_unlocked
   (of-object "GAsyncQueue")
-  (c-name "g_async_queue_timed_pop_unlocked")
+  (c-name "g_async_queue_timeout_pop_unlocked")
   (return-type "gpointer")
   (parameters
-    '("GTimeVal*" "end_time")
+    '("guint64" "timeout")
   )
 )
 
@@ -1491,6 +1558,28 @@
   )
 )
 
+(define-method timed_pop
+  (of-object "GAsyncQueue")
+  (c-name "g_async_queue_timed_pop")
+  (return-type "gpointer")
+  (parameters
+    '("GTimeVal*" "end_time")
+  )
+)
+
+(define-method timed_pop_unlocked
+  (of-object "GAsyncQueue")
+  (c-name "g_async_queue_timed_pop_unlocked")
+  (return-type "gpointer")
+  (parameters
+    '("GTimeVal*" "end_time")
+  )
+)
+
+
+
+;; From gasyncqueueprivate.h
+
 
 
 ;; From gatomic.h
@@ -1637,6 +1726,15 @@
   )
 )
 
+(define-function g_atomic_int_exchange_and_add
+  (c-name "g_atomic_int_exchange_and_add")
+  (return-type "gint")
+  (parameters
+    '("volatile-gint*" "atomic")
+    '("gint" "val")
+  )
+)
+
 
 
 ;; From gbacktrace.h
@@ -2191,6 +2289,147 @@
 
 
 
+;; From gbsearcharray.h
+
+(define-function if
+  (c-name "if")
+  (return-type "else")
+  (parameters
+    '("cmp-<" "0")
+  )
+)
+
+(define-function MIN
+  (c-name "MIN")
+  (return-type "return")
+  (parameters
+    '("barray->n_nodes-+" "1")
+  )
+)
+
+
+
+;; From gbytes.h
+
+(define-function g_bytes_new
+  (c-name "g_bytes_new")
+  (is-constructor-of "GBytes")
+  (return-type "GBytes*")
+  (parameters
+    '("gconstpointer" "data")
+    '("gsize" "size")
+  )
+)
+
+(define-function g_bytes_new_take
+  (c-name "g_bytes_new_take")
+  (return-type "GBytes*")
+  (parameters
+    '("gpointer" "data")
+    '("gsize" "size")
+  )
+)
+
+(define-function g_bytes_new_static
+  (c-name "g_bytes_new_static")
+  (return-type "GBytes*")
+  (parameters
+    '("gconstpointer" "data")
+    '("gsize" "size")
+  )
+)
+
+(define-function g_bytes_new_with_free_func
+  (c-name "g_bytes_new_with_free_func")
+  (return-type "GBytes*")
+  (parameters
+    '("gconstpointer" "data")
+    '("gsize" "size")
+    '("GDestroyNotify" "free_func")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method new_from_bytes
+  (of-object "GBytes")
+  (c-name "g_bytes_new_from_bytes")
+  (return-type "GBytes*")
+  (parameters
+    '("gsize" "offset")
+    '("gsize" "length")
+  )
+)
+
+(define-method get_data
+  (of-object "GBytes")
+  (c-name "g_bytes_get_data")
+  (return-type "gconstpointer")
+  (parameters
+    '("gsize*" "size")
+  )
+)
+
+(define-method get_size
+  (of-object "GBytes")
+  (c-name "g_bytes_get_size")
+  (return-type "gsize")
+)
+
+(define-method ref
+  (of-object "GBytes")
+  (c-name "g_bytes_ref")
+  (return-type "GBytes*")
+)
+
+(define-method unref
+  (of-object "GBytes")
+  (c-name "g_bytes_unref")
+  (return-type "none")
+)
+
+(define-method unref_to_data
+  (of-object "GBytes")
+  (c-name "g_bytes_unref_to_data")
+  (return-type "gpointer")
+  (parameters
+    '("gsize*" "size")
+  )
+)
+
+(define-method unref_to_array
+  (of-object "GBytes")
+  (c-name "g_bytes_unref_to_array")
+  (return-type "GByteArray*")
+)
+
+(define-function g_bytes_hash
+  (c-name "g_bytes_hash")
+  (return-type "guint")
+  (parameters
+    '("gconstpointer" "bytes")
+  )
+)
+
+(define-function g_bytes_equal
+  (c-name "g_bytes_equal")
+  (return-type "gboolean")
+  (parameters
+    '("gconstpointer" "bytes1")
+    '("gconstpointer" "bytes2")
+  )
+)
+
+(define-function g_bytes_compare
+  (c-name "g_bytes_compare")
+  (return-type "gint")
+  (parameters
+    '("gconstpointer" "bytes1")
+    '("gconstpointer" "bytes2")
+  )
+)
+
+
+
 ;; From gcharset.h
 
 (define-function g_get_charset
@@ -2206,6 +2445,11 @@
   (return-type "gchar*")
 )
 
+(define-function g_get_language_names
+  (c-name "g_get_language_names")
+  (return-type "const-gchar*-const*")
+)
+
 (define-function g_get_locale_variants
   (c-name "g_get_locale_variants")
   (return-type "gchar**")
@@ -2299,6 +2543,10 @@
 
 
 
+;; From gconstructor.h
+
+
+
 ;; From gconvert.h
 
 (define-function g_convert_error_quark
@@ -2315,6 +2563,18 @@
   )
 )
 
+(define-method iconv
+  (of-object "GIConv")
+  (c-name "g_iconv")
+  (return-type "gsize")
+  (parameters
+    '("gchar**" "inbuf")
+    '("gsize*" "inbytes_left")
+    '("gchar**" "outbuf")
+    '("gsize*" "outbytes_left")
+  )
+)
+
 (define-method close
   (of-object "GIConv")
   (c-name "g_iconv_close")
@@ -2606,6 +2866,10 @@
 
 
 
+;; From gdatasetprivate.h
+
+
+
 ;; From gdate.h
 
 (define-function g_date_new
@@ -2784,6 +3048,15 @@
   )
 )
 
+(define-method set_time
+  (of-object "GDate")
+  (c-name "g_date_set_time")
+  (return-type "none")
+  (parameters
+    '("GTime" "time_")
+  )
+)
+
 (define-method set_month
   (of-object "GDate")
   (c-name "g_date_set_month")
@@ -3754,6 +4027,14 @@
   )
 )
 
+(define-function g_basename
+  (c-name "g_basename")
+  (return-type "const-gchar*")
+  (parameters
+    '("const-gchar*" "file_name")
+  )
+)
+
 (define-function g_get_current_dir
   (c-name "g_get_current_dir")
   (return-type "gchar*")
@@ -3889,6 +4170,15 @@
   )
 )
 
+(define-method add
+  (of-object "GHashTable")
+  (c-name "g_hash_table_add")
+  (return-type "none")
+  (parameters
+    '("gpointer" "key")
+  )
+)
+
 (define-method remove
   (of-object "GHashTable")
   (c-name "g_hash_table_remove")
@@ -3928,6 +4218,15 @@
   )
 )
 
+(define-method contains
+  (of-object "GHashTable")
+  (c-name "g_hash_table_contains")
+  (return-type "gboolean")
+  (parameters
+    '("gconstpointer" "key")
+  )
+)
+
 (define-method lookup_extended
   (of-object "GHashTable")
   (c-name "g_hash_table_lookup_extended")
@@ -4517,6 +4816,44 @@
   (return-type "none")
 )
 
+(define-method read
+  (of-object "GIOChannel")
+  (c-name "g_io_channel_read")
+  (return-type "GIOError")
+  (parameters
+    '("gchar*" "buf")
+    '("gsize" "count")
+    '("gsize*" "bytes_read")
+  )
+)
+
+(define-method write
+  (of-object "GIOChannel")
+  (c-name "g_io_channel_write")
+  (return-type "GIOError")
+  (parameters
+    '("const-gchar*" "buf")
+    '("gsize" "count")
+    '("gsize*" "bytes_written")
+  )
+)
+
+(define-method seek
+  (of-object "GIOChannel")
+  (c-name "g_io_channel_seek")
+  (return-type "GIOError")
+  (parameters
+    '("gint64" "offset")
+    '("GSeekType" "type")
+  )
+)
+
+(define-method close
+  (of-object "GIOChannel")
+  (c-name "g_io_channel_close")
+  (return-type "none")
+)
+
 (define-method shutdown
   (of-object "GIOChannel")
   (c-name "g_io_channel_shutdown")
@@ -5359,40 +5696,150 @@
 
 
 
-;; From glist.h
+;; From glibconfig.h
 
-(define-function g_list_alloc
-  (c-name "g_list_alloc")
-  (return-type "GList*")
-)
 
-(define-method free
-  (of-object "GList")
-  (c-name "g_list_free")
-  (return-type "none")
-)
 
-(define-method free_1
-  (of-object "GList")
-  (c-name "g_list_free_1")
-  (return-type "none")
-)
+;; From glib.h
 
-(define-method free_full
-  (of-object "GList")
-  (c-name "g_list_free_full")
-  (return-type "none")
+
+
+;; From glib-init.h
+
+
+
+;; From glibintl.h
+
+(define-function glib_gettext
+  (c-name "glib_gettext")
+  (return-type "const-gchar*")
   (parameters
-    '("GDestroyNotify" "free_func")
+    '("const-gchar*" "str")
   )
 )
 
-(define-method append
-  (of-object "GList")
-  (c-name "g_list_append")
-  (return-type "GList*")
+(define-function glib_pgettext
+  (c-name "glib_pgettext")
+  (return-type "const-gchar*")
   (parameters
-    '("gpointer" "data")
+    '("const-gchar*" "msgctxtid")
+    '("gsize" "msgidoffset")
+  )
+)
+
+
+
+;; From glib-object.h
+
+
+
+;; From glib-private.h
+
+(define-function glib__private__
+  (c-name "glib__private__")
+  (return-type "GLibPrivateVTable*")
+)
+
+
+
+;; From glib_trace.h
+
+
+
+;; From glib-unix.h
+
+(define-function g_unix_error_quark
+  (c-name "g_unix_error_quark")
+  (return-type "GQuark")
+)
+
+(define-function g_unix_open_pipe
+  (c-name "g_unix_open_pipe")
+  (return-type "gboolean")
+  (parameters
+    '("gint*" "fds")
+    '("gint" "flags")
+    '("GError**" "error")
+  )
+)
+
+(define-function g_unix_set_fd_nonblocking
+  (c-name "g_unix_set_fd_nonblocking")
+  (return-type "gboolean")
+  (parameters
+    '("gint" "fd")
+    '("gboolean" "nonblock")
+    '("GError**" "error")
+  )
+)
+
+(define-function g_unix_signal_source_new
+  (c-name "g_unix_signal_source_new")
+  (is-constructor-of "GUnixSignalSource")
+  (return-type "GSource*")
+  (parameters
+    '("gint" "signum")
+  )
+)
+
+(define-function g_unix_signal_add_full
+  (c-name "g_unix_signal_add_full")
+  (return-type "guint")
+  (parameters
+    '("gint" "priority")
+    '("gint" "signum")
+    '("GSourceFunc" "handler")
+    '("gpointer" "user_data")
+    '("GDestroyNotify" "notify")
+  )
+)
+
+(define-function g_unix_signal_add
+  (c-name "g_unix_signal_add")
+  (return-type "guint")
+  (parameters
+    '("gint" "signum")
+    '("GSourceFunc" "handler")
+    '("gpointer" "user_data")
+  )
+)
+
+
+
+;; From glist.h
+
+(define-function g_list_alloc
+  (c-name "g_list_alloc")
+  (return-type "GList*")
+)
+
+(define-method free
+  (of-object "GList")
+  (c-name "g_list_free")
+  (return-type "none")
+)
+
+(define-method free_1
+  (of-object "GList")
+  (c-name "g_list_free_1")
+  (return-type "none")
+)
+
+(define-method free_full
+  (of-object "GList")
+  (c-name "g_list_free_full")
+  (return-type "none")
+  (parameters
+    '("GDestroyNotify" "free_func")
+  )
+)
+
+(define-method append
+  (of-object "GList")
+  (c-name "g_list_append")
+  (return-type "GList*")
+  (parameters
+    '("gpointer" "data")
   )
 )
 
@@ -6047,6 +6494,15 @@
   )
 )
 
+(define-method get_current_time
+  (of-object "GSource")
+  (c-name "g_source_get_current_time")
+  (return-type "none")
+  (parameters
+    '("GTimeVal*" "timeval")
+  )
+)
+
 (define-method get_time
   (of-object "GSource")
   (c-name "g_source_get_time")
@@ -6246,6 +6702,10 @@
 
 
 
+;; From gmain-internal.h
+
+
+
 ;; From gmappedfile.h
 
 (define-function g_mapped_file_new
@@ -6293,6 +6753,12 @@
   (return-type "none")
 )
 
+(define-method free
+  (of-object "GMappedFile")
+  (c-name "g_mapped_file_free")
+  (return-type "none")
+)
+
 
 
 ;; From gmarkup.h
@@ -6714,6 +7180,10 @@
 
 
 
+;; From gmirroringtable.h
+
+
+
 ;; From gnode.h
 
 (define-function g_node_new
@@ -7313,6 +7783,10 @@
 
 
 
+;; From gprintfint.h
+
+
+
 ;; From gqsort.h
 
 (define-function g_qsort_with_data
@@ -7393,6 +7867,15 @@
   (return-type "none")
 )
 
+(define-method free_full
+  (of-object "GQueue")
+  (c-name "g_queue_free_full")
+  (return-type "none")
+  (parameters
+    '("GDestroyNotify" "free_func")
+  )
+)
+
 (define-method init
   (of-object "GQueue")
   (c-name "g_queue_init")
@@ -8353,6 +8836,10 @@
 
 
 
+;; From gscripttable.h
+
+
+
 ;; From gsequence.h
 
 (define-function g_sequence_new
@@ -9547,6 +10034,41 @@
   )
 )
 
+(define-function g_strcasecmp
+  (c-name "g_strcasecmp")
+  (return-type "gint")
+  (parameters
+    '("const-gchar*" "s1")
+    '("const-gchar*" "s2")
+  )
+)
+
+(define-function g_strncasecmp
+  (c-name "g_strncasecmp")
+  (return-type "gint")
+  (parameters
+    '("const-gchar*" "s1")
+    '("const-gchar*" "s2")
+    '("guint" "n")
+  )
+)
+
+(define-function g_strdown
+  (c-name "g_strdown")
+  (return-type "gchar*")
+  (parameters
+    '("gchar*" "string")
+  )
+)
+
+(define-function g_strup
+  (c-name "g_strup")
+  (return-type "gchar*")
+  (parameters
+    '("gchar*" "string")
+  )
+)
+
 (define-function g_strdup
   (c-name "g_strdup")
   (return-type "gchar*")
@@ -10032,6 +10554,12 @@
   )
 )
 
+(define-method up
+  (of-object "GString")
+  (c-name "g_string_up")
+  (return-type "GString*")
+)
+
 
 
 ;; From gtestutils.h
@@ -10788,6 +11316,10 @@
 
 
 
+;; From gthreadprivate.h
+
+
+
 ;; From gtimer.h
 
 (define-function g_timer_new
@@ -11114,6 +11646,17 @@
   )
 )
 
+(define-method traverse
+  (of-object "GTree")
+  (c-name "g_tree_traverse")
+  (return-type "none")
+  (parameters
+    '("GTraverseFunc" "traverse_func")
+    '("GTraverseType" "traverse_type")
+    '("gpointer" "user_data")
+  )
+)
+
 (define-method search
   (of-object "GTree")
   (c-name "g_tree_search")
@@ -11142,6 +11685,14 @@
 
 
 
+;; From gunibreak.h
+
+
+
+;; From gunichartables.h
+
+
+
 ;; From gunicode.h
 
 (define-method to_iso15924
@@ -11369,6 +11920,15 @@
   )
 )
 
+(define-function g_unicode_canonical_decomposition
+  (c-name "g_unicode_canonical_decomposition")
+  (return-type "gunichar*")
+  (parameters
+    '("gunichar" "ch")
+    '("gsize*" "result_len")
+  )
+)
+
 (define-function g_utf8_get_char
   (c-name "g_utf8_get_char")
   (return-type "gunichar")
@@ -11655,6 +12215,18 @@
 
 
 
+;; From gunicodeprivate.h
+
+
+
+;; From gunicomp.h
+
+
+
+;; From gunidecomp.h
+
+
+
 ;; From gurifuncs.h
 
 (define-function g_uri_unescape_string
@@ -11769,6 +12341,15 @@
   (return-type "const-gchar*")
 )
 
+(define-function g_get_system_data_dirs
+  (c-name "g_get_system_data_dirs")
+  (return-type "const-gchar*-const*")
+)
+
+;; the g_win32_get_system_data_dirs_for_module() function is removed because it
+;; has a function pointer parameter and that is not handled correctly by
+;; h2def.py.
+
 (define-function g_get_user_runtime_dir
   (c-name "g_get_user_runtime_dir")
   (return-type "const-gchar*")
@@ -11839,6 +12420,25 @@
   )
 )
 
+(define-function g_format_size_for_display
+  (c-name "g_format_size_for_display")
+  (return-type "gchar*")
+  (parameters
+    '("goffset" "size")
+  )
+)
+
+(define-function g_atexit
+  (c-name "g_atexit")
+  (return-type "none")
+  (parameters
+    '("GVoidFunc" "func")
+  )
+)
+
+;; the atexit() function is removed because it has a function pointer parameter
+;; and that is not handled correctly by h2def.py.
+
 (define-function g_find_program_in_path
   (c-name "g_find_program_in_path")
   (return-type "gchar*")
@@ -11884,6 +12484,10 @@
 
 
 
+;; From gvariant-core.h
+
+
+
 ;; From gvariant.h
 
 (define-method unref
@@ -12694,19 +13298,21 @@
 
 
 
-;; From gvarianttype.h
+;; From gvariant-internal.h
 
-(define-function g_variant_type_string_is_valid
-  (c-name "g_variant_type_string_is_valid")
+(define-function g_variant_format_string_scan
+  (c-name "g_variant_format_string_scan")
   (return-type "gboolean")
   (parameters
-    '("const-gchar*" "type_string")
+    '("const-gchar*" "string")
+    '("const-gchar*" "limit")
+    '("const-gchar**" "endptr")
   )
 )
 
-(define-function g_variant_type_string_scan
-  (c-name "g_variant_type_string_scan")
-  (return-type "gboolean")
+(define-function g_variant_format_string_scan_type
+  (c-name "g_variant_format_string_scan_type")
+  (return-type "GVariantType*")
   (parameters
     '("const-gchar*" "string")
     '("const-gchar*" "limit")
@@ -12714,48 +13320,150 @@
   )
 )
 
-(define-method free
-  (of-object "GVariantType")
-  (c-name "g_variant_type_free")
-  (return-type "none")
-)
 
-(define-method copy
-  (of-object "GVariantType")
-  (c-name "g_variant_type_copy")
-  (return-type "GVariantType*")
+
+;; From gvariant-serialiser.h
+
+(define-method n_children
+  (of-object "GVariantSerialised")
+  (c-name "g_variant_serialised_n_children")
+  (return-type "gsize")
 )
 
-(define-function g_variant_type_new
-  (c-name "g_variant_type_new")
-  (is-constructor-of "GVariantType")
-  (return-type "GVariantType*")
+(define-method get_child
+  (of-object "GVariantSerialised")
+  (c-name "g_variant_serialised_get_child")
+  (return-type "GVariantSerialised")
   (parameters
-    '("const-gchar*" "type_string")
+    '("gsize" "index")
   )
 )
 
-(define-method get_string_length
-  (of-object "GVariantType")
-  (c-name "g_variant_type_get_string_length")
+(define-function g_variant_serialiser_needed_size
+  (c-name "g_variant_serialiser_needed_size")
   (return-type "gsize")
+  (parameters
+    '("GVariantTypeInfo*" "info")
+    '("GVariantSerialisedFiller" "gsv_filler")
+    '("const-gpointer*" "children")
+    '("gsize" "n_children")
+  )
 )
 
-(define-method peek_string
-  (of-object "GVariantType")
-  (c-name "g_variant_type_peek_string")
-  (return-type "const-gchar*")
-)
-
-(define-method dup_string
-  (of-object "GVariantType")
-  (c-name "g_variant_type_dup_string")
-  (return-type "gchar*")
+(define-function g_variant_serialiser_serialise
+  (c-name "g_variant_serialiser_serialise")
+  (return-type "none")
+  (parameters
+    '("GVariantSerialised" "container")
+    '("GVariantSerialisedFiller" "gsv_filler")
+    '("const-gpointer*" "children")
+    '("gsize" "n_children")
+  )
 )
 
-(define-method is_definite
-  (of-object "GVariantType")
-  (c-name "g_variant_type_is_definite")
+(define-method is_normal
+  (of-object "GVariantSerialised")
+  (c-name "g_variant_serialised_is_normal")
+  (return-type "gboolean")
+)
+
+(define-method byteswap
+  (of-object "GVariantSerialised")
+  (c-name "g_variant_serialised_byteswap")
+  (return-type "none")
+)
+
+(define-function g_variant_serialiser_is_string
+  (c-name "g_variant_serialiser_is_string")
+  (return-type "gboolean")
+  (parameters
+    '("gconstpointer" "data")
+    '("gsize" "size")
+  )
+)
+
+(define-function g_variant_serialiser_is_object_path
+  (c-name "g_variant_serialiser_is_object_path")
+  (return-type "gboolean")
+  (parameters
+    '("gconstpointer" "data")
+    '("gsize" "size")
+  )
+)
+
+(define-function g_variant_serialiser_is_signature
+  (c-name "g_variant_serialiser_is_signature")
+  (return-type "gboolean")
+  (parameters
+    '("gconstpointer" "data")
+    '("gsize" "size")
+  )
+)
+
+
+
+;; From gvarianttype.h
+
+(define-function g_variant_type_string_is_valid
+  (c-name "g_variant_type_string_is_valid")
+  (return-type "gboolean")
+  (parameters
+    '("const-gchar*" "type_string")
+  )
+)
+
+(define-function g_variant_type_string_scan
+  (c-name "g_variant_type_string_scan")
+  (return-type "gboolean")
+  (parameters
+    '("const-gchar*" "string")
+    '("const-gchar*" "limit")
+    '("const-gchar**" "endptr")
+  )
+)
+
+(define-method free
+  (of-object "GVariantType")
+  (c-name "g_variant_type_free")
+  (return-type "none")
+)
+
+(define-method copy
+  (of-object "GVariantType")
+  (c-name "g_variant_type_copy")
+  (return-type "GVariantType*")
+)
+
+(define-function g_variant_type_new
+  (c-name "g_variant_type_new")
+  (is-constructor-of "GVariantType")
+  (return-type "GVariantType*")
+  (parameters
+    '("const-gchar*" "type_string")
+  )
+)
+
+(define-method get_string_length
+  (of-object "GVariantType")
+  (c-name "g_variant_type_get_string_length")
+  (return-type "gsize")
+)
+
+(define-method peek_string
+  (of-object "GVariantType")
+  (c-name "g_variant_type_peek_string")
+  (return-type "const-gchar*")
+)
+
+(define-method dup_string
+  (of-object "GVariantType")
+  (c-name "g_variant_type_dup_string")
+  (return-type "gchar*")
+)
+
+(define-method is_definite
+  (of-object "GVariantType")
+  (c-name "g_variant_type_is_definite")
   (return-type "gboolean")
 )
 
@@ -12903,6 +13611,80 @@
 
 
 
+;; From gvarianttypeinfo.h
+
+(define-method get_type_string
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_get_type_string")
+  (return-type "const-gchar*")
+)
+
+(define-method query
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_query")
+  (return-type "none")
+  (parameters
+    '("guint*" "alignment")
+    '("gsize*" "size")
+  )
+)
+
+(define-method element
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_element")
+  (return-type "GVariantTypeInfo*")
+)
+
+(define-method query_element
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_query_element")
+  (return-type "none")
+  (parameters
+    '("guint*" "alignment")
+    '("gsize*" "size")
+  )
+)
+
+(define-method n_members
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_n_members")
+  (return-type "gsize")
+)
+
+(define-method member_info
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_member_info")
+  (return-type "const-GVariantMemberInfo*")
+  (parameters
+    '("gsize" "index")
+  )
+)
+
+(define-method info_get
+  (of-object "GVariantType")
+  (c-name "g_variant_type_info_get")
+  (return-type "GVariantTypeInfo*")
+)
+
+(define-method ref
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_ref")
+  (return-type "GVariantTypeInfo*")
+)
+
+(define-method unref
+  (of-object "GVariantTypeInfo")
+  (c-name "g_variant_type_info_unref")
+  (return-type "none")
+)
+
+(define-function g_variant_type_info_assert_no_infos
+  (c-name "g_variant_type_info_assert_no_infos")
+  (return-type "none")
+)
+
+
+
 ;; From gversion.h
 
 (define-function glib_check_version
@@ -12917,6 +13699,14 @@
 
 
 
+;; From gversionmacros.h
+
+
+
+;; From gwakeup.h
+
+
+
 ;; From gwin32.h
 
 (define-function g_win32_ftruncate
@@ -12982,3 +13772,634 @@
 )
 
 
+
+;; From gallocator.h
+
+(define-function g_mem_chunk_new
+  (c-name "g_mem_chunk_new")
+  (is-constructor-of "GMemChunk")
+  (return-type "GMemChunk*")
+  (parameters
+    '("const-gchar*" "name")
+    '("gint" "atom_size")
+    '("gsize" "area_size")
+    '("gint" "type")
+  )
+)
+
+(define-method destroy
+  (of-object "GMemChunk")
+  (c-name "g_mem_chunk_destroy")
+  (return-type "none")
+)
+
+(define-method alloc
+  (of-object "GMemChunk")
+  (c-name "g_mem_chunk_alloc")
+  (return-type "gpointer")
+)
+
+(define-method alloc0
+  (of-object "GMemChunk")
+  (c-name "g_mem_chunk_alloc0")
+  (return-type "gpointer")
+)
+
+(define-method free
+  (of-object "GMemChunk")
+  (c-name "g_mem_chunk_free")
+  (return-type "none")
+  (parameters
+    '("gpointer" "mem")
+  )
+)
+
+(define-method clean
+  (of-object "GMemChunk")
+  (c-name "g_mem_chunk_clean")
+  (return-type "none")
+)
+
+(define-method reset
+  (of-object "GMemChunk")
+  (c-name "g_mem_chunk_reset")
+  (return-type "none")
+)
+
+(define-method print
+  (of-object "GMemChunk")
+  (c-name "g_mem_chunk_print")
+  (return-type "none")
+)
+
+(define-function g_mem_chunk_info
+  (c-name "g_mem_chunk_info")
+  (return-type "none")
+)
+
+(define-function g_blow_chunks
+  (c-name "g_blow_chunks")
+  (return-type "none")
+)
+
+(define-function g_allocator_new
+  (c-name "g_allocator_new")
+  (is-constructor-of "GAllocator")
+  (return-type "GAllocator*")
+  (parameters
+    '("const-gchar*" "name")
+    '("guint" "n_preallocs")
+  )
+)
+
+(define-method free
+  (of-object "GAllocator")
+  (c-name "g_allocator_free")
+  (return-type "none")
+)
+
+(define-function g_list_push_allocator
+  (c-name "g_list_push_allocator")
+  (return-type "none")
+  (parameters
+    '("GAllocator*" "allocator")
+  )
+)
+
+(define-function g_list_pop_allocator
+  (c-name "g_list_pop_allocator")
+  (return-type "none")
+)
+
+(define-function g_slist_push_allocator
+  (c-name "g_slist_push_allocator")
+  (return-type "none")
+  (parameters
+    '("GAllocator*" "allocator")
+  )
+)
+
+(define-function g_slist_pop_allocator
+  (c-name "g_slist_pop_allocator")
+  (return-type "none")
+)
+
+(define-function g_node_push_allocator
+  (c-name "g_node_push_allocator")
+  (return-type "none")
+  (parameters
+    '("GAllocator*" "allocator")
+  )
+)
+
+(define-function g_node_pop_allocator
+  (c-name "g_node_pop_allocator")
+  (return-type "none")
+)
+
+
+
+;; From gcache.h
+
+(define-function g_cache_new
+  (c-name "g_cache_new")
+  (is-constructor-of "GCache")
+  (return-type "GCache*")
+  (parameters
+    '("GCacheNewFunc" "value_new_func")
+    '("GCacheDestroyFunc" "value_destroy_func")
+    '("GCacheDupFunc" "key_dup_func")
+    '("GCacheDestroyFunc" "key_destroy_func")
+    '("GHashFunc" "hash_key_func")
+    '("GHashFunc" "hash_value_func")
+    '("GEqualFunc" "key_equal_func")
+  )
+)
+
+(define-method destroy
+  (of-object "GCache")
+  (c-name "g_cache_destroy")
+  (return-type "none")
+)
+
+(define-method insert
+  (of-object "GCache")
+  (c-name "g_cache_insert")
+  (return-type "gpointer")
+  (parameters
+    '("gpointer" "key")
+  )
+)
+
+(define-method remove
+  (of-object "GCache")
+  (c-name "g_cache_remove")
+  (return-type "none")
+  (parameters
+    '("gconstpointer" "value")
+  )
+)
+
+(define-method key_foreach
+  (of-object "GCache")
+  (c-name "g_cache_key_foreach")
+  (return-type "none")
+  (parameters
+    '("GHFunc" "func")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method value_foreach
+  (of-object "GCache")
+  (c-name "g_cache_value_foreach")
+  (return-type "none")
+  (parameters
+    '("GHFunc" "func")
+    '("gpointer" "user_data")
+  )
+)
+
+
+
+;; From gcompletion.h
+
+(define-function g_completion_new
+  (c-name "g_completion_new")
+  (is-constructor-of "GCompletion")
+  (return-type "GCompletion*")
+  (parameters
+    '("GCompletionFunc" "func")
+  )
+)
+
+(define-method add_items
+  (of-object "GCompletion")
+  (c-name "g_completion_add_items")
+  (return-type "none")
+  (parameters
+    '("GList*" "items")
+  )
+)
+
+(define-method remove_items
+  (of-object "GCompletion")
+  (c-name "g_completion_remove_items")
+  (return-type "none")
+  (parameters
+    '("GList*" "items")
+  )
+)
+
+(define-method clear_items
+  (of-object "GCompletion")
+  (c-name "g_completion_clear_items")
+  (return-type "none")
+)
+
+(define-method complete
+  (of-object "GCompletion")
+  (c-name "g_completion_complete")
+  (return-type "GList*")
+  (parameters
+    '("const-gchar*" "prefix")
+    '("gchar**" "new_prefix")
+  )
+)
+
+(define-method complete_utf8
+  (of-object "GCompletion")
+  (c-name "g_completion_complete_utf8")
+  (return-type "GList*")
+  (parameters
+    '("const-gchar*" "prefix")
+    '("gchar**" "new_prefix")
+  )
+)
+
+(define-method set_compare
+  (of-object "GCompletion")
+  (c-name "g_completion_set_compare")
+  (return-type "none")
+  (parameters
+    '("GCompletionStrncmpFunc" "strncmp_func")
+  )
+)
+
+(define-method free
+  (of-object "GCompletion")
+  (c-name "g_completion_free")
+  (return-type "none")
+)
+
+
+
+;; From gmain.h
+
+
+
+;; From grel.h
+
+(define-function g_relation_new
+  (c-name "g_relation_new")
+  (is-constructor-of "GRelation")
+  (return-type "GRelation*")
+  (parameters
+    '("gint" "fields")
+  )
+)
+
+(define-method destroy
+  (of-object "GRelation")
+  (c-name "g_relation_destroy")
+  (return-type "none")
+)
+
+(define-method index
+  (of-object "GRelation")
+  (c-name "g_relation_index")
+  (return-type "none")
+  (parameters
+    '("gint" "field")
+    '("GHashFunc" "hash_func")
+    '("GEqualFunc" "key_equal_func")
+  )
+)
+
+(define-method insert
+  (of-object "GRelation")
+  (c-name "g_relation_insert")
+  (return-type "none")
+  (parameters
+  )
+  (varargs #t)
+)
+
+(define-method delete
+  (of-object "GRelation")
+  (c-name "g_relation_delete")
+  (return-type "gint")
+  (parameters
+    '("gconstpointer" "key")
+    '("gint" "field")
+  )
+)
+
+(define-method select
+  (of-object "GRelation")
+  (c-name "g_relation_select")
+  (return-type "GTuples*")
+  (parameters
+    '("gconstpointer" "key")
+    '("gint" "field")
+  )
+)
+
+(define-method count
+  (of-object "GRelation")
+  (c-name "g_relation_count")
+  (return-type "gint")
+  (parameters
+    '("gconstpointer" "key")
+    '("gint" "field")
+  )
+)
+
+(define-method exists
+  (of-object "GRelation")
+  (c-name "g_relation_exists")
+  (return-type "gboolean")
+  (parameters
+  )
+  (varargs #t)
+)
+
+(define-method print
+  (of-object "GRelation")
+  (c-name "g_relation_print")
+  (return-type "none")
+)
+
+(define-method destroy
+  (of-object "GTuples")
+  (c-name "g_tuples_destroy")
+  (return-type "none")
+)
+
+(define-method index
+  (of-object "GTuples")
+  (c-name "g_tuples_index")
+  (return-type "gpointer")
+  (parameters
+    '("gint" "index_")
+    '("gint" "field")
+  )
+)
+
+
+
+;; From gthread.h
+
+(define-function guint64
+  (c-name "guint64")
+  (return-type "GLIB_VAR")
+  (parameters
+    '("*" "g_thread_gettime")
+  )
+)
+
+(define-function g_thread_create
+  (c-name "g_thread_create")
+  (return-type "GThread*")
+  (parameters
+    '("GThreadFunc" "func")
+    '("gpointer" "data")
+    '("gboolean" "joinable")
+    '("GError**" "error")
+  )
+)
+
+(define-function g_thread_create_full
+  (c-name "g_thread_create_full")
+  (return-type "GThread*")
+  (parameters
+    '("GThreadFunc" "func")
+    '("gpointer" "data")
+    '("gulong" "stack_size")
+    '("gboolean" "joinable")
+    '("gboolean" "bound")
+    '("GThreadPriority" "priority")
+    '("GError**" "error")
+  )
+)
+
+(define-method set_priority
+  (of-object "GThread")
+  (c-name "g_thread_set_priority")
+  (return-type "none")
+  (parameters
+    '("GThreadPriority" "priority")
+  )
+)
+
+(define-function g_thread_foreach
+  (c-name "g_thread_foreach")
+  (return-type "none")
+  (parameters
+    '("GFunc" "thread_func")
+    '("gpointer" "user_data")
+  )
+)
+
+(define-method init
+  (of-object "GStaticMutex")
+  (c-name "g_static_mutex_init")
+  (return-type "none")
+)
+
+(define-method free
+  (of-object "GStaticMutex")
+  (c-name "g_static_mutex_free")
+  (return-type "none")
+)
+
+(define-method get_mutex_impl
+  (of-object "GStaticMutex")
+  (c-name "g_static_mutex_get_mutex_impl")
+  (return-type "GMutex*")
+)
+
+(define-method init
+  (of-object "GStaticRecMutex")
+  (c-name "g_static_rec_mutex_init")
+  (return-type "none")
+)
+
+(define-method lock
+  (of-object "GStaticRecMutex")
+  (c-name "g_static_rec_mutex_lock")
+  (return-type "none")
+)
+
+(define-method trylock
+  (of-object "GStaticRecMutex")
+  (c-name "g_static_rec_mutex_trylock")
+  (return-type "gboolean")
+)
+
+(define-method unlock
+  (of-object "GStaticRecMutex")
+  (c-name "g_static_rec_mutex_unlock")
+  (return-type "none")
+)
+
+(define-method lock_full
+  (of-object "GStaticRecMutex")
+  (c-name "g_static_rec_mutex_lock_full")
+  (return-type "none")
+  (parameters
+    '("guint" "depth")
+  )
+)
+
+(define-method unlock_full
+  (of-object "GStaticRecMutex")
+  (c-name "g_static_rec_mutex_unlock_full")
+  (return-type "guint")
+)
+
+(define-method free
+  (of-object "GStaticRecMutex")
+  (c-name "g_static_rec_mutex_free")
+  (return-type "none")
+)
+
+(define-method init
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_init")
+  (return-type "none")
+)
+
+(define-method reader_lock
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_reader_lock")
+  (return-type "none")
+)
+
+(define-method reader_trylock
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_reader_trylock")
+  (return-type "gboolean")
+)
+
+(define-method reader_unlock
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_reader_unlock")
+  (return-type "none")
+)
+
+(define-method writer_lock
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_writer_lock")
+  (return-type "none")
+)
+
+(define-method writer_trylock
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_writer_trylock")
+  (return-type "gboolean")
+)
+
+(define-method writer_unlock
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_writer_unlock")
+  (return-type "none")
+)
+
+(define-method free
+  (of-object "GStaticRWLock")
+  (c-name "g_static_rw_lock_free")
+  (return-type "none")
+)
+
+(define-function g_private_new
+  (c-name "g_private_new")
+  (is-constructor-of "GPrivate")
+  (return-type "GPrivate*")
+  (parameters
+    '("GDestroyNotify" "notify")
+  )
+)
+
+(define-method init
+  (of-object "GStaticPrivate")
+  (c-name "g_static_private_init")
+  (return-type "none")
+)
+
+(define-method get
+  (of-object "GStaticPrivate")
+  (c-name "g_static_private_get")
+  (return-type "gpointer")
+)
+
+(define-method set
+  (of-object "GStaticPrivate")
+  (c-name "g_static_private_set")
+  (return-type "none")
+  (parameters
+    '("gpointer" "data")
+    '("GDestroyNotify" "notify")
+  )
+)
+
+(define-method free
+  (of-object "GStaticPrivate")
+  (c-name "g_static_private_free")
+  (return-type "none")
+)
+
+(define-function g_once_init_enter_impl
+  (c-name "g_once_init_enter_impl")
+  (return-type "gboolean")
+  (parameters
+    '("volatile-gsize*" "location")
+  )
+)
+
+(define-function g_thread_init
+  (c-name "g_thread_init")
+  (return-type "none")
+  (parameters
+    '("gpointer" "vtable")
+  )
+)
+
+(define-function g_thread_init_with_errorcheck_mutexes
+  (c-name "g_thread_init_with_errorcheck_mutexes")
+  (return-type "none")
+  (parameters
+    '("gpointer" "vtable")
+  )
+)
+
+(define-function g_thread_get_initialized
+  (c-name "g_thread_get_initialized")
+  (return-type "gboolean")
+)
+
+(define-function g_mutex_new
+  (c-name "g_mutex_new")
+  (is-constructor-of "GMutex")
+  (return-type "GMutex*")
+)
+
+(define-method free
+  (of-object "GMutex")
+  (c-name "g_mutex_free")
+  (return-type "none")
+)
+
+(define-function g_cond_new
+  (c-name "g_cond_new")
+  (is-constructor-of "GCond")
+  (return-type "GCond*")
+)
+
+(define-method free
+  (of-object "GCond")
+  (c-name "g_cond_free")
+  (return-type "none")
+)
+
+(define-method timed_wait
+  (of-object "GCond")
+  (c-name "g_cond_timed_wait")
+  (return-type "gboolean")
+  (parameters
+    '("GMutex*" "mutex")
+    '("GTimeVal*" "timeval")
+  )
+)
+
+
diff --git a/glib/src/glib_functions.defs.patch b/glib/src/glib_functions.defs.patch
index d2e6bc3..b36c05a 100644
--- a/glib/src/glib_functions.defs.patch
+++ b/glib/src/glib_functions.defs.patch
@@ -1,15 +1,6 @@
---- glib_functions.defs	2011-06-15 16:16:57.000000000 -0400
-+++ glib_functions_new.defs	2011-06-15 16:16:06.000000000 -0400
-@@ -627,7 +627,7 @@
-   (c-name "GThreadError")
-   (gtype-id "G_TYPE_THREAD_ERROR")
-   (values
--    '("n" "G_THREAD_ERROR_AGAIN")
-+    '("again" "G_THREAD_ERROR_AGAIN")
-   )
- )
- 
-@@ -2482,7 +2482,7 @@
+--- glib_functions.defs	2012-02-28 10:09:30.000000000 -0500
++++ glib_functions.defs.new	2012-02-28 10:08:25.000000000 -0500
+@@ -2563,7 +2563,7 @@
    )
  )
  
@@ -18,135 +9,24 @@
    (of-object "GIConv")
    (c-name "g_iconv")
    (return-type "gsize")
-@@ -3286,12 +3286,98 @@
-   )
- )
- 
--(define-function g_date_time_compare
-+(define-method add
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("GTimeSpan" "timespan")
-+  )
-+)
-+
-+(define-method add_years
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_years")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gint" "years")
-+  )
-+)
-+
-+(define-method add_months
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_months")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gint" "months")
-+  )
-+)
-+
-+(define-method add_weeks
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_weeks")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gint" "weeks")
-+  )
-+)
-+
-+(define-method add_days
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_days")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gint" "days")
-+  )
-+)
-+
-+(define-method add_hours
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_hours")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gint" "hours")
-+  )
-+)
-+
-+(define-method add_minutes
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_minutes")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gint" "minutes")
-+  )
-+)
-+
-+(define-method add_seconds
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_seconds")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gdouble" "seconds")
-+  )
-+)
-+
-+(define-method add_full
-+  (of-object "GDateTime")
-+  (c-name "g_date_time_add_full")
-+  (return-type "GDateTime*")
-+  (parameters
-+    '("gint" "years")
-+    '("gint" "months")
-+    '("gint" "days")
-+    '("gint" "hours")
-+    '("gint" "minutes")
-+    '("gdouble" "seconds")
-+  )
-+)
-+
-+(define-method compare
-+  (of-object "GDateTime")
-   (c-name "g_date_time_compare")
-   (return-type "gint")
-   (parameters
--    '("gconstpointer" "dt1")
--    '("gconstpointer" "dt2")
-+    '("GDateTime*" "dt2")
-   )
- )
- 
-@@ -3304,20 +3390,18 @@
-   )
+@@ -12346,13 +12346,9 @@
+   (return-type "const-gchar*-const*")
  )
  
--(define-function g_date_time_hash
-+(define-method hash
-+  (of-object "GDateTime")
-   (c-name "g_date_time_hash")
-   (return-type "guint")
+-(define-function g_win32_get_system_data_dirs_for_module
+-  (c-name "g_win32_get_system_data_dirs_for_module")
+-  (return-type "const-gchar*-const*")
 -  (parameters
--    '("gconstpointer" "datetime")
+-    '("void-(*" "address_of_function")
 -  )
- )
- 
--(define-function g_date_time_equal
-+(define-method equal
-+  (of-object "GDateTime")
-   (c-name "g_date_time_equal")
-   (return-type "gboolean")
-   (parameters
--    '("gconstpointer" "dt1")
--    '("gconstpointer" "dt2")
-+    '("GDateTime*" "dt2")
-   )
- )
+-)
++;; the g_win32_get_system_data_dirs_for_module() function is removed because it
++;; has a function pointer parameter and that is not handled correctly by
++;; h2def.py.
  
-@@ -12131,14 +12215,6 @@
+ (define-function g_get_user_runtime_dir
+   (c-name "g_get_user_runtime_dir")
+@@ -12440,13 +12436,8 @@
    )
  )
  
@@ -157,7 +37,8 @@
 -    '("void" "(*")
 -  )
 -)
--
++;; the atexit() function is removed because it has a function pointer parameter
++;; and that is not handled correctly by h2def.py.
+ 
  (define-function g_find_program_in_path
    (c-name "g_find_program_in_path")
-   (return-type "gchar*")
diff --git a/glib/src/gmodule_functions.defs b/glib/src/gmodule_functions.defs
index 853bd0b..29b4835 100644
--- a/glib/src/gmodule_functions.defs
+++ b/glib/src/gmodule_functions.defs
@@ -14,6 +14,10 @@
 )
 
 
+;; From gmoduleconf.h
+
+
+
 ;; From gmodule.h
 
 (define-function g_module_supported
diff --git a/glib/src/gobject_enums.defs b/glib/src/gobject_enums.defs
index 03ca6ba..ed0012c 100644
--- a/glib/src/gobject_enums.defs
+++ b/glib/src/gobject_enums.defs
@@ -69,7 +69,8 @@
 ;;   G_SIGNAL_DETAILED	= 1 << 4,
 ;;   G_SIGNAL_ACTION	= 1 << 5,
 ;;   G_SIGNAL_NO_HOOKS	= 1 << 6,
-;;   G_SIGNAL_MUST_COLLECT = 1 << 7
+;;   G_SIGNAL_MUST_COLLECT = 1 << 7,
+;;   G_SIGNAL_DEPRECATED   = 1 << 8
 ;; } GSignalFlags;
 
 (define-flags-extended SignalFlags
@@ -84,6 +85,7 @@
     '("action" "G_SIGNAL_ACTION" "1 << 5")
     '("no-hooks" "G_SIGNAL_NO_HOOKS" "1 << 6")
     '("must-collect" "G_SIGNAL_MUST_COLLECT" "1 << 7")
+    '("deprecated" "G_SIGNAL_DEPRECATED" "1 << 8")
   )
 )
 
diff --git a/glib/src/gobject_functions.defs b/glib/src/gobject_functions.defs
index fed4b7b..c234264 100644
--- a/glib/src/gobject_functions.defs
+++ b/glib/src/gobject_functions.defs
@@ -58,6 +58,7 @@
     '("action" "G_SIGNAL_ACTION")
     '("no-hooks" "G_SIGNAL_NO_HOOKS")
     '("must-collect" "G_SIGNAL_MUST_COLLECT")
+    '("deprecated" "G_SIGNAL_DEPRECATED")
   )
 )
 
@@ -120,6 +121,10 @@
 )
 
 
+;; From gatomicarray.h
+
+
+
 ;; From gbinding.h
 
 (define-function g_binding_flags_get_type
@@ -253,6 +258,15 @@
   )
 )
 
+(define-method set_boxed_take_ownership
+  (of-object "GValue")
+  (c-name "g_value_set_boxed_take_ownership")
+  (return-type "none")
+  (parameters
+    '("gconstpointer" "v_boxed")
+  )
+)
+
 (define-method get_boxed
   (of-object "GValue")
   (c-name "g_value_get_boxed")
@@ -547,7 +561,6 @@
   (return-type "GType")
   (parameters
     '("const-gchar*" "name")
-    '("const-GEnumValue*" "const_static_values")
   )
 )
 
@@ -556,7 +569,6 @@
   (return-type "GType")
   (parameters
     '("const-gchar*" "name")
-    '("const-GFlagsValue*" "const_static_values")
   )
 )
 
@@ -566,7 +578,6 @@
   (parameters
     '("GType" "g_enum_type")
     '("GTypeInfo*" "info")
-    '("const-GEnumValue*" "const_values")
   )
 )
 
@@ -576,7 +587,6 @@
   (parameters
     '("GType" "g_flags_type")
     '("GTypeInfo*" "info")
-    '("const-GFlagsValue*" "const_values")
   )
 )
 
@@ -619,6 +629,11 @@
   (return-type "GType")
 )
 
+(define-function g_bytes_get_type
+  (c-name "g_bytes_get_type")
+  (return-type "GType")
+)
+
 (define-function g_variant_type_get_gtype
   (c-name "g_variant_type_get_gtype")
   (return-type "GType")
@@ -1175,6 +1190,15 @@
   )
 )
 
+(define-method set_object_take_ownership
+  (of-object "GValue")
+  (c-name "g_value_set_object_take_ownership")
+  (return-type "none")
+  (parameters
+    '("gpointer" "v_object")
+  )
+)
+
 (define-function g_object_compat_control
   (c-name "g_object_compat_control")
   (return-type "gsize")
@@ -1192,6 +1216,40 @@
   )
 )
 
+(define-method init
+  (of-object "GWeakRef")
+  (c-name "g_weak_ref_init")
+  (return-type "none")
+  (parameters
+    '("gpointer" "object")
+  )
+)
+
+(define-method clear
+  (of-object "GWeakRef")
+  (c-name "g_weak_ref_clear")
+  (return-type "none")
+)
+
+(define-method get
+  (of-object "GWeakRef")
+  (c-name "g_weak_ref_get")
+  (return-type "gpointer")
+)
+
+(define-method set
+  (of-object "GWeakRef")
+  (c-name "g_weak_ref_set")
+  (return-type "none")
+  (parameters
+    '("gpointer" "object")
+  )
+)
+
+
+
+;; From gobject_trace.h
+
 
 
 ;; From gparam.h
@@ -1361,6 +1419,15 @@
   )
 )
 
+(define-method set_param_take_ownership
+  (of-object "GValue")
+  (c-name "g_value_set_param_take_ownership")
+  (return-type "none")
+  (parameters
+    '("GParamSpec*" "param")
+  )
+)
+
 (define-function g_param_type_register_static
   (c-name "g_param_type_register_static")
   (return-type "GType")
@@ -2722,7 +2789,6 @@
   (return-type "GType")
   (parameters
     '("const-gchar*" "name")
-    '("const-GEnumValue*" "const_static_values")
   )
 )
 
@@ -2732,7 +2798,6 @@
   (return-type "GType")
   (parameters
     '("const-gchar*" "name")
-    '("const-GFlagsValue*" "const_static_values")
   )
 )
 
@@ -2781,6 +2846,10 @@
 
 
 
+;; From gtype-private.h
+
+
+
 ;; From gvaluearray.h
 
 (define-method get_nth
@@ -2969,6 +3038,21 @@
 
 ;; From gvaluetypes.h
 
+(define-method set_char
+  (of-object "GValue")
+  (c-name "g_value_set_char")
+  (return-type "none")
+  (parameters
+    '("gchar" "v_char")
+  )
+)
+
+(define-method get_char
+  (of-object "GValue")
+  (c-name "g_value_get_char")
+  (return-type "gchar")
+)
+
 (define-method set_schar
   (of-object "GValue")
   (c-name "g_value_set_schar")
@@ -3254,4 +3338,13 @@
   )
 )
 
+(define-method set_string_take_ownership
+  (of-object "GValue")
+  (c-name "g_value_set_string_take_ownership")
+  (return-type "none")
+  (parameters
+    '("gchar*" "v_string")
+  )
+)
+
 
diff --git a/tools/gen_scripts/gio_generate_docs.sh b/tools/gen_scripts/gio_generate_docs.sh
new file mode 100755
index 0000000..831c8cd
--- /dev/null
+++ b/tools/gen_scripts/gio_generate_docs.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Note that docextract_to_xml.py should be in PATH for this script to work and
+# JHBUILD_SOURCES should be defined to contain the path to the root of the
+# jhbuild sources.  The XML file will be placed in
+# $JHBUILD_SOURCES/glibmm/gio/src.
+
+if [ -z "$JHBUILD_SOURCES" -o ! -x "`which docextract_to_xml.py`" ]; then
+  echo -e "JHBUILD_SOURCES must contain path to jhbuild sources and \
+docextract_to_xml.py\nneeds to be executable and in PATH."
+  exit 1;
+fi
+
+PREFIX="$JHBUILD_SOURCES"
+OUT_DIR="$JHBUILD_SOURCES/glibmm/gio/src"
+
+for dir in "$PREFIX"/glib/gio; do
+  PARAMS="$PARAMS -s $dir"
+done
+
+docextract_to_xml.py $PARAMS > "$OUT_DIR"/gio_docs.xml
diff --git a/tools/gen_scripts/gio_generate_enums.sh b/tools/gen_scripts/gio_generate_enums.sh
new file mode 100755
index 0000000..c708046
--- /dev/null
+++ b/tools/gen_scripts/gio_generate_enums.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+# Note that enum.pl should be in PATH for this script to work and
+# JHBUILD_SOURCES should be defined to contain the path to the root of the
+# jhbuild sources.  The defs files will be placed in
+# $JHBUILD_SOURCES/glibmm/gio/src.
+
+if [ -z "$JHBUILD_SOURCES" -o ! -x "`which enum.pl`" ]; then
+  echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources and \
+enum.pl\nneeds to be executable and in PATH."
+  exit 1;
+fi
+
+OUT_DIR="$JHBUILD_SOURCES/glibmm/gio/src"
+PREFIX="$JHBUILD_SOURCES/glib"
+
+enum.pl "$PREFIX"/gio/*.h > "$OUT_DIR"/gio_enums.defs
diff --git a/tools/gen_scripts/gio_generate_extra_defs.sh b/tools/gen_scripts/gio_generate_extra_defs.sh
new file mode 100755
index 0000000..778cf4a
--- /dev/null
+++ b/tools/gen_scripts/gio_generate_extra_defs.sh
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+# Note that JHBUILD_SOURCES should be defined to contain the path to the root
+# of the jhbuild sources.  The defs files will be placed in
+# $JHBUILD_SOURCES/glibmm/gio/src.
+
+GEN_DIR="$JHBUILD_SOURCES/glibmm/tools/extra_defs_gen"
+OUT_DIR="$JHBUILD_SOURCES/glibmm/gio/src"
+
+"$GEN_DIR"/generate_defs_gio > "$OUT_DIR"/gio_signals.defs
+patch "$OUT_DIR"/gio_signals.defs "$OUT_DIR"/gio_signals.defs.patch
diff --git a/tools/gen_scripts/gio_generate_methods.sh b/tools/gen_scripts/gio_generate_methods.sh
new file mode 100755
index 0000000..230d717
--- /dev/null
+++ b/tools/gen_scripts/gio_generate_methods.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# Note that h2def.py should be in PATH for this script to work and
+# JHBUILD_SOURCES should be defined to contain the path to the root of the
+# jhbuild sources.  The defs files will be placed in
+# $JHBUILD_SOURCES/glibmm/gio/src.
+
+if [ -z "$JHBUILD_SOURCES" -o ! -x "`which h2def.py`" ]; then
+  echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources and \
+h2def.py\nneeds to be executable and in PATH."
+  exit 1;
+fi
+
+PREFIX="$JHBUILD_SOURCES/glib"
+OUT_DIR="$JHBUILD_SOURCES/glibmm/gio/src"
+
+h2def.py "$PREFIX"/gio/*.h > "$OUT_DIR"/gio_methods.defs
+#patch "$OUT_DIR"/gio_methods.defs "$OUT_DIR"/gio_methods.defs.patch
diff --git a/tools/gen_scripts/glib_generate_docs.sh b/tools/gen_scripts/glib_generate_docs.sh
new file mode 100755
index 0000000..7b14695
--- /dev/null
+++ b/tools/gen_scripts/glib_generate_docs.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Note that docextract_to_xml.py should be in PATH for this script to work and
+# JHBUILD_SOURCES should be defined to contain the path to the root of the
+# jhbuild sources.  The XML file will be placed in
+# $JHBUILD_SOURCES/glibmm/glib/src.
+
+if [ -z "$JHBUILD_SOURCES" -o ! -x "`which docextract_to_xml.py`" ]; then
+  echo -e "JHBUILD_SOURCES must contain path to jhbuild sources and \
+docextract_to_xml.py\nneeds to be executable and in PATH."
+  exit 1;
+fi
+
+PREFIX="$JHBUILD_SOURCES"
+OUT_DIR="$JHBUILD_SOURCES/glibmm/glib/src"
+
+for dir in "$PREFIX"/glib/{glib,gmodule,gobject,gthread}; do
+  PARAMS="$PARAMS -s $dir"
+done
+
+docextract_to_xml.py $PARAMS > "$OUT_DIR/glib_docs.xml"
diff --git a/tools/gen_scripts/glib_generate_enums.sh b/tools/gen_scripts/glib_generate_enums.sh
new file mode 100755
index 0000000..f297266
--- /dev/null
+++ b/tools/gen_scripts/glib_generate_enums.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Note that enum.pl should be in PATH for this script to work and
+# JHBUILD_SOURCES should be defined to contain the path to the root of the
+# jhbuild sources.  The defs files will be placed in
+# $JHBUILD_SOURCES/glibmm/glib/src.
+
+if [ -z "$JHBUILD_SOURCES" -o ! -x "`which enum.pl`" ]; then
+  echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources and \
+enum.pl\nneeds to be executable and in PATH."
+  exit 1;
+fi
+
+OUT_DIR="$JHBUILD_SOURCES/glibmm/glib/src"
+PREFIX="$JHBUILD_SOURCES/glib"
+
+enum.pl "$PREFIX"/glib/*.h "$PREFIX"/glib/deprecated/*.h > "$OUT_DIR"/glib_enums.defs
+patch "$OUT_DIR"/glib_enums.defs "$OUT_DIR"/glib_enums.defs.patch
+
+enum.pl "$PREFIX"/gmodule/*.h > "$OUT_DIR"/gmodule_enums.defs
+enum.pl "$PREFIX"/gobject/*.h > "$OUT_DIR"/gobject_enums.defs
diff --git a/tools/gen_scripts/glib_generate_extra_defs.sh b/tools/gen_scripts/glib_generate_extra_defs.sh
new file mode 100755
index 0000000..23a4710
--- /dev/null
+++ b/tools/gen_scripts/glib_generate_extra_defs.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# Note that JHBUILD_SOURCES should be defined to contain the path to the root
+# of the jhbuild sources.  The defs files will be placed in
+# $JHBUILD_SOURCES/glibmm/glib/src.
+
+GEN_DIR="$JHBUILD_SOURCES/glibmm/tools/extra_defs_gen"
+OUT_DIR="$JHBUILD_SOURCES/glibmm/glib/src"
+
+"$GEN_DIR"/../extra_defs_gen/generate_defs_glib > "$OUT_DIR"/glib_signals.defs
diff --git a/tools/gen_scripts/glib_generate_methods.sh b/tools/gen_scripts/glib_generate_methods.sh
new file mode 100755
index 0000000..ed52e72
--- /dev/null
+++ b/tools/gen_scripts/glib_generate_methods.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# Note that h2def.py should be in PATH for this script to work and
+# JHBUILD_SOURCES should be defined to contain the path to the root of the
+# jhbuild sources.  The defs files will be placed in
+# $JHBUILD_SOURCES/glibmm/glib/src.
+
+if [ -z "$JHBUILD_SOURCES" -o ! -x "`which h2def.py`" ]; then
+  echo -e "JHBUILD_SOURCES must contain the path to the jhbuild sources and \
+h2def.py\nneeds to be executable and in PATH."
+  exit 1;
+fi
+
+PREFIX="$JHBUILD_SOURCES/glib"
+OUT_DIR="$JHBUILD_SOURCES/glibmm/glib/src"
+
+h2def.py "$PREFIX"/glib/*.h "$PREFIX"/glib/deprecated/*.h > "$OUT_DIR"/glib_functions.defs
+patch "$OUT_DIR"/glib_functions.defs "$OUT_DIR"/glib_functions.defs.patch
+
+h2def.py "$PREFIX"/gmodule/*.h > "$OUT_DIR"/gmodule_functions.defs
+h2def.py "$PREFIX"/gobject/*.h > "$OUT_DIR"/gobject_functions.defs



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]