Imported Upstream version 2.35.8 upstream/2.35.8
authorDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 7 Sep 2020 06:39:48 +0000 (23:39 -0700)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Mon, 7 Sep 2020 06:39:48 +0000 (23:39 -0700)
197 files changed:
ChangeLog
NEWS
configure.ac
docs/reference/Doxyfile.in
examples/thread/thread.cc
gio/giomm.h
gio/giomm/contenttype.cc
gio/giomm/contenttype.h
gio/giomm/init.cc
gio/giomm/init.h
gio/giomm/wrap_init.h
gio/src/action.hg
gio/src/appinfo.ccg
gio/src/appinfo.hg
gio/src/application.ccg
gio/src/application.hg
gio/src/applicationcommandline.ccg
gio/src/applicationcommandline.hg
gio/src/asyncinitable.ccg
gio/src/asyncinitable.hg
gio/src/asyncresult.hg
gio/src/bufferedinputstream.hg
gio/src/bufferedoutputstream.hg
gio/src/cancellable.ccg
gio/src/cancellable.hg
gio/src/charsetconverter.hg
gio/src/converter.hg
gio/src/converterinputstream.hg
gio/src/converteroutputstream.hg
gio/src/datainputstream.hg
gio/src/dbusaddress.hg
gio/src/dbusconnection.ccg
gio/src/dbusconnection.hg
gio/src/dbuserrorutils.hg
gio/src/dbusintrospection.ccg
gio/src/dbusintrospection.hg
gio/src/dbusmessage.hg
gio/src/dbusproxy.ccg
gio/src/dbusproxy.hg
gio/src/dbuswatchname.hg
gio/src/desktopappinfo.hg
gio/src/drive.ccg
gio/src/drive.hg
gio/src/emblemedicon.hg
gio/src/enums.hg
gio/src/file.ccg
gio/src/file.hg
gio/src/fileattributeinfolist.hg
gio/src/fileenumerator.hg
gio/src/fileinfo.hg
gio/src/fileinputstream.hg
gio/src/fileiostream.hg
gio/src/filelist.am
gio/src/filemonitor.hg
gio/src/filenamecompleter.hg
gio/src/fileoutputstream.hg
gio/src/filterinputstream.hg
gio/src/filteroutputstream.hg
gio/src/gio_docs.xml
gio/src/gio_docs_override.xml
gio/src/gio_extra_objects.defs
gio/src/gio_signals.defs
gio/src/gio_vfuncs.defs
gio/src/icon.hg
gio/src/inputstream.hg
gio/src/iostream.hg
gio/src/memoryoutputstream.ccg
gio/src/memoryoutputstream.hg
gio/src/menuitem.ccg
gio/src/menuitem.hg
gio/src/menumodel.hg
gio/src/mount.hg
gio/src/mountoperation.hg
gio/src/outputstream.hg
gio/src/proxy.ccg
gio/src/proxy.hg
gio/src/proxyresolver.ccg
gio/src/proxyresolver.hg
gio/src/resolver.ccg
gio/src/resolver.hg
gio/src/seekable.hg
gio/src/settings.hg
gio/src/simpleaction.hg
gio/src/socket.hg
gio/src/socketaddressenumerator.hg
gio/src/socketclient.hg
gio/src/socketconnection.ccg
gio/src/socketconnection.hg
gio/src/socketlistener.ccg
gio/src/socketlistener.hg
gio/src/themedicon.hg
gio/src/tlscertificate.ccg [new file with mode: 0644]
gio/src/tlscertificate.hg [new file with mode: 0644]
gio/src/tlsclientconnection.ccg [new file with mode: 0644]
gio/src/tlsclientconnection.hg [new file with mode: 0644]
gio/src/tlsconnection.ccg [new file with mode: 0644]
gio/src/tlsconnection.hg [new file with mode: 0644]
gio/src/tlsdatabase.ccg [new file with mode: 0644]
gio/src/tlsdatabase.hg [new file with mode: 0644]
gio/src/tlsfiledatabase.ccg [new file with mode: 0644]
gio/src/tlsfiledatabase.hg [new file with mode: 0644]
gio/src/tlsinteraction.ccg [new file with mode: 0644]
gio/src/tlsinteraction.hg [new file with mode: 0644]
gio/src/tlspassword.ccg [new file with mode: 0644]
gio/src/tlspassword.hg [new file with mode: 0644]
gio/src/tlsserverconnection.ccg [new file with mode: 0644]
gio/src/tlsserverconnection.hg [new file with mode: 0644]
gio/src/unixconnection.ccg
gio/src/unixconnection.hg
gio/src/volume.ccg
gio/src/volume.hg
gio/src/volumemonitor.hg
glib/glibmm/class.cc
glib/glibmm/containerhandle_shared.h
glib/glibmm/containers.h
glib/glibmm/init.cc
glib/glibmm/interface.h
glib/glibmm/listhandle.h
glib/glibmm/main.cc
glib/glibmm/main.h
glib/glibmm/object.h
glib/glibmm/objectbase.cc
glib/glibmm/objectbase.h
glib/glibmm/property.h
glib/glibmm/propertyproxy.h
glib/glibmm/quark.cc
glib/glibmm/quark.h
glib/glibmm/refptr.h
glib/glibmm/signalproxy_connectionnode.cc
glib/glibmm/slisthandle.h
glib/glibmm/stringutils.h
glib/glibmm/threadpool.h
glib/glibmm/timeval.cc
glib/glibmm/timeval.h
glib/glibmm/ustring.cc
glib/glibmm/ustring.h
glib/glibmm/value.h
glib/glibmm/value_custom.h
glib/glibmm/vectorutils.h
glib/glibmm/wrap.cc
glib/glibmm/wrap.h
glib/src/balancedtree.hg
glib/src/bytes.hg
glib/src/checksum.ccg
glib/src/checksum.hg
glib/src/convert.ccg
glib/src/convert.hg
glib/src/datetime.hg
glib/src/fileutils.hg
glib/src/glib_docs.xml
glib/src/glib_docs_override.xml
glib/src/glib_extra_objects.defs
glib/src/iochannel.hg
glib/src/keyfile.ccg
glib/src/keyfile.hg
glib/src/markup.ccg
glib/src/module.hg
glib/src/nodetree.hg
glib/src/optioncontext.ccg
glib/src/optioncontext.hg
glib/src/optionentry.ccg
glib/src/optionentry.hg
glib/src/optiongroup.ccg
glib/src/optiongroup.hg
glib/src/regex.hg
glib/src/signalproxy.h.m4
glib/src/spawn.hg
glib/src/thread.ccg
glib/src/thread.hg
glib/src/threads.ccg
glib/src/threads.hg
glib/src/uriutils.hg
glib/src/variant.ccg
glib/src/variant.hg
glib/src/variant_basictypes.cc.m4
glib/src/variant_basictypes.h.m4
glib/src/variantiter.hg
glib/src/varianttype.ccg
glib/src/varianttype.hg
tests/glibmm_variant/main.cc
tools/defs_gen/docextract.py
tools/defs_gen/docextract_to_xml.py
tools/extra_defs_gen/generate_defs_gio.cc
tools/extra_defs_gen/generate_defs_glib.cc
tools/extra_defs_gen/generate_extra_defs.cc
tools/m4/convert_gio.m4
tools/m4/convert_glib.m4
tools/m4/enum.m4
tools/m4/method.m4
tools/m4/property.m4
tools/m4/signal.m4
tools/m4/vfunc.m4
tools/pm/DocsParser.pm
tools/pm/Enum.pm
tools/pm/Function.pm
tools/pm/Output.pm
tools/pm/WrapParser.pm

index d69c671..57a2ef9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,791 @@
+2.35.8 (unstable);
+
+2013-02-21  Murray Cumming  <murrayc@murrayc.com>
+
+       Fix the build  with --enable-warnings=fatal.
+
+       * glib/src/threads.hg: The GThread definition is now deprecated,
+       meaning it should only be used via a pointer.
+       However, we depend on it, so this temporarily undefs the
+       deprecation, so we can still use those checks elsewhere in the build.
+       It looks like we will have to do a third version of Glib::Threads,
+       after already replacing Glib::Thread.
+       This fixes make distcheck.
+
+2013-02-21  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       Signal*::connect(): Make them less thread-unsafe.
+
+       * glib/glibmm/main.cc: Make SignalTimeout::connect(), connect_seconds(),
+       SignalIdle::connect() and SignalChildWatch::connect() less thread-unsafe
+       by moving conn_node->install() to before g_source_attach().
+       * glib/glibmm/main.h: Describe that the Signal*::connect*() methods that
+       return a sigc::connection are not thread-safe. Bug #396958.
+
+2013-02-20  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       Signal[Timeout|Idle]::connect_once() docs: Warn about thread-unsafety.
+
+       * glib/glibmm/main.cc: Fix an incomplete comment.
+       * glib/glibmm/main.h: SignalTimeout::connect_once(), connect_seconds_once(),
+       SignalIdle::connect_once(): Describe the caution necessary because
+       sigc::trackable-derived objects are not thread-safe. Bug #396963.
+
+2013-02-20  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       ThreadPool::push() docs: Note that sigc::trackable is not thread-safe.
+
+       * glib/glibmm/threadpool.h: push(): Describe how sigc::trackable-derived
+       classes can be used in a thread-safe way.
+       * glib/src/threads.hg: create(): Correct the description added in the
+       previous commit. Bug #512348.
+
+2013-02-20  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       Threads::Thread::create(): Update the documentation.
+
+       * examples/thread/thread.cc: Don't derive from sigc::trackable.
+       * glib/src/threads.hg: create(): Describe how sigc::trackable-derived classes
+       can be used in a thread-safe way. Bug #512348.
+
+2013-01-30  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       Predefine G_OS_UNIX or G_OS_WIN32 in Doxygen's configuration file.
+
+       * docs/reference/Doxyfile.in: Predefine either G_OS_UNIX or G_OS_WIN32,
+       depending on HOST_WINDOWS_NATIVE. Update to Doxygen 1.8.3 status.
+       * glib/src/iochannel.hg: Remove the DOXYGEN_SHOULD_SKIP_THIS that was added
+       just to get Windows-specific methods included in the documentation.
+
+2013-01-30  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       DBus::[Connection|Proxy]: Change ifdef G_OS_LINUX to ifdef G_OS_UNIX.
+
+       * gio/src/dbusconnection.[ccg|hg]:
+       * gio/src/dbusproxy.[ccg|hg]: Change G_OS_LINUX to G_OS_UNIX. Glib does not
+       define G_OS_LINUX. Correct function declarations for DBus::Proxy::call().
+
+2013-01-29  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       gmmproc: Improve the conversion of documentation to Doxygen format.
+
+       * tools/defs_gen/docextract.py: Handle 'Since ' without a colon.
+       * tools/m4/signal.m4:
+       * tools/pm/Output.pm: When a function declaration is surrounded by
+       ifdef/endif, put its documentation inside the ifdef/endif.
+       * tools/pm/DocsParser.pm: Handle 'Since ' without a colon. Escape most
+       backslashes, not just \r and \n. Convert more <tags> to something that
+       Doxygen understands.
+
+2013-01-27  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       Documentation: Fix many warnings from Doxygen.
+
+       * gio/src/gio_docs_override.xml:
+       * glib/src/glib_docs_override.xml: Move "Since: n.m" from the <return> to the
+       <description> entries. gmmproc adds a period at the end of the @return
+       Doxygen command, and Doxygen warns for "@newin{n,m}.".
+       * glib/glibmm/interface.h:
+       * glib/glibmm/stringutils.h:
+       * glib/glibmm/vectorutils.h:
+       * gio/src/*.hg:
+       * glib/src/*.hg: (Here "*" means "many", not "all") Examples of changes:
+       Add missing @param. Change names of parameters, to make them equal in
+       function declaration and @param command. Change "@name" to "@a name".
+       Change "<ulink url=" to "<a href=".     
+
+2013-01-17  José Alburquerque  <jaalburquerque@gmail.com>
+
+       TlsConnection: Wrap the virtual functions.
+
+       * gio/src/tlsconnection.hg: Wrap the three virtual functions that were
+       left as TODO's now that it's possible to wrap virtual functions with
+       slots.
+       * tools/m4/vfunc.m4: Use 'retval' instead of 'result' for variables
+       that store the result of the C base virtual function invocation and
+       the C++ virtual function invocation because 'result' conflicts with
+       the AsyncResult 'result' parameter of the handshake_finish_vfunc().
+
+2013-01-16  José Alburquerque  <jaalburquerque@gmail.com>
+
+       gmmproc: _WRAP_VFUNC: Support the wrapping of slots.
+
+       * tools/pm/WrapParser.pm (on_wrap_vfunc): Add support for parsing the
+       additional 'slot_name', 'slot_callback', and 'no_slot_copy' options
+       that do the same thing as the corresponding _WRAP_METHOD options (ie.
+       specify the name of the C++ slot parameter, the name of the callback
+       function and whether to use the original slot or a copy of it,
+       respectively.  Also pass the options along to:
+       (output_wrap_vfunc): Store the options in the C++ virtual function
+       object so they can be tested for when converting the parameters and
+       composing the _VFUNC* m4 macro calls.
+       * tools/pm/Output.pm (output_wrap_vfunc_cc):
+       - Append the additional 'slot_type', 'slot_name' and 'no_slot_copy'
+       parameters to the _VFUNC_CC m4 macro invocation so that it can include
+       code for the vfunc to copy the slot parameter and pass it on to the C
+       function.
+       - Also append the additional 'slot_type' and 'c_data_param_name' to
+       the _VFUNC_PCC m4 macro so that it knows the slot type and the C
+       gpointer parameter name that contains the slot so that the macro can
+       generate code to extract the slot from the data parameter and pass the
+       slot on to the C++ virtual function.
+       (convert_args_c_to_cpp):
+       - Rewritten so that it loops through the C++ parameters so that it is
+       possible to re-order the parameters using the existing mapping
+       functionality that allows parameters to be re-ordered for the
+       _WRAP_[CREATE|CTOR|METHOD] macros.  Also re-written so that it knows
+       how to deal with slot parameters.
+       * tools/m4/vfunc.m4 (_VFUNC_PCC): Modified to accept the additional
+       'slot_type' and 'c_data_param_name' arguments and to insert code to
+       extract the slot from the C gpointer data parameter to be passed on
+       to the C++ virtual function.
+       (_VFUNC_CC): Modified to accept the additional 'slot_type',
+       'slot_name' and 'no_slot_copy' arguments and to insert code to either
+       copy the slot in a 'slot_copy' variable or set the variable to the
+       actual slot (if it's so been specified) which is then passed on to the
+       C function.
+
+2013-01-16  José Alburquerque  <jaalburquerque@gmail.com>
+
+       gmmproc: _WRAP_[CREATE|CTOR|METHOD]: Allow any order of {} options.
+
+       * tools/pm/Function.pm: Make it possible to use any order desired of
+       the options to specify whether parameters should be optional or should
+       be re-ordered in the _WRAP_* directives.
+
+2013-01-14  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       Gio::File: Remove refreturn to avoid memory leaks.
+
+       * gio/src/file.hg: Remove the refreturn argument from _WRAP_METHOD for read()
+       and 13 other methods. The glib functions add a ref.
+       Change @newin2p24 to @newin{2,24}. Bug #691606.
+
+2013-01-09  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm.h: Add the tls[client|server]connection.h headers.
+
+       * gio/giomm.h: Add the two new headers.
+
+2013-01-08  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the Tls[Client|Server]Connection classes.
+
+       * gio/src/tlsclientconnection.{ccg,hg}: Add the new client sources
+       wrapping the methods and properties.
+       * gio/src/tlsserverconnection.{ccg,hg}: Add the new server sources
+       wrapping its single property.
+       * gio/src/filelist.am: Include the new sources in the list of files to
+       be built.
+       * gio/src/enums.hg: Add the TlsAuthenticationMode enum needed for the
+       server class here because it is documented in the Tls Overview section
+       of the C API's documentation and not as part of any other class.
+       * tools/m4/convert_gio.m4: Add a necessary conversion.
+
+       * gio/src/tlsdatabase.{ccg,hg}: Fix the includes so that the
+       tlscertificate.h header file does not have to be included in the .h
+       file but instead in the .c file.
+
+2013-01-07  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm.h: Add the new tls*.h headers.
+
+       * gio/giomm.h: Add the
+       tls[connection|database|filedatabase|interaction].h headers.
+
+2013-01-07  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Tls[Database|Interaction|Passowrd]: Const corrections.
+
+       * gio/src/tlsdatabase.hg (verify_chain):
+       (verify_chain_async): Accept the SocketConnectable as a const because
+       it is used to check for certificates that have been pinned (marked as
+       good) for a specific domain in a browser session and not modified.
+       (lookup_certificate_issuer)
+       (lookup_certificate_issuer_async): Accept the TlsCertificate for which
+       to look for the issuer as const because it is not modified according
+       to the docs.
+       * gio/src/tlsinteraction.hg (ask_password):
+       (ask_password_async)
+       (invoke_ask_password): Accept the TlsPassword as non-const because the
+       docs say that it is filled in by the methods, not used to compare a
+       user entry with an existing password.
+       * gio/src/tlspassword.hg (get_value_vfunc):
+       (get_default_warning_vfunc): Make these const because they are getter
+       functions.
+       * tools/m4/convert_gio.m4: Adjust the conversions according to above
+       changes.
+
+2013-01-07  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       gmmproc: _WRAP_ENUM: Skip enum constants whose names are deleted.
+
+       * tools/pm/Enum.pm, build_element_list(): If a custom substitution argument
+       in _WRAP_ENUM() removes all of an enum constant's name, exclude that constant
+       from the element list. Useful for GdkEventType. Bug #544694.
+
+2013-01-07  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       gmmproc: Improve the search for documentation of enums.
+
+       * tools/pm/Enum.pm, build_element_list(): Search for value documentation
+       before custom substitutions are applied to the element name. Bug #544694.
+
+2013-01-03  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the TlsConnection class.
+
+       * gio/src/filelist.am:
+       * gio/src/tlsconnection.{ccg,hg}: Add the new sources wrapping the
+       methods, properties and signals of the new class.  Also add the
+       sources to the list of files to be built and add the virtual
+       functions as a TODO.
+       * gio/src/gio_vfuncs.defs: Add the definitions of the virtual
+       functions of the class for when the virtual functions are wrapped.
+       * tools/m4/convert_gio.m4: Add conversions relevant to wrapping the
+       class.
+
+2013-01-03  José Alburquerque  <jaalburquerque@gmail.com>
+
+       TlsDatabase: Add a TODO to wrap virtual functions.
+
+       * gio/src/tlsdatabase.hg: Add the virtual functions but as a TODO so
+       that the parameters can be properly ordered according to the order in
+       the methods.
+       * gio/src/gio_vfuncs.defs: Add the virtual function definitions for
+       when the vfuncs are wrapped.
+
+       * gio/src/tlscertificate.hg: Do not wrap a write-only construct-only
+       property.
+
+2013-01-03  José Alburquerque  <jaalburquerque@gmail.com>
+
+       TlsDatabase: Reorder parameters so that flags can have defaults.
+
+       * gio/src/tlsdatabase.hg (lookup_certificate_issuer):
+       (lookup_certificate_issuer_async): Reorder the parameters in these
+       methods as is done in the other methods so that the flag parameter can
+       be last and have a default value.
+
+2013-01-03  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the TlsDatabase class which implements TlsFileDatabase.
+
+       * gio/src/filelist.am:
+       * gio/src/tlsdatabase.{ccg,hg}: Add the sources wrapping the C
+       functions and include the sources in the list of files to be built.
+       * tools/m4/convert_gio.m4: Add the necessary conversions for the
+       wrapped methods in the sources.
+
+       * gio/src/tlsfiledatabase.hg: Add a TODO.
+
+2013-01-02  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the TlsFileDatabase interface.
+
+       * gio/src/filelist.am:
+       * gio/src/tlsfiledatabase.{ccg,hg}: Add the new sources wrapping a
+       single property and include them in the list of files to be built.
+       * gio/src/tlsinteraction.hg: Correct a typo.
+
+2013-01-01  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the TlsInteraction class.
+
+       * gio/src/tlsinteraction.{ccg,hg}:
+       * gio/src/filelist.am: Add the sources wrapping the C functions and
+       include the sources in the build.
+       * gio/src/gio_vfuncs.defs: Add the virtual functions of the class.
+       The vfuncs are not wrapped yet so that gmmproc can be modified so that
+       virtual functions with slot parameters can be wrapped as is already
+       possible with methods.
+       * tools/m4/convert_gio.m4: Add necessary conversions.
+
+2012-12-28  José Alburquerque  <jaalburquerque@gmail.com>
+
+       gmmproc: _WRAP_METHOD: Ensure that slot parameters can be optional.
+
+       * tools/pm/Output.pm (output_wrap_meth): Only pass the slot parameters
+       to the m4 _*METHOD() macros if convert_args_cpp_to_c() signals that a
+       possible slot parameter should be included.
+       (convert_args_cpp_to_c): Add a boolean called 'include_slot' to the
+       objCppfunc object that is by default false that is set when a slot
+       parameter is encountered and should converted.
+
+2012-12-28  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Variant: Allow containing complex types in arrays and in variants.
+
+       * glib/src/variant.hg (Variant< Variant<T> >): Add a new class capable
+       of containing any Variant<>.  The class is just like
+       Variant<VariantBase> except that with it, it is now possible to store
+       and handle complex variant types in a variant easily in a C++ way.
+       The modified test below exemplifies.
+       (Variant< std::vector<T> >::create): Create a Variant<> for each of
+       the members in the vector and then use g_variant_builder_add_value()
+       to add the underlying GVariant of the wrapped elements in the builder
+       instead of using the variadic g_variant_builder_add() function which
+       causes problems when dealing with types that are more complex than
+       basic ones.
+       (Variant< std::vector<T> >::get_child): Rewritten to get the child as
+       a GVariant, wrap the GVariant in a Variant<> and then get its value
+       instead of assuming that the array in the variant is a fixed array of
+       basic types so that complex types are supported in arrays.
+       (Variant< std::vector<T> >::get): Rewritten as get_child() above so
+       that the elements in the array are gotten as a GVariant, wrapped in a
+       Variant<> and then retrieved and placed in the resulting vector,
+       again, to ensure that a vector of complex types can be stored in a
+       variant.
+       * tests/glibmm_variant/main.cc: Modify the test to ensure that any
+       type other than basic ones are supported.
+
+2012-12-28  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       Gio::Action: Add more documentation of get_state_hint() and get_state().
+
+       * gio/src/action.hg: get_state_hint() and get_state() returns void, which
+       makes them useless. That can't be fixed until the next ABI break. Explain in
+       the documentation what to do instead of calling these methods. Bug #690134.
+
+2012-12-27  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       SignalProxy: Fix the documentation, especially of connect_notify().
+
+       * glib/src/signalproxy.h.m4: Many small fixes of the documentation, and a
+       more thorough rewrite of the doc of SignalProxy[0-6]::connect_notify().
+       Bug #126213, comment 5.
+
+2012-12-18  Andrew Potter  <agpotter@gmail.com>
+
+       VariantBase: Add operator for BoolExpr (const void*).
+
+       * glib/src/variant.{ccg,hg}: Adds operator BoolExpr.
+       Also deletes relational operators to prevent unexpected conversion.
+       Bug #690121.
+
+2012-12-13  Andrew Potter  <agpotter@gmail.com>
+
+       SimpleAction: Fix stateful action constructor typo, allowing use.
+
+       * gio/src/simpleaction.hg: Fix 'sate' typo to 'state', allowing
+       the constructor to be used. Bug #690122.
+
+2012-12-12  Andrew Potter  <agpotter@gmail.com>
+
+       Threads: Add create(slot, name).
+
+       * glib/src/threads.{ccg,hg}: Add a method to create named threads.
+
+       Bug #689863.
+
+2012-11-20  Andrew Potter  <agpotter@gmail.com>
+
+       VariantType: Add create_tuple().
+
+       * glib/src/varianttype.{ccg,hg}: Add the method following the style of
+       VariantContainerBase::create_tuple(), completing a TODO.
+
+       Bug #688682.
+
+2012-11-20  José Alburquerque  <jaalburquerque@gmail.com>
+
+       VariantType: Correct the referencing in the create*() methods.
+
+       * tools/m4/convert_glib.m4: Correct the 'GVarianType*' to VariantType
+       conversion to not take an extra reference when wrapping the
+       GVariantType in the VariantType.
+       * glib/src/variant.hg:
+       * glib/src/varianttype.hg: Also move the 'const GVariantType'
+       conversion from the global glib convert file (above) to these local
+       files because it takes an extra reference of the GVariantType.  
+
+       Bug #688440 (Andrew Potter).
+
+2012-11-18  José Alburquerque  <jaalburquerque@gmail.com>
+
+       gmmproc: Documentation: Adjust if the method has a slot param.
+
+       * tools/pm/WrapParser.pm (on_wrap_method): Pass the objCppfunc object
+       to the DocParser::lookup_documentation() subroutine so that it can
+       decide if the final parameter of the C function should be excluded
+       from the docs.  The final parameter (which would be a gpointer
+       user_data parameter) would be omitted if the C++ method has a slot
+       parameter.
+       * tools/pm/DocsParser.pm (lookup_documentation): Pass the objCppfunc
+       on to the append_parameter_docs() subroutine which does what's
+       described above.
+       (append_parameter_documentation): Decide whether to skip the final C
+       parameter as described above.  Also rename 'callback' parameters to
+       'slot' and use '@a slot' instead of '@a callback' in the main
+       description.
+       (substitute_identifiers): Replace C *Callback types to C++ Slot*
+       types.
+
+       Bug #688587.
+
+2012-11-18  José Alburquerque  <jaalburquerque@gmail.com>
+
+       gmmproc: _WRAP_METHOD: Support wrapping methods with slots.
+
+       * tools/pm/WrapParser.pm (on_wrap_method): Add code to parse the
+       additional 'slot_name', 'slot_callback' and 'no_slot_copy' options.
+       - The 'slot_name' options specifies the name of the slot parameter in
+         the C++ method declaration.
+       - The 'slot_callback' option specifies the name of the callback to
+         pass to the C function.
+       - The 'no_slot_copy' option specifies that the actual slot should be
+         passed to the C function in the data parameter and not a copy.  By
+         default, a copy is used.
+       * tools/pm/Output.pm (output_wrap_meth): Pass the new slot options
+       along to the *METHOD() m4 macros.
+       (convert_args_cpp_to_c):
+       - If there is a slot parameter, ignore the final user_data parameter
+         in the C function when comparing the argument count in the C++
+         method and the C function.
+       - Convert a possible slot parameter to the address of the specified
+         slot callback (with the 'slot_callback' option).  Report an error if
+         no callback has been specified.
+       - Pass a 'slot_copy' variable as the final user data parameter to the
+         C function.  The variable is declared by the _*METHOD() m4 macros.
+       * tools/m4/method.m4 (_METHOD):
+       (_STATIC_METHOD):
+       - Accept the new 'slot_type', 'slot_name' and 'no_slot_copy' options
+         which specify the C++ slot type (without the const and the &), the
+         C++ slot parameter name and whether to create a copy of the slot or
+         not respectively.
+       - Insert code to declare a 'slot_copy' variable that is either a copy
+         of the slot or a pointer to the actual C++ slot based on the
+         'no_slot_copy' option.
+
+       Bug #688587.
+
+2012-11-15  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm.h: Include the tlspassword.h header file.
+
+       * gio/giomm.h:
+
+2012-11-14  Debarshi Ray  <debarshir@src.gnome.org>
+
+       ustring docs: The global locale should be set when using C++ streams.
+
+       * glib/glibmm/ustring.h: Replace output.imbue(std::locale("")) by
+       std::locale::global(std::locale("")) in the description of how to use
+       std::ostringstream. Bug #661588.
+
+2012-11-13  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the TlsPassword class.
+
+       * gio/src/tlspassword.{ccg,hg}:
+       * gio/src/filelist.am: Add the new sources containing the constructor,
+       methods, properties and virtual functions and include the sources in
+       the build.
+       * gio/src/gio_vfuncs.defs: Add the GTlsPassword virtual functions so
+       that they are recognized by gmmproc.
+       * tools/m4/convert_gio.m4: Add an enum conversion.
+
+2012-11-13  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the GTls* GTypes to the extra defs generation utility.
+
+       * tools/extra_defs_gen/generate_defs_gio.cc: Add the GTypes.
+       * gio/src/gio_signals.defs: And regenerate the signal and property
+       defs file.
+
+2012-11-13  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm.h: Re-add an accidentally removed include.
+
+       * gio/giomm.h: Re-add 'simpleaction.h' which was accidentally removed.
+       Also re-sort the includes by the base filename (without the .h) as
+       they were before.
+
+2012-11-12  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm.h: Include missing headers.
+
+       * gio/giomm.h: Include all the headers generated from the .hg files.
+
+2012-11-11  José Alburquerque  <jaalburquerque@gmail.com>
+
+       giomm: Add the TlsCertificate class.
+
+       * gio/src/filelist.am:
+       * gio/src/tlscertificate.{ccg,hg}: Add the sources wrapping the
+       constructors, methods and (most) properties and include the sources in
+       the build.
+       * gio/src/enums.hg: Add the TlsCertificateFlags enum (wrapping the C
+       enum).
+       * tools/extra_defs_gen/generate_defs_gio.cc: Add the GTlsCertificate
+       GType to the list of types for which signal and property defs are to
+       be generated.
+       * gio/src/gio_signals.defs: Regenerate the signal and property defs
+       file.
+       * tools/m4/convert_gio.m4: Add necessary conversions.
+
+       * gio/src/gio_extra_objects.defs: Add TlsClientConnection to avoid a
+       gmmproc docs warning.
+
+2012-11-08  José Alburquerque  <jaalburquerque@gmail.com>
+
+       gmmproc: _WRAP_CTOR: Handle *_new() functions with a final GError**.
+
+       * tools/pm/WrapParser.pm (on_wrap_ctor): Add code to parse an
+       additional "errthrow" optional option in a _WRAP_CTOR() macro.
+       * tools/pm/Output.pm (output_wrap_ctor): Pass the "errorthrow" option
+       along as a string to:
+       (get_ctor_properties): Ignore the final GError** parameter of the C
+       *_new() function because it does not form part of the property list
+       that the constructor to has to set.
+
+       Bug #687959.
+
+2012-11-07  José Alburquerque  <jaalburquerque@gmail.com>
+
+       DesktopAppInfo: Add some new getter methods.
+
+       * gio/src/desktopappinfo.hg: Add the get_keywords(),
+       get_startup_wm_class(), get_generic_name(), get_show_in(),
+       get_nodisplay() and get_categories() getter methods wrapping the
+       corresponding C functions.
+
+2012-11-06  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Variant: Don't refsink variants created using the custom cast ctor.
+
+       * glib/src/variant.ccg:
+       * glib/src/variant.hg:
+       * glib/src/variant_basictypes.cc.m4: Remove the call to
+       g_variant_ref_sink() in the create() methods of the variant types that
+       use the custom cast constructor to wrap the newly created C object
+       because the custom cast constructor already refsinks the object if
+       necessary.
+
+2012-11-06  José Alburquerque  <jaalburquerque@gmail.com>
+
+       MemoryOutputStream: Add the steal_as_bytes() method.
+
+       * gio/src/memoryoutputstream.{ccg,hg}: Add the method that wraps the
+       corresponding C function.
+
+2012-11-06  José Alburquerque  <jaalburquerque@gmail.com>
+
+       AppInfo: Add create_duplicate().
+
+       * gio/src/appinfo.{hg,ccg}: Add the new method (which creates a
+       duplicate of the AppInfo).  Also, use gmmproc's optional parameter
+       functionality to wrap the launch_default_for_uri() method without the
+       optional AppLaunchContext parameter.
+
+2012-11-06  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Variant< std::vector<std::string> >: Add create_from_object_paths().
+
+       * glib/src/variant.hg: Add the new method that creates a variant of
+       vector of strings out of object paths.  This is so the type of the
+       variant is rightly set to G_VARIANT_TYPE_OBJECT_PATH_ARRAY and not
+       G_VARIANT_TYPE_BYTESTRING_ARRAY in case some application needs to make
+       a distinction.  
+         Also _IGNORE the g_variant_get_objv() and g_variant_dup_objv()
+       functions because it's possible to get object paths from a variant of
+       vector of strings if it contains them with the existing getter
+       methods because object paths are merely strings.
+       * glib/src/variantiter.hg: Add an _IGNORE.
+       * glib/src/checksum.ccg:
+       * glib/src/convert.ccg: Whitespace.
+
+2012-11-05  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Regenerate the XML docs files for glibmm and giomm.
+
+       * gio/src/gio_docs.xml:
+       * glib/src/glib_docs.xml: These files now include enum XML
+       documentation.
+       * glib/src/glib_extra_objects.defs: Add IOChannel to avoid a gmmproc
+       documentation warning.
+
+2012-11-04  José Alburquerque  <jaalburquerque@gmail.com>
+
+       gmmproc: Make enum documentation possible.
+
+       * tools/defs_gen/docextract.py (enum_name_pattern): Add a new regular
+       expression that recognizes gtk-doc enum comment blocks (though
+       imperfectly because it also catches things such as structure comment
+       blocks).
+       (identifier_patterns): Append the new enum_name_pattern to the list of
+       patterns used to test each gtk-doc block's identifier to see what type
+       of block it is.
+       (parse_file): Do not add a particular gtk-doc block if it has been
+       marked as a block initially thought to be an enum comment block but
+       later found not to be so.
+       (skip_to_identifier): Mark the current comment block as an enum type
+       if the enum_name_pattern matches the identifier.
+       (process_params): Mark the current block as invalid if the block was
+       recognized as an enum type but no parameters are found or if any of
+       the parameter names are not all caps.
+       (parse_dir): Include .h files for processing because gtk-doc enum
+       comment blocks are included in those files.
+       * tools/defs_gen/docextract_to_xml.py: Add an option to not print out
+       enum docs.  Assume that enum docs should be printed out by default.
+       * tools/pm/DocsParser.pm (parse_on_start):
+       (parse_on_end): Add logic to correctly parse an <enum> tag (which is
+       just like the already existing <function> and <signal> tags.  The only
+       difference is in the name of the tags.  The function name syntax is
+       the same as a C function name, the signal name has the form
+       'CStructName::signal-name' while the enum name has the form
+       'CEnumName')
+       (lookup_enum_description): Add this subroutine that gets the
+       the description of the specified enum.
+       (lookup_enum_value_documentation): Add this subroutine that gets the
+       description of an enum value as a Doxygen block.
+       (lookup_documentation): Use the new remove_example_code subroutine
+       described below.
+       (remove_example_code): Add this subroutine that removes example code
+       from the specified text so that it can be used in other places.
+       * tools/pm/Enum.pm (c_prefix): Add a new field to the class storing
+       the enum's C prefix.  This field is used when looking up an enum's
+       value documentation.
+       (parse_values): Modified to store the C prefix of the enum.
+       (build_element_list): Modified to lookup the documentation of the
+       values of the enum and insert the Doxygen block just before each
+       value.  This allows Doxygen to document each value of the enum.
+       * tools/pm/Output.pm (output_wrap_enum): Modified to lookup
+       the description of the enum previously parsed by the DocParser and
+       merge it with an already passed in comment for the enum which is then
+       passed as before to the _ENUM macro.
+       * tools/m4/enum.m4: Whitespace correction.
+
+       Bug #544694.
+
+2012-11-04  Murray Cumming  <murrayc@murrayc.com>
+
+        MountOperation: Correct an ABI break.
+
+        * gio/src/mountoperation.hg: Use the no_default_handler option with
+       the new _WRAP_SIGNAL() to avoid a new on_*() vfunc increasing the size
+       of the class. This got into the 2.34.0 release at the last moment 
+       but it seems better to correct it before people use it than to leave it.
+
+2012-11-05  José Alburquerque  <jaalburquerque@gmail.com>
+
+       UnixConnection: Remove the const receive_credentials_finish() method.
+
+       * gio/src/unixconnection.hg: It doesn't make sense and there are no
+       other const *_finish() methods in giomm.  Further, it's not needed for
+       getting a const Credentials.  That's already possible with the
+       existing receive_credentials_finish() method.
+
+2012-11-04  José Alburquerque  <jaalburquerque@gmail.com>
+
+       UnixConnection: Add [receive|send]_credentials_[async|finish]().
+
+       * gio/src/unixconnection.{ccg,hg}: Add the new methods (adding
+       non-cancellable versions for the async methods) wrapping the
+       corresponding C functions.
+       * gio/src/socketconnection.hg: Typo.
+
+2012-11-04  José Alburquerque  <jaalburquerque@gmail.com>
+
+       ThemedIcon: Wrap the "names" property.
+
+       * gio/src/themedicon.hg:
+
+2012-11-04  José Alburquerque  <jaalburquerque@gmail.com>
+
+       SocketConnection: Add connect*() and is_connected() methods.
+
+       * gio/src/socketconnection.{ccg,hg}: Add connect(), connect_async(),
+       connect_finish() and is_connected() methods (wrapping the
+       corresponding C functions).
+       * gio/src/resolver.hg: Add an _IGNORE.
+
+2012-11-04  José Alburquerque  <jaalburquerque@gmail.com>
+
+       docextract_to_xml.py: Replace &colon; with ':' in generated XML files.
+
+       * tools/defs_gen/docextract_to_xml.py: Otherwise gmmproc reports
+       errors if this entity is encountered when trying to parse the XML
+       documentation.
+
+2012-11-01  Kjell Ahlstedt  <kjell.ahlstedt@bredband.net>
+
+       gmmproc: Improve the documentation of properties.
+
+       * tools/m4/property.m4: Change "the property of the value" to "the value of
+       the property". Make the description of the return value different for
+       PropertyProxy, PropertyProxy_ReadOnly and PropertyProxy_WriteOnly.
+
+2012-10-30  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Resolver: Add lookup_records() and lookup_records_finish().
+
+       * glib/glibmm/containerhandle_shared.h: Add TypeTraits specializations
+       for VariantBase (for the futre) and VariantContainerBase.
+       * gio/src/resolver.hg:  Add the new methods (mentioned above) because
+       the VariantContainerBase TypeTraits specialization allows the vector
+       utilities to convert to/from GVariants in a GList correctly.
+
+2012-10-29  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Resolver: Add the lookup_records_async() methods.
+       
+       * gio/src/resolver.{ccg,hg}: Add the methods (cancellable and
+       non-cancellable versions) adding TODO's about wrapping the remaining
+       related methods (lookup_records() and lookup_records_finish()).
+       * tools/m4/convert_gio.m4: Add a necessary enum conversion.
+       * glib/src/variant.hg: Typo discovered while adding above methods.
+
+2012-10-29  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Add some TODO's.
+
+       * gio/src/menuitem.hg:
+       * gio/src/menumodel.hg: Add TODO's about possibly adding methods to
+       the classes in these files (these TODO's were added a few days ago and
+       being commited now).  Also add a TODO about an unwrapped signal in
+       MenuModel.
+       * glib/src/glib_extra_objects.defs: Add GArray to the list of objects
+       to avoid a gmmproc documentation warning.
+
+2012-10-29  Mark Vender  <markv743@yahoo.co.uk>
+
+       Strip trailing whitespace.
+
+       * gio/giomm/*.[h|cc]:
+       * gio/src/*.[hg|ccg]:
+       * glib/glibmm/*.[h|cc]:
+       * glib/src/*.[hg|ccg]: Strip trailing whitespace. Bug #681072.
+
+2012-10-25  José Alburquerque  <jaalburquerque@gmail.com>
+
+       ContentType: Fix typo in the content_type_get_symbolic_icon() name.
+
+       * gio/giomm/contenttype.cc: The name was misspelled because the 'o'
+       and 'l' in 'symbolic' were interchanged.  The name is correctly
+       spelled in the .h file so I guess it's safe to rename it in the .cc
+       file for 2.34 and the master branch.
+
+2012-10-24  José Alburquerque  <jaalburquerque@gmail.com>
+
+       DBus::[Connection|Proxy]: Use ifdefs for the UnixFDList call*() methods.
+
+       * gio/src/dbusconnection.hg:
+       * gio/src/dbusproxy.hg: Place the call*() methods taking a UnixFDList
+       parameter within '#ifdef G_OS_UNIX' ifdefs because the UnixFDList
+       class exists only on the Unix platform.
+
+2012-10-24  José Alburquerque  <jaalburquerque@gmail.com>
+
+       Remove the use of g_type_init() because it has been deprecated.
+
+       * glib/glibmm/wrap.cc:
+       * tools/extra_defs_gen/generate_defs_gio.cc:
+       * tools/extra_defs_gen/generate_defs_glib.cc: The docs for the
+       function says that the GType system is initialized automatically now
+       as of 2.36.
+       * tools/extra_defs_gen/generate_extra_defs.cc: Whitespace correction.
+
 2.34.0:
 
 2012-10-21  Murray Cumming  <murrayc@murrayc.com>
diff --git a/NEWS b/NEWS
index afa33c5..821d0a2 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,220 @@
+2.35.8 (unstable);
+
+Glib:
+* Resolver: Add lookup_records(), lookup_records_async()
+  and lookup_records_finish().
+  (José Alburquerque)
+* Signal*::connect(): Make them less thread-unsafe.
+  (Kjell Ahlstedt) Bug #396958 (Daniel Elstner, Chris Vine)
+* Threads: Add create(slot, name) to create named threads.
+  (Andrew Potter) Bug #689863
+* Variant: Allow containing complex types in arrays and in variants.
+  (José Alburquerque)
+* Variant: Don't refsink variants created using the custom cast ctor.
+  (José Alburquerque)
+* Variant< std::vector<std::string> >: Add create_from_object_paths().
+  (José Alburquerque)
+* VariantBase: Add operator for BoolExpr (const void*).
+  (Andrew Potter) Bug #690121
+* VariantType: Add create_tuple().
+  (Andrew Potter) Bug #688682
+* VariantType: Correct the referencing in the create*() methods.
+  (José Alburquerque) Bug #688440 (Andrew Potter)
+
+Gio:
+* AppInfo: Add create_duplicate().
+  (José Alburquerque)
+* DesktopAppInfo: Add some new getter methods.
+  (José Alburquerque)
+* File: Remove refreturn to avoid memory leaks.
+  (Kjell Ahlstedt) Bug #691606 (Dodak4Gi)
+* MemoryOutputStream: Add the steal_as_bytes() method.
+  (José Alburquerque)
+* SimpleAction: Fix stateful action constructor typo, allowing use.
+  (Andrew Potter) Bug #690122
+* SocketConnection: Add connect*() and is_connected() methods.
+  (José Alburquerque)
+* ThemedIcon: Wrap the "names" property.
+  (José Alburquerque)
+* Add TlsConnection, TlsClient, TlsServer, TlsDatabase,
+  TlsCertificate, TlsPassword, TlsFileDatabase and TlsInteraction.
+  (José Alburquerque)
+* UnixConnection: Add [receive|send]_credentials_[async|finish]().
+  (José Alburquerque)
+
+Gio::DBus:
+* DBus::[Connection|Proxy]: Use ifdefs for the UnixFDList call*() methods.
+  (José Alburquerque)
+
+gmmproc:
+* gmmproc: _WRAP_VFUNC: Support the wrapping of slots.
+  (José Alburquerque)
+* gmmproc: _WRAP_METHOD: Support wrapping methods with slots.
+  (José Alburquerque) Bug #688587
+* gmmproc: _WRAP_METHOD: Ensure that slot parameters can be optional.
+  (José Alburquerque)
+* gmmproc: _WRAP_[CREATE|CTOR|METHOD]: Allow any order of {} options.
+  (José Alburquerque)
+* gmmproc: _WRAP_ENUM: Skip enum constants whose names are deleted.
+  (Kjell Ahlstedt) Bug #544694 (Murray Cumming)
+* gmmproc: _WRAP_CTOR: Handle *_new() functions with a final GError**.
+  (José Alburquerque) Bug #687959
+
+Documentation:
+* Signal[Timeout|Idle]::connect_once() docs: Warn about thread-unsafety.
+  (Kjell Ahlstedt) Bug #396963 (Daniel Elstner, Chris Vine)
+* ThreadPool::push() docs: Note that sigc::trackable is not thread-safe.
+  (Kjell Ahlstedt) Bug #512348 (Chris Vine)
+* Threads::Thread::create(): Update the documentation.
+  (Kjell Ahlstedt) Bug #512348 (Chris Vine)
+* SignalProxy: Fix the documentation, especially of connect_notify().
+  (Kjell Ahlstedt) Bug #126213, comment 5.
+* Gio::Action: Add more documentation of get_state_hint() and get_state().
+  (Kjell Ahlstedt) Bug #690134 (Andrew Potter)
+* Predefine G_OS_UNIX or G_OS_WIN32 in Doxygen's configuration file.
+  (Kjell Ahlstedt)
+* gmmproc: Improve the conversion of documentation to Doxygen format.
+  (Kjell Ahlstedt)
+* Documentation: Fix many warnings from Doxygen.
+  (Kjell Ahlstedt)
+* gmmproc: Make enum documentation possible.
+  (José Alburquerque) Bug #544694 (Murray Cumming)
+* gmmproc: Improve the search for documentation of enums.
+  (Kjell Ahlstedt)
+* gmmproc: Documentation: Adjust if the method has a slot param.
+  (José Alburquerque) Bug #688587.
+* docextract_to_xml.py: Replace &colon; with ':' in generated XML files.
+  (José Alburquerque)
+* gmmproc: Improve the documentation of properties.
+  (Kjell Ahlstedt)
+* ustring docs: The global locale should be set when using C++ streams.
+  (Debarshi Ray) Bug #661588
+
+Build/Other:
+* DBus::[Connection|Proxy]: Change ifdef G_OS_LINUX to ifdef G_OS_UNIX.
+  (Kjell Ahlstedt)
+* ContentType: Fix typo in the content_type_get_symbolic_icon() implementation.
+  (José Alburquerque)
+* Remove the use of g_type_init() because it has been deprecated.
+  (José Alburquerque)
+* Strip trailing whitespace.
+  (Mark Vender) 
+* Fix the build with warnings enabled.
+  (Murray Cumming)
+
+
+Changes in 2.34 compared to 2.32:
+
+Glib:
+* Added the Bytes class, wrapping GBytes.
+  (Murray Cumming)
+* RegEx: Add get_has_cr_or_lf().
+  (José Alburquerque)
+* Threads::Mutex, RecMutex: Add wrap() functions.
+  (Kjell Ahlstedt) Bug #483790
+* VariantIter: Add init() method.
+  (José Alburquerque)
+
+Gio:
+* ActionGroup: Add the query_action() methods.
+  (José Alburquerque)
+* AppInfo: Added  get_display_name(),
+  set_as_last_used_for_type() and get_supported_types().
+  (Murray Cumming)
+* AppLaunchContext: Add setenv(), unsetenv() and get_environment().
+  (Murray Cumming)
+* Application:
+  - Added get_dbus_connection()
+  and get_dbus_object_path().
+  - Allow the application ID to be empty.
+  (Murray Cumming)
+* ContentType:
+  - get_icon(): Fix a refcount error.
+  - Added get_symbolic_icon().
+  (Murray Cumming)
+* Add Converter, ZlibCompressor, ZlibDecompressor and 
+  CharsetConverter classes.
+  (José Alburquerque)
+* Add ConverterInputStream and ConverterOutputStream.
+  (José Alburquerque)
+* DBusAuthObserver: Added allow_mechanism().
+  (Murray Cumming)
+* Drive: Added get_symbolic_icon().
+  (Murray Cumming)
+* File: Add remove_async() and remove_finish().
+  (Murray Cumming)
+* FileAttributeMatcher: Add create_difference() and to_string().
+  (José Alburquerque)
+* FileInfo:
+  - Add has_namespace(), [get|set]_attribute_status(),
+  and [get|set]_attribute_strings().
+  (José Alburquerque)
+  - Added get_symbolic_icon().
+  (Murray Cumming)
+* InetSocketAddress: Added get_flowinfo() and get_scope_id()
+  (Murray Cumming)
+* InputStream: Added read_bytes(), read_bytes_async() and read_bytes_finish().
+  (Murray Cumming)
+* IOStream: Add splice_async() splice_finish().
+  (José Alburquerque)
+* Menu: Added append_section().
+  (Murray Cumming)
+* MenuItem:
+  - Added get_link().
+  (Murray Cumming)
+  - Add get_attribute().
+  (José Alburquerque)
+* MenuModel: Added is_mutable() and get_n_items().
+  (Murray Cumming)
+* Mount: Added get_symbolic_icon().
+  (Murray Cumming)
+* MountOperation: Wrap the "show-unmount-progess" signal.
+  (José Alburquerque)
+* OutputStream: Added write_bytes(), write_bytes_async() and write_bytes_finish().
+  (Murray Cumming)
+* Add PollableInputStream and PollableOutputStream.
+  (José Alburquerque)
+* Proxy: Add call(), call_sync() and call_finish() for unix_fd_list.
+  (Murray Cumming)
+* ProxyAddress: Added get_destination_protocol()
+  and get_uri().
+  (Murray Cumming)
+* Add Resource
+  Bug #674545 (Kalev Lember)
+* Socket: Added get_available_bytes(), get_ttl(), set_ttl(), 
+  get_broadcast(), set_broadcast(), 
+  get_multicast_loopback(), set_multicast_loopback(),
+  get_multicast_ttl(), set_multicast_ttl(),
+  join_multicast_group(), leave_multicast_group(),
+  and properties.
+  (Murray Cumming)
+* Volume:
+  - Added get_symbolic_icon().
+  - Added get_sort_key().
+  (Murray Cumming)
+
+Gio::DBus:
+* Connection:
+  - Added get_last_serial().
+  (Murray Cumming)
+  - Added call_[finish|sync]() with UnixFDLists.
+  (José Alburquerque)#662371.
+
+gmmproc:
+* Add _INCLUDE_IN_WRAP_INIT, _GMMPROC_WRAP_CONDITIONALLY.
+  (Kjell Ahlstedt) Bug #678883.
+* Add _CUSTOM_CTOR_CAST
+  (Krzesimir Nowak)
+* _WRAP_VFUNC: Handle virtual functions that throw GErrors.
+  (José Alburquerque) Bug #683460
+* Add a _NO_WRAP_INIT_REGISTRATION macro
+  (José Alburquerque) Bug #684006
+* _CLASS_GOBJECT: Allow classes to have custom wrap() functions.
+  (José Alburquerque) Bug #684006
+* _WRAP_METHOD: Allow setting parameters from C output params.
+  (José Alburquerque) Bug #662371
+
+
 2.34.0 (stable):
 
 * Some minor documentation improvements.
index 1e3545b..3daade8 100644 (file)
@@ -15,7 +15,7 @@
 ## You should have received a copy of the GNU Lesser General Public License
 ## along with this library.  If not, see <http://www.gnu.org/licenses/>.
 
-AC_INIT([glibmm], [2.34.0],
+AC_INIT([glibmm], [2.35.8],
         [http://bugzilla.gnome.org/enter_bug.cgi?product=glibmm],
         [glibmm], [http://www.gtkmm.org/])
 AC_PREREQ([2.59])
@@ -60,7 +60,7 @@ AS_IF([test "x$enable_static" = xyes],
   AC_DEFINE([GIOMM_STATIC_LIB],  [1], [Define if giomm is built as a static library])
 ])
 
-glibreq='2.0 >= 2.34.0'
+glibreq='2.0 >= 2.35.8'
 
 GLIBMM_MODULES="sigc++-2.0 >= 2.2.10 glib-$glibreq gobject-$glibreq gmodule-$glibreq"
 GIOMM_MODULES="$GLIBMM_MODULES gio-$glibreq"
index 4641bb7..2f5242b 100644 (file)
@@ -1,12 +1,20 @@
-# Doxyfile 1.6.1
+# Doxyfile 1.8.3
 # @configure_input@
 
+# When Doxyfile.in is updated with 'doxygen -s -u Doxyfile.in' some lines
+# will be distorted or removed, and must be manually restored.
+# - These comment lines, including the configure_input line.
+# - The lines with HOST_WINDOWS_NATIVE_[FALSE|TRUE].
+# (True of Doxygen 1.8.3. Don't know how future releases will behave.)
+
 #---------------------------------------------------------------------------
 # Project related configuration options
 #---------------------------------------------------------------------------
 DOXYFILE_ENCODING      = UTF-8
 PROJECT_NAME           = @PACKAGE_NAME@
 PROJECT_NUMBER         = @PACKAGE_VERSION@
+PROJECT_BRIEF          =
+PROJECT_LOGO           =
 OUTPUT_DIRECTORY       = reference
 CREATE_SUBDIRS         = NO
 OUTPUT_LANGUAGE        = English
@@ -35,25 +43,33 @@ MULTILINE_CPP_IS_BRIEF = NO
 INHERIT_DOCS           = YES
 SEPARATE_MEMBER_PAGES  = NO
 TAB_SIZE               = 8
-ALIASES                = "newin{2}=\xrefitem since_\1_\2 \"Since @PACKAGE_NAME@ \1.\2\" \"New API in @PACKAGE_NAME@ \1.\2\""
+ALIASES                = "newin{2}=\xrefitem since_\1_\2 \"Since @PACKAGE_NAME@ \1.\2\" \"New API in @PACKAGE_NAME@ \1.\2\"" \
+                         "newin{3}=\xrefitem since_\1_\2_\3 \"Since @PACKAGE_NAME@ \1.\2.\3\" \"New API in @PACKAGE_NAME@ \1.\2.\3\""
+TCL_SUBST              =
 OPTIMIZE_OUTPUT_FOR_C  = NO
 OPTIMIZE_OUTPUT_JAVA   = NO
 OPTIMIZE_FOR_FORTRAN   = NO
 OPTIMIZE_OUTPUT_VHDL   = NO
 EXTENSION_MAPPING      =
+MARKDOWN_SUPPORT       = YES
+AUTOLINK_SUPPORT       = YES
 BUILTIN_STL_SUPPORT    = NO
 CPP_CLI_SUPPORT        = NO
 SIP_SUPPORT            = NO
 IDL_PROPERTY_SUPPORT   = YES
 DISTRIBUTE_GROUP_DOC   = NO
 SUBGROUPING            = YES
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS  = NO
 TYPEDEF_HIDES_STRUCT   = NO
 SYMBOL_CACHE_SIZE      = 0
+LOOKUP_CACHE_SIZE      = 0
 #---------------------------------------------------------------------------
 # Build related configuration options
 #---------------------------------------------------------------------------
 EXTRACT_ALL            = YES
 EXTRACT_PRIVATE        = NO
+EXTRACT_PACKAGE        = NO
 EXTRACT_STATIC         = NO
 EXTRACT_LOCAL_CLASSES  = NO
 EXTRACT_LOCAL_METHODS  = NO
@@ -66,12 +82,14 @@ INTERNAL_DOCS          = NO
 CASE_SENSE_NAMES       = YES
 HIDE_SCOPE_NAMES       = NO
 SHOW_INCLUDE_FILES     = YES
+FORCE_LOCAL_INCLUDES   = NO
 INLINE_INFO            = YES
 SORT_MEMBER_DOCS       = YES
 SORT_BRIEF_DOCS        = NO
 SORT_MEMBERS_CTORS_1ST = YES
 SORT_GROUP_NAMES       = YES
 SORT_BY_SCOPE_NAME     = YES
+STRICT_PROTO_MATCHING  = NO
 GENERATE_TODOLIST      = NO
 GENERATE_TESTLIST      = NO
 GENERATE_BUGLIST       = NO
@@ -79,11 +97,11 @@ GENERATE_DEPRECATEDLIST= YES
 ENABLED_SECTIONS       =
 MAX_INITIALIZER_LINES  = 2
 SHOW_USED_FILES        = NO
-SHOW_DIRECTORIES       = NO
 SHOW_FILES             = NO
 SHOW_NAMESPACES        = YES
 FILE_VERSION_FILTER    =
 LAYOUT_FILE            =
+CITE_BIB_FILES         =
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
@@ -123,6 +141,8 @@ IMAGE_PATH             =
 INPUT_FILTER           =
 FILTER_PATTERNS        =
 FILTER_SOURCE_FILES    = NO
+FILTER_SOURCE_PATTERNS =
+USE_MDFILE_AS_MAINPAGE =
 #---------------------------------------------------------------------------
 # configuration options related to source browsing
 #---------------------------------------------------------------------------
@@ -149,11 +169,19 @@ HTML_FILE_EXTENSION    = .html
 HTML_HEADER            =
 HTML_FOOTER            =
 HTML_STYLESHEET        = "@abs_top_srcdir@/docs/doxygen.css"
-HTML_ALIGN_MEMBERS     = YES
+HTML_EXTRA_STYLESHEET  =
+HTML_EXTRA_FILES       =
+HTML_COLORSTYLE_HUE    = 220
+HTML_COLORSTYLE_SAT    = 100
+HTML_COLORSTYLE_GAMMA  = 80
+HTML_TIMESTAMP         = YES
 HTML_DYNAMIC_SECTIONS  = NO
+HTML_INDEX_NUM_ENTRIES = 100
 GENERATE_DOCSET        = NO
 DOCSET_FEEDNAME        = "Doxygen generated docs"
 DOCSET_BUNDLE_ID       = org.doxygen.Project
+DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME  = Publisher
 GENERATE_HTMLHELP      = NO
 CHM_FILE               =
 HHC_LOCATION           =
@@ -169,13 +197,25 @@ QHP_CUST_FILTER_NAME   =
 QHP_CUST_FILTER_ATTRS  =
 QHP_SECT_FILTER_ATTRS  =
 QHG_LOCATION           =
+GENERATE_ECLIPSEHELP   = NO
+ECLIPSE_DOC_ID         = org.doxygen.Project
 DISABLE_INDEX          = NO
+GENERATE_TREEVIEW      = NO
 ENUM_VALUES_PER_LINE   = 1
-GENERATE_TREEVIEW      = NONE
-USE_INLINE_TREES       = NO
 TREEVIEW_WIDTH         = 250
+EXT_LINKS_IN_WINDOW    = NO
 FORMULA_FONTSIZE       = 10
+FORMULA_TRANSPARENT    = YES
+USE_MATHJAX            = NO
+MATHJAX_FORMAT         = HTML-CSS
+MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_EXTENSIONS     =
 SEARCHENGINE           = NO
+SERVER_BASED_SEARCH    = NO
+EXTERNAL_SEARCH        = NO
+SEARCHENGINE_URL       =
+SEARCHDATA_FILE        = searchdata.xml
+EXTRA_SEARCH_MAPPINGS  =
 #---------------------------------------------------------------------------
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
@@ -187,11 +227,13 @@ COMPACT_LATEX          = NO
 PAPER_TYPE             = a4wide
 EXTRA_PACKAGES         =
 LATEX_HEADER           =
+LATEX_FOOTER           =
 PDF_HYPERLINKS         = YES
 USE_PDFLATEX           = YES
 LATEX_BATCHMODE        = NO
 LATEX_HIDE_INDICES     = NO
 LATEX_SOURCE_CODE      = NO
+LATEX_BIB_STYLE        = plain
 #---------------------------------------------------------------------------
 # configuration options related to the RTF output
 #---------------------------------------------------------------------------
@@ -253,6 +295,8 @@ PREDEFINED             = __cplusplus \
                          GLIBMM_HAVE_WIDE_STREAM \
                          GLIBMM_PROPERTIES_ENABLED \
                          GLIBMM_VFUNCS_ENABLED
+@HOST_WINDOWS_NATIVE_FALSE@PREDEFINED += G_OS_UNIX
+@HOST_WINDOWS_NATIVE_TRUE@PREDEFINED += G_OS_WIN32
 EXPAND_AS_DEFINED      = GLIBMM_MAJOR_VERSION \
                          GLIBMM_MINOR_VERSION \
                          GLIBMM_MICRO_VERSION \
@@ -275,6 +319,7 @@ CLASS_DIAGRAMS         = YES
 MSCGEN_PATH            =
 HIDE_UNDOC_RELATIONS   = NO
 HAVE_DOT               = YES
+DOT_NUM_THREADS        = 0
 DOT_FONTNAME           = Sans
 DOT_FONTSIZE           = 10
 DOT_FONTPATH           =
@@ -282,6 +327,7 @@ CLASS_GRAPH            = YES
 COLLABORATION_GRAPH    = NO
 GROUP_GRAPHS           = NO
 UML_LOOK               = NO
+UML_LIMIT_NUM_FIELDS   = 10
 TEMPLATE_RELATIONS     = NO
 INCLUDE_GRAPH          = NO
 INCLUDED_BY_GRAPH      = NO
@@ -290,8 +336,10 @@ CALLER_GRAPH           = NO
 GRAPHICAL_HIERARCHY    = YES
 DIRECTORY_GRAPH        = NO
 DOT_IMAGE_FORMAT       = png
+INTERACTIVE_SVG        = NO
 DOT_PATH               =
 DOTFILE_DIRS           =
+MSCFILE_DIRS           =
 DOT_GRAPH_MAX_NODES    = 50
 MAX_DOT_GRAPH_DEPTH    = 0
 DOT_TRANSPARENT        = NO
index 6cfa904..ad7cfeb 100644 (file)
@@ -9,7 +9,7 @@
 namespace
 {
 
-class MessageQueue : public sigc::trackable
+class MessageQueue
 {
 public:
   MessageQueue();
index a98f33a..777d9d6 100644 (file)
 
 #include <giomm/action.h>
 #include <giomm/actiongroup.h>
+#include <giomm/actionmap.h>
 #include <giomm/appinfo.h>
+#include <giomm/applaunchcontext.h>
 #include <giomm/application.h>
 #include <giomm/applicationcommandline.h>
+#include <giomm/asyncinitable.h>
 #include <giomm/asyncresult.h>
 #include <giomm/bufferedinputstream.h>
 #include <giomm/bufferedoutputstream.h>
 #include <giomm/cancellable.h>
+#include <giomm/charsetconverter.h>
 #include <giomm/contenttype.h>
+#include <giomm/converter.h>
+#include <giomm/converterinputstream.h>
+#include <giomm/converteroutputstream.h>
+#include <giomm/credentials.h>
 #include <giomm/datainputstream.h>
 #include <giomm/dataoutputstream.h>
+#include <giomm/dbusactiongroup.h>
 #include <giomm/dbusaddress.h>
 #include <giomm/dbusauthobserver.h>
 #include <giomm/dbusconnection.h>
 #include <giomm/dbuserror.h>
 #include <giomm/dbuserrorutils.h>
+#include <giomm/dbusinterface.h>
+#include <giomm/dbusinterfacevtable.h>
 #include <giomm/dbusintrospection.h>
 #include <giomm/dbusmenumodel.h>
 #include <giomm/dbusmessage.h>
 #include <giomm/dbusmethodinvocation.h>
+#include <giomm/dbusobject.h>
 #include <giomm/dbusownname.h>
 #include <giomm/dbusproxy.h>
 #include <giomm/dbusserver.h>
+#include <giomm/dbussubtreevtable.h>
 #include <giomm/dbusutils.h>
 #include <giomm/dbuswatchname.h>
 #ifndef G_OS_WIN32
 # include <giomm/desktopappinfo.h>
 #endif
 #include <giomm/drive.h>
-#include <giomm/emblemedicon.h>
 #include <giomm/emblem.h>
+#include <giomm/emblemedicon.h>
 #include <giomm/enums.h>
 #include <giomm/error.h>
+#include <giomm/file.h>
 #include <giomm/fileattributeinfo.h>
 #include <giomm/fileattributeinfolist.h>
 #include <giomm/fileenumerator.h>
-#include <giomm/file.h>
 #include <giomm/fileicon.h>
 #include <giomm/fileinfo.h>
 #include <giomm/fileinputstream.h>
 #include <giomm/inputstream.h>
 #include <giomm/iostream.h>
 #include <giomm/loadableicon.h>
+#include <giomm/memoryinputstream.h>
+#include <giomm/memoryoutputstream.h>
 #include <giomm/menu.h>
+#include <giomm/menuattributeiter.h>
 #include <giomm/menuitem.h>
+#include <giomm/menulinkiter.h>
 #include <giomm/menumodel.h>
-#include <giomm/memoryinputstream.h>
-#include <giomm/memoryoutputstream.h>
 #include <giomm/mount.h>
 #include <giomm/mountoperation.h>
 #include <giomm/networkaddress.h>
 #include <giomm/networkservice.h>
 #include <giomm/outputstream.h>
+#include <giomm/pollableinputstream.h>
+#include <giomm/pollableoutputstream.h>
 #include <giomm/proxy.h>
+#include <giomm/proxyaddress.h>
 #include <giomm/proxyresolver.h>
+#include <giomm/remoteactiongroup.h>
 #include <giomm/resolver.h>
+#include <giomm/resource.h>
 #include <giomm/seekable.h>
 #include <giomm/settings.h>
 #include <giomm/simpleaction.h>
 #include <giomm/socketconnectable.h>
 #include <giomm/socketconnection.h>
 #include <giomm/socketcontrolmessage.h>
+#include <giomm/socketlistener.h>
+#include <giomm/socketservice.h>
 #include <giomm/srvtarget.h>
 #include <giomm/tcpconnection.h>
 #include <giomm/themedicon.h>
+#include <giomm/threadedsocketservice.h>
+#include <giomm/tlscertificate.h>
+#include <giomm/tlsclientconnection.h>
+#include <giomm/tlsconnection.h>
+#include <giomm/tlsdatabase.h>
+#include <giomm/tlsfiledatabase.h>
+#include <giomm/tlsinteraction.h>
+#include <giomm/tlspassword.h>
+#include <giomm/tlsserverconnection.h>
 #ifndef G_OS_WIN32
 # include <giomm/unixconnection.h>
 # include <giomm/unixcredentialsmessage.h>
 #endif
 #include <giomm/volume.h>
 #include <giomm/volumemonitor.h>
+#include <giomm/zlibcompressor.h>
+#include <giomm/zlibdecompressor.h>
 
 #endif /* #ifndef _GIOMM_H */
index 6c3806b..9168899 100644 (file)
@@ -56,7 +56,7 @@ Glib::RefPtr<Gio::Icon> content_type_get_icon(const Glib::ustring& type)
   return retvalue;
 }
 
-Glib::RefPtr<Gio::Icon> content_type_get_symbloic_icon(const Glib::ustring& type)
+Glib::RefPtr<Gio::Icon> content_type_get_symbolic_icon(const Glib::ustring& type)
 {
   Glib::RefPtr<Icon> retvalue = Glib::wrap(g_content_type_get_symbolic_icon(type.c_str()));
   if(retvalue)
index e6ce3cb..af27f24 100644 (file)
@@ -130,7 +130,7 @@ Glib::ustring content_type_from_mime_type(const Glib::ustring& mime_type);
  * given data.
  */
 Glib::ustring content_type_guess(const std::string& filename,
-                                 const guchar* data, gsize data_size, 
+                                 const guchar* data, gsize data_size,
                                  bool& result_uncertain);
 
 /**
@@ -144,7 +144,7 @@ Glib::ustring content_type_guess(const std::string& filename,
  * given data.
  */
 Glib::ustring content_type_guess(const std::string& filename,
-                                 const std::string& data, 
+                                 const std::string& data,
                                  bool& result_uncertain);
 
 /** Tries to guess the type of the tree with root @a root, by
@@ -152,7 +152,7 @@ Glib::ustring content_type_guess(const std::string& filename,
  * of content types, with the best guess coming first.
  *
  * The types returned all have the form x-content/foo, e.g.
- * x-content/audio-cdda (for audio CDs) or x-content/image-dcf 
+ * x-content/audio-cdda (for audio CDs) or x-content/image-dcf
  * (for a camera memory card). See the <ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">shared-mime-info</ulink>
  * specification for more on x-content types.
  *
index c3e7e12..df20dba 100644 (file)
@@ -1,5 +1,5 @@
 /* init.cc
- * 
+ *
  * Copyright (C) 2007 The gtkmm team
  *
  * This library is free software; you can redistribute it and/or
index 08fde96..c880404 100644 (file)
@@ -5,7 +5,7 @@
 #include "wrap_init.h"
 
 /* init.h
- * 
+ *
  * Copyright (C) 2007 The gtkmm development team
  *
  * This library is free software; you can redistribute it and/or
index 2c0ac01..c86ee49 100644 (file)
@@ -3,7 +3,7 @@
 #define _GIOMM_WRAP_INIT_H
 
 /* wrap_init.h
- * 
+ *
  * Copyright (C) 2007 The gtkmm development team
  *
  * This library is free software; you can redistribute it and/or
index baa9b22..c14fa84 100644 (file)
@@ -77,8 +77,71 @@ public:
   _WRAP_METHOD(Glib::ustring get_name() const, g_action_get_name)
   _WRAP_METHOD(Glib::VariantType get_parameter_type() const, g_action_get_parameter_type)
   _WRAP_METHOD(Glib::VariantType get_state_type() const, g_action_get_state_type)
+
+  //TODO: Change the return type of get_state_hint() when we can break ABI.
+  // See https://bugzilla.gnome.org/show_bug.cgi?id=690134
+  /** Requests a hint about the valid range of values for the state of
+   *  @a action.
+   *
+   * @note
+   * This method is useless in its present form. It should return Glib::VariantBase,
+   * but it returns @c void. This bug cannot be fixed until the ABI of glibmm can be broken.
+   * Meanwhile you can use the C function in glib like so:
+   * @code
+   * Glib::VariantBase state_hint = Glib::wrap(g_action_get_state_hint(myAction.gobj()));
+   * @endcode
+   * If myAction is a const object:
+   * @code
+   * Glib::VariantBase state_hint = Glib::wrap(g_action_get_state_hint(const_cast<GAction*>(myAction.gobj())));
+   * @endcode
+   *
+   * If <tt>0</tt> is returned it either means that the action is not stateful
+   * or that there is no hint about the valid range of values for the
+   * state of the action.
+   * 
+   * If a Variant array is returned then each item in the array is a
+   * possible value for the state.  If a Variant pair (ie: two-tuple) is
+   * returned then the tuple specifies the inclusive lower and upper bound
+   * of valid values for the state.
+   * 
+   * In any case, the information is merely a hint.  It may be possible to
+   * have a state value outside of the hinted range and setting a value
+   * within the range may fail.
+   * 
+   * @newin{2,28}
+   * @return The state range hint.
+   */
   _WRAP_METHOD(void get_state_hint() const, g_action_get_state_hint)
+
   _WRAP_METHOD(bool get_enabled() const, g_action_get_enabled)
+
+  //TODO: Change the return type of get_state() when we can break ABI.
+  // See https://bugzilla.gnome.org/show_bug.cgi?id=690134
+  /** Queries the current state of @a action.
+   *
+   * @note
+   * This method is useless in its present form. It should return Glib::VariantBase,
+   * but it returns @c void. This bug cannot be fixed until the ABI of glibmm can be broken.
+   * Meanwhile you can use property_state() like so:
+   * @code
+   * Glib::VariantBase state = myAction.property_state();
+   * @endcode
+   * You can also use the C function in glib like so:
+   * @code
+   * Glib::VariantBase state = Glib::wrap(g_action_get_state(myAction.gobj()));
+   * @endcode
+   * If myAction is a const object:
+   * @code
+   * Glib::VariantBase state = Glib::wrap(g_action_get_state(const_cast<GAction*>(myAction.gobj())));
+   * @endcode
+   *
+   * If the action is not stateful then <tt>0</tt> will be returned.  If the
+   * action is stateful then the type of the return value is the type
+   * given by get_state_type().
+   * 
+   * @newin{2,28}
+   * @return The current state of the action.
+   */
   _WRAP_METHOD(void get_state() const, g_action_get_state)
 
   _WRAP_METHOD(void change_state(const Glib::VariantBase& value), g_action_change_state)
index fc8d018..8fab8a3 100644 (file)
@@ -44,22 +44,16 @@ AppInfo::create_from_commandline(const std::string& commandline,
   return Glib::wrap(capp_info);
 }
 
-bool AppInfo::launch_default_for_uri(const std::string& uri)
+Glib::RefPtr<AppInfo> AppInfo::create_duplicate() const
 {
-  GError* gerror = 0;
-  const bool retvalue = g_app_info_launch_default_for_uri(uri.c_str(), 0, &(gerror));
-
-  if(gerror)
-    ::Glib::Error::throw_exception(gerror);
-
-  return retvalue;
+   return Glib::wrap(g_app_info_dup(const_cast<GAppInfo*>(gobj())));
 }
 
 bool AppInfo::launch(const Glib::RefPtr<Gio::File>& file, const Glib::RefPtr<AppLaunchContext>& launch_context)
 {
   std::vector< Glib::RefPtr<Gio::File> > vec;
   vec.push_back(file);
-  
+
   GError* gerror = 0;
   bool retvalue = g_app_info_launch(gobj(), Glib::ListHandler<Glib::RefPtr<Gio::File> >::vector_to_list(vec).data (), Glib::unwrap(launch_context), &(gerror));
   if(gerror)
@@ -72,7 +66,7 @@ bool AppInfo::launch(const Glib::RefPtr<Gio::File>& file)
 {
   std::vector< Glib::RefPtr<Gio::File> > vec;
   vec.push_back(file);
-  
+
   GError* gerror = 0;
   bool retvalue = g_app_info_launch(gobj(), Glib::ListHandler<Glib::RefPtr<Gio::File> >::vector_to_list(vec).data (), 0, &(gerror));
   if(gerror)
@@ -85,7 +79,7 @@ bool AppInfo::launch_uri(const std::string& uri, const Glib::RefPtr<AppLaunchCon
 {
   std::vector<std::string> vec;
   vec.push_back(uri);
-  
+
   GError* gerror = 0;
   bool retvalue = g_app_info_launch_uris(gobj(), Glib::ListHandler<std::string>::vector_to_list(vec).data (), Glib::unwrap(launch_context), &(gerror));
   if(gerror)
@@ -98,7 +92,7 @@ bool AppInfo::launch_uri(const std::string& uri)
 {
   std::vector<std::string> vec;
   vec.push_back(uri);
-  
+
   GError* gerror = 0;
   bool retvalue = g_app_info_launch_uris(gobj(), Glib::ListHandler<std::string>::vector_to_list(vec).data (), 0, &(gerror));
   if(gerror)
index ecbf598..77c8093 100644 (file)
@@ -45,7 +45,7 @@ _WRAP_ENUM(AppInfoCreateFlags, GAppInfoCreateFlags, NO_GTYPE)
 
 class File;
 
-/** Application information, to describe applications installed on the system, 
+/** Application information, to describe applications installed on the system,
  * and launch them.
  * See also AppLaunchContext.
  *
@@ -60,10 +60,18 @@ public:
                                                        const std::string& application_name,
                                                        AppInfoCreateFlags flags);
 
-  //_IGNORE(g_app_info_dup)
-  _IGNORE(g_app_info_equal)
+  /**  Creates a duplicate of this AppInfo.
+   * @return A duplicate of this AppInfo.
+   * @newin{2,36}
+   */
+  Glib::RefPtr<AppInfo> create_duplicate() const;
+  _IGNORE(g_app_info_dup)
 
   // Note that the implementation of equal() is virtual via equal_vfunc().
+  /** Checks if two AppInfo<!-- -->s are equal.
+   * @param other The other AppInfo.
+   * @return <tt>true</tt> if @a *this is equal to @a other, <tt>false</tt> otherwise.
+   */
   _WRAP_METHOD(bool equal(const Glib::RefPtr<AppInfo>& other) const, g_app_info_equal)
 
   _WRAP_METHOD(std::string get_id() const, g_app_info_get_id)
@@ -84,60 +92,60 @@ public:
    * as an argument, using the optional @a launch_context to get information
    * about the details of the launcher (like what screen it is on).
    * On error, an exception will be thrown accordingly.
-   * 
+   *
    * Note that even if the launch is successful the application launched
    * can fail to start if it runs into problems during startup. There is
    * no way to detect this.
-   * 
+   *
    * Some URIs can be changed when passed through a GFile (for instance
    * unsupported uris with strange formats like mailto:), so if you have
    * a textual uri you want to pass in as argument, consider using
    * launch_uris() instead.
-   * 
-   * On UNIX, this function sets the <envar>GIO_LAUNCHED_DESKTOP_FILE</envar>
+   *
+   * On UNIX, this function sets the @c GIO_LAUNCHED_DESKTOP_FILE
    * environment variable with the path of the launched desktop file and
-   * <envar>GIO_LAUNCHED_DESKTOP_FILE_PID</envar> to the process
+   * @c GIO_LAUNCHED_DESKTOP_FILE_PID to the process
    * id of the launched process. This can be used to ignore
-   * <envar>GIO_LAUNCHED_DESKTOP_FILE</envar>, should it be inherited
-   * by further processes. The <envar>DISPLAY</envar> and
-   * <envar>DESKTOP_STARTUP_ID</envar> environment variables are also
+   * @c GIO_LAUNCHED_DESKTOP_FILE, should it be inherited
+   * by further processes. The @c DISPLAY and
+   * @c DESKTOP_STARTUP_ID environment variables are also
    * set, based on information provided in @a launch_context.
-   * @param files A List of File objects.
+   * @param file A File object.
    * @param launch_context An AppLaunchContext.
    * @return <tt>true</tt> on successful launch, <tt>false</tt> otherwise.
    *
    * @newin{3,2}
    */
   bool launch(const Glib::RefPtr<Gio::File>& file, const Glib::RefPtr<AppLaunchContext>& launch_context);
-  
+
   /** Launches the application. This passes the @a file to the launched application
-   * as an arguments.
+   * as an argument.
    * On error, an exception will be thrown accordingly.
-   * 
+   *
    * Note that even if the launch is successful the application launched
    * can fail to start if it runs into problems during startup. There is
    * no way to detect this.
-   * 
+   *
    * Some URIs can be changed when passed through a GFile (for instance
    * unsupported uris with strange formats like mailto:), so if you have
    * a textual uri you want to pass in as argument, consider using
    * launch_uris() instead.
-   * 
-   * On UNIX, this function sets the <envar>GIO_LAUNCHED_DESKTOP_FILE</envar>
+   *
+   * On UNIX, this function sets the @c GIO_LAUNCHED_DESKTOP_FILE
    * environment variable with the path of the launched desktop file and
-   * <envar>GIO_LAUNCHED_DESKTOP_FILE_PID</envar> to the process
+   * @c GIO_LAUNCHED_DESKTOP_FILE_PID to the process
    * id of the launched process. This can be used to ignore
-   * <envar>GIO_LAUNCHED_DESKTOP_FILE</envar>, should it be inherited
-   * by further processes. The <envar>DISPLAY</envar> and
-   * <envar>DESKTOP_STARTUP_ID</envar> environment variables are also
+   * @c GIO_LAUNCHED_DESKTOP_FILE, should it be inherited
+   * by further processes. The @c DISPLAY and
+   * @c DESKTOP_STARTUP_ID environment variables are also
    * set, based on information provided in @a launch_context.
-   * @param files A File object.
+   * @param file A File object.
    * @return <tt>true</tt> on successful launch, <tt>false</tt> otherwise.
    *
    * @newin{3,2}
    */
   bool launch(const Glib::RefPtr<Gio::File>& file);
-  
+
   _WRAP_METHOD(bool launch(const std::vector< Glib::RefPtr<Gio::File> >& files,
                            const Glib::RefPtr<AppLaunchContext>& launch_context{?}),
                g_app_info_launch,
@@ -157,12 +165,12 @@ public:
                                 const Glib::RefPtr<AppLaunchContext>& launch_context{?}),
                g_app_info_launch_uris,
                errthrow)
-               
+
   /** Launches the application. This passes the @a uri to the launched application
    * as an arguments, using the optional @a launch_context to get information
    * about the details of the launcher (like what screen it is on).
    * On error, an exception will be thrown accordingly.
-   * 
+   *
    * Note that even if the launch is successful the application launched
    * can fail to start if it runs into problems during startup. There is
    * no way to detect this.
@@ -179,7 +187,7 @@ public:
    * @newin{3,2}
    */
   bool launch_uri(const std::string& uris);
-  
+
   _WRAP_METHOD(bool should_show() const, g_app_info_should_show)
   // FIXME: use better terminology than delete/do_delete
   _WRAP_METHOD(bool can_delete() const, g_app_info_can_delete)
@@ -211,9 +219,7 @@ public:
   _WRAP_METHOD(static Glib::RefPtr<AppInfo> get_default_for_type(const std::string& content_type, bool must_support_uris = true), g_app_info_get_default_for_type)
   _WRAP_METHOD(static Glib::RefPtr<AppInfo> get_default_for_uri_scheme(const std::string& uri_scheme), g_app_info_get_default_for_uri_scheme)
   _WRAP_METHOD(static void reset_type_associations(const std::string& content_type), g_app_info_reset_type_associations)
-  _WRAP_METHOD(static bool launch_default_for_uri(const std::string& uri, const Glib::RefPtr<AppLaunchContext>& context), g_app_info_launch_default_for_uri, errthrow)
-  // same as above but without optional AppLaunchContext
-  static bool launch_default_for_uri(const std::string& uri);
+  _WRAP_METHOD(static bool launch_default_for_uri(const std::string& uri, const Glib::RefPtr<AppLaunchContext>& launch_context{?}), g_app_info_launch_default_for_uri, errthrow)
 
 protected:
   //_WRAP_VFUNC(Glib::RefPtr<AppInfo> dup(), "dup")
@@ -238,4 +244,3 @@ protected:
 };
 
 } // namespace Gio
-
index f11e454..3dee00d 100644 (file)
@@ -25,7 +25,7 @@
 namespace
 {
 
-static void Application_signal_open_callback(GApplication* self, GFile** files, 
+static void Application_signal_open_callback(GApplication* self, GFile** files,
   gint n_files, const gchar* hint, void* data)
 {
   typedef sigc::slot< void, const Gio::Application::type_vec_files&, const Glib::ustring& > SlotType;
@@ -35,7 +35,7 @@ static void Application_signal_open_callback(GApplication* self, GFile** files,
   {
     vec_files[i] = Glib::wrap(files[i], true);
   }
-  
+
   const Glib::ustring hint_str = (hint ? hint : Glib::ustring());
 
   // Do not try to call a signal on a disassociated wrapper.
@@ -68,7 +68,7 @@ static void Application_signal_open_notify_callback(GApplication* self, GFile**
   {
     vec_files[i] = Glib::wrap(files[i], true);
   }
-  
+
   const Glib::ustring hint_str = (hint ? hint : Glib::ustring());
 
   // Do not try to call a signal on a disassociated wrapper.
@@ -118,7 +118,7 @@ Application::Application(const Glib::ustring& application_id, ApplicationFlags f
   Glib::ObjectBase(0),
   Glib::Object(Glib::ConstructParams(custom_class_init(), "application_id", (application_id.empty() ? 0 : application_id.c_str()), "flags", ((GApplicationFlags)(flags)), static_cast<char*>(0)))
 {
-  
+
 }
 
 //static
@@ -127,7 +127,7 @@ void Application::unset_default()
   g_application_set_default(0);
 }
 
-void Application_Class::open_callback(GApplication* self, GFile** files, 
+void Application_Class::open_callback(GApplication* self, GFile** files,
   gint n_files, const gchar *hint)
 {
   Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
@@ -151,9 +151,9 @@ void Application_Class::open_callback(GApplication* self, GFile** files,
         for (int i = 0; i < n_files; i++) {
           vec_files[i] = Glib::wrap(files[i], true);
         }
-        
+
         const Glib::ustring hint_str = (hint ? hint : Glib::ustring());
-  
+
         obj->on_open(vec_files, hint_str);
         return;
       }
@@ -163,7 +163,7 @@ void Application_Class::open_callback(GApplication* self, GFile** files,
       }
     }
   }
-  
+
   BaseClassType *const base = static_cast<BaseClassType*>(
     g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The original underlying C class).
     );
@@ -185,7 +185,7 @@ void Gio::Application::on_open(const Application::type_vec_files& files, const G
   );
 
   if(base && base->open) {
-    (*base->open)(gobj(), 
+    (*base->open)(gobj(),
       Glib::ArrayHandler<type_vec_files::value_type>::vector_to_array(files).data(),
       files.size(),
       hint.c_str());
@@ -194,7 +194,7 @@ void Gio::Application::on_open(const Application::type_vec_files& files, const G
 
 void Application::open(const type_vec_files& files, const Glib::ustring& hint)
 {
-  g_application_open(gobj(), 
+  g_application_open(gobj(),
     Glib::ArrayHandler<type_vec_files::value_type>::vector_to_array(files).data(),
     files.size(),
     hint.c_str());
index 093d7b7..097dc38 100644 (file)
@@ -94,7 +94,7 @@ protected:
   /** Constructs an application instance.
    * If no application ID is given then some features (most notably application uniqueness) will be disabled.
    *
-   * @aparam application_id The application ID.
+   * @param application_id The application ID.
    * @param flags The application flags.
    */
   explicit Application(const Glib::ustring& application_id = Glib::ustring(), ApplicationFlags flags = APPLICATION_FLAGS_NONE);
@@ -104,7 +104,7 @@ public:
   /** Creates an application instance.
    * If no application ID is given then some features (most notably application uniqueness) will be disabled.
    *
-   * @aparam application_id The application ID.
+   * @param application_id The application ID.
    * @param flags The application flags.
    */
   _WRAP_CREATE(const Glib::ustring& application_id = Glib::ustring(), ApplicationFlags flags = APPLICATION_FLAGS_NONE)
@@ -159,7 +159,7 @@ public:
    */
   void open(const type_vec_files& files, const Glib::ustring& hint = Glib::ustring());
   _IGNORE(g_application_open)
-  
+
   /* Opens the given file.
    *
    * In essence, this results in the open signal being emitted
@@ -202,7 +202,7 @@ public:
 
   _WRAP_SIGNAL(void startup(), "startup")
   _WRAP_SIGNAL(void activate(), "activate")
-  
+
   //We wrap the open signal without _WRAP_SIGNAL(), because we need to change its parameters.
   //See bug https://bugzilla.gnome.org/show_bug.cgi?id=637457
   Glib::SignalProxy2< void,  const type_vec_files&, const Glib::ustring& > signal_open();
@@ -225,7 +225,7 @@ protected:
 #m4 _CONVERSION(`char**&', `gchar***',`&($3)')
 #m4 _CONVERSION(`gchar***', `char**&',`*($3)')
   _WRAP_VFUNC(bool local_command_line(char**& arguments, int& exit_status), local_command_line)
-  
+
 #m4 _CONVERSION(`GVariant*',`const Glib::VariantBase&',`Glib::wrap($3,true)')
 
   _WRAP_VFUNC(void before_emit(const Glib::VariantBase& platform_data), "before_emit")
@@ -240,7 +240,7 @@ protected:
 
 private:
   /** This is just a way to call Glib::init() (which calls g_type_init()) before
-   * calling application_class_.init(), so that 
+   * calling application_class_.init(), so that
    * g_application_get_type() will always succeed.
    * See https://bugzilla.gnome.org/show_bug.cgi?id=639925
    */
index 8cc2b06..1e16f2d 100644 (file)
@@ -14,7 +14,7 @@
  * License along with this library; if not, write to the Free
  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
+
 #include <gio/gio.h>
 #include <glibmm/vectorutils.h>
 
@@ -23,12 +23,12 @@ namespace Gio
 
 void ApplicationCommandLine::print(const Glib::ustring& message)
 {
-  g_application_command_line_print(gobj(), "%s", message.c_str()); 
+  g_application_command_line_print(gobj(), "%s", message.c_str());
 }
 
 void ApplicationCommandLine::printerr(const Glib::ustring& message)
 {
-  g_application_command_line_printerr(gobj(), "%s", message.c_str()); 
+  g_application_command_line_printerr(gobj(), "%s", message.c_str());
 }
 
 } //namespace Gio
index 9ec31fe..c8311b1 100644 (file)
@@ -62,25 +62,25 @@ protected:
 public:
 
   _WRAP_METHOD(char** get_arguments(int& argc) const, g_application_command_line_get_arguments)
-  
+
   //We use std::string instead of ustring because the C documentation says that it may be non-UTF-8 data:
   _WRAP_METHOD(std::string get_cwd() const, g_application_command_line_get_cwd)
 
   //We use std::string instead of ustring because the C documentation says that it may be non-UTF-8 data:
 #m4 _CONVERSION(`const gchar* const*',`std::vector<std::string>',`Glib::ArrayHandler<std::string>::array_to_vector($3, Glib::OWNERSHIP_NONE)')
   _WRAP_METHOD(std::vector<std::string> get_environ() const, g_application_command_line_get_environ)
-  
+
   //We use std::string instead of ustring because the C documentation says that it may be non-UTF-8 data:
   _WRAP_METHOD(std::string getenv(const Glib::ustring& name) const, g_application_command_line_getenv)
-  
+
   _WRAP_METHOD(bool is_remote() const, g_application_command_line_get_is_remote)
 
 #m4 _CONVERSION(`GVariant*',`Glib::Variant< std::map<Glib::ustring, Glib::VariantBase> >',`$2($3)')
   _WRAP_METHOD(Glib::Variant< std::map<Glib::ustring, Glib::VariantBase> > get_platform_data() const, g_application_command_line_get_platform_data)
+
   _WRAP_METHOD(void set_exit_status(int exit_status), g_application_command_line_set_exit_status)
   _WRAP_METHOD(int get_exit_status() const, g_application_command_line_get_exit_status)
-  
+
   /** Formats a message and prints it using the stdout print handler in the invoking process.
    * If this is a local invocation then this is exactly equivalent to g_print().
    *  If this is remote then this is equivalent to calling g_print() in the invoking process.
@@ -89,7 +89,7 @@ public:
    */
   void print(const Glib::ustring& message);
   _IGNORE(g_application_command_line_print)
-  
+
   /** Formats a message and prints it using the stderr print handler in the invoking process.
    * If this is a local invocation then this is exactly equivalent to g_printerr().
    *  If this is remote then this is equivalent to calling g_printerr() in the invoking process.
index 882f780..6a3c855 100644 (file)
@@ -87,7 +87,7 @@ void AsyncInitable_Class::init_async_vfunc_callback(GAsyncInitable* self,
       #endif //GLIBMM_EXCEPTIONS_ENABLED
     }
   }
-  
+
   BaseClassType *const base = static_cast<BaseClassType*>(
       g_type_interface_peek_parent( // Get the parent interface of the interface (The original underlying C interface).
 g_type_interface_peek(G_OBJECT_GET_CLASS(self), CppObjectType::get_type()) // Get the interface.
@@ -144,7 +144,7 @@ gboolean AsyncInitable_Class::init_finish_vfunc_callback(GAsyncInitable* self,
       #endif //GLIBMM_EXCEPTIONS_ENABLED
     }
   }
-  
+
   BaseClassType *const base = static_cast<BaseClassType*>(
       g_type_interface_peek_parent( // Get the parent interface of the interface (The original underlying C interface).
 g_type_interface_peek(G_OBJECT_GET_CLASS(self), CppObjectType::get_type()) // Get the interface.
@@ -158,7 +158,7 @@ g_type_interface_peek(G_OBJECT_GET_CLASS(self), CppObjectType::get_type()) // Ge
   typedef gboolean RType;
   return RType();
 }
-bool Gio::AsyncInitable::init_finish_vfunc(const Glib::RefPtr<AsyncResult>& res) 
+bool Gio::AsyncInitable::init_finish_vfunc(const Glib::RefPtr<AsyncResult>& res)
 {
   BaseClassType *const base = static_cast<BaseClassType*>(
       g_type_interface_peek_parent( // Get the parent interface of the interface (The original underlying C interface).
index d12fddf..190fc5e 100644 (file)
@@ -46,7 +46,7 @@ class Cancellable;
  * C applications you generally just call g_async_initable_new_async()
  * directly, or indirectly via a foo_thing_new_async() wrapper. This will call
  * g_async_initable_init_async() under the cover, calling back with NULL and a
- * set GError on failure. 
+ * set GError on failure.
  */
 class AsyncInitable : public Glib::Interface
 {
@@ -98,7 +98,7 @@ protected:
   void init_async(const SlotAsyncReady& slot,
     int io_priority = Glib::PRIORITY_DEFAULT);
 
-  _WRAP_METHOD(bool init_finish(const Glib::RefPtr<AsyncResult>& result), g_async_initable_init_finish, errthrow)
+  _WRAP_METHOD(bool init_finish(const Glib::RefPtr<AsyncResult>& res), g_async_initable_init_finish, errthrow)
 
   _WRAP_METHOD(Glib::RefPtr<Glib::Object> create_finish(const Glib::RefPtr<AsyncResult>& res), g_async_initable_new_finish, errthrow)
 
@@ -109,7 +109,7 @@ protected:
   /** @throw Glib::Errror.
    */
     virtual bool init_finish_vfunc(const Glib::RefPtr<AsyncResult>& res);
-  
+
 protected:
 #m4begin
   _PUSH(SECTION_PCC_CLASS_INIT_VFUNCS)
index fa1a809..133d185 100644 (file)
@@ -45,57 +45,57 @@ class AsyncResult;
 typedef sigc::slot<void, Glib::RefPtr<AsyncResult>& > SlotAsyncReady;
 
 /** Provides a base class for implementing asynchronous function results.
- * Asynchronous operations are broken up into two separate operations which are chained together by a SlotAsyncReady. 
- * To begin an asynchronous operation, provide a SlotAsyncReady to the asynchronous function. This callback will be triggered 
- * when the operation has completed, and will be passed an AsyncResult instance filled with the details of the operation's success or 
- * failure, the object the asynchronous function was started for and any error codes returned. The asynchronous callback function is then 
+ * Asynchronous operations are broken up into two separate operations which are chained together by a SlotAsyncReady.
+ * To begin an asynchronous operation, provide a SlotAsyncReady to the asynchronous function. This callback will be triggered
+ * when the operation has completed, and will be passed an AsyncResult instance filled with the details of the operation's success or
+ * failure, the object the asynchronous function was started for and any error codes returned. The asynchronous callback function is then
  * expected to call the corresponding "_finish()" function with the object the function was called for, and the AsyncResult instance.
  *
- * The purpose of the "_finish()" function is to take the generic result of type AsyncResult and return the specific result that the operation 
- * in question yields (e.g. a FileEnumerator for an "enumerate children" operation). If the result or error status of the operation is not needed, 
- * there is no need to call the "_finish()" function and GIO will take care of cleaning up the result and error information after the 
+ * The purpose of the "_finish()" function is to take the generic result of type AsyncResult and return the specific result that the operation
+ * in question yields (e.g. a FileEnumerator for an "enumerate children" operation). If the result or error status of the operation is not needed,
+ * there is no need to call the "_finish()" function and GIO will take care of cleaning up the result and error information after the
  * SlotAsyncReady returns. You may also store the AsyncResult and call "_finish()" later.
  *
  * Example of a typical asynchronous operation flow:
  * @code
- * void _theoretical_frobnitz_async(const Glib::RefPtr<Theoretical>& t, 
+ * void _theoretical_frobnitz_async(const Glib::RefPtr<Theoretical>& t,
  *                                  const SlotAsyncReady& slot);
- * 
+ *
  * gboolean _theoretical_frobnitz_finish(const Glib::RefPtr<Theoretical>& t,
  *                                       const Glib::RefPtr<AsyncResult>& result);
- * 
- * static void 
+ *
+ * static void
  * on_frobnitz_result(Glib::RefPtr<AsyncResult>& result)
  * {
- * 
+ *
  *   Glib::RefPtr<Glib::Object> source_object = result->get_source_object();
  *   bool success = _theoretical_frobnitz_finish(source_object, res);
- * 
+ *
  *   if (success)
  *     std::cout << "Hurray" << std::endl;
- *   else 
+ *   else
  *     std::cout << "Uh oh!" << std::endl;
- * 
+ *
  *   ...
  * }
- * 
+ *
  * int main (int argc, void *argv[])
  * {
  *    ...
- * 
- *    _theoretical_frobnitz_async (theoretical_data, 
+ *
+ *    _theoretical_frobnitz_async (theoretical_data,
  *                                 sigc::ptr_fun(&on_frobnitz_result) );
- * 
+ *
  *    ...
  * }
  * @endcode
  *
  * The async function could also take an optional Glib::Cancellable object, allowing the calling function to cancel the asynchronous operation.
  *
- * The callback for an asynchronous operation is called only once, and is always called, even in the case of a cancelled operation. 
+ * The callback for an asynchronous operation is called only once, and is always called, even in the case of a cancelled operation.
  * On cancellation the result is a ERROR_CANCELLED error.
  *
- * Some ascynchronous operations are implemented using synchronous calls. These are run in a separate GThread, but otherwise they are sent 
+ * Some ascynchronous operations are implemented using synchronous calls. These are run in a separate GThread, but otherwise they are sent
  * to the Main Event Loop and processed in an idle function. So, if you truly need asynchronous operations, make sure to initialize GThread.
  *
  * @newin{2,16}
index 340087e..d940f43 100644 (file)
@@ -27,15 +27,15 @@ namespace Gio
 {
 
 /** @defgroup Streams Stream Classes
- * 
+ *
  */
 
 /** The buffered input stream implements FilterInputStream and provides for buffered reads.
- * By default, BufferedInputStream's buffer size is set at 4 kilobytes, but you can specify 
+ * By default, BufferedInputStream's buffer size is set at 4 kilobytes, but you can specify
  * this to the constructor.
- * 
- * To get the size of a buffer within a buffered input stream, use get_buffer_size(). 
- * To change the size of a buffered input stream's buffer, use set_buffer_size(). 
+ *
+ * To get the size of a buffer within a buffered input stream, use get_buffer_size().
+ * To change the size of a buffered input stream's buffer, use set_buffer_size().
  * Note that the buffer's size cannot be reduced below the size of the data within the buffer.
  *
  * @ingroup Streams
@@ -47,22 +47,22 @@ class BufferedInputStream : public Gio::FilterInputStream
   _CLASS_GOBJECT(BufferedInputStream, GBufferedInputStream, G_BUFFERED_INPUT_STREAM, Gio::FilterInputStream, GFilterInputStream)
 protected:
   _WRAP_CTOR(BufferedInputStream(const Glib::RefPtr<InputStream>& base_stream), g_buffered_input_stream_new)
-  
+
   //Note that we rename the size parameter to buffer_size because that is the actual name of the property.
   _WRAP_CTOR(BufferedInputStream(const Glib::RefPtr<InputStream>& base_stream, gsize buffer_size), g_buffered_input_stream_new_sized)
 
 public:
-  /** Creates a new InputStream from the given base_stream, with a buffer set to the default size (4 kilobytes). 
+  /** Creates a new InputStream from the given base_stream, with a buffer set to the default size (4 kilobytes).
    *
    * @param base_stream An InputStream.
    * @result an InputStream for the given base_stream.
         */
   _WRAP_CREATE(const Glib::RefPtr<InputStream>& base_stream)
-  
+
   /** Creates a new InputStream from the given base_stream, with a buffer set to size.
    *
    * @param base_stream An InputStream.
-   * @param size A size.
+   * @param buffer_size A size.
    * @result an InputStream for the given base_stream.
         */
   static Glib::RefPtr<BufferedInputStream> create_sized(const Glib::RefPtr<InputStream>& base_stream, gsize buffer_size);
index 3a1ecca..4933db9 100644 (file)
@@ -27,11 +27,11 @@ namespace Gio
 {
 
 /** The buffered output stream implements FilterOutputStream and provides for buffered writes.
- * By default, BufferedOutputStream's buffer size is set at 4 kilobytes, but you 
+ * By default, BufferedOutputStream's buffer size is set at 4 kilobytes, but you
  * can specify this to the constructor.
  *
- * To get the size of a buffer within a buffered input stream, use get_buffer_size(). 
- * To change the size of a buffered output stream's buffer, use set_buffer_size(). 
+ * To get the size of a buffer within a buffered input stream, use get_buffer_size().
+ * To change the size of a buffered output stream's buffer, use set_buffer_size().
  * Note that the buffer's size cannot be reduced below the size of the data within the buffer.
  *
  * @ingroup Streams
@@ -43,7 +43,7 @@ class BufferedOutputStream : public Gio::FilterOutputStream
   _CLASS_GOBJECT(BufferedOutputStream, GBufferedOutputStream, G_BUFFERED_OUTPUT_STREAM, Gio::FilterOutputStream, GFilterOutputStream)
 protected:
   _WRAP_CTOR(BufferedOutputStream(const Glib::RefPtr<OutputStream>& base_stream), g_buffered_output_stream_new)
-  
+
   //Note that we rename the size parameter to buffer_size because that is the actual name of the property.
   _WRAP_CTOR(BufferedOutputStream(const Glib::RefPtr<OutputStream>& base_stream, gsize buffer_size), g_buffered_output_stream_new_sized)
 
@@ -54,12 +54,12 @@ public:
    * @result an OutputStream for the given base stream.
         */
   _WRAP_CREATE(const Glib::RefPtr<OutputStream>& base_stream)
-  
-  /** Creates a new buffered output stream with a given buffer size. 
+
+  /** Creates a new buffered output stream with a given buffer size.
    *
    * @param base_stream An InputStream.
-   * @param size A size.
-   * @result an OutputStream with an internal buffer set to size. 
+   * @param buffer_size A size.
+   * @result an OutputStream with an internal buffer set to size.
         */
   static Glib::RefPtr<BufferedOutputStream> create_sized(const Glib::RefPtr<OutputStream>& base_stream, gsize buffer_size);
 
index 3c5d8ee..a266e7e 100644 (file)
@@ -41,9 +41,9 @@ void slot_cancelled_proxy(GCancellable * /*cancellable*/, gpointer data)
 } // extern "C"
 
 gulong
-Cancellable::connect(const SlotCancelledCallback& callback)
+Cancellable::connect(const SlotCancelledCallback& slot)
 {
-    SlotCancelledCallback* slot_copy = new SlotCancelledCallback(callback);
+    SlotCancelledCallback* slot_copy = new SlotCancelledCallback(slot);
     return g_cancellable_connect (gobj(),
                                   G_CALLBACK(slot_cancelled_proxy),
                                   slot_copy,
index 33df9ce..4ca5df5 100644 (file)
@@ -67,9 +67,24 @@ public:
   // TODO: is this useful in the C++ API?
   //_WRAP_METHOD(void make_pollfd(PollFD* pollfd), g_cancellable_make_pollfd)
 
-  _WRAP_METHOD_DOCS_ONLY(g_cancellable_connect)
-  gulong connect(const SlotCancelledCallback& callback);
+  /** Convenience function to connect to the Cancellable::signal_cancelled()
+   * signal. Also handles the race condition that may happen
+   * if the cancellable is cancelled right before connecting.
+   * 
+   * @a slot is called at most once, either directly at the
+   * time of the connect if @a cancellable is already cancelled,
+   * or when @a cancellable is cancelled in some thread.
+   * 
+   * See Cancellable::signal_cancelled() for details on how to use this.
+   * 
+   * @newin{2,22}
+   * @param slot The slot to connect.
+   * @return The id of the signal handler or 0 if @a cancellable has already
+   * been cancelled.
+   */
+  gulong connect(const SlotCancelledCallback& slot);
   _IGNORE(g_cancellable_connect)
+
   _WRAP_METHOD(void disconnect(gulong handler_id), g_cancellable_disconnect)
 
   _WRAP_SIGNAL(void cancelled(), cancelled)
index 331b9aa..b4808c8 100644 (file)
@@ -40,7 +40,13 @@ protected:
   _IGNORE(g_charset_converter_new)
 
 public:
-  _WRAP_METHOD_DOCS_ONLY(g_charset_converter_new)
+  /** Creates a new CharsetConverter.
+   * 
+   * @newin{2,24}
+   * @param to_charset Destination charset.
+   * @param from_charset Source charset.
+   * @return A new CharsetConverter, or <tt>0</tt> on error.
+   */
   _WRAP_CREATE(const Glib::ustring& to_charset, const Glib::ustring& from_charset)
 
   _WRAP_METHOD(void set_use_fallback(bool use_fallback), g_charset_converter_set_use_fallback)
index fbd92be..0319535 100644 (file)
@@ -38,7 +38,7 @@ _WRAP_ENUM(ConverterFlags, GConverterFlags)
  * ways. The conversion can be stateful and may fail at any place.
  *
  * Some example conversions are: character set conversion, compression,
- * decompression and regular expression replace. 
+ * decompression and regular expression replace.
  *
  * @newin{2,34}
  */
index c7b9f99..8c0e39a 100644 (file)
@@ -36,7 +36,7 @@ class InputStream;
 class ConverterInputStream : public FilterInputStream,
                              public PollableInputStream
 {
-  _CLASS_GOBJECT(ConverterInputStream, GConverterInputStream, G_CONVERTER_INPUT_STREAM, FilterInputStream, GFilterInputStream) 
+  _CLASS_GOBJECT(ConverterInputStream, GConverterInputStream, G_CONVERTER_INPUT_STREAM, FilterInputStream, GFilterInputStream)
   _IMPLEMENTS_INTERFACE(PollableInputStream)
 
 protected:
index 6fea027..eeb5d9d 100644 (file)
@@ -36,7 +36,7 @@ class OutputStream;
 class ConverterOutputStream : public FilterOutputStream,
                               public PollableOutputStream
 {
-  _CLASS_GOBJECT(ConverterOutputStream, GConverterOutputStream, G_CONVERTER_OUTPUT_STREAM, FilterOutputStream, GFilterOutputStream) 
+  _CLASS_GOBJECT(ConverterOutputStream, GConverterOutputStream, G_CONVERTER_OUTPUT_STREAM, FilterOutputStream, GFilterOutputStream)
   _IMPLEMENTS_INTERFACE(PollableOutputStream)
 
 protected:
index 965d721..6898fbf 100644 (file)
@@ -72,7 +72,7 @@ public:
    * another thread. If the operation
    * was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
-   * @param data A string to fill with the read data (without the newlines).
+   * @param line A string to fill with the read data (without the newlines).
    * @param cancellable A cancellable object.
    * @result true if the read succeeded without error.
    */
@@ -81,7 +81,7 @@ public:
 
   /** A non-cancellable version of read_line().
    *
-   * @param data A string to fill with the read data (without the newlines).
+   * @param line A string to fill with the read data (without the newlines).
    * @result true if the read succeeded without error.
    */
   bool read_line(std::string& line);
@@ -147,8 +147,8 @@ public:
    * read_upto() instead, but note that that method
    * does not consume the stop character.
    *
-   * @param stop_chars Characters to terminate the read.
    * @param data A string to fill with the read data.
+   * @param stop_chars Characters to terminate the read.
    * @result true if the read succeeded without error.
    */
   bool read_until(std::string& data, const std::string& stop_chars);
@@ -191,7 +191,7 @@ public:
    * occurrence of any of the stop characters.
    *
    * In contrast to read_until(), this method
-   * does <emphasis>not</emphasis> consume the stop character. You have
+   * does <em>not</em> consume the stop character. You have
    * to use read_byte() to get it before calling
    * read_upto() again.
    *
@@ -204,8 +204,8 @@ public:
   _IGNORE(g_data_input_stream_read_upto)
 
   /** A non-cancellable version of read_upto().
-   * @param stop_chars Characters to terminate the read.
    * @param data A string to fill with the read data.
+   * @param stop_chars Characters to terminate the read.
    * @result true if the read succeeded without error.
    */
   bool read_upto(std::string& data, const std::string& stop_chars);
@@ -216,7 +216,7 @@ public:
    * an error to have two outstanding calls to this function.
    *
    * In contrast to read_until(), this method
-   * does <emphasis>not</emphasis> consume the stop character. You have
+   * does <em>not</em> consume the stop character. You have
    * to use read_byte() to get it before calling
    * read_upto() again.
    *
@@ -231,7 +231,7 @@ public:
 
   /** Finish an asynchronous call started by read_upto_async().
    *
-   * Note that this function does <emphasis>not</emphasis> consume the
+   * Note that this function does <em>not</em> consume the
    * stop character. You have to use read_byte() to
    * get it before calling read_upto_async() again.
    *
index d552a74..ab5acd7 100644 (file)
@@ -47,7 +47,7 @@ bool is_address(const std::string& string);
  * in @a address and that key/value pairs for each transport are valid.
  *
  * @param address A supposed address.
- * @return <tt>true</t> if @a address is a valid D-Bus address that is
+ * @return <tt>true</tt> if @a address is a valid D-Bus address that is
  * supported by this library, <tt>false</tt> otherwise.
  * @throw Glib::Error.
  * @newin{2,28}
@@ -110,10 +110,10 @@ Glib::RefPtr<IOStream> get_stream_finish(const Glib::RefPtr<AsyncResult>& res);
  * asynchronous version.
  *
  * @param address A valid D-Bus address.
+ * @param cancellable A Cancellable.
  * @param out_guid A return location to store the GUID extracted from address,
  * if any.
- * @param cancellable A Cancellable.
- * @param Returns A IOStream.
+ * @return A IOStream.
  * @throw Glib::Error.
  * @newin{2,28}
  * @ingroup DBus
@@ -134,7 +134,7 @@ Glib::RefPtr<IOStream> get_stream_sync(const std::string& address,
  *
  * @param address A valid D-Bus address.
  * @param cancellable A Cancellable.
- * @param Returns A IOStream.
+ * @return A IOStream.
  * @throw Glib::Error.
  * @newin{2,28}
  * @ingroup DBus
index e10cba4..f2f6035 100644 (file)
@@ -719,7 +719,7 @@ Glib::VariantContainerBase Connection::call_sync(
   return Glib::VariantContainerBase(gvariant, false); //Dont' take an extra reference.
 }
 
-#ifdef G_OS_LINUX
+#ifdef G_OS_UNIX
 // With a UnixFDList.
 void Connection::call(
   const Glib::ustring&                object_path,
@@ -770,7 +770,7 @@ void Connection::call(
     static_cast<GDBusCallFlags>(flags), timeout_msec, Glib::unwrap(fd_list),
     0, &SignalProxy_async_callback, slot_copy);
 }
-#endif // G_OS_LINUX
+#endif // G_OS_UNIX
 
 void Connection::emit_signal(
   const Glib::ustring&                object_path,
index 4770b2a..36a36b6 100644 (file)
@@ -56,7 +56,7 @@ _GMMPROC_EXTRA_NAMESPACE(DBus)
 /** @defgroup DBus D-Bus API
  *
  * API to use D-Bus services as a client or to implement a D-Bus service.
- * To write client code, see Gio::DBus::Proxy. 
+ * To write client code, see Gio::DBus::Proxy.
  * To export objects on the bus for other clients, see Gio::DBus::own_name(), for instance.
  */
 
@@ -420,7 +420,7 @@ public:
   void close(const SlotAsyncReady& slot);
   _IGNORE(g_dbus_connection_close)
 
-  _WRAP_METHOD(bool close_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(bool close_finish(const Glib::RefPtr<AsyncResult>& res),
                g_dbus_connection_close_finish, errthrow)
 
   _WRAP_METHOD(void close_sync(const Glib::RefPtr<Cancellable>& cancellable{?}), g_dbus_connection_close_sync, errthrow)
@@ -477,7 +477,7 @@ public:
   void flush(const SlotAsyncReady& slot);
   _IGNORE(g_dbus_connection_flush)
 
-  _WRAP_METHOD(bool flush_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(bool flush_finish(const Glib::RefPtr<AsyncResult>& res),
                g_dbus_connection_flush_finish, errthrow)
 
   _WRAP_METHOD(void flush_sync(const Glib::RefPtr<Cancellable>& cancellable{?}), g_dbus_connection_flush_sync, errthrow)
@@ -537,7 +537,7 @@ public:
 
   _WRAP_METHOD_DOCS_ONLY(g_dbus_connection_send_message_with_reply_finish)
   /// @throw Glib::Error.
-  _WRAP_METHOD(Glib::RefPtr<Message> send_message_with_reply_finish(const Glib::RefPtr<AsyncResult>& result), g_dbus_connection_send_message_with_reply_finish, errthrow)
+  _WRAP_METHOD(Glib::RefPtr<Message> send_message_with_reply_finish(const Glib::RefPtr<AsyncResult>& res), g_dbus_connection_send_message_with_reply_finish, errthrow)
 
   /** Synchronously sends @a message to the peer represented by the connection
    * and blocks the calling thread until a reply is received or the timeout is
@@ -726,7 +726,7 @@ public:
     CallFlags                           flags = Gio::DBus::CALL_FLAGS_NONE,
     const Glib::VariantType&            reply_type = Glib::VariantType());
 
-#ifdef G_OS_LINUX
+#ifdef G_OS_UNIX
   /** Like call() but also takes a GUnixFDList object.
    * This method is only available on UNIX.
    *
@@ -780,7 +780,6 @@ public:
     int                                 timeout_msec = -1,
     CallFlags                           flags = Gio::DBus::CALL_FLAGS_NONE,
     const Glib::VariantType&            reply_type = Glib::VariantType());
-#endif // G_OS_LINUX
 
   /** Finishes an operation started with call() (with a UnixFDList).
    * @param res A AsyncResult obtained from the SlotAsyncReady passed to
@@ -789,7 +788,8 @@ public:
    * @throw Glib::Error.
    * @newin{2,34}
    */
-  _WRAP_METHOD(Glib::VariantContainerBase call_finish(const Glib::RefPtr<AsyncResult>& res{.}, Glib::RefPtr<UnixFDList>& out_fd_list{.>>}), g_dbus_connection_call_with_unix_fd_list_finish, errthrow)
+  _WRAP_METHOD(Glib::VariantContainerBase call_finish(const Glib::RefPtr<AsyncResult>& res{.}, Glib::RefPtr<UnixFDList>& out_fd_list{.>>}), g_dbus_connection_call_with_unix_fd_list_finish, errthrow, ifdef G_OS_UNIX)
+#endif // G_OS_UNIX
 
   _WRAP_METHOD(
     Glib::VariantContainerBase call_sync(
@@ -805,7 +805,7 @@ public:
       CallFlags                           flags{.} = Gio::DBus::CALL_FLAGS_NONE,
       const Glib::VariantType&            reply_type{.} = Glib::VariantType()
     ),
-    g_dbus_connection_call_with_unix_fd_list_sync, errthrow
+    g_dbus_connection_call_with_unix_fd_list_sync, errthrow, ifdef G_OS_UNIX
   )
 
   /** Emits a signal.
@@ -943,12 +943,12 @@ public:
     const Glib::RefPtr<InterfaceInfo>& interface_info,
     const InterfaceVTable& vtable);
   _IGNORE(g_dbus_connection_register_object)
-  
+
   /** Registers exported objects at @a object_path with the D-Bus
-   * interface that is described in @a interface_info. This method overload, 
-   * which does not take a VTable, is useful for 
-   * <a href=="http://en.wikipedia.org/wiki/Marker_interface_pattern">marker
-   * interfaces</href>.
+   * interface that is described in @a interface_info. This method overload,
+   * which does not take a VTable, is useful for
+   * <a href="http://en.wikipedia.org/wiki/Marker_interface_pattern">marker
+   * interfaces</a>.
    *
    * If an existing slot is already registered at @a object_path and @a
    * interface_name, then a Glib::Error is thrown.
index 00b576a..a2c8ece 100644 (file)
@@ -38,9 +38,9 @@ namespace ErrorUtils
 /** Checks if @a error represents an error received via D-Bus from a remote
  * peer.  If so, use get_remote_error() to get the name of the error.
  *
- * @param error A Glib::Error.  
+ * @param error A Glib::Error.
  * @return <tt>true</tt> if error represents an error from a remote peer,
- * <tt>false</tt> otherwise. 
+ * <tt>false</tt> otherwise.
  * @newin{2,28}
  * @ingroup DBus
  */
@@ -67,9 +67,9 @@ Glib::ustring get_remote_error(const Glib::Error& error);
  *
  * This is typically used when presenting errors to the end user.
  *
- * @param error A Glib::Error.  
+ * @param error A Glib::Error.
  * @return <tt>true</tt> if information was stripped, <tt>false</tt>
- * otherwise. 
+ * otherwise.
  * @newin{2,28}
  * @ingroup DBus
  */
index cd6c297..771dbef 100644 (file)
@@ -26,18 +26,18 @@ namespace Gio
 namespace DBus
 {
 
-//We hand-code this because g_dbus_node_info_lookup_interface() doesn't 
+//We hand-code this because g_dbus_node_info_lookup_interface() doesn't
 //do this when it takes a NULL.
 //See bug https://bugzilla.gnome.org/show_bug.cgi?id=646417
 Glib::RefPtr<InterfaceInfo> NodeInfo::lookup_interface()
 {
   Glib::RefPtr<InterfaceInfo> retvalue;
-  
+
   if(!gobj() || !(gobj()->interfaces))
     return retvalue;
 
   retvalue = Glib::wrap(gobj()->interfaces[0]);
-  
+
   if(retvalue)
     retvalue->reference(); //The function does not do a ref for us.
 
@@ -48,7 +48,7 @@ Glib::RefPtr<const InterfaceInfo> NodeInfo::lookup_interface() const
 {
   return const_cast<NodeInfo*>(this)->lookup_interface();
 }
+
 } //namespace DBus
+
 } // namespace Gio
index 1e15637..9613edf 100644 (file)
@@ -140,7 +140,7 @@ public:
 
   _WRAP_METHOD(Glib::RefPtr<InterfaceInfo> lookup_interface(const Glib::ustring& name), g_dbus_node_info_lookup_interface, refreturn)
   _WRAP_METHOD(Glib::RefPtr<const InterfaceInfo> lookup_interface(const Glib::ustring& name) const, g_dbus_node_info_lookup_interface, constversion, refreturn)
+
   /** Looks up information about the first interface.
    */
   Glib::RefPtr<InterfaceInfo> lookup_interface();
@@ -148,7 +148,7 @@ public:
   /** Looks up information about the first interface.
    */
   Glib::RefPtr<const InterfaceInfo> lookup_interface() const;
-  
+
   //TODO: _WRAP_METHOD(void generate_xml(guint indent, GString* string_builder), g_dbus_node_info_generate_xml)
 };
 
index 4e5c5b1..3ca2511 100644 (file)
@@ -64,7 +64,7 @@ public:
 
   // See here about whether the parameters should be ustring or std::string:
   // http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names
-  // They are generally UTF-8 that can only contain the ASCII subset, 
+  // They are generally UTF-8 that can only contain the ASCII subset,
   // so ustring still seems preferrable to std::string, which generally implies an unknown endoding for us.
 
   _WRAP_METHOD(static Glib::RefPtr<Message> create_signal(const Glib::ustring& path, const Glib::ustring& interface, const Glib::ustring& signal), g_dbus_message_new_signal)
index 260dd14..3c93d4b 100644 (file)
@@ -364,9 +364,9 @@ Glib::VariantContainerBase Proxy::call_sync(
   return Glib::VariantContainerBase(gvariant, false); //Dont' take an extra reference.
 }
 
-#ifdef G_OS_LINUX
+#ifdef G_OS_UNIX
 // With a UnixFDList.
-void Connection::call(
+void Proxy::call(
   const Glib::ustring&                method_name,
   const Glib::VariantContainerBase&   parameters,
   const SlotAsyncReady&               slot,
@@ -387,14 +387,13 @@ void Connection::call(
 }
 
 // Non-cancellable version (with a UnixFDList).
-void Connection::call(
+void Proxy::call(
   const Glib::ustring&                method_name,
   const Glib::VariantContainerBase&   parameters,
   const SlotAsyncReady&               slot,
   const Glib::RefPtr<UnixFDList>&     fd_list,
   int                                 timeout_msec,
-  CallFlags                           flags,
-  const Glib::VariantType&            reply_type)
+  CallFlags                           flags)
 {
   // Create a copy of the slot.
   // A pointer to it will be passed through the callback's data parameter
@@ -406,7 +405,7 @@ void Connection::call(
     static_cast<GDBusCallFlags>(flags), timeout_msec, Glib::unwrap(fd_list),
     0, &SignalProxy_async_callback, slot_copy);
 }
-#endif // G_OS_LINUX
+#endif // G_OS_UNIX
 
 } //namespace DBus
 
index 156fdfb..298f9b2 100644 (file)
@@ -161,7 +161,7 @@ public:
 
   _WRAP_METHOD_DOCS_ONLY(g_dbus_proxy_new_finish)
   /// @throw Glib::Error.
-  _WRAP_METHOD(static Glib::RefPtr<Proxy> create_finish(const Glib::RefPtr<AsyncResult>& result), g_dbus_proxy_new_finish, errthrow)
+  _WRAP_METHOD(static Glib::RefPtr<Proxy> create_finish(const Glib::RefPtr<AsyncResult>& res), g_dbus_proxy_new_finish, errthrow)
 
   _WRAP_METHOD_DOCS_ONLY(g_dbus_proxy_new_sync)
   static Glib::RefPtr<Proxy>
@@ -203,7 +203,7 @@ public:
 
   _WRAP_METHOD_DOCS_ONLY(g_dbus_proxy_new_for_bus_finish)
   /// @throw Glib::Error.
-  _WRAP_METHOD(static Glib::RefPtr<Proxy> create_for_bus_finish(const Glib::RefPtr<AsyncResult>& result), g_dbus_proxy_new_for_bus_finish, errthrow)
+  _WRAP_METHOD(static Glib::RefPtr<Proxy> create_for_bus_finish(const Glib::RefPtr<AsyncResult>& res), g_dbus_proxy_new_for_bus_finish, errthrow)
 
   _WRAP_METHOD_DOCS_ONLY(g_dbus_proxy_new_for_bus_sync)
   static Glib::RefPtr<Proxy>
@@ -324,7 +324,7 @@ public:
   );
 
 
-#ifdef G_OS_LINUX
+#ifdef G_OS_UNIX
 //TODO: Use _WRAP_METHOD() for this?
   /** Like call() but also takes a GUnixFDList object.
    * This method is only available on UNIX.
@@ -360,17 +360,12 @@ public:
    * @newin{2,34}
    */
   void call(
-    const Glib::ustring&                object_path,
-    const Glib::ustring&                interface_name,
     const Glib::ustring&                method_name,
     const Glib::VariantContainerBase&   parameters,
     const SlotAsyncReady&               slot,
     const Glib::RefPtr<UnixFDList>&     fd_list,
-    const Glib::ustring&                bus_name = Glib::ustring(),
     int                                 timeout_msec = -1,
-    CallFlags                           flags = Gio::DBus::CALL_FLAGS_NONE,
-    const Glib::VariantType&            reply_type = Glib::VariantType());
-#endif // G_OS_LINUX
+    CallFlags                           flags = Gio::DBus::CALL_FLAGS_NONE);
 
   /** Finishes an operation started with call() (with a UnixFDList).
    * @param res A AsyncResult obtained from the SlotAsyncReady passed to
@@ -379,7 +374,8 @@ public:
    * @throw Glib::Error.
    * @newin{2,34}
    */
-  _WRAP_METHOD(Glib::VariantContainerBase call_finish(const Glib::RefPtr<AsyncResult>& res{.}, Glib::RefPtr<UnixFDList>& out_fd_list{.>>}), g_dbus_proxy_call_with_unix_fd_list_finish, errthrow)
+  _WRAP_METHOD(Glib::VariantContainerBase call_finish(const Glib::RefPtr<AsyncResult>& res{.}, Glib::RefPtr<UnixFDList>& out_fd_list{.>>}), g_dbus_proxy_call_with_unix_fd_list_finish, errthrow, ifdef G_OS_UNIX)
+#endif // G_OS_UNIX
 
   _WRAP_METHOD(
     Glib::VariantContainerBase call_sync(
@@ -391,7 +387,7 @@ public:
       int                                 timeout_msec{.} = -1,
       CallFlags                           flags{.} = Gio::DBus::CALL_FLAGS_NONE
     ),
-    g_dbus_proxy_call_with_unix_fd_list_sync, errthrow
+    g_dbus_proxy_call_with_unix_fd_list_sync, errthrow, ifdef G_OS_UNIX
   )
 
  //_WRAP_PROPERTY("g-bus-type", BusType) // write-only construct-only
index d3c2e35..ef555b7 100644 (file)
@@ -72,13 +72,13 @@ typedef sigc::slot<void, const Glib::RefPtr<Gio::DBus::Connection>&, Glib::ustri
  * application should create object proxies in @a name_appeared_slot and
  * destroy them again (if any) in @a name_vanished_slot.
  *
- * @param bus_type The type of bus to watch a name on.
- * @param name The name (well-known or unique) to watch.
- * @param name_appeared_slot Slot to invoke when name is known to exist.
- * @param name_vanished_slot Slot to invoke when name is known to not
+ * @param bus_type The type of bus to watch a name on.
+ * @param name The name (well-known or unique) to watch.
+ * @param name_appeared_slot Slot to invoke when name is known to exist.
+ * @param name_vanished_slot Slot to invoke when name is known to not
  * exist.
- * @param flags Flags from the BusNameWatcherFlags enumeration.
- * @return An identifier (never 0) that can be used with unwatch_name() to
+ * @param flags Flags from the BusNameWatcherFlags enumeration.
+ * @return An identifier (never 0) that can be used with unwatch_name() to
  * stop watching the name.
  *
  * @newin{2,28}
@@ -95,13 +95,13 @@ _IGNORE(g_bus_watch_name)
 
 /** A watch_name() function that takes a Connection instead of a BusType.
  *
- * @param connection A Connection.
- * @param name The name (well-known or unique) to watch.
- * @param name_appeared_slot Slot to invoke when name is known to exist.
- * @param name_vanished_slot Slot to invoke when name is known to not
+ * @param connection A Connection.
+ * @param name The name (well-known or unique) to watch.
+ * @param name_appeared_slot Slot to invoke when name is known to exist.
+ * @param name_vanished_slot Slot to invoke when name is known to not
  * exist.
- * @param flags Flags from the BusNameWatcherFlags enumeration.
- * @return An identifier (never 0) that can be used with unwatch_name() to
+ * @param flags Flags from the BusNameWatcherFlags enumeration.
+ * @return An identifier (never 0) that can be used with unwatch_name() to
  * stop watching the name.
  *
  * @newin{2,28}
index 7ef0c29..fcdf436 100644 (file)
@@ -56,6 +56,15 @@ public:
   _WRAP_METHOD(std::string get_filename() const, g_desktop_app_info_get_filename)
   _WRAP_METHOD(bool is_hidden() const, g_desktop_app_info_get_is_hidden)
   _WRAP_METHOD(static void set_desktop_env(const std::string& desktop_env), g_desktop_app_info_set_desktop_env)
+
+#m4 _CONVERSION(`const char* const*', `std::vector<Glib::ustring>', `Glib::ArrayHandler<Glib::ustring>::array_to_vector($3, Glib::OWNERSHIP_NONE)')
+  _WRAP_METHOD(std::vector<Glib::ustring> get_keywords() const, g_desktop_app_info_get_keywords)
+
+  _WRAP_METHOD(std::string get_startup_wm_class() const, g_desktop_app_info_get_startup_wm_class)
+  _WRAP_METHOD(bool get_nodisplay() const, g_desktop_app_info_get_nodisplay)
+  _WRAP_METHOD(bool get_show_in(const std::string& desktop_env) const, g_desktop_app_info_get_show_in)
+  _WRAP_METHOD(std::string get_generic_name() const, g_desktop_app_info_get_generic_name)
+  _WRAP_METHOD(std::string get_categories() const, g_desktop_app_info_get_categories)
 };
 
 } // namespace Gio
index a51d749..c056861 100644 (file)
@@ -49,7 +49,7 @@ void Drive::eject(const SlotAsyncReady& slot, MountUnmountFlags flags)
   SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
 
   g_drive_eject_with_operation(gobj(),
-                               static_cast<GMountUnmountFlags>(flags), 
+                               static_cast<GMountUnmountFlags>(flags),
                                0, // mount_operation
                                0, // cancellable
                                &SignalProxy_async_callback,
@@ -89,7 +89,7 @@ void Drive::eject(const Glib::RefPtr<MountOperation>& mount_operation, const Slo
 void Drive::eject(const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags)
 {
   g_drive_eject_with_operation(gobj(),
-                               static_cast<GMountUnmountFlags>(flags), 
+                               static_cast<GMountUnmountFlags>(flags),
                                Glib::unwrap(mount_operation),
                                0, // cancellable
                                0, // callback
@@ -99,7 +99,7 @@ void Drive::eject(const Glib::RefPtr<MountOperation>& mount_operation, MountUnmo
 void Drive::eject(MountUnmountFlags flags)
 {
   g_drive_eject_with_operation(gobj(),
-                               static_cast<GMountUnmountFlags>(flags), 
+                               static_cast<GMountUnmountFlags>(flags),
                                0, // mount_operation
                                0, // cancellable
                                0, // callback
index 3d60f51..eaf4835 100644 (file)
@@ -40,11 +40,11 @@ _WRAP_ENUM(DriveStartStopType, GDriveStartStopType)
 /** Virtual File System drive management.
  *
  * This represent a piece of hardware connected to the machine. It's generally only created for removable hardware or hardware with removable media.
- * Gio::Drive is a container class for Gio::Volume objects that stem from the same piece of media. As such, Gio::Drive abstracts a drive with 
- * (or without) removable media and provides operations for querying whether media is available, determing whether media change is automatically 
+ * Gio::Drive is a container class for Gio::Volume objects that stem from the same piece of media. As such, Gio::Drive abstracts a drive with
+ * (or without) removable media and provides operations for querying whether media is available, determing whether media change is automatically
  * detected and ejecting the media.
  *
- * If the Gio::Drive reports that media isn't automatically detected, one can poll for media; typically one should not do this periodically as a 
+ * If the Gio::Drive reports that media isn't automatically detected, one can poll for media; typically one should not do this periodically as a
  * poll for media operation is potententially expensive and may spin up the drive, creating noise.
  *
  * @newin{2,16}
@@ -89,7 +89,6 @@ public:
   void eject(const Glib::RefPtr<MountOperation>& mount_operation, const SlotAsyncReady& slot, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
   /** Ejects the drive.
-   * @param slot A callback which will be called when the eject is completed.
    * @param flags Flags affecting the unmount if required for eject.
    */
   void eject(MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
@@ -127,7 +126,7 @@ public:
                errthrow)
 
   _WRAP_METHOD(std::string get_identifier(const std::string& kind) const, g_drive_get_identifier)
-  
+
   #m4 _CONVERSION(`char**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
   _WRAP_METHOD(Glib::StringArrayHandle enumerate_identifiers() const, g_drive_enumerate_identifiers)
 
@@ -184,11 +183,11 @@ Glib::RefPtr<Gio::Drive> wrap(GDrive* object, bool take_copy);
 namespace Container_Helpers
 {
 
-/** This specialization of TypeTraits exists 
- * because the default use of Glib::wrap(GObject*), 
+/** This specialization of TypeTraits exists
+ * because the default use of Glib::wrap(GObject*),
  * instead of a specific Glib::wrap(GSomeInterface*),
  * would not return a wrapper for an interface.
- */ 
+ */
 template <>
 struct TypeTraits< Glib::RefPtr<Gio::Drive> >
 {
@@ -201,7 +200,7 @@ struct TypeTraits< Glib::RefPtr<Gio::Drive> >
 
   static CppType to_cpp_type    (const CType& item)
   {
-    //Use a specific Glib::wrap() function, 
+    //Use a specific Glib::wrap() function,
     //because CType has the specific type (not just GObject):
     return Glib::wrap(item, true /* take_copy */);
   }
index bfa3583..66e79c6 100644 (file)
@@ -47,9 +47,8 @@ class EmblemedIcon
 
 protected:
   //We have this constructor because g_emblemed_icon_new() may take a NULL emblem parameter.
/** Creates a new emblemed icon for @a icon with the emblem @a emblem.
 /** Creates a new emblemed icon for @a icon with no emblem.
    * @param icon An Icon.
-   * @param emblem An Emblem.
    *
    * @newin{2,28}
    */
index 1c48dc5..2518559 100644 (file)
@@ -29,6 +29,8 @@ _WRAP_ENUM(DataStreamByteOrder, GDataStreamByteOrder, NO_GTYPE)
 _WRAP_ENUM(DataStreamNewlineType, GDataStreamNewlineType, NO_GTYPE)
 _WRAP_ENUM(ErrorEnum, GIOErrorEnum, NO_GTYPE)
 _WRAP_ENUM(SocketFamily, GSocketFamily)
+_WRAP_ENUM(TlsAuthenticationMode, GTlsAuthenticationMode)
+_WRAP_ENUM(TlsCertificateFlags, GTlsCertificateFlags)
 
 } // namespace Gio
 
index 04b1bf4..1216ff0 100644 (file)
@@ -971,7 +971,7 @@ void
 File::unmount_mountable(MountUnmountFlags flags)
 {
   g_file_unmount_mountable_with_operation(gobj(),
-                           static_cast<GMountUnmountFlags>(flags), 
+                           static_cast<GMountUnmountFlags>(flags),
                            0,
                            0,
                            0,
@@ -1013,7 +1013,7 @@ void
 File::unmount_mountable(const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags)
 {
   g_file_unmount_mountable_with_operation(gobj(),
-                           static_cast<GMountUnmountFlags>(flags), 
+                           static_cast<GMountUnmountFlags>(flags),
                            Glib::unwrap(mount_operation),
                            0,
                            0,
index 47cad10..da5118c 100644 (file)
@@ -58,38 +58,35 @@ _WRAP_ENUM(FileMonitorFlags, GFileMonitorFlags, NO_GTYPE)
 
 
 /** File and directory handling.
- * Gio::File is a high level abstraction for manipulating files on a virtual file system. Gio::Files are lightweight, immutable objects that do no 
- * I/O upon creation. It is necessary to understand that a Gio::File object does not represent a file, merely a handle to a file. All file I/O is 
+ * Gio::File is a high level abstraction for manipulating files on a virtual file system. Gio::Files are lightweight, immutable objects that do no
+ * I/O upon creation. It is necessary to understand that a Gio::File object does not represent a file, merely a handle to a file. All file I/O is
  * implemented as streaming operations (see Gio::InputStream and Gio::OutputStream).
  *
  * A GioFile can be constructed from a path, URI, or a command line argument.
  *
- * You can move through the filesystem with Gio::File handles with get_parent() to get a handle to the parent directory, 
+ * You can move through the filesystem with Gio::File handles with get_parent() to get a handle to the parent directory,
  * get_child() to get a handle to a child within a directory, and resolve_relative_path() to resolve a relative path between two Gio::Files.
  *
- * Many Gio::File operations have both synchronous and asynchronous versions to suit your application. Asynchronous versions of synchronous 
- * functions simply have _async() appended to their function names. The asynchronous I/O functions call a SlotAsyncReady callback slot which is 
+ * Many Gio::File operations have both synchronous and asynchronous versions to suit your application. Asynchronous versions of synchronous
+ * functions simply have _async() appended to their function names. The asynchronous I/O functions call a SlotAsyncReady callback slot which is
  * then used to finalize the operation, producing a AsyncResult which is then passed to the function's matching _finish() operation.
  *
- * Some Gio::File operations do not have synchronous analogs, as they may take a very long time to finish, and blocking may leave an application 
- * unusable. Notable cases include: mount_mountable() to mount a mountable file, unmount_mountable() to unmount a mountable file, 
+ * Some Gio::File operations do not have synchronous analogs, as they may take a very long time to finish, and blocking may leave an application
+ * unusable. Notable cases include: mount_mountable() to mount a mountable file, unmount_mountable() to unmount a mountable file,
  * and eject_mountable() to eject a mountable file.
- * 
- * One notable feature of Gio::Files are entity tags, or "etags" for short. Entity tags are somewhat like a more abstract version of the 
- * traditional mtime, and can be used to quickly determine if the file has been modified from the version on the file system. 
+ *
+ * One notable feature of Gio::Files are entity tags, or "etags" for short. Entity tags are somewhat like a more abstract version of the
+ * traditional mtime, and can be used to quickly determine if the file has been modified from the version on the file system.
  * See the HTTP 1.1 specification for HTTP Etag headers, which are a very similar concept.
  *
  * @newin{2,16}
- */ 
+ */
 class File : public Glib::Interface
 {
   _CLASS_INTERFACE(File, GFile, G_FILE, GFileIface)
 
 public:
 
-
-
-
   _IGNORE(g_file_icon_new) //g_file_icon_new is not a GFile method.
 
   // Although this is an interface, it is possible to create objects using
@@ -116,8 +113,8 @@ public:
   static Glib::RefPtr<File> create_for_uri(const std::string& uri);
   _IGNORE(g_file_new_for_uri)
 
-  /** Constructs a File for a given argument from the command line. 
-   * The value of @a arg can be either a URI, an absolute path or a relative path resolved relative to the current working directory. 
+  /** Constructs a File for a given argument from the command line.
+   * The value of @a arg can be either a URI, an absolute path or a relative path resolved relative to the current working directory.
    * This operation never fails, but the returned object might not support any I/O operation if arg points to a malformed path.
    *
    * @param arg A string containing a relative or absolute path.
@@ -140,7 +137,18 @@ public:
   // (g_hash_table_new in C).
   _WRAP_METHOD(guint hash() const, g_file_hash)
 
-  //Not that the implementation of equal() is already virtual via equal_vfunc().
+  //Note that the implementation of equal() is already virtual via equal_vfunc().
+  /** Checks equality of two given Files.
+   * 
+   * Note that two Files that differ can still refer to the same
+   * file on the filesystem due to various forms of filename
+   * aliasing.
+   * 
+   * This call does no blocking I/O.
+   * @param other The other File.
+   * @return <tt>true</tt> if @a *this and @a other are equal.
+   * <tt>false</tt> if either is not a File.
+   */
   _WRAP_METHOD(bool equal(const Glib::RefPtr<const File>& other) const, g_file_equal)
 
   _WRAP_METHOD(std::string get_basename() const, g_file_get_basename)
@@ -148,7 +156,7 @@ public:
   _WRAP_METHOD(std::string get_uri() const, g_file_get_uri)
   _WRAP_METHOD(Glib::ustring get_parse_name() const, g_file_get_parse_name)
 
-  //Note that these return a reference (usually new instances
+  //Note that these return a reference (usually new instances),
   //so we don't need to use refreturn.
 
   //TODO: Do we need const and unconst versions of these get_*() methods,
@@ -163,7 +171,7 @@ public:
   /** Checks if the file has any parent at all.
    * @result true if the file is a child of any parent.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   bool has_parent() const;
 
@@ -189,7 +197,7 @@ public:
   //TODO: We don't have both const and unconst versions because a FileInputStream can't really change the File.
   _WRAP_METHOD(Glib::RefPtr<FileInputStream> read(const Glib::RefPtr<Cancellable>& cancellable{?}),
                g_file_read,
-               refreturn, errthrow)
+               errthrow)
 
   /** Asynchronously opens the file for reading.
    * For more details, see read() which is the synchronous version of this call.
@@ -213,21 +221,21 @@ public:
 
   _WRAP_METHOD(Glib::RefPtr<FileInputStream> read_finish(const Glib::RefPtr<AsyncResult>& result),
                g_file_read_finish,
-               refreturn, errthrow)
+               errthrow)
 
 
   /** Gets an output stream for appending data to the file. If
    * the file doesn't already exist it is created.
-   * 
+   *
    * By default files created are generally readable by everyone,
    * but if you pass FILE_CREATE_PRIVATE in @a flags the file
    * will be made readable only to the current user, to the level that
    * is supported on the target filesystem.
-   * 
+   *
    * The operation can be cancelled by
    * triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-   * 
+   * was cancelled, a Gio::Error with CANCELLED will be thrown.
+   *
    * Some filesystems don't allow all filenames, and may
    * throw a Gio::Error with INVALID_FILENAME.
    * If the file is a directory a Gio::Error with IS_DIRECTORY will be
@@ -241,15 +249,15 @@ public:
 
   /** Gets an output stream for appending data to the file. If
    * the file doesn't already exist it is created.
-   * 
+   *
    * By default files created are generally readable by everyone,
    * but if you pass FILE_CREATE_PRIVATE in @a flags the file
    * will be made readable only to the current user, to the level that
    * is supported on the target filesystem.
-   * 
+   *
    * Some filesystems don't allow all filenames, and may
    * throw a Gio::Error with INVALID_FILENAME.
-   * If the file is a directory a Gio::Error with IS_DIRECTORY will be 
+   * If the file is a directory a Gio::Error with IS_DIRECTORY will be
    * thrown. Other errors are possible too, and depend on what kind of
    * filesystem the file is on.
    * @param flags A set of FileCreateFlags.
@@ -258,21 +266,21 @@ public:
   Glib::RefPtr<FileOutputStream> append_to(FileCreateFlags flags = FILE_CREATE_NONE);
   _IGNORE(g_file_append_to)
 
-  //We renamed this to create_file from (g_file_create() and g_file_create_readwrite), to avoid confusion with static create() methods, 
+  //We renamed this to create_file from (g_file_create() and g_file_create_readwrite), to avoid confusion with static create() methods,
   //but I would still like to choose a different word, but can't think of a good one. murrayc.
 
   /** Creates a new file and returns an output stream for writing to it.
    * The file must not already exist.
-   * 
+   *
    * By default files created are generally readable by everyone,
    * but if you pass FILE_CREATE_PRIVATE in @a flags the file
    * will be made readable only to the current user, to the level that
    * is supported on the target filesystem.
-   * 
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   *
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Gio::Error with CANCELLED will be thrown.
-   * 
-   * If a file with this name already exists a Gio::Error with EXISTS 
+   *
+   * If a file with this name already exists a Gio::Error with EXISTS
    * will be thrown. If the file is a directory a Gio::Error with IS_DIRECTORY
    * will be thrown.
    *
@@ -290,13 +298,13 @@ public:
 
   /** Creates a new file and returns an output stream for writing to it.
    * The file must not already exist.
-   * 
+   *
    * By default files created are generally readable by everyone,
    * but if you pass FILE_CREATE_PRIVATE in @a flags the file
    * will be made readable only to the current user, to the level that
    * is supported on the target filesystem.
-   * 
-   * If a file with this name already exists a Gio::Error with EXISTS 
+   *
+   * If a file with this name already exists a Gio::Error with EXISTS
    * will be thrown. If the file is a directory a Gio::Error with IS_DIRECTORY
    * will be thrown.
    *
@@ -314,16 +322,16 @@ public:
 
   /** Creates a new file and returns a stream for reading and writing to it.
    * The file must not already exist.
-   * 
+   *
    * By default files created are generally readable by everyone,
    * but if you pass FILE_CREATE_PRIVATE in @a flags the file
    * will be made readable only to the current user, to the level that
    * is supported on the target filesystem.
-   * 
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   *
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Gio::Error with CANCELLED will be thrown.
-   * 
-   * If a file with this name already exists a Gio::Error with EXISTS 
+   *
+   * If a file with this name already exists a Gio::Error with EXISTS
    * will be thrown. If the file is a directory a Gio::Error with IS_DIRECTORY
    * will be thrown.
    *
@@ -345,13 +353,13 @@ public:
 
   /** Creates a new file and returns a stream for reading and writing to it.
    * The file must not already exist.
-   * 
+   *
    * By default files created are generally readable by everyone,
    * but if you pass FILE_CREATE_PRIVATE in @a flags the file
    * will be made readable only to the current user, to the level that
    * is supported on the target filesystem.
-   * 
-   * If a file with this name already exists a Gio::Error with EXISTS 
+   *
+   * If a file with this name already exists a Gio::Error with EXISTS
    * will be thrown. If the file is a directory a Gio::Error with IS_DIRECTORY
    * will be thrown.
    *
@@ -374,33 +382,33 @@ public:
 
 
   /** Returns an output stream for overwriting the file, possibly creating a backup copy of the file first.
-   * This will try to replace the file in the safest way possible so that any errors during the writing will 
-   * not affect an already existing copy of the file. For instance, for local files it may write to a 
+   * This will try to replace the file in the safest way possible so that any errors during the writing will
+   * not affect an already existing copy of the file. For instance, for local files it may write to a
    * temporary file and then atomically rename over the destination when the stream is closed.
    *
-   * By default files created are generally readable by everyone, but if you pass FILE_CREATE_PRIVATE in 
-   * @a flags the file will be made readable only to the current user, to the level that is supported on the 
+   * By default files created are generally readable by everyone, but if you pass FILE_CREATE_PRIVATE in
+   * @a flags the file will be made readable only to the current user, to the level that is supported on the
    * target filesystem.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
-   * If you pass in an etag value, then this value is compared to the current entity tag of the file, 
-   * and if they differ a Gio::Error with WRONG_ETAG will be thrown. This generally means that the file has 
-   * been changed since you last read it. You can get the new etag from FileOutputStream::get_etag() 
-   * after you've finished writing and closed the FileOutputStream. When you load a new file you can 
+   * If you pass in an etag value, then this value is compared to the current entity tag of the file,
+   * and if they differ a Gio::Error with WRONG_ETAG will be thrown. This generally means that the file has
+   * been changed since you last read it. You can get the new etag from FileOutputStream::get_etag()
+   * after you've finished writing and closed the FileOutputStream. When you load a new file you can
    * use FileInputStream::query_info() to get the etag of the file.
    *
-   * If @a make_backup is true, this function will attempt to make a backup of the current file before 
-   * overwriting it. If this fails aa Gio::Error with CANT_CREATE_BACKUP will be thrown. If you want to replace 
+   * If @a make_backup is true, this function will attempt to make a backup of the current file before
+   * overwriting it. If this fails aa Gio::Error with CANT_CREATE_BACKUP will be thrown. If you want to replace
    * anyway, try again with @a make_backup set to false.
    *
-   * If the file is a directory a Gio::Error with IS_DIRECTORY will be thrown, and if the file is some 
-   * other form of non-regular file then aa Gio::Error with NOT_REGULAR_FILE will be thrown. Some file 
-   * systems don't allow all file names, and may throw a Gio::Error with INVALID_FILENAME, and if the 
-   * name is to longa Gio::Error with FILENAME_TOO_LONG will be thrown. Other errors are possible too, and 
+   * If the file is a directory a Gio::Error with IS_DIRECTORY will be thrown, and if the file is some
+   * other form of non-regular file then aa Gio::Error with NOT_REGULAR_FILE will be thrown. Some file
+   * systems don't allow all file names, and may throw a Gio::Error with INVALID_FILENAME, and if the
+   * name is to longa Gio::Error with FILENAME_TOO_LONG will be thrown. Other errors are possible too, and
    * depend on what kind of filesystem the file is on.
-   * 
+   *
    * @param etag An optional entity tag for the current Glib::File.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
@@ -410,30 +418,30 @@ public:
 
 
   /** Returns an output stream for overwriting the file, possibly creating a backup copy of the file first.
-   * This will try to replace the file in the safest way possible so that any errors during the writing will 
-   * not affect an already existing copy of the file. For instance, for local files it may write to a 
+   * This will try to replace the file in the safest way possible so that any errors during the writing will
+   * not affect an already existing copy of the file. For instance, for local files it may write to a
    * temporary file and then atomically rename over the destination when the stream is closed.
    *
-   * By default files created are generally readable by everyone, but if you pass FILE_CREATE_PRIVATE in 
-   * @a flags the file will be made readable only to the current user, to the level that is supported on the 
+   * By default files created are generally readable by everyone, but if you pass FILE_CREATE_PRIVATE in
+   * @a flags the file will be made readable only to the current user, to the level that is supported on the
    * target filesystem.
    *
-   * If you pass in an etag value, then this value is compared to the current entity tag of the file, 
-   * and if they differ a Gio::Error with WRONG_ETAG will be thrown. This generally means that the file has 
-   * been changed since you last read it. You can get the new etag from FileOutputStream::get_etag() 
-   * after you've finished writing and closed the FileOutputStream. When you load a new file you can 
+   * If you pass in an etag value, then this value is compared to the current entity tag of the file,
+   * and if they differ a Gio::Error with WRONG_ETAG will be thrown. This generally means that the file has
+   * been changed since you last read it. You can get the new etag from FileOutputStream::get_etag()
+   * after you've finished writing and closed the FileOutputStream. When you load a new file you can
    * use FileInputStream::query_info() to get the etag of the file.
    *
-   * If @a make_backup is true, this function will attempt to make a backup of the current file before 
-   * overwriting it. If this fails aa Gio::Error with CANT_CREATE_BACKUP will be thrown. If you want to replace 
+   * If @a make_backup is true, this function will attempt to make a backup of the current file before
+   * overwriting it. If this fails aa Gio::Error with CANT_CREATE_BACKUP will be thrown. If you want to replace
    * anyway, try again with @a make_backup set to false.
    *
-   * If the file is a directory a Gio::Error with IS_DIRECTORY will be thrown, and if the file is some 
-   * other form of non-regular file then aa Gio::Error with NOT_REGULAR_FILE will be thrown. Some file 
-   * systems don't allow all file names, and may throw a Gio::Error with INVALID_FILENAME, and if the 
-   * name is to longa Gio::Error with FILENAME_TOO_LONG will be thrown. Other errors are possible too, and 
+   * If the file is a directory a Gio::Error with IS_DIRECTORY will be thrown, and if the file is some
+   * other form of non-regular file then aa Gio::Error with NOT_REGULAR_FILE will be thrown. Some file
+   * systems don't allow all file names, and may throw a Gio::Error with INVALID_FILENAME, and if the
+   * name is to longa Gio::Error with FILENAME_TOO_LONG will be thrown. Other errors are possible too, and
    * depend on what kind of filesystem the file is on.
-   * 
+   *
    * @param etag An optional entity tag for the current Glib::File.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
@@ -446,7 +454,7 @@ public:
 
   /** Asynchronously opens the file for appending.
    * For more details, see append_to() which is the synchronous version of this call.
-   * 
+   *
    * When the operation is finished, @a slot will be called. You can then call append_to_finish() to get the result of the operation.
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param cancellable A Cancellable object which can be used to cancel the operation.
@@ -457,7 +465,7 @@ public:
 
   /** Asynchronously opens the file for appending.
    * For more details, see append_to() which is the synchronous version of this call.
-   * 
+   *
    * When the operation is finished, @a slot will be called. You can then call append_to_finish() to get the result of the operation.
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param flags a set of FileCreateFlags.
@@ -466,19 +474,18 @@ public:
   void append_to_async(const SlotAsyncReady& slot, FileCreateFlags flags = FILE_CREATE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_append_to_async)
 
-  _WRAP_METHOD(Glib::RefPtr<FileOutputStream> append_to_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileOutputStream> append_to_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_append_to_finish,
-               refreturn, errthrow)
-
+               errthrow)
 
-  //We renamed this to create_file_async from (g_file_create_async() and g_file_create_readwrite_async), to avoid confusion with static create() methods, 
+  //We renamed this to create_file_async from (g_file_create_async() and g_file_create_readwrite_async), to avoid confusion with static create() methods,
   //but I would still like to choose a different word, but can't think of a good one. murrayc. See also create_file().
 
   /** Asynchronously creates a new file and returns an output stream for writing to it. The file must not already exist.
    * For more details, see create_file() which is the synchronous version of this call.
    *
    * When the operation is finished, @a slot will be called. You can then call create_file_finish() to get the result of the operation.
-   * 
+   *
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param cancellable A Cancellable object which can be used to cancel the operation.
    * @param flags a set of FileCreateFlags.
@@ -490,7 +497,7 @@ public:
    * For more details, see create_file() which is the synchronous version of this call.
    *
    * When the operation is finished, @a slot will be called. You can then call create_file_finish() to get the result of the operation.
-   * 
+   *
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param flags a set of FileCreateFlags.
    * @param io_priority The I/O priority of the request.
@@ -498,9 +505,9 @@ public:
   void create_file_async(const SlotAsyncReady& slot, FileCreateFlags flags = FILE_CREATE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_create_async)
 
-  _WRAP_METHOD(Glib::RefPtr<FileOutputStream> create_file_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileOutputStream> create_file_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_create_finish,
-               refreturn, errthrow)
+               errthrow)
 
 
   /** Asynchronously creates a new file and returns a stream for reading and
@@ -509,13 +516,13 @@ public:
    * For more details, see create_file_readwrite() which is the synchronous version of this call.
    *
    * When the operation is finished, @a slot will be called. You can then call create_file_readwrite_finish() to get the result of the operation.
-   * 
+   *
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param cancellable A Cancellable object which can be used to cancel the operation.
    * @param flags a set of FileCreateFlags.
    * @param io_priority The I/O priority of the request.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void create_file_readwrite_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, FileCreateFlags flags = FILE_CREATE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
 
@@ -525,20 +532,19 @@ public:
    * For more details, see create_file_readwrite() which is the synchronous version of this call.
    *
    * When the operation is finished, @a slot will be called. You can then call create_file_readwrite_finish() to get the result of the operation.
-   * 
+   *
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param flags a set of FileCreateFlags.
    * @param io_priority The I/O priority of the request.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void create_file_readwrite_async(const SlotAsyncReady& slot, FileCreateFlags flags = FILE_CREATE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_create_readwrite_async)
 
-  _WRAP_METHOD(Glib::RefPtr<FileIOStream> create_file_readwrite_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileIOStream> create_file_readwrite_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_create_readwrite_finish,
-               refreturn, errthrow)
-
+               errthrow)
 
   /** Asyncronously overwrites the file, replacing the contents, possibly creating a backup copy of the file first.
    * For more details, see replace() which is the synchronous version of this call.
@@ -566,14 +572,13 @@ public:
   void replace_async(const SlotAsyncReady& slot, const std::string& etag = std::string(), bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_replace_async)
 
-  _WRAP_METHOD(Glib::RefPtr<FileOutputStream> replace_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileOutputStream> replace_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_replace_finish,
-               refreturn, errthrow)
-
+               errthrow)
 
   _WRAP_METHOD(Glib::RefPtr<FileIOStream> open_readwrite(const Glib::RefPtr<Cancellable>& cancellable{?}),
                g_file_open_readwrite,
-               refreturn, errthrow)
+               errthrow)
 
   /** Opens an existing file for reading and writing.
    * The result is a FileIOStream that can be used to read and write the contents of the file.
@@ -592,7 +597,7 @@ public:
    * @param cancellable A Cancellable object which can be used to cancel the operation.
    * @param io_priority The I/O priority of the request.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void open_readwrite_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
@@ -612,52 +617,52 @@ public:
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param io_priority The I/O priority of the request.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void open_readwrite_async(const SlotAsyncReady& slot, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_open_readwrite_async)
 
-  _WRAP_METHOD(Glib::RefPtr<FileIOStream> open_readwrite_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileIOStream> open_readwrite_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_open_readwrite_finish,
-               refreturn, errthrow)
-
+               errthrow)
 
   /** Returns an output stream for overwriting the file in readwrite mode, possibly creating a backup copy of the file first.
-   * 
+   *
    * If the file doesn't exist, it will be created.
    *
    * For details about the behaviour, see replace() which does the same thing but returns an output stream only.
    *
-   * Note that in many non-local file cases read and write streams are not supported, 
+   * Note that in many non-local file cases read and write streams are not supported,
    * so make sure you really need to do read and write streaming,
    * rather than just opening for reading or writing.
-   * 
+   *
+   * @param cancellable A Cancellable object which can be used to cancel the operation.
    * @param etag An optional entity tag for the current Glib::File.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
    * @return A FileOutputStream.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   Glib::RefPtr<FileIOStream> replace_readwrite(const Glib::RefPtr<Cancellable>& cancellable, const std::string& etag = std::string(), bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
 
   /** Returns an output stream for overwriting the file in readwrite mode, possibly creating a backup copy of the file first.
-   * 
+   *
    * If the file doesn't exist, it will be created.
    *
    * For details about the behaviour, see replace() which does the same thing but returns an output stream only.
    *
-   * Note that in many non-local file cases read and write streams are not supported, 
+   * Note that in many non-local file cases read and write streams are not supported,
    * so make sure you really need to do read and write streaming,
    * rather than just opening for reading or writing.
-   * 
+   *
    * @param etag An optional entity tag for the current Glib::File.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
    * @return A FileOutputStream.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   Glib::RefPtr<FileIOStream> replace_readwrite(const std::string& etag = std::string(), bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
@@ -677,7 +682,7 @@ public:
    * @param flags A set of FileCreateFlags.
    * @param io_priority The I/O priority of the request.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void replace_readwrite_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const std::string& etag = std::string(), bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
 
@@ -692,19 +697,14 @@ public:
    * @param flags A set of FileCreateFlags.
    * @param io_priority The I/O priority of the request.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void replace_readwrite_async(const SlotAsyncReady& slot, const std::string& etag = std::string(), bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_replace_readwrite_async)
 
-  _WRAP_METHOD(Glib::RefPtr<FileIOStream> replace_readwrite_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileIOStream> replace_readwrite_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_replace_readwrite_finish,
-               refreturn, errthrow)
-
-
-
-
-
+               errthrow)
 
   /** Gets the requested information about the file. The result
    * is a FileInfo object that contains key-value attributes (such as the  type or size
@@ -717,10 +717,10 @@ public:
    * means all attributes, and a wildcard like "standard::*" means all attributes in the standard
    * namespace. An example attribute query be "standard::*,owner::user".
    * The standard attributes are available as defines, like #G_FILE_ATTRIBUTE_STANDARD_NAME.
-   * 
+   *
    * The operation can be cancelled by
    * triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED will be thrown. 
+   * was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
    * For symlinks, normally the information about the target of the
    * symlink is returned, rather than information about the symlink itself.
@@ -774,7 +774,7 @@ public:
   //We cannot use the {?} format here because we want a default value for flags, but gmmproc then generates a method with a default value for flags when it is not the last parameter.
   _WRAP_METHOD(FileType query_file_type(FileQueryInfoFlags flags, const Glib::RefPtr<Cancellable>& cancellable) const, g_file_query_file_type)
 
-  /** Utility function to inspect the #GFileType of a file. This is
+  /** Utility function to inspect the FileType of a file. This is
    * implemented using query_info() and as such does blocking I/O.
    *
    * The primary use case of this method is to check if a file is a regular file,
@@ -814,15 +814,15 @@ public:
   _IGNORE(g_file_query_info_async)
 
 
-  _WRAP_METHOD(Glib::RefPtr<FileInfo> query_info_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileInfo> query_info_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_query_info_finish,
-               refreturn, errthrow)
+               errthrow)
 
   /** Similar to query_info(), but obtains information
    * about the filesystem the file is on, rather than the file itself.
    * For instance the amount of space availible and the type of
    * the filesystem.
-   * 
+   *
    * The @a attribute  value is a string that specifies the file attributes that
    * should be gathered. It is not an error if its not possible to read a particular
    * requested attribute from a file, it just won't be set. @a attribute  should
@@ -832,11 +832,11 @@ public:
    * Common attributes of interest are FILE_ATTRIBUTE_FILESYSTEM_SIZE
    * (the total size of the filesystem in bytes), FILE_ATTRIBUTE_FILESYSTEM_FREE (number of
    * bytes availible), and FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
-   * 
+   *
    * The operation can be cancelled by
    * triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-   * 
+   * was cancelled, a Gio::Error with CANCELLED will be thrown.
+   *
    * If the file does not exist, a Gio::Error with NOT_FOUND will be thrown.
    * Other errors are possible too, and depend on what kind of filesystem the file is on.
    * @param cancellable A Cancellable object.
@@ -849,7 +849,7 @@ public:
    * about the filesystem the file is on, rather than the file itself.
    * For instance the amount of space availible and the type of
    * the filesystem.
-   * 
+   *
    * The @a attribute  value is a string that specifies the file attributes that
    * should be gathered. It is not an error if its not possible to read a particular
    * requested attribute from a file, it just won't be set. @a attribute  should
@@ -859,8 +859,8 @@ public:
    * Common attributes of interest are FILE_ATTRIBUTE_FILESYSTEM_SIZE
    * (the total size of the filesystem in bytes), FILE_ATTRIBUTE_FILESYSTEM_FREE (number of
    * bytes availible), and FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
-   * 
-   * 
+   *
+   *
    * If the file does not exist, a Gio::Error with NOT_FOUND will be thrown.
    * Other errors are possible too, and depend on what kind of filesystem the file is on.
    * @param attributes An attribute query string.
@@ -869,15 +869,14 @@ public:
   Glib::RefPtr<FileInfo> query_filesystem_info(const std::string& attributes = "*");
   _IGNORE(g_file_query_filesystem_info)
 
-  _WRAP_METHOD(Glib::RefPtr<Mount> find_enclosing_mount(const Glib::RefPtr<Cancellable>& cancellable{?}), 
-               g_file_find_enclosing_mount, retreturn, errthrow)
-
+  _WRAP_METHOD(Glib::RefPtr<Mount> find_enclosing_mount(const Glib::RefPtr<Cancellable>& cancellable{?}),
+               g_file_find_enclosing_mount, errthrow)
 
   /** Asynchronously gets the requested information about the filesystem
    * that the file is on. The result is a FileInfo object
    * that contains key-value attributes (such as type or size for the
    * file).
-   * 
+   *
    * For more details, see query_filesystem_info() which is the synchronous version of this call.
    *
    * When the operation is finished, @a slot will be called. You can then call query_filesystem_info_finish() to get the result of the operation.
@@ -893,7 +892,7 @@ public:
    * that the file is on. The result is a FileInfo object
    * that contains key-value attributes (such as type or size for the
    * file).
-   * 
+   *
    * For more details, see query_filesystem_info() which is the synchronous version of this call.
    *
    * When the operation is finished, @a slot will be called. You can then call query_filesystem_info_finish() to get the result of the operation.
@@ -905,10 +904,9 @@ public:
   void query_filesystem_info_async(const SlotAsyncReady& slot, const std::string& attributes = "*", int io_priority = Glib::PRIORITY_DEFAULT) const;
   _IGNORE(g_file_query_filesystem_info_async)
 
-
-  _WRAP_METHOD(Glib::RefPtr<FileInfo> query_filesystem_info_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileInfo> query_filesystem_info_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_query_filesystem_info_finish,
-               refreturn, errthrow)
+               errthrow)
 
   /** Asynchronously gets the mount for the file.
    *
@@ -938,14 +936,13 @@ public:
   void find_enclosing_mount_async(const SlotAsyncReady& slot, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_find_enclosing_mount_async)
 
-  _WRAP_METHOD(Glib::RefPtr<Mount> find_enclosing_mount_finish(const Glib::RefPtr<AsyncResult>& result), 
-               g_file_find_enclosing_mount_finish, refreturn, errthrow)
-
+  _WRAP_METHOD(Glib::RefPtr<Mount> find_enclosing_mount_finish(const Glib::RefPtr<AsyncResult>& res),
+               g_file_find_enclosing_mount_finish, errthrow)
 
   /** Gets the requested information about the files in a directory. The result
    * is a FileEnumerator object that will give out FileInfo objects for
    * all the files in the directory.
-   * 
+   *
    * The @a attribute  value is a string that specifies the file attributes that
    * should be gathered. It is not an error if its not possible to read a particular
    * requested attribute from a file, it just won't be set. @a attribute  should
@@ -953,11 +950,11 @@ public:
    * means all attributes, and a wildcard like "standard::*" means all attributes in the standard
    * namespace. An example attribute query be "standard::*,owner::user".
    * The standard attributes are availible as defines, like FILE_ATTRIBUTE_STANDARD_NAME.
-   * 
+   *
    * The operation can be cancelled by
    * triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-   * 
+   * was cancelled, a Gio::Error with CANCELLED will be thrown.
+   *
    * If the file does not exist, a Gio::Error with NOT_FOUND will be thrown.
    * If the file is not a directory, a Glib::FileError with NOTDIR will be thrown.
    * Other errors are possible too.
@@ -973,7 +970,7 @@ public:
   /** Gets the requested information about the files in a directory. The result
    * is a FileEnumerator object that will give out FileInfo objects for
    * all the files in the directory.
-   * 
+   *
    * The @a attribute  value is a string that specifies the file attributes that
    * should be gathered. It is not an error if its not possible to read a particular
    * requested attribute from a file, it just won't be set. @a attribute  should
@@ -981,7 +978,7 @@ public:
    * means all attributes, and a wildcard like "standard::*" means all attributes in the standard
    * namespace. An example attribute query be "standard::*,owner::user".
    * The standard attributes are availible as defines, like FILE_ATTRIBUTE_STANDARD_NAME.
-   * 
+   *
    * If the file does not exist, a Gio::Error with NOT_FOUND will be thrown.
    * If the file is not a directory, a Glib::FileError with NOTDIR will be thrown.
    * Other errors are possible too.
@@ -1021,13 +1018,13 @@ public:
   void enumerate_children_async(const SlotAsyncReady& slot, const std::string& attributes = "*", FileQueryInfoFlags flags = FILE_QUERY_INFO_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_enumerate_children_async)
 
-  _WRAP_METHOD(Glib::RefPtr<FileEnumerator> enumerate_children_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<FileEnumerator> enumerate_children_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_enumerate_children_finish,
                errthrow)
 
   _WRAP_METHOD(Glib::RefPtr<File> set_display_name(const Glib::ustring& display_name, const Glib::RefPtr<Cancellable>& cancellable{?}),
                g_file_set_display_name,
-               refreturn, errthrow)
+               errthrow)
 
   /** Asynchronously sets the display name for a given Gio::File. For the synchronous version of this function, see set_display_name().
    * When the operation is finished, @a slot will be called. You can then call set_display_name_finish() to get the result of the operation.
@@ -1049,13 +1046,13 @@ public:
   void set_display_name_async(const Glib::ustring& display_name, const SlotAsyncReady& slot, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_set_display_name_async)
 
-  _WRAP_METHOD(Glib::RefPtr<File> set_display_name_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(Glib::RefPtr<File> set_display_name_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_set_display_name_finish,
                errthrow)
 
-  /** Deletes a file. 
+  /** Deletes a file.
    * If the file is a directory, it will only be deleted if it is empty.
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Glib::FileError with ERROR_CANCELLED will be thrown.
    *
    * @param cancellable A Cancellable object which can be used to cancel the operation.
@@ -1066,7 +1063,7 @@ public:
                 errthrow)
 
    /** Asynchronously delete a file.
-    * If the @file is a directory, it will
+    * If the file is a directory, it will
     * only be deleted if it is empty.  This has the same semantics as
     * g_unlink().
     *
@@ -1078,7 +1075,7 @@ public:
   void remove_async(const SlotAsyncReady& slot_ready, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
    /** Asynchronously delete a file.
-    * If the @file is a directory, it will
+    * If the file is a directory, it will
     * only be deleted if it is empty.  This has the same semantics as
     * g_unlink().
     *
@@ -1116,10 +1113,10 @@ public:
    *
    * If FILE_COPY_OVERWRITE is not specified and the target exists, then a Gio::Error with EXISTS will be thrown.
    *
-   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown. 
+   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown.
    * If trying to overwrite a directory with a directory a Gio::Error with WOULD_MERGE will be thrown.
    *
-   * If the source is a directory and the target does not exist, or FILE_COPY_OVERWRITE is specified and the target is a file, 
+   * If the source is a directory and the target does not exist, or FILE_COPY_OVERWRITE is specified and the target is a file,
    * then a Gio::Error with WOULD_RECURSE will be thrown.
    *
    * If you are interested in copying the Gio::File object itself (not the on-disk file), see File::dup().
@@ -1136,10 +1133,10 @@ public:
    *
    * If FILE_COPY_OVERWRITE is not specified and the target exists, then a Gio::Error with EXISTS will be thrown.
    *
-   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown. 
+   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown.
    * If trying to overwrite a directory with a directory a Gio::Error with WOULD_MERGE will be thrown.
    *
-   * If the source is a directory and the target does not exist, or FILE_COPY_OVERWRITE is specified and the target is a file, 
+   * If the source is a directory and the target does not exist, or FILE_COPY_OVERWRITE is specified and the target is a file,
    * then a Gio::Error with WOULD_RECURSE will be thrown.
    *
    * If you are interested in copying the Gio::File object itself (not the on-disk file), see File::dup().
@@ -1154,10 +1151,10 @@ public:
    *
    * If FILE_COPY_OVERWRITE is not specified and the target exists, then a Gio::Error with EXISTS will be thrown.
    *
-   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown. 
+   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown.
    * If trying to overwrite a directory with a directory a Gio::Error with WOULD_MERGE will be thrown.
    *
-   * If the source is a directory and the target does not exist, or FILE_COPY_OVERWRITE is specified and the target is a file, 
+   * If the source is a directory and the target does not exist, or FILE_COPY_OVERWRITE is specified and the target is a file,
    * then a Gio::Error with WOULD_RECURSE will be thrown.
    *
    * If you are interested in copying the Gio::File object itself (not the on-disk file), see File::dup().
@@ -1230,28 +1227,28 @@ public:
   void copy_async(const Glib::RefPtr<File>& destination, const SlotAsyncReady& slot_ready, FileCopyFlags flags = FILE_COPY_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_file_copy_async)
 
-  _WRAP_METHOD(bool copy_finish(const Glib::RefPtr<AsyncResult>& result),
+  _WRAP_METHOD(bool copy_finish(const Glib::RefPtr<AsyncResult>& res),
                g_file_copy_finish,
                errthrow)
 
-  /** Tries to move the file or directory source to the location specified by destination. If native move operations are supported then this is 
-   * used, otherwise a copy and delete fallback is used. The native implementation may support moving directories (for instance on moves inside 
+  /** Tries to move the file or directory source to the location specified by destination. If native move operations are supported then this is
+   * used, otherwise a copy and delete fallback is used. The native implementation may support moving directories (for instance on moves inside
    * the same filesystem), but the fallback code does not.
    *
    * If the flag FILE_COPY_OVERWRITE is specified an already existing destination file is overwritten.
-   * 
+   *
    * If the flag FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks will be copied as symlinks, otherwise the target of the source symlink will be copied.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
    * The operation can be monitored via the @a slot callback.
    * If the source file does not exist then a Gio::Error with NOT_FOUND will be thrown, independent on the status of the destination.
-   * 
+   *
    * If G_FILE_COPY_OVERWRITE is not specified and the target exists, then a Gio::Error with EXISTS will be thrown.
-   * 
-   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown. 
+   *
+   * If trying to overwrite a file over a directory a Gio::Error with IS_DIRECTORY will be thrown.
    * If trying to overwrite a directory with a directory a Gio::Error with WOULD_MERGE will be thrown.
-   * 
+   *
    * If the source is a directory and the target does not exist, or FILE_COPY_OVERWRITE is specified and the target is a file, then a Gio::Error with WOULD_RECURSE may be thrown (if the native move operation isn't available).
    */
   bool move(const Glib::RefPtr<File>& destination, const SlotFileProgress& slot, const Glib::RefPtr<Cancellable>& cancellable, FileCopyFlags flags = FILE_COPY_NONE);
@@ -1292,16 +1289,16 @@ public:
                                                           GError                    **error);
    */
 
-  /** Tries to set all attributes in the FileInfo on the target values, 
+  /** Tries to set all attributes in the FileInfo on the target values,
    * not stopping on the first error.
-   * 
+   *
    * If there is any error during this operation then a Gio::Error will be thrown.
-   * Error on particular fields are flagged by setting 
-   * the "status" field in the attribute value to 
+   * Error on particular fields are flagged by setting
+   * the "status" field in the attribute value to
    * FILE_ATTRIBUTE_STATUS_ERROR_SETTING, which means you can also detect
    * further errors.
-   * 
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,  
+   *
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * @param info A FileInfo.
@@ -1311,16 +1308,16 @@ public:
    */
   bool set_attributes_from_info(const Glib::RefPtr<FileInfo>& info, const Glib::RefPtr<Cancellable>& cancellable, FileQueryInfoFlags flags = FILE_QUERY_INFO_NONE);
 
-  /** Tries to set all attributes in the FileInfo on the target values, 
+  /** Tries to set all attributes in the FileInfo on the target values,
    * not stopping on the first error.
-   * 
+   *
    * If there is any error during this operation then a Gio::Error will be thrown.
-   * Error on particular fields are flagged by setting 
-   * the "status" field in the attribute value to 
+   * Error on particular fields are flagged by setting
+   * the "status" field in the attribute value to
    * FILE_ATTRIBUTE_STATUS_ERROR_SETTING, which means you can also detect
    * further errors.
-   * 
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   *
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * @param info A FileInfo.
@@ -1384,42 +1381,46 @@ public:
                g_file_set_attribute_int64,
                errthrow)
 
-  /** Starts a @a mount_operation, mounting the volume that contains the file. 
-   * 
-   * When this operation has completed, @a slot will be called with, 
+  /** Starts a @a mount_operation, mounting the volume that contains the file.
+   *
+   * When this operation has completed, @a slot will be called with,
    * and the operation can be finalized with mount_enclosing_volume_finish().
-   * 
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   *
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * @param mount_operation A MountOperation.
    * @param slot A callback slot which will be called when the request is satisfied.
    * @param cancellable A Cancellable object.
+   * @param flags Flags affecting the operation.
    */
   void mount_enclosing_volume(const Glib::RefPtr<MountOperation>& mount_operation, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
-  /** Starts a @a mount_operation, mounting the volume that contains the file. 
-   * 
-   * When this operation has completed, @a slot will be called with, 
+  /** Starts a @a mount_operation, mounting the volume that contains the file.
+   *
+   * When this operation has completed, @a slot will be called with,
    * and the operation can be finalized with mount_enclosing_volume_finish().
    *
    * @param mount_operation A MountOperation.
    * @param slot A callback slot which will be called when the request is satisfied.
+   * @param flags Flags affecting the operation.
    */
   void mount_enclosing_volume(const Glib::RefPtr<MountOperation>& mount_operation, const SlotAsyncReady& slot, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
-  /** Starts a @a mount_operation, mounting the volume that contains the file. 
-   * 
-   * When this operation has completed, @a slot will be called with, 
+  /** Starts a @a mount_operation, mounting the volume that contains the file.
+   *
+   * When this operation has completed, @a slot will be called with,
    * and the operation can be finalized with mount_enclosing_volume_finish().
    *
    * @param slot A callback slot which will be called when the request is satisfied.
+   * @param flags Flags affecting the operation.
    */
   void mount_enclosing_volume(const SlotAsyncReady& slot, MountMountFlags flags = MOUNT_MOUNT_NONE);
   _IGNORE(g_file_mount_enclosing_volume)
 
-  /** Starts a @a mount_operation, mounting the volume that contains the file. 
+  /** Starts a @a mount_operation, mounting the volume that contains the file.
    *
+   * @param flags Flags affecting the operation.
    */
   void mount_enclosing_volume(MountMountFlags flags = MOUNT_MOUNT_NONE);
   _IGNORE(g_file_mount_enclosing _volume)
@@ -1428,10 +1429,10 @@ public:
                g_file_mount_enclosing_volume_finish,
                errthrow)
 
-  /** Mounts a file of type FILE_TYPE_MOUNTABLE. Using @a mount_operation, you can request callbacks when, for instance, 
+  /** Mounts a file of type FILE_TYPE_MOUNTABLE. Using @a mount_operation, you can request callbacks when, for instance,
    * passwords are needed during authentication.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call mount_mountable_finish() to get the result of the operation.
@@ -1439,16 +1440,18 @@ public:
    * @param mount_operation A MountOperation.
    * @param cancellable A Cancellable object which can be used to cancel the operation.
    * @param slot A callback slot which will be called when the request is satisfied.
+   * @param flags Flags affecting the operation.
    */
   void mount_mountable(const Glib::RefPtr<MountOperation>& mount_operation, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
-  /** Mounts a file of type FILE_TYPE_MOUNTABLE. Using @a mount_operation, you can request callbacks when, for instance, 
+  /** Mounts a file of type FILE_TYPE_MOUNTABLE. Using @a mount_operation, you can request callbacks when, for instance,
    * passwords are needed during authentication.
    *
    * When the operation is finished, @a slot will be called. You can then call mount_mountable_finish() to get the result of the operation.
    *
    * @param mount_operation A MountOperation.
    * @param slot A callback slot which will be called when the request is satisfied.
+   * @param flags Flags affecting the operation.
    */
   void mount_mountable(const Glib::RefPtr<MountOperation>& mount_operation, const SlotAsyncReady& slot, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
@@ -1457,21 +1460,24 @@ public:
    * When the operation is finished, @a slot will be called. You can then call mount_mountable_finish() to get the result of the operation.
    *
    * @param slot A callback slot which will be called when the request is satisfied.
+   * @param flags Flags affecting the operation.
    */
   void mount_mountable(const SlotAsyncReady& slot, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
   /** Mounts a file of type FILE_TYPE_MOUNTABLE without user interaction.
+   *
+   * @param flags Flags affecting the operation.
    */
   void mount_mountable(MountMountFlags flags = MOUNT_MOUNT_NONE);
   _IGNORE(g_file_mount_mountable)
 
   _WRAP_METHOD(Glib::RefPtr<File> mount_mountable_finish(const Glib::RefPtr<AsyncResult>& result),
                g_file_mount_mountable_finish,
-               refreturn, errthrow)
+               errthrow)
 
   /** Unmounts a file of type FILE_TYPE_MOUNTABLE.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call unmount_mountable_finish() to get the result of the operation.
@@ -1499,7 +1505,7 @@ public:
 
   /** Unmounts a file of type FILE_TYPE_MOUNTABLE.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call unmount_mountable_finish() to get the result of the operation.
@@ -1509,7 +1515,7 @@ public:
    * @param mount_operation A MountOperation
    * @param flags Flags affecting the operation.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void unmount_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
@@ -1521,7 +1527,7 @@ public:
    * @param mount_operation A MountOperation
    * @param flags Flags affecting the operation.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void unmount_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
@@ -1530,7 +1536,7 @@ public:
    * @param mount_operation A MountOperation
    * @param flags Flags affecting the operation.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void unmount_mountable(const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
@@ -1542,7 +1548,7 @@ public:
 
   /** Starts an asynchronous eject on a mountable.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call eject_mountable_finish() to get the result of the operation.
@@ -1570,7 +1576,7 @@ public:
 
   /** Starts an asynchronous eject on a mountable.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call eject_mountable_finish() to get the result of the operation.
@@ -1580,7 +1586,7 @@ public:
    * @param mount_operation A MountOperation
    * @param flags Flags affecting the operation.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void eject_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
@@ -1592,7 +1598,7 @@ public:
    * @param mount_operation A MountOperation
    * @param flags Flags affecting the operation.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void eject_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
@@ -1601,7 +1607,7 @@ public:
    * @param mount_operation A MountOperation
    * @param flags Flags affecting the operation.
    *
-   * @newin2p24
+   * @newin{2,24}
    */
   void eject_mountable(const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
@@ -1612,7 +1618,7 @@ public:
                errthrow)
 
 
-  /** Copies the file attributes from @a source to @a destination. 
+  /** Copies the file attributes from @a source to @a destination.
    *
    * Normally only a subset of the file attributes are copied,
    * those that are copies in a normal file copy operation
@@ -1627,7 +1633,7 @@ public:
    */
   bool copy_attributes(const Glib::RefPtr<File>& destination, const Glib::RefPtr<Cancellable>& cancellable, FileCopyFlags flags = FILE_COPY_NONE);
 
-  /** Copies the file attributes from @a source to @a destination. 
+  /** Copies the file attributes from @a source to @a destination.
    *
    * Normally only a subset of the file attributes are copied,
    * those that are copies in a normal file copy operation
@@ -1641,10 +1647,10 @@ public:
    */
   bool copy_attributes(const Glib::RefPtr<File>& destination, FileCopyFlags flags = FILE_COPY_NONE);
   _IGNORE(g_file_copy_attributes)
+
   /** Obtains a directory monitor for the given file.
    * This may fail if directory monitoring is not supported.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation
    * was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
@@ -1656,7 +1662,7 @@ public:
 
   /** Obtains a directory monitor for the given file.
    * This may fail if directory monitoring is not supported.
-   * 
+   *
    * @param flags A set of FileMonitorFlags.
    * @return A FileMonitor for the file.
    */
@@ -1665,24 +1671,23 @@ public:
 
   /** Obtains a file monitor for the given file. If no file notification
    * mechanism exists, then regular polling of the file is used.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation
    * was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
+   * @param cancellable A Cancellable object.
    * @param flags A set of FileMonitorFlags.
-   * @param A Cancellable object.
    * @return A FileMonitor for the file.
    */
   Glib::RefPtr<FileMonitor> monitor_file(const Glib::RefPtr<Cancellable>& cancellable, FileMonitorFlags flags = FILE_MONITOR_NONE);
 
   /** Obtains a file monitor for the given file. If no file notification
    * mechanism exists, then regular polling of the file is used.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation
    * was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
    * @param flags A set of FileMonitorFlags.
-   * @param A Cancellable object.
    * @return A FileMonitor for the file.
    */
   Glib::RefPtr<FileMonitor> monitor_file(FileMonitorFlags flags = FILE_MONITOR_NONE);
@@ -1691,12 +1696,12 @@ public:
 
   /** Obtains a file monitor for the given file. If no file notification
    * mechanism exists, then regular polling of the file is used.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation
    * was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
+   * @param cancellable A Cancellable object.
    * @param flags A set of FileMonitorFlags.
-   * @param A Cancellable object.
    * @return A FileMonitor for the file.
    *
    * @newin{2,18}
@@ -1705,12 +1710,11 @@ public:
 
   /** Obtains a file monitor for the given file. If no file notification
    * mechanism exists, then regular polling of the file is used.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation
    * was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
    * @param flags A set of FileMonitorFlags.
-   * @param A Cancellable object.
    * @return A FileMonitor for the file.
    *
    * @newin{2,18}
@@ -1724,18 +1728,19 @@ public:
   * Using @a start_operation, you can request callbacks when, for instance,
   * passwords are needed during authentication.
   *
-  * When this operation has completed, @a slot will be called 
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with start_mountable_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
   *
-  * @param slot: A callback to call when the request is satisfied.
+  * @param slot A callback to call when the request is satisfied.
   * @param cancellable A Cancellable object.
+  * @param start_operation A MountOperation, or <tt>0</tt> to avoid user interaction.
   * @param flags Flags affecting the operation
   *
-  * @newin2p24
+  * @newin{2,24}
   */
   void start_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const Glib::RefPtr<MountOperation>& start_operation, DriveStartFlags flags = DRIVE_START_NONE);
 
@@ -1743,18 +1748,18 @@ public:
   * Using @a start_operation, you can request callbacks when, for instance,
   * passwords are needed during authentication.
   *
-  * When this operation has completed, @a slot will be called 
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with start_mountable_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
   *
-  * @param slot: A callback to call when the request is satisfied.
-  * @param cancellable A Cancellable object.
+  * @param slot A callback to call when the request is satisfied.
+  * @param start_operation A MountOperation, or <tt>0</tt> to avoid user interaction.
   * @param flags Flags affecting the operation
   *
-  * @newin2p24
+  * @newin{2,24}
   */
   void start_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<MountOperation>& start_operation, DriveStartFlags flags =  DRIVE_START_NONE);
   _IGNORE(g_file_start_mountable)
@@ -1767,18 +1772,19 @@ public:
   * Using @a start_operation, you can request callbacks when, for instance,
   * passwords are needed during authentication.
   *
-  * When this operation has completed, @a slot will be called 
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with stop_mountable_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
   *
-  * @param slot: A callback to call when the request is satisfied.
+  * @param slot A callback to call when the request is satisfied.
   * @param cancellable A Cancellable object.
+  * @param start_operation A MountOperation, or <tt>0</tt> to avoid user interaction.
   * @param flags Flags affecting the operation
   *
-  * @newin2p24
+  * @newin{2,24}
   */
   void stop_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const Glib::RefPtr<MountOperation>& start_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
 
@@ -1787,18 +1793,18 @@ public:
   * Using @a start_operation, you can request callbacks when, for instance,
   * passwords are needed during authentication.
   *
-  * When this operation has completed, @a slot will be called 
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with stop_mountable_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
   *
-  * @param slot: A callback to call when the request is satisfied.
-  * @param start_operation A Cancellable object.
+  * @param slot A callback to call when the request is satisfied.
+  * @param start_operation A MountOperation, or <tt>0</tt> to avoid user interaction.
   * @param flags Flags affecting the operation
   *
-  * @newin2p24
+  * @newin{2,24}
   */
   void stop_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<MountOperation>& start_operation, MountUnmountFlags flags = MOUNT_UNMOUNT_NONE);
   _IGNORE(g_file_stop_mountable)
@@ -1811,17 +1817,17 @@ public:
   * Using @a start_operation, you can request callbacks when, for instance,
   * passwords are needed during authentication.
   *
-  * When this operation has completed, @a slot will be called 
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with stop_mountable_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
   *
   * @param slot: A callback to call when the request is satisfied.
   * @param cancellable A Cancellable object.
   *
-  * @newin2p24
+  * @newin{2,24}
   */
   void poll_mountable(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
 
@@ -1830,16 +1836,16 @@ public:
   * Using @a start_operation, you can request callbacks when, for instance,
   * passwords are needed during authentication.
   *
-  * When this operation has completed, @a slot will be called 
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with stop_mountable_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
   *
   * @param slot: A callback to call when the request is satisfied.
   *
-  * @newin2p24
+  * @newin{2,24}
   */
   void poll_mountable(const SlotAsyncReady& slot);
   _IGNORE(g_file_poll_mountable)
@@ -1852,46 +1858,46 @@ public:
                errthrow)
 
   //TODO: Something better than char*& for contents?
-  /** Loads the content of the file into memory, returning the size of the data. 
+  /** Loads the content of the file into memory, returning the size of the data.
    * The data is always zero terminated, but this is not included in the resultant @a length.
-   * 
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   *
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Gio::Error exception with CANCELLED will be returned.
    *
    * @param cancellable A cancellable object.
-   * @param contents A location to place the contents of the file. 
+   * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
    * @param etag_out A location to place the current entity tag for the file.
    */
   bool load_contents(const Glib::RefPtr<Cancellable>& cancellable, char*& contents, gsize& length, std::string& etag_out);
 
-  /** Loads the content of the file into memory, returning the size of the data. 
+  /** Loads the content of the file into memory, returning the size of the data.
    * The data is always zero terminated, but this is not included in the resultant @a length.
-   * 
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   *
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Gio::Error exception with CANCELLED will be returned.
    *
    * @param cancellable A cancellable object.
-   * @param contents A location to place the contents of the file. 
+   * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
    * @newin{2,22}
    */
   bool load_contents(const Glib::RefPtr<Cancellable>& cancellable, char*& contents, gsize& length);
 
   //TODO: Something better than char*& for contents?
-  /** Loads the content of the file into memory, returning the size of the data. 
+  /** Loads the content of the file into memory, returning the size of the data.
    * The data is always zero terminated, but this is not included in the resultant @a length.
    *
-   * @param contents A location to place the contents of the file. 
+   * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
    * @param etag_out A location to place the current entity tag for the file.
    */
   bool load_contents(char*& contents, gsize& length, std::string& etag_out);
 
-  /** Loads the content of the file into memory, returning the size of the data. 
+  /** Loads the content of the file into memory, returning the size of the data.
    * The data is always zero terminated, but this is not included in the resultant @a length.
    *
-   * @param contents A location to place the contents of the file. 
+   * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
    * @newin{2,22}
    */
@@ -1901,10 +1907,10 @@ public:
   /** Starts an asynchronous load of the file's contents.
    * For more details, see load_contents() which is the synchronous version of this call.
    *
-   * When the load operation has completed, the @a slot will be called. To finish the operation, 
+   * When the load operation has completed, the @a slot will be called. To finish the operation,
    * call load_contents_finish() with the AsyncResult provided to the @a slot.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Gio::Error with CANCELLED will be thrown.
    *
    * @param slot A callback slot which will be called when the request is satisfied.
@@ -1915,7 +1921,7 @@ public:
   /** Starts an asynchronous load of the file's contents.
    * For more details, see load_contents() which is the synchronous version of this call.
    *
-   * When the load operation has completed, the @a slot will be called. To finish the operation, 
+   * When the load operation has completed, the @a slot will be called. To finish the operation,
    * call load_contents_finish() with the AsyncResult provided to the @a slot.
    *
    * @param slot A callback slot which will be called when the request is satisfied.
@@ -1923,27 +1929,27 @@ public:
   void load_contents_async(const SlotAsyncReady& slot);
   _IGNORE(g_file_load_contents_async)
 
-  /** Finishes an asynchronous load of the @a file's contents. 
-   * The contents are placed in @a contents, and @a length is set to the 
-   * size of the @a contents string. If @a etag_out is present, it will be 
+  /** Finishes an asynchronous load of the @a file's contents.
+   * The contents are placed in @a contents, and @a length is set to the
+   * size of the @a contents string. If @a etag_out is present, it will be
    * set to the new entity tag for the @a file.
-   * @param res A AsyncResult.
+   * @param result A AsyncResult.
    * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
    * @param etag_out A location to place the current entity tag for the file.
-   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is 
+   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is
    * present, it will be set appropriately.
    */
   bool load_contents_finish(const Glib::RefPtr<AsyncResult>& result, char*& contents, gsize& length, std::string& etag_out);
 
-  /** Finishes an asynchronous load of the @a file's contents. 
-   * The contents are placed in @a contents, and @a length is set to the 
-   * size of the @a contents string. If @a etag_out is present, it will be 
+  /** Finishes an asynchronous load of the @a file's contents.
+   * The contents are placed in @a contents, and @a length is set to the
+   * size of the @a contents string. If @a etag_out is present, it will be
    * set to the new entity tag for the @a file.
-   * @param res A AsyncResult.
+   * @param result A AsyncResult.
    * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
-   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is 
+   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is
    * present, it will be set appropriately.
    * @newin{2,22}
    */
@@ -1956,13 +1962,13 @@ public:
    */
   typedef sigc::slot<bool, const char*, goffset> SlotReadMore;
 
-  //Note that slot_read_more can be NULL but that would not be a useful method overload, because the documentation says that it would 
+  //Note that slot_read_more can be NULL but that would not be a useful method overload, because the documentation says that it would
   //then be equivalent to load_contents_async.
 
   /** Reads the partial contents of a file.
    * The @a slot_read_more callback slot should be used to stop reading from the file when appropriate. This operation can be finished by load_partial_contents_finish().
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call load_partial_contents_finish() to get the result of the operation.
@@ -1976,7 +1982,7 @@ public:
   /** Reads the partial contents of a file.
    * The @a slot_read_more callback slot should be used to stop reading from the file when appropriate. This operation can be finished by load_partial_contents_finish().
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call load_partial_contents_finish() to get the result of the operation.
@@ -1990,21 +1996,21 @@ public:
 
   /** Finishes an asynchronous partial load operation that was started
    * with load_partial_contents_async().
-   * @param res A AsyncResult.
+   * @param result A AsyncResult.
    * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
    * @param etag_out A location to place the current entity tag for the file.
-   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is 
+   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is
    * present, it will be set appropriately.
    */
   bool load_partial_contents_finish(const Glib::RefPtr<AsyncResult>& result, char*& contents, gsize& length, std::string& etag_out);
 
   /** Finishes an asynchronous partial load operation that was started
    * with load_partial_contents_async().
-   * @param res A AsyncResult.
+   * @param result A AsyncResult.
    * @param contents A location to place the contents of the file.
    * @param length A location to place the length of the contents of the file.
-   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is 
+   * @return <tt>true</tt> if the load was successful. If <tt>false</tt> and @a error is
    * present, it will be set appropriately.
    * @newin{2,22}
    */
@@ -2012,21 +2018,21 @@ public:
   _IGNORE(g_file_load_partial_contents_finish)
 
   /** Replaces the contents of the file with @a contents of @a length bytes.
-   *  
+   *
    * If @a etag is specified (not an empty string) any existing file must have that etag, or
    * a Gio::Error with WRONG_ETAG will be thrown.
-   * 
+   *
    * If @a make_backup is <tt>true</tt>, this function will attempt to make a backup of the file.
-   * 
+   *
    * The operation can be cancelled by
    * triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-   * 
+   * was cancelled, a Gio::Error with CANCELLED will be thrown.
+   *
    * The returned @a new_etag  can be used to verify that the file hasn't changed the
    * next time it is saved over.
    * @param contents A string containing the new contents for the file.
    * @param length The length of @a contents in bytes.
-   * @param etag The old entity tag 
+   * @param etag The old entity tag
    * for the document.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
@@ -2037,17 +2043,17 @@ public:
   void replace_contents(const char* contents, gsize length, const std::string& etag, std::string& new_etag, const Glib::RefPtr<Cancellable>& cancellable, bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
   /** Replaces the contents of the file with @a contents of @a length bytes.
-   *  
+   *
    * If @a etag is specified (not an empty string) any existing file must have that etag, or
    * a Gio::Error with WRONG_ETAG will be thrown.
-   * 
+   *
    * If @a make_backup is <tt>true</tt>, this function will attempt to make a backup of the file.
-   * 
+   *
    * The returned @a new_etag  can be used to verify that the file hasn't changed the
    * next time it is saved over.
    * @param contents A string containing the new contents for the file.
    * @param length The length of @a contents in bytes.
-   * @param etag The old entity tag 
+   * @param etag The old entity tag
    * for the document.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
@@ -2057,20 +2063,20 @@ public:
   void replace_contents(const char* contents, gsize length, const std::string& etag, std::string& new_etag, bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
   /** Replaces the contents of the file with @a contents.
-   *  
+   *
    * If @a etag is specified (not an empty string) any existing file must have that etag, or
    * a Gio::Error with WRONG_ETAG will be thrown.
-   * 
+   *
    * If @a make_backup is <tt>true</tt>, this function will attempt to make a backup of the file.
-   * 
+   *
    * The operation can be cancelled by
    * triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-   * 
+   * was cancelled, a Gio::Error with CANCELLED will be thrown.
+   *
    * The returned @a new_etag  can be used to verify that the file hasn't changed the
    * next time it is saved over.
    * @param contents A string containing the new contents for the file.
-   * @param etag The old entity tag 
+   * @param etag The old entity tag
    * for the document.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
@@ -2081,16 +2087,16 @@ public:
   void replace_contents(const std::string& contents, const std::string& etag, std::string& new_etag, const Glib::RefPtr<Cancellable>& cancellable, bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
   /** Replaces the contents of the file with @a contents.
-   *  
+   *
    * If @a etag is specified (not an empty string) any existing file must have that etag, or
    * a Gio::Error with WRONG_ETAG will be thrown.
-   * 
+   *
    * If @a make_backup is <tt>true</tt>, this function will attempt to make a backup of the file.
-   * 
+   *
    * The returned @a new_etag  can be used to verify that the file hasn't changed the
    * next time it is saved over.
    * @param contents A string containing the new contents for the file.
-   * @param etag The old entity tag 
+   * @param etag The old entity tag
    * for the document.
    * @param make_backup <tt>true</tt> if a backup should be created.
    * @param flags A set of FileCreateFlags.
@@ -2104,18 +2110,18 @@ public:
   //TODO: Add replace_contents() without the etags?
 
 
- /** Starts an asynchronous replacement of the file with the given 
-  * @a contents of @a length bytes. @a etag will replace the document's 
+ /** Starts an asynchronous replacement of the file with the given
+  * @a contents of @a length bytes. @a etag will replace the document's
   * current entity tag.
-  * 
-  * When this operation has completed, @a slot will be called 
+  *
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with replace_contents_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-  * 
-  * If @a make_backup is true, this function will attempt to 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
+  *
+  * If @a make_backup is true, this function will attempt to
   * make a backup of the file.
   *
   * @param slot: A callback to call when the request is satisfied.
@@ -2128,14 +2134,14 @@ public:
   */
   void replace_contents_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const char* contents, gsize length, const std::string& etag, bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
- /** Starts an asynchronous replacement of the file with the given 
-  * @a contents of @a length bytes. @a etag will replace the document's 
+ /** Starts an asynchronous replacement of the file with the given
+  * @a contents of @a length bytes. @a etag will replace the document's
   * current entity tag.
-  * 
-  * When this operation has completed, @a slot will be called 
+  *
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with replace_contents_finish().
-  * 
-  * If @a make_backup is true, this function will attempt to 
+  *
+  * If @a make_backup is true, this function will attempt to
   * make a backup of the file.
   *
   * @param slot: A callback to call when the request is satisfied.
@@ -2147,18 +2153,18 @@ public:
   */
   void replace_contents_async(const SlotAsyncReady& slot, const char* contents, gsize length, const std::string& etag, bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
- /** Starts an asynchronous replacement of the file with the given 
-  * @a contents of @a length bytes. @a etag will replace the document's 
+ /** Starts an asynchronous replacement of the file with the given
+  * @a contents of @a length bytes. @a etag will replace the document's
   * current entity tag.
-  * 
-  * When this operation has completed, @a slot will be called 
+  *
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with replace_contents_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-  * 
-  * If @a make_backup is true, this function will attempt to 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
+  *
+  * If @a make_backup is true, this function will attempt to
   * make a backup of the file.
   *
   * @param slot: A callback to call when the request is satisfied.
@@ -2170,18 +2176,18 @@ public:
   */
   void replace_contents_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const std::string& contents, const std::string& etag, bool make_backup = false, FileCreateFlags flags = FILE_CREATE_NONE);
 
- /** Starts an asynchronous replacement of the file with the given 
-  * @a contents. @a etag will replace the document's 
+ /** Starts an asynchronous replacement of the file with the given
+  * @a contents. @a etag will replace the document's
   * current entity tag.
-  * 
-  * When this operation has completed, @a slot will be called 
+  *
+  * When this operation has completed, @a slot will be called
   * and the operation can be finalized with replace_contents_finish().
-  * 
+  *
   * The operation can be cancelled by
   * triggering the cancellable object from another thread. If the operation
-  * was cancelled, a Gio::Error with CANCELLED will be thrown. 
-  * 
-  * If @a make_backup is true, this function will attempt to 
+  * was cancelled, a Gio::Error with CANCELLED will be thrown.
+  *
+  * If @a make_backup is true, this function will attempt to
   * make a backup of the file.
   *
   * @param slot: A callback to call when the request is satisfied.
@@ -2195,16 +2201,16 @@ public:
   _IGNORE(g_file_replace_contents_async)
 
   /** Finishes an asynchronous replace of the given file . See
-   * replace_contents_async(). Sets @a new_etag to the new entity 
+   * replace_contents_async(). Sets @a new_etag to the new entity
    * tag for the document.
    * @param result A AsyncResult.
-   * @param new_etag A location of a new entity tag 
+   * @param new_etag A location of a new entity tag
    * for the document.
    */
   void replace_contents_finish(const Glib::RefPtr<AsyncResult>& result, std::string& etag);
 
   /** Finishes an asynchronous replace of the given file . See
-   * replace_contents_async(). Sets @a new_etag to the new entity 
+   * replace_contents_async(). Sets @a new_etag to the new entity
    * tag for the document.
    * @param result A AsyncResult.
    * for the document.
@@ -2259,11 +2265,11 @@ Glib::RefPtr<Gio::File> wrap(GFile* object, bool take_copy);
 namespace Container_Helpers
 {
 
-/** This specialization of TypeTraits exists 
- * because the default use of Glib::wrap(GObject*), 
+/** This specialization of TypeTraits exists
+ * because the default use of Glib::wrap(GObject*),
  * instead of a specific Glib::wrap(GSomeInterface*),
  * would not return a wrapper for an interface.
- */ 
+ */
 template <>
 struct TypeTraits< Glib::RefPtr<Gio::File> >
 {
@@ -2276,7 +2282,7 @@ struct TypeTraits< Glib::RefPtr<Gio::File> >
 
   static CppType to_cpp_type    (const CType& item)
   {
-    //Use a specific Glib::wrap() function, 
+    //Use a specific Glib::wrap() function,
     //because CType has the specific type (not just GObject):
     return Glib::wrap(item, true /* take_copy */);
   }
index 5bbd25a..dc3903a 100644 (file)
@@ -27,18 +27,18 @@ namespace Gio
 /** Key-Value paired file attributes.
  * File attributes in GIO consist of a list of key-value pairs.
  *
- * Keys are strings that contain a key namespace and a key name, separated by a colon, e.g. "namespace:keyname". 
- * Namespaces are included to sort key-value pairs by namespaces for relevance. Keys can be retreived using wildcards, 
+ * Keys are strings that contain a key namespace and a key name, separated by a colon, e.g. "namespace:keyname".
+ * Namespaces are included to sort key-value pairs by namespaces for relevance. Keys can be retreived using wildcards,
  * e.g. "standard::*" will return all of the keys in the "standard" namespace.
  *
- * Values are stored within the list in Gio::FileAttributeValue structures. Values can store different types, listed in the enum 
+ * Values are stored within the list in Gio::FileAttributeValue structures. Values can store different types, listed in the enum
  * Gio::FileAttributeType. Upon creation of a Gio::FileAttributeValue, the type will be set to Gio::FILE_ATTRIBUTE_TYPE_INVALID.
  *
- * The list of possible attributes for a filesystem (pointed to by a Gio::File) is availible as a Gio::FileAttributeInfoList. 
+ * The list of possible attributes for a filesystem (pointed to by a Gio::File) is availible as a Gio::FileAttributeInfoList.
  * This list is queryable by key names as indicated earlier.
  *
- * Classes that implement Gio::FileIface will create a Gio::FileAttributeInfoList and install default keys and values for their given file 
- * system, architecture, and other possible implementation details (e.g., on a UNIX system, a file attribute key will be registered for 
+ * Classes that implement Gio::FileIface will create a Gio::FileAttributeInfoList and install default keys and values for their given file
+ * system, architecture, and other possible implementation details (e.g., on a UNIX system, a file attribute key will be registered for
  * the user id for a given file).
  *
  * See http://library.gnome.org/devel/gio/unstable/gio-GFileAttribute.html for the list of default namespaces and the list of default keys.
@@ -64,7 +64,7 @@ public:
    */
   bool empty() const;
 
-  /** Gets the file attribute with the name name from list. 
+  /** Gets the file attribute with the name name from list.
    * @param name The name of the attribute to lookup.
    * @result A FileAttributeInfo for the name.
    */
index 439971f..85cb75e 100644 (file)
@@ -37,14 +37,14 @@ class File;
 //TODO: Consider wrapping this like a std::iterator (or at least renaming it), though the asyncness probably makes that unsuitable.
 
 /** Enumerated Files Routines.
- * FileEnumerator allows you to operate on a set of Gio::Files, returning a Gio::FileInfo instance for each file enumerated 
+ * FileEnumerator allows you to operate on a set of Gio::Files, returning a Gio::FileInfo instance for each file enumerated
  * (e.g. Gio::File::enumerate_children() will return a FileEnumerator for each of the children within a directory).
  *
- * To get the next file's information from a Gio::FileEnumerator, use next_file() or its asynchronous version, next_file_async(). 
- * Note that the asynchronous version will return a list of Gio::FileInfos, whereas the synchronous version will only return the next 
+ * To get the next file's information from a Gio::FileEnumerator, use next_file() or its asynchronous version, next_file_async().
+ * Note that the asynchronous version will return a list of Gio::FileInfos, whereas the synchronous version will only return the next
  * file in the enumerator.
  *
- * To close a Gio::FileEnumerator, use FileEnumerator::close(), or its asynchronous version, close_async(). Once a FileEnumerator is closed, 
+ * To close a Gio::FileEnumerator, use FileEnumerator::close(), or its asynchronous version, close_async(). Once a FileEnumerator is closed,
  * no further actions may be performed on it.
  *
  * @newin{2,16}
@@ -63,16 +63,16 @@ public:
                errthrow)
 
 
-  /** Request information for a number of files from the enumerator asynchronously. 
+  /** Request information for a number of files from the enumerator asynchronously.
    * When all I/O for the operation is finished the callback slot will be called with the requested information.
    *
-   * The callback could be called with less than num_files files in case of error or at the end of the enumerator. 
-   * In case of a partial error the callback will be called with any succeeding items and no error, and on the next request the error will be reported. 
+   * The callback could be called with less than num_files files in case of error or at the end of the enumerator.
+   * In case of a partial error the callback will be called with any succeeding items and no error, and on the next request the error will be reported.
    * If a request is cancelled the callback will be called with ERROR_CANCELLED.
    *
    * During an async request no other sync and async calls are allowed, and will result in ERROR_PENDING errors.
    *
-   * Any outstanding I/O request with higher priority (lower numerical value) will be executed before an outstanding request with lower priority. 
+   * Any outstanding I/O request with higher priority (lower numerical value) will be executed before an outstanding request with lower priority.
    * The default priority is PRIORITY_DEFAULT.
    * @param slot A callback to call when the request is satisfied.
    * @param cancellable An cancellable object which can be used to cancel the request.
@@ -81,16 +81,16 @@ public:
    */
   void next_files_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int num_files = 1, int io_priority = Glib::PRIORITY_DEFAULT);
 
-  /** Request information for a number of files from the enumerator asynchronously. 
+  /** Request information for a number of files from the enumerator asynchronously.
    * When all I/O for the operation is finished the callback slot will be called with the requested information.
    *
-   * The callback could be called with less than num_files files in case of error or at the end of the enumerator. 
-   * In case of a partial error the callback will be called with any succeeding items and no error, and on the next request the error will be reported. 
+   * The callback could be called with less than num_files files in case of error or at the end of the enumerator.
+   * In case of a partial error the callback will be called with any succeeding items and no error, and on the next request the error will be reported.
    * If a request is cancelled the callback will be called with ERROR_CANCELLED.
    *
    * During an async request no other sync and async calls are allowed, and will result in ERROR_PENDING errors.
    *
-   * Any outstanding I/O request with higher priority (lower numerical value) will be executed before an outstanding request with lower priority. 
+   * Any outstanding I/O request with higher priority (lower numerical value) will be executed before an outstanding request with lower priority.
    * The default priority is PRIORITY_DEFAULT.
    * @param slot A callback to call when the request is satisfied.
    * @param num_files The number of file info objects to request.
@@ -110,7 +110,7 @@ public:
    *
    * See close(), which is the synchronous version of this function.
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. 
+   * The operation can be cancelled by triggering the cancellable object from another thread.
    * If the operation was cancelled, a Gio::Error with CANCELLED will be thrown by close_finish().
    *
    * @param io_priority The I/O priority of the request.
index f587e8e..de8a330 100644 (file)
@@ -65,8 +65,8 @@ public:
 
   _WRAP_METHOD(Glib::RefPtr<FileAttributeMatcher> create_difference(const Glib::RefPtr<const FileAttributeMatcher>& subtract) const, g_file_attribute_matcher_subtract)
 
-  _WRAP_METHOD(bool matches(const std::string& full_name) const, g_file_attribute_matcher_matches)
-  _WRAP_METHOD(bool matches_only(const std::string& full_name) const, g_file_attribute_matcher_matches_only)
+  _WRAP_METHOD(bool matches(const std::string& attribute) const, g_file_attribute_matcher_matches)
+  _WRAP_METHOD(bool matches_only(const std::string& attribute) const, g_file_attribute_matcher_matches_only)
   _WRAP_METHOD(bool enumerate_namespace(const std::string& ns), g_file_attribute_matcher_enumerate_namespace)
   _WRAP_METHOD(std::string enumerate_next(), g_file_attribute_matcher_enumerate_next)
   _WRAP_METHOD(std::string to_string() const, g_file_attribute_matcher_to_string)
@@ -90,7 +90,7 @@ public:
 
   _WRAP_METHOD(Glib::RefPtr<FileInfo> dup() const,
                g_file_info_dup)
-  _WRAP_METHOD(void copy_into(Glib::RefPtr<FileInfo>& dest) const,
+  _WRAP_METHOD(void copy_into(Glib::RefPtr<FileInfo>& dest_info) const,
                g_file_info_copy_into)
   _WRAP_METHOD(bool has_attribute(const std::string& attribute) const,
                g_file_info_has_attribute)
@@ -141,19 +141,19 @@ public:
 #m4 _CONVERSION(`const std::vector<Glib::ustring>&',`char**',`const_cast<char**>(Glib::ArrayHandler<Glib::ustring>::vector_to_array($3).data())')
   _WRAP_METHOD(void set_attribute_strings(const std::string& attribute, const std::vector<Glib::ustring>& attr_value), g_file_info_set_attribute_stringv)
 
-  _WRAP_METHOD(void set_attribute_byte_string(const std::string& attribute, const std::string& value),
+  _WRAP_METHOD(void set_attribute_byte_string(const std::string& attribute, const std::string& attr_value),
                g_file_info_set_attribute_byte_string)
-  _WRAP_METHOD(void set_attribute_boolean(const std::string& attribute, bool value),
+  _WRAP_METHOD(void set_attribute_boolean(const std::string& attribute, bool attr_value),
                g_file_info_set_attribute_boolean)
-  _WRAP_METHOD(void set_attribute_uint32(const std::string& attribute, guint32 value),
+  _WRAP_METHOD(void set_attribute_uint32(const std::string& attribute, guint32 attr_value),
                g_file_info_set_attribute_uint32)
-  _WRAP_METHOD(void set_attribute_int32(const std::string& attribute, gint32 value),
+  _WRAP_METHOD(void set_attribute_int32(const std::string& attribute, gint32 attr_value),
                g_file_info_set_attribute_int32)
-  _WRAP_METHOD(void set_attribute_uint64(const std::string& attribute, guint64 value),
+  _WRAP_METHOD(void set_attribute_uint64(const std::string& attribute, guint64 attr_value),
                g_file_info_set_attribute_uint64)
-  _WRAP_METHOD(void set_attribute_int64(const std::string& attribute, gint64 value),
+  _WRAP_METHOD(void set_attribute_int64(const std::string& attribute, gint64 attr_value),
                g_file_info_set_attribute_int64)
-  _WRAP_METHOD(void set_attribute_object(const std::string& attribute, const Glib::RefPtr<Glib::Object>& object),
+  _WRAP_METHOD(void set_attribute_object(const std::string& attribute, const Glib::RefPtr<Glib::Object>& attr_value),
                g_file_info_set_attribute_object)
   _WRAP_METHOD(void clear_status(), g_file_info_clear_status)
 
index 08d5626..476e391 100644 (file)
@@ -31,7 +31,7 @@ namespace Gio
 
 /** FileInputStream provides input streams that take their content from a file.
  *
- * FileInputStream implements Seekable, which allows the input stream to jump to arbitrary positions in the file, 
+ * FileInputStream implements Seekable, which allows the input stream to jump to arbitrary positions in the file,
  * provided the file system of the file allows it.
  * Use the methods of the Seekable base class for seeking and positioning.
  *
@@ -39,8 +39,8 @@ namespace Gio
  *
  * @newin{2,16}
  */
-class FileInputStream 
-: public Gio::InputStream, 
+class FileInputStream
+: public Gio::InputStream,
   public Seekable
 {
   _CLASS_GOBJECT(FileInputStream, GFileInputStream, G_FILE_INPUT_STREAM, Gio::InputStream, GInputStream)
@@ -48,10 +48,10 @@ class FileInputStream
 
 public:
 
-  /** Queries a file input stream the given @a attributes. This function blocks 
-   * while querying the stream. For the asynchronous (non-blocking) version 
-   * of this function, see query_info_async(). While the 
-   * stream is blocked, the stream will set the pending flag internally, and 
+  /** Queries a file input stream the given @a attributes. This function blocks
+   * while querying the stream. For the asynchronous (non-blocking) version
+   * of this function, see query_info_async(). While the
+   * stream is blocked, the stream will set the pending flag internally, and
    * any other operations on the stream will throw a Gio::Error with PENDING.
    *
    * @param attributes A file attribute query string.
@@ -60,10 +60,10 @@ public:
    */
   Glib::RefPtr<FileInfo> query_info(const Glib::RefPtr<Cancellable>& cancellable, const std::string& attributes = "*");
 
-  /** Queries a file input stream the given @a attributes. This function blocks 
-   * while querying the stream. For the asynchronous (non-blocking) version 
-   * of this function, see query_info_async(). While the 
-   * stream is blocked, the stream will set the pending flag internally, and 
+  /** Queries a file input stream the given @a attributes. This function blocks
+   * while querying the stream. For the asynchronous (non-blocking) version
+   * of this function, see query_info_async(). While the
+   * stream is blocked, the stream will set the pending flag internally, and
    * any other operations on the stream will throw a Gio::Error with PENDING.
    *
    * @param attributes A file attribute query string.
@@ -75,7 +75,7 @@ public:
 
   /** Queries the stream information asynchronously. For the synchronous version of this function, see query_info().
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call query_info_finish() to get the result of the operation.
index 474dd02..b015268 100644 (file)
@@ -29,7 +29,7 @@ namespace Gio
 
 /** FileIOStream provides input streams that take their content from a file.
  *
- * FileInputStream implements Seekable, which allows the input stream to jump to arbitrary positions in the file, 
+ * FileInputStream implements Seekable, which allows the input stream to jump to arbitrary positions in the file,
  * provided the file system of the file allows it.
  * Use the methods of the Seekable base class for seeking and positioning.
  *
@@ -46,10 +46,10 @@ class FileIOStream
 
 public:
 
-  /** Queries a file input stream the given @a attributes. This function blocks 
-   * while querying the stream. For the asynchronous (non-blocking) version 
-   * of this function, see query_info_async(). While the 
-   * stream is blocked, the stream will set the pending flag internally, and 
+  /** Queries a file input stream the given @a attributes. This function blocks
+   * while querying the stream. For the asynchronous (non-blocking) version
+   * of this function, see query_info_async(). While the
+   * stream is blocked, the stream will set the pending flag internally, and
    * any other operations on the stream will throw a Gio::Error with PENDING.
    *
    * @param attributes A file attribute query string.
@@ -58,10 +58,10 @@ public:
    */
   Glib::RefPtr<FileInfo> query_info(const Glib::RefPtr<Cancellable>& cancellable, const std::string& attributes = "*");
 
-  /** Queries a file input stream the given @a attributes. This function blocks 
-   * while querying the stream. For the asynchronous (non-blocking) version 
-   * of this function, see query_info_async(). While the 
-   * stream is blocked, the stream will set the pending flag internally, and 
+  /** Queries a file input stream the given @a attributes. This function blocks
+   * while querying the stream. For the asynchronous (non-blocking) version
+   * of this function, see query_info_async(). While the
+   * stream is blocked, the stream will set the pending flag internally, and
    * any other operations on the stream will throw a Gio::Error with PENDING.
    *
    * @param attributes A file attribute query string.
@@ -73,7 +73,7 @@ public:
 
   /** Queries the stream information asynchronously. For the synchronous version of this function, see query_info().
    *
-   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled, 
+   * The operation can be cancelled by triggering the cancellable object from another thread. If the operation was cancelled,
    * a Gio::Error with CANCELLED will be thrown.
    *
    * When the operation is finished, @a slot will be called. You can then call query_info_finish() to get the result of the operation.
index db061b1..5e8e44b 100644 (file)
@@ -113,6 +113,14 @@ giomm_files_any_hg =                       \
        tcpconnection.hg                \
        threadedsocketservice.hg        \
        themedicon.hg                   \
+       tlscertificate.hg               \
+       tlsclientconnection.hg          \
+       tlsconnection.hg                \
+       tlsdatabase.hg                  \
+       tlsfiledatabase.hg              \
+       tlsinteraction.hg               \
+       tlspassword.hg                  \
+       tlsserverconnection.hg          \
        volume.hg                       \
        volumemonitor.hg                \
        zlibdecompressor.hg             \
index fbbc851..d5663d4 100644 (file)
@@ -32,10 +32,10 @@ _WRAP_ENUM(FileMonitorEvent, GFileMonitorEvent, NO_GTYPE)
 class File;
 
 /** Monitors a file or directory for changes.
- * To obtain a FileMonitor for a file or directory, use File::monitor_file() or 
+ * To obtain a FileMonitor for a file or directory, use File::monitor_file() or
  * File::monitor_directory().
- * 
- * To get informed about changes to the file or directory you are monitoring, 
+ *
+ * To get informed about changes to the file or directory you are monitoring,
  * connect to signal_changed().
  *
  * @newin{2,16}
@@ -46,7 +46,7 @@ class FileMonitor : public Glib::Object
 protected:
 
 public:
-  
+
   _WRAP_METHOD(bool cancel(), g_file_monitor_cancel)
   _WRAP_METHOD(bool is_cancelled() const, g_file_monitor_is_cancelled)
   _WRAP_METHOD(void set_rate_limit(int limit_msecs), g_file_monitor_set_rate_limit)
@@ -56,7 +56,7 @@ public:
 
 #m4 _CONVERSION(`GFile*',`const Glib::RefPtr<File>&',`Glib::wrap($3, true)')
   _WRAP_SIGNAL(void changed(const Glib::RefPtr<File>& file, const Glib::RefPtr<File>& other_file, FileMonitorEvent event_type), "changed")
-  
+
   //_WRAP_VFUNC(bool cancel(), cancel);
 
   _WRAP_PROPERTY("rate-limit", int)
index 3910856..773d363 100644 (file)
@@ -30,7 +30,7 @@ namespace Gio
 
 class File;
 
-/** Completes partial file and directory names given a partial string by looking in the file system for clues. 
+/** Completes partial file and directory names given a partial string by looking in the file system for clues.
  * Can return a list of possible completion strings for widget implementation.
  *
  * @newin{2,16}
@@ -45,7 +45,7 @@ public:
   _WRAP_CREATE()
 
   _WRAP_METHOD(std::string get_completion_suffix(const std::string& initial_text) const, g_filename_completer_get_completion_suffix)
-  
+
   #m4 _CONVERSION(`char**',`Glib::StringArrayHandle',`Glib::StringArrayHandle($3, Glib::OWNERSHIP_DEEP)')
   _WRAP_METHOD(Glib::StringArrayHandle get_completions(const std::string& initial_text) const, g_filename_completer_get_completions)
   _WRAP_METHOD(void set_dirs_only(bool dirs_only = true), g_filename_completer_set_dirs_only)
index 4295ea4..4b24272 100644 (file)
@@ -33,11 +33,11 @@ namespace Gio
 
 /** FileOutputStream provides output streams that write their content to a file.
  *
- * FileOutputStream implements Seekable, which allows the output stream to jump 
- * to arbitrary positions in the file and to truncate the file, provided the 
+ * FileOutputStream implements Seekable, which allows the output stream to jump
+ * to arbitrary positions in the file and to truncate the file, provided the
  * file system of the file supports these operations.
- * Use the methods of the Seekable base class for seeking and positioning. 
- * 
+ * Use the methods of the Seekable base class for seeking and positioning.
+ *
  * @ingroup Streams
  *
  * @newin{2,16}
@@ -51,21 +51,21 @@ class FileOutputStream
 
 public:
 
-  /** Queries a file output stream for the given @a attributes . 
-   * This function blocks while querying the stream. For the asynchronous 
-   * version of this function, see query_info_async(). 
-   * While the stream is blocked, the stream will set the pending flag 
-   * internally, and any other operations on the stream will throw a Gio::Error with 
+  /** Queries a file output stream for the given @a attributes .
+   * This function blocks while querying the stream. For the asynchronous
+   * version of this function, see query_info_async().
+   * While the stream is blocked, the stream will set the pending flag
+   * internally, and any other operations on the stream will throw a Gio::Error with
    * PENDING.
-   * 
-   * Can fail if the stream was already closed (with a 
+   *
+   * Can fail if the stream was already closed (with a
    * CLOSED error), the stream has pending operations (with a PENDING error),
-   * or if querying info is not supported for 
+   * or if querying info is not supported for
    * the stream's interface (with a NOT_SUPPORTED error). In
    * all cases of failure, an empty RefPtr will be returned.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED may be thrown, and an empty RefPtr will 
+   * was cancelled, a Gio::Error with CANCELLED may be thrown, and an empty RefPtr will
    * be returned.
    *
    * @param cancellable A Cancellable object.
@@ -74,24 +74,23 @@ public:
    */
   Glib::RefPtr<FileInfo> query_info(const Glib::RefPtr<Cancellable>& cancellable, const std::string& attributes = "*");
 
-  /** Queries a file output stream for the given @a attributes . 
-   * This function blocks while querying the stream. For the asynchronous 
-   * version of this function, see query_info_async(). 
-   * While the stream is blocked, the stream will set the pending flag 
-   * internally, and any other operations on the stream will throw a Gio::Error with 
+  /** Queries a file output stream for the given @a attributes .
+   * This function blocks while querying the stream. For the asynchronous
+   * version of this function, see query_info_async().
+   * While the stream is blocked, the stream will set the pending flag
+   * internally, and any other operations on the stream will throw a Gio::Error with
    * PENDING.
-   * 
-   * Can fail if the stream was already closed (with a CLOSED error), 
+   *
+   * Can fail if the stream was already closed (with a CLOSED error),
    * the stream has pending operations (with an PENDING error),
-   * or if querying info is not supported for 
+   * or if querying info is not supported for
    * the stream's interface (with a NOT_SUPPORTED error). In
    * all cases of failure, an empty RefPtr will be returned.
-   * 
+   *
    * The operation can be cancelled by triggering the cancellable object from another thread. If the operation
-   * was cancelled, a Gio::Error with CANCELLED may be thrown, and an empty RefPtr will 
+   * was cancelled, a Gio::Error with CANCELLED may be thrown, and an empty RefPtr will
    * be returned.
    *
-   * @param cancellable A Cancellable object.
    * @param attributes A file attribute query string.
    * @return A FileInfo for the stream, or an empty RefPtr on error.
    */
@@ -101,17 +100,17 @@ public:
 
 
   /** Queries the stream information asynchronously.
-   * When the operation is finished @a slot will be called. 
-   * You can then call query_info_finish() 
+   * When the operation is finished @a slot will be called.
+   * You can then call query_info_finish()
    * to get the result of the operation.
    *
-   * For the synchronous version of this function, 
-   * see query_info(). 
-   * 
+   * For the synchronous version of this function,
+   * see query_info().
+   *
    * The operation can be cancelled by
    * triggering the cancellable object from another thread. If the operation
    * was cancelled, a Gio::Error with CANCELLED may be thrown
-   * 
+   *
    * @param slot Callback to call when the request is satisfied.
    * @param cancellable A Cancellable object.
    * @param attributes A file attribute query string.
@@ -120,13 +119,13 @@ public:
   void query_info_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, const std::string& attributes = "*", int io_priority = Glib::PRIORITY_DEFAULT);
 
   /** Queries the stream information asynchronously.
-   * When the operation is finished @a slot will be called. 
-   * You can then call query_info_finish() 
+   * When the operation is finished @a slot will be called.
+   * You can then call query_info_finish()
    * to get the result of the operation.
    *
-   * For the synchronous version of this function, 
-   * see query_info(). 
-   * 
+   * For the synchronous version of this function,
+   * see query_info().
+   *
    * @param slot Callback to call when the request is satisfied.
    * @param attributes A file attribute query string.
    * @param io_priority The <io-priority of the request.
@@ -142,7 +141,7 @@ public:
 
   //These seem to be just C convenience functions - they are already in the Seekable base class:
   //See http://bugzilla.gnome.org/show_bug.cgi?id=509990
-  _IGNORE(g_file_output_stream_tell, g_file_output_stream_can_seek, g_file_output_stream_seek, 
+  _IGNORE(g_file_output_stream_tell, g_file_output_stream_can_seek, g_file_output_stream_seek,
           g_file_output_stream_can_truncate, g_file_output_stream_truncate)
 //  _WRAP_METHOD(goffset tell() const, g_file_output_stream_tell)
 //  _WRAP_METHOD(bool can_seek() const, g_file_output_stream_can_seek)
index db2050b..6d09e4d 100644 (file)
@@ -27,8 +27,8 @@ namespace Gio
 {
 
 /** Filter Input Stream.
- * This is a base class for input stream implementations that perform some kind of filtering operation on a base stream. 
- & Typical examples of filtering operations are character set conversion, compression and byte order flipping. 
+ * This is a base class for input stream implementations that perform some kind of filtering operation on a base stream.
+ & Typical examples of filtering operations are character set conversion, compression and byte order flipping.
  *
  * @ingroup Streams
  *
index bb8d3cb..47b5e01 100644 (file)
@@ -28,8 +28,8 @@ namespace Gio
 
 /** Filter Output Stream.
  *
- * This is a base class for output stream implementations that perform some kind of filtering operation on a base stream. 
- * Typical examples of filtering operations are character set conversion, compression and byte order flipping. 
+ * This is a base class for output stream implementations that perform some kind of filtering operation on a base stream.
+ * Typical examples of filtering operations are character set conversion, compression and byte order flipping.
  *
  * @ingroup Streams
  *
index 0e60881..9302b9e 100644 (file)
@@ -1431,6 +1431,31 @@ Since: 2.28
 <return></return>
 </signal>
 
+<enum name="GAppInfoCreateFlags">
+<description>
+Flags used when creating a #GAppInfo.
+
+</description>
+<parameters>
+<parameter name="G_APP_INFO_CREATE_NONE">
+<parameter_description> No flags.
+</parameter_description>
+</parameter>
+<parameter name="G_APP_INFO_CREATE_NEEDS_TERMINAL">
+<parameter_description> Application opens in a terminal window.
+</parameter_description>
+</parameter>
+<parameter name="G_APP_INFO_CREATE_SUPPORTS_URIS">
+<parameter_description> Application supports URI arguments.
+</parameter_description>
+</parameter>
+<parameter name="G_APP_INFO_CREATE_SUPPORTS_STARTUP_NOTIFICATION">
+<parameter_description> Application supports startup notification. Since 2.26
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GApplication::activate">
 <description>
 The ::activate signal is emitted on the primary instance when an
@@ -1527,6 +1552,169 @@ after registration. See g_application_register().
 <return></return>
 </signal>
 
+<enum name="GApplicationFlags">
+<description>
+Flags used to define the behaviour of a #GApplication.
+
+Since: 2.28
+
+</description>
+<parameters>
+<parameter name="G_APPLICATION_FLAGS_NONE">
+<parameter_description> Default
+</parameter_description>
+</parameter>
+<parameter name="G_APPLICATION_IS_SERVICE">
+<parameter_description> Run as a service. In this mode, registration
+fails if the service is already running, and the application will
+stay around for a while when the use count falls to zero.
+</parameter_description>
+</parameter>
+<parameter name="G_APPLICATION_IS_LAUNCHER">
+<parameter_description> Don't try to become the primary instance.
+</parameter_description>
+</parameter>
+<parameter name="G_APPLICATION_HANDLES_OPEN">
+<parameter_description> This application handles opening files (in
+the primary instance). Note that this flag only affects the default
+implementation of local_command_line(), and has no effect if
+%G_APPLICATION_HANDLES_COMMAND_LINE is given.
+See g_application_run() for details.
+</parameter_description>
+</parameter>
+<parameter name="G_APPLICATION_HANDLES_COMMAND_LINE">
+<parameter_description> This application handles command line
+arguments (in the primary instance). Note that this flag only affect
+the default implementation of local_command_line().
+See g_application_run() for details.
+</parameter_description>
+</parameter>
+<parameter name="G_APPLICATION_SEND_ENVIRONMENT">
+<parameter_description> Send the environment of the
+launching process to the primary instance. Set this flag if your
+application is expected to behave differently depending on certain
+environment variables. For instance, an editor might be expected
+to use the &lt;envar&gt;GIT_COMMITTER_NAME&lt;/envar&gt; environment variable
+when editing a git commit message. The environment is available
+to the #GApplication::command-line signal handler, via
+g_application_command_line_getenv().
+</parameter_description>
+</parameter>
+<parameter name="G_APPLICATION_NON_UNIQUE">
+<parameter_description> Make no attempts to do any of the typical
+single-instance application negotiation, even if the application
+ID is given.  The application neither attempts to become the
+owner of the application ID nor does it check if an existing
+owner already exists.  Everything occurs in the local process.
+Since: 2.30.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GAskPasswordFlags">
+<description>
+#GAskPasswordFlags are used to request specific information from the
+user, or to notify the user of their choices in an authentication
+situation.
+
+</description>
+<parameters>
+<parameter name="G_ASK_PASSWORD_NEED_PASSWORD">
+<parameter_description> operation requires a password.
+</parameter_description>
+</parameter>
+<parameter name="G_ASK_PASSWORD_NEED_USERNAME">
+<parameter_description> operation requires a username.
+</parameter_description>
+</parameter>
+<parameter name="G_ASK_PASSWORD_NEED_DOMAIN">
+<parameter_description> operation requires a domain.
+</parameter_description>
+</parameter>
+<parameter name="G_ASK_PASSWORD_SAVING_SUPPORTED">
+<parameter_description> operation supports saving settings.
+</parameter_description>
+</parameter>
+<parameter name="G_ASK_PASSWORD_ANONYMOUS_SUPPORTED">
+<parameter_description> operation supports anonymous users.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GBusNameOwnerFlags">
+<description>
+Flags used in g_bus_own_name().
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_BUS_NAME_OWNER_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT">
+<parameter_description> Allow another message bus connection to claim the name.
+</parameter_description>
+</parameter>
+<parameter name="G_BUS_NAME_OWNER_FLAGS_REPLACE">
+<parameter_description> If another message bus connection owns the name and have
+specified #G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, then take the name from the other connection.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GBusNameWatcherFlags">
+<description>
+Flags used in g_bus_watch_name().
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_BUS_NAME_WATCHER_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_BUS_NAME_WATCHER_FLAGS_AUTO_START">
+<parameter_description> If no-one owns the name when
+beginning to watch the name, ask the bus to launch an owner for the
+name.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GBusType">
+<description>
+An enumeration for well-known message buses.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_BUS_TYPE_STARTER">
+<parameter_description> An alias for the message bus that activated the process, if any.
+</parameter_description>
+</parameter>
+<parameter name="G_BUS_TYPE_NONE">
+<parameter_description> Not a message bus.
+</parameter_description>
+</parameter>
+<parameter name="G_BUS_TYPE_SYSTEM">
+<parameter_description> The system-wide message bus.
+</parameter_description>
+</parameter>
+<parameter name="G_BUS_TYPE_SESSION">
+<parameter_description> The login session message bus.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GCancellable::cancelled">
 <description>
 Emitted when the operation has been cancelled.
@@ -1593,6 +1781,83 @@ cancellable signal should not do something that can block.
 <return></return>
 </signal>
 
+<enum name="GConverterFlags">
+<description>
+Flags used when calling a g_converter_convert().
+
+Since: 2.24
+
+</description>
+<parameters>
+<parameter name="G_CONVERTER_NO_FLAGS">
+<parameter_description> No flags.
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERTER_INPUT_AT_END">
+<parameter_description> At end of input data
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERTER_FLUSH">
+<parameter_description> Flush data
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GConverterResult">
+<description>
+Results returned from g_converter_convert().
+
+Since: 2.24
+
+</description>
+<parameters>
+<parameter name="G_CONVERTER_ERROR">
+<parameter_description> There was an error during conversion.
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERTER_CONVERTED">
+<parameter_description> Some data was consumed or produced
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERTER_FINISHED">
+<parameter_description> The conversion is finished
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERTER_FLUSHED">
+<parameter_description> Flushing is finished
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GCredentialsType">
+<description>
+Enumeration describing different kinds of native credential types.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_CREDENTIALS_TYPE_INVALID">
+<parameter_description> Indicates an invalid native credential type.
+</parameter_description>
+</parameter>
+<parameter name="G_CREDENTIALS_TYPE_LINUX_UCRED">
+<parameter_description> The native credentials type is a &lt;type&gt;struct ucred&lt;/type&gt;.
+</parameter_description>
+</parameter>
+<parameter name="G_CREDENTIALS_TYPE_FREEBSD_CMSGCRED">
+<parameter_description> The native credentials type is a &lt;type&gt;struct cmsgcred&lt;/type&gt;.
+</parameter_description>
+</parameter>
+<parameter name="G_CREDENTIALS_TYPE_OPENBSD_SOCKPEERCRED">
+<parameter_description> The native credentials type is a &lt;type&gt;struct sockpeercred&lt;/type&gt;. Added in 2.30.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDBusAuthObserver::allow-mechanism">
 <description>
 Emitted to check if @mechanism is allowed to be used.
@@ -1642,6 +1907,47 @@ Since: 2.26
 </return>
 </signal>
 
+<enum name="GDBusCallFlags">
+<description>
+Flags used in g_dbus_connection_call() and similar APIs.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_CALL_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_CALL_FLAGS_NO_AUTO_START">
+<parameter_description> The bus must not launch
+an owner for the destination name in response to this method
+invocation.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusCapabilityFlags">
+<description>
+Capabilities negotiated with the remote peer.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_CAPABILITY_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_CAPABILITY_FLAGS_UNIX_FD_PASSING">
+<parameter_description> The connection
+supports exchanging UNIX file descriptors with the remote peer.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDBusConnection::closed">
 <description>
 Emitted when the connection is closed.
@@ -1688,6 +1994,271 @@ remote peer closed its end of the connection.
 <return></return>
 </signal>
 
+<enum name="GDBusConnectionFlags">
+<description>
+Flags used when creating a new #GDBusConnection.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_CONNECTION_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT">
+<parameter_description> Perform authentication against server.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER">
+<parameter_description> Perform authentication against client.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS">
+<parameter_description> When
+authenticating as a server, allow the anonymous authentication
+method.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION">
+<parameter_description> Pass this flag if connecting to a peer that is a
+message bus. This means that the Hello() method will be invoked as part of the connection setup.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING">
+<parameter_description> If set, processing of D-Bus messages is
+delayed until g_dbus_connection_start_message_processing() is called.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusError">
+<description>
+Error codes for the %G_DBUS_ERROR error domain.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_ERROR_FAILED">
+<parameter_description>
+A generic error; &quot;something went wrong&quot; - see the error message for
+more.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_NO_MEMORY">
+<parameter_description>
+There was not enough memory to complete an operation.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SERVICE_UNKNOWN">
+<parameter_description>
+The bus doesn't know how to launch a service to supply the bus name
+you wanted.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_NAME_HAS_NO_OWNER">
+<parameter_description>
+The bus name you referenced doesn't exist (i.e. no application owns
+it).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_NO_REPLY">
+<parameter_description>
+No reply to a message expecting one, usually means a timeout occurred.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_IO_ERROR">
+<parameter_description>
+Something went wrong reading or writing to a socket, for example.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_BAD_ADDRESS">
+<parameter_description>
+A D-Bus bus address was malformed.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_NOT_SUPPORTED">
+<parameter_description>
+Requested operation isn't supported (like ENOSYS on UNIX).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_LIMITS_EXCEEDED">
+<parameter_description>
+Some limited resource is exhausted.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_ACCESS_DENIED">
+<parameter_description>
+Security restrictions don't allow doing what you're trying to do.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_AUTH_FAILED">
+<parameter_description>
+Authentication didn't work.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_NO_SERVER">
+<parameter_description>
+Unable to connect to server (probably caused by ECONNREFUSED on a
+socket).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_TIMEOUT">
+<parameter_description>
+Certain timeout errors, possibly ETIMEDOUT on a socket.  Note that
+%G_DBUS_ERROR_NO_REPLY is used for message reply timeouts. Warning:
+this is confusingly-named given that %G_DBUS_ERROR_TIMED_OUT also
+exists. We can't fix it for compatibility reasons so just be
+careful.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_NO_NETWORK">
+<parameter_description>
+No network access (probably ENETUNREACH on a socket).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_ADDRESS_IN_USE">
+<parameter_description>
+Can't bind a socket since its address is in use (i.e. EADDRINUSE).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_DISCONNECTED">
+<parameter_description>
+The connection is disconnected and you're trying to use it.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_INVALID_ARGS">
+<parameter_description>
+Invalid arguments passed to a method call.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_FILE_NOT_FOUND">
+<parameter_description>
+Missing file.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_FILE_EXISTS">
+<parameter_description>
+Existing file and the operation you're using does not silently overwrite.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_UNKNOWN_METHOD">
+<parameter_description>
+Method name you invoked isn't known by the object you invoked it on.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_TIMED_OUT">
+<parameter_description>
+Certain timeout errors, e.g. while starting a service. Warning: this is
+confusingly-named given that %G_DBUS_ERROR_TIMEOUT also exists. We
+can't fix it for compatibility reasons so just be careful.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_MATCH_RULE_NOT_FOUND">
+<parameter_description>
+Tried to remove or modify a match rule that didn't exist.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_MATCH_RULE_INVALID">
+<parameter_description>
+The match rule isn't syntactically valid.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_EXEC_FAILED">
+<parameter_description>
+While starting a new process, the exec() call failed.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_FORK_FAILED">
+<parameter_description>
+While starting a new process, the fork() call failed.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_CHILD_EXITED">
+<parameter_description>
+While starting a new process, the child exited with a status code.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_CHILD_SIGNALED">
+<parameter_description>
+While starting a new process, the child exited on a signal.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_FAILED">
+<parameter_description>
+While starting a new process, something went wrong.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_SETUP_FAILED">
+<parameter_description>
+We failed to setup the environment correctly.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_CONFIG_INVALID">
+<parameter_description>
+We failed to setup the config parser correctly.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_SERVICE_INVALID">
+<parameter_description>
+Bus name was not valid.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_SERVICE_NOT_FOUND">
+<parameter_description>
+Service file not found in system-services directory.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_PERMISSIONS_INVALID">
+<parameter_description>
+Permissions are incorrect on the setuid helper.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_FILE_INVALID">
+<parameter_description>
+Service file invalid (Name, User or Exec missing).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SPAWN_NO_MEMORY">
+<parameter_description>
+Tried to get a UNIX process ID and it wasn't available.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_UNIX_PROCESS_ID_UNKNOWN">
+<parameter_description>
+Tried to get a UNIX process ID and it wasn't available.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_INVALID_SIGNATURE">
+<parameter_description>
+A type signature is not valid.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_INVALID_FILE_CONTENT">
+<parameter_description>
+A file contains invalid syntax or is otherwise broken.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_SELINUX_SECURITY_CONTEXT_UNKNOWN">
+<parameter_description>
+Asked for SELinux security context and it wasn't available.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_ADT_AUDIT_DATA_UNKNOWN">
+<parameter_description>
+Asked for ADT audit data and it wasn't available.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_ERROR_OBJECT_PATH_IN_USE">
+<parameter_description>
+There's already an object with the requested object path.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDBusInterfaceSkeleton::g-authorize-method">
 <description>
 Emitted when a method is invoked by a remote caller and used to
@@ -1742,6 +2313,153 @@ Since: 2.30
 </return>
 </signal>
 
+<enum name="GDBusInterfaceSkeletonFlags">
+<description>
+Flags describing the behavior of a #GDBusInterfaceSkeleton instance.
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="G_DBUS_INTERFACE_SKELETON_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_INTERFACE_SKELETON_FLAGS_HANDLE_METHOD_INVOCATIONS_IN_THREAD">
+<parameter_description> Each method invocation is handled in
+a thread dedicated to the invocation. This means that the method implementation can use blocking IO
+without blocking any other part of the process. It also means that the method implementation must
+use locking to access data structures used by other threads.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusMessageByteOrder">
+<description>
+Enumeration used to describe the byte order of a D-Bus message.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_MESSAGE_BYTE_ORDER_BIG_ENDIAN">
+<parameter_description> The byte order is big endian.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_BYTE_ORDER_LITTLE_ENDIAN">
+<parameter_description> The byte order is little endian.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusMessageFlags">
+<description>
+Message flags used in #GDBusMessage.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_MESSAGE_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED">
+<parameter_description> A reply is not expected.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_FLAGS_NO_AUTO_START">
+<parameter_description> The bus must not launch an
+owner for the destination name in response to this message.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusMessageHeaderField">
+<description>
+Header fields used in #GDBusMessage.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_INVALID">
+<parameter_description> Not a valid header field.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_PATH">
+<parameter_description> The object path.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE">
+<parameter_description> The interface name.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_MEMBER">
+<parameter_description> The method or signal name.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME">
+<parameter_description> The name of the error that occurred.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL">
+<parameter_description> The serial number the message is a reply to.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION">
+<parameter_description> The name the message is intended for.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_SENDER">
+<parameter_description> Unique name of the sender of the message (filled in by the bus).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE">
+<parameter_description> The signature of the message body.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS">
+<parameter_description> The number of UNIX file descriptors that accompany the message.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusMessageType">
+<description>
+Message types used in #GDBusMessage.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_MESSAGE_TYPE_INVALID">
+<parameter_description> Message is of invalid type.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_TYPE_METHOD_CALL">
+<parameter_description> Method call.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_TYPE_METHOD_RETURN">
+<parameter_description> Method reply.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_TYPE_ERROR">
+<parameter_description> Error reply.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_MESSAGE_TYPE_SIGNAL">
+<parameter_description> Signal emission.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDBusObject::interface-added">
 <description>
 Emitted when @interface is added to @object.
@@ -1961,6 +2679,28 @@ Since: 2.30
 <return></return>
 </signal>
 
+<enum name="GDBusObjectManagerClientFlags">
+<description>
+Flags used when constructing a #GDBusObjectManagerClient.
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START">
+<parameter_description> If not set and the
+manager is for a well-known name, then request the bus to launch
+an owner for the name if no-one owns the name. This flag can only
+be used in managers for well-known names.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDBusObjectSkeleton::authorize-method">
 <description>
 Emitted when a method is invoked by a remote caller and used to
@@ -1994,6 +2734,29 @@ Since: 2.30
 </return>
 </signal>
 
+<enum name="GDBusPropertyInfoFlags">
+<description>
+Flags describing the access control of a D-Bus property.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_PROPERTY_INFO_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_PROPERTY_INFO_FLAGS_READABLE">
+<parameter_description> Property is readable.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE">
+<parameter_description> Property is writable.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDBusProxy::g-properties-changed">
 <description>
 Emitted when one or more D-Bus properties on @proxy changes. The
@@ -2057,6 +2820,60 @@ Since: 2.26
 <return></return>
 </signal>
 
+<enum name="GDBusProxyFlags">
+<description>
+Flags used when constructing an instance of a #GDBusProxy derived class.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_PROXY_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES">
+<parameter_description> Don't load properties.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS">
+<parameter_description> Don't connect to signals on the remote object.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START">
+<parameter_description> If not set and the proxy if for a well-known name,
+then request the bus to launch an owner for the name if no-one owns the name. This flag can
+only be used in proxies for well-known names.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES">
+<parameter_description> If set, the property value for any &lt;emphasis&gt;invalidated property&lt;/emphasis&gt; will be (asynchronously) retrieved upon receiving the &lt;ulink url=&quot;http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-properties&quot;&gt;PropertiesChanged&lt;/ulink&gt; D-Bus signal and the property will not cause emission of the #GDBusProxy::g-properties-changed signal. When the value is received the #GDBusProxy::g-properties-changed signal is emitted for the property along with the retrieved value. Since 2.32.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusSendMessageFlags">
+<description>
+Flags used when sending #GDBusMessage&lt;!-- --&gt;s on a #GDBusConnection.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_SEND_MESSAGE_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL">
+<parameter_description> Do not automatically
+assign a serial number from the #GDBusConnection object when
+sending a message.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDBusServer::new-connection">
 <description>
 Emitted when a new authenticated connection has been made. Use
@@ -2100,6 +2917,122 @@ run.
 </return>
 </signal>
 
+<enum name="GDBusServerFlags">
+<description>
+Flags used when creating a #GDBusServer.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_SERVER_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_SERVER_FLAGS_RUN_IN_THREAD">
+<parameter_description> All #GDBusServer::new-connection
+signals will run in separated dedicated threads (see signal for
+details).
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_SERVER_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS">
+<parameter_description> Allow the anonymous
+authentication method.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusSignalFlags">
+<description>
+Flags used when subscribing to signals via g_dbus_connection_signal_subscribe().
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_SIGNAL_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE">
+<parameter_description> Don't actually send the AddMatch
+D-Bus call for this signal subscription.  This gives you more control
+over which match rules you add (but you must add them manually).
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDBusSubtreeFlags">
+<description>
+Flags passed to g_dbus_connection_register_subtree().
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_DBUS_SUBTREE_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES">
+<parameter_description> Method calls to objects not in the enumerated range
+will still be dispatched. This is useful if you want
+to dynamically spawn objects in the subtree.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDataStreamByteOrder">
+<description>
+#GDataStreamByteOrder is used to ensure proper endianness of streaming data sources
+across various machine architectures.
+
+
+</description>
+<parameters>
+<parameter name="G_DATA_STREAM_BYTE_ORDER_BIG_ENDIAN">
+<parameter_description> Selects Big Endian byte order.
+</parameter_description>
+</parameter>
+<parameter name="G_DATA_STREAM_BYTE_ORDER_LITTLE_ENDIAN">
+<parameter_description> Selects Little Endian byte order.
+</parameter_description>
+</parameter>
+<parameter name="G_DATA_STREAM_BYTE_ORDER_HOST_ENDIAN">
+<parameter_description> Selects endianness based on host machine's architecture.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDataStreamNewlineType">
+<description>
+#GDataStreamNewlineType is used when checking for or setting the line endings for a given file.
+
+</description>
+<parameters>
+<parameter name="G_DATA_STREAM_NEWLINE_TYPE_LF">
+<parameter_description> Selects &quot;LF&quot; line endings, common on most modern UNIX platforms.
+</parameter_description>
+</parameter>
+<parameter name="G_DATA_STREAM_NEWLINE_TYPE_CR">
+<parameter_description> Selects &quot;CR&quot; line endings.
+</parameter_description>
+</parameter>
+<parameter name="G_DATA_STREAM_NEWLINE_TYPE_CR_LF">
+<parameter_description> Selects &quot;CR, LF&quot; line ending, common on Microsoft Windows.
+</parameter_description>
+</parameter>
+<parameter name="G_DATA_STREAM_NEWLINE_TYPE_ANY">
+<parameter_description> Automatically try to handle any line ending type.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GDrive::changed">
 <description>
 Emitted when the drive's state has changed.
@@ -2163,6 +3096,245 @@ Since: 2.22
 <return></return>
 </signal>
 
+<enum name="GDriveStartFlags">
+<description>
+Flags used when starting a drive.
+
+Since: 2.22
+
+</description>
+<parameters>
+<parameter name="G_DRIVE_START_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDriveStartStopType">
+<description>
+Enumeration describing how a drive can be started/stopped.
+
+Since: 2.22
+
+</description>
+<parameters>
+<parameter name="G_DRIVE_START_STOP_TYPE_UNKNOWN">
+<parameter_description> Unknown or drive doesn't support
+start/stop.
+</parameter_description>
+</parameter>
+<parameter name="G_DRIVE_START_STOP_TYPE_SHUTDOWN">
+<parameter_description> The stop method will physically
+shut down the drive and e.g. power down the port the drive is
+attached to.
+</parameter_description>
+</parameter>
+<parameter name="G_DRIVE_START_STOP_TYPE_NETWORK">
+<parameter_description> The start/stop methods are used
+for connecting/disconnect to the drive over the network.
+</parameter_description>
+</parameter>
+<parameter name="G_DRIVE_START_STOP_TYPE_MULTIDISK">
+<parameter_description> The start/stop methods will
+assemble/disassemble a virtual drive from several physical
+drives.
+</parameter_description>
+</parameter>
+<parameter name="G_DRIVE_START_STOP_TYPE_PASSWORD">
+<parameter_description> The start/stop methods will
+unlock/lock the disk (for example using the ATA &lt;quote&gt;SECURITY
+UNLOCK DEVICE&lt;/quote&gt; command)
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GEmblemOrigin">
+<description>
+GEmblemOrigin is used to add information about the origin of the emblem
+to #GEmblem.
+
+Since: 2.18
+
+</description>
+<parameters>
+<parameter name="G_EMBLEM_ORIGIN_UNKNOWN">
+<parameter_description> Emblem of unknown origin
+</parameter_description>
+</parameter>
+<parameter name="G_EMBLEM_ORIGIN_DEVICE">
+<parameter_description> Emblem adds device-specific information
+</parameter_description>
+</parameter>
+<parameter name="G_EMBLEM_ORIGIN_LIVEMETADATA">
+<parameter_description> Emblem depicts live metadata, such as &quot;readonly&quot;
+</parameter_description>
+</parameter>
+<parameter name="G_EMBLEM_ORIGIN_TAG">
+<parameter_description> Emblem comes from a user-defined tag, e.g. set by nautilus (in the future)
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileAttributeInfoFlags">
+<description>
+Flags specifying the behaviour of an attribute.
+
+</description>
+<parameters>
+<parameter name="G_FILE_ATTRIBUTE_INFO_NONE">
+<parameter_description> no flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_INFO_COPY_WITH_FILE">
+<parameter_description> copy the attribute values when the file is copied.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_INFO_COPY_WHEN_MOVED">
+<parameter_description> copy the attribute values when the file is moved.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileAttributeStatus">
+<description>
+Used by g_file_set_attributes_from_info() when setting file attributes.
+
+</description>
+<parameters>
+<parameter name="G_FILE_ATTRIBUTE_STATUS_UNSET">
+<parameter_description> Attribute value is unset (empty).
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_STATUS_SET">
+<parameter_description> Attribute value is set.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING">
+<parameter_description> Indicates an error in setting the value.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileAttributeType">
+<description>
+The data types for file attributes.
+
+</description>
+<parameters>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_INVALID">
+<parameter_description> indicates an invalid or uninitalized type.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_STRING">
+<parameter_description> a null terminated UTF8 string.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_BYTE_STRING">
+<parameter_description> a zero terminated string of non-zero bytes.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_BOOLEAN">
+<parameter_description> a boolean value.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_UINT32">
+<parameter_description> an unsigned 4-byte/32-bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_INT32">
+<parameter_description> a signed 4-byte/32-bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_UINT64">
+<parameter_description> an unsigned 8-byte/64-bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_INT64">
+<parameter_description> a signed 8-byte/64-bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_OBJECT">
+<parameter_description> a #GObject.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ATTRIBUTE_TYPE_STRINGV">
+<parameter_description> a %NULL terminated char **. Since 2.22
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileCopyFlags">
+<description>
+Flags used when copying or moving files.
+
+</description>
+<parameters>
+<parameter name="G_FILE_COPY_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_COPY_OVERWRITE">
+<parameter_description> Overwrite any existing files
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_COPY_BACKUP">
+<parameter_description> Make a backup of any existing files.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_COPY_NOFOLLOW_SYMLINKS">
+<parameter_description> Don't follow symlinks.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_COPY_ALL_METADATA">
+<parameter_description> Copy all file metadata instead of just default set used for copy (see #GFileInfo).
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_COPY_NO_FALLBACK_FOR_MOVE">
+<parameter_description> Don't use copy and delete fallback if native move not supported.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_COPY_TARGET_DEFAULT_PERMS">
+<parameter_description> Leaves target file with default perms, instead of setting the source file perms.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileCreateFlags">
+<description>
+Flags used when an operation may create a file.
+
+</description>
+<parameters>
+<parameter name="G_FILE_CREATE_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_CREATE_PRIVATE">
+<parameter_description> Create a file that can only be
+accessed by the current user.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_CREATE_REPLACE_DESTINATION">
+<parameter_description> Replace the destination
+as if it didn't exist before. Don't try to keep any old
+permissions, replace instead of following links. This
+is generally useful if you're doing a &quot;copy over&quot;
+rather than a &quot;save new version of&quot; replace operation.
+You can think of it as &quot;unlink destination&quot; before
+writing to it, although the implementation may not
+be exactly like that. Since 2.20
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GFileMonitor::changed">
 <description>
 Emitted when @file has been changed.
@@ -2195,6 +3367,128 @@ In all the other cases, @other_file will be set to #NULL.
 <return></return>
 </signal>
 
+<enum name="GFileMonitorEvent">
+<description>
+Specifies what type of event a monitor event is.
+
+</description>
+<parameters>
+<parameter name="G_FILE_MONITOR_EVENT_CHANGED">
+<parameter_description> a file changed.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT">
+<parameter_description> a hint that this was probably the last change in a set of changes.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_EVENT_DELETED">
+<parameter_description> a file was deleted.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_EVENT_CREATED">
+<parameter_description> a file was created.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_EVENT_ATTRIBUTE_CHANGED">
+<parameter_description> a file attribute was changed.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_EVENT_PRE_UNMOUNT">
+<parameter_description> the file location will soon be unmounted.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_EVENT_UNMOUNTED">
+<parameter_description> the file location was unmounted.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_EVENT_MOVED">
+<parameter_description> the file was moved.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileMonitorFlags">
+<description>
+Flags used to set what a #GFileMonitor will watch for.
+
+</description>
+<parameters>
+<parameter name="G_FILE_MONITOR_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_WATCH_MOUNTS">
+<parameter_description> Watch for mount events.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_MONITOR_SEND_MOVED">
+<parameter_description> Pair DELETED and CREATED events caused
+by file renames (moves) and send a single G_FILE_MONITOR_EVENT_MOVED
+event instead (NB: not supported on all backends; the default
+behaviour -without specifying this flag- is to send single DELETED
+and CREATED events).
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileQueryInfoFlags">
+<description>
+Flags used when querying a #GFileInfo.
+
+</description>
+<parameters>
+<parameter name="G_FILE_QUERY_INFO_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS">
+<parameter_description> Don't follow symlinks.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileType">
+<description>
+Indicates the file's on-disk type.
+
+</description>
+<parameters>
+<parameter name="G_FILE_TYPE_UNKNOWN">
+<parameter_description> File's type is unknown.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TYPE_REGULAR">
+<parameter_description> File handle represents a regular file.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TYPE_DIRECTORY">
+<parameter_description> File handle represents a directory.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TYPE_SYMBOLIC_LINK">
+<parameter_description> File handle represents a symbolic link
+(Unix systems).
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TYPE_SPECIAL">
+<parameter_description> File is a &quot;special&quot; file, such as a socket, fifo,
+block device, or character device.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TYPE_SHORTCUT">
+<parameter_description> File is a shortcut (Windows systems).
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TYPE_MOUNTABLE">
+<parameter_description> File is a mountable location.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GFilenameCompleter::got-completion-data">
 <description>
 Emitted when the file name completion information comes available.
@@ -2205,6 +3499,274 @@ Emitted when the file name completion information comes available.
 <return></return>
 </signal>
 
+<enum name="GFilesystemPreviewType">
+<description>
+Indicates a hint from the file system whether files should be
+previewed in a file manager. Returned as the value of the key
+#G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW.
+
+</description>
+<parameters>
+<parameter name="G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS">
+<parameter_description> Only preview files if user has explicitly requested it.
+</parameter_description>
+</parameter>
+<parameter name="G_FILESYSTEM_PREVIEW_TYPE_IF_LOCAL">
+<parameter_description> Preview files if user has requested preview of &quot;local&quot; files.
+</parameter_description>
+</parameter>
+<parameter name="G_FILESYSTEM_PREVIEW_TYPE_NEVER">
+<parameter_description> Never preview files.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOErrorEnum">
+<description>
+Error codes returned by GIO functions.
+
+
+</description>
+<parameters>
+<parameter name="G_IO_ERROR_FAILED">
+<parameter_description> Generic error condition for when any operation fails.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_FOUND">
+<parameter_description> File not found.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_EXISTS">
+<parameter_description> File already exists.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_IS_DIRECTORY">
+<parameter_description> File is a directory.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_DIRECTORY">
+<parameter_description> File is not a directory.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_EMPTY">
+<parameter_description> File is a directory that isn't empty.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_REGULAR_FILE">
+<parameter_description> File is not a regular file.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_SYMBOLIC_LINK">
+<parameter_description> File is not a symbolic link.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_MOUNTABLE_FILE">
+<parameter_description> File cannot be mounted.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_FILENAME_TOO_LONG">
+<parameter_description> Filename is too many characters.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_INVALID_FILENAME">
+<parameter_description> Filename is invalid or contains invalid characters.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_TOO_MANY_LINKS">
+<parameter_description> File contains too many symbolic links.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NO_SPACE">
+<parameter_description> No space left on drive.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_INVALID_ARGUMENT">
+<parameter_description> Invalid argument.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_PERMISSION_DENIED">
+<parameter_description> Permission denied.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_SUPPORTED">
+<parameter_description> Operation not supported for the current backend.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_MOUNTED">
+<parameter_description> File isn't mounted.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_ALREADY_MOUNTED">
+<parameter_description> File is already mounted.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_CLOSED">
+<parameter_description> File was closed.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_CANCELLED">
+<parameter_description> Operation was cancelled. See #GCancellable.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_PENDING">
+<parameter_description> Operations are still pending.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_READ_ONLY">
+<parameter_description> File is read only.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_CANT_CREATE_BACKUP">
+<parameter_description> Backup couldn't be created.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_WRONG_ETAG">
+<parameter_description> File's Entity Tag was incorrect.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_TIMED_OUT">
+<parameter_description> Operation timed out.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_WOULD_RECURSE">
+<parameter_description> Operation would be recursive.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_BUSY">
+<parameter_description> File is busy.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_WOULD_BLOCK">
+<parameter_description> Operation would block.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_HOST_NOT_FOUND">
+<parameter_description> Host couldn't be found (remote operations).
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_WOULD_MERGE">
+<parameter_description> Operation would merge files.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_FAILED_HANDLED">
+<parameter_description> Operation failed and a helper program has
+already interacted with the user. Do not display any error dialog.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_TOO_MANY_OPEN_FILES">
+<parameter_description> The current process has too many files
+open and can't open any more. Duplicate descriptors do count toward
+this limit. Since 2.20
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NOT_INITIALIZED">
+<parameter_description> The object has not been initialized. Since 2.22
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_ADDRESS_IN_USE">
+<parameter_description> The requested address is already in use. Since 2.22
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_PARTIAL_INPUT">
+<parameter_description> Need more input to finish operation. Since 2.24
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_INVALID_DATA">
+<parameter_description> There input data was invalid. Since 2.24
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_DBUS_ERROR">
+<parameter_description> A remote object generated an error that
+doesn't correspond to a locally registered #GError error
+domain. Use g_dbus_error_get_remote_error() to extract the D-Bus
+error name and g_dbus_error_strip_remote_error() to fix up the
+message so it matches what was received on the wire. Since 2.26.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_HOST_UNREACHABLE">
+<parameter_description> Host unreachable. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_NETWORK_UNREACHABLE">
+<parameter_description> Network unreachable. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_CONNECTION_REFUSED">
+<parameter_description> Connection refused. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_PROXY_FAILED">
+<parameter_description> Connection to proxy server failed. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_PROXY_AUTH_FAILED">
+<parameter_description> Proxy authentication failed. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_PROXY_NEED_AUTH">
+<parameter_description> Proxy server needs authentication. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_PROXY_NOT_ALLOWED">
+<parameter_description> Proxy connection is not allowed by ruleset.
+Since 2.26
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOModuleScopeFlags">
+<description>
+Flags for use with g_io_module_scope_new().
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="G_IO_MODULE_SCOPE_NONE">
+<parameter_description> No module scan flags
+</parameter_description>
+</parameter>
+<parameter name="G_IO_MODULE_SCOPE_BLOCK_DUPLICATES">
+<parameter_description> When using this scope to load or
+scan modules, automatically block a modules which has the same base
+basename as previously loaded module.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOStreamSpliceFlags">
+<description>
+GIOStreamSpliceFlags determine how streams should be spliced.
+
+Since: 2.28
+
+</description>
+<parameters>
+<parameter name="G_IO_STREAM_SPLICE_NONE">
+<parameter_description> Do not close either stream.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_STREAM_SPLICE_CLOSE_STREAM1">
+<parameter_description> Close the first stream after
+the splice.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_STREAM_SPLICE_CLOSE_STREAM2">
+<parameter_description> Close the second stream after
+the splice.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_STREAM_SPLICE_WAIT_FOR_BOTH">
+<parameter_description> Wait for both splice operations to finish
+before calling the callback.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GMenuModel::items-changed">
 <description>
 Emitted when a change has occured to the menu.
@@ -2298,6 +3860,19 @@ finalized.
 <return></return>
 </signal>
 
+<enum name="GMountMountFlags">
+<description>
+Flags used when mounting a mount.
+
+</description>
+<parameters>
+<parameter name="G_MOUNT_MOUNT_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GMountOperation::aborted">
 <description>
 Emitted by the backend when e.g. a device becomes unavailable
@@ -2479,6 +4054,49 @@ is completed
 <return></return>
 </signal>
 
+<enum name="GMountOperationResult">
+<description>
+#GMountOperationResult is returned as a result when a request for
+information is send by the mounting operation.
+
+</description>
+<parameters>
+<parameter name="G_MOUNT_OPERATION_HANDLED">
+<parameter_description> The request was fulfilled and the
+user specified data is now available
+</parameter_description>
+</parameter>
+<parameter name="G_MOUNT_OPERATION_ABORTED">
+<parameter_description> The user requested the mount operation
+to be aborted
+</parameter_description>
+</parameter>
+<parameter name="G_MOUNT_OPERATION_UNHANDLED">
+<parameter_description> The request was unhandled (i.e. not
+implemented)
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GMountUnmountFlags">
+<description>
+Flags used when an unmounting a mount.
+
+</description>
+<parameters>
+<parameter name="G_MOUNT_UNMOUNT_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_MOUNT_UNMOUNT_FORCE">
+<parameter_description> Unmount even if there are outstanding
+file operations on the mount.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GNetworkMonitor::network-changed">
 <description>
 Emitted when the network configuration changes. If @available is
@@ -2503,6 +4121,53 @@ Since: 2.32
 <return></return>
 </signal>
 
+<enum name="GOutputStreamSpliceFlags">
+<description>
+GOutputStreamSpliceFlags determine how streams should be spliced.
+
+</description>
+<parameters>
+<parameter name="G_OUTPUT_STREAM_SPLICE_NONE">
+<parameter_description> Do not close either stream.
+</parameter_description>
+</parameter>
+<parameter name="G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE">
+<parameter_description> Close the source stream after
+the splice.
+</parameter_description>
+</parameter>
+<parameter name="G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET">
+<parameter_description> Close the target stream after
+the splice.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GPasswordSave">
+<description>
+#GPasswordSave is used to indicate the lifespan of a saved password.
+
+#Gvfs stores passwords in the Gnome keyring when this flag allows it
+to, and later retrieves it again from there.
+
+</description>
+<parameters>
+<parameter name="G_PASSWORD_SAVE_NEVER">
+<parameter_description> never save a password.
+</parameter_description>
+</parameter>
+<parameter name="G_PASSWORD_SAVE_FOR_SESSION">
+<parameter_description> save a password for the session.
+</parameter_description>
+</parameter>
+<parameter name="G_PASSWORD_SAVE_PERMANENTLY">
+<parameter_description> save a password permanently.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GResolver::reload">
 <description>
 Emitted when the resolver notices that the system resolver
@@ -2518,6 +4183,141 @@ configuration has changed.
 <return></return>
 </signal>
 
+<enum name="GResolverError">
+<description>
+An error code used with %G_RESOLVER_ERROR in a #GError returned
+from a #GResolver routine.
+
+Since: 2.22
+
+</description>
+<parameters>
+<parameter name="G_RESOLVER_ERROR_NOT_FOUND">
+<parameter_description> the requested name/address/service was not
+found
+</parameter_description>
+</parameter>
+<parameter name="G_RESOLVER_ERROR_TEMPORARY_FAILURE">
+<parameter_description> the requested information could not
+be looked up due to a network error or similar problem
+</parameter_description>
+</parameter>
+<parameter name="G_RESOLVER_ERROR_INTERNAL">
+<parameter_description> unknown error
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GResolverRecordType">
+<description>
+The type of record that g_resolver_lookup_records() or
+g_resolver_lookup_records_async() should retrieve. The records are returned
+as lists of #GVariant tuples. Each record type has different values in
+the variant tuples returned.
+
+%G_RESOLVER_RECORD_SRV records are returned as variants with the signature
+'(qqqs)', containing a guint16 with the priority, a guint16 with the
+weight, a guint16 with the port, and a string of the hostname.
+
+%G_RESOLVER_RECORD_MX records are returned as variants with the signature
+'(qs)', representing a guint16 with the preference, and a string containing
+the mail exchanger hostname.
+
+%G_RESOLVER_RECORD_TXT records are returned as variants with the signature
+'(as)', representing an array of the strings in the text record.
+
+%G_RESOLVER_RECORD_SOA records are returned as variants with the signature
+'(ssuuuuu)', representing a string containing the primary name server, a
+string containing the administrator, the serial as a guint32, the refresh
+interval as guint32, the retry interval as a guint32, the expire timeout
+as a guint32, and the ttl as a guint32.
+
+%G_RESOLVER_RECORD_NS records are returned as variants with the signature
+'(s)', representing a string of the hostname of the name server.
+
+Since: 2.34
+
+</description>
+<parameters>
+<parameter name="G_RESOLVER_RECORD_SRV">
+<parameter_description> lookup DNS SRV records for a domain
+</parameter_description>
+</parameter>
+<parameter name="G_RESOLVER_RECORD_MX">
+<parameter_description> lookup DNS MX records for a domain
+</parameter_description>
+</parameter>
+<parameter name="G_RESOLVER_RECORD_TXT">
+<parameter_description> lookup DNS TXT records for a name
+</parameter_description>
+</parameter>
+<parameter name="G_RESOLVER_RECORD_SOA">
+<parameter_description> lookup DNS SOA records for a zone
+</parameter_description>
+</parameter>
+<parameter name="G_RESOLVER_RECORD_NS">
+<parameter_description> lookup DNS NS records for a domain
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GResourceError">
+<description>
+An error code used with %G_RESOURCE_ERROR in a #GError returned
+from a #GResource routine.
+
+Since: 2.32
+
+</description>
+<parameters>
+<parameter name="G_RESOURCE_ERROR_NOT_FOUND">
+<parameter_description> no file was found at the requested path
+</parameter_description>
+</parameter>
+<parameter name="G_RESOURCE_ERROR_INTERNAL">
+<parameter_description> unknown error
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GResourceFlags">
+<description>
+GResourceFlags give information about a particular file inside a resource
+bundle.
+
+Since: 2.32
+
+</description>
+<parameters>
+<parameter name="G_RESOURCE_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+<parameter name="G_RESOURCE_FLAGS_COMPRESSED">
+<parameter_description> The file is compressed.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GResourceLookupFlags">
+<description>
+GResourceLookupFlags determine how resource path lookups are handled.
+
+Since: 2.32
+
+</description>
+<parameters>
+<parameter name="G_RESOURCE_LOOKUP_FLAGS_NONE">
+<parameter_description> No flags set.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GSettings::change-event">
 <description>
 The &quot;change-event&quot; signal is emitted once per change event that
@@ -2644,6 +4444,46 @@ callbacks when the writability of &quot;x&quot; changes.
 <return></return>
 </signal>
 
+<enum name="GSettingsBindFlags">
+<description>
+Flags used when creating a binding. These flags determine in which
+direction the binding works. The default is to synchronize in both
+directions.
+
+</description>
+<parameters>
+<parameter name="G_SETTINGS_BIND_DEFAULT">
+<parameter_description> Equivalent to &lt;literal&gt;G_SETTINGS_BIND_GET|G_SETTINGS_BIND_SET&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SETTINGS_BIND_GET">
+<parameter_description> Update the #GObject property when the setting changes.
+It is an error to use this flag if the property is not writable.
+</parameter_description>
+</parameter>
+<parameter name="G_SETTINGS_BIND_SET">
+<parameter_description> Update the setting when the #GObject property changes.
+It is an error to use this flag if the property is not readable.
+</parameter_description>
+</parameter>
+<parameter name="G_SETTINGS_BIND_NO_SENSITIVITY">
+<parameter_description> Do not try to bind a &quot;sensitivity&quot; property to the writability of the setting
+</parameter_description>
+</parameter>
+<parameter name="G_SETTINGS_BIND_GET_NO_CHANGES">
+<parameter_description> When set in addition to #G_SETTINGS_BIND_GET, set the #GObject property
+value initially from the setting, but do not listen for changes of the setting
+</parameter_description>
+</parameter>
+<parameter name="G_SETTINGS_BIND_INVERT_BOOLEAN">
+<parameter_description> When passed to g_settings_bind(), uses a pair of mapping functions that invert
+the boolean value when mapping between the setting and the property.  The setting and property must both
+be booleans.  You cannot pass this flag to g_settings_bind_with_mapping().
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GSimpleAction::activate">
 <description>
 Indicates that the action was just activated.
@@ -2834,6 +4674,162 @@ Since: 2.32
 <return></return>
 </signal>
 
+<enum name="GSocketClientEvent">
+<description>
+Describes an event occurring on a #GSocketClient. See the
+#GSocketClient::event signal for more details.
+
+Additional values may be added to this type in the future.
+
+Since: 2.32
+
+</description>
+<parameters>
+<parameter name="G_SOCKET_CLIENT_RESOLVING">
+<parameter_description> The client is doing a DNS lookup.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_RESOLVED">
+<parameter_description> The client has completed a DNS lookup.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_CONNECTING">
+<parameter_description> The client is connecting to a remote
+host (either a proxy or the destination server).
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_CONNECTED">
+<parameter_description> The client has connected to a remote
+host.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_PROXY_NEGOTIATING">
+<parameter_description> The client is negotiating
+with a proxy to connect to the destination server.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_PROXY_NEGOTIATED">
+<parameter_description> The client has negotiated
+with the proxy server.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_TLS_HANDSHAKING">
+<parameter_description> The client is performing a
+TLS handshake.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_TLS_HANDSHAKED">
+<parameter_description> The client has performed a
+TLS handshake.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_CLIENT_COMPLETE">
+<parameter_description> The client is done with a particular
+#GSocketConnectable.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSocketFamily">
+<description>
+The protocol family of a #GSocketAddress. (These values are
+identical to the system defines %AF_INET, %AF_INET6 and %AF_UNIX,
+if available.)
+
+Since: 2.22
+
+</description>
+<parameters>
+<parameter name="G_SOCKET_FAMILY_INVALID">
+<parameter_description> no address family
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_FAMILY_IPV4">
+<parameter_description> the IPv4 family
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_FAMILY_IPV6">
+<parameter_description> the IPv6 family
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_FAMILY_UNIX">
+<parameter_description> the UNIX domain family
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSocketMsgFlags">
+<description>
+Flags used in g_socket_receive_message() and g_socket_send_message().
+The flags listed in the enum are some commonly available flags, but the
+values used for them are the same as on the platform, and any other flags
+are passed in/out as is. So to use a platform specific flag, just include
+the right system header and pass in the flag.
+
+Since: 2.22
+
+</description>
+<parameters>
+<parameter name="G_SOCKET_MSG_NONE">
+<parameter_description> No flags.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_MSG_OOB">
+<parameter_description> Request to send/receive out of band data.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_MSG_PEEK">
+<parameter_description> Read data from the socket without removing it from
+the queue.
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_MSG_DONTROUTE">
+<parameter_description> Don't use a gateway to send out the packet,
+only send to hosts on directly connected networks.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSocketProtocol">
+<description>
+A protocol identifier is specified when creating a #GSocket, which is a
+family/type specific identifier, where 0 means the default protocol for
+the particular family/type.
+
+This enum contains a set of commonly available and used protocols. You
+can also pass any other identifiers handled by the platform in order to
+use protocols not listed here.
+
+Since: 2.22
+
+</description>
+<parameters>
+<parameter name="G_SOCKET_PROTOCOL_UNKNOWN">
+<parameter_description> The protocol type is unknown
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_PROTOCOL_DEFAULT">
+<parameter_description> The default protocol for the family/type
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_PROTOCOL_TCP">
+<parameter_description> TCP over IP
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_PROTOCOL_UDP">
+<parameter_description> UDP over IP
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_PROTOCOL_SCTP">
+<parameter_description> SCTP over IP
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GSocketService::incoming">
 <description>
 The ::incoming signal is emitted when a new incoming connection
@@ -2867,6 +4863,51 @@ g_socket_listener_add_address()
 </return>
 </signal>
 
+<enum name="GSocketType">
+<description>
+Flags used when creating a #GSocket. Some protocols may not implement
+all the socket types.
+
+Since: 2.22
+
+</description>
+<parameters>
+<parameter name="G_SOCKET_TYPE_INVALID">
+<parameter_description> Type unknown or wrong
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_TYPE_STREAM">
+<parameter_description> Reliable connection-based byte streams (e.g. TCP).
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_TYPE_DATAGRAM">
+<parameter_description> Connectionless, unreliable datagram passing.
+(e.g. UDP)
+</parameter_description>
+</parameter>
+<parameter name="G_SOCKET_TYPE_SEQPACKET">
+<parameter_description> Reliable connection-based passing of datagrams
+of fixed maximum length (e.g. SCTP).
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTestDBusFlags">
+<description>
+Flags to define future #GTestDBus behaviour.
+
+Since: 2.34
+
+</description>
+<parameters>
+<parameter name="G_TEST_DBUS_NONE">
+<parameter_description> No flags.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GThreadedSocketService::run">
 <description>
 The ::run signal is emitted in a worker thread in response to an
@@ -2894,6 +4935,83 @@ not return until the connection is closed.
 </return>
 </signal>
 
+<enum name="GTlsAuthenticationMode">
+<description>
+The client authentication mode for a #GTlsServerConnection.
+
+Since: 2.28
+
+</description>
+<parameters>
+<parameter name="G_TLS_AUTHENTICATION_NONE">
+<parameter_description> client authentication not required
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_AUTHENTICATION_REQUESTED">
+<parameter_description> client authentication is requested
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_AUTHENTICATION_REQUIRED">
+<parameter_description> client authentication is required
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTlsCertificateFlags">
+<description>
+A set of flags describing TLS certification validation. This can be
+used to set which validation steps to perform (eg, with
+g_tls_client_connection_set_validation_flags()), or to describe why
+a particular certificate was rejected (eg, in
+#GTlsConnection::accept-certificate).
+
+Since: 2.28
+
+</description>
+<parameters>
+<parameter name="G_TLS_CERTIFICATE_UNKNOWN_CA">
+<parameter_description> The signing certificate authority is
+not known.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_CERTIFICATE_BAD_IDENTITY">
+<parameter_description> The certificate does not match the
+expected identity of the site that it was retrieved from.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_CERTIFICATE_NOT_ACTIVATED">
+<parameter_description> The certificate's activation time
+is still in the future
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_CERTIFICATE_EXPIRED">
+<parameter_description> The certificate has expired
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_CERTIFICATE_REVOKED">
+<parameter_description> The certificate has been revoked
+according to the #GTlsConnection's certificate revocation list.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_CERTIFICATE_INSECURE">
+<parameter_description> The certificate's algorithm is
+considered insecure.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_CERTIFICATE_GENERIC_ERROR">
+<parameter_description> Some other error occurred validating
+the certificate
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_CERTIFICATE_VALIDATE_ALL">
+<parameter_description> the combination of all of the above
+flags
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GTlsConnection::accept-certificate">
 <description>
 Emitted during the TLS handshake after the peer certificate has
@@ -2955,6 +5073,169 @@ no one else overrides it.
 </return>
 </signal>
 
+<enum name="GTlsDatabaseLookupFlags">
+<description>
+Flags for g_tls_database_lookup_certificate_handle(),
+g_tls_database_lookup_certificate_issuer(),
+and g_tls_database_lookup_certificates_issued_by().
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="G_TLS_DATABASE_LOOKUP_NONE">
+<parameter_description> No lookup flags
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_DATABASE_LOOKUP_KEYPAIR">
+<parameter_description> Restrict lookup to certificates that have
+a private key.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTlsDatabaseVerifyFlags">
+<description>
+Flags for g_tls_database_verify_chain().
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="G_TLS_DATABASE_VERIFY_NONE">
+<parameter_description> No verification flags
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTlsError">
+<description>
+An error code used with %G_TLS_ERROR in a #GError returned from a
+TLS-related routine.
+
+Since: 2.28
+
+</description>
+<parameters>
+<parameter name="G_TLS_ERROR_UNAVAILABLE">
+<parameter_description> No TLS provider is available
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_ERROR_MISC">
+<parameter_description> Miscellaneous TLS error
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_ERROR_BAD_CERTIFICATE">
+<parameter_description> A certificate could not be parsed
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_ERROR_NOT_TLS">
+<parameter_description> The TLS handshake failed because the
+peer does not seem to be a TLS server.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_ERROR_HANDSHAKE">
+<parameter_description> The TLS handshake failed because the
+peer's certificate was not acceptable.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_ERROR_CERTIFICATE_REQUIRED">
+<parameter_description> The TLS handshake failed because
+the server requested a client-side certificate, but none was
+provided. See g_tls_connection_set_certificate().
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_ERROR_EOF">
+<parameter_description> The TLS connection was closed without proper
+notice, which may indicate an attack. See
+g_tls_connection_set_require_close_notify().
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTlsInteractionResult">
+<description>
+#GTlsInteractionResult is returned by various functions in #GTlsInteraction
+when finishing an interaction request.
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="G_TLS_INTERACTION_UNHANDLED">
+<parameter_description> The interaction was unhandled (i.e. not
+implemented).
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_INTERACTION_HANDLED">
+<parameter_description> The interaction completed, and resulting data
+is available.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_INTERACTION_FAILED">
+<parameter_description> The interaction has failed, or was cancelled.
+and the operation should be aborted.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTlsPasswordFlags">
+<description>
+Various flags for the password.
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="G_TLS_PASSWORD_NONE">
+<parameter_description> No flags
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_PASSWORD_RETRY">
+<parameter_description> The password was wrong, and the user should retry.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_PASSWORD_MANY_TRIES">
+<parameter_description> Hint to the user that the password has been
+wrong many times, and the user may not have many chances left.
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_PASSWORD_FINAL_TRY">
+<parameter_description> Hint to the user that this is the last try to get
+this password right.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTlsRehandshakeMode">
+<description>
+When to allow rehandshaking. See
+g_tls_connection_set_rehandshake_mode().
+
+Since: 2.28
+
+</description>
+<parameters>
+<parameter name="G_TLS_REHANDSHAKE_NEVER">
+<parameter_description> Never allow rehandshaking
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_REHANDSHAKE_SAFELY">
+<parameter_description> Allow safe rehandshaking only
+</parameter_description>
+</parameter>
+<parameter name="G_TLS_REHANDSHAKE_UNSAFELY">
+<parameter_description> Allow unsafe rehandshaking
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GUnixMountMonitor::mountpoints-changed">
 <description>
 Emitted when the unix mount points have changed.
@@ -2983,6 +5264,51 @@ Emitted when the unix mounts have changed.
 <return></return>
 </signal>
 
+<enum name="GUnixSocketAddressType">
+<description>
+The type of name used by a #GUnixSocketAddress.
+%G_UNIX_SOCKET_ADDRESS_PATH indicates a traditional unix domain
+socket bound to a filesystem path. %G_UNIX_SOCKET_ADDRESS_ANONYMOUS
+indicates a socket not bound to any name (eg, a client-side socket,
+or a socket created with socketpair()).
+
+For abstract sockets, there are two incompatible ways of naming
+them; the man pages suggest using the entire &lt;literal&gt;struct
+sockaddr_un&lt;/literal&gt; as the name, padding the unused parts of the
+%sun_path field with zeroes; this corresponds to
+%G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED. However, many programs
+instead just use a portion of %sun_path, and pass an appropriate
+smaller length to bind() or connect(). This is
+%G_UNIX_SOCKET_ADDRESS_ABSTRACT.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_UNIX_SOCKET_ADDRESS_INVALID">
+<parameter_description> invalid
+</parameter_description>
+</parameter>
+<parameter name="G_UNIX_SOCKET_ADDRESS_ANONYMOUS">
+<parameter_description> anonymous
+</parameter_description>
+</parameter>
+<parameter name="G_UNIX_SOCKET_ADDRESS_PATH">
+<parameter_description> a filesystem path
+</parameter_description>
+</parameter>
+<parameter name="G_UNIX_SOCKET_ADDRESS_ABSTRACT">
+<parameter_description> an abstract name
+</parameter_description>
+</parameter>
+<parameter name="G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED">
+<parameter_description> an abstract name, 0-padded
+to the full length of a unix socket name
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GVolume::changed">
 <description>
 Emitted when the volume has been changed.
@@ -3225,6 +5551,30 @@ Emitted when a mountable volume is removed from the system.
 <return></return>
 </signal>
 
+<enum name="GZlibCompressorFormat">
+<description>
+Used to select the type of data format to use for #GZlibDecompressor
+and #GZlibCompressor.
+
+Since: 2.24
+
+</description>
+<parameters>
+<parameter name="G_ZLIB_COMPRESSOR_FORMAT_ZLIB">
+<parameter_description> deflate compression with zlib header
+</parameter_description>
+</parameter>
+<parameter name="G_ZLIB_COMPRESSOR_FORMAT_GZIP">
+<parameter_description> gzip file format
+</parameter_description>
+</parameter>
+<parameter name="G_ZLIB_COMPRESSOR_FORMAT_RAW">
+<parameter_description> deflate compression with no header
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <function name="example_animal_call_poke">
 <description>
 Asynchronously invokes the &lt;link linkend=&quot;gdbus-method-org-gtk-GDBus-Example-ObjectManager-Animal.Poke&quot;&gt;Poke()&lt;/link&gt; D-Bus method on @proxy.
@@ -3349,6 +5699,46 @@ Since: 2.30
 <return></return>
 </function>
 
+<function name="example_animal_dup_bar">
+<description>
+Gets a copy of the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Bar&quot;&gt;&quot;Bar&quot;&lt;/link&gt; D-Bus property.
+
+Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="object">
+<parameter_description> A #ExampleAnimal.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The property value or %NULL if the property is not set. The returned value should be freed with g_free().
+
+</return>
+</function>
+
+<function name="example_animal_dup_foo">
+<description>
+Gets a copy of the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Foo&quot;&gt;&quot;Foo&quot;&lt;/link&gt; D-Bus property.
+
+Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="object">
+<parameter_description> A #ExampleAnimal.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The property value or %NULL if the property is not set. The returned value should be freed with g_free().
+
+</return>
+</function>
+
 <function name="example_animal_dup_mood">
 <description>
 Gets a copy of the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Mood&quot;&gt;&quot;Mood&quot;&lt;/link&gt; D-Bus property.
@@ -3389,6 +5779,50 @@ Since: 2.30
 <return></return>
 </function>
 
+<function name="example_animal_get_bar">
+<description>
+Gets the value of the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Bar&quot;&gt;&quot;Bar&quot;&lt;/link&gt; D-Bus property.
+
+Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+
+&lt;warning&gt;The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use example_animal_dup_bar() if on another thread.&lt;/warning&gt;
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="object">
+<parameter_description> A #ExampleAnimal.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
+
+</return>
+</function>
+
+<function name="example_animal_get_foo">
+<description>
+Gets the value of the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Foo&quot;&gt;&quot;Foo&quot;&lt;/link&gt; D-Bus property.
+
+Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+
+&lt;warning&gt;The returned value is only valid until the property changes so on the client-side it is only safe to use this function on the thread where @object was constructed. Use example_animal_dup_foo() if on another thread.&lt;/warning&gt;
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="object">
+<parameter_description> A #ExampleAnimal.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The property value or %NULL if the property is not set. Do not free the returned value, it belongs to @object.
+
+</return>
+</function>
+
 <function name="example_animal_get_mood">
 <description>
 Gets the value of the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Mood&quot;&gt;&quot;Mood&quot;&lt;/link&gt; D-Bus property.
@@ -3666,6 +6100,50 @@ Since: 2.30
 </return>
 </function>
 
+<function name="example_animal_set_bar">
+<description>
+Sets the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Bar&quot;&gt;&quot;Bar&quot;&lt;/link&gt; D-Bus property to @value.
+
+Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="object">
+<parameter_description> A #ExampleAnimal.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> The value to set.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="example_animal_set_foo">
+<description>
+Sets the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Foo&quot;&gt;&quot;Foo&quot;&lt;/link&gt; D-Bus property to @value.
+
+Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+
+Since: 2.30
+
+</description>
+<parameters>
+<parameter name="object">
+<parameter_description> A #ExampleAnimal.
+</parameter_description>
+</parameter>
+<parameter name="value">
+<parameter_description> The value to set.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="example_animal_set_mood">
 <description>
 Sets the &lt;link linkend=&quot;gdbus-property-org-gtk-GDBus-Example-ObjectManager-Animal.Mood&quot;&gt;&quot;Mood&quot;&lt;/link&gt; D-Bus property to @value.
@@ -9670,13 +12148,11 @@ Since: 2.0
 <description>
 Gets a machine-readable description of the &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV10.top_of_page&quot;&gt;ChangingInterfaceV10&lt;/link&gt; D-Bus interface.
 
-Since: 10.0
 
 </description>
 <parameters>
 </parameters>
 <return> A #GDBusInterfaceInfo. Do not free.
-
 </return>
 </function>
 
@@ -9685,7 +12161,6 @@ Since: 10.0
 Overrides all #GObject properties in the #FooiGenChangingInterfaceV10 interface for a concrete class.
 The properties are overridden in the order they are defined.
 
-Since: 10.0
 
 </description>
 <parameters>
@@ -9699,7 +12174,6 @@ Since: 10.0
 </parameter>
 </parameters>
 <return> The last property id.
-
 </return>
 </function>
 
@@ -9712,8 +12186,6 @@ You can then call foo_igen_changing_interface_v10_proxy_new_finish() to get the
 
 See foo_igen_changing_interface_v10_proxy_new_sync() for the synchronous, blocking version of this constructor.
 
-Since: 10.0
-
 </description>
 <parameters>
 <parameter name="connection">
@@ -9752,7 +12224,6 @@ Since: 10.0
 <description>
 Finishes an operation started with foo_igen_changing_interface_v10_proxy_new().
 
-Since: 10.0
 
 </description>
 <parameters>
@@ -9766,7 +12237,6 @@ Since: 10.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -9779,8 +12249,6 @@ You can then call foo_igen_changing_interface_v10_proxy_new_for_bus_finish() to
 
 See foo_igen_changing_interface_v10_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
 
-Since: 10.0
-
 </description>
 <parameters>
 <parameter name="bus_type">
@@ -9819,7 +12287,6 @@ Since: 10.0
 <description>
 Finishes an operation started with foo_igen_changing_interface_v10_proxy_new_for_bus().
 
-Since: 10.0
 
 </description>
 <parameters>
@@ -9833,7 +12300,6 @@ Since: 10.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -9845,7 +12311,6 @@ The calling thread is blocked until a reply is received.
 
 See foo_igen_changing_interface_v10_proxy_new_for_bus() for the asynchronous version of this constructor.
 
-Since: 10.0
 
 </description>
 <parameters>
@@ -9875,7 +12340,6 @@ Since: 10.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -9887,7 +12351,6 @@ The calling thread is blocked until a reply is received.
 
 See foo_igen_changing_interface_v10_proxy_new() for the asynchronous version of this constructor.
 
-Since: 10.0
 
 </description>
 <parameters>
@@ -9917,7 +12380,6 @@ Since: 10.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -9925,13 +12387,11 @@ Since: 10.0
 <description>
 Creates a skeleton object for the D-Bus interface &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV10.top_of_page&quot;&gt;ChangingInterfaceV10&lt;/link&gt;.
 
-Since: 10.0
 
 </description>
 <parameters>
 </parameters>
 <return> The skeleton object.
-
 </return>
 </function>
 
@@ -10998,13 +13458,11 @@ Since: 2.0
 <description>
 Gets a machine-readable description of the &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV2.top_of_page&quot;&gt;ChangingInterfaceV2&lt;/link&gt; D-Bus interface.
 
-Since: 2.0
 
 </description>
 <parameters>
 </parameters>
 <return> A #GDBusInterfaceInfo. Do not free.
-
 </return>
 </function>
 
@@ -11013,7 +13471,6 @@ Since: 2.0
 Overrides all #GObject properties in the #FooiGenChangingInterfaceV2 interface for a concrete class.
 The properties are overridden in the order they are defined.
 
-Since: 2.0
 
 </description>
 <parameters>
@@ -11027,7 +13484,6 @@ Since: 2.0
 </parameter>
 </parameters>
 <return> The last property id.
-
 </return>
 </function>
 
@@ -11040,8 +13496,6 @@ You can then call foo_igen_changing_interface_v2_proxy_new_finish() to get the r
 
 See foo_igen_changing_interface_v2_proxy_new_sync() for the synchronous, blocking version of this constructor.
 
-Since: 2.0
-
 </description>
 <parameters>
 <parameter name="connection">
@@ -11080,7 +13534,6 @@ Since: 2.0
 <description>
 Finishes an operation started with foo_igen_changing_interface_v2_proxy_new().
 
-Since: 2.0
 
 </description>
 <parameters>
@@ -11094,7 +13547,6 @@ Since: 2.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -11107,8 +13559,6 @@ You can then call foo_igen_changing_interface_v2_proxy_new_for_bus_finish() to g
 
 See foo_igen_changing_interface_v2_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
 
-Since: 2.0
-
 </description>
 <parameters>
 <parameter name="bus_type">
@@ -11147,7 +13597,6 @@ Since: 2.0
 <description>
 Finishes an operation started with foo_igen_changing_interface_v2_proxy_new_for_bus().
 
-Since: 2.0
 
 </description>
 <parameters>
@@ -11161,7 +13610,6 @@ Since: 2.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -11173,7 +13621,6 @@ The calling thread is blocked until a reply is received.
 
 See foo_igen_changing_interface_v2_proxy_new_for_bus() for the asynchronous version of this constructor.
 
-Since: 2.0
 
 </description>
 <parameters>
@@ -11203,7 +13650,6 @@ Since: 2.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -11215,7 +13661,6 @@ The calling thread is blocked until a reply is received.
 
 See foo_igen_changing_interface_v2_proxy_new() for the asynchronous version of this constructor.
 
-Since: 2.0
 
 </description>
 <parameters>
@@ -11245,7 +13690,6 @@ Since: 2.0
 </parameter>
 </parameters>
 <return> The constructed proxy object or %NULL if @error is set.
-
 </return>
 </function>
 
@@ -11253,13 +13697,11 @@ Since: 2.0
 <description>
 Creates a skeleton object for the D-Bus interface &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV2.top_of_page&quot;&gt;ChangingInterfaceV2&lt;/link&gt;.
 
-Since: 2.0
 
 </description>
 <parameters>
 </parameters>
 <return> The skeleton object.
-
 </return>
 </function>
 
@@ -13890,7 +16332,6 @@ Gets the #FooiGenChangingInterfaceV1 instance for the D-Bus interface &lt;link l
 <description>
 Gets the #FooiGenChangingInterfaceV10 instance for the D-Bus interface &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV10.top_of_page&quot;&gt;ChangingInterfaceV10&lt;/link&gt; on @object, if any.
 
-Since: 10.0
 
 </description>
 <parameters>
@@ -13900,7 +16341,6 @@ Since: 10.0
 </parameter>
 </parameters>
 <return> A #FooiGenChangingInterfaceV10 that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
-
 </return>
 </function>
 
@@ -13908,7 +16348,6 @@ Since: 10.0
 <description>
 Gets the #FooiGenChangingInterfaceV2 instance for the D-Bus interface &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV2.top_of_page&quot;&gt;ChangingInterfaceV2&lt;/link&gt; on @object, if any.
 
-Since: 2.0
 
 </description>
 <parameters>
@@ -13918,7 +16357,6 @@ Since: 2.0
 </parameter>
 </parameters>
 <return> A #FooiGenChangingInterfaceV2 that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
-
 </return>
 </function>
 
@@ -14416,7 +16854,6 @@ Like foo_igen_object_get_changing_interface_v10() but doesn't increase the refer
 
 &lt;warning&gt;It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.&lt;/warning&gt;
 
-Since: 10.0
 
 </description>
 <parameters>
@@ -14426,7 +16863,6 @@ Since: 10.0
 </parameter>
 </parameters>
 <return> A #FooiGenChangingInterfaceV10 or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
-
 </return>
 </function>
 
@@ -14436,7 +16872,6 @@ Like foo_igen_object_get_changing_interface_v2() but doesn't increase the refere
 
 &lt;warning&gt;It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.&lt;/warning&gt;
 
-Since: 2.0
 
 </description>
 <parameters>
@@ -14446,7 +16881,6 @@ Since: 2.0
 </parameter>
 </parameters>
 <return> A #FooiGenChangingInterfaceV2 or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
-
 </return>
 </function>
 
@@ -14762,8 +17196,6 @@ Sets the #FooiGenChangingInterfaceV1 instance for the D-Bus interface &lt;link l
 <description>
 Sets the #FooiGenChangingInterfaceV10 instance for the D-Bus interface &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV10.top_of_page&quot;&gt;ChangingInterfaceV10&lt;/link&gt; on @object.
 
-Since: 10.0
-
 </description>
 <parameters>
 <parameter name="object">
@@ -14782,8 +17214,6 @@ Since: 10.0
 <description>
 Sets the #FooiGenChangingInterfaceV2 instance for the D-Bus interface &lt;link linkend=&quot;gdbus-interface-ChangingInterfaceV2.top_of_page&quot;&gt;ChangingInterfaceV2&lt;/link&gt; on @object.
 
-Since: 2.0
-
 </description>
 <parameters>
 <parameter name="object">
@@ -18952,8 +21382,6 @@ reproduced here:
 <description>
 Creates a new #GApplication instance.
 
-This function calls g_type_init() for you.
-
 If non-%NULL, the application id must be valid.  See
 g_application_id_is_valid().
 
@@ -22948,7 +25376,7 @@ Since: 2.26
 <description>
 Looks up the value of an annotation.
 
-This cost of this function is O(n) in number of annotations.
+The cost of this function is O(n) in number of annotations.
 
 Since: 2.26
 
@@ -25542,7 +27970,7 @@ Since: 2.26
 <description>
 Looks up information about a method.
 
-This cost of this function is O(n) in number of methods unless
+The cost of this function is O(n) in number of methods unless
 g_dbus_interface_info_cache_build() has been used on @info.
 
 Since: 2.26
@@ -25567,7 +27995,7 @@ Since: 2.26
 <description>
 Looks up information about a property.
 
-This cost of this function is O(n) in number of properties unless
+The cost of this function is O(n) in number of properties unless
 g_dbus_interface_info_cache_build() has been used on @info.
 
 Since: 2.26
@@ -25592,7 +28020,7 @@ Since: 2.26
 <description>
 Looks up information about a signal.
 
-This cost of this function is O(n) in number of signals unless
+The cost of this function is O(n) in number of signals unless
 g_dbus_interface_info_cache_build() has been used on @info.
 
 Since: 2.26
@@ -25869,7 +28297,7 @@ Since: 2.30
 
 <function name="g_dbus_interface_skeleton_has_connection">
 <description>
-Checks if @interface_ is export on @connection.
+Checks if @interface_ is exported on @connection.
 
 Since: 2.32
 
@@ -27686,7 +30114,7 @@ Since: 2.26
 <description>
 Looks up information about an interface.
 
-This cost of this function is O(n) in number of interfaces.
+The cost of this function is O(n) in number of interfaces.
 
 Since: 2.26
 
@@ -27875,7 +30303,8 @@ enumeration.
 
 <function name="g_dbus_object_manager_client_get_name">
 <description>
-Gets the name that @manager is for.
+Gets the name that @manager is for, or %NULL if not a message bus
+connection.
 
 Since: 2.30
 
@@ -28159,7 +30588,7 @@ Since: 2.30
 </parameter_description>
 </parameter>
 <parameter name="name">
-<parameter_description> The owner of the control object (unique or well-known name).
+<parameter_description> The owner of the control object (unique or well-known name), or %NULL when not using a message bus connection.
 </parameter_description>
 </parameter>
 <parameter name="object_path">
@@ -32403,7 +34832,7 @@ priority is %G_PRIORITY_DEFAULT.
 </parameter_description>
 </parameter>
 <parameter name="io_priority">
-<parameter_description> the &lt;link linkend=&quot;gioscheduler&quot;&gt;io priority&lt;/link&gt; 
+<parameter_description> the &lt;link linkend=&quot;io-priority&quot;&gt;io priority&lt;/link&gt;
 of the request. 
 </parameter_description>
 </parameter>
@@ -39501,6 +41930,22 @@ associated with @extension.
 </return>
 </function>
 
+<function name="g_io_module_load">
+<description>
+Required API for GIO modules to implement.
+This function is ran after the module has been loaded into GIO,
+to initialize the module.
+
+</description>
+<parameters>
+<parameter name="module">
+<parameter_description> a #GIOModule.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_io_module_new">
 <description>
 Creates a new GIOModule that will load the specific
@@ -39519,6 +41964,43 @@ or %NULL on error.
 </return>
 </function>
 
+<function name="g_io_module_query">
+<description>
+Optional API for GIO modules to implement.
+
+Should return a list of all the extension points that may be
+implemented in this module.
+
+This method will not be called in normal use, however it may be
+called when probing existing modules and recording which extension
+points that this model is used for. This means we won't have to
+load and initialze this module unless its needed.
+
+If this function is not implemented by the module the module will
+always be loaded, initialized and then unloaded on application startup
+so that it can register its extension points during init.
+
+Note that a module need not actually implement all the extension points
+that g_io_module_query returns, since the exact list of extension may
+depend on runtime issues. However all extension points actually implemented
+must be returned by g_io_module_query() (if defined).
+
+When installing a module that implements g_io_module_query you must
+run gio-querymodules in order to build the cache files required for
+lazy loading.
+
+Since: 2.24
+
+</description>
+<parameters>
+</parameters>
+<return> A %NULL-terminated array of strings, listing the supported
+extension points of the module. The array must be suitable for
+freeing with g_strfreev().
+
+</return>
+</function>
+
 <function name="g_io_module_scope_block">
 <description>
 Block modules with the given @basename from being loaded when
@@ -39580,6 +42062,22 @@ Since: 2.30
 </return>
 </function>
 
+<function name="g_io_module_unload">
+<description>
+Required API for GIO modules to implement.
+This function is ran when the module is being unloaded from GIO,
+to finalize the module.
+
+</description>
+<parameters>
+<parameter name="module">
+<parameter_description> a #GIOModule.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_io_modules_load_all_in_directory">
 <description>
 Loads all the modules in the specified directory.
@@ -39699,6 +42197,10 @@ Cancels all cancellable I/O jobs.
 A job is cancellable if a #GCancellable was passed into
 g_io_scheduler_push_job().
 
+Deprecated: You should never call this function, since you don't
+know how other libraries in your program might be making use of
+gioscheduler.
+
 </description>
 <parameters>
 </parameters>
@@ -39711,6 +42213,7 @@ Used from an I/O job to send a callback to be run in the thread
 that the job was started from, waiting for the result (and thus
 blocking the I/O job).
 
+Deprecated: Use g_main_context_invoke().
 
 </description>
 <parameters>
@@ -39732,6 +42235,7 @@ blocking the I/O job).
 </parameter>
 </parameters>
 <return> The return value of @func
+
 </return>
 </function>
 
@@ -39747,6 +42251,8 @@ on to this function you have to ensure that it is not freed before
 @func is called, either by passing %NULL as @notify to 
 g_io_scheduler_push_job() or by using refcounting for @user_data.
 
+Deprecated: Use g_main_context_invoke().
+
 </description>
 <parameters>
 <parameter name="job">
@@ -39780,6 +42286,8 @@ If @cancellable is not %NULL, it can be used to cancel the I/O job
 by calling g_cancellable_cancel() or by calling 
 g_io_scheduler_cancel_all_jobs().
 
+Deprecated: use #GThreadPool or g_task_run_in_thread()
+
 </description>
 <parameters>
 <parameter name="job_func">
@@ -39795,7 +42303,7 @@ g_io_scheduler_cancel_all_jobs().
 </parameter_description>
 </parameter>
 <parameter name="io_priority">
-<parameter_description> the &lt;link linkend=&quot;gioscheduler&quot;&gt;I/O priority&lt;/link&gt; 
+<parameter_description> the &lt;link linkend=&quot;io-priority&quot;&gt;I/O priority&lt;/link&gt;
 of the request.
 </parameter_description>
 </parameter>
@@ -53384,6 +55892,841 @@ Since: 2.32
 <return></return>
 </function>
 
+<function name="g_task_attach_source">
+<description>
+A utility function for dealing with async operations where you need
+to wait for a #GSource to trigger. Attaches @source to @task's
+#GMainContext with @task's &lt;link
+linkend=&quot;io-priority&quot;&gt;priority&lt;/link&gt;, and sets @source's callback
+to @callback, with @task as the callback's
+&lt;literal&gt;user_data&lt;/literal&gt;.
+
+This takes a reference on @task until @source is destroyed.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+<parameter name="source">
+<parameter_description> the source to attach
+</parameter_description>
+</parameter>
+<parameter name="callback">
+<parameter_description> the callback to invoke when @source triggers
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_get_cancellable">
+<description>
+Gets @task's #GCancellable
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return> @task's #GCancellable
+
+</return>
+</function>
+
+<function name="g_task_get_check_cancellable">
+<description>
+Gets @task's check-cancellable flag. See
+g_task_set_check_cancellable() for more details.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> the #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_get_context">
+<description>
+Gets the #GMainContext that @task will return its result in (that
+is, the context that was the &lt;link
+linkend=&quot;g-main-context-push-thread-default&quot;&gt;thread-default main
+context&lt;/link&gt; at the point when @task was created).
+
+This will always return a non-%NULL value, even if the task's
+context is the default #GMainContext.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return> @task's #GMainContext
+
+</return>
+</function>
+
+<function name="g_task_get_priority">
+<description>
+Gets @task's priority
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return> @task's priority
+
+</return>
+</function>
+
+<function name="g_task_get_return_on_cancel">
+<description>
+Gets @task's return-on-cancel flag. See
+g_task_set_return_on_cancel() for more details.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> the #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_get_source_object">
+<description>
+Gets the source object from @task. Like
+g_async_result_get_source_object(), but does not ref the object.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return> @task's source object, or %NULL
+
+</return>
+</function>
+
+<function name="g_task_get_source_tag">
+<description>
+Gets @task's source tag. See g_task_set_source_tag().
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return> @task's source tag
+
+</return>
+</function>
+
+<function name="g_task_get_task_data">
+<description>
+Gets @task's &lt;literal&gt;task_data&lt;/literal&gt;.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return> @task's &lt;literal&gt;task_data&lt;/literal&gt;.
+
+</return>
+</function>
+
+<function name="g_task_had_error">
+<description>
+Tests if @task resulted in an error.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the task resulted in an error, %FALSE otherwise.
+
+</return>
+</function>
+
+<function name="g_task_is_valid">
+<description>
+Checks that @result is a #GTask, and that @source_object is its
+source object (or that @source_object is %NULL and @result has no
+source object). This can be used in g_return_if_fail() checks.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="result">
+<parameter_description> A #GAsyncResult
+</parameter_description>
+</parameter>
+<parameter name="source_object">
+<parameter_description> the source object expected to be
+associated with the task
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @result and @source_object are valid, %FALSE
+if not
+
+</return>
+</function>
+
+<function name="g_task_new">
+<description>
+Creates a #GTask acting on @source_object, which will eventually be
+used to invoke @callback in the current &lt;link
+linkend=&quot;g-main-context-push-thread-default&quot;&gt;thread-default main
+context&lt;/link&gt;.
+
+Call this in the &quot;start&quot; method of your asynchronous method, and
+pass the #GTask around throughout the asynchronous operation. You
+can use g_task_set_task_data() to attach task-specific data to the
+object, which you can retrieve later via g_task_get_task_data().
+
+By default, if @cancellable is cancelled, then the return value of
+the task will always be %G_IO_ERROR_CANCELLED, even if the task had
+already completed before the cancellation. This allows for
+simplified handling in cases where cancellation may imply that
+other objects that the task depends on have been destroyed. If you
+do not want this behavior, you can use
+g_task_set_check_cancellable() to change it.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="source_object">
+<parameter_description> the #GObject that owns this task, or %NULL.
+</parameter_description>
+</parameter>
+<parameter name="cancellable">
+<parameter_description> optional #GCancellable object, %NULL to ignore.
+</parameter_description>
+</parameter>
+<parameter name="callback">
+<parameter_description> a #GAsyncReadyCallback.
+</parameter_description>
+</parameter>
+<parameter name="callback_data">
+<parameter_description> user data passed to @callback.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a #GTask.
+
+</return>
+</function>
+
+<function name="g_task_propagate_boolean">
+<description>
+Gets the result of @task as a #gboolean.
+
+If the task resulted in an error, or was cancelled, then this will
+instead return %FALSE and set @error.
+
+Since this method transfers ownership of the return value (or
+error) to the caller, you may only call it once.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the task result, or %FALSE on error
+
+</return>
+</function>
+
+<function name="g_task_propagate_int">
+<description>
+Gets the result of @task as an integer (#gssize).
+
+If the task resulted in an error, or was cancelled, then this will
+instead return -1 and set @error.
+
+Since this method transfers ownership of the return value (or
+error) to the caller, you may only call it once.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the task result, or -1 on error
+
+</return>
+</function>
+
+<function name="g_task_propagate_pointer">
+<description>
+Gets the result of @task as a pointer, and transfers ownership
+of that value to the caller.
+
+If the task resulted in an error, or was cancelled, then this will
+instead return %NULL and set @error.
+
+Since this method transfers ownership of the return value (or
+error) to the caller, you may only call it once.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> return location for a #GError
+</parameter_description>
+</parameter>
+</parameters>
+<return> the task result, or %NULL on error
+
+</return>
+</function>
+
+<function name="g_task_report_error">
+<description>
+Creates a #GTask and then immediately calls g_task_return_error()
+on it. Use this in the wrapper function of an asynchronous method
+when you want to avoid even calling the virtual method. You can
+then use g_async_result_is_tagged() in the finish method wrapper to
+check if the result there is tagged as having been created by the
+wrapper method, and deal with it appropriately if so.
+
+See also g_task_report_new_error().
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="source_object">
+<parameter_description> the #GObject that owns this task, or %NULL.
+</parameter_description>
+</parameter>
+<parameter name="callback">
+<parameter_description> a #GAsyncReadyCallback.
+</parameter_description>
+</parameter>
+<parameter name="callback_data">
+<parameter_description> user data passed to @callback.
+</parameter_description>
+</parameter>
+<parameter name="source_tag">
+<parameter_description> an opaque pointer indicating the source of this task
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> error to report
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_report_new_error">
+<description>
+Creates a #GTask and then immediately calls
+g_task_return_new_error() on it. Use this in the wrapper function
+of an asynchronous method when you want to avoid even calling the
+virtual method. You can then use g_async_result_is_tagged() in the
+finish method wrapper to check if the result there is tagged as
+having been created by the wrapper method, and deal with it
+appropriately if so.
+
+See also g_task_report_error().
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="source_object">
+<parameter_description> the #GObject that owns this task, or %NULL.
+</parameter_description>
+</parameter>
+<parameter name="callback">
+<parameter_description> a #GAsyncReadyCallback.
+</parameter_description>
+</parameter>
+<parameter name="callback_data">
+<parameter_description> user data passed to @callback.
+</parameter_description>
+</parameter>
+<parameter name="source_tag">
+<parameter_description> an opaque pointer indicating the source of this task
+</parameter_description>
+</parameter>
+<parameter name="domain">
+<parameter_description> a #GQuark.
+</parameter_description>
+</parameter>
+<parameter name="code">
+<parameter_description> an error code.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a string with format characters.
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> a list of values to insert into @format.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_return_boolean">
+<description>
+Sets @task's result to @result and completes the task (see
+g_task_return_pointer() for more discussion of exactly what this
+means).
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask.
+</parameter_description>
+</parameter>
+<parameter name="result">
+<parameter_description> the #gboolean result of a task function.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_return_error">
+<description>
+Sets @task's result to @error (which @task assumes ownership of)
+and completes the task (see g_task_return_pointer() for more
+discussion of exactly what this means).
+
+Note that since the task takes ownership of @error, and since the
+task may be completed before returning from g_task_return_error(),
+you cannot assume that @error is still valid after calling this.
+Call g_error_copy() on the error if you need to keep a local copy
+as well.
+
+See also g_task_return_new_error().
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask.
+</parameter_description>
+</parameter>
+<parameter name="error">
+<parameter_description> the #GError result of a task function.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_return_error_if_cancelled">
+<description>
+Checks if @task's #GCancellable has been cancelled, and if so, sets
+@task's error accordingly and completes the task (see
+g_task_return_pointer() for more discussion of exactly what this
+means).
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @task has been cancelled, %FALSE if not
+
+</return>
+</function>
+
+<function name="g_task_return_int">
+<description>
+Sets @task's result to @result and completes the task (see
+g_task_return_pointer() for more discussion of exactly what this
+means).
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask.
+</parameter_description>
+</parameter>
+<parameter name="result">
+<parameter_description> the integer (#gssize) result of a task function.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_return_new_error">
+<description>
+Sets @task's result to a new #GError created from @domain, @code,
+@format, and the remaining arguments, and completes the task (see
+g_task_return_pointer() for more discussion of exactly what this
+means).
+
+See also g_task_return_error().
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask.
+</parameter_description>
+</parameter>
+<parameter name="domain">
+<parameter_description> a #GQuark.
+</parameter_description>
+</parameter>
+<parameter name="code">
+<parameter_description> an error code.
+</parameter_description>
+</parameter>
+<parameter name="format">
+<parameter_description> a string with format characters.
+</parameter_description>
+</parameter>
+<parameter name="Varargs">
+<parameter_description> a list of values to insert into @format.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_return_pointer">
+<description>
+Sets @task's result to @result and completes the task. If @result
+is not %NULL, then @result_destroy will be used to free @result if
+the caller does not take ownership of it with
+g_task_propagate_pointer().
+
+&quot;Completes the task&quot; means that for an ordinary asynchronous task
+it will either invoke the task's callback, or else queue that
+callback to be invoked in the proper #GMainContext, or in the next
+iteration of the current #GMainContext. For a task run via
+g_task_run_in_thread() or g_task_run_in_thread_sync(), calling this
+method will save @result to be returned to the caller later, but
+the task will not actually be completed until the #GTaskThreadFunc
+exits.
+
+Note that since the task may be completed before returning from
+g_task_return_pointer(), you cannot assume that @result is still
+valid after calling this, unless you are still holding another
+reference on it.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+<parameter name="result">
+<parameter_description> the pointer result of a task
+function
+</parameter_description>
+</parameter>
+<parameter name="result_destroy">
+<parameter_description> a #GDestroyNotify function.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_run_in_thread">
+<description>
+Runs @task_func in another thread. When @task_func returns, @task's
+#GAsyncReadyCallback will be invoked in @task's #GMainContext.
+
+This takes a ref on @task until the task completes.
+
+See #GTaskThreadFunc for more details about how @task_func is handled.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+<parameter name="task_func">
+<parameter_description> a #GTaskThreadFunc
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_run_in_thread_sync">
+<description>
+Runs @task_func in another thread, and waits for it to return or be
+cancelled. You can use g_task_propagate_pointer(), etc, afterward
+to get the result of @task_func.
+
+See #GTaskThreadFunc for more details about how @task_func is handled.
+
+Normally this is used with tasks created with a %NULL
+&lt;literal&gt;callback&lt;/literal&gt;, but note that even if the task does
+have a callback, it will not be invoked when @task_func returns.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> a #GTask
+</parameter_description>
+</parameter>
+<parameter name="task_func">
+<parameter_description> a #GTaskThreadFunc
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_set_check_cancellable">
+<description>
+Sets or clears @task's check-cancellable flag. If this is %TRUE
+(the default), then g_task_propagate_pointer(), etc, and
+g_task_had_error() will check the task's #GCancellable first, and
+if it has been cancelled, then they will consider the task to have
+returned an &quot;Operation was cancelled&quot; error
+(%G_IO_ERROR_CANCELLED), regardless of any other error or return
+value the task may have had.
+
+If @check_cancellable is %FALSE, then the #GTask will not check the
+cancellable itself, and it is up to @task's owner to do this (eg,
+via g_task_return_error_if_cancelled()).
+
+If you are using g_task_set_return_on_cancel() as well, then
+you must leave check-cancellable set %TRUE.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> the #GTask
+</parameter_description>
+</parameter>
+<parameter name="check_cancellable">
+<parameter_description> whether #GTask will check the state of
+its #GCancellable for you.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_set_priority">
+<description>
+Sets @task's priority. If you do not call this, it will default to
+%G_PRIORITY_DEFAULT.
+
+This will affect the priority of #GSources created with
+g_task_attach_source() and the scheduling of tasks run in threads,
+and can also be explicitly retrieved later via
+g_task_get_priority().
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> the #GTask
+</parameter_description>
+</parameter>
+<parameter name="priority">
+<parameter_description> the &lt;link linkend=&quot;io-priority&quot;&gt;priority&lt;/link&gt;
+of the request.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_set_return_on_cancel">
+<description>
+Sets or clears @task's return-on-cancel flag. This is only
+meaningful for tasks run via g_task_run_in_thread() or
+g_task_run_in_thread_sync().
+
+If @return_on_cancel is %TRUE, then cancelling @task's
+#GCancellable will immediately cause it to return, as though the
+task's #GTaskThreadFunc had called
+g_task_return_error_if_cancelled() and then returned.
+
+This allows you to create a cancellable wrapper around an
+uninterruptable function. The #GTaskThreadFunc just needs to be
+careful that it does not modify any externally-visible state after
+it has been cancelled. To do that, the thread should call
+g_task_set_return_on_cancel() again to (atomically) set
+return-on-cancel %FALSE before making externally-visible changes;
+if the task gets cancelled before the return-on-cancel flag could
+be changed, g_task_set_return_on_cancel() will indicate this by
+returning %FALSE.
+
+You can disable and re-enable this flag multiple times if you wish.
+If the task's #GCancellable is cancelled while return-on-cancel is
+%FALSE, then calling g_task_set_return_on_cancel() to set it %TRUE
+again will cause the task to be cancelled at that point.
+
+If the task's #GCancellable is already cancelled before you call
+g_task_run_in_thread()/g_task_run_in_thread_sync(), then the
+#GTaskThreadFunc will still be run (for consistency), but the task
+will also be completed right away.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> the #GTask
+</parameter_description>
+</parameter>
+<parameter name="return_on_cancel">
+<parameter_description> whether the task returns automatically when
+it is cancelled.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if @task's return-on-cancel flag was changed to
+match @return_on_cancel. %FALSE if @task has already been
+cancelled.
+
+</return>
+</function>
+
+<function name="g_task_set_source_tag">
+<description>
+Sets @task's source tag. You can use this to tag a task return
+value with a particular pointer (usually a pointer to the function
+doing the tagging) and then later check it using
+g_task_get_source_tag() (or g_async_result_is_tagged()) in the
+task's &quot;finish&quot; function, to figure out if the response came from a
+particular place.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> the #GTask
+</parameter_description>
+</parameter>
+<parameter name="source_tag">
+<parameter_description> an opaque pointer indicating the source of this task
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_task_set_task_data">
+<description>
+Sets @task's task data (freeing the existing task data, if any).
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="task">
+<parameter_description> the #GTask
+</parameter_description>
+</parameter>
+<parameter name="task_data">
+<parameter_description> task-specific data
+</parameter_description>
+</parameter>
+<parameter name="task_data_destroy">
+<parameter_description> #GDestroyNotify for @task_data
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_tcp_connection_get_graceful_disconnect">
 <description>
 Checks if graceful disconnects are used. See
@@ -53593,7 +56936,7 @@ g_test_dbus_up() before acquiring the session bus.
 <function name="g_test_dbus_up">
 <description>
 Start a dbus-daemon instance and set DBUS_SESSION_BUS_ADDRESS. After this
-call, it is safe for unit tests to start sending messages on the session bug.
+call, it is safe for unit tests to start sending messages on the session bus.
 
 If this function is called from setup callback of g_test_add(),
 g_test_dbus_down() must be called in its teardown callback.
@@ -58415,6 +61758,7 @@ Looks up a value named @key in @file.
 This call is equivalent to gvdb_table_get_value() except that it
 never byteswaps the value.
 
+
 </description>
 <parameters>
 <parameter name="table">
@@ -58445,6 +61789,7 @@ on the continued existence of @file.
 You should call gvdb_table_unref() on the return result when you no
 longer require it.
 
+
 </description>
 <parameters>
 <parameter name="file">
@@ -58471,6 +61816,7 @@ continued existence of @file.
 You should call g_variant_unref() on the return result when you no
 longer require it.
 
+
 </description>
 <parameters>
 <parameter name="file">
@@ -58493,6 +61839,7 @@ Checks for a value named @key in @file.
 Note: this function does not consider non-value nodes (other hash
 tables, for example).
 
+
 </description>
 <parameters>
 <parameter name="file">
@@ -58516,6 +61863,7 @@ An on-disk GVDB can be marked as invalid.  This happens when the file
 has been replaced.  The appropriate action is typically to reopen the
 file.
 
+
 </description>
 <parameters>
 <parameter name="table">
@@ -58541,6 +61889,7 @@ know this for yourself.
 You should call g_strfreev() on the return result when you no longer
 require it.
 
+
 </description>
 <parameters>
 <parameter name="file">
@@ -58571,6 +61920,7 @@ An empty or otherwise corrupted file is considered to be a valid
 You should call gvdb_table_unref() on the return result when you no
 longer require it.
 
+
 </description>
 <parameters>
 <parameter name="filename">
@@ -58600,6 +61950,7 @@ An empty or otherwise corrupted data is considered to be a valid
 You should call gvdb_table_unref() on the return result when you no
 longer require it.
 
+
 </description>
 <parameters>
 <parameter name="data">
@@ -58635,6 +61986,7 @@ longer require it.
 <description>
 Increases the reference count on @file.
 
+
 </description>
 <parameters>
 <parameter name="file">
index d06bd06..1a3a388 100644 (file)
@@ -1765,7 +1765,7 @@ Activation roots are typically used in #GVolumeMonitor
 implementations to find the underlying mount to shadow, see
 g_mount_is_shadowed() for more details.
 
-
+Since: 2.18
 </description>
 <parameters>
 <parameter name="volume">
@@ -1775,8 +1775,6 @@ g_mount_is_shadowed() for more details.
 </parameters>
 <return> the activation root of @volume or %NULL. Use
 g_object_unref() to free.
-
-Since: 2.18
 </return>
 </function>
 
index 4be8ea2..94cc165 100644 (file)
   (c-name "GSimpleAction")
   (gtype-id "G_TYPE_SIMPLE_ACTION")
 )
+
+(define-object TlsClientConnection
+  (in-module "Gio")
+  (c-name "GTlsClientConnection")
+  (gtype-id "G_TYPE_TLS_CLIENT_CONNECTION")
+)
index 097b027..2a53080 100644 (file)
   (construct-only #f)
 )
 
+;; From GTlsBackend
+
+;; From GTlsCertificate
+
+(define-property certificate
+  (of-object "GTlsCertificate")
+  (prop-type "GParamBoxed")
+  (docs "The DER representation of the certificate")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
+(define-property certificate-pem
+  (of-object "GTlsCertificate")
+  (prop-type "GParamString")
+  (docs "The PEM representation of the certificate")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
+(define-property private-key
+  (of-object "GTlsCertificate")
+  (prop-type "GParamBoxed")
+  (docs "The DER representation of the certificate's private key")
+  (readable #f)
+  (writable #t)
+  (construct-only #t)
+)
+
+(define-property private-key-pem
+  (of-object "GTlsCertificate")
+  (prop-type "GParamString")
+  (docs "The PEM representation of the certificate's private key")
+  (readable #f)
+  (writable #t)
+  (construct-only #t)
+)
+
+(define-property issuer
+  (of-object "GTlsCertificate")
+  (prop-type "GParamObject")
+  (docs "The certificate for the issuing entity")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
+;; From GTlsClientConnection
+
+(define-property accepted-cas
+  (of-object "GTlsClientConnection")
+  (prop-type "GParamPointer")
+  (docs "Distinguished names of the CAs the server accepts certificates from")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property server-identity
+  (of-object "GTlsClientConnection")
+  (prop-type "GParamObject")
+  (docs "GSocketConnectable identifying the server")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property use-ssl3
+  (of-object "GTlsClientConnection")
+  (prop-type "GParamBoolean")
+  (docs "Use SSL 3.0 rather than trying to use TLS 1.x")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property validation-flags
+  (of-object "GTlsClientConnection")
+  (prop-type "GParamFlags")
+  (docs "What certificate validation to perform")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+;; From GTlsConnection
+
+(define-signal accept-certificate
+  (of-object "GTlsConnection")
+  (return-type "gboolean")
+  (when "last")
+  (parameters
+    '("GTlsCertificate*" "p0")
+    '("GTlsCertificateFlags" "p1")
+  )
+)
+
+(define-property base-io-stream
+  (of-object "GTlsConnection")
+  (prop-type "GParamObject")
+  (docs "The GIOStream that the connection wraps")
+  (readable #t)
+  (writable #t)
+  (construct-only #t)
+)
+
+(define-property require-close-notify
+  (of-object "GTlsConnection")
+  (prop-type "GParamBoolean")
+  (docs "Whether to require proper TLS close notification")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property rehandshake-mode
+  (of-object "GTlsConnection")
+  (prop-type "GParamEnum")
+  (docs "When to allow rehandshaking")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property use-system-certdb
+  (of-object "GTlsConnection")
+  (prop-type "GParamBoolean")
+  (docs "Whether to verify peer certificates against the system certificate database")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property database
+  (of-object "GTlsConnection")
+  (prop-type "GParamObject")
+  (docs "Certificate database to use for looking up or verifying certificates")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property interaction
+  (of-object "GTlsConnection")
+  (prop-type "GParamObject")
+  (docs "Optional object for user interaction")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property certificate
+  (of-object "GTlsConnection")
+  (prop-type "GParamObject")
+  (docs "The connection's certificate")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property peer-certificate
+  (of-object "GTlsConnection")
+  (prop-type "GParamObject")
+  (docs "The connection's peer's certificate")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+(define-property peer-certificate-errors
+  (of-object "GTlsConnection")
+  (prop-type "GParamFlags")
+  (docs "Errors found with the peer's certificate")
+  (readable #t)
+  (writable #f)
+  (construct-only #f)
+)
+
+;; From GTlsDatabase
+
+;; From GTlsFileDatabase
+
+(define-property anchors
+  (of-object "GTlsFileDatabase")
+  (prop-type "GParamString")
+  (docs "The certificate authority anchor file")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+;; From GTlsInteraction
+
+;; From GTlsPassword
+
+(define-property flags
+  (of-object "GTlsPassword")
+  (prop-type "GParamFlags")
+  (docs "Flags about the password")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property description
+  (of-object "GTlsPassword")
+  (prop-type "GParamString")
+  (docs "Description of what the password is for")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+(define-property warning
+  (of-object "GTlsPassword")
+  (prop-type "GParamString")
+  (docs "Warning about the password")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
+;; From GTlsServerConnection
+
+(define-property authentication-mode
+  (of-object "GTlsServerConnection")
+  (prop-type "GParamEnum")
+  (docs "The client authentication mode")
+  (readable #t)
+  (writable #t)
+  (construct-only #f)
+)
+
 ;; From GUnixConnection
 
 ;; From GSocketListener
index 31acf6f..f9a011e 100644 (file)
  )
 )
 
+; GTlsConnection
+
+(define-vfunc handshake
+  (of-object "GTlsConnection")
+  (return-type "gboolean")
+  (parameters
+   '("GCancellable*" "cancellable")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc handshake_async
+  (of-object "GTlsConnection")
+  (return-type "void")
+  (parameters
+   '("int" "io_priority")
+   '("GCancellable*" "cancellable")
+   '("GAsyncReadyCallback" "callback")
+   '("gpointer" "user_data")
+  )
+)
+
+(define-vfunc handshake_finish
+  (of-object "GTlsConnection")
+  (return-type "gboolean")
+  (parameters
+   '("GAsyncResult*" "result")
+   '("GError**" "error")
+  )
+)
+
+; GTlsDatabase
+
+(define-vfunc verify_chain
+  (of-object "GTlsDatabase")
+  (return-type "GTlsCertificateFlags")
+  (parameters
+   '("GTlsCertificate*" "chain")
+   '("const-gchar*" "purpose")
+   '("GSocketConnectable*" "identity")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseVerifyFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc verify_chain_async
+  (of-object "GTlsDatabase")
+  (return-type "void")
+  (parameters
+   '("GTlsCertificate*" "chain")
+   '("const-gchar*" "purpose")
+   '("GSocketConnectable*" "identity")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseVerifyFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GAsyncReadyCallback" "callback")
+   '("gpointer" "user_data")
+  )
+)
+
+(define-vfunc verify_chain_finish
+  (of-object "GTlsDatabase")
+  (return-type "GTlsCertificateFlags")
+  (parameters
+   '("GAsyncResult*" "result")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc create_certificate_handle
+  (of-object "GTlsDatabase")
+  (return-type "gchar*")
+  (parameters
+   '("GTlsCertificate*" "certificate")
+  )
+)
+
+(define-vfunc lookup_certificate_for_handle
+  (of-object "GTlsDatabase")
+  (return-type "GTlsCertificate*")
+  (parameters
+   '("const-gchar*" "handle")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseLookupFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc lookup_certificate_for_handle_async
+  (of-object "GTlsDatabase")
+  (return-type "void")
+  (parameters
+   '("const-gchar*" "handle")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseLookupFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GAsyncReadyCallback" "callback")
+   '("gpointer" "user_data")
+  )
+)
+
+(define-vfunc lookup_certificate_for_handle_finish
+  (of-object "GTlsDatabase")
+  (return-type "GTlsCertificate*")
+  (parameters
+   '("GAsyncResult*" "result")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc lookup_certificate_issuer
+  (of-object "GTlsDatabase")
+  (return-type "GTlsCertificate*")
+  (parameters
+   '("GTlsCertificate*" "certificate")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseLookupFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc lookup_certificate_issuer_async
+  (of-object "GTlsDatabase")
+  (return-type "void")
+  (parameters
+   '("GTlsCertificate*" "certificate")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseLookupFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GAsyncReadyCallback" "callback")
+   '("gpointer" "user_data")
+  )
+)
+
+(define-vfunc lookup_certificate_issuer_finish
+  (of-object "GTlsDatabase")
+  (return-type "GTlsCertificate*")
+  (parameters
+   '("GAsyncResult*" "result")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc lookup_certificates_issued_by
+  (of-object "GTlsDatabase")
+  (return-type "GList*")
+  (parameters
+   '("GByteArray*" "issuer_raw_dn")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseLookupFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc lookup_certificates_issued_by_async
+  (of-object "GTlsDatabase")
+  (return-type "void")
+  (parameters
+   '("GByteArray*" "issuer_raw_dn")
+   '("GTlsInteraction*" "interaction")
+   '("GTlsDatabaseLookupFlags" "flags")
+   '("GCancellable*" "cancellable")
+   '("GAsyncReadyCallback" "callback")
+   '("gpointer" "user_data")
+  )
+)
+
+(define-vfunc lookup_certificates_issued_by_finish
+  (of-object "GTlsDatabase")
+  (return-type "GList*")
+  (parameters
+   '("GAsyncResult*" "result")
+   '("GError**" "error")
+  )
+)
+
+; GTlsInteraction
+
+(define-vfunc ask_password
+  (of-object "GTlsInteraction")
+  (return-type "GTlsInteractionResult")
+  (parameters
+   '("GTlsPassword*" "password")
+   '("GCancellable*" "cancellable")
+   '("GError**" "error")
+  )
+)
+
+(define-vfunc ask_password_async
+  (of-object "GTlsInteraction")
+  (return-type "void")
+  (parameters
+   '("GTlsPassword*" "password")
+   '("GCancellable*" "cancellable")
+   '("GAsyncReadyCallback" "callback")
+   '("gpointer" "user_data")
+  )
+)
+
+(define-vfunc ask_password_finish
+  (of-object "GTlsInteraction")
+  (return-type "GTlsInteractionResult")
+  (parameters
+   '("GAsyncResult*" "result")
+   '("GError**" "error")
+  )
+)
+
+; GTlsPassword
+
+(define-vfunc get_value
+  (of-object "GTlsPassword")
+  (return-type "const-guchar*")
+  (parameters
+   '("gsize*" "length")
+  )
+)
+
+(define-vfunc set_value
+  (of-object "GTlsPassword")
+  (return-type "void")
+  (parameters
+   '("guchar*" "value")
+   '("gssize" "length")
+   '("GDestroyNotify" "destroy")
+  )
+)
+
+(define-vfunc get_default_warning
+  (of-object "GTlsPassword")
+  (return-type "const-gchar*")
+)
+
 ; GVolume
 
 (define-vfunc get_name
   '("GMount*" "mount")
  )
 )
-
-
index b6d78e6..97ef347 100644 (file)
@@ -30,7 +30,7 @@ namespace Gio
 {
 
 /** This is a very minimal interface for icons. It provides functions for checking the equality of two icons and hashing of icons.
- * Glib::Icon does not provide the actual pixmap for the icon as this is out of GIO's scope. However implementations of Icon may contain the name of an 
+ * Glib::Icon does not provide the actual pixmap for the icon as this is out of GIO's scope. However implementations of Icon may contain the name of an
  * icon (see ThemedIcon), or the path to an icon (see LoadableIcon).
  *
  * To obtain a hash of an Icon instance, see hash().
index ba55fa2..7065303 100644 (file)
@@ -66,12 +66,12 @@ public:
 
   //TODO: Why not use _WRAP_METHOD() for this?
   /** Request an asynchronous read of @a count bytes from the stream into a
-   * new Glib::Bytes. When the operation is finished @a slot will be called. 
-   * You can then call read_bytes_finish() to get the result of the 
+   * new Glib::Bytes. When the operation is finished @a slot will be called.
+   * You can then call read_bytes_finish() to get the result of the
    * operation.
    *
    * During an async request no other sync and async calls are allowed, and will
-   * result in Gio::Error with PENDING being thrown. 
+   * result in Gio::Error with PENDING being thrown.
    *
    * A value of @a count larger than MAXSSIZE will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
    *
@@ -95,12 +95,12 @@ public:
   void read_bytes_async(gsize count, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
   /** Request an asynchronous read of @a count bytes from the stream into a
-   * new Glib::Bytes. When the operation is finished @a slot will be called. 
-   * You can then call read_bytes_finish() to get the result of the 
+   * new Glib::Bytes. When the operation is finished @a slot will be called.
+   * You can then call read_bytes_finish() to get the result of the
    * operation.
    *
    * During an async request no other sync and async calls are allowed, and will
-   * result in Gio::Error with PENDING being thrown. 
+   * result in Gio::Error with PENDING being thrown.
    *
    * A value of @a count larger than MAXSSIZE will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
    *
@@ -137,12 +137,12 @@ public:
 
 
   /** Request an asynchronous read of @a count bytes from the stream into the buffer
-   * starting at @a buffer. When the operation is finished @a slot will be called. 
-   * You can then call read_finish() to get the result of the 
+   * starting at @a buffer. When the operation is finished @a slot will be called.
+   * You can then call read_finish() to get the result of the
    * operation.
    *
    * During an async request no other sync and async calls are allowed, and will
-   * result in Gio::Error with PENDING being thrown. 
+   * result in Gio::Error with PENDING being thrown.
    *
    * A value of @a count larger than MAXSSIZE will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
    *
@@ -169,12 +169,12 @@ public:
   void read_async(void* buffer, gsize count, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
   /** Request an asynchronous read of @a count bytes from the stream into the buffer
-   * starting at @a buffer. When the operation is finished @a slot will be called. 
-   * You can then call read_finish() to get the result of the 
+   * starting at @a buffer. When the operation is finished @a slot will be called.
+   * You can then call read_finish() to get the result of the
    * operation.
    *
    * During an async request no other sync and async calls are allowed, and will
-   * result in a Gio::Error with PENDING being thrown. 
+   * result in a Gio::Error with PENDING being thrown.
    *
    * A value of @a count larger than MAXSSIZE will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
    *
@@ -195,7 +195,7 @@ public:
    * @param buffer A buffer to read data into (which should be at least count bytes long).
    * @param count The number of bytes that will be read from the stream.
    * @param slot Callback to call when the request is satisfied.
-   * @param io_priority The I/O priority of the request. 
+   * @param io_priority The I/O priority of the request.
    */
   void read_async(void* buffer, gsize count, const SlotAsyncReady& slot, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_input_stream_read_async)
@@ -207,11 +207,11 @@ public:
   //TODO: Use std::size_type instead of gsize?
 
   /** Request an asynchronous skip of @a count bytes from the stream into the buffer
-   * starting at @a buffer. When the operation is finished @a slot will be called. 
+   * starting at @a buffer. When the operation is finished @a slot will be called.
    * You can then call skip_finish() to get the result of the operation.
    *
    * During an async request no other sync and async calls are allowed, and will
-   * result in Gio::Error with PENDING being thrown. 
+   * result in Gio::Error with PENDING being thrown.
    *
    * A value of @a count larger than MAXSSIZE will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
    *
@@ -232,16 +232,16 @@ public:
    * @param count The number of bytes that will be skipped from the stream.
    * @param slot Callback to call when the request is satisfied.
    * @param cancellable A Cancellable object.
-   * @param io_priority The I/O priority of the request. 
+   * @param io_priority The I/O priority of the request.
    */
   void skip_async(gsize count, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
   /** Request an asynchronous skip of @a count bytes from the stream into the buffer
-   * starting at @a buffer. When the operation is finished @a slot will be called. 
+   * starting at @a buffer. When the operation is finished @a slot will be called.
    * You can then call skip_finish() to get the result of the operation.
    *
    * During an async request no other sync and async calls are allowed, and will
-   * result in Gio::Error with PENDING being thrown. 
+   * result in Gio::Error with PENDING being thrown.
    *
    * A value of @a count larger than MAXSSIZE will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
    *
@@ -261,7 +261,7 @@ public:
    *
    * @param count The number of bytes that will be skipped from the stream.
    * @param slot Callback to call when the request is satisfied.
-   * @param io_priority The I/O priority of the request. 
+   * @param io_priority The I/O priority of the request.
    */
   void skip_async(gsize count, const SlotAsyncReady& slot, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_input_stream_skip_async)
@@ -271,8 +271,8 @@ public:
                errthrow)
 
   /** Requests an asynchronous closes of the stream, releasing resources related to it.
-   * When the operation is finished @a slot will be called. 
-   * You can then call close_finish() to get the result of the 
+   * When the operation is finished @a slot will be called.
+   * You can then call close_finish() to get the result of the
    * operation.
    *
    * For behaviour details see close().
@@ -283,13 +283,13 @@ public:
    *
    * @param slot Callback to call when the request is satisfied.
    * @param cancellable A Cancellable object.
-   * @param io_priority The I/O priority of the request. 
+   * @param io_priority The I/O priority of the request.
    */
   void close_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
   /** Requests an asynchronous closes of the stream, releasing resources related to it.
-   * When the operation is finished @a slot will be called. 
-   * You can then call close_finish() to get the result of the 
+   * When the operation is finished @a slot will be called.
+   * You can then call close_finish() to get the result of the
    * operation.
    *
    * For behaviour details see close().
@@ -299,7 +299,7 @@ public:
    * override one you must override all.
    *
    * @param slot Callback to call when the request is satisfied.
-   * @param io_priority The I/O priority of the request. 
+   * @param io_priority The I/O priority of the request.
    */
   void close_async(const SlotAsyncReady& slot, int io_priority = Glib::PRIORITY_DEFAULT);
   _IGNORE(g_input_stream_close_async)
index 35f4922..dcd5a76 100644 (file)
@@ -90,7 +90,7 @@ public:
 
   /// A non-cancellable version of splice_async().
   void splice_async(const Glib::RefPtr<IOStream>& stream2,
-    const SlotAsyncReady& slot, 
+    const SlotAsyncReady& slot,
     IOStreamSpliceFlags flags = Gio::IO_STREAM_SPLICE_NONE,
     int io_priority = Glib::PRIORITY_DEFAULT);
 
index 40517b7..028f74e 100644 (file)
@@ -18,3 +18,4 @@
  */
 
 #include <gio/gio.h>
+#include <glibmm/bytes.h>
index d44aa46..bb6cccb 100644 (file)
 _DEFS(giomm,gio)
 _PINCLUDE(giomm/private/outputstream_p.h)
 
+namespace Glib
+{
+
+// Forward declaration.
+class Bytes;
+
+}
+
 namespace Gio
 {
 
 /** Streaming output operations on memory chunks
  *
- * This class uses arbitrary memory chunks as output for GIO streaming output operations. 
+ * This class uses arbitrary memory chunks as output for GIO streaming output operations.
  *
  * @ingroup Streams
  *
@@ -57,13 +65,15 @@ public:
 
   _WRAP_METHOD(gsize get_size() const, g_memory_output_stream_get_size)
   _WRAP_METHOD(gsize get_data_size() const, g_memory_output_stream_get_data_size)
-  
+
+  _WRAP_METHOD(Glib::RefPtr<Glib::Bytes> steal_as_bytes(), g_memory_output_stream_steal_as_bytes)
+
   _WRAP_PROPERTY("data", void*)
   _WRAP_PROPERTY("data-size", gulong)
   //Too C-like:   _WRAP_PROPERTY("destroy-function", void*)
   //Too C-like:   _WRAP_PROPERTY("realloc-function"         gpointer              : Read / Write / Construct Only
   _WRAP_PROPERTY("size", gulong)
-  
+
 };
 
 } // namespace Gio
index bf8e897..221eaea 100644 (file)
@@ -22,7 +22,7 @@ namespace Gio
 
 void MenuItem::set_action_and_target(const Glib::ustring& action)
 {
-  g_menu_item_set_action_and_target_value(gobj(), action.c_str(), 0); 
+  g_menu_item_set_action_and_target_value(gobj(), action.c_str(), 0);
 }
 
 } // namespace Gio
index 51e5e84..2ad13b3 100644 (file)
@@ -42,11 +42,14 @@ public:
 
   _WRAP_CREATE(const Glib::ustring& label{?}, const Glib::RefPtr<MenuModel>& submenu)
 
-            
+
 
 //TODO: GMenuItem * g_menu_item_new_section                 (const Glib::ustring& label,
 //                                                     const Glib::RefPtr<MenuModel>& section);
 
+  //TODO: Add a set_attribute() templated method to get values directly instead
+  //of requiring a Glib::VariantBase?
+
   _WRAP_METHOD(void set_attribute_value(const Glib::ustring& attribute, const Glib::VariantBase& value), g_menu_item_set_attribute_value, deprecated "Use set_attribute() instead.")
   _WRAP_METHOD(void set_attribute(const Glib::ustring& attribute, const Glib::VariantBase& value), g_menu_item_set_attribute_value)
   _IGNORE(g_menu_item_set_attribute)
@@ -59,11 +62,14 @@ public:
   _WRAP_METHOD(void set_submenu(const Glib::RefPtr<MenuModel>& submenu), g_menu_item_set_submenu)
   _WRAP_METHOD(void set_section(const Glib::RefPtr<MenuModel>& section), g_menu_item_set_section)
 
+  //TODO: Add a get_attribute() templated method to get values directly instead
+  //of returning a Glib::VariantBase?
   _WRAP_METHOD(Glib::VariantBase get_attribute(const Glib::ustring& attribute, const Glib::VariantType& expected_type{?}) const, g_menu_item_get_attribute_value)
 
   // Ignore varargs function.
   _IGNORE(g_menu_item_get_attribute)
+
   //TODO: Rename this to unset_action_target() and deprecate this one.
   /** Unsets the target for the specified @a action.
    */
index fc01ef2..729b9c2 100644 (file)
@@ -136,6 +136,10 @@ dnl See the .ccg implementation for how this conversion works.
   //It makes no sense to return const by value.
   _CONVERSION(`MenuAttribute',`const gchar*',`giomm_get_menu_attribute($3)')
 #m4end
+
+  //TODO: Add a get_item_attribute() templated method to get values directly
+  //instead of returning a Glib::VariantBase?
+
   _WRAP_METHOD(Glib::VariantBase get_item_attribute(int item_index, MenuAttribute attribute, const Glib::VariantType& expected_type), g_menu_model_get_item_attribute_value)
   _WRAP_METHOD(const Glib::VariantBase get_item_attribute(int item_index, MenuAttribute attribute, const Glib::VariantType& expected_type) const, g_menu_model_get_item_attribute_value, constversion)
 
@@ -159,6 +163,9 @@ dnl See the .ccg implementation for how this conversion works.
   _WRAP_METHOD(Glib::RefPtr<const MenuLinkIter> iterate_item_links(int item_index) const, g_menu_model_iterate_item_links, constversion)
 
   _WRAP_METHOD(void items_changed(int position, int removed, int added), g_menu_model_items_changed)
+
+  //TODO: The "items-changed" signal cannot be wrapped because it is not
+  //included in the *Class declaration of GMenuModel.
 };
 
 } // namespace Gio
index fb529cf..bf2f83f 100644 (file)
@@ -45,12 +45,12 @@ class Drive;
 class Volume;
 
 /** The Mount interface represents user-visible mounts.
- * Mount is a "mounted" filesystem that you can access. Mounted is in quotes because it's not the same as a unix mount: 
+ * Mount is a "mounted" filesystem that you can access. Mounted is in quotes because it's not the same as a unix mount:
  * it might be a gvfs mount, but you can still access the files on it if you use GIO. It might or might not be related to a volume object.
  *
- * Unmounting a Mount instance is an asynchronous operation. For more information about asynchronous operations, see AsyncReady. 
- * To unmount a Mount instance, first call unmount(). The callback slot will be called when the operation has resolved (either with success or failure), 
- * and a AsyncReady structure will be passed to the callback. That callback should then call unmount_finish() with the AsyncReady data to see if the operation was completed successfully. 
+ * Unmounting a Mount instance is an asynchronous operation. For more information about asynchronous operations, see AsyncReady.
+ * To unmount a Mount instance, first call unmount(). The callback slot will be called when the operation has resolved (either with success or failure),
+ * and a AsyncReady structure will be passed to the callback. That callback should then call unmount_finish() with the AsyncReady data to see if the operation was completed successfully.
  *
  * @ingroup Streams
  *
@@ -99,8 +99,8 @@ public:
   /** Remounts a mount.
    * This is an asynchronous operation, and is finished by calling mount_finish() with the AsyncResult data returned in the callback slot.
    *
-   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount 
-   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to 
+   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount
+   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to
    * actually be unmounted.
    *
    * @param operation A mount operation.
@@ -112,30 +112,34 @@ public:
   /** Remounts a mount.
    * This is an asynchronous operation, and is finished by calling mount_finish() with the AsyncResult data returned in the callback slot.
    *
-   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount 
-   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to 
+   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount
+   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to
    * actually be unmounted.
    *
    * @param operation A mount operation.
    * @param slot A callback which will be called when the operation is completed or canceled.
+   * @param flags Flags affecting the operation.
    */
   void remount(const Glib::RefPtr<MountOperation>& operation, const SlotAsyncReady& slot, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
   /** Remounts a mount.
-   * 
-   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount 
-   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to 
+   *
+   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount
+   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to
    * actually be unmounted.
    *
    * @param operation A mount operation.
+   * @param flags Flags affecting the operation.
    */
   void remount(const Glib::RefPtr<MountOperation>& operation, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
   /** Remounts a mount, without user interaction.
-   * 
-   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount 
-   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to 
+   *
+   * Remounting is useful when some setting affecting the operation of the volume has been changed, as this may need a remount
+   * to take affect. While this is semantically equivalent with unmounting and then remounting, not all backends might need to
    * actually be unmounted.
+   *
+   * @param flags Flags affecting the operation.
    */
   void remount(MountMountFlags flags = MOUNT_MOUNT_NONE);
   _IGNORE(g_mount_remount)
@@ -159,10 +163,10 @@ public:
 
   /** Tries to guess the type of content stored on the mount.
    * Returns one or more textual identifiers of well-known content types (typically
-   * prefixed with "x-content/"), e.g. x-content/image-dcf for camera 
-   * memory cards. See the <ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">shared-mime-info</ulink> specification for more on x-content types.
+   * prefixed with "x-content/"), e.g. x-content/image-dcf for camera
+   * memory cards. See the <a href="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">shared-mime-info</a> specification for more on x-content types.
    *
-   * This is an asynchronous operation, and is finished by calling 
+   * This is an asynchronous operation, and is finished by calling
    * guess_content_type_finish().
    *
    * @param slot A callback which will be called when the operation is completed or canceled.
@@ -175,10 +179,10 @@ public:
 
   /** Tries to guess the type of content stored on the mount.
    * Returns one or more textual identifiers of well-known content types (typically
-   * prefixed with "x-content/"), e.g. x-content/image-dcf for camera 
-   * memory cards. See the <ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">shared-mime-info</ulink> specification for more on x-content types.
+   * prefixed with "x-content/"), e.g. x-content/image-dcf for camera
+   * memory cards. See the <a href="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">shared-mime-info</a> specification for more on x-content types.
    *
-   * This is an asynchronous operation, and is finished by calling 
+   * This is an asynchronous operation, and is finished by calling
    * guess_content_type_finish().
    *
    * @param slot A callback which will be called when the operation is completed or canceled.
@@ -190,8 +194,8 @@ public:
 
   /** Tries to guess the type of content stored on the mount.
    * Returns one or more textual identifiers of well-known content types (typically
-   * prefixed with "x-content/"), e.g. x-content/image-dcf for camera 
-   * memory cards. See the <ulink url="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">shared-mime-info</ulink> specification for more on x-content types.
+   * prefixed with "x-content/"), e.g. x-content/image-dcf for camera
+   * memory cards. See the <a href="http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec">shared-mime-info</a> specification for more on x-content types.
    *
    * @param force_rescan Whether to force a rescan of the content. Otherwise a cached result will be used if available.
    *
@@ -235,11 +239,11 @@ Glib::RefPtr<Gio::Mount> wrap(GMount* object, bool take_copy);
 namespace Container_Helpers
 {
 
-/** This specialization of TypeTraits exists 
- * because the default use of Glib::wrap(GObject*), 
+/** This specialization of TypeTraits exists
+ * because the default use of Glib::wrap(GObject*),
  * instead of a specific Glib::wrap(GSomeInterface*),
  * would not return a wrapper for an interface.
- */ 
+ */
 template <>
 struct TypeTraits< Glib::RefPtr<Gio::Mount> >
 {
@@ -252,7 +256,7 @@ struct TypeTraits< Glib::RefPtr<Gio::Mount> >
 
   static CppType to_cpp_type    (const CType& item)
   {
-    //Use a specific Glib::wrap() function, 
+    //Use a specific Glib::wrap() function,
     //because CType has the specific type (not just GObject):
     return Glib::wrap(item, true /* take_copy */);
   }
index 879aed2..450de59 100644 (file)
@@ -34,9 +34,9 @@ _WRAP_ENUM(MountOperationResult, GMountOperationResult, NO_GTYPE)
 /** Authentication methods for mountable locations.
  *
  * MountOperation provides a mechanism for authenticating mountable operations, such as loop mounting files, hard drive partitions or server locations.
- * 
- * Mounting operations are handed a MountOperation that they can use if they require any privileges or authentication for their volumes to be mounted (e.g. 
- * a hard disk partition or an encrypted filesystem), or if they are implementing a remote server protocol which requires user credentials such as FTP or 
+ *
+ * Mounting operations are handed a MountOperation that they can use if they require any privileges or authentication for their volumes to be mounted (e.g.
+ * a hard disk partition or an encrypted filesystem), or if they are implementing a remote server protocol which requires user credentials such as FTP or
  * WebDAV.
  *
  * Developers should instantiate a subclass of this that implements all the various callbacks to show the required dialogs.
@@ -71,7 +71,7 @@ public:
                g_mount_operation_set_domain)
   _WRAP_METHOD(PasswordSave get_password_save() const,
                g_mount_operation_get_password_save)
-  _WRAP_METHOD(void set_password_save(PasswordSave password_save),
+  _WRAP_METHOD(void set_password_save(PasswordSave save),
                g_mount_operation_set_password_save)
   _WRAP_METHOD(int get_choice() const, g_mount_operation_get_choice)
   _WRAP_METHOD(void set_choice(int choice), g_mount_operation_set_choice)
@@ -94,7 +94,7 @@ public:
   //TODO: The array of char* is not very pleasant to wrap:
   //_WRAP_SIGNAL( void show_processes(const Glib::ustring& message, GArray* processes, const gchar *choices[]);
 
-  _WRAP_SIGNAL(void show_unmount_progress(const Glib::ustring& message, gint64 time_left, gint64 bytes_left), "show_unmount_progress")
+  _WRAP_SIGNAL(void show_unmount_progress(const Glib::ustring& message, gint64 time_left, gint64 bytes_left), "show_unmount_progress", no_default_handler)
 
   _WRAP_PROPERTY("username", Glib::ustring)
   _WRAP_PROPERTY("password", Glib::ustring)
index fbfc6f1..39b27e4 100644 (file)
@@ -48,16 +48,16 @@ public:
 
   /** Tries to write @a count  bytes from @a buffer  into the stream. Will block
    * during the operation.
-   * 
-   * If count is zero returns zero and does nothing. A value of @a count 
+   *
+   * If count is zero returns zero and does nothing. A value of @a count
    * larger than MAXSSIZE will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
-   * 
+   *
    * On success, the number of bytes written to the stream is returned.
    * It is not an error if this is not the same as the requested size, as it
    * can happen e.g. on a partial i/o error, or if the there is not enough
    * storage in the stream. All writes either block until at least one byte
    * is written, so zero is never returned (unless @a count  is zero).
-   * 
+   *
    * On error -1 is returned.
    * @param buffer The buffer containing the data to write.
    * @param cancellable Cancellable object.
@@ -67,15 +67,15 @@ public:
 
   /** Tries to write @a count  bytes from @a buffer  into the stream. Will block
    * during the operation.
-   * 
+   *
    * If string that is larger than MAXSSIZE bytes will cause a Gio::Error with INVALID_ARGUMENT to be thrown.
-   * 
+   *
    * On success, the number of bytes written to the stream is returned.
    * It is not an error if this is not the same as the requested size, as it
    * can happen e.g. on a partial i/o error, or if the there is not enough
    * storage in the stream. All writes either block until at least one byte
    * is written, so zero is never returned (unless @a count  is zero).
-   * 
+   *
    * On error -1 is returned.
    * @param buffer The buffer containing the data to write.
    * @return Number of bytes written, or -1 on error.
@@ -89,18 +89,18 @@ public:
 
   /** Tries to write @a count  bytes from @a buffer into the stream. Will block
    * during the operation.
-   * 
+   *
    * This function is similar to write(), except it tries to
    * write as many bytes as requested, only stopping on an error.
-   * 
-   * On a successful write of @a count  bytes, <tt>true</tt> is returned, and @a bytes_written 
+   *
+   * On a successful write of @a count  bytes, <tt>true</tt> is returned, and @a bytes_written
    * is set to @a count .
-   * 
-   * If there is an error during the operation <tt>false</tt> is returned and @a error 
+   *
+   * If there is an error during the operation <tt>false</tt> is returned and @a error
    * is set to indicate the error status, @a bytes_written  is updated to contain
    * the number of bytes written into the stream before the error occured.
    * @param buffer The buffer containing the data to write.
-   * @param bytes_written Location to store the number of bytes that was 
+   * @param bytes_written Location to store the number of bytes that was
    * written to the stream.
    * @param cancellable Cancellable object.
    * @return <tt>true</tt> on success, <tt>false</tt> if there was an error.
@@ -109,18 +109,18 @@ public:
 
   /** Tries to write @a count  bytes from @a buffer into the stream. Will block
    * during the operation.
-   * 
+   *
    * This function is similar to write(), except it tries to
    * write as many bytes as requested, only stopping on an error.
-   * 
-   * On a successful write of @a count  bytes, <tt>true</tt> is returned, and @a bytes_written 
+   *
+   * On a successful write of @a count  bytes, <tt>true</tt> is returned, and @a bytes_written
    * is set to @a count .
-   * 
-   * If there is an error during the operation <tt>false</tt> is returned and @a error 
+   *
+   * If there is an error during the operation <tt>false</tt> is returned and @a error
    * is set to indicate the error status, @a bytes_written  is updated to contain
    * the number of bytes written into the stream before the error occured.
    * @param buffer The buffer containing the data to write.
-   * @param bytes_written Location to store the number of bytes that was 
+   * @param bytes_written Location to store the number of bytes that was
    * written to the stream.
    * @return <tt>true</tt> on success, <tt>false</tt> if there was an error.
    */
@@ -133,12 +133,12 @@ public:
    * then call write_bytes_finish() to get the result of
    * the operation.
    *
-   * During an async request no other sync and async calls are allowed, 
-   * and will result in Gio::Error with PENDING being thrown. 
+   * During an async request no other sync and async calls are allowed,
+   * and will result in Gio::Error with PENDING being thrown.
    *
-   * A Glib:Bytes larger than MAXSSIZE will cause a Gio::Error with  
+   * A Glib:Bytes larger than MAXSSIZE will cause a Gio::Error with
    * INVALID_ARGUMENT to be thrown.
-   * 
+   *
    * On success, the number of bytes written will be passed to the
    * callback @a slot. It is not an error if this is not the same as the
    * requested size, as it can happen e.g. on a partial I/O error,
@@ -148,13 +148,13 @@ public:
    * IO_ERROR_WOULD_BLOCK - if the stream can't accept more data, the
    * method will just wait until this changes.
    *
-   * Any outstanding I/O request with higher priority (lower numerical 
-   * value) will be executed before an outstanding request with lower 
+   * Any outstanding I/O request with higher priority (lower numerical
+   * value) will be executed before an outstanding request with lower
    * priority. Default priority is Glib::PRIORITY_DEFAULT.
-   * 
+   *
    * For the synchronous, blocking version of this function, see write_bytes().
    *
-   * @param bytes The bytes to 
+   * @param bytes The bytes to
    * @param slot Callback slot to call when the request is satisfied.
    * @param cancellable Cancellable object.
    * @param io_priority The io priority of the request.
@@ -168,12 +168,12 @@ public:
    * then call write_bytes_finish() to get the result of
    * the operation.
    *
-   * During an async request no other sync and async calls are allowed, 
-   * and will result in Gio::Error with PENDING being thrown. 
+   * During an async request no other sync and async calls are allowed,
+   * and will result in Gio::Error with PENDING being thrown.
    *
-   * A Glib:Bytes larger than MAXSSIZE will cause a Gio::Error with  
+   * A Glib:Bytes larger than MAXSSIZE will cause a Gio::Error with
    * INVALID_ARGUMENT to be thrown.
-   * 
+   *
    * On success, the number of bytes written will be passed to the
    * callback @a slot. It is not an error if this is not the same as the
    * requested size, as it can happen e.g. on a partial I/O error,
@@ -183,13 +183,13 @@ public:
    * IO_ERROR_WOULD_BLOCK - if the stream can't accept more data, the
    * method will just wait until this changes.
    *
-   * Any outstanding I/O request with higher priority (lower numerical 
-   * value) will be executed before an outstanding request with lower 
+   * Any outstanding I/O request with higher priority (lower numerical
+   * value) will be executed before an outstanding request with lower
    * priority. Default priority is Glib::PRIORITY_DEFAULT.
-   * 
+   *
    * For the synchronous, blocking version of this function, see write_bytes().
    *
-   * @param bytes The bytes to 
+   * @param bytes The bytes to
    * @param slot Callback slot to call when the request is satisfied.
    * @param io_priority The io priority of the request.
    *
@@ -228,34 +228,34 @@ public:
                g_output_stream_close,
                errthrow)
 
-  /** Request an asynchronous write of @a count bytes from @a buffer into 
-   * the stream. When the operation is finished @a slot will be called. 
-   * You can then call write_finish() to get the result of the 
+  /** Request an asynchronous write of @a count bytes from @a buffer into
+   * the stream. When the operation is finished @a slot will be called.
+   * You can then call write_finish() to get the result of the
    * operation.
    *
-   * During an async request no other sync and async calls are allowed, 
-   * and will result in Gio::Error with PENDING being thrown. 
+   * During an async request no other sync and async calls are allowed,
+   * and will result in Gio::Error with PENDING being thrown.
    *
-   * A value of @a count larger than MAXSSIZE will cause a Gio::Error with  
+   * A value of @a count larger than MAXSSIZE will cause a Gio::Error with
    * INVALID_ARGUMENT to be thrown.
    *
    * On success, the number of bytes written will be passed to the
-   * callback @a slot. It is not an error if this is not the same as the 
-   * requested size, as it can happen e.g. on a partial I/O error, 
-   * but generally we try to write as many bytes as requested. 
+   * callback @a slot. It is not an error if this is not the same as the
+   * requested size, as it can happen e.g. on a partial I/O error,
+   * but generally we try to write as many bytes as requested.
    *
-   * Any outstanding I/O request with higher priority (lower numerical 
-   * value) will be executed before an outstanding request with lower 
+   * Any outstanding I/O request with higher priority (lower numerical
+   * value) will be executed before an outstanding request with lower
    * priority. Default priority is Glib::PRIORITY_DEFAULT.
    *
-   * The asyncronous methods have a default fallback that uses threads 
-   * to implement asynchronicity, so they are optional for inheriting 
+   * The asyncronous methods have a default fallback that uses threads
+   * to implement asynchronicity, so they are optional for inheriting
    * classes. However, if you override one you must override all.
    *
-   * For the synchronous, blocking version of this function, see 
+   * For the synchronous, blocking version of this function, see
    * write().
    *
-   * @param buffer The buffer containing the data to write. 
+   * @param buffer The buffer containing the data to write.
    * @param count The number of bytes to write
    * @param slot Callback slot to call when the request is satisfied.
    * @param cancellable Cancellable object.
@@ -263,34 +263,34 @@ public:
    */
   void write_async(const void* buffer, gsize count, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
-  /** Request an asynchronous write of @a count bytes from @a buffer into 
-   * the stream. When the operation is finished @a slot will be called. 
-   * You can then call write_finish() to get the result of the 
+  /** Request an asynchronous write of @a count bytes from @a buffer into
+   * the stream. When the operation is finished @a slot will be called.
+   * You can then call write_finish() to get the result of the
    * operation.
    *
-   * During an async request no other sync and async calls are allowed, 
-   * and will result in Gio::Error with PENDING being thrown. 
+   * During an async request no other sync and async calls are allowed,
+   * and will result in Gio::Error with PENDING being thrown.
    *
-   * A value of @a count larger than MAXSSIZE will cause a Gio::Error with  
+   * A value of @a count larger than MAXSSIZE will cause a Gio::Error with
    * INVALID_ARGUMENT to be thrown.
    *
    * On success, the number of bytes written will be passed to the
-   * callback @a slot. It is not an error if this is not the same as the 
-   * requested size, as it can happen e.g. on a partial I/O error, 
-   * but generally we try to write as many bytes as requested. 
+   * callback @a slot. It is not an error if this is not the same as the
+   * requested size, as it can happen e.g. on a partial I/O error,
+   * but generally we try to write as many bytes as requested.
    *
-   * Any outstanding I/O request with higher priority (lower numerical 
-   * value) will be executed before an outstanding request with lower 
+   * Any outstanding I/O request with higher priority (lower numerical
+   * value) will be executed before an outstanding request with lower
    * priority. Default priority is Glib::PRIORITY_DEFAULT.
    *
-   * The asyncronous methods have a default fallback that uses threads 
-   * to implement asynchronicity, so they are optional for inheriting 
+   * The asyncronous methods have a default fallback that uses threads
+   * to implement asynchronicity, so they are optional for inheriting
    * classes. However, if you override one you must override all.
    *
-   * For the synchronous, blocking version of this function, see 
+   * For the synchronous, blocking version of this function, see
    * write().
    *
-   * @param buffer The buffer containing the data to write. 
+   * @param buffer The buffer containing the data to write.
    * @param count The number of bytes to write
    * @param slot Callback slot to call when the request is satisfied.
    * @param io_priority The io priority of the request.
@@ -303,30 +303,32 @@ public:
                errthrow)
 
   /** Splices a stream asynchronously.
-   *  When the operation is finished @a slot will be called. 
-   * You can then call splice_finish() to get the result of the 
+   *  When the operation is finished @a slot will be called.
+   * You can then call splice_finish() to get the result of the
    * operation.
    *
-   * For the synchronous, blocking version of this function, see 
+   * For the synchronous, blocking version of this function, see
    * splice().
    *
    * @param source An InputStream.
    * @param slot Callback slot to call when the request is satisfied.
    * @param cancellable Cancellable object.
+   * @param flags A set of OutputStreamSpliceFlags.
    * @param io_priority The io priority of the request.
    */
   void splice_async(const Glib::RefPtr<InputStream>& source, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, OutputStreamSpliceFlags flags = OUTPUT_STREAM_SPLICE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
 
   /** Splices a stream asynchronously.
-   *  When the operation is finished @a slot will be called. 
-   * You can then call splice_finish() to get the result of the 
+   *  When the operation is finished @a slot will be called.
+   * You can then call splice_finish() to get the result of the
    * operation.
    *
-   * For the synchronous, blocking version of this function, see 
+   * For the synchronous, blocking version of this function, see
    * splice().
    *
    * @param source An InputStream.
    * @param slot Callback slot to call when the request is satisfied.
+   * @param flags A set of OutputStreamSpliceFlags.
    * @param io_priority The io priority of the request.
    */
   void splice_async(const Glib::RefPtr<InputStream>& source, const SlotAsyncReady& slot, OutputStreamSpliceFlags flags = OUTPUT_STREAM_SPLICE_NONE, int io_priority = Glib::PRIORITY_DEFAULT);
@@ -363,12 +365,12 @@ public:
                g_output_stream_flush_finish,
                errthrow)
 
-  /** Requests an asynchronous close of the stream, releasing resources related to it. 
+  /** Requests an asynchronous close of the stream, releasing resources related to it.
    * When the operation is finished the @a slot will be called, giving the results.
    * You can then call close_finish() to get the result of the operation.
    * For behaviour details see close().
    *
-   * The asyncronous methods have a default fallback that uses threads to implement asynchronicity, 
+   * The asyncronous methods have a default fallback that uses threads to implement asynchronicity,
    * so they are optional for inheriting classes. However, if you override one you must override all.
    *
    * @param slot Callback slot to call when the request is satisfied.
@@ -377,12 +379,12 @@ public:
    */
   void close_async(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, int io_priority = Glib::PRIORITY_DEFAULT);
 
-  /** Requests an asynchronous close of the stream, releasing resources related to it. 
-   * When the operation is finished the @a slot will be called, giving the results. 
+  /** Requests an asynchronous close of the stream, releasing resources related to it.
+   * When the operation is finished the @a slot will be called, giving the results.
    * You can then call close_finish() to get the result of the operation.
    * For behaviour details see close().
    *
-   * The asyncronous methods have a default fallback that uses threads to implement asynchronicity, 
+   * The asyncronous methods have a default fallback that uses threads to implement asynchronicity,
    * so they are optional for inheriting classes. However, if you override one you must override all.
    *
    * @param slot Callback slot to call when the request is satisfied.
index 8f8a7cd..232333e 100644 (file)
@@ -40,7 +40,7 @@ void Proxy::connect_async(const Glib::RefPtr<IOStream>& connection, const Glib::
     &SignalProxy_async_callback,
     slot_copy);
 }
+
 void Proxy::connect_async(const Glib::RefPtr<IOStream>& connection, const Glib::RefPtr<const ProxyAddress>& proxy_address, const SlotAsyncReady& slot)
 {
   // Create a copy of the slot.
index 7b0eb7b..a7d5808 100644 (file)
@@ -55,7 +55,7 @@ public:
   _WRAP_METHOD(static Glib::RefPtr<Proxy> get_default_for_protocol(const Glib::ustring& protocol), g_proxy_get_default_for_protocol)
 
   _WRAP_METHOD(Glib::RefPtr<IOStream> connect(const Glib::RefPtr<IOStream>& connection,
-    const Glib::RefPtr<const ProxyAddress>& proxy_adress, const Glib::RefPtr<Cancellable>& cancellable), g_proxy_connect, errthrow)
+    const Glib::RefPtr<const ProxyAddress>& proxy_address, const Glib::RefPtr<Cancellable>& cancellable), g_proxy_connect, errthrow)
 
   /** An Asynchronous version of connect().
    */
index cec6b7e..3fd2d6a 100644 (file)
@@ -51,7 +51,7 @@ void ProxyResolver::lookup_async(const Glib::ustring& uri, const SlotAsyncReady&
     &SignalProxy_async_callback,
     slot_copy);
 }
-  
+
 void ProxyResolver::lookup_async(const Glib::ustring& uri, const SlotAsyncReady& slot)
 {
   // Create a copy of the slot.
index 61189af..5b6d392 100644 (file)
@@ -58,7 +58,7 @@ public:
                                                 const Glib::RefPtr<Cancellable>& cancellable), g_proxy_resolver_lookup, errthrow)
 
   /** Looks into the system proxy configuration to determine what proxy, if any, to use to connect to uri.
-   * The returned proxy URIs are of the form <protocol>://[user[:password]@]host:port or direct://, where <protocol> could be http, rtsp, socks or other proxying protocol.
+   * The returned proxy URIs are of the form \<protocol\>://[user[:password]\@]host:port or direct://, where \<protocol\> could be http, rtsp, socks or other proxying protocol.
    *
    * If you don't know what network protocol is being used on the socket, you should use none as the URI protocol.
    * In this case, the resolver might still return a generic proxy type (such as SOCKS), but would not return protocol-specific proxy types (such as http).
index f3065d6..2f5f694 100644 (file)
@@ -123,6 +123,37 @@ Resolver::lookup_service_async(const Glib::ustring& service,
                                    slot_copy);
 }
 
+void
+Resolver::lookup_records_async(const Glib::ustring& rrname,
+                               ResolverRecordType record_type,
+                               const SlotAsyncReady& slot,
+                               const Glib::RefPtr<Cancellable>& cancellable)
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_resolver_lookup_records_async(gobj(),
+                                  (rrname.empty() ? 0 : rrname.c_str()),
+                                  static_cast<GResolverRecordType>(record_type),
+                                  Glib::unwrap(cancellable),
+                                  &SignalProxy_async_callback,
+                                  slot_copy);
+}
+
+void
+Resolver::lookup_records_async(const Glib::ustring& rrname,
+                               ResolverRecordType record_type,
+                               const SlotAsyncReady& slot)
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_resolver_lookup_records_async(gobj(),
+                                  (rrname.empty() ? 0 : rrname.c_str()),
+                                  static_cast<GResolverRecordType>(record_type),
+                                  0,
+                                  &SignalProxy_async_callback,
+                                  slot_copy);
+}
+
 std::string
 hostname_to_ascii (const Glib::ustring& hostname)
 {
index 66ff18f..1acff31 100644 (file)
 _DEFS(giomm,gio)
 _PINCLUDE(glibmm/private/object_p.h)
 
+
+// Forward declarations for classes in the Glib namespace.
+namespace Glib
+{
+
+class VariantContainerBase;
+
+}
+
 namespace Gio
 {
 
+_WRAP_ENUM(ResolverRecordType, GResolverRecordType)
+
 /** Asynchronous and cancellable DNS resolver
  *
  * Resolver provides cancellable synchronous and asynchronous DNS resolution,
@@ -60,70 +71,68 @@ public:
 
 #m4 _CONVERSION(`GList*',`Glib::ListHandle< Glib::RefPtr<InetAddress> >',`$2($3, Glib::OWNERSHIP_DEEP)')
   _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<InetAddress> > lookup_by_name(const Glib::ustring& hostname, const Glib::RefPtr<Cancellable>& cancellable{?}), g_resolver_lookup_by_name, errthrow)
-  
-  /** Begins asynchronously resolving hostname to determine its associated IP address(es), and eventually calls @a slot, which must call 
+
+  /** Begins asynchronously resolving hostname to determine its associated IP address(es), and eventually calls @a slot, which must call
    * lookup_by_name_finish() to get the result. See lookup_by_name() for more details.
    *
-   * @param hostname hostname The hostname to look up.
+   * @param hostname The hostname to look up.
    * @param slot A callback slot to call after the resolution completes.
    * @param cancellable A Cancellable object which can be used to cancel the operation.
    */
   void lookup_by_name_async(const Glib::ustring& hostname, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
-  
-  /** Begins asynchronously resolving hostname to determine its associated IP address(es), and eventually calls @a slot, which must call 
+
+  /** Begins asynchronously resolving hostname to determine its associated IP address(es), and eventually calls @a slot, which must call
    * lookup_by_name_finish() to get the result. See lookup_by_name() for more details.
    *
-   * @param hostname hostname The hostname to look up.
+   * @param hostname The hostname to look up.
    * @param slot A callback slot to call after the resolution completes.
    */
   void lookup_by_name_async(const Glib::ustring& hostname, const SlotAsyncReady& slot);
   _IGNORE(g_resolver_lookup_by_name_async)
-  
+
   _WRAP_METHOD(Glib::ListHandle< Glib::RefPtr<InetAddress> > lookup_by_name_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_by_name_finish, errthrow)
 
   _WRAP_METHOD(Glib::ustring lookup_by_address(const Glib::RefPtr<InetAddress>& address, const Glib::RefPtr<Cancellable>& cancellable{?}), g_resolver_lookup_by_address, errthrow)
 
-  /** Begins asynchronously reverse-resolving an address to determine its associated hostname, and eventually calls callback, which must call 
+  /** Begins asynchronously reverse-resolving an address to determine its associated hostname, and eventually calls callback, which must call
    * lookup_by_address_finish() to get the final result.
    *
    * @param address The address to reverse-resolve.
-   * @param hostname hostname The hostname to look up.
    * @param slot A callback slot to call after the resolution completes.
    * @param cancellable A Cancellable object which can be used to cancel the operation.
    */
   void lookup_by_address_async(const Glib::RefPtr<InetAddress>& address, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
-  
-  /** Begins asynchronously reverse-resolving an address to determine its associated hostname, and eventually calls callback, which must call 
+
+  /** Begins asynchronously reverse-resolving an address to determine its associated hostname, and eventually calls callback, which must call
    * lookup_by_address_finish() to get the final result.
    *
    * @param address The address to reverse-resolve.
-   * @param hostname hostname The hostname to look up.
    * @param slot A callback slot to call after the resolution completes.
    */
   void lookup_by_address_async(const Glib::RefPtr<InetAddress>& address, const SlotAsyncReady& slot);
   _IGNORE(g_resolver_lookup_by_address_async)
-  
+
   _WRAP_METHOD(Glib::ustring lookup_by_address_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_by_address_finish, errthrow)
 
 #m4 _CONVERSION(`GList*',`ListHandle_SrvTarget',`$2($3, Glib::OWNERSHIP_DEEP)')
   _WRAP_METHOD(ListHandle_SrvTarget lookup_service(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain, const Glib::RefPtr<Cancellable>& cancellable{?}), g_resolver_lookup_service, errthrow)
 
-  /** Begins asynchronously performing a DNS SRV lookup for the given service and protocol in the given domain, and eventually calls callback, 
+  /** Begins asynchronously performing a DNS SRV lookup for the given service and protocol in the given domain, and eventually calls callback,
    * which must call lookup_service_finish() to get the final result. See glookup_service() for more details.
    *
    * @param service The service type to look up (eg, "ldap").
-   * @param protocol The networking protocol to use for service (eg, "tcp") 
+   * @param protocol The networking protocol to use for service (eg, "tcp")
    * @param domain The DNS domain to look up the service in.
    * @param slot A callback slot to call after the resolution completes.
    * @param cancellable A Cancellable object which can be used to cancel the operation.
    */
   void lookup_service_async(const Glib::ustring& service, const Glib::ustring& protocol, const Glib::ustring& domain, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
-  
-  /** Begins asynchronously performing a DNS SRV lookup for the given service and protocol in the given domain, and eventually calls callback, 
+
+  /** Begins asynchronously performing a DNS SRV lookup for the given service and protocol in the given domain, and eventually calls callback,
    * which must call lookup_service_finish() to get the final result. See glookup_service() for more details.
    *
    * @param service The service type to look up (eg, "ldap").
-   * @param protocol The networking protocol to use for service (eg, "tcp") 
+   * @param protocol The networking protocol to use for service (eg, "tcp")
    * @param domain The DNS domain to look up the service in.
    * @param slot A callback slot to call after the resolution completes.
    */
@@ -132,6 +141,30 @@ public:
 
   _WRAP_METHOD(ListHandle_SrvTarget lookup_service_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_service_finish, errthrow)
 
+#m4 _CONVERSION(`GList*',`std::vector<Glib::VariantContainerBase>',`Glib::ListHandler<Glib::VariantContainerBase>::list_to_vector($3, Glib::OWNERSHIP_DEEP)')
+
+  _WRAP_METHOD(std::vector<Glib::VariantContainerBase> lookup_records(const Glib::ustring& rrname, ResolverRecordType record_type, const Glib::RefPtr<Cancellable>& cancellable{?}), g_resolver_lookup_records, errthrow)
+
+  /** Begins asynchronously performing a DNS lookup for the given @a rrname,
+   * and eventually calls @a slot, which must call lookup_records_finish() to
+   * get the final result. See lookup_records() for more details.
+   *
+   * @param rrname The DNS name to lookup the record for.
+   * @param record_type The type of DNS record to lookup.
+   * @param cancellable A Cancellable.
+   * @param slot The slot to call after the resolution completes.
+   * @newin{2,36}
+   */
+  void lookup_records_async(const Glib::ustring& rrname,
+    ResolverRecordType record_type, const SlotAsyncReady& slot,
+    const Glib::RefPtr<Cancellable>& cancellable);
+  _IGNORE(g_resolver_lookup_records_async)
+
+  /// A non-cancellable version of lookup_records_async().
+  void lookup_records_async(const Glib::ustring& rrname,
+    ResolverRecordType record_type, const SlotAsyncReady& slot);
+
+  _WRAP_METHOD(std::vector<Glib::VariantContainerBase> lookup_records_finish(const Glib::RefPtr<AsyncResult>& result), g_resolver_lookup_records_finish, errthrow)
 
   //TODO: Remove no_default_handler when we can break ABI:
   _WRAP_SIGNAL(void reload(), reload, no_default_handler)
index 941fd92..79c0d07 100644 (file)
@@ -34,10 +34,10 @@ namespace Gio
 
 /** Stream seeking interface.
  * Seekable is implemented by streams (implementations of InputStream or OutputStream) that support seeking.
- * To find the position of a stream, use tell(). To find 
- * out if a stream supports seeking, use can_seek(). To position a 
- * stream, use seek(). To find out if a stream supports 
- * truncating, use can_truncate(). To truncate a stream, use 
+ * To find the position of a stream, use tell(). To find
+ * out if a stream supports seeking, use can_seek(). To position a
+ * stream, use seek(). To find out if a stream supports
+ * truncating, use can_truncate(). To truncate a stream, use
  * truncate().
  *
  * @ingroup Streams
index daf6af7..37e3ea2 100644 (file)
@@ -52,13 +52,13 @@ public:
 
   _WRAP_METHOD(bool set_value(const Glib::ustring& key, const Glib::VariantBase& value),  g_settings_set_value)
 
-  /** Gets the value that is stored in the settings for a @key.
+  /** Gets the value that is stored in the settings for a @key.
    *
    * It is a programmer error to give a @a key that isn't contained in the
    * schema for the settings.
    *
-   * @param  key The key to get the value for.
-   * @param A Variant of the expected type.
+   * @param key The key to get the value for.
+   * @param value A Variant of the expected type.
    *
    * @newin{2,28}
    */
index 6432b39..3fbbdf1 100644 (file)
@@ -50,7 +50,7 @@ protected:
 #m4 _CONVERSION(`const Glib::VariantType&',`const GVariantType*',`$3.gobj()')
   _WRAP_CTOR(SimpleAction(const Glib::ustring& name, const Glib::VariantType& parameter_type), g_simple_action_new)
 
-  _WRAP_CTOR(SimpleAction(const Glib::ustring& name, const Glib::VariantType& parameter_type, const Glib::VariantBase& sate), g_simple_action_new_stateful)
+  _WRAP_CTOR(SimpleAction(const Glib::ustring& name, const Glib::VariantType& parameter_type, const Glib::VariantBase& state), g_simple_action_new_stateful)
 
 public:
 
@@ -60,7 +60,7 @@ public:
   _WRAP_CREATE(const Glib::ustring& name, const Glib::VariantType& parameter_type)
 
   _WRAP_METHOD_DOCS_ONLY(g_simple_action_new_stateful)
-  _WRAP_CREATE(const Glib::ustring& name, const Glib::VariantType& parameter_type, const Glib::VariantBase& sate)
+  _WRAP_CREATE(const Glib::ustring& name, const Glib::VariantType& parameter_type, const Glib::VariantBase& state)
 
   _WRAP_METHOD(void set_enabled(bool enabled), g_simple_action_set_enabled)
   _WRAP_METHOD(void set_state(const Glib::VariantBase& value), g_simple_action_set_state)
index 17eb6f9..7b5188d 100644 (file)
@@ -100,7 +100,8 @@ protected:
 
 public:
   _WRAP_METHOD_DOCS_ONLY(g_socket_new)
-  /** @throw Glib::Error
+  /** @param cancellable A Cancellable, or <tt>0</tt>.
+   * @throw Glib::Error
    */
   static Glib::RefPtr<Socket>
   create(SocketFamily family, SocketType type, SocketProtocol protocol,
@@ -112,7 +113,8 @@ public:
   _IGNORE(g_socket_connection_factory_create_connection)
 
   _WRAP_METHOD_DOCS_ONLY(g_socket_new_from_fd)
-  /** @throw Glib::Error
+  /** @param cancellable A Cancellable, or <tt>0</tt>.
+   * @throw Glib::Error
    */
   static Glib::RefPtr<Socket> create_from_fd(int fd, const Glib::RefPtr<Cancellable>&
                                              cancellable = Glib::RefPtr<Cancellable>());
@@ -178,7 +180,7 @@ public:
   _WRAP_METHOD(SocketProtocol get_protocol() const, g_socket_get_protocol)
   _WRAP_METHOD(SocketType get_socket_type() const, g_socket_get_socket_type)
   _WRAP_METHOD(bool speaks_ipv4() const, g_socket_speaks_ipv4)
-  
+
   _WRAP_METHOD(Glib::RefPtr<Credentials> get_credentials(), g_socket_get_credentials, errthrow)
   _WRAP_METHOD(Glib::RefPtr<const Credentials> get_credentials() const, g_socket_get_credentials, errthrow)
 
@@ -203,9 +205,9 @@ public:
   _WRAP_METHOD(void set_multicast_ttl(guint ttl), g_socket_set_multicast_ttl)
 
   _WRAP_METHOD(bool join_multicast_group(const Glib::RefPtr<InetAddress>& group, bool source_specific, const std::string& iface{?}), g_socket_join_multicast_group, errthrow)
-  _WRAP_METHOD(bool leave_multicast_group(const Glib::RefPtr<InetAddress>& ggroup, bool source_specific, const std::string& iface{?}), g_socket_leave_multicast_group, errthrow)
+  _WRAP_METHOD(bool leave_multicast_group(const Glib::RefPtr<InetAddress>& group, bool source_specific, const std::string& iface{?}), g_socket_leave_multicast_group, errthrow)
+
 
   _WRAP_PROPERTY("blocking", bool)
   _WRAP_PROPERTY("family", SocketFamily)
   _WRAP_PROPERTY("fd", int)
index cf483d9..01a137a 100644 (file)
@@ -41,7 +41,7 @@ class SocketAddressEnumerator : public Glib::Object
 public:
   _WRAP_METHOD(Glib::RefPtr<SocketAddress> next(const Glib::RefPtr<Cancellable>& cancellable{?}), g_socket_address_enumerator_next, errthrow)
 
-  /** Asynchronously retrieves the next SocketAddress from the enumerator and then calls @a slot, 
+  /** Asynchronously retrieves the next SocketAddress from the enumerator and then calls @a slot,
    * which must call next_finish() to get the result.
    *
    * @param cancellable A Cancellable object which can be used to cancel the operation.
@@ -49,7 +49,7 @@ public:
    */
   void next_async(const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot);
 
-  /** Asynchronously retrieves the next SocketAddress from the enumerator and then calls @a slot, 
+  /** Asynchronously retrieves the next SocketAddress from the enumerator and then calls @a slot,
    * which must call next_finish() to get the result.
    *
    * @param slot A callback slot to call after the resolution completes.
index b46121f..5331a1e 100644 (file)
@@ -141,7 +141,7 @@ public:
   _WRAP_METHOD(void set_enable_proxy(bool enable), g_socket_client_set_enable_proxy)
 
   _WRAP_METHOD(guint get_timeout() const, g_socket_client_get_timeout)
-  _WRAP_METHOD(void set_timeout(guint enable), g_socket_client_set_timeout)
+  _WRAP_METHOD(void set_timeout(guint timeout), g_socket_client_set_timeout)
 
   _WRAP_METHOD(void add_application_proxy(const Glib::ustring& protocol), g_socket_client_add_application_proxy)
 
index 6e07769..8bd8578 100644 (file)
  */
 
 #include <gio/gio.h>
+#include "slot_async.h"
 
 namespace Gio
 {
+
+void
+SocketConnection::connect_async(const Glib::RefPtr<SocketAddress>& address,
+                                const SlotAsyncReady& slot,
+                                const Glib::RefPtr<Cancellable>& cancellable)
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_socket_connection_connect_async(gobj(),
+                                    Glib::unwrap(address),
+                                    Glib::unwrap(cancellable),
+                                    &SignalProxy_async_callback,
+                                    slot_copy);
+}
+
+void
+SocketConnection::connect_async(const Glib::RefPtr<SocketAddress>& address,
+                                const SlotAsyncReady& slot)
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_socket_connection_connect_async(gobj(),
+                                    Glib::unwrap(address),
+                                    0,
+                                    &SignalProxy_async_callback,
+                                    slot_copy);
+}
+
 } // namespace Gio
index e5c87d5..2e8b859 100644 (file)
@@ -54,20 +54,45 @@ class SocketConnection : public Gio::IOStream
     _CLASS_GOBJECT(SocketConnection, GSocketConnection, G_SOCKET_CONNECTION, Gio::IOStream, GIOStream)
 
 public:
-_WRAP_METHOD(Glib::RefPtr<Socket> get_socket(), g_socket_connection_get_socket, refreturn)
-_WRAP_METHOD(Glib::RefPtr<const Socket> get_socket() const, g_socket_connection_get_socket, constversion, refreturn)
-_WRAP_METHOD(Glib::RefPtr<SocketAddress> get_local_address(), g_socket_connection_get_local_address, errthrow)
-_WRAP_METHOD(Glib::RefPtr<const SocketAddress> get_local_address() const, g_socket_connection_get_local_address, constversion, errthrow)
-_WRAP_METHOD(Glib::RefPtr<SocketAddress> get_remote_address(), g_socket_connection_get_remote_address, errthrow)
-_WRAP_METHOD(Glib::RefPtr<const SocketAddress> get_remote_address() const, g_socket_connection_get_remote_address, constversion, errthrow)
+  _WRAP_METHOD(bool connect(const Glib::RefPtr<SocketAddress>& address, const Glib::RefPtr<Cancellable>& cancellable{?}), g_socket_connection_connect, errthrow)
 
-// Not sure that registering new GTypes with the factory is useful for the C++ binding
-//_WRAP_METHOD(void factory_register_type(GType g_type, GSocketFamily family, GSocketType type, gint protocol);
-//_WRAP_METHOD(GType factory_lookup_type(GSocketFamily family, GSocketType type, gint protocol_id);
+  /**  Asynchronously connect this connection to the specified remote address.
+   * This clears the "blocking" flag on this connection's underlying socket if
+   * it is currently set.
+   *
+   * Use connect_finish() to retrieve the result.
+   *
+   * @param address A SocketAddress specifying the remote address.
+   * @param slot A SlotAsyncReady slot.
+   * @param cancellable A Cancellable.
+   * @newin{2,36}
+   */
+  void connect_async(const Glib::RefPtr<SocketAddress>& address,
+    const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable);
+  _IGNORE(g_socket_connection_connect_async)
 
-_WRAP_METHOD(static Glib::RefPtr<SocketConnection> create(const Glib::RefPtr<Socket>& socket), g_socket_connection_factory_create_connection)
+  /// A non-cancellable version of connect_async().
+  void connect_async(const Glib::RefPtr<SocketAddress>& address,
+    const SlotAsyncReady& slot);
 
-_WRAP_PROPERTY("socket", Glib::RefPtr<Socket>)
+  _WRAP_METHOD(bool connect_finish(const Glib::RefPtr<AsyncResult>& result), g_socket_connection_connect_finish, errthrow)
+
+  _WRAP_METHOD(bool is_connected() const, g_socket_connection_is_connected)
+
+  _WRAP_METHOD(Glib::RefPtr<Socket> get_socket(), g_socket_connection_get_socket, refreturn)
+  _WRAP_METHOD(Glib::RefPtr<const Socket> get_socket() const, g_socket_connection_get_socket, constversion, refreturn)
+  _WRAP_METHOD(Glib::RefPtr<SocketAddress> get_local_address(), g_socket_connection_get_local_address, errthrow)
+  _WRAP_METHOD(Glib::RefPtr<const SocketAddress> get_local_address() const, g_socket_connection_get_local_address, constversion, errthrow)
+  _WRAP_METHOD(Glib::RefPtr<SocketAddress> get_remote_address(), g_socket_connection_get_remote_address, errthrow)
+  _WRAP_METHOD(Glib::RefPtr<const SocketAddress> get_remote_address() const, g_socket_connection_get_remote_address, constversion, errthrow)
+
+  // Not sure that registering new GTypes with the factory is useful for the C++ binding
+  //_WRAP_METHOD(void factory_register_type(GType g_type, GSocketFamily family, GSocketType type, gint protocol);
+  //_WRAP_METHOD(GType factory_lookup_type(GSocketFamily family, GSocketType type, gint protocol_id);
+
+  _WRAP_METHOD(static Glib::RefPtr<SocketConnection> create(const Glib::RefPtr<Socket>& socket), g_socket_connection_factory_create_connection)
+
+  _WRAP_PROPERTY("socket", Glib::RefPtr<Socket>)
 };
 
 } // namespace Gio
index dd27559..b55c605 100644 (file)
@@ -30,10 +30,10 @@ bool SocketListener::add_socket(const Glib::RefPtr<Socket>& socket)
     Glib::unwrap(socket),
     0,
   &gerror);
-  
+
   if(gerror)
     ::Glib::Error::throw_exception(gerror);
-    
+
   return retval;
 }
 
@@ -128,7 +128,7 @@ Glib::RefPtr<Socket> SocketListener::accept_socket(Glib::RefPtr<Glib::Object>& s
                                                       &gerror);
   if(gerror)
     ::Glib::Error::throw_exception(gerror);
-    
+
   if(retobj)
     source_object = Glib::wrap(retobj);
 
index 883f10d..9472e6a 100644 (file)
@@ -59,7 +59,7 @@ public:
 
   _WRAP_METHOD(bool add_socket(const Glib::RefPtr<Socket>& socket, const Glib::RefPtr<Glib::Object>& source_object), g_socket_listener_add_socket, errthrow)
 
- //TODO: The use of WRAP_METHOD_DOCS_ONLY here is almost certainly not good enough. 
+ //TODO: The use of WRAP_METHOD_DOCS_ONLY here is almost certainly not good enough.
  //Check the HTML actually outputed and probably hand-code them as for Gio::File.
 
   _WRAP_METHOD_DOCS_ONLY(g_socket_listener_add_socket)
@@ -106,7 +106,7 @@ Glib::RefPtr<Socket> accept_socket(Glib::RefPtr<Glib::Object>& source_object, co
   _WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket_finish)
   Glib::RefPtr<Socket> accept_socket_finish(const Glib::RefPtr<AsyncResult>& result, Glib::RefPtr<Glib::Object>& source_object);
   _IGNORE(g_socket_listener_accept_socket_finish)
-  
+
   _WRAP_METHOD_DOCS_ONLY(g_socket_listener_accept_socket_finish)
   Glib::RefPtr<Socket> accept_socket_finish(const Glib::RefPtr<AsyncResult>& result);
 
index 4f54259..44aa2cf 100644 (file)
@@ -50,7 +50,7 @@ protected:
   /** Creates a new themed icon for @ iconname, and optionally all the names that can be created by shortening @a iconname at '-' characters.
    *
    * @param iconname A string containing an icon name.
-   * use_default_callbacks Whether to use all the names that can be created by shortening @a iconname at '-' characters.
+   * @param use_default_callbacks Whether to use all the names that can be created by shortening @a iconname at '-' characters.
    */
   explicit ThemedIcon(const std::string& iconname, bool use_default_callbacks = false);
   _IGNORE(g_themed_icon_new, g_themed_icon_new_with_default_fallbacks)
@@ -59,7 +59,7 @@ public:
   /** Creates a new themed icon for @ iconname, and optionally all the names that can be created by shortening @a iconname at '-' characters.
    *
    * @param iconname A string containing an icon name.
-   * use_default_callbacks Whether to use all the names that can be created by shortening @a iconname at '-' characters.
+   * @param use_default_callbacks Whether to use all the names that can be created by shortening @a iconname at '-' characters.
    */
   _WRAP_CREATE(const std::string& iconname, bool use_default_callbacks = false)
 
@@ -79,7 +79,7 @@ public:
   //There are no signals.
 
   //The "name" property is write-only and construct-only so it should not be wrapped.
-  //An array: This is awkward to wrap_WRAP_PROPERTY("names", )
+  _WRAP_PROPERTY("names", std::vector<Glib::ustring>)
   _WRAP_PROPERTY("use-default-fallbacks", bool)
 };
 
diff --git a/gio/src/tlscertificate.ccg b/gio/src/tlscertificate.ccg
new file mode 100644 (file)
index 0000000..7225d99
--- /dev/null
@@ -0,0 +1,19 @@
+/* Copyright (C) 2012 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
+#include <giomm/socketconnectable.h>
diff --git a/gio/src/tlscertificate.hg b/gio/src/tlscertificate.hg
new file mode 100644 (file)
index 0000000..98e581f
--- /dev/null
@@ -0,0 +1,75 @@
+/* Copyright (C) 2012 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+#include <giomm/enums.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gio
+{
+
+class SocketConnectable;
+
+/** TlsCertificate - TLS certificate.
+ * A certificate used for TLS authentication and encryption. This can represent
+ * either a certificate only (eg, the certificate received by a client from a
+ * server), or the combination of a certificate and a private key (which is
+ * needed when acting as a TlsServerConnection).
+ * @newin{2,36}
+ */
+class TlsCertificate : public Glib::Object
+{
+  _CLASS_GOBJECT(TlsCertificate, GTlsCertificate, G_TLS_CERTIFICATE, Glib::Object, GObject)
+
+protected:
+  _WRAP_CTOR(TlsCertificate(const char* data, gssize length), g_tls_certificate_new_from_pem, errthrow)
+  _WRAP_CTOR(TlsCertificate(const std::string& file), g_tls_certificate_new_from_file, errthrow)
+  _WRAP_CTOR(TlsCertificate(const std::string& cert_file, const std::string& key_file), g_tls_certificate_new_from_files, errthrow)
+
+public:
+  _WRAP_METHOD_DOCS_ONLY(g_tls_certificate_new_from_pem)
+  _WRAP_CREATE(const char* data, gssize length = -1)
+
+  _WRAP_METHOD_DOCS_ONLY(g_tls_certificate_new_from_file)
+  _WRAP_CREATE(const std::string& file)
+
+  _WRAP_METHOD_DOCS_ONLY(g_tls_certificate_new_from_files)
+  _WRAP_CREATE(const std::string& cert_file, const std::string& key_file)
+
+#m4 _CONVERSION(`GList*', `std::vector< Glib::RefPtr<TlsCertificate> >', `Glib::ListHandler< Glib::RefPtr<TlsCertificate> >::list_to_vector($3, Glib::OWNERSHIP_DEEP)')
+  _WRAP_METHOD(static std::vector< Glib::RefPtr<TlsCertificate> > create_list_from_file(const std::string& file), g_tls_certificate_list_new_from_file, errthrow)
+
+  _WRAP_METHOD(Glib::RefPtr<TlsCertificate> get_issuer(), g_tls_certificate_get_issuer)
+  _WRAP_METHOD(Glib::RefPtr<const TlsCertificate> get_issuer() const, g_tls_certificate_get_issuer, constversion)
+
+  _WRAP_METHOD(TlsCertificateFlags verify(const Glib::RefPtr<const SocketConnectable>& identity{?}, const Glib::RefPtr<const TlsCertificate>& trusted_ca{?}) const, g_tls_certificate_verify)
+  _WRAP_METHOD(bool is_same(const Glib::RefPtr<const TlsCertificate>& cert_two) const, g_tls_certificate_is_same)
+
+  //TODO: _WRAP_PROPERTY("certificate", GByteArray*)
+
+  _WRAP_PROPERTY("certificate-pem", char*)
+  _WRAP_PROPERTY("issuer", Glib::RefPtr<TlsCertificate>)
+
+  //TODO: _WRAP_PROPERTY("private-key", GByteArray*)
+
+  // Write-only and construct-only
+  //_WRAP_PROPERTY("private-key-pem", char*)
+};
+
+} // namespace Gio
diff --git a/gio/src/tlsclientconnection.ccg b/gio/src/tlsclientconnection.ccg
new file mode 100644 (file)
index 0000000..0ea183e
--- /dev/null
@@ -0,0 +1,19 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
+#include <giomm/socketconnectable.h>
diff --git a/gio/src/tlsclientconnection.hg b/gio/src/tlsclientconnection.hg
new file mode 100644 (file)
index 0000000..57da809
--- /dev/null
@@ -0,0 +1,67 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/interface.h>
+#include <giomm/enums.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/interface_p.h)
+_PINCLUDE(gio/gio.h)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+typedef struct _GTlsClientConnectionInterface GTlsClientConnectionInterface;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+namespace Gio
+{
+
+class SocketConnectable;
+
+/** TlsClientConnection - TLS client-side connection.
+ * TlsClientConnection is the client-side subclass of TlsConnection,
+ * representing a client-side TLS connection.
+ * @newin{2,36}
+ */
+class TlsClientConnection : public Glib::Interface
+{
+  _CLASS_INTERFACE(TlsClientConnection, GTlsClientConnection, G_TLS_CLIENT_CONNECTION, GTlsClientConnectionInterface)
+
+public:
+  //TODO: This new function creates an IOStream, not a TlsClientConnection:
+  // GIOStream* g_tls_client_connection_new(GIOStream *base_io_stream, GSocketConnectable *server_identity, GError **error);
+
+  _WRAP_METHOD(void set_server_identity(const Glib::RefPtr<SocketConnectable>& identity), g_tls_client_connection_set_server_identity)
+
+  _WRAP_METHOD(Glib::RefPtr<SocketConnectable> get_server_identity(), g_tls_client_connection_get_server_identity)
+  _WRAP_METHOD(Glib::RefPtr<const SocketConnectable> get_server_identity() const, g_tls_client_connection_get_server_identity, constversion)
+
+  _WRAP_METHOD(void set_validation_flags(TlsCertificateFlags flags), g_tls_client_connection_set_validation_flags)
+  _WRAP_METHOD(TlsCertificateFlags get_validation_flags() const, g_tls_client_connection_get_validation_flags)
+
+  _WRAP_METHOD(void set_use_ssl3(bool use_ssl3), g_tls_client_connection_set_use_ssl3)
+  _WRAP_METHOD(bool get_use_ssl3() const, g_tls_client_connection_get_use_ssl3)
+
+  //TODO: _WRAP_METHOD(GList* get_accepted_cas(), g_tls_client_connection_get_accepted_cas)
+
+  //TODO: _WRAP_PROPERTY("accepted-cas", gpointer)
+
+  _WRAP_PROPERTY("server-identity", Glib::RefPtr<SocketConnectable>)
+  _WRAP_PROPERTY("use-ssl3", bool)
+  _WRAP_PROPERTY("validation-flags", TlsCertificateFlags)
+};
+
+} // namespace Gio
diff --git a/gio/src/tlsconnection.ccg b/gio/src/tlsconnection.ccg
new file mode 100644 (file)
index 0000000..8d8ccce
--- /dev/null
@@ -0,0 +1,28 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
+#include <giomm/cancellable.h>
+#include <giomm/iostream.h>
+#include <giomm/tlsdatabase.h>
+#include <giomm/tlsinteraction.h>
+#include "slot_async.h"
+
+namespace Gio
+{
+
+} // namespace Gio
diff --git a/gio/src/tlsconnection.hg b/gio/src/tlsconnection.hg
new file mode 100644 (file)
index 0000000..0c5e670
--- /dev/null
@@ -0,0 +1,103 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+#include <giomm/tlscertificate.h>
+#include <giomm/asyncresult.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gio
+{
+
+_WRAP_ENUM(TlsRehandshakeMode,GTlsRehandshakeMode)
+
+class Cancellable;
+class IOStream;
+class TlsDatabase;
+class TlsInteraction;
+
+/** TlsConnection - TLS connection type.
+ * TlsConnection is the base TLS connection class type, which wraps an IOStream
+ * and provides TLS encryption on top of it. Its subclasses,
+ * TlsClientConnection and TlsServerConnection, implement client-side and
+ * server-side TLS, respectively. 
+ * @newin{2,36}
+ */
+class TlsConnection : public Glib::Object
+{
+  _CLASS_GOBJECT(TlsConnection, GTlsConnection, G_TLS_CONNECTION, Glib::Object, GObject)
+
+protected:
+  _CTOR_DEFAULT
+
+public:
+  _WRAP_METHOD(void set_certificate(const Glib::RefPtr<TlsCertificate>& certificate), g_tls_connection_set_certificate)
+
+  _WRAP_METHOD(Glib::RefPtr<TlsCertificate> get_certificate(), g_tls_connection_get_certificate)
+  _WRAP_METHOD(Glib::RefPtr<const TlsCertificate> get_certificate() const, g_tls_connection_get_certificate, constversion)
+
+  _WRAP_METHOD(TlsCertificateFlags get_peer_certificate_errors() const, g_tls_connection_get_peer_certificate_errors)
+
+  _WRAP_METHOD(void set_require_close_notify(bool require_close_notify), g_tls_connection_set_require_close_notify)
+  _WRAP_METHOD(bool get_require_close_notify() const, g_tls_connection_get_require_close_notify)
+
+  _WRAP_METHOD(void set_rehandshake_mode(TlsRehandshakeMode mode), g_tls_connection_set_rehandshake_mode)
+  _WRAP_METHOD(TlsRehandshakeMode get_rehandshake_mode() const, g_tls_connection_get_rehandshake_mode)
+
+  _WRAP_METHOD(void set_use_system_certdb(bool use_system_certdb), g_tls_connection_set_use_system_certdb)
+  _WRAP_METHOD(bool get_use_system_certdb() const, g_tls_connection_get_use_system_certdb)
+
+  _WRAP_METHOD(Glib::RefPtr<TlsDatabase> get_database(), g_tls_connection_get_database)
+  _WRAP_METHOD(Glib::RefPtr<const TlsDatabase> get_database() const, g_tls_connection_get_database, constversion)
+
+  _WRAP_METHOD(void set_database(const Glib::RefPtr<TlsDatabase>& database), g_tls_connection_set_database)
+
+  _WRAP_METHOD(Glib::RefPtr<TlsInteraction> get_interaction(), g_tls_connection_get_interaction)
+  _WRAP_METHOD(Glib::RefPtr<const TlsInteraction> get_interaction() const, g_tls_connection_get_interaction, constversion)
+
+  _WRAP_METHOD(void set_interaction(const Glib::RefPtr<TlsInteraction>& interaction), g_tls_connection_set_interaction)
+
+  _WRAP_METHOD(bool handshake(const Glib::RefPtr<Cancellable>& cancellable{?}), g_tls_connection_handshake, errthrow)
+
+  _WRAP_METHOD(void handshake_async(const SlotAsyncReady& slot{callback}, const Glib::RefPtr<Cancellable>& cancellable{.?}, int io_priority{.} = Glib::PRIORITY_DEFAULT), g_tls_connection_handshake_async, slot_name slot, slot_callback SignalProxy_async_callback)
+  _WRAP_METHOD(bool handshake_finish(const Glib::RefPtr<AsyncResult>& result), g_tls_connection_handshake_finish, errthrow)
+
+  _WRAP_METHOD(bool emit_accept_certificate(const Glib::RefPtr<const TlsCertificate>& peer_cert, TlsCertificateFlags errors), g_tls_connection_emit_accept_certificate)
+
+  _WRAP_PROPERTY("base-io-stream", Glib::RefPtr<IOStream>)
+  _WRAP_PROPERTY("certificate", Glib::RefPtr<TlsCertificate>)
+  _WRAP_PROPERTY("database", Glib::RefPtr<TlsDatabase>)
+  _WRAP_PROPERTY("interaction", Glib::RefPtr<TlsInteraction>)
+  _WRAP_PROPERTY("peer-certificate", Glib::RefPtr<TlsCertificate>)
+  _WRAP_PROPERTY("peer-certificate-errors", TlsCertificateFlags)
+  _WRAP_PROPERTY("rehandshake-mode", TlsRehandshakeMode)
+  _WRAP_PROPERTY("require-close-notify", bool)
+  _WRAP_PROPERTY("use-system-certdb", bool)
+
+#m4 _CONVERSION(`GTlsCertificate*',`const Glib::RefPtr<const TlsCertificate>&',`Glib::wrap($3, true)')
+  _WRAP_SIGNAL(bool accept_certificate(const Glib::RefPtr<const TlsCertificate>& peer_cert, TlsCertificateFlags errors), "accept_certificate")
+
+  _WRAP_VFUNC(bool handshake(const Glib::RefPtr<Cancellable>& cancellable), "handshake", errthrow)
+  _WRAP_VFUNC(void handshake_async(const SlotAsyncReady& slot{callback}, const Glib::RefPtr<Cancellable>& cancellable{.}, int io_priority{.} = Glib::PRIORITY_DEFAULT), "handshake_async", slot_name slot, slot_callback SignalProxy_async_callback)
+
+#m4 _CONVERSION(`GAsyncResult*',`const Glib::RefPtr<AsyncResult>&',`Glib::wrap($3, true)')
+  _WRAP_VFUNC(bool handshake_finish(const Glib::RefPtr<AsyncResult>& result), "handshake_finish", errthrow)
+};
+
+} // namespace Gio
diff --git a/gio/src/tlsdatabase.ccg b/gio/src/tlsdatabase.ccg
new file mode 100644 (file)
index 0000000..a5bd098
--- /dev/null
@@ -0,0 +1,28 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
+#include <giomm/cancellable.h>
+#include <giomm/socketconnectable.h>
+#include <giomm/tlscertificate.h>
+#include <giomm/tlsinteraction.h>
+#include "slot_async.h"
+
+namespace Gio
+{
+
+} // namespace Gio
diff --git a/gio/src/tlsdatabase.hg b/gio/src/tlsdatabase.hg
new file mode 100644 (file)
index 0000000..6f3c01f
--- /dev/null
@@ -0,0 +1,97 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+#include <giomm/asyncresult.h>
+#include <giomm/enums.h>
+#include <giomm/tlsfiledatabase.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gio
+{
+
+_WRAP_ENUM(TlsDatabaseVerifyFlags, GTlsDatabaseVerifyFlags)
+_WRAP_ENUM(TlsDatabaseLookupFlags, GTlsDatabaseLookupFlags)
+
+class Cancellable;
+class SocketConnectable;
+class TlsCertificate;
+class TlsInteraction;
+
+/** TlsDatabase - TLS database type.
+ * TlsDatabase is used to lookup certificates and other information from a
+ * certificate or key store. It is an abstract base class which TLS library
+ * specific subtypes override.
+ *
+ * Most common client applications will not directly interact with TlsDatabase.
+ * It is used internally by TlsConnection.
+ * @newin{2,36}
+ */
+class TlsDatabase : public Glib::Object, public TlsFileDatabase
+{
+  _CLASS_GOBJECT(TlsDatabase, GTlsDatabase, G_TLS_DATABASE, Glib::Object, GObject)
+  _IMPLEMENTS_INTERFACE(TlsFileDatabase)
+
+protected:
+  _CTOR_DEFAULT
+
+public:
+  //TODO?: Have a constant for the C macro G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER (which is a string)?
+  //TODO?: Have a constant for the C macro G_TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT (which is a string)?
+
+  _WRAP_METHOD(TlsCertificateFlags verify_chain(const Glib::RefPtr<TlsCertificate>& chain, const Glib::ustring& purpose, const Glib::RefPtr<const SocketConnectable>& identity{?}, const Glib::RefPtr<TlsInteraction>& interaction{?}, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseVerifyFlags flags{.} = TLS_DATABASE_VERIFY_NONE), g_tls_database_verify_chain, errthrow)
+  _WRAP_METHOD(void verify_chain_async(const Glib::RefPtr<TlsCertificate>& chain, const Glib::ustring& purpose, const Glib::RefPtr<const SocketConnectable>& identity{?}, const Glib::RefPtr<TlsInteraction>& interaction{?}, const SlotAsyncReady& slot{callback}, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseVerifyFlags flags{.} = TLS_DATABASE_VERIFY_NONE), g_tls_database_verify_chain_async, slot_name slot, slot_callback SignalProxy_async_callback)
+  _WRAP_METHOD(TlsCertificateFlags verify_chain_finish(const Glib::RefPtr<AsyncResult>& result), g_tls_database_verify_chain_finish, errthrow)
+
+  _WRAP_METHOD(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer(const Glib::RefPtr<const TlsCertificate>& certificate, const Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.} = TLS_DATABASE_LOOKUP_NONE), g_tls_database_lookup_certificate_issuer, errthrow)
+  _WRAP_METHOD(Glib::RefPtr<const TlsCertificate> lookup_certificate_issuer(const Glib::RefPtr<const TlsCertificate>& certificate, const Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.} = TLS_DATABASE_LOOKUP_NONE) const, g_tls_database_lookup_certificate_issuer, errthrow, constversion)
+
+  _WRAP_METHOD(void lookup_certificate_issuer_async(const Glib::RefPtr<const TlsCertificate>& certificate, const Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.} = TLS_DATABASE_LOOKUP_NONE), g_tls_database_lookup_certificate_issuer_async, slot_name slot, slot_callback SignalProxy_async_callback)
+  _WRAP_METHOD(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer_finish(const Glib::RefPtr<AsyncResult>& result), g_tls_database_lookup_certificate_issuer_finish, errthrow)
+
+  //TODO: _WRAP_METHOD(GList* lookup_certificates_issued_by(GByteArray* issuer_raw_dn, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable), g_tls_database_lookup_certificates_issued_by, errthrow)
+  //TODO: _WRAP_METHOD(void lookup_certificates_issued_by_async(GByteArray* issuer_raw_dn, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot, gpointer user_data), g_tls_database_lookup_certificates_issued_by_async)
+  //TODO: _WRAP_METHOD(GList* lookup_certificates_issued_by_finish(const Glib::RefPtr<AsyncResult>& result), g_tls_database_lookup_certificates_issued_by_finish, errthrow)
+
+  _WRAP_METHOD(Glib::ustring create_certificate_handle(const Glib::RefPtr<const TlsCertificate>& certificate) const, g_tls_database_create_certificate_handle)
+
+  _WRAP_METHOD(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle(const Glib::ustring& handle, const Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.} = TLS_DATABASE_LOOKUP_NONE), g_tls_database_lookup_certificate_for_handle, errthrow)
+  _WRAP_METHOD(Glib::RefPtr<const TlsCertificate> lookup_certificate_for_handle(const Glib::ustring& handle, const Glib::RefPtr<TlsInteraction>& interaction, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.} = TLS_DATABASE_LOOKUP_NONE) const, g_tls_database_lookup_certificate_for_handle, errthrow, constversion)
+
+  _WRAP_METHOD(void lookup_certificate_for_handle_async(const Glib::ustring& handle, const Glib::RefPtr<TlsInteraction>& interaction, const SlotAsyncReady& slot{callback}, const Glib::RefPtr<Cancellable>& cancellable{.?}, TlsDatabaseLookupFlags flags{.} = TLS_DATABASE_LOOKUP_NONE), g_tls_database_lookup_certificate_for_handle_async, slot_name slot, slot_callback SignalProxy_async_callback)
+  _WRAP_METHOD(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle_finish(const Glib::RefPtr<AsyncResult>& result), g_tls_database_lookup_certificate_for_handle_finish, errthrow)
+
+/* TODO:
+  _WRAP_VFUNC(TlsCertificateFlags verify_chain(const Glib::RefPtr<TlsCertificate>& chain, const Glib::ustring& purpose, const Glib::RefPtr<const SocketConnectable>& identity, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseVerifyFlags flags, const Glib::RefPtr<Cancellable>& cancellable), "verify_chain", errthrow)
+  _WRAP_VFUNC(void verify_chain_async(const Glib::RefPtr<TlsCertificate>& chain, const Glib::ustring& purpose, const Glib::RefPtr<const SocketConnectable>& identity, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseVerifyFlags flags, const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot, gpointer user_data), "verify_chain_async")
+  _WRAP_VFUNC(TlsCertificateFlags verify_chain_finish(const Glib::RefPtr<AsyncResult>& result), "verify_chain_finish", errthrow)
+  _WRAP_VFUNC(Glib::ustring create_certificate_handle(const Glib::RefPtr<TlsCertificate>& certificate), "create_certificate_handle")
+  _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle(const Glib::ustring& handle, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable), "lookup_certificate_for_handle", errthrow)
+  _WRAP_VFUNC(void lookup_certificate_for_handle_async(const Glib::ustring& handle, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot, gpointer user_data), "lookup_certificate_for_handle_async")
+  _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_for_handle_finish(const Glib::RefPtr<AsyncResult>& result), "lookup_certificate_for_handle_finish", errthrow)
+  _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer(const Glib::RefPtr<TlsCertificate>& certificate, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable), "lookup_certificate_issuer", errthrow)
+  _WRAP_VFUNC(void lookup_certificate_issuer_async(const Glib::RefPtr<TlsCertificate>& certificate, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot, gpointer user_data), "lookup_certificate_issuer_async")
+  _WRAP_VFUNC(Glib::RefPtr<TlsCertificate> lookup_certificate_issuer_finish(const Glib::RefPtr<AsyncResult>& result), "lookup_certificate_issuer_finish", errthrow)
+  _WRAP_VFUNC(GList* lookup_certificates_issued_by(GByteArray* issuer_raw_dn, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable), "lookup_certificates_issued_by", errthrow)
+  _WRAP_VFUNC(void lookup_certificates_issued_by_async(GByteArray* issuer_raw_dn, const Glib::RefPtr<TlsInteraction>& interaction, TlsDatabaseLookupFlags flags, const Glib::RefPtr<Cancellable>& cancellable, const SlotAsyncReady& slot, gpointer user_data), "lookup_certificates_issued_by_async")
+  _WRAP_VFUNC(GList* lookup_certificates_issued_by_finish(const Glib::RefPtr<AsyncResult>& result), "lookup_certificates_issued_by_finish", errthrow)
+*/
+};
+
+} // namespace Gio
diff --git a/gio/src/tlsfiledatabase.ccg b/gio/src/tlsfiledatabase.ccg
new file mode 100644 (file)
index 0000000..22171e0
--- /dev/null
@@ -0,0 +1,23 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
+
+namespace Gio
+{
+
+} // namespace Gio
diff --git a/gio/src/tlsfiledatabase.hg b/gio/src/tlsfiledatabase.hg
new file mode 100644 (file)
index 0000000..2c5d9f8
--- /dev/null
@@ -0,0 +1,48 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/interface.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/interface_p.h)
+_PINCLUDE(gio/gio.h)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+typedef struct _GTlsFileDatabaseInterface GTlsFileDatabaseInterface;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+namespace Gio
+{
+
+/** TlsFileDatabase - TLS file based database type.
+ * TlsFileDatabase is implemented by TlsDatabase objects which load their
+ * certificate information from a file. It is in interface which TLS library
+ * specific subtypes implement.
+ * @newin{2,36}
+ */
+class TlsFileDatabase : public Glib::Interface
+{
+  _CLASS_INTERFACE(TlsFileDatabase, GTlsFileDatabase, G_TLS_FILE_DATABASE, GTlsFileDatabaseInterface)
+
+public:
+  //TODO: Wrap the the g_tls_file_database_new() C function which returns a
+  //GTlsDatabase* and does more than calling g_initable_new().
+
+  _WRAP_PROPERTY("anchors", Glib::ustring)
+};
+
+} // namespace Gio
diff --git a/gio/src/tlsinteraction.ccg b/gio/src/tlsinteraction.ccg
new file mode 100644 (file)
index 0000000..45074f6
--- /dev/null
@@ -0,0 +1,26 @@
+/* Copyright (C) 2012 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
+#include <giomm/cancellable.h>
+#include <giomm/tlspassword.h>
+#include "slot_async.h"
+
+namespace Gio
+{
+
+} // namespace Gio
diff --git a/gio/src/tlsinteraction.hg b/gio/src/tlsinteraction.hg
new file mode 100644 (file)
index 0000000..7310e36
--- /dev/null
@@ -0,0 +1,74 @@
+/* Copyright (C) 2012 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+#include <giomm/asyncresult.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gio
+{
+
+_WRAP_ENUM(TlsInteractionResult, GTlsInteractionResult)
+
+class Cancellable;
+class TlsPassword;
+
+/** TlsInteraction - Interaction with the user during TLS operations.
+ * TlsInteraction provides a mechanism for the TLS connection and database code
+ * to interact with the user. It can be used to ask the user for passwords.
+ *
+ * To use a TlsInteraction with a TLS connection use
+ * Gio::TlsConnection::set_interaction().
+ *
+ * Callers should instantiate a derived class that implements the various
+ * interaction methods to show the required dialogs.
+ *
+ * Callers should use the 'invoke' functions like invoke_ask_password() to run
+ * interaction methods. These functions make sure that the interaction is
+ * invoked in the main loop and not in the current thread, if the current
+ * thread is not running the main loop.
+ *
+ * Derived classes can choose to implement whichever interactions methods
+ * they'd like to support by overriding those virtual methods. Any interactions
+ * not implemented will return Gio::TLS_INTERACTION_UNHANDLED. If a derived
+ * class implements an async method, it must also implement the corresponding
+ * finish method. 
+ * @newin{2,36}
+ */
+class TlsInteraction : public Glib::Object
+{
+  _CLASS_GOBJECT(TlsInteraction, GTlsInteraction, G_TLS_INTERACTION, Glib::Object, GObject)
+
+protected:
+  _CTOR_DEFAULT
+
+public:
+  _WRAP_METHOD(TlsInteractionResult ask_password(const Glib::RefPtr<TlsPassword>& password, const Glib::RefPtr<Cancellable>& cancellable{?}), g_tls_interaction_ask_password, errthrow)
+  _WRAP_METHOD(void ask_password_async(const Glib::RefPtr<TlsPassword>& password, const SlotAsyncReady& slot{callback?}, const Glib::RefPtr<Cancellable>& cancellable{.?}), g_tls_interaction_ask_password_async, slot_name slot, slot_callback SignalProxy_async_callback)
+  _WRAP_METHOD(TlsInteractionResult ask_password_finish(const Glib::RefPtr<AsyncResult>& result), g_tls_interaction_ask_password_finish, errthrow)
+  _WRAP_METHOD(TlsInteractionResult invoke_ask_password(const Glib::RefPtr<TlsPassword>& password, const Glib::RefPtr<Cancellable>& cancellable{?}), g_tls_interaction_invoke_ask_password, errthrow)
+
+/* TODO:
+  _WRAP_VFUNC(TlsInteractionResult ask_password(const Glib::RefPtr<TlsPassword>& password, const Glib::RefPtr<Cancellable>& cancellable), "ask_password", errthrow)
+  _WRAP_VFUNC(void ask_password_async(const Glib::RefPtr<TlsPassword>& password, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable), "ask_password_async")
+  _WRAP_VFUNC(TlsInteractionResult ask_password_finish(const Glib::RefPtr<AsyncResult>& result), "ask_password_finish", errthrow)
+*/
+};
+
+} // namespace Gio
diff --git a/gio/src/tlspassword.ccg b/gio/src/tlspassword.ccg
new file mode 100644 (file)
index 0000000..d04c195
--- /dev/null
@@ -0,0 +1,18 @@
+/* Copyright (C) 2012 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
diff --git a/gio/src/tlspassword.hg b/gio/src/tlspassword.hg
new file mode 100644 (file)
index 0000000..e9dfd70
--- /dev/null
@@ -0,0 +1,72 @@
+/* Copyright (C) 2012 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/object.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/object_p.h)
+
+namespace Gio
+{
+
+_WRAP_ENUM(TlsPasswordFlags, GTlsPasswordFlags)
+
+/** TlsPassword - TLS Passwords for prompting.
+ * Holds a password used in TLS.
+ * @newin{2,36}
+ */
+class TlsPassword : public Glib::Object
+{
+  _CLASS_GOBJECT(TlsPassword, GTlsPassword, G_TLS_PASSWORD, Glib::Object, GObject)
+
+protected:
+  _WRAP_CTOR(TlsPassword(TlsPasswordFlags flags, const Glib::ustring& description), g_tls_password_new)
+
+public:
+  _WRAP_METHOD_DOCS_ONLY(g_tls_password_new)
+  _WRAP_CREATE(TlsPasswordFlags flags, const Glib::ustring& description)
+
+  _WRAP_METHOD(const guchar* get_value(gsize& length{?}) const, g_tls_password_get_value)
+  _WRAP_METHOD(void set_value(const guchar* value, gssize length = -1), g_tls_password_set_value)
+  // This function does not copy the value as g_tls_password_set_value() does.
+  // It keeps a reference to the original value and expects it to be freed
+  // later in a specified GDestroyNotify callback.  Ignore it for now.
+  _IGNORE(g_tls_password_set_value_full)
+
+  _WRAP_METHOD(Glib::ustring get_description() const, g_tls_password_get_description)
+  _WRAP_METHOD(void set_description(const Glib::ustring& description), g_tls_password_set_description)
+
+  _WRAP_METHOD(TlsPasswordFlags get_flags() const, g_tls_password_get_flags)
+  _WRAP_METHOD(void set_flags(TlsPasswordFlags flags), g_tls_password_set_flags)
+
+  _WRAP_METHOD(Glib::ustring get_warning() const, g_tls_password_get_warning)
+  _WRAP_METHOD(void set_warning(const Glib::ustring& warning), g_tls_password_set_warning)
+
+  _WRAP_PROPERTY("description", Glib::ustring)
+  _WRAP_PROPERTY("flags", TlsPasswordFlags)
+  _WRAP_PROPERTY("warning", Glib::ustring)
+
+#m4 _CONVERSION(`gsize*', `gsize&', `*($3)')
+  _WRAP_VFUNC(const guchar* get_value(gsize& length) const, "get_value")
+
+  //TODO: _WRAP_VFUNC(void set_value(guchar* value, gssize length, GDestroyNotify destroy), "set_value")
+
+#m4 _CONVERSION(`Glib::ustring', `const gchar*', `g_strdup($3.c_str())')
+  _WRAP_VFUNC(Glib::ustring get_default_warning() const, "get_default_warning")
+};
+
+} // namespace Gio
diff --git a/gio/src/tlsserverconnection.ccg b/gio/src/tlsserverconnection.ccg
new file mode 100644 (file)
index 0000000..d76f332
--- /dev/null
@@ -0,0 +1,18 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gio/gio.h>
diff --git a/gio/src/tlsserverconnection.hg b/gio/src/tlsserverconnection.hg
new file mode 100644 (file)
index 0000000..ed374b8
--- /dev/null
@@ -0,0 +1,48 @@
+/* Copyright (C) 2013 The giomm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <glibmm/interface.h>
+#include <giomm/enums.h>
+
+_DEFS(giomm,gio)
+_PINCLUDE(glibmm/private/interface_p.h)
+_PINCLUDE(gio/gio.h)
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+typedef struct _GTlsServerConnectionInterface GTlsServerConnectionInterface;
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+namespace Gio
+{
+
+/** TlsServerConnection - TLS server-side connection.
+ * TlsServerConnection is the server-side subclass of TlsConnection,
+ * representing a server-side TLS connection.
+ * @newin{2,36}
+ */
+class TlsServerConnection : public Glib::Interface
+{
+  _CLASS_INTERFACE(TlsServerConnection, GTlsServerConnection, G_TLS_SERVER_CONNECTION, GTlsServerConnectionInterface)
+
+public:
+  //TODO: This new function creates an IOStream, not a TlsServerConnection:
+  //GIOStream* g_tls_server_connection_new(GIOStream *base_io_stream, GTlsCertificate *certificate, GError **error);
+
+  _WRAP_PROPERTY("authentication-mode", TlsAuthenticationMode)
+};
+
+} // namespace Gio
index e4433e4..2341973 100644 (file)
 
 #include <gio/gio.h>
 #include <gio/gunixconnection.h>
+#include "slot_async.h"
 
 namespace Gio
 {
+
+void UnixConnection::receive_credentials_async(const SlotAsyncReady& slot,
+  const Glib::RefPtr<Cancellable>& cancellable)
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_unix_connection_receive_credentials_async(gobj(),
+                                              Glib::unwrap(cancellable),
+                                              &SignalProxy_async_callback,
+                                              slot_copy);
+}
+
+void UnixConnection::receive_credentials_async(const SlotAsyncReady& slot)
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_unix_connection_receive_credentials_async(gobj(),
+                                              0,
+                                              &SignalProxy_async_callback,
+                                              slot_copy);
+}
+
+void
+UnixConnection::send_credentials_async(const SlotAsyncReady& slot,
+  const Glib::RefPtr<Cancellable>& cancellable)
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_unix_connection_send_credentials_async(gobj(),
+                                           Glib::unwrap(cancellable),
+                                           &SignalProxy_async_callback,
+                                           slot_copy);
+}
+
+void
+UnixConnection::send_credentials_async(const SlotAsyncReady& slot)
+
+{
+  SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
+
+  g_unix_connection_send_credentials_async(gobj(),
+                                           0,
+                                           &SignalProxy_async_callback,
+                                           slot_copy);
+}
+
 } // namespace Gio
index 1f1d036..25f9c5e 100644 (file)
@@ -49,7 +49,48 @@ public:
 
     _WRAP_METHOD(Glib::RefPtr<Credentials> receive_credentials(const Glib::RefPtr<Cancellable>& cancellable{?}), g_unix_connection_receive_credentials, errthrow)
     _WRAP_METHOD(Glib::RefPtr<const Credentials> receive_credentials(const Glib::RefPtr<Cancellable>& cancellable{?}) const, g_unix_connection_receive_credentials, errthrow, constversion)
+
+  /**  Asynchronously receive credentials.
+   * For more details, see receive_credentials() which is the synchronous
+   * version of this call.
+   *
+   * When the operation is finished, @a slot will be called. You can then call
+   * receive_credentials_finish() to get the result of the operation.
+   *
+   * @param slot A SlotAsyncReady to call when the request is satisfied. 
+   * @param cancellable A Cancellable object.
+   * @newin{2,36}
+   */
+  void receive_credentials_async(const SlotAsyncReady& slot,
+    const Glib::RefPtr<Cancellable>& cancellable);
+  _IGNORE(g_unix_connection_receive_credentials_async)
+
+  /// A non-cancellable version of receive_credentials_async().
+  void receive_credentials_async(const SlotAsyncReady& slot);
+
+  _WRAP_METHOD(Glib::RefPtr<Credentials> receive_credentials_finish(const Glib::RefPtr<AsyncResult>& result), g_unix_connection_receive_credentials_finish, errthrow)
+
     _WRAP_METHOD(bool send_credentials(const Glib::RefPtr<Cancellable>& cancellable{?}), g_unix_connection_send_credentials, errthrow)
+
+  /**  Asynchronously send credentials.
+   * For more details, see send_credentials() which is the synchronous version
+   * of this call.
+   *
+   * When the operation is finished, @a slot will be called. You can then call
+   * send_credentials_finish() to get the result of the operation.
+   *
+   * @param slot A SlotAsyncReady to call when the request is satisfied. 
+   * @param cancellable A Cancellable object.  
+   * @newin{2,36}
+   */
+  void send_credentials_async(const SlotAsyncReady& slot,
+    const Glib::RefPtr<Cancellable>& cancellable);
+  _IGNORE(g_unix_connection_send_credentials_async)
+
+  /// A non-cancellable version of send_credentials_async().
+  void send_credentials_async(const SlotAsyncReady& slot);
+
+  _WRAP_METHOD(bool send_credentials_finish(const Glib::RefPtr<AsyncResult>& result), g_unix_connection_send_credentials_finish, errthrow)
 };
 
 } // namespace Gio
index 2a7b6bd..d06790a 100644 (file)
@@ -91,7 +91,7 @@ void Volume::eject(const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>&
   SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
 
   g_volume_eject_with_operation(gobj(),
-                                static_cast<GMountUnmountFlags>(flags), 
+                                static_cast<GMountUnmountFlags>(flags),
                                 0, // mount_operation
                                 Glib::unwrap(cancellable),
                                 &SignalProxy_async_callback,
@@ -106,7 +106,7 @@ void Volume::eject(const SlotAsyncReady& slot, MountUnmountFlags flags)
   SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
 
   g_volume_eject_with_operation(gobj(),
-                                static_cast<GMountUnmountFlags>(flags), 
+                                static_cast<GMountUnmountFlags>(flags),
                                 0, // mount_operation
                                 0, // cancellable
                                 &SignalProxy_async_callback,
@@ -116,7 +116,7 @@ void Volume::eject(const SlotAsyncReady& slot, MountUnmountFlags flags)
 void Volume::eject(MountUnmountFlags flags)
 {
   g_volume_eject_with_operation(gobj(),
-                                static_cast<GMountUnmountFlags>(flags), 
+                                static_cast<GMountUnmountFlags>(flags),
                                 0, // mount_operation
                                 0, // cancellable
                                 0, // callback
@@ -131,7 +131,7 @@ void Volume::eject(const Glib::RefPtr<MountOperation>& mount_operation, const Sl
   SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
 
   g_volume_eject_with_operation(gobj(),
-                                static_cast<GMountUnmountFlags>(flags), 
+                                static_cast<GMountUnmountFlags>(flags),
                                 Glib::unwrap(mount_operation),
                                 Glib::unwrap(cancellable),
                                 &SignalProxy_async_callback,
@@ -146,7 +146,7 @@ void Volume::eject(const Glib::RefPtr<MountOperation>& mount_operation, const Sl
   SlotAsyncReady* slot_copy = new SlotAsyncReady(slot);
 
   g_volume_eject_with_operation(gobj(),
-                                static_cast<GMountUnmountFlags>(flags), 
+                                static_cast<GMountUnmountFlags>(flags),
                                 Glib::unwrap(mount_operation),
                                 0, // cancellable
                                 &SignalProxy_async_callback,
@@ -156,7 +156,7 @@ void Volume::eject(const Glib::RefPtr<MountOperation>& mount_operation, const Sl
 void Volume::eject(const Glib::RefPtr<MountOperation>& mount_operation, MountUnmountFlags flags)
 {
     g_volume_eject_with_operation(gobj(),
-                                  static_cast<GMountUnmountFlags>(flags), 
+                                  static_cast<GMountUnmountFlags>(flags),
                                   Glib::unwrap(mount_operation),
                                   0, // cancellable
                                   0, // callback
index 653a73a..c69c3da 100644 (file)
@@ -40,15 +40,15 @@ class File;
 class Drive;
 
 /** The Volume interface represents user-visible objects that can be mounted.
- * 
- * Mounting a Volume instance is an asynchronous operation. For more information about asynchronous operations, see AsyncReady and SimpleAsyncReady. To 
+ *
+ * Mounting a Volume instance is an asynchronous operation. For more information about asynchronous operations, see AsyncReady and SimpleAsyncReady. To
  * mount a GVolume, first call mount(), optionally providing a MountOperation object and a SlotAsyncReady callback.
- * 
- * Typically, you will not want to provide a MountOperation if automounting all volumes when a desktop session starts since it's not desirable to 
+ *
+ * Typically, you will not want to provide a MountOperation if automounting all volumes when a desktop session starts since it's not desirable to
  * put up a lot of dialogs asking for credentials.
- * 
- * The callback will be fired when the operation has resolved (either with success or failure), and a AsyncReady structure will be passed to the callback. 
- * That callback should then call g_volume_mount_finish() with the GVolume instance and the GAsyncReady data to see if the operation was completed 
+ *
+ * The callback will be fired when the operation has resolved (either with success or failure), and a AsyncReady structure will be passed to the callback.
+ * That callback should then call g_volume_mount_finish() with the GVolume instance and the GAsyncReady data to see if the operation was completed
  * successfully. If an error is present when finish() is called, then it will be filled with any error information.
  *
  * @newin{2,16}
@@ -95,27 +95,32 @@ public:
   /** Mounts a volume.
    * This is an asynchronous operation, and is finished by calling mount_finish() with the AsyncResult data returned in the callback slot.
    *
+   * @param mount_operation A mount operation.
    * @param slot A callback which will be called when the operation is completed or canceled.
    * @param cancellable A cancellable object which can be used to cancel the operation.
-   * @param mount_operation A mount operation.
+   * @param flags Flags affecting the operation.
    */
   void mount(const Glib::RefPtr<MountOperation>& mount_operation, const SlotAsyncReady& slot, const Glib::RefPtr<Cancellable>& cancellable, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
   /** Mounts a volume.
    * This is an asynchronous operation, and is finished by calling mount_finish() with the AsyncResult data returned in the callback slot.
    *
-   * @param slot A callback which will be called when the operation is completed or canceled.
    * @param mount_operation A mount operation.
+   * @param slot A callback which will be called when the operation is completed or canceled.
+   * @param flags Flags affecting the operation.
    */
   void mount(const Glib::RefPtr<MountOperation>& mount_operation, const SlotAsyncReady& slot, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
   /** Mounts a volume.
-   * 
+   *
    * @param mount_operation A mount operation.
+   * @param flags Flags affecting the operation.
    */
   void mount(const Glib::RefPtr<MountOperation>& mount_operation, MountMountFlags flags = MOUNT_MOUNT_NONE);
 
   /** Mounts a volume.
+   *
+   * @param flags Flags affecting the operation.
    */
   void mount(MountMountFlags flags = MOUNT_MOUNT_NONE);
 
@@ -166,11 +171,11 @@ public:
 
   //_WRAP_VFUNC(bool can_mount(), can_mount)
   //_WRAP_VFUNC(bool can_eject(), can_eject)
-  //_WRAP_VFUNC(void mount_fn(GMountMountFlags flags, GMountOperation* mount_operation, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data), mount_fn) //TODO: Rename to mount()?       
+  //_WRAP_VFUNC(void mount_fn(GMountMountFlags flags, GMountOperation* mount_operation, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data), mount_fn) //TODO: Rename to mount()?
   //_WRAP_VFUNC(bool mount_finish(GAsyncResult* result, GError** error), mount_finish)
   //_WRAP_VFUNC(void eject(GMountUnmountFlags flags, GCancellable* cancellable, GAsyncReadyCallback callback, gpointer user_data), eject)
   //_WRAP_VFUNC(bool eject_finish(GAsyncResult* result, GError** error), eject_finish)
-  
+
   //_WRAP_VFUNC(std::string get_identifier(const std::string& kind), get_identifier)
 
   //TODO: Use an ArrayHandle.
@@ -190,11 +195,11 @@ Glib::RefPtr<Gio::Volume> wrap(GVolume* object, bool take_copy);
 namespace Container_Helpers
 {
 
-/** This specialization of TypeTraits exists 
- * because the default use of Glib::wrap(GObject*), 
+/** This specialization of TypeTraits exists
+ * because the default use of Glib::wrap(GObject*),
  * instead of a specific Glib::wrap(GSomeInterface*),
  * would not return a wrapper for an interface.
- */ 
+ */
 template <>
 struct TypeTraits< Glib::RefPtr<Gio::Volume> >
 {
@@ -207,7 +212,7 @@ struct TypeTraits< Glib::RefPtr<Gio::Volume> >
 
   static CppType to_cpp_type    (const CType& item)
   {
-    //Use a specific Glib::wrap() function, 
+    //Use a specific Glib::wrap() function,
     //because CType has the specific type (not just GObject):
     return Glib::wrap(item, true /* take_copy */);
   }
index 5988119..6e7cc1a 100644 (file)
@@ -33,8 +33,8 @@ namespace Gio
 {
 
 /** Monitors a file or directory for changes.
- * VolumeMonitor is for listing the user-interesting devices and volumes on the 
- * computer. In other words, what a file selector or file manager would show in 
+ * VolumeMonitor is for listing the user-interesting devices and volumes on the
+ * computer. In other words, what a file selector or file manager would show in
  * a sidebar.
  *
  * @newin{2,16}
index 5f96ec4..913b17d 100644 (file)
@@ -53,7 +53,7 @@ void Class::register_derived_type(GType base_type, GTypeModule* module)
   //GTypeQuery::instance_size is guint but GTypeInfo::instance_size is guint16.
   const guint16 instance_size =
    (guint16)base_query.instance_size;
+
   const GTypeInfo derived_info =
   {
     class_size,
@@ -75,7 +75,7 @@ void Class::register_derived_type(GType base_type, GTypeModule* module)
   }
 
   gchar* derived_name = g_strconcat("gtkmm__", base_query.type_name, (void*)0);
-  
+
   if(module)
     gtype_ = g_type_module_register_type(module, base_type, derived_name, &derived_info, GTypeFlags(0));
   else
index cd33867..e9094c9 100644 (file)
@@ -22,6 +22,7 @@
 #include <glibmmconfig.h>
 #include <glibmm/refptr.h>
 #include <glibmm/ustring.h>
+#include <glibmm/variant.h>
 #include <glibmm/wrap.h>
 #include <glibmm/debug.h>
 #include <glib-object.h>
@@ -42,10 +43,10 @@ namespace Glib
 /**
  * @ingroup ContHandles
  */
+
 //! Ownership of the container
-/*! Defines how and if the container will release the list and 
- * its elemens when it is destroyed 
+/*! Defines how and if the container will release the list and
+ * its elemens when it is destroyed
  */
 enum OwnershipType
 {
@@ -145,7 +146,7 @@ struct TypeTraits<T*>
     GObject* cobj = (GObject*)ptr;
     return dynamic_cast<CppType>(Glib::wrap_auto(cobj, false /* take_copy */));
   }
-  
+
   static void    release_c_type (CType   ptr)
   {
     GLIBMM_DEBUG_UNREFERENCE(0, ptr);
@@ -154,7 +155,7 @@ struct TypeTraits<T*>
 };
 
 //This confuse the SUN Forte compiler, so we ifdef it out:
-#ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS 
+#ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
 
 /** Partial specialization for pointers to const GtkObject instances.
  * @ingroup ContHelpers
@@ -177,7 +178,7 @@ struct TypeTraits<const T*>
      GObject* cobj = (GObject*)const_cast<CTypeNonConst>(ptr);
      return dynamic_cast<CppType>(Glib::wrap_auto(cobj, false /* take_copy */));
   }
-  
+
   static void    release_c_type (CType   ptr)
   {
     GLIBMM_DEBUG_UNREFERENCE(0, ptr);
@@ -211,7 +212,7 @@ struct TypeTraits< Glib::RefPtr<T> >
     return Glib::RefPtr<T>( dynamic_cast<T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
     //We use dynamic_cast<> in case of multiple inheritance.
   }
-  
+
   static void    release_c_type (CType          ptr)
   {
     GLIBMM_DEBUG_UNREFERENCE(0, ptr);
@@ -247,7 +248,7 @@ struct TypeTraits< Glib::RefPtr<const T> >
     return Glib::RefPtr<const T>( dynamic_cast<const T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
     //We use dynamic_cast<> in case of multiple inheritance.
   }
-  
+
   static void    release_c_type (CType          ptr)
   {
     GLIBMM_DEBUG_UNREFERENCE(0, ptr);
@@ -323,6 +324,51 @@ struct TypeTraits<bool>
   static void    release_c_type (CType) {}
 };
 
+/** Specialization for Glib::VariantBase.
+ * @ingroup ContHelpers
+ */
+template <>
+struct TypeTraits<Glib::VariantBase>
+{
+  typedef Glib::VariantBase     CppType;
+  typedef GVariant *            CType;
+  typedef GVariant *            CTypeNonConst;
+
+  static CType to_c_type (const Glib::VariantBase& v)
+    { return const_cast<CTypeNonConst>(v.gobj()); }
+
+  static CType to_c_type (CType v) { return v; }
+
+  static CppType to_cpp_type(CType v)
+    { return Glib::VariantBase(v, true); }
+
+  static void release_c_type(CType v)
+    { g_variant_unref(const_cast<CTypeNonConst>(v)); }
+};
+
+/** Specialization for Glib::VariantContainerBase.
+ * @ingroup ContHelpers
+ */
+template <>
+struct TypeTraits<Glib::VariantContainerBase>
+{
+  typedef Glib::VariantContainerBase    CppType;
+  typedef GVariant *                    CType;
+  typedef GVariant *                    CTypeNonConst;
+
+  static CType to_c_type (const Glib::VariantContainerBase& v)
+    { return const_cast<CTypeNonConst>(v.gobj()); }
+
+  static CType to_c_type (CType v) { return v; }
+
+  static CppType to_cpp_type(CType v)
+    { return Glib::VariantContainerBase(v, true); }
+
+  static void release_c_type(CType v)
+    { g_variant_unref(const_cast<CTypeNonConst>(v)); }
+};
+
+
 #ifndef GLIBMM_HAVE_TEMPLATE_SEQUENCE_CTORS
 
 /* The STL containers in Sun's libCstd don't support templated sequence
index 390879a..7d78854 100644 (file)
@@ -61,7 +61,7 @@ public:
   typedef std::bidirectional_iterator_tag iterator_category;
   typedef std::size_t size_type;
   typedef std::ptrdiff_t difference_type;
-  
+
   typedef typename List_Iterator_Base<T>::pointer pointer;
   typedef typename List_Iterator_Base<T>::reference reference;
 
index 4bc5eac..0710f3f 100644 (file)
@@ -27,7 +27,7 @@ namespace Glib
 void init()
 {
   Glib::wrap_register_init();
-  Glib::Error::register_init(); //also calls Glib::wrap_init();  
+  Glib::Error::register_init(); //also calls Glib::wrap_init();
 }
 
 } // namespace Glib
index 43e529f..0ff2216 100644 (file)
@@ -41,18 +41,18 @@ public:
   typedef GTypeInterface  BaseClassType;
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
 
-  /** Called by constructors of derived classes. Provide the result of 
-   * the Class object's init() function to ensure that it is properly 
+  /** Called by constructors of derived classes. Provide the result of
+   * the Class object's init() function to ensure that it is properly
    * initialized.
-   * 
+   *
    * @param interface_class The Class object for the derived type.
    */
   explicit Interface(const Glib::Interface_Class& interface_class);
 
   /** Called by constructors of derived classes.
-   * 
-   * @param cast_item A C instance that will be wrapped by the new 
-   * C++ instance. This does not take a reference, so call reference() 
+   *
+   * @param castitem A C instance that will be wrapped by the new
+   * C++ instance. This does not take a reference, so call reference()
    * if necessary.
    */
   explicit Interface(GObject* castitem);
index 84c71b6..e63bb0b 100644 (file)
@@ -150,10 +150,10 @@ private:
 
 //TODO: Remove this when we can break glibmm API.
 /** This is an intermediate type. When a method takes this, or returns this, you
- * should use a standard C++ container of your choice, such as std::list or 
+ * should use a standard C++ container of your choice, such as std::list or
  * std::vector.
  *
- * However, this is not used in new API. We now prefer to just use std::vector, 
+ * However, this is not used in new API. We now prefer to just use std::vector,
  * which is less flexibile, but makes the API clearer.
  *
  * @ingroup ContHandles
index 47f2638..e48756d 100644 (file)
@@ -214,9 +214,9 @@ static gboolean glibmm_source_callback(void* data)
   return 0;
 }
 
-/* Only used by SignalTimeout::connect_once() and SignalIdle::connect_once().
- * These don't use Glib::Source, to avoid the unnecessary overhead
- * of a completely unused wrapper object.
+/* Only used by SignalTimeout::connect_once(), SignalTimeout::connect_seconds_once()
+ * and SignalIdle::connect_once(). These don't use Glib::Source, to avoid the
+ * unnecessary overhead of a completely unused wrapper object.
  */
 static gboolean glibmm_source_callback_once(void* data)
 {
@@ -285,7 +285,7 @@ static void glibmm_signal_connect_once(const sigc::slot<void>& slot, int priorit
 
   conn_node->install(source);
   g_source_attach(source, context);
-  g_source_unref(source);
+  g_source_unref(source); // GMainContext holds a reference
 }
 
 } // anonymous namespace
@@ -342,10 +342,10 @@ sigc::connection SignalTimeout::connect(const sigc::slot<bool>& slot,
       source, &glibmm_source_callback, conn_node,
       &SourceConnectionNode::destroy_notify_callback);
 
+  conn_node->install(source);
   g_source_attach(source, context_);
   g_source_unref(source); // GMainContext holds a reference
 
-  conn_node->install(source);
   return connection;
 }
 
@@ -372,10 +372,10 @@ sigc::connection SignalTimeout::connect_seconds(const sigc::slot<bool>& slot,
       source, &glibmm_source_callback, conn_node,
       &SourceConnectionNode::destroy_notify_callback);
 
+  conn_node->install(source);
   g_source_attach(source, context_);
   g_source_unref(source); // GMainContext holds a reference
 
-  conn_node->install(source);
   return connection;
 }
 
@@ -414,10 +414,10 @@ sigc::connection SignalIdle::connect(const sigc::slot<bool>& slot, int priority)
       source, &glibmm_source_callback, conn_node,
       &SourceConnectionNode::destroy_notify_callback);
 
+  conn_node->install(source);
   g_source_attach(source, context_);
   g_source_unref(source); // GMainContext holds a reference
 
-  conn_node->install(source);
   return connection;
 }
 
@@ -500,10 +500,10 @@ sigc::connection SignalChildWatch::connect(const sigc::slot<void, GPid, int>& sl
       source, (GSourceFunc)&glibmm_child_watch_callback, conn_node,
       &SourceConnectionNode::destroy_notify_callback);
 
+  conn_node->install(source);
   g_source_attach(source, context_);
   g_source_unref(source); // GMainContext holds a reference
 
-  conn_node->install(source);
   return connection;
 }
 
index 55f310b..bc0dd21 100644 (file)
@@ -70,6 +70,15 @@ private:
   GPollFD gobject_;
 };
 
+// Concerning SignalTimeout::connect_once(), SignalTimeout::connect_seconds_once()
+// and SignalIdle::connect_once():
+// See https://bugzilla.gnome.org/show_bug.cgi?id=396963 and
+// http://bugzilla.gnome.org/show_bug.cgi?id=512348 about the sigc::trackable issue.
+// It's recommended to replace sigc::slot<void>& by std::function<void()>& in
+// Threads::Thread::create() and ThreadPool::push() at the next ABI break.
+// Such a replacement would be a mixed blessing in SignalTimeout and SignalIdle.
+// In a single-threaded program auto-disconnection of trackable slots is safe
+// and can be useful.
 
 class SignalTimeout
 {
@@ -102,6 +111,11 @@ public:
    * timeout_source->connect(sigc::ptr_fun(&timeout_handler));
    * timeout_source->attach(Glib::MainContext::get_default());
    * @endcode
+   *
+   * This method is not thread-safe. You should call it, or manipulate the
+   * returned sigc::connection object, only from the thread where the SignalTimeout
+   * object's MainContext runs.
+   *
    * @param slot A slot to call when @a interval has elapsed.
    * If <tt>timeout_handler()</tt> returns <tt>false</tt> the handler is disconnected.
    * @param interval The timeout in milliseconds.
@@ -111,18 +125,25 @@ public:
   sigc::connection connect(const sigc::slot<bool>& slot, unsigned int interval,
                            int priority = PRIORITY_DEFAULT);
 
- /** Connects a timeout handler that runs only once.
-  * This method takes a function pointer to a function with a void return
-  * and no parameters. After running once it is not called again.
-  *
-  * @see connect()
-  * @param slot A slot to call when @a interval has elapsed. For example:
-  * @code
-  * void on_timeout_once()
-  * @endcode
-  * @param interval The timeout in milliseconds.
-  * @param priority The priority of the new event source.
-  */
+  /** Connects a timeout handler that runs only once.
+   * This method takes a function pointer to a function with a void return
+   * and no parameters. After running once it is not called again.
+   *
+   * Because sigc::trackable is not thread-safe, if the slot represents a
+   * non-static method of a class deriving from sigc::trackable, and the slot is
+   * created by sigc::mem_fun(), connect_once() should only be called from
+   * the thread where the SignalTimeout object's MainContext runs. You can use,
+   * say, boost::bind() or, in C++11, std::bind() or a C++11 lambda expression
+   * instead of sigc::mem_fun().
+   *
+   * @see connect()
+   * @param slot A slot to call when @a interval has elapsed. For example:
+   * @code
+   * void on_timeout_once()
+   * @endcode
+   * @param interval The timeout in milliseconds.
+   * @param priority The priority of the new event source.
+   */
   void connect_once(const sigc::slot<void>& slot, unsigned int interval,
                     int priority = PRIORITY_DEFAULT);
 
@@ -148,6 +169,11 @@ public:
    * timeout_source->connect(sigc::ptr_fun(&timeout_handler));
    * timeout_source->attach(Glib::MainContext::get_default());
    * @endcode
+   *
+   * This method is not thread-safe. You should call it, or manipulate the
+   * returned sigc::connection object, only from the thread where the SignalTimeout
+   * object's MainContext runs.
+   *
    * @param slot A slot to call when @a interval has elapsed.
    * If <tt>timeout_handler()</tt> returns <tt>false</tt> the handler is disconnected.
    * @param interval The timeout in seconds.
@@ -159,20 +185,27 @@ public:
   sigc::connection connect_seconds(const sigc::slot<bool>& slot, unsigned int interval,
                            int priority = PRIORITY_DEFAULT);
 
- /** Connects a timeout handler that runs only once with whole second
-  *  granularity.
-  *
-  * This method takes a function pointer to a function with a void return
-  * and no parameters. After running once it is not called again.
-  *
-  * @see connect_seconds()
-  * @param slot A slot to call when @a interval has elapsed. For example:
-  * @code
-  * void on_timeout_once()
-  * @endcode
-  * @param interval The timeout in seconds.
-  * @param priority The priority of the new event source.
-  */
+  /** Connects a timeout handler that runs only once with whole second
+   *  granularity.
+   *
+   * This method takes a function pointer to a function with a void return
+   * and no parameters. After running once it is not called again.
+   *
+   * Because sigc::trackable is not thread-safe, if the slot represents a
+   * non-static method of a class deriving from sigc::trackable, and the slot is
+   * created by sigc::mem_fun(), connect_seconds_once() should only be called from
+   * the thread where the SignalTimeout object's MainContext runs. You can use,
+   * say, boost::bind() or, in C++11, std::bind() or a C++11 lambda expression
+   * instead of sigc::mem_fun().
+   *
+   * @see connect_seconds()
+   * @param slot A slot to call when @a interval has elapsed. For example:
+   * @code
+   * void on_timeout_once()
+   * @endcode
+   * @param interval The timeout in seconds.
+   * @param priority The priority of the new event source.
+   */
   void connect_seconds_once(const sigc::slot<void>& slot, unsigned int interval,
                             int priority = PRIORITY_DEFAULT);
 
@@ -203,6 +236,11 @@ public:
    * idle_source->connect(sigc::ptr_fun(&idle_handler));
    * idle_source->attach(Glib::MainContext::get_default());
    * @endcode
+   *
+   * This method is not thread-safe. You should call it, or manipulate the
+   * returned sigc::connection object, only from the thread where the SignalIdle
+   * object's MainContext runs.
+   *
    * @param slot A slot to call when the main loop is idle.
    * If <tt>idle_handler()</tt> returns <tt>false</tt> the handler is disconnected.
    * @param priority The priority of the new event source.
@@ -210,17 +248,24 @@ public:
    */
   sigc::connection connect(const sigc::slot<bool>& slot, int priority = PRIORITY_DEFAULT_IDLE);
 
- /** Connects an idle handler that runs only once.
-  * This method takes a function pointer to a function with a void return
-  * and no parameters. After running once it is not called again.
-  *
-  * @see connect()
-  * @param slot A slot to call when the main loop is idle. For example:
-  * @code
-  * void on_idle_once()
-  * @endcode
-  * @param priority The priority of the new event source.
-  */
+  /** Connects an idle handler that runs only once.
+   * This method takes a function pointer to a function with a void return
+   * and no parameters. After running once it is not called again.
+   *
+   * Because sigc::trackable is not thread-safe, if the slot represents a
+   * non-static method of a class deriving from sigc::trackable, and the slot is
+   * created by sigc::mem_fun(), connect_once() should only be called from
+   * the thread where the SignalIdle object's MainContext runs. You can use,
+   * say, boost::bind() or, in C++11, std::bind() or a C++11 lambda expression
+   * instead of sigc::mem_fun().
+   *
+   * @see connect()
+   * @param slot A slot to call when the main loop is idle. For example:
+   * @code
+   * void on_idle_once()
+   * @endcode
+   * @param priority The priority of the new event source.
+   */
   void connect_once(const sigc::slot<void>& slot, int priority = PRIORITY_DEFAULT_IDLE);
 
 private:
@@ -250,6 +295,11 @@ public:
    * io_source->connect(sigc::ptr_fun(&io_handler));
    * io_source->attach(Glib::MainContext::get_default());
    * @endcode
+   *
+   * This method is not thread-safe. You should call it, or manipulate the
+   * returned sigc::connection object, only from the thread where the SignalIO
+   * object's MainContext runs.
+   *
    * @param slot A slot to call when polling @a fd results in an event that matches @a condition.
    * The event will be passed as a parameter to @a slot.
    * If <tt>io_handler()</tt> returns <tt>false</tt> the handler is disconnected.
@@ -273,6 +323,11 @@ public:
    * io_source->connect(sigc::ptr_fun(&io_handler));
    * io_source->attach(Glib::MainContext::get_default());
    * @endcode
+   *
+   * This method is not thread-safe. You should call it, or manipulate the
+   * returned sigc::connection object, only from the thread where the SignalIO
+   * object's MainContext runs.
+   *
    * @param slot A slot to call when polling @a channel results in an event that matches @a condition.
    * The event will be passed as a parameter to @a slot.
    * If <tt>io_handler()</tt> returns <tt>false</tt> the handler is disconnected.
@@ -302,6 +357,11 @@ public:
    * void child_watch_handler(GPid pid, int child_status) { ... }
    * Glib::signal_child_watch().connect(sigc::ptr_fun(&child_watch_handler), pid);
    * @endcode
+   *
+   * This method is not thread-safe. You should call it, or manipulate the
+   * returned sigc::connection object, only from the thread where the SignalChildWatch
+   * object's MainContext runs.
+   *
    * @param slot A slot to call when child process @a pid exited.
    * @param pid The child process to watch for.
    * @param priority The priority of the new event source.
index 9d48d93..4ac56a1 100644 (file)
@@ -189,7 +189,7 @@ struct TypeTraits< Glib::RefPtr<T> >
     return Glib::RefPtr<T>( dynamic_cast<T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
     //We use dynamic_cast<> in case of multiple inheritance.
   }
-  
+
   static void release_c_type(CType ptr)
   {
     GLIBMM_DEBUG_UNREFERENCE(0, ptr);
@@ -225,7 +225,7 @@ struct TypeTraits< Glib::RefPtr<const T> >
     return Glib::RefPtr<const T>( dynamic_cast<const T*>(Glib::wrap_auto(cobj, true /* take_copy */)) );
     //We use dynamic_cast<> in case of multiple inheritance.
   }
-  
+
   static void release_c_type (CType ptr)
   {
     GLIBMM_DEBUG_UNREFERENCE(0, ptr);
@@ -261,7 +261,7 @@ public:
   CppType get() const           { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
 };
 
-//The SUN Forte Compiler has a problem with this: 
+//The SUN Forte Compiler has a problem with this:
 #  ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
 
 /** Partial specialization for RefPtr<> to const Glib::Object.
index 4798c1f..7a2c377 100644 (file)
@@ -271,7 +271,7 @@ sigc::connection ObjectBase::connect_property_changed_with_return(const Glib::us
   // which will contain a switch/case statement which will examine the property name.
   const Glib::ustring notify_signal_name = "notify::" + property_name;
   pConnectionNode->connection_id_ = g_signal_connect_data(gobj(),
-         notify_signal_name.c_str(), (GCallback)(&PropertyProxyConnectionNode::callback), pConnectionNode, 
+         notify_signal_name.c_str(), (GCallback)(&PropertyProxyConnectionNode::callback), pConnectionNode,
          &PropertyProxyConnectionNode::destroy_notify_handler,
          G_CONNECT_AFTER);
 
index 69b7722..97f78f3 100644 (file)
@@ -55,7 +55,7 @@ protected:
   /** This default constructor is called implicitly from the constructor of user-derived
    * classes, even if, for instance, Gtk::Button calls a different ObjectBase constructor.
    * This is normal behaviour for C++ virtual inheritance.
-   * 
+   *
    * The GType name will be gtkmm__anonymous_custom_type.
    */
   ObjectBase();
@@ -63,7 +63,7 @@ protected:
   /** A derived constructor always overrides this choice.
    * The C++ language itself ensures that the constructor
    * is only invoked once.
-   * 
+   *
    * All classes generated by gtkmmproc use this constructor, with custom_type_name = 0,
    * which essentially means it's not a custom type.  This is used to optimize
    * vfunc and signal handler callbacks -- since the C++ virtual methods are
@@ -104,17 +104,17 @@ public:
   template <class PropertyType>
   void get_property(const Glib::ustring& property_name, PropertyType& value) const;
 
-  /** You can use the signal_changed() signal of the property proxy instead, 
+  /** You can use the signal_changed() signal of the property proxy instead,
    * but this is necessary when using the reduced API.
    *
    * See also connect_property_changed_with_return().
    */
   void connect_property_changed(const Glib::ustring& property_name, const sigc::slot<void>& slot);
 
-  /** You can use the signal_changed() signal of the property proxy instead, 
+  /** You can use the signal_changed() signal of the property proxy instead,
    * but this is necessary when using the reduced API.
    *
-   * This method was added because connect_property_changed() does not return a sigc::connection, 
+   * This method was added because connect_property_changed() does not return a sigc::connection,
    * and we could not break the ABI by changing that function.
    */
   sigc::connection connect_property_changed_with_return(const Glib::ustring& property_name, const sigc::slot<void>& slot);
@@ -128,7 +128,7 @@ public:
    */
   void freeze_notify();
 
-  /** 
+  /**
    * Reverts the effect of a previous call to freeze_notify(). The freeze count
    * is decreased on object and when it reaches zero, all queued "notify"
    * signals are emitted.
index 5878a94..3b2b422 100644 (file)
@@ -49,9 +49,9 @@ void custom_set_property_callback(GObject* object, unsigned int property_id,
 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
 
 /** This is the base class for Glib::Object properties.
- * 
+ *
  * This class manages the generic parts of the object properties.
- * Derived (templated) classes handle the specific value types. 
+ * Derived (templated) classes handle the specific value types.
  */
 class PropertyBase
 {
@@ -60,7 +60,7 @@ public:
   /** Returns the name of the property.
    */
   Glib::ustring get_name() const;
-  
+
   /** Notifies the object containing the property that the property has changed.
    * This emits the "notify" signal, passing the property name.
    */
@@ -72,7 +72,7 @@ protected:
   GParamSpec*     param_spec_;
 
   /** This constructs a property of type @a value_type for the @a object.
-   * The property is not registered in the GObject object system 
+   * The property is not registered in the GObject object system
    * until install_property() has been called. Derived classes do this in
    * their constructors.
    *
@@ -86,7 +86,7 @@ protected:
    * Checks if the property has already been installed.
    */
   bool lookup_property(const Glib::ustring& name);
-  
+
   /**
    * Installs the property specified by the given @a param_spec.
    */
@@ -114,7 +114,7 @@ private:
 };
 
 /** A Glib::Object property.
- * 
+ *
  * This class wraps a GObject property, providing a C++ API to the GObject property
  * system, for use with classes derived from Glib::Object or Glib::Interface.
  *
@@ -125,15 +125,15 @@ private:
  *  * A short description.
  *  * The default value and the minimum and maximum bounds (depending on the type of the property).
  *  * Flags, defining, among other things, whether the property can be read or written.
- * 
+ *
  * This Property class currently supports only the name and default value. The
  * minimum and maximum bounds are set to the full range of the value. The nick
  * and the explanation are set to empty. The flags are set to indicate that the
  * property can be both read from and written to.
- * 
- * The class information must be installed into the GObject system once per 
+ *
+ * The class information must be installed into the GObject system once per
  * property, but this is handled automatically.
- * 
+ *
  * A property can be used only as direct data member of a type, inheriting from
  * Glib::Object. A reference to the object must be passed to the constructor of
  * the property.
@@ -149,7 +149,7 @@ public:
    * For each instance of the object, the same property must be constructed with the same name
    */
   Property(Glib::Object& object, const Glib::ustring& name);
-  
+
   /** Constructs a property of the @a object with the specified @a name and @a default_value.
    * For  each instance of the object, the same property must be constructed with the same name.
    */
@@ -159,7 +159,7 @@ public:
    * The object containing the property will be notified about the change.
    */
   inline void set_value(const PropertyType& data);
-  
+
   /** Returns the value of the property.
    */
   inline PropertyType get_value() const;
@@ -168,7 +168,7 @@ public:
    * The object containing the property will be notified about the change.
    */
   inline Property<T>& operator=(const PropertyType& data);
-  
+
   /** Returns the value of the property.
    */
   inline operator PropertyType() const;
index 98093be..a41f549 100644 (file)
@@ -39,9 +39,9 @@ namespace Glib
  *
  * You may also receive notification when a property's value changes, by connecting to signal_changed().
  *
- * You may register new properties for your class (actually for the underlying GType) 
+ * You may register new properties for your class (actually for the underlying GType)
  * simply by adding a PropertyProxy instance as a class member.
- * However, your constructor must call the Glib::ObjectBase constructor with a new GType name, 
+ * However, your constructor must call the Glib::ObjectBase constructor with a new GType name,
  * in order to register a new GType.
  */
 template <class T>
@@ -149,7 +149,7 @@ T PropertyProxy<T>::get_value() const
   return value.get();
 }
 
-//We previously just static_cast<> PropertyProxy_WriteOnly<> to PropertyProxy<> to call its set_value(), 
+//We previously just static_cast<> PropertyProxy_WriteOnly<> to PropertyProxy<> to call its set_value(),
 //to avoid code duplication.
 //But the AIX compiler does not like that hack.
 template <class T>
@@ -162,7 +162,7 @@ void PropertyProxy_WriteOnly<T>::set_value(const T& data)
   set_property_(value);
 }
 
-//We previously just static_cast<> PropertyProxy_WriteOnly<> to PropertyProxy<> to call its set_value(), 
+//We previously just static_cast<> PropertyProxy_WriteOnly<> to PropertyProxy<> to call its set_value(),
 //to avoid code duplication.
 //But the AIX compiler does not like that hack.
 template <class T>
index 73a4baa..810ec34 100644 (file)
@@ -25,7 +25,7 @@ namespace Glib
 {
 
 QueryQuark::QueryQuark(const GQuark& q)
-  : quark_(q) 
+  : quark_(q)
 {}
 
 QueryQuark::QueryQuark(const ustring& s)
index c0bdc81..472589f 100644 (file)
 namespace Glib
 {
 
-/** Quarks are unique IDs in Glib for strings for use in 
+/** Quarks are unique IDs in Glib for strings for use in
  * hash table lookups.  Each Quark is unique but may change
  * between runs.
  *
- * QueryQuark is a converter class for looking up but not 
+ * QueryQuark is a converter class for looking up but not
  * allocating an ID.  An id means the quark lookup failed.
  *
  * Quark is used for actions for which the id should live on
index bd27b16..541a1bc 100644 (file)
@@ -55,7 +55,7 @@ public:
    * Afterwards it will be null and use of -> will cause a segmentation fault.
    */
   inline RefPtr();
-  
+
   /// Destructor - decrements reference count.
   inline ~RefPtr();
 
@@ -94,7 +94,7 @@ public:
 
   /// Tests whether the RefPtr<> point to the same underlying instance.
   inline bool operator==(const RefPtr<T_CppObject>& src) const;
-  
+
   /// See operator==().
   inline bool operator!=(const RefPtr<T_CppObject>& src) const;
 
@@ -137,7 +137,7 @@ public:
 
   /** Static cast to derived class.
    *
-   * Like the dynamic cast; the notation is 
+   * Like the dynamic cast; the notation is
    * @code
    *   ptr_derived = RefPtr<Derived>::cast_static(ptr_base);
    * @endcode
@@ -155,7 +155,7 @@ public:
   template <class T_CastFrom>
   static inline RefPtr<T_CppObject> cast_const(const RefPtr<T_CastFrom>& src);
 
-  //TODO: Maybe remove these if we replace operator bool() with operator const void* after 
+  //TODO: Maybe remove these if we replace operator bool() with operator const void* after
   //an API/ABI break, as suggested by Daniel Elstner? murrayc.
   //See bug https://bugzilla.gnome.org/show_bug.cgi?id=626858
 
index c0f64c9..cc6f707 100644 (file)
@@ -52,7 +52,7 @@ void* SignalProxyConnectionNode::notify(void* data)
   {
     GObject* o = conn->object_;
     conn->object_ = 0;
-  
+
     if(g_signal_handler_is_connected(o, conn->connection_id_)) //We check first, because during destruction, GTK+ sometimes seems to disconnect them for us, before we expect it to.  See bug #87912
     {
       // Disconnecting triggers execution of destroy_notify_handler(), eiter immediately or later:
@@ -60,11 +60,11 @@ void* SignalProxyConnectionNode::notify(void* data)
       //   In that case, destroy_notify_handler() will be called after this whole function has returned.
       // Anyway. destroy_notify_handler() will always be called, so we leave that to do the deletion.
 
-      
+
       //Forget the connection:
       gulong connection_id = conn->connection_id_;
       conn->connection_id_ = 0;
-      
+
       g_signal_handler_disconnect(o, connection_id);
     }
   }
@@ -77,7 +77,7 @@ void SignalProxyConnectionNode::destroy_notify_handler(gpointer data, GClosure*)
 {
   //glib calls this when it has finished with a glib signal connection,
   //either when the emitting object dies, or when the connection has been disconnected.
-  
+
   // notification from gtk+.
   SignalProxyConnectionNode* conn = static_cast<SignalProxyConnectionNode*>(data);
 
index 67728f5..a83cc85 100644 (file)
@@ -151,10 +151,10 @@ private:
 
 //TODO: Remove this when we can break glibmm API.
 /** This is an intermediate type. When a method takes this, or returns this, you
- * should use a standard C++ container of your choice, such as std::list or 
+ * should use a standard C++ container of your choice, such as std::list or
  * std::vector.
  *
- * However, this is not used in new API. We now prefer to just use std::vector, 
+ * However, this is not used in new API. We now prefer to just use std::vector,
  * which is less flexibile, but makes the API clearer.
  * @ingroup ContHandles
  */
index 15243e5..4e2fb0a 100644 (file)
@@ -98,7 +98,7 @@ double strtod(const std::string&      str,
               std::string::size_type& end_index,
               std::string::size_type  start_index = 0);
 
-/** Converts a <tt>double</tt> to a string, using the <tt>'.'</tt> as decimal point.
+/** Converts a <tt>double</tt> to a string, using the @c '.' as decimal point.
  * @ingroup StringUtils
  * This functions generates enough precision that converting the string back
  * using Glib::Ascii::strtod() gives the same machine-number (on machines with
index 9cb0f2d..2c65c2e 100644 (file)
@@ -62,11 +62,21 @@ public:
   explicit ThreadPool(int max_threads = -1, bool exclusive = false);
   virtual ~ThreadPool();
 
+  //See http://bugzilla.gnome.org/show_bug.cgi?id=512348 about the sigc::trackable issue.
+  // TODO: At the next ABI break, consider changing const sigc::slot<void>& slot
+  // to const std::function<void()>& func, if it can be assumed that all supported
+  // compilers understand the C++11 template class std::function<>.
   /** Inserts @a slot into the list of tasks to be executed by the pool.
    * When the number of currently running threads is lower than the maximal
    * allowed number of threads, a new thread is started (or reused).  Otherwise
    * @a slot stays in the queue until a thread in this pool finishes its
    * previous task and processes @a slot.
+   *
+   * Because sigc::trackable is not thread-safe, if the slot represents a
+   * non-static class method and is created by sigc::mem_fun(), the class concerned
+   * should not derive from sigc::trackable. You can use, say, boost::bind() or,
+   * in C++11, std::bind() or a C++11 lambda expression instead of sigc::mem_fun().
+   *
    * @param slot A new task for the thread pool.
    * @throw Glib::ThreadError An error can only occur when a new thread
    * couldn't be created. In that case @a slot is simply appended to the
index f99083b..99b6597 100644 (file)
@@ -30,7 +30,7 @@ void TimeVal::assign_current_time()
 {
   g_get_current_time(this);
 }
+
 bool TimeVal::assign_from_iso8601(const Glib::ustring& iso_date)
 {
   return g_time_val_from_iso8601(iso_date.c_str(), this);
@@ -108,7 +108,7 @@ void TimeVal::subtract_milliseconds(long milliseconds)
 }
 
 void TimeVal::add_microseconds(long microseconds)
-{ 
+{
   g_time_val_add(this, microseconds);
 }
 
index 8897ee1..0e49dba 100644 (file)
@@ -43,11 +43,11 @@ struct TimeVal : public GTimeVal
   inline TimeVal& operator=(const GTimeVal& gtimeval);
 
   /** Assigns the current time to the TimeVal instance.
-   * Equivalent to the UNIX gettimeofday() function, but is portable and 
-   * works also on Win32. 
+   * Equivalent to the UNIX gettimeofday() function, but is portable and
+   * works also on Win32.
    */
   void assign_current_time();
-  
+
   /** Converts a string containing an ISO 8601 encoded date and time
    * to a Glib::TimeVal and puts it in TimeVal instance.
    * @param iso_date ISO 8601 encoded string.
@@ -178,17 +178,17 @@ TimeVal operator+(const TimeVal& lhs, const TimeVal& rhs)
 { return TimeVal(lhs) += rhs; }
 
 /** @relates Glib::TimeVal */
-inline 
+inline
 TimeVal operator+(const TimeVal& lhs, long seconds)
 { return TimeVal(lhs) += seconds; }
 
 /** @relates Glib::TimeVal */
-inline 
+inline
 TimeVal operator-(const TimeVal& lhs, const TimeVal& rhs)
 { return TimeVal(lhs) -= rhs; }
 
 /** @relates Glib::TimeVal */
-inline 
+inline
 TimeVal operator-(const TimeVal& lhs, long seconds)
 { return TimeVal(lhs) -= seconds; }
 
index 62b79d7..0d31d48 100644 (file)
@@ -219,7 +219,7 @@ namespace Glib
 {
 
 #ifndef GLIBMM_HAVE_ALLOWS_STATIC_INLINE_NPOS
-// Initialize static member here, 
+// Initialize static member here,
 // because the compiler did not allow us do it inline.
 const ustring::size_type ustring::npos = std::string::npos;
 #endif
index 1780383..f0fa217 100644 (file)
@@ -165,14 +165,14 @@ gunichar get_unichar_from_std_iterator(std::string::const_iterator pos) G_GNUC_P
  * @par
  * The stream I/O operators, that is operator<<() and operator>>(), perform
  * implicit charset conversion to/from the current locale.  If that's not
- * what you intented (e.g. when writing to a configuration file that should
+ * what you intended (e.g. when writing to a configuration file that should
  * always be UTF-8 encoded) use ustring::raw() to override this behaviour.
  * @par
  * If you're using std::ostringstream to build strings for display in the
  * user interface, you must convert the result back to UTF-8 as shown below:
  * @code
+ * std::locale::global(std::locale("")); // set the global locale to the user's preferred locale
  * std::ostringstream output;
- * output.imbue(std::locale("")); // use the user's locale for this stream
  * output << percentage << " % done";
  * label->set_text(Glib::locale_to_utf8(output.str()));
  * @endcode
index c089015..4873d68 100644 (file)
@@ -108,7 +108,7 @@ public:
 
 protected:
   void  set_boxed(const void* data);
-  void* get_boxed() const; // doesn't copy  
+  void* get_boxed() const; // doesn't copy
 };
 
 
@@ -235,7 +235,7 @@ public:
   CppType get() const           { return Glib::RefPtr<T>::cast_dynamic(get_object_copy()); }
 };
 
-//The SUN Forte Compiler has a problem with this: 
+//The SUN Forte Compiler has a problem with this:
 #ifdef GLIBMM_HAVE_DISAMBIGUOUS_CONST_TEMPLATE_SPECIALIZATIONS
 
 /** Partial specialization for RefPtr<> to const Glib::Object.
index 17db879..a63fc42 100644 (file)
@@ -88,7 +88,7 @@ private:
   inline CppType get_(void*) const;
 };
 
-  
+
 /** Generic value implementation for custom types.
  * @ingroup glibmmValue
  * Any type to be used with this template must implement:
index 15714e0..8011344 100644 (file)
@@ -276,7 +276,7 @@ public:
   typedef typename Tr::CppType        CppType;
   typedef typename Tr::CType          CType;
 
-  /** Constructs an ArrayKeeper holding @a array of size @array_size.
+  /** Constructs an ArrayKeeper holding @a array of size @a array_size.
    * @a ownership tells what should be destroyed with keeper destruction:
    * <ul>
    * <li>Glib::OWNERSHIP_NONE - keeper won't destroy data it holds.</li>
index cfc138e..4d9c71c 100644 (file)
@@ -48,7 +48,8 @@ namespace Glib
 
 void wrap_register_init()
 {
-  g_type_init();
+  // g_type_init() is deprecated as of 2.36.
+  // g_type_init();
 
   if(!Glib::quark_)
   {
@@ -131,7 +132,7 @@ static gboolean gtype_wraps_interface(GType implementer_type, GType interface_ty
   {
     found = (ifaces[n_ifaces] == interface_type);
   }
-      
+
   g_free (ifaces);
 
   return found;
@@ -155,7 +156,7 @@ Glib::ObjectBase* wrap_create_new_wrapper_for_interface(GObject* object, GType i
   {
     // Look up the wrap table index stored in the type's static data.
     // If a wrap_new() has been registered for the type then call it.
-    // But only if the type implements the interface, 
+    // But only if the type implements the interface,
     // so that the C++ instance is likely to inherit from the appropriate class too.
     //
     const gpointer idx = g_type_get_qdata(type, Glib::quark_);
index a65bcf6..5b07395 100644 (file)
@@ -73,8 +73,8 @@ TInterface* wrap_auto_interface(GObject* object, bool take_copy = false)
     pCppObject = wrap_create_new_wrapper_for_interface(object, TInterface::get_base_type());
   }
 
-  //If no exact wrapper was created, 
-  //create an instance of the interface, 
+  //If no exact wrapper was created,
+  //create an instance of the interface,
   //so we at least get the expected type:
   TInterface* result = 0;
   if(pCppObject)
index 6be1796..5895511 100644 (file)
@@ -50,7 +50,7 @@ namespace Glib
  * - less than operator
  * - greater than operator
  *
- * @newin2p24
+ * @newin{2,24}
  */
 template <typename K, typename V>
 class BalancedTree
@@ -227,7 +227,8 @@ public:
    * that have a larger key.
    *
    * @param search_func A function used to search the BalancedTree.
-   * @result the value corresponding to the found key, or %NULL if the key
+   * @param key The key to search for.
+   * @result The value corresponding to the found key, or <tt>0</tt> if the key
    * was not found.
    */
   V* search(const CompareFunc &search_func, const K& key)
@@ -249,7 +250,8 @@ public:
    * that have a larger key.
    *
    * @param search_func A function used to search the BalancedTree.
-   * @result the value corresponding to the found key, or %NULL if the key
+   * @param key The key to search for.
+   * @result The value corresponding to the found key, or <tt>0</tt> if the key
    * was not found.
    */
   const V* search(const CompareFunc &search_func, const K& key) const
index 424347a..1c81e61 100644 (file)
@@ -60,7 +60,7 @@ class Bytes
 public:
 
   static Glib::RefPtr<Glib::Bytes> create(gconstpointer data, gsize size);
-  
+
   _WRAP_METHOD(gconstpointer get_data(gsize& size) const, g_bytes_get_data)
   _WRAP_METHOD(gsize get_size() const,  g_bytes_get_size)
 
index 6a0a787..efa0d72 100644 (file)
@@ -36,16 +36,14 @@ gssize Checksum::get_length(ChecksumType checksum_type)
   return g_checksum_type_get_length((GChecksumType)checksum_type);
 }
 
-std::string Checksum::compute_checksum(ChecksumType type, const std::string& data)
+std::string Checksum::compute_checksum(ChecksumType checksum_type, const std::string& data)
 {
-  return Glib::convert_return_gchar_ptr_to_ustring(g_compute_checksum_for_string(((GChecksumType)type), data.c_str(), data.size()));
+  return Glib::convert_return_gchar_ptr_to_ustring(g_compute_checksum_for_string(((GChecksumType)checksum_type), data.c_str(), data.size()));
 }
 
 void Checksum::update(const std::string& data)
 {
-  g_checksum_update(gobj(), (const guchar*)data.c_str(), data.size()); 
+  g_checksum_update(gobj(), (const guchar*)data.c_str(), data.size());
 }
 
 } // Glib namespace
-
-
index 934c70a..ec1351f 100644 (file)
@@ -28,11 +28,11 @@ namespace Glib
 {
 
 /** Computes the checksum for data.
- * This is a generic API for computing checksums (or "digests") for a sequence of arbitrary bytes, 
+ * This is a generic API for computing checksums (or "digests") for a sequence of arbitrary bytes,
  * using various hashing algorithms like MD5, SHA-1 and SHA-256. Checksums are commonly used in various environments and specifications.
  *
- * glibmm supports incremental checksums by calling update() as long as there's data available and then using get_string() 
- * or get_digest() to compute the checksum and return it either as a string in hexadecimal form, or as a raw sequence of bytes. 
+ * glibmm supports incremental checksums by calling update() as long as there's data available and then using get_string()
+ * or get_digest() to compute the checksum and return it either as a string in hexadecimal form, or as a raw sequence of bytes.
  * To compute the checksum for binary blobs and NULL-terminated strings in one go, use the static compute_checksum() convenience functions().
  *
  * @newin{2,16}
@@ -52,8 +52,8 @@ public:
    * The hashing algorithm to be used by Checksum when performing the
    * digest of some data.
    *
-   * Note that the ChecksumType enumeration may be extended at a later 
-   * date to include new hashing algorithm types. 
+   * Note that the ChecksumType enumeration may be extended at a later
+   * date to include new hashing algorithm types.
    *
    * @newin{2,16}
    */
@@ -61,10 +61,10 @@ public:
 
 #m4 _CONVERSION(`ChecksumType', `GChecksumType', `(($2)$3)')
 
-  /** Creates a new Checksum, using the checksum algorithm @a checksum_type. 
+  /** Creates a new Checksum, using the checksum algorithm @a checksum_type.
    * If the checksum_type is not known, then operator bool() will return false.
    *
-   * @param type checksum type, one of defined above.
+   * @param checksum_type Checksum type, one of defined above.
    */
   explicit Checksum(ChecksumType checksum_type);
 
@@ -74,14 +74,14 @@ public:
   operator bool() const;
 
   _WRAP_METHOD(void reset(), g_checksum_reset)
-  
+
   //TODO: length should really be gssize, not gsize, when we can break ABI:
 #m4 _CONVERSION(`gsize',`gssize',`(gssize)($3)')
   _WRAP_METHOD(void update(const guchar* data, gsize length), g_checksum_update)
 
   /** Feeds data into an existing Checksum.
    * The checksum must still be open, that is get_string() or get_digest() must not have been called on the checksum.
-   * 
+   *
    * @param data Buffer used to compute the checksum
    */
   void update(const std::string& data);
@@ -90,16 +90,16 @@ public:
 
   _WRAP_METHOD(std::string get_string() const, g_checksum_get_string)
 
-  _WRAP_METHOD(static std::string compute_checksum(ChecksumType type, const guchar* data, gsize length), g_compute_checksum_for_data)
+
+  _WRAP_METHOD(static std::string compute_checksum(ChecksumType checksum_type, const guchar* data, gsize length), g_compute_checksum_for_data)
 
   /** Computes the checksum of a string.
-   * 
+   *
    * @param checksum_type A ChecksumType
    * @param str The string to compute the checksum of.
    * @result The checksum as a hexadecimal string.
    */
-  static std::string compute_checksum(ChecksumType type, const std::string& str);
+  static std::string compute_checksum(ChecksumType checksum_type, const std::string& str);
   _IGNORE(g_compute_checksum_for_string)
 
 
index 33ae828..295088b 100644 (file)
@@ -274,7 +274,7 @@ Glib::ustring filename_to_uri(const std::string& filename)
 Glib::ustring filename_display_basename(const std::string& filename)
 {
   char *const buf = g_filename_display_basename(filename.c_str());
-  
+
   return Glib::ustring(ScopedPtr<char>(buf).get());
 }
 
@@ -282,9 +282,8 @@ Glib::ustring filename_display_basename(const std::string& filename)
 Glib::ustring filename_display_name(const std::string& filename)
 {
   char *const buf = g_filename_display_name(filename.c_str());
-  
+
   return Glib::ustring(ScopedPtr<char>(buf).get());
 }
 
 } // namespace Glib
-
index 194b5d9..de5e12a 100644 (file)
@@ -247,11 +247,11 @@ Glib::ustring filename_to_uri(const std::string& filename);
  */
 Glib::ustring filename_display_basename(const std::string& filename);
 
-/** Converts a filename into a valid UTF-8 string. The 
- * conversion is not necessarily reversible, so you 
+/** Converts a filename into a valid UTF-8 string. The
+ * conversion is not necessarily reversible, so you
  * should keep the original around and use the return
  * value of this function only for display purposes.
- * Unlike g_filename_to_utf8(), the result is guaranteed 
+ * Unlike g_filename_to_utf8(), the result is guaranteed
  * to be non-empty even if the filename actually isn't in the GLib
  * file name encoding.
  *
index 4d4aaf2..167a412 100644 (file)
@@ -90,11 +90,39 @@ public:
   _WRAP_METHOD(DateTime add_minutes(int minutes) const, g_date_time_add_minutes)
   _WRAP_METHOD(DateTime add_seconds(double seconds) const, g_date_time_add_seconds)
   _WRAP_METHOD(DateTime add_full(int years, int months, int days, int hours, int minutes, double seconds) const, g_date_time_add_full)
+
+  /** Calculates the difference in time between @a *this and @a other.  The
+   * TimeSpan that is returned is effectively @a *this - @a other.
+   * 
+   * @newin{2,26}
+   * @param other The other DateTime.
+   * @return The difference between the two DateTime, as a time
+   * span expressed in microseconds.
+   */
   _WRAP_METHOD(TimeSpan difference(const DateTime& other) const, g_date_time_difference)
 
 #m4 _CONVERSION(`const DateTime&',`gconstpointer',`static_cast<gconstpointer>(&($3))')
+  /** A comparison function for DateTimes that is suitable
+   * as a CompareFunc.
+   * 
+   * @newin{2,26}
+   * @param other The DateTime to compare with.
+   * @return -1, 0 or 1 if @a *this is less than, equal to or greater
+   * than @a other.
+   */
   _WRAP_METHOD(int compare(const DateTime& other) const, g_date_time_compare)
+
   _WRAP_METHOD(guint hash() const, g_date_time_hash)
+
+  /** Checks to see if @a *this and @a other are equal.
+   * 
+   * Equal here means that they represent the same moment after converting
+   * them to the same time zone.
+   * 
+   * @newin{2,26}
+   * @param other The DateTime to compare with.
+   * @return <tt>true</tt> if @a *this and @a other are equal.
+   */
   _WRAP_METHOD(bool equal(const DateTime& other) const, g_date_time_equal)
 
   _WRAP_METHOD(void get_ymd(int& year, int& month, int& day) const, g_date_time_get_ymd)
index 66d463f..f665f32 100644 (file)
@@ -401,9 +401,9 @@ std::string file_get_contents(const std::string& filename);
  * file which is then renamed to the final name. Notes:
  * <ol>
  * <li>
- *    On Unix, if @a filename already exists hard links to @filename will break.
+ *    On Unix, if @a filename already exists hard links to @filename will break.
  *    Also since the file is recreated, existing permissions, access control
- *    lists, metadata etc. may be lost. If @filename is a symbolic link,
+ *    lists, metadata etc. may be lost. If @filename is a symbolic link,
  *    the link itself will be replaced, not the linked file.
  * </li>
  * <li>
@@ -414,7 +414,7 @@ std::string file_get_contents(const std::string& filename);
  * <li>
  *   On Windows there is no way to remove a file that is open to some
  *   process, or mapped into memory. Thus, this function will fail if
- *   @filename already exists and is open.
+ *   @filename already exists and is open.
  * </li>
  * </ol>
  *
index 64ad562..9f8daea 100644 (file)
 <root>
+<enum name="GBindingFlags">
+<description>
+Flags to be passed to g_object_bind_property() or
+g_object_bind_property_full().
+
+This enumeration can be extended at later date.
+
+Since: 2.26
+
+</description>
+<parameters>
+<parameter name="G_BINDING_DEFAULT">
+<parameter_description> The default binding; if the source property
+changes, the target property is updated with its value.
+</parameter_description>
+</parameter>
+<parameter name="G_BINDING_BIDIRECTIONAL">
+<parameter_description> Bidirectional binding; if either the
+property of the source or the property of the target changes,
+the other is updated.
+</parameter_description>
+</parameter>
+<parameter name="G_BINDING_SYNC_CREATE">
+<parameter_description> Synchronize the values of the source and
+target properties when creating the binding; the direction of
+the synchronization is always from the source to the target.
+</parameter_description>
+</parameter>
+<parameter name="G_BINDING_INVERT_BOOLEAN">
+<parameter_description> If the two properties being bound are
+booleans, setting one to %TRUE will result in the other being
+set to %FALSE and vice versa. This flag will only work for
+boolean properties, and cannot be used when passing custom
+transformation functions to g_object_bind_property_full().
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GBookmarkFileError">
+<description>
+Error codes returned by bookmark file parsing.
+
+</description>
+<parameters>
+<parameter name="G_BOOKMARK_FILE_ERROR_INVALID_URI">
+<parameter_description> URI was ill-formed
+</parameter_description>
+</parameter>
+<parameter name="G_BOOKMARK_FILE_ERROR_INVALID_VALUE">
+<parameter_description> a requested field was not found
+</parameter_description>
+</parameter>
+<parameter name="G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED">
+<parameter_description> a requested application did
+not register a bookmark
+</parameter_description>
+</parameter>
+<parameter name="G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND">
+<parameter_description> a requested URI was not found
+</parameter_description>
+</parameter>
+<parameter name="G_BOOKMARK_FILE_ERROR_READ">
+<parameter_description> document was ill formed
+</parameter_description>
+</parameter>
+<parameter name="G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING">
+<parameter_description> the text being parsed was
+in an unknown encoding
+</parameter_description>
+</parameter>
+<parameter name="G_BOOKMARK_FILE_ERROR_WRITE">
+<parameter_description> an error occurred while writing
+</parameter_description>
+</parameter>
+<parameter name="G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND">
+<parameter_description> requested file was not found
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GChecksumType">
+<description>
+The hashing algorithm to be used by #GChecksum when performing the
+digest of some data.
+
+Note that the #GChecksumType enumeration may be extended at a later
+date to include new hashing algorithm types.
+
+Since: 2.16
+
+</description>
+<parameters>
+<parameter name="G_CHECKSUM_MD5">
+<parameter_description> Use the MD5 hashing algorithm
+</parameter_description>
+</parameter>
+<parameter name="G_CHECKSUM_SHA1">
+<parameter_description> Use the SHA-1 hashing algorithm
+</parameter_description>
+</parameter>
+<parameter name="G_CHECKSUM_SHA256">
+<parameter_description> Use the SHA-256 hashing algorithm
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GConnectFlags">
+<description>
+The connection flags are used to specify the behaviour of a signal's 
+connection.
+
+</description>
+<parameters>
+<parameter name="G_CONNECT_AFTER">
+<parameter_description> whether the handler should be called before or after the 
+default handler of the signal.
+</parameter_description>
+</parameter>
+<parameter name="G_CONNECT_SWAPPED">
+<parameter_description> whether the instance and data should be swapped when
+calling the handler.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GConvertError">
+<description>
+Error codes returned by character set conversion routines.
+
+</description>
+<parameters>
+<parameter name="G_CONVERT_ERROR_NO_CONVERSION">
+<parameter_description> Conversion between the requested character
+sets is not supported.
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERT_ERROR_ILLEGAL_SEQUENCE">
+<parameter_description> Invalid byte sequence in conversion input.
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERT_ERROR_FAILED">
+<parameter_description> Conversion failed for some reason.
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERT_ERROR_PARTIAL_INPUT">
+<parameter_description> Partial character sequence at end of input.
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERT_ERROR_BAD_URI">
+<parameter_description> URI is invalid.
+</parameter_description>
+</parameter>
+<parameter name="G_CONVERT_ERROR_NOT_ABSOLUTE_PATH">
+<parameter_description> Pathname is not an absolute path.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDateDMY">
+<description>
+This enumeration isn't used in the API, but may be useful if you need
+to mark a number as a day, month, or year.
+
+</description>
+<parameters>
+<parameter name="G_DATE_DAY">
+<parameter_description> a day
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_MONTH">
+<parameter_description> a month
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_YEAR">
+<parameter_description> a year
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDateMonth">
+<description>
+Enumeration representing a month; values are #G_DATE_JANUARY,
+#G_DATE_FEBRUARY, etc. #G_DATE_BAD_MONTH is the invalid value.
+
+</description>
+<parameters>
+<parameter name="G_DATE_BAD_MONTH">
+<parameter_description> invalid value
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_JANUARY">
+<parameter_description> January
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_FEBRUARY">
+<parameter_description> February
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_MARCH">
+<parameter_description> March
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_APRIL">
+<parameter_description> April
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_MAY">
+<parameter_description> May
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_JUNE">
+<parameter_description> June
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_JULY">
+<parameter_description> July
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_AUGUST">
+<parameter_description> August
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_SEPTEMBER">
+<parameter_description> September
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_OCTOBER">
+<parameter_description> October
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_NOVEMBER">
+<parameter_description> November
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_DECEMBER">
+<parameter_description> December
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GDateWeekday">
+<description>
+Enumeration representing a day of the week; #G_DATE_MONDAY,
+#G_DATE_TUESDAY, etc. #G_DATE_BAD_WEEKDAY is an invalid weekday.
+
+</description>
+<parameters>
+<parameter name="G_DATE_BAD_WEEKDAY">
+<parameter_description> invalid value
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_MONDAY">
+<parameter_description> Monday
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_TUESDAY">
+<parameter_description> Tuesday
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_WEDNESDAY">
+<parameter_description> Wednesday
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_THURSDAY">
+<parameter_description> Thursday
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_FRIDAY">
+<parameter_description> Friday
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_SATURDAY">
+<parameter_description> Saturday
+</parameter_description>
+</parameter>
+<parameter name="G_DATE_SUNDAY">
+<parameter_description> Sunday
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GErrorType">
+<description>
+The possible errors, used in the @v_error field
+of #GTokenValue, when the token is a %G_TOKEN_ERROR.
+
+</description>
+<parameters>
+<parameter name="G_ERR_UNKNOWN">
+<parameter_description> unknown error
+</parameter_description>
+</parameter>
+<parameter name="G_ERR_UNEXP_EOF">
+<parameter_description> unexpected end of file
+</parameter_description>
+</parameter>
+<parameter name="G_ERR_UNEXP_EOF_IN_STRING">
+<parameter_description> unterminated string constant
+</parameter_description>
+</parameter>
+<parameter name="G_ERR_UNEXP_EOF_IN_COMMENT">
+<parameter_description> unterminated comment
+</parameter_description>
+</parameter>
+<parameter name="G_ERR_NON_DIGIT_IN_CONST">
+<parameter_description> non-digit character in a number
+</parameter_description>
+</parameter>
+<parameter name="G_ERR_DIGIT_RADIX">
+<parameter_description> digit beyond radix in a number
+</parameter_description>
+</parameter>
+<parameter name="G_ERR_FLOAT_RADIX">
+<parameter_description> non-decimal floating point number
+</parameter_description>
+</parameter>
+<parameter name="G_ERR_FLOAT_MALFORMED">
+<parameter_description> malformed floating point number
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileError">
+<description>
+Values corresponding to @errno codes returned from file operations
+on UNIX. Unlike @errno codes, GFileError values are available on
+all systems, even Windows. The exact meaning of each code depends
+on what sort of file operation you were performing; the UNIX
+documentation gives more details. The following error code descriptions
+come from the GNU C Library manual, and are under the copyright
+of that manual.
+
+It's not very portable to make detailed assumptions about exactly
+which errors will be returned from a given operation. Some errors
+don't occur on some systems, etc., sometimes there are subtle
+differences in when a system will report a given error, etc.
+
+</description>
+<parameters>
+<parameter name="G_FILE_ERROR_EXIST">
+<parameter_description> Operation not permitted; only the owner of
+the file (or other resource) or processes with special privileges
+can perform the operation.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_ISDIR">
+<parameter_description> File is a directory; you cannot open a directory
+for writing, or create or remove hard links to it.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_ACCES">
+<parameter_description> Permission denied; the file permissions do not
+allow the attempted operation.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NAMETOOLONG">
+<parameter_description> Filename too long.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NOENT">
+<parameter_description> No such file or directory. This is a &quot;file
+doesn't exist&quot; error for ordinary files that are referenced in
+contexts where they are expected to already exist.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NOTDIR">
+<parameter_description> A file that isn't a directory was specified when
+a directory is required.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NXIO">
+<parameter_description> No such device or address. The system tried to
+use the device represented by a file you specified, and it
+couldn't find the device. This can mean that the device file was
+installed incorrectly, or that the physical device is missing or
+not correctly attached to the computer.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NODEV">
+<parameter_description> The underlying file system of the specified file
+does not support memory mapping.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_ROFS">
+<parameter_description> The directory containing the new link can't be
+modified because it's on a read-only file system.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_TXTBSY">
+<parameter_description> Text file busy.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_FAULT">
+<parameter_description> You passed in a pointer to bad memory.
+(GLib won't reliably return this, don't pass in pointers to bad
+memory.)
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_LOOP">
+<parameter_description> Too many levels of symbolic links were encountered
+in looking up a file name. This often indicates a cycle of symbolic
+links.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NOSPC">
+<parameter_description> No space left on device; write operation on a
+file failed because the disk is full.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NOMEM">
+<parameter_description> No memory available. The system cannot allocate
+more virtual memory because its capacity is full.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_MFILE">
+<parameter_description> The current process has too many files open and
+can't open any more. Duplicate descriptors do count toward this
+limit.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NFILE">
+<parameter_description> There are too many distinct file openings in the
+entire system.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_BADF">
+<parameter_description> Bad file descriptor; for example, I/O on a
+descriptor that has been closed or reading from a descriptor open
+only for writing (or vice versa).
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_INVAL">
+<parameter_description> Invalid argument. This is used to indicate
+various kinds of problems with passing the wrong argument to a
+library function.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_PIPE">
+<parameter_description> Broken pipe; there is no process reading from the
+other end of a pipe. Every library function that returns this
+error code also generates a `SIGPIPE' signal; this signal
+terminates the program if not handled or blocked. Thus, your
+program will never actually see this code unless it has handled
+or blocked `SIGPIPE'.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_AGAIN">
+<parameter_description> Resource temporarily unavailable; the call might
+work if you try again later.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_INTR">
+<parameter_description> Interrupted function call; an asynchronous signal
+occurred and prevented completion of the call. When this
+happens, you should try the call again.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_IO">
+<parameter_description> Input/output error; usually used for physical read
+or write errors. i.e. the disk or other physical device hardware
+is returning errors.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_PERM">
+<parameter_description> Operation not permitted; only the owner of the
+file (or other resource) or processes with special privileges can
+perform the operation.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_NOSYS">
+<parameter_description> Function not implemented; this indicates that
+the system is missing some functionality.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_ERROR_FAILED">
+<parameter_description> Does not correspond to a UNIX error code; this
+is the standard &quot;failed for unspecified reason&quot; error code present
+in all #GError error code enumerations. Returned if no specific
+code applies.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFileTest">
+<description>
+A test to perform on a file using g_file_test().
+
+</description>
+<parameters>
+<parameter name="G_FILE_TEST_IS_REGULAR">
+<parameter_description> %TRUE if the file is a regular file
+(not a directory). Note that this test will also return %TRUE
+if the tested file is a symlink to a regular file.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TEST_IS_SYMLINK">
+<parameter_description> %TRUE if the file is a symlink.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TEST_IS_DIR">
+<parameter_description> %TRUE if the file is a directory.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TEST_IS_EXECUTABLE">
+<parameter_description> %TRUE if the file is executable.
+</parameter_description>
+</parameter>
+<parameter name="G_FILE_TEST_EXISTS">
+<parameter_description> %TRUE if the file exists. It may or may not
+be a regular file.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GFormatSizeFlags">
+<description>
+Flags to modify the format of the string returned by g_format_size_full().
+
+</description>
+<parameters>
+<parameter name="G_FORMAT_SIZE_DEFAULT">
+<parameter_description> behave the same as g_format_size()
+</parameter_description>
+</parameter>
+<parameter name="G_FORMAT_SIZE_LONG_FORMAT">
+<parameter_description> include the exact number of bytes as part
+of the returned string.  For example, &quot;45.6 kB (45,612 bytes)&quot;.
+</parameter_description>
+</parameter>
+<parameter name="G_FORMAT_SIZE_IEC_UNITS">
+<parameter_description> use IEC (base 1024) units with &quot;KiB&quot;-style
+suffixes. IEC units should only be used for reporting things with
+a strong &quot;power of 2&quot; basis, like RAM sizes or RAID stripe sizes.
+Network and storage sizes should be reported in the normal SI units.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GHookFlagMask">
+<description>
+Flags used internally in the #GHook implementation.
+
+</description>
+<parameters>
+<parameter name="G_HOOK_FLAG_ACTIVE">
+<parameter_description> set if the hook has not been destroyed
+</parameter_description>
+</parameter>
+<parameter name="G_HOOK_FLAG_IN_CALL">
+<parameter_description> set if the hook is currently being run
+</parameter_description>
+</parameter>
+<parameter name="G_HOOK_FLAG_MASK">
+<parameter_description> A mask covering all bits reserved for
+hook flags; see %G_HOOK_FLAG_USER_SHIFT
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOChannelError">
+<description>
+Error codes returned by #GIOChannel operations.
+
+</description>
+<parameters>
+<parameter name="G_IO_CHANNEL_ERROR_FBIG">
+<parameter_description> File too large.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_INVAL">
+<parameter_description> Invalid argument.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_IO">
+<parameter_description> IO error.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_ISDIR">
+<parameter_description> File is a directory.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_NOSPC">
+<parameter_description> No space left on device.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_NXIO">
+<parameter_description> No such device or address.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_OVERFLOW">
+<parameter_description> Value too large for defined datatype.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_PIPE">
+<parameter_description> Broken pipe.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_CHANNEL_ERROR_FAILED">
+<parameter_description> Some other error.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOCondition">
+<description>
+A bitwise combination representing a condition to watch for on an
+event source.
+
+</description>
+<parameters>
+<parameter name="G_IO_IN">
+<parameter_description> There is data to read.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_OUT">
+<parameter_description> Data can be written (without blocking).
+</parameter_description>
+</parameter>
+<parameter name="G_IO_PRI">
+<parameter_description> There is urgent data to read.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERR">
+<parameter_description> Error condition.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_HUP">
+<parameter_description> Hung up (the connection has been broken, usually for
+pipes and sockets).
+</parameter_description>
+</parameter>
+<parameter name="G_IO_NVAL">
+<parameter_description> Invalid request. The file descriptor is not open.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOError">
+<description>
+#GIOError is only used by the deprecated functions
+g_io_channel_read(), g_io_channel_write(), and g_io_channel_seek().
+
+</description>
+<parameters>
+<parameter name="G_IO_ERROR_NONE">
+<parameter_description> no error
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_AGAIN">
+<parameter_description> an EAGAIN error occurred
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_INVAL">
+<parameter_description> an EINVAL error occurred
+</parameter_description>
+</parameter>
+<parameter name="G_IO_ERROR_UNKNOWN">
+<parameter_description> another error occurred
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOFlags">
+<description>
+Specifies properties of a #GIOChannel. Some of the flags can only be
+read with g_io_channel_get_flags(), but not changed with
+g_io_channel_set_flags().
+
+</description>
+<parameters>
+<parameter name="G_IO_FLAG_APPEND">
+<parameter_description> turns on append mode, corresponds to &lt;literal&gt;O_APPEND&lt;/literal&gt;
+(see the documentation of the UNIX open()
+syscall).
+</parameter_description>
+</parameter>
+<parameter name="G_IO_FLAG_NONBLOCK">
+<parameter_description> turns on nonblocking mode, corresponds to
+&lt;literal&gt;O_NONBLOCK&lt;/literal&gt;/&lt;literal&gt;O_NDELAY&lt;/literal&gt;
+(see the documentation of the UNIX open() syscall).
+</parameter_description>
+</parameter>
+<parameter name="G_IO_FLAG_IS_READABLE">
+<parameter_description> indicates that the io channel is readable.
+This flag cannot be changed.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_FLAG_IS_WRITABLE">
+<parameter_description> indicates that the io channel is writable.
+This flag cannot be changed.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_FLAG_IS_SEEKABLE">
+<parameter_description> indicates that the io channel is seekable,
+i.e. that g_io_channel_seek_position() can
+be used on it.  This flag cannot be changed.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_FLAG_MASK">
+<parameter_description> the mask that specifies all the valid flags.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_FLAG_GET_MASK">
+<parameter_description> the mask of the flags that are returned from
+g_io_channel_get_flags().
+</parameter_description>
+</parameter>
+<parameter name="G_IO_FLAG_SET_MASK">
+<parameter_description> the mask of the flags that the user can modify
+with g_io_channel_set_flags().
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GIOStatus">
+<description>
+Stati returned by most of the #GIOFuncs functions.
+
+</description>
+<parameters>
+<parameter name="G_IO_STATUS_ERROR">
+<parameter_description> An error occurred.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_STATUS_NORMAL">
+<parameter_description> Success.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_STATUS_EOF">
+<parameter_description> End of file.
+</parameter_description>
+</parameter>
+<parameter name="G_IO_STATUS_AGAIN">
+<parameter_description> Resource temporarily unavailable.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GKeyFileError">
+<description>
+Error codes returned by key file parsing.
+
+</description>
+<parameters>
+<parameter name="G_KEY_FILE_ERROR_UNKNOWN_ENCODING">
+<parameter_description> the text being parsed was in
+an unknown encoding
+</parameter_description>
+</parameter>
+<parameter name="G_KEY_FILE_ERROR_PARSE">
+<parameter_description> document was ill-formed
+</parameter_description>
+</parameter>
+<parameter name="G_KEY_FILE_ERROR_NOT_FOUND">
+<parameter_description> the file was not found
+</parameter_description>
+</parameter>
+<parameter name="G_KEY_FILE_ERROR_KEY_NOT_FOUND">
+<parameter_description> a requested key was not found
+</parameter_description>
+</parameter>
+<parameter name="G_KEY_FILE_ERROR_GROUP_NOT_FOUND">
+<parameter_description> a requested group was not found
+</parameter_description>
+</parameter>
+<parameter name="G_KEY_FILE_ERROR_INVALID_VALUE">
+<parameter_description> a value could not be parsed
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GKeyFileFlags">
+<description>
+Flags which influence the parsing.
+
+</description>
+<parameters>
+<parameter name="G_KEY_FILE_NONE">
+<parameter_description> No flags, default behaviour
+</parameter_description>
+</parameter>
+<parameter name="G_KEY_FILE_KEEP_COMMENTS">
+<parameter_description> Use this flag if you plan to write the
+(possibly modified) contents of the key file back to a file;
+otherwise all comments will be lost when the key file is
+written back.
+</parameter_description>
+</parameter>
+<parameter name="G_KEY_FILE_KEEP_TRANSLATIONS">
+<parameter_description> Use this flag if you plan to write the
+(possibly modified) contents of the key file back to a file;
+otherwise only the translations for the current language will be
+written back.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GLogLevelFlags">
+<description>
+Flags specifying the level of log messages.
+
+It is possible to change how GLib treats messages of the various
+levels using g_log_set_handler() and g_log_set_fatal_mask().
+
+</description>
+<parameters>
+<parameter name="G_LOG_FLAG_RECURSION">
+<parameter_description> internal flag
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_FLAG_FATAL">
+<parameter_description> internal flag
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_LEVEL_ERROR">
+<parameter_description> log level for errors, see g_error().
+This level is also used for messages produced by g_assert().
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_LEVEL_CRITICAL">
+<parameter_description> log level for critical messages, see g_critical().
+This level is also used for messages produced by g_return_if_fail()
+and g_return_val_if_fail().
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_LEVEL_WARNING">
+<parameter_description> log level for warnings, see g_warning()
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_LEVEL_MESSAGE">
+<parameter_description> log level for messages, see g_message()
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_LEVEL_INFO">
+<parameter_description> log level for informational messages
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_LEVEL_DEBUG">
+<parameter_description> log level for debug messages, see g_debug()
+</parameter_description>
+</parameter>
+<parameter name="G_LOG_LEVEL_MASK">
+<parameter_description> a mask including all log levels
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GMarkupCollectType">
+<description>
+A mixed enumerated type and flags field. You must specify one type
+(string, strdup, boolean, tristate).  Additionally, you may  optionally
+bitwise OR the type with the flag %G_MARKUP_COLLECT_OPTIONAL.
+
+It is likely that this enum will be extended in the future to
+support other types.
+
+</description>
+<parameters>
+<parameter name="G_MARKUP_COLLECT_INVALID">
+<parameter_description> used to terminate the list of attributes
+to collect
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_COLLECT_STRING">
+<parameter_description> collect the string pointer directly from
+the attribute_values[] array. Expects a parameter of type (const
+char **). If %G_MARKUP_COLLECT_OPTIONAL is specified and the
+attribute isn't present then the pointer will be set to %NULL
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_COLLECT_STRDUP">
+<parameter_description> as with %G_MARKUP_COLLECT_STRING, but
+expects a parameter of type (char **) and g_strdup()s the
+returned pointer. The pointer must be freed with g_free()
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_COLLECT_BOOLEAN">
+<parameter_description> expects a parameter of type (gboolean *)
+and parses the attribute value as a boolean. Sets %FALSE if the
+attribute isn't present. Valid boolean values consist of
+(case-insensitive) &quot;false&quot;, &quot;f&quot;, &quot;no&quot;, &quot;n&quot;, &quot;0&quot; and &quot;true&quot;, &quot;t&quot;,
+&quot;yes&quot;, &quot;y&quot;, &quot;1&quot;
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_COLLECT_TRISTATE">
+<parameter_description> as with %G_MARKUP_COLLECT_BOOLEAN, but
+in the case of a missing attribute a value is set that compares
+equal to neither %FALSE nor %TRUE G_MARKUP_COLLECT_OPTIONAL is
+implied
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_COLLECT_OPTIONAL">
+<parameter_description> can be bitwise ORed with the other fields.
+If present, allows the attribute not to appear. A default value
+is set depending on what value type is used
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GMarkupError">
+<description>
+Error codes returned by markup parsing.
+
+</description>
+<parameters>
+<parameter name="G_MARKUP_ERROR_BAD_UTF8">
+<parameter_description> text being parsed was not valid UTF-8
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_ERROR_EMPTY">
+<parameter_description> document contained nothing, or only whitespace
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_ERROR_PARSE">
+<parameter_description> document was ill-formed
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_ERROR_UNKNOWN_ELEMENT">
+<parameter_description> error should be set by #GMarkupParser
+functions; element wasn't known
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE">
+<parameter_description> error should be set by #GMarkupParser
+functions; attribute wasn't known
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_ERROR_INVALID_CONTENT">
+<parameter_description> error should be set by #GMarkupParser
+functions; content was invalid
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_ERROR_MISSING_ATTRIBUTE">
+<parameter_description> error should be set by #GMarkupParser
+functions; a required attribute was missing
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GMarkupParseFlags">
+<description>
+Flags that affect the behaviour of the parser.
+
+</description>
+<parameters>
+<parameter name="G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG">
+<parameter_description> flag you should not use
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_TREAT_CDATA_AS_TEXT">
+<parameter_description> When this flag is set, CDATA marked
+sections are not passed literally to the @passthrough function of
+the parser. Instead, the content of the section (without the
+&lt;literal&gt;&lt;![CDATA[&lt;/literal&gt; and &lt;literal&gt;]]&gt;&lt;/literal&gt;) is
+passed to the @text function. This flag was added in GLib 2.12
+</parameter_description>
+</parameter>
+<parameter name="G_MARKUP_PREFIX_ERROR_POSITION">
+<parameter_description> Normally errors caught by GMarkup
+itself have line/column information prefixed to them to let the
+caller know the location of the error. When this flag is set the
+location information is also prefixed to errors generated by the
+#GMarkupParser implementation functions
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GModuleFlags">
+<description>
+Flags passed to g_module_open().
+Note that these flags are not supported on all platforms.
+
+</description>
+<parameters>
+<parameter name="G_MODULE_BIND_LAZY">
+<parameter_description> specifies that symbols are only resolved when
+needed. The default action is to bind all symbols when the module
+is loaded.
+</parameter_description>
+</parameter>
+<parameter name="G_MODULE_BIND_LOCAL">
+<parameter_description> specifies that symbols in the module should
+not be added to the global name space. The default action on most
+platforms is to place symbols in the module in the global name space,
+which may cause conflicts with existing symbols.
+</parameter_description>
+</parameter>
+<parameter name="G_MODULE_BIND_MASK">
+<parameter_description> mask for all flags.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GNormalizeMode">
+<description>
+Defines how a Unicode string is transformed in a canonical
+form, standardizing such issues as whether a character with
+an accent is represented as a base character and combining
+accent or as a single precomposed character. Unicode strings
+should generally be normalized before comparing them.
+
+</description>
+<parameters>
+<parameter name="G_NORMALIZE_DEFAULT">
+<parameter_description> standardize differences that do not affect the
+text content, such as the above-mentioned accent representation
+</parameter_description>
+</parameter>
+<parameter name="G_NORMALIZE_NFD">
+<parameter_description> another name for %G_NORMALIZE_DEFAULT
+</parameter_description>
+</parameter>
+<parameter name="G_NORMALIZE_DEFAULT_COMPOSE">
+<parameter_description> like %G_NORMALIZE_DEFAULT, but with
+composed forms rather than a maximally decomposed form
+</parameter_description>
+</parameter>
+<parameter name="G_NORMALIZE_NFC">
+<parameter_description> another name for %G_NORMALIZE_DEFAULT_COMPOSE
+</parameter_description>
+</parameter>
+<parameter name="G_NORMALIZE_ALL">
+<parameter_description> beyond %G_NORMALIZE_DEFAULT also standardize the
+&quot;compatibility&quot; characters in Unicode, such as SUPERSCRIPT THREE
+to the standard forms (in this case DIGIT THREE). Formatting
+information may be lost but for most text operations such
+characters should be considered the same
+</parameter_description>
+</parameter>
+<parameter name="G_NORMALIZE_NFKD">
+<parameter_description> another name for %G_NORMALIZE_ALL
+</parameter_description>
+</parameter>
+<parameter name="G_NORMALIZE_ALL_COMPOSE">
+<parameter_description> like %G_NORMALIZE_ALL, but with composed
+forms rather than a maximally decomposed form
+</parameter_description>
+</parameter>
+<parameter name="G_NORMALIZE_NFKC">
+<parameter_description> another name for %G_NORMALIZE_ALL_COMPOSE
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
 <signal name="GObject::notify">
 <description>
-The notify signal is emitted on an object when one of its
-properties has been changed. Note that getting this signal
-doesn't guarantee that the value of the property has actually
-changed, it may also be emitted when the setter for the property
-is called to reinstate the previous value.
+The notify signal is emitted on an object when one of its
+properties has been changed. Note that getting this signal
+doesn't guarantee that the value of the property has actually
+changed, it may also be emitted when the setter for the property
+is called to reinstate the previous value.
+
+This signal is typically used to obtain change notification for a
+single property, by specifying the property name as a detail in the
+g_signal_connect() call, like this:
+|[
+g_signal_connect (text_view-&gt;buffer, &quot;notify::paste-target-list&quot;,
+G_CALLBACK (gtk_text_view_target_list_notify),
+text_view)
+]|
+It is important to note that you must use
+&lt;link linkend=&quot;canonical-parameter-name&quot;&gt;canonical&lt;/link&gt; parameter names as
+detail strings for the notify signal.
+
+</description>
+<parameters>
+<parameter name="gobject">
+<parameter_description> the object which received the signal.
+</parameter_description>
+</parameter>
+<parameter name="pspec">
+<parameter_description> the #GParamSpec of the property which changed.
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</signal>
+
+<enum name="GOnceStatus">
+<description>
+The possible statuses of a one-time initialization function
+controlled by a #GOnce struct.
+
+Since: 2.4
+
+</description>
+<parameters>
+<parameter name="G_ONCE_STATUS_NOTCALLED">
+<parameter_description> the function has not been called yet.
+</parameter_description>
+</parameter>
+<parameter name="G_ONCE_STATUS_PROGRESS">
+<parameter_description> the function call is currently in progress.
+</parameter_description>
+</parameter>
+<parameter name="G_ONCE_STATUS_READY">
+<parameter_description> the function has been called.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GOptionArg">
+<description>
+The #GOptionArg enum values determine which type of extra argument the
+options expect to find. If an option expects an extra argument, it
+can be specified in several ways; with a short option:
+&lt;option&gt;-x arg&lt;/option&gt;, with a long option: &lt;option&gt;--name arg&lt;/option&gt;
+or combined in a single argument: &lt;option&gt;--name=arg&lt;/option&gt;.
+
+</description>
+<parameters>
+<parameter name="G_OPTION_ARG_NONE">
+<parameter_description> No extra argument. This is useful for simple flags.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_STRING">
+<parameter_description> The option takes a string argument.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_INT">
+<parameter_description> The option takes an integer argument.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_CALLBACK">
+<parameter_description> The option provides a callback to parse the
+extra argument.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_FILENAME">
+<parameter_description> The option takes a filename as argument.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_STRING_ARRAY">
+<parameter_description> The option takes a string argument, multiple
+uses of the option are collected into an array of strings.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_FILENAME_ARRAY">
+<parameter_description> The option takes a filename as argument, 
+multiple uses of the option are collected into an array of strings.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_DOUBLE">
+<parameter_description> The option takes a double argument. The argument
+can be formatted either for the user's locale or for the &quot;C&quot; locale. Since 2.12
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ARG_INT64">
+<parameter_description> The option takes a 64-bit integer. Like %G_OPTION_ARG_INT
+but for larger numbers. The number can be in decimal base, or in hexadecimal
+(when prefixed with &lt;literal&gt;0x&lt;/literal&gt;, for example, &lt;literal&gt;0xffffffff&lt;/literal&gt;).
+Since 2.12
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GOptionError">
+<description>
+Error codes returned by option parsing.
+
+</description>
+<parameters>
+<parameter name="G_OPTION_ERROR_UNKNOWN_OPTION">
+<parameter_description> An option was not known to the parser.
+This error will only be reported, if the parser hasn't been instructed
+to ignore unknown options, see g_option_context_set_ignore_unknown_options().
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ERROR_BAD_VALUE">
+<parameter_description> A value couldn't be parsed.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_ERROR_FAILED">
+<parameter_description> A #GOptionArgFunc callback failed.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GOptionFlags">
+<description>
+Flags which modify individual options.
+
+</description>
+<parameters>
+<parameter name="G_OPTION_FLAG_HIDDEN">
+<parameter_description> The option doesn't appear in &lt;option&gt;--help&lt;/option&gt;
+output.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_FLAG_IN_MAIN">
+<parameter_description> The option appears in the main section of the
+&lt;option&gt;--help&lt;/option&gt; output, even if it is defined in a group.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_FLAG_REVERSE">
+<parameter_description> For options of the %G_OPTION_ARG_NONE kind, this flag
+indicates that the sense of the option is reversed.
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_FLAG_NO_ARG">
+<parameter_description> For options of the %G_OPTION_ARG_CALLBACK kind,
+this flag indicates that the callback does not take any argument
+(like a %G_OPTION_ARG_NONE option). Since 2.8
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_FLAG_FILENAME">
+<parameter_description> For options of the %G_OPTION_ARG_CALLBACK
+kind, this flag indicates that the argument should be passed to the
+callback in the GLib filename encoding rather than UTF-8. Since 2.8
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_FLAG_OPTIONAL_ARG">
+<parameter_description> For options of the %G_OPTION_ARG_CALLBACK 
+kind, this flag indicates that the argument supply is optional. If no argument
+is given then data of %GOptionParseFunc will be set to NULL. Since 2.8
+</parameter_description>
+</parameter>
+<parameter name="G_OPTION_FLAG_NOALIAS">
+<parameter_description> This flag turns off the automatic conflict resolution
+which prefixes long option names with &lt;literal&gt;groupname-&lt;/literal&gt; if 
+there is a conflict. This option should only be used in situations where
+aliasing is necessary to model some legacy commandline interface. It is
+not safe to use this option, unless all option groups are under your 
+direct control. Since 2.8.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GParamFlags">
+<description>
+Through the #GParamFlags flag values, certain aspects of parameters
+can be configured.
+
+</description>
+<parameters>
+<parameter name="G_PARAM_READABLE">
+<parameter_description> the parameter is readable
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_WRITABLE">
+<parameter_description> the parameter is writable
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_CONSTRUCT">
+<parameter_description> the parameter will be set upon object construction
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_CONSTRUCT_ONLY">
+<parameter_description> the parameter will only be set upon object construction
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_LAX_VALIDATION">
+<parameter_description> upon parameter conversion (see g_param_value_convert())
+strict validation is not required
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_STATIC_NAME">
+<parameter_description> the string used as name when constructing the 
+parameter is guaranteed to remain valid and
+unmodified for the lifetime of the parameter. 
+Since 2.8
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_STATIC_NICK">
+<parameter_description> the string used as nick when constructing the
+parameter is guaranteed to remain valid and
+unmmodified for the lifetime of the parameter.
+Since 2.8
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_STATIC_BLURB">
+<parameter_description> the string used as blurb when constructing the 
+parameter is guaranteed to remain valid and 
+unmodified for the lifetime of the parameter. 
+Since 2.8
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_PRIVATE">
+<parameter_description> internal
+</parameter_description>
+</parameter>
+<parameter name="G_PARAM_DEPRECATED">
+<parameter_description> the parameter is deprecated and will be removed
+in a future version. A warning will be generated if it is used
+while running with G_ENABLE_DIAGNOSTIC=1.
+Since 2.26
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GRegexCompileFlags">
+<description>
+Flags specifying compile-time options.
+
+Since: 2.14
+
+</description>
+<parameters>
+<parameter name="G_REGEX_CASELESS">
+<parameter_description> Letters in the pattern match both upper- and
+lowercase letters. This option can be changed within a pattern
+by a &quot;(?i)&quot; option setting.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MULTILINE">
+<parameter_description> By default, GRegex treats the strings as consisting
+of a single line of characters (even if it actually contains
+newlines). The &quot;start of line&quot; metacharacter (&quot;^&quot;) matches only
+at the start of the string, while the &quot;end of line&quot; metacharacter
+(&quot;$&quot;) matches only at the end of the string, or before a terminating
+newline (unless #G_REGEX_DOLLAR_ENDONLY is set). When
+#G_REGEX_MULTILINE is set, the &quot;start of line&quot; and &quot;end of line&quot;
+constructs match immediately following or immediately before any
+newline in the string, respectively, as well as at the very start
+and end. This can be changed within a pattern by a &quot;(?m)&quot; option
+setting.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_DOTALL">
+<parameter_description> A dot metacharater (&quot;.&quot;) in the pattern matches all
+characters, including newlines. Without it, newlines are excluded.
+This option can be changed within a pattern by a (&quot;?s&quot;) option setting.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_EXTENDED">
+<parameter_description> Whitespace data characters in the pattern are
+totally ignored except when escaped or inside a character class.
+Whitespace does not include the VT character (code 11). In addition,
+characters between an unescaped &quot;#&quot; outside a character class and
+the next newline character, inclusive, are also ignored. This can
+be changed within a pattern by a &quot;(?x)&quot; option setting.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ANCHORED">
+<parameter_description> The pattern is forced to be &quot;anchored&quot;, that is,
+it is constrained to match only at the first matching point in the
+string that is being searched. This effect can also be achieved by
+appropriate constructs in the pattern itself such as the &quot;^&quot;
+metacharater.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_DOLLAR_ENDONLY">
+<parameter_description> A dollar metacharacter (&quot;$&quot;) in the pattern
+matches only at the end of the string. Without this option, a
+dollar also matches immediately before the final character if
+it is a newline (but not before any other newlines). This option
+is ignored if #G_REGEX_MULTILINE is set.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_UNGREEDY">
+<parameter_description> Inverts the &quot;greediness&quot; of the quantifiers so that
+they are not greedy by default, but become greedy if followed by &quot;?&quot;.
+It can also be set by a &quot;(?U)&quot; option setting within the pattern.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_RAW">
+<parameter_description> Usually strings must be valid UTF-8 strings, using this
+flag they are considered as a raw sequence of bytes.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_NO_AUTO_CAPTURE">
+<parameter_description> Disables the use of numbered capturing
+parentheses in the pattern. Any opening parenthesis that is not
+followed by &quot;?&quot; behaves as if it were followed by &quot;?:&quot; but named
+parentheses can still be used for capturing (and they acquire numbers
+in the usual way).
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_OPTIMIZE">
+<parameter_description> Optimize the regular expression. If the pattern will
+be used many times, then it may be worth the effort to optimize it
+to improve the speed of matches.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_FIRSTLINE">
+<parameter_description> Limits an unanchored pattern to match before (or at) the
+first newline. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_DUPNAMES">
+<parameter_description> Names used to identify capturing subpatterns need not
+be unique. This can be helpful for certain types of pattern when it
+is known that only one instance of the named subpattern can ever be
+matched.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_NEWLINE_CR">
+<parameter_description> Usually any newline character or character sequence is
+recognized. If this option is set, the only recognized newline character
+is '\r'.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_NEWLINE_LF">
+<parameter_description> Usually any newline character or character sequence is
+recognized. If this option is set, the only recognized newline character
+is '\n'.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_NEWLINE_CRLF">
+<parameter_description> Usually any newline character or character sequence is
+recognized. If this option is set, the only recognized newline character
+sequence is '\r\n'.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_NEWLINE_ANYCRLF">
+<parameter_description> Usually any newline character or character sequence
+is recognized. If this option is set, the only recognized newline character
+sequences are '\r', '\n', and '\r\n'. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_BSR_ANYCRLF">
+<parameter_description> Usually any newline character or character sequence
+is recognised. If this option is set, then &quot;\R&quot; only recognizes the newline
+characters '\r', '\n' and '\r\n'. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_JAVASCRIPT_COMPAT">
+<parameter_description> Changes behaviour so that it is compatible with
+JavaScript rather than PCRE. Since: 2.34
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GRegexError">
+<description>
+Error codes returned by regular expressions functions.
+
+Since: 2.14
+
+</description>
+<parameters>
+<parameter name="G_REGEX_ERROR_COMPILE">
+<parameter_description> Compilation of the regular expression failed.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_OPTIMIZE">
+<parameter_description> Optimization of the regular expression failed.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_REPLACE">
+<parameter_description> Replacement failed due to an ill-formed replacement
+string.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MATCH">
+<parameter_description> The match process failed.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INTERNAL">
+<parameter_description> Internal error of the regular expression engine.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_STRAY_BACKSLASH">
+<parameter_description> &quot;\\&quot; at end of pattern. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MISSING_CONTROL_CHAR">
+<parameter_description> &quot;\\c&quot; at end of pattern. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNRECOGNIZED_ESCAPE">
+<parameter_description> Unrecognized character follows &quot;\\&quot;.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER">
+<parameter_description> Numbers out of order in &quot;{}&quot;
+quantifier. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_QUANTIFIER_TOO_BIG">
+<parameter_description> Number too big in &quot;{}&quot; quantifier.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS">
+<parameter_description> Missing terminating &quot;]&quot; for
+character class. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS">
+<parameter_description> Invalid escape sequence
+in character class. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_RANGE_OUT_OF_ORDER">
+<parameter_description> Range out of order in character class.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_NOTHING_TO_REPEAT">
+<parameter_description> Nothing to repeat. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNRECOGNIZED_CHARACTER">
+<parameter_description> Unrecognized character after &quot;(?&quot;,
+&quot;(?&lt;&quot; or &quot;(?P&quot;. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS">
+<parameter_description> POSIX named classes are
+supported only within a class. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNMATCHED_PARENTHESIS">
+<parameter_description> Missing terminating &quot;)&quot; or &quot;)&quot;
+without opening &quot;(&quot;. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE">
+<parameter_description> Reference to non-existent
+subpattern. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNTERMINATED_COMMENT">
+<parameter_description> Missing terminating &quot;)&quot; after comment.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_EXPRESSION_TOO_LARGE">
+<parameter_description> Regular expression too large.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MEMORY_ERROR">
+<parameter_description> Failed to get memory. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND">
+<parameter_description> Lookbehind assertion is not
+fixed length. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MALFORMED_CONDITION">
+<parameter_description> Malformed number or name after &quot;(?(&quot;.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES">
+<parameter_description> Conditional group contains
+more than two branches. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_ASSERTION_EXPECTED">
+<parameter_description> Assertion expected after &quot;(?(&quot;.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME">
+<parameter_description> Unknown POSIX class name.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED">
+<parameter_description> POSIX collating
+elements are not supported. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_HEX_CODE_TOO_LARGE">
+<parameter_description> Character value in &quot;\\x{...}&quot; sequence
+is too large. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INVALID_CONDITION">
+<parameter_description> Invalid condition &quot;(?(0)&quot;. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND">
+<parameter_description> \\C not allowed in
+lookbehind assertion. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INFINITE_LOOP">
+<parameter_description> Recursive call could loop indefinitely.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR">
+<parameter_description> Missing terminator
+in subpattern name. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME">
+<parameter_description> Two named subpatterns have
+the same name. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MALFORMED_PROPERTY">
+<parameter_description> Malformed &quot;\\P&quot; or &quot;\\p&quot; sequence.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNKNOWN_PROPERTY">
+<parameter_description> Unknown property name after &quot;\\P&quot; or
+&quot;\\p&quot;. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG">
+<parameter_description> Subpattern name is too long
+(maximum 32 characters). Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_TOO_MANY_SUBPATTERNS">
+<parameter_description> Too many named subpatterns (maximum
+10,000). Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INVALID_OCTAL_VALUE">
+<parameter_description> Octal value is greater than &quot;\\377&quot;.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE">
+<parameter_description> &quot;DEFINE&quot; group contains more
+than one branch. Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_DEFINE_REPETION">
+<parameter_description> Repeating a &quot;DEFINE&quot; group is not allowed.
+This error is never raised. Since: 2.16 Deprecated: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS">
+<parameter_description> Inconsistent newline options.
+Since 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MISSING_BACK_REFERENCE">
+<parameter_description> &quot;\\g&quot; is not followed by a braced,
+angle-bracketed, or quoted name or number, or by a plain number. Since: 2.16
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INVALID_RELATIVE_REFERENCE">
+<parameter_description> relative reference must not be zero. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_FORBIDDEN">
+<parameter_description> the backtracing
+control verb used does not allow an argument. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_UNKNOWN_BACKTRACKING_CONTROL_VERB">
+<parameter_description> unknown backtracing 
+control verb. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_NUMBER_TOO_BIG">
+<parameter_description> number is too big in escape sequence. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MISSING_SUBPATTERN_NAME">
+<parameter_description> Missing subpattern name. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MISSING_DIGIT">
+<parameter_description> Missing digit. Since 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INVALID_DATA_CHARACTER">
+<parameter_description> In JavaScript compatibility mode,
+&quot;[&quot; is an invalid data character. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_EXTRA_SUBPATTERN_NAME">
+<parameter_description> different names for subpatterns of the 
+same number are not allowed. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_BACKTRACKING_CONTROL_VERB_ARGUMENT_REQUIRED">
+<parameter_description> the backtracing control
+verb requires an argument. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_INVALID_CONTROL_CHAR">
+<parameter_description> &quot;\\c&quot; must be followed by an ASCII 
+character. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_MISSING_NAME">
+<parameter_description> &quot;\\k&quot; is not followed by a braced, angle-bracketed, or 
+quoted name. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_NOT_SUPPORTED_IN_CLASS">
+<parameter_description> &quot;\\N&quot; is not supported in a class. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_TOO_MANY_FORWARD_REFERENCES">
+<parameter_description> too many forward references. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_NAME_TOO_LONG">
+<parameter_description> the name is too long in &quot;(*MARK)&quot;, &quot;(*PRUNE)&quot;, 
+&quot;(*SKIP)&quot;, or &quot;(*THEN)&quot;. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_ERROR_CHARACTER_VALUE_TOO_LARGE">
+<parameter_description> the character value in the \\u sequence is
+too large. Since: 2.34
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GRegexMatchFlags">
+<description>
+Flags specifying match-time options.
+
+Since: 2.14
+
+</description>
+<parameters>
+<parameter name="G_REGEX_MATCH_ANCHORED">
+<parameter_description> The pattern is forced to be &quot;anchored&quot;, that is,
+it is constrained to match only at the first matching point in the
+string that is being searched. This effect can also be achieved by
+appropriate constructs in the pattern itself such as the &quot;^&quot;
+metacharater.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NOTBOL">
+<parameter_description> Specifies that first character of the string is
+not the beginning of a line, so the circumflex metacharacter should
+not match before it. Setting this without #G_REGEX_MULTILINE (at
+compile time) causes circumflex never to match. This option affects
+only the behaviour of the circumflex metacharacter, it does not
+affect &quot;\A&quot;.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NOTEOL">
+<parameter_description> Specifies that the end of the subject string is
+not the end of a line, so the dollar metacharacter should not match
+it nor (except in multiline mode) a newline immediately before it.
+Setting this without #G_REGEX_MULTILINE (at compile time) causes
+dollar never to match. This option affects only the behaviour of
+the dollar metacharacter, it does not affect &quot;\Z&quot; or &quot;\z&quot;.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NOTEMPTY">
+<parameter_description> An empty string is not considered to be a valid
+match if this option is set. If there are alternatives in the pattern,
+they are tried. If all the alternatives match the empty string, the
+entire match fails. For example, if the pattern &quot;a?b?&quot; is applied to
+a string not beginning with &quot;a&quot; or &quot;b&quot;, it matches the empty string
+at the start of the string. With this flag set, this match is not
+valid, so GRegex searches further into the string for occurrences
+of &quot;a&quot; or &quot;b&quot;.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_PARTIAL">
+<parameter_description> Turns on the partial matching feature, for more
+documentation on partial matching see g_match_info_is_partial_match().
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NEWLINE_CR">
+<parameter_description> Overrides the newline definition set when
+creating a new #GRegex, setting the '\r' character as line terminator.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NEWLINE_LF">
+<parameter_description> Overrides the newline definition set when
+creating a new #GRegex, setting the '\n' character as line terminator.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NEWLINE_CRLF">
+<parameter_description> Overrides the newline definition set when
+creating a new #GRegex, setting the '\r\n' characters sequence as line terminator.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NEWLINE_ANY">
+<parameter_description> Overrides the newline definition set when
+creating a new #GRegex, any Unicode newline sequence
+is recognised as a newline. These are '\r', '\n' and '\rn', and the
+single characters U+000B LINE TABULATION, U+000C FORM FEED (FF),
+U+0085 NEXT LINE (NEL), U+2028 LINE SEPARATOR and
+U+2029 PARAGRAPH SEPARATOR.
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NEWLINE_ANYCRLF">
+<parameter_description> Overrides the newline definition set when
+creating a new #GRegex; any '\r', '\n', or '\r\n' character sequence
+is recognized as a newline. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_BSR_ANYCRLF">
+<parameter_description> Overrides the newline definition for &quot;\R&quot; set when
+creating a new #GRegex; only '\r', '\n', or '\r\n' character sequences
+are recognized as a newline by &quot;\R&quot;. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_BSR_ANY">
+<parameter_description> Overrides the newline definition for &quot;\R&quot; set when
+creating a new #GRegex; any Unicode newline character or character sequence
+are recognized as a newline by &quot;\R&quot;. These are '\r', '\n' and '\rn', and the
+single characters U+000B LINE TABULATION, U+000C FORM FEED (FF),
+U+0085 NEXT LINE (NEL), U+2028 LINE SEPARATOR and
+U+2029 PARAGRAPH SEPARATOR. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_PARTIAL_SOFT">
+<parameter_description> An alias for #G_REGEX_MATCH_PARTIAL. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_PARTIAL_HARD">
+<parameter_description> Turns on the partial matching feature. In contrast to
+to #G_REGEX_MATCH_PARTIAL_SOFT, this stops matching as soon as a partial match
+is found, without continuing to search for a possible complete match. See
+see g_match_info_is_partial_match() for more information. Since: 2.34
+</parameter_description>
+</parameter>
+<parameter name="G_REGEX_MATCH_NOTEMPTY_ATSTART">
+<parameter_description> Like #G_REGEX_MATCH_NOTEMPTY, but only applied to
+the start of the matched string. For anchored
+patterns this can only happen for pattern containing &quot;\K&quot;. Since: 2.34
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSeekType">
+<description>
+An enumeration specifying the base position for a
+g_io_channel_seek_position() operation.
+
+</description>
+<parameters>
+<parameter name="G_SEEK_CUR">
+<parameter_description> the current position in the file.
+</parameter_description>
+</parameter>
+<parameter name="G_SEEK_SET">
+<parameter_description> the start of the file.
+</parameter_description>
+</parameter>
+<parameter name="G_SEEK_END">
+<parameter_description> the end of the file.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GShellError">
+<description>
+Error codes returned by shell functions.
+
+</description>
+<parameters>
+<parameter name="G_SHELL_ERROR_BAD_QUOTING">
+<parameter_description> Mismatched or otherwise mangled quoting.
+</parameter_description>
+</parameter>
+<parameter name="G_SHELL_ERROR_EMPTY_STRING">
+<parameter_description> String to be parsed was empty.
+</parameter_description>
+</parameter>
+<parameter name="G_SHELL_ERROR_FAILED">
+<parameter_description> Some other error.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSignalFlags">
+<description>
+The signal flags are used to specify a signal's behaviour, the overall
+signal description outlines how especially the RUN flags control the
+stages of a signal emission.
+
+</description>
+<parameters>
+<parameter name="G_SIGNAL_RUN_FIRST">
+<parameter_description> Invoke the object method handler in the first emission stage.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_RUN_LAST">
+<parameter_description> Invoke the object method handler in the third emission stage.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_RUN_CLEANUP">
+<parameter_description> Invoke the object method handler in the last emission stage.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_NO_RECURSE">
+<parameter_description> Signals being emitted for an object while currently being in
+emission for this very object will not be emitted recursively,
+but instead cause the first emission to be restarted.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_DETAILED">
+<parameter_description> This signal supports &quot;::detail&quot; appendices to the signal name
+upon handler connections and emissions.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_ACTION">
+<parameter_description> Action signals are signals that may freely be emitted on alive
+objects from user code via g_signal_emit() and friends, without
+the need of being embedded into extra code that performs pre or
+post emission adjustments on the object. They can also be thought
+of as object methods which can be called generically by 
+third-party code.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_NO_HOOKS">
+<parameter_description> No emissions hooks are supported for this signal.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_MUST_COLLECT">
+<parameter_description> Varargs signal emission will always collect the
+arguments, even if there are no signal handlers connected.  Since 2.30.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_DEPRECATED">
+<parameter_description> The signal is deprecated and will be removed
+in a future version. A warning will be generated if it is connected while
+running with G_ENABLE_DIAGNOSTIC=1.  Since 2.32.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSignalMatchType">
+<description>
+The match types specify what g_signal_handlers_block_matched(),
+g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched()
+match signals by.
+
+</description>
+<parameters>
+<parameter name="G_SIGNAL_MATCH_ID">
+<parameter_description> The signal id must be equal.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_MATCH_DETAIL">
+<parameter_description> The signal detail be equal.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_MATCH_CLOSURE">
+<parameter_description> The closure must be the same.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_MATCH_FUNC">
+<parameter_description> The C closure callback must be the same.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_MATCH_DATA">
+<parameter_description> The closure data must be the same.
+</parameter_description>
+</parameter>
+<parameter name="G_SIGNAL_MATCH_UNBLOCKED">
+<parameter_description> Only unblocked signals may matched.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSpawnError">
+<description>
+Error codes returned by spawning processes.
+
+</description>
+<parameters>
+<parameter name="G_SPAWN_ERROR_FORK">
+<parameter_description> Fork failed due to lack of memory.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_READ">
+<parameter_description> Read or select on pipes failed.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_CHDIR">
+<parameter_description> Changing to working directory failed.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_ACCES">
+<parameter_description> execv() returned &lt;literal&gt;EACCES&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_PERM">
+<parameter_description> execv() returned &lt;literal&gt;EPERM&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_TOO_BIG">
+<parameter_description> execv() returned &lt;literal&gt;E2BIG&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_2BIG">
+<parameter_description> deprecated alias for %G_SPAWN_ERROR_TOO_BIG
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_NOEXEC">
+<parameter_description> execv() returned &lt;literal&gt;ENOEXEC&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_NAMETOOLONG">
+<parameter_description> execv() returned &lt;literal&gt;ENAMETOOLONG&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_NOENT">
+<parameter_description> execv() returned &lt;literal&gt;ENOENT&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_NOMEM">
+<parameter_description> execv() returned &lt;literal&gt;ENOMEM&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_NOTDIR">
+<parameter_description> execv() returned &lt;literal&gt;ENOTDIR&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_LOOP">
+<parameter_description> execv() returned &lt;literal&gt;ELOOP&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_TXTBUSY">
+<parameter_description> execv() returned &lt;literal&gt;ETXTBUSY&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_IO">
+<parameter_description> execv() returned &lt;literal&gt;EIO&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_NFILE">
+<parameter_description> execv() returned &lt;literal&gt;ENFILE&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_MFILE">
+<parameter_description> execv() returned &lt;literal&gt;EMFILE&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_INVAL">
+<parameter_description> execv() returned &lt;literal&gt;EINVAL&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_ISDIR">
+<parameter_description> execv() returned &lt;literal&gt;EISDIR&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_LIBBAD">
+<parameter_description> execv() returned &lt;literal&gt;ELIBBAD&lt;/literal&gt;
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_ERROR_FAILED">
+<parameter_description> Some other fatal failure,
+&lt;literal&gt;error-&gt;message&lt;/literal&gt; should explain.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GSpawnFlags">
+<description>
+Flags passed to g_spawn_sync(), g_spawn_async() and g_spawn_async_with_pipes().
+
+</description>
+<parameters>
+<parameter name="G_SPAWN_LEAVE_DESCRIPTORS_OPEN">
+<parameter_description> the parent's open file descriptors will be
+inherited by the child; otherwise all descriptors except stdin/stdout/stderr
+will be closed before calling exec() in the child.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_DO_NOT_REAP_CHILD">
+<parameter_description> the child will not be automatically reaped; you
+must use g_child_watch_add() yourself (or call waitpid()
+or handle &lt;literal&gt;SIGCHLD&lt;/literal&gt; yourself), or the child will become a zombie.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_SEARCH_PATH">
+<parameter_description> &lt;literal&gt;argv[0]&lt;/literal&gt; need not be an absolute path,
+it will be looked for in the user's &lt;envar&gt;PATH&lt;/envar&gt;.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_STDOUT_TO_DEV_NULL">
+<parameter_description> the child's standard output will be discarded,
+instead of going to the same location as the parent's standard output.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_STDERR_TO_DEV_NULL">
+<parameter_description> the child's standard error will be discarded.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_CHILD_INHERITS_STDIN">
+<parameter_description> the child will inherit the parent's standard
+input (by default, the child's standard input is attached to
+&lt;filename&gt;/dev/null&lt;/filename&gt;).
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_FILE_AND_ARGV_ZERO">
+<parameter_description> the first element of &lt;literal&gt;argv&lt;/literal&gt; is
+the file to execute, while the remaining elements are the actual argument
+vector to pass to the file. Normally g_spawn_async_with_pipes() uses
+&lt;literal&gt;argv[0]&lt;/literal&gt; as the file to execute, and passes all of
+&lt;literal&gt;argv&lt;/literal&gt; to the child.
+</parameter_description>
+</parameter>
+<parameter name="G_SPAWN_SEARCH_PATH_FROM_ENVP">
+<parameter_description> if &lt;literal&gt;argv[0]&lt;/literal&gt; is not an abolute path,
+it will be looked for in the &lt;envar&gt;PATH&lt;/envar&gt; from the passed child 
+environment. Since: 2.34
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTestTrapFlags">
+<description>
+Test traps are guards around forked tests.
+These flags determine what traps to set.
+
+</description>
+<parameters>
+<parameter name="G_TEST_TRAP_SILENCE_STDOUT">
+<parameter_description> Redirect stdout of the test child to
+&lt;filename&gt;/dev/null&lt;/filename&gt; so it cannot be observed on the
+console during test runs. The actual output is still captured
+though to allow later tests with g_test_trap_assert_stdout().
+</parameter_description>
+</parameter>
+<parameter name="G_TEST_TRAP_SILENCE_STDERR">
+<parameter_description> Redirect stderr of the test child to
+&lt;filename&gt;/dev/null&lt;/filename&gt; so it cannot be observed on the
+console during test runs. The actual output is still captured
+though to allow later tests with g_test_trap_assert_stderr().
+</parameter_description>
+</parameter>
+<parameter name="G_TEST_TRAP_INHERIT_STDIN">
+<parameter_description> If this flag is given, stdin of the
+forked child process is shared with stdin of its parent process.
+It is redirected to &lt;filename&gt;/dev/null&lt;/filename&gt; otherwise.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GThreadError">
+<description>
+Possible errors of thread related functions.
+
+</description>
+<parameters>
+<parameter name="G_THREAD_ERROR_AGAIN">
+<parameter_description> a thread couldn't be created due to resource
+shortage. Try again later.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GThreadPriority">
+<description>
+Deprecated:2.32: Thread priorities no longer have any effect.
+
+</description>
+<parameters>
+<parameter name="G_THREAD_PRIORITY_LOW">
+<parameter_description> a priority lower than normal
+</parameter_description>
+</parameter>
+<parameter name="G_THREAD_PRIORITY_NORMAL">
+<parameter_description> the default priority
+</parameter_description>
+</parameter>
+<parameter name="G_THREAD_PRIORITY_HIGH">
+<parameter_description> a priority higher than normal
+</parameter_description>
+</parameter>
+<parameter name="G_THREAD_PRIORITY_URGENT">
+<parameter_description> the highest priority
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTimeType">
+<description>
+Disambiguates a given time in two ways.
+
+First, specifies if the given time is in universal or local time.
+
+Second, if the time is in local time, specifies if it is local
+standard time or local daylight time.  This is important for the case
+where the same local time occurs twice (during daylight savings time
+transitions, for example).
+
+</description>
+<parameters>
+<parameter name="G_TIME_TYPE_STANDARD">
+<parameter_description> the time is in local standard time
+</parameter_description>
+</parameter>
+<parameter name="G_TIME_TYPE_DAYLIGHT">
+<parameter_description> the time is in local daylight time
+</parameter_description>
+</parameter>
+<parameter name="G_TIME_TYPE_UNIVERSAL">
+<parameter_description> the time is in UTC
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTokenType">
+<description>
+The possible types of token returned from each
+g_scanner_get_next_token() call.
+
+</description>
+<parameters>
+<parameter name="G_TOKEN_EOF">
+<parameter_description> the end of the file
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_LEFT_PAREN">
+<parameter_description> a '(' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_LEFT_CURLY">
+<parameter_description> a '{' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_LEFT_BRACE">
+<parameter_description> a '[' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_RIGHT_CURLY">
+<parameter_description> a '}' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_RIGHT_PAREN">
+<parameter_description> a ')' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_RIGHT_BRACE">
+<parameter_description> a ']' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_EQUAL_SIGN">
+<parameter_description> a '=' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_COMMA">
+<parameter_description> a ',' character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_NONE">
+<parameter_description> not a token
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_ERROR">
+<parameter_description> an error occurred
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_CHAR">
+<parameter_description> a character
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_BINARY">
+<parameter_description> a binary integer
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_OCTAL">
+<parameter_description> an octal integer
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_INT">
+<parameter_description> an integer
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_HEX">
+<parameter_description> a hex integer
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_FLOAT">
+<parameter_description> a floating point number
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_STRING">
+<parameter_description> a string
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_SYMBOL">
+<parameter_description> a symbol
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_IDENTIFIER">
+<parameter_description> an identifier
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_IDENTIFIER_NULL">
+<parameter_description> a null identifier
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_COMMENT_SINGLE">
+<parameter_description> one line comment
+</parameter_description>
+</parameter>
+<parameter name="G_TOKEN_COMMENT_MULTI">
+<parameter_description> multi line comment
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTraverseFlags">
+<description>
+Specifies which nodes are visited during several of the tree
+functions, including g_node_traverse() and g_node_find().
+
+</description>
+<parameters>
+<parameter name="G_TRAVERSE_LEAVES">
+<parameter_description> only leaf nodes should be visited. This name has
+been introduced in 2.6, for older version use
+%G_TRAVERSE_LEAFS.
+</parameter_description>
+</parameter>
+<parameter name="G_TRAVERSE_NON_LEAVES">
+<parameter_description> only non-leaf nodes should be visited. This
+name has been introduced in 2.6, for older
+version use %G_TRAVERSE_NON_LEAFS.
+</parameter_description>
+</parameter>
+<parameter name="G_TRAVERSE_ALL">
+<parameter_description> all nodes should be visited.
+</parameter_description>
+</parameter>
+<parameter name="G_TRAVERSE_MASK">
+<parameter_description> a mask of all traverse flags.
+</parameter_description>
+</parameter>
+<parameter name="G_TRAVERSE_LEAFS">
+<parameter_description> identical to %G_TRAVERSE_LEAVES.
+</parameter_description>
+</parameter>
+<parameter name="G_TRAVERSE_NON_LEAFS">
+<parameter_description> identical to %G_TRAVERSE_NON_LEAVES.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTraverseType">
+<description>
+Specifies the type of traveral performed by g_tree_traverse(),
+g_node_traverse() and g_node_find().
+
+</description>
+<parameters>
+<parameter name="G_IN_ORDER">
+<parameter_description> vists a node's left child first, then the node itself,
+then its right child. This is the one to use if you
+want the output sorted according to the compare
+function.
+</parameter_description>
+</parameter>
+<parameter name="G_PRE_ORDER">
+<parameter_description> visits a node, then its children.
+</parameter_description>
+</parameter>
+<parameter name="G_POST_ORDER">
+<parameter_description> visits the node's children, then the node itself.
+</parameter_description>
+</parameter>
+<parameter name="G_LEVEL_ORDER">
+<parameter_description> is not implemented for &lt;link
+linkend=&quot;glib-Balanced-Binary-Trees&quot;&gt;Balanced Binary
+Trees&lt;/link&gt;.  For &lt;link
+linkend=&quot;glib-N-ary-Trees&quot;&gt;N-ary Trees&lt;/link&gt;, it
+vists the root node first, then its children, then
+its grandchildren, and so on. Note that this is less
+efficient than the other orders.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTypeDebugFlags">
+<description>
+These flags used to be passed to g_type_init_with_debug_flags() which
+is now deprecated.
+
+If you need to enable debugging features, use the GOBJECT_DEBUG
+environment variable.
+
+Deprecated: 2.36: g_type_init() is now done automatically
+
+</description>
+<parameters>
+<parameter name="G_TYPE_DEBUG_NONE">
+<parameter_description> Print no messages.
+</parameter_description>
+</parameter>
+<parameter name="G_TYPE_DEBUG_OBJECTS">
+<parameter_description> Print messages about object bookkeeping.
+</parameter_description>
+</parameter>
+<parameter name="G_TYPE_DEBUG_SIGNALS">
+<parameter_description> Print messages about signal emissions.
+</parameter_description>
+</parameter>
+<parameter name="G_TYPE_DEBUG_MASK">
+<parameter_description> Mask covering all debug flags.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTypeFlags">
+<description>
+Bit masks used to check or determine characteristics of a type.
+
+</description>
+<parameters>
+<parameter name="G_TYPE_FLAG_ABSTRACT">
+<parameter_description> Indicates an abstract type. No instances can be
+created for an abstract type.
+</parameter_description>
+</parameter>
+<parameter name="G_TYPE_FLAG_VALUE_ABSTRACT">
+<parameter_description> Indicates an abstract value type, i.e. a type
+that introduces a value table, but can't be used for
+g_value_init().
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GTypeFundamentalFlags">
+<description>
+Bit masks used to check or determine specific characteristics of a
+fundamental type.
+
+</description>
+<parameters>
+<parameter name="G_TYPE_FLAG_CLASSED">
+<parameter_description> Indicates a classed type.
+</parameter_description>
+</parameter>
+<parameter name="G_TYPE_FLAG_INSTANTIATABLE">
+<parameter_description> Indicates an instantiable type (implies classed).
+</parameter_description>
+</parameter>
+<parameter name="G_TYPE_FLAG_DERIVABLE">
+<parameter_description> Indicates a flat derivable type.
+</parameter_description>
+</parameter>
+<parameter name="G_TYPE_FLAG_DEEP_DERIVABLE">
+<parameter_description> Indicates a deep derivable type (implies derivable).
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GUnicodeBreakType">
+<description>
+These are the possible line break classifications.
+
+Since new unicode versions may add new types here, applications should be ready 
+to handle unknown values. They may be regarded as %G_UNICODE_BREAK_UNKNOWN.
+
+See &lt;ulink url=&quot;http://www.unicode.org/unicode/reports/tr14/&quot;&gt;http://www.unicode.org/unicode/reports/tr14/&lt;/ulink&gt;.
+
+</description>
+<parameters>
+<parameter name="G_UNICODE_BREAK_MANDATORY">
+<parameter_description> Mandatory Break (BK)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_CARRIAGE_RETURN">
+<parameter_description> Carriage Return (CR)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_LINE_FEED">
+<parameter_description> Line Feed (LF)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_COMBINING_MARK">
+<parameter_description> Attached Characters and Combining Marks (CM)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_SURROGATE">
+<parameter_description> Surrogates (SG)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_ZERO_WIDTH_SPACE">
+<parameter_description> Zero Width Space (ZW)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_INSEPARABLE">
+<parameter_description> Inseparable (IN)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_NON_BREAKING_GLUE">
+<parameter_description> Non-breaking (&quot;Glue&quot;) (GL)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_CONTINGENT">
+<parameter_description> Contingent Break Opportunity (CB)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_SPACE">
+<parameter_description> Space (SP)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_AFTER">
+<parameter_description> Break Opportunity After (BA)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_BEFORE">
+<parameter_description> Break Opportunity Before (BB)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_BEFORE_AND_AFTER">
+<parameter_description> Break Opportunity Before and After (B2)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_HYPHEN">
+<parameter_description> Hyphen (HY)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_NON_STARTER">
+<parameter_description> Nonstarter (NS)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_OPEN_PUNCTUATION">
+<parameter_description> Opening Punctuation (OP)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_CLOSE_PUNCTUATION">
+<parameter_description> Closing Punctuation (CL)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_QUOTATION">
+<parameter_description> Ambiguous Quotation (QU)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_EXCLAMATION">
+<parameter_description> Exclamation/Interrogation (EX)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_IDEOGRAPHIC">
+<parameter_description> Ideographic (ID)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_NUMERIC">
+<parameter_description> Numeric (NU)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_INFIX_SEPARATOR">
+<parameter_description> Infix Separator (Numeric) (IS)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_SYMBOL">
+<parameter_description> Symbols Allowing Break After (SY)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_ALPHABETIC">
+<parameter_description> Ordinary Alphabetic and Symbol Characters (AL)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_PREFIX">
+<parameter_description> Prefix (Numeric) (PR)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_POSTFIX">
+<parameter_description> Postfix (Numeric) (PO)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_COMPLEX_CONTEXT">
+<parameter_description> Complex Content Dependent (South East Asian) (SA)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_AMBIGUOUS">
+<parameter_description> Ambiguous (Alphabetic or Ideographic) (AI)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_UNKNOWN">
+<parameter_description> Unknown (XX)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_NEXT_LINE">
+<parameter_description> Next Line (NL)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_WORD_JOINER">
+<parameter_description> Word Joiner (WJ)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_HANGUL_L_JAMO">
+<parameter_description> Hangul L Jamo (JL)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_HANGUL_V_JAMO">
+<parameter_description> Hangul V Jamo (JV)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_HANGUL_T_JAMO">
+<parameter_description> Hangul T Jamo (JT)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_HANGUL_LV_SYLLABLE">
+<parameter_description> Hangul LV Syllable (H2)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE">
+<parameter_description> Hangul LVT Syllable (H3)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_CLOSE_PARANTHESIS">
+<parameter_description> Closing Parenthesis (CP). Since 2.28
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER">
+<parameter_description> Conditional Japanese Starter (CJ). Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_HEBREW_LETTER">
+<parameter_description> Hebrew Letter (HL). Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_BREAK_REGIONAL_INDICATOR">
+<parameter_description> Regional Indicator (RI). Since: 2.36
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GUnicodeScript">
+<description>
+The #GUnicodeScript enumeration identifies different writing
+systems. The values correspond to the names as defined in the
+Unicode standard. The enumeration has been added in GLib 2.14,
+and is interchangeable with #PangoScript.
+
+Note that new types may be added in the future. Applications
+should be ready to handle unknown values.
+See &lt;ulink
+url=&quot;http://www.unicode.org/reports/tr24/&quot;&gt;Unicode Standard Annex
+#24: Script names&lt;/ulink&gt;.
+
+</description>
+<parameters>
+<parameter name="G_UNICODE_SCRIPT_INVALID_CODE">
+<parameter_description>
+a value never returned from g_unichar_get_script()
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_COMMON">
+<parameter_description>     a character used by multiple different scripts
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_INHERITED">
+<parameter_description>  a mark glyph that takes its script from the
+i                             base glyph to which it is attached
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_ARABIC">
+<parameter_description>     Arabic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_ARMENIAN">
+<parameter_description>   Armenian
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BENGALI">
+<parameter_description>    Bengali
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BOPOMOFO">
+<parameter_description>   Bopomofo
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CHEROKEE">
+<parameter_description>   Cherokee
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_COPTIC">
+<parameter_description>     Coptic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CYRILLIC">
+<parameter_description>   Cyrillic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_DESERET">
+<parameter_description>    Deseret
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_DEVANAGARI">
+<parameter_description> Devanagari
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_ETHIOPIC">
+<parameter_description>   Ethiopic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_GEORGIAN">
+<parameter_description>   Georgian
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_GOTHIC">
+<parameter_description>     Gothic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_GREEK">
+<parameter_description>      Greek
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_GUJARATI">
+<parameter_description>   Gujarati
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_GURMUKHI">
+<parameter_description>   Gurmukhi
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_HAN">
+<parameter_description>        Han
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_HANGUL">
+<parameter_description>     Hangul
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_HEBREW">
+<parameter_description>     Hebrew
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_HIRAGANA">
+<parameter_description>   Hiragana
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_KANNADA">
+<parameter_description>    Kannada
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_KATAKANA">
+<parameter_description>   Katakana
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_KHMER">
+<parameter_description>      Khmer
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LAO">
+<parameter_description>        Lao
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LATIN">
+<parameter_description>      Latin
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MALAYALAM">
+<parameter_description>  Malayalam
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MONGOLIAN">
+<parameter_description>  Mongolian
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MYANMAR">
+<parameter_description>    Myanmar
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_OGHAM">
+<parameter_description>      Ogham
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_OLD_ITALIC">
+<parameter_description> Old Italic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_ORIYA">
+<parameter_description>      Oriya
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_RUNIC">
+<parameter_description>      Runic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SINHALA">
+<parameter_description>    Sinhala
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SYRIAC">
+<parameter_description>     Syriac
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TAMIL">
+<parameter_description>      Tamil
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TELUGU">
+<parameter_description>     Telugu
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_THAANA">
+<parameter_description>     Thaana
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_THAI">
+<parameter_description>       Thai
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TIBETAN">
+<parameter_description>    Tibetan
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL">
+<parameter_description>
+Canadian Aboriginal
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_YI">
+<parameter_description>         Yi
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TAGALOG">
+<parameter_description>    Tagalog
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_HANUNOO">
+<parameter_description>    Hanunoo
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BUHID">
+<parameter_description>      Buhid
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TAGBANWA">
+<parameter_description>   Tagbanwa
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BRAILLE">
+<parameter_description>    Braille
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CYPRIOT">
+<parameter_description>    Cypriot
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LIMBU">
+<parameter_description>      Limbu
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_OSMANYA">
+<parameter_description>    Osmanya
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SHAVIAN">
+<parameter_description>    Shavian
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LINEAR_B">
+<parameter_description>   Linear B
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TAI_LE">
+<parameter_description>     Tai Le
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_UGARITIC">
+<parameter_description>   Ugaritic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_NEW_TAI_LUE">
+<parameter_description>
+New Tai Lue
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BUGINESE">
+<parameter_description>   Buginese
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_GLAGOLITIC">
+<parameter_description> Glagolitic
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TIFINAGH">
+<parameter_description>   Tifinagh
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SYLOTI_NAGRI">
+<parameter_description>
+Syloti Nagri
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_OLD_PERSIAN">
+<parameter_description>
+Old Persian
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_KHAROSHTHI">
+<parameter_description> Kharoshthi
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_UNKNOWN">
+<parameter_description>    an unassigned code point
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BALINESE">
+<parameter_description>   Balinese
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CUNEIFORM">
+<parameter_description>  Cuneiform
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_PHOENICIAN">
+<parameter_description> Phoenician
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_PHAGS_PA">
+<parameter_description>   Phags-pa
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_NKO">
+<parameter_description>        N'Ko
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_KAYAH_LI">
+<parameter_description>   Kayah Li. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LEPCHA">
+<parameter_description>     Lepcha. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_REJANG">
+<parameter_description>     Rejang. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SUNDANESE">
+<parameter_description>  Sundanese. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SAURASHTRA">
+<parameter_description> Saurashtra. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CHAM">
+<parameter_description>       Cham. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_OL_CHIKI">
+<parameter_description>   Ol Chiki. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_VAI">
+<parameter_description>        Vai. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CARIAN">
+<parameter_description>     Carian. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LYCIAN">
+<parameter_description>     Lycian. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LYDIAN">
+<parameter_description>     Lydian. Since 2.16.3
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_AVESTAN">
+<parameter_description>    Avestan. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BAMUM">
+<parameter_description>      Bamum. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS">
+<parameter_description>
+Egyptian Hieroglpyhs. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_IMPERIAL_ARAMAIC">
+<parameter_description>
+Imperial Aramaic. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_INSCRIPTIONAL_PAHLAVI">
+<parameter_description>
+Inscriptional Pahlavi. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_INSCRIPTIONAL_PARTHIAN">
+<parameter_description>
+Inscriptional Parthian. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_JAVANESE">
+<parameter_description>   Javanese. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_KAITHI">
+<parameter_description>     Kaithi. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_LISU">
+<parameter_description>       Lisu. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MEETEI_MAYEK">
+<parameter_description>
+Meetei Mayek. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_OLD_SOUTH_ARABIAN">
+<parameter_description>
+Old South Arabian. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_OLD_TURKIC">
+<parameter_description> Old Turkic. Since 2.28
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SAMARITAN">
+<parameter_description>  Samaritan. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TAI_THAM">
+<parameter_description>   Tai Tham. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TAI_VIET">
+<parameter_description>   Tai Viet. Since 2.26
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BATAK">
+<parameter_description>      Batak. Since 2.28
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_BRAHMI">
+<parameter_description>     Brahmi. Since 2.28
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MANDAIC">
+<parameter_description>    Mandaic. Since 2.28
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_CHAKMA">
+<parameter_description>               Chakma. Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MEROITIC_CURSIVE">
+<parameter_description>     Meroitic Cursive. Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MEROITIC_HIEROGLYPHS">
+<parameter_description> Meroitic Hieroglyphs. Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_MIAO">
+<parameter_description>                 Miao. Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SHARADA">
+<parameter_description>              Sharada. Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_SORA_SOMPENG">
+<parameter_description>         Sora Sompeng. Since: 2.32
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SCRIPT_TAKRI">
+<parameter_description>                Takri. Since: 2.32
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GUnicodeType">
+<description>
+These are the possible character classifications from the
+Unicode specification.
+See &lt;ulink url=&quot;http://www.unicode.org/Public/UNIDATA/UnicodeData.html&quot;&gt;http://www.unicode.org/Public/UNIDATA/UnicodeData.html&lt;/ulink&gt;.
 
-This signal is typically used to obtain change notification for a
-single property, by specifying the property name as a detail in the
-g_signal_connect() call, like this:
-|[
-g_signal_connect (text_view-&gt;buffer, &quot;notify::paste-target-list&quot;,
-G_CALLBACK (gtk_text_view_target_list_notify),
-text_view)
-]|
-It is important to note that you must use
-&lt;link linkend=&quot;canonical-parameter-name&quot;&gt;canonical&lt;/link&gt; parameter names as
-detail strings for the notify signal.
+</description>
+<parameters>
+<parameter name="G_UNICODE_CONTROL">
+<parameter_description> General category &quot;Other, Control&quot; (Cc)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_FORMAT">
+<parameter_description> General category &quot;Other, Format&quot; (Cf)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_UNASSIGNED">
+<parameter_description> General category &quot;Other, Not Assigned&quot; (Cn)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_PRIVATE_USE">
+<parameter_description> General category &quot;Other, Private Use&quot; (Co)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SURROGATE">
+<parameter_description> General category &quot;Other, Surrogate&quot; (Cs)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_LOWERCASE_LETTER">
+<parameter_description> General category &quot;Letter, Lowercase&quot; (Ll)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_MODIFIER_LETTER">
+<parameter_description> General category &quot;Letter, Modifier&quot; (Lm)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_OTHER_LETTER">
+<parameter_description> General category &quot;Letter, Other&quot; (Lo)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_TITLECASE_LETTER">
+<parameter_description> General category &quot;Letter, Titlecase&quot; (Lt)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_UPPERCASE_LETTER">
+<parameter_description> General category &quot;Letter, Uppercase&quot; (Lu)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SPACING_MARK">
+<parameter_description> General category &quot;Mark, Spacing&quot; (Mc)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_ENCLOSING_MARK">
+<parameter_description> General category &quot;Mark, Enclosing&quot; (Me)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_NON_SPACING_MARK">
+<parameter_description> General category &quot;Mark, Nonspacing&quot; (Mn)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_DECIMAL_NUMBER">
+<parameter_description> General category &quot;Number, Decimal Digit&quot; (Nd)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_LETTER_NUMBER">
+<parameter_description> General category &quot;Number, Letter&quot; (Nl)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_OTHER_NUMBER">
+<parameter_description> General category &quot;Number, Other&quot; (No)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_CONNECT_PUNCTUATION">
+<parameter_description> General category &quot;Punctuation, Connector&quot; (Pc)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_DASH_PUNCTUATION">
+<parameter_description> General category &quot;Punctuation, Dash&quot; (Pd)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_CLOSE_PUNCTUATION">
+<parameter_description> General category &quot;Punctuation, Close&quot; (Pe)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_FINAL_PUNCTUATION">
+<parameter_description> General category &quot;Punctuation, Final quote&quot; (Pf)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_INITIAL_PUNCTUATION">
+<parameter_description> General category &quot;Punctuation, Initial quote&quot; (Pi)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_OTHER_PUNCTUATION">
+<parameter_description> General category &quot;Punctuation, Other&quot; (Po)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_OPEN_PUNCTUATION">
+<parameter_description> General category &quot;Punctuation, Open&quot; (Ps)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_CURRENCY_SYMBOL">
+<parameter_description> General category &quot;Symbol, Currency&quot; (Sc)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_MODIFIER_SYMBOL">
+<parameter_description> General category &quot;Symbol, Modifier&quot; (Sk)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_MATH_SYMBOL">
+<parameter_description> General category &quot;Symbol, Math&quot; (Sm)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_OTHER_SYMBOL">
+<parameter_description> General category &quot;Symbol, Other&quot; (So)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_LINE_SEPARATOR">
+<parameter_description> General category &quot;Separator, Line&quot; (Zl)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_PARAGRAPH_SEPARATOR">
+<parameter_description> General category &quot;Separator, Paragraph&quot; (Zp)
+</parameter_description>
+</parameter>
+<parameter name="G_UNICODE_SPACE_SEPARATOR">
+<parameter_description> General category &quot;Separator, Space&quot; (Zs)
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GUserDirectory">
+<description>
+These are logical ids for special directories which are defined
+depending on the platform used. You should use g_get_user_special_dir()
+to retrieve the full path associated to the logical id.
+
+The #GUserDirectory enumeration can be extended at later date. Not
+every platform has a directory for every logical id in this
+enumeration.
+
+Since: 2.14
 
 </description>
 <parameters>
-<parameter name="gobject">
-<parameter_description> the object which received the signal.
+<parameter name="G_USER_DIRECTORY_DESKTOP">
+<parameter_description> the user's Desktop directory
 </parameter_description>
 </parameter>
-<parameter name="pspec">
-<parameter_description> the #GParamSpec of the property which changed.
+<parameter name="G_USER_DIRECTORY_DOCUMENTS">
+<parameter_description> the user's Documents directory
+</parameter_description>
+</parameter>
+<parameter name="G_USER_DIRECTORY_DOWNLOAD">
+<parameter_description> the user's Downloads directory
+</parameter_description>
+</parameter>
+<parameter name="G_USER_DIRECTORY_MUSIC">
+<parameter_description> the user's Music directory
+</parameter_description>
+</parameter>
+<parameter name="G_USER_DIRECTORY_PICTURES">
+<parameter_description> the user's Pictures directory
+</parameter_description>
+</parameter>
+<parameter name="G_USER_DIRECTORY_PUBLIC_SHARE">
+<parameter_description> the user's shared directory
+</parameter_description>
+</parameter>
+<parameter name="G_USER_DIRECTORY_TEMPLATES">
+<parameter_description> the user's Templates directory
+</parameter_description>
+</parameter>
+<parameter name="G_USER_DIRECTORY_VIDEOS">
+<parameter_description> the user's Movies directory
+</parameter_description>
+</parameter>
+<parameter name="G_USER_N_DIRECTORIES">
+<parameter_description> the number of enum values
 </parameter_description>
 </parameter>
 </parameters>
-<return></return>
-</signal>
+</enum>
+
+<enum name="GVariantClass">
+<description>
+The range of possible top-level types of #GVariant instances.
+
+Since: 2.24
+
+</description>
+<parameters>
+<parameter name="G_VARIANT_CLASS_BOOLEAN">
+<parameter_description> The #GVariant is a boolean.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_BYTE">
+<parameter_description> The #GVariant is a byte.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_INT16">
+<parameter_description> The #GVariant is a signed 16 bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_UINT16">
+<parameter_description> The #GVariant is an unsigned 16 bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_INT32">
+<parameter_description> The #GVariant is a signed 32 bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_UINT32">
+<parameter_description> The #GVariant is an unsigned 32 bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_INT64">
+<parameter_description> The #GVariant is a signed 64 bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_UINT64">
+<parameter_description> The #GVariant is an unsigned 64 bit integer.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_HANDLE">
+<parameter_description> The #GVariant is a file handle index.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_DOUBLE">
+<parameter_description> The #GVariant is a double precision floating 
+point value.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_STRING">
+<parameter_description> The #GVariant is a normal string.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_OBJECT_PATH">
+<parameter_description> The #GVariant is a D-Bus object path 
+string.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_SIGNATURE">
+<parameter_description> The #GVariant is a D-Bus signature string.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_VARIANT">
+<parameter_description> The #GVariant is a variant.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_MAYBE">
+<parameter_description> The #GVariant is a maybe-typed value.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_ARRAY">
+<parameter_description> The #GVariant is an array.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_TUPLE">
+<parameter_description> The #GVariant is a tuple.
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_CLASS_DICT_ENTRY">
+<parameter_description> The #GVariant is a dictionary entry.
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
+
+<enum name="GVariantParseError">
+<description>
+Error codes returned by parsing text-format GVariants.
+
+</description>
+<parameters>
+<parameter name="G_VARIANT_PARSE_ERROR_FAILED">
+<parameter_description> generic error (unused)
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_BASIC_TYPE_EXPECTED">
+<parameter_description> a non-basic #GVariantType was given where a basic type was expected
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_CANNOT_INFER_TYPE">
+<parameter_description> cannot infer the #GVariantType
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_DEFINITE_TYPE_EXPECTED">
+<parameter_description> an indefinite #GVariantType was given where a definite type was expected
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_INPUT_NOT_AT_END">
+<parameter_description> extra data after parsing finished
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_INVALID_CHARACTER">
+<parameter_description> invalid character in number or unicode escape
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_INVALID_FORMAT_STRING">
+<parameter_description> not a valid #GVariant format string
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_INVALID_OBJECT_PATH">
+<parameter_description> not a valid object path
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_INVALID_SIGNATURE">
+<parameter_description> not a valid type signature
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_INVALID_TYPE_STRING">
+<parameter_description> not a valid #GVariant type string
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_NO_COMMON_TYPE">
+<parameter_description> could not find a common type for array entries
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_NUMBER_OUT_OF_RANGE">
+<parameter_description> the numerical value is out of range of the given type
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_NUMBER_TOO_BIG">
+<parameter_description> the numerical value is out of range for any type
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_TYPE_ERROR">
+<parameter_description> cannot parse as variant of the specified type
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_UNEXPECTED_TOKEN">
+<parameter_description> an unexpected token was encountered
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_UNKNOWN_KEYWORD">
+<parameter_description> an unknown keyword was encountered
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_UNTERMINATED_STRING_CONSTANT">
+<parameter_description> unterminated string constant
+</parameter_description>
+</parameter>
+<parameter name="G_VARIANT_PARSE_ERROR_VALUE_EXPECTED">
+<parameter_description> no value given
+</parameter_description>
+</parameter>
+</parameters>
+</enum>
 
 <function name="g_access">
 <description>
@@ -68,6 +3490,52 @@ error.
 </return>
 </function>
 
+<function name="g_alloca">
+<description>
+Allocates @size bytes on the stack; these bytes will be freed when the current
+stack frame is cleaned up. This macro essentially just wraps the alloca()
+function present on most UNIX variants.
+Thus it provides the same advantages and pitfalls as alloca():
+&lt;variablelist&gt;
+&lt;varlistentry&gt;&lt;term&gt;&lt;/term&gt;&lt;listitem&gt;&lt;para&gt;
++ alloca() is very fast, as on most systems it's implemented by just adjusting
+the stack pointer register.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;&lt;/term&gt;&lt;listitem&gt;&lt;para&gt;
++ It doesn't cause any memory fragmentation, within its scope, separate alloca()
+blocks just build up and are released together at function end.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;&lt;/term&gt;&lt;listitem&gt;&lt;para&gt;
+- Allocation sizes have to fit into the current stack frame. For instance in a
+threaded environment on Linux, the per-thread stack size is limited to 2 Megabytes,
+so be sparse with alloca() uses.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;&lt;/term&gt;&lt;listitem&gt;&lt;para&gt;
+- Allocation failure due to insufficient stack space is not indicated with a %NULL
+return like e.g. with malloc(). Instead, most systems probably handle it the same
+way as out of stack space situations from infinite function recursion, i.e.
+with a segmentation fault.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;varlistentry&gt;&lt;term&gt;&lt;/term&gt;&lt;listitem&gt;&lt;para&gt;
+- Special care has to be taken when mixing alloca() with GNU C variable sized arrays.
+Stack space allocated with alloca() in the same scope as a variable sized array
+will be freed together with the variable sized array upon exit of that scope, and
+not upon exit of the enclosing function scope.
+&lt;/para&gt;&lt;/listitem&gt;&lt;/varlistentry&gt;
+&lt;/variablelist&gt;
+
+
+</description>
+<parameters>
+<parameter name="size">
+<parameter_description> number of bytes to allocate.
+</parameter_description>
+</parameter>
+</parameters>
+<return> space for @size bytes, allocated on the stack
+</return>
+</function>
+
 <function name="g_array_append_val">
 <description>
 Adds the value on to the end of the array. The array will grow in
@@ -77,6 +3545,7 @@ size automatically if necessary.
 to the value parameter @v. This means that you cannot use it with
 literal values such as &quot;27&quot;. You must use variables.&lt;/para&gt;&lt;/note&gt;
 
+
 </description>
 <parameters>
 <parameter name="a">
@@ -96,6 +3565,7 @@ literal values such as &quot;27&quot;. You must use variables.&lt;/para&gt;&lt;/
 <description>
 Adds @len elements onto the end of the array.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -128,6 +3598,7 @@ of @array will be set to zero.
 &lt;note&gt;&lt;para&gt;If array elements contain dynamically-allocated memory,
 they should be freed separately.&lt;/para&gt;&lt;/note&gt;
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -177,6 +3648,7 @@ event = &amp;g_array_index (events, EDayViewEvent, 3);
 &lt;/programlisting&gt;
 &lt;/example&gt;
 
+
 </description>
 <parameters>
 <parameter name="a">
@@ -204,6 +3676,7 @@ Inserts an element into an array at the given index.
 to the value parameter @v. This means that you cannot use it with
 literal values such as &quot;27&quot;. You must use variables.&lt;/para&gt;&lt;/note&gt;
 
+
 </description>
 <parameters>
 <parameter name="a">
@@ -227,6 +3700,7 @@ literal values such as &quot;27&quot;. You must use variables.&lt;/para&gt;&lt;/
 <description>
 Inserts @len elements into a #GArray at the given index.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -254,6 +3728,7 @@ Inserts @len elements into a #GArray at the given index.
 <description>
 Creates a new #GArray with a reference count of 1.
 
+
 </description>
 <parameters>
 <parameter name="zero_terminated">
@@ -288,6 +3763,7 @@ the new element.
 to the value parameter @v. This means that you cannot use it with
 literal values such as &quot;27&quot;. You must use variables.&lt;/para&gt;&lt;/note&gt;
 
+
 </description>
 <parameters>
 <parameter name="a">
@@ -311,6 +3787,7 @@ This operation is slower than g_array_append_vals() since the
 existing elements in the array have to be moved to make space for
 the new elements.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -355,6 +3832,7 @@ Since: 2.22
 Removes the element at the given index from a #GArray. The following
 elements are moved down one place.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -377,6 +3855,7 @@ element in the array is used to fill in the space, so this function
 does not preserve the order of the #GArray. But it is faster than
 g_array_remove_index().
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -415,6 +3894,7 @@ Since: 2.4
 </parameter>
 </parameters>
 <return> the #GArray.
+
 </return>
 </function>
 
@@ -451,6 +3931,7 @@ Since: 2.32
 Sets the size of the array, expanding it if necessary. If the array
 was created with @clear_ set to %TRUE, the new elements are set to 0.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -473,6 +3954,7 @@ a reference count of 1. This avoids frequent reallocation, if you
 are going to add many elements to the array. Note however that the
 size of the array is still 0.
 
+
 </description>
 <parameters>
 <parameter name="zero_terminated">
@@ -4447,6 +7929,7 @@ Since: 2.8
 Adds the given bytes to the end of the #GByteArray. The array will
 grow in size automatically if necessary.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -4473,6 +7956,7 @@ Frees the memory allocated by the #GByteArray. If @free_segment is
 @array is greater than one, the #GByteArray wrapper is preserved but
 the size of @array will be set to zero.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -4519,6 +8003,7 @@ data that was in the array
 <description>
 Creates a new #GByteArray with a reference count of 1.
 
+
 </description>
 <parameters>
 </parameters>
@@ -4554,6 +8039,7 @@ Since: 2.32
 Adds the given data to the start of the #GByteArray. The array will
 grow in size automatically if necessary.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -4597,6 +8083,7 @@ Since: 2.22
 Removes the byte at the given index from a #GByteArray. The
 following bytes are moved down one place.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -4619,6 +8106,7 @@ element in the array is used to fill in the space, so this function
 does not preserve the order of the #GByteArray. But it is faster
 than g_byte_array_remove_index().
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -4657,6 +8145,7 @@ Since: 2.4
 </parameter>
 </parameters>
 <return> the #GByteArray.
+
 </return>
 </function>
 
@@ -4664,6 +8153,7 @@ Since: 2.4
 <description>
 Sets the size of the #GByteArray, expanding it if necessary.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -4686,6 +8176,7 @@ This avoids frequent reallocation, if you are going to add many
 bytes to the array. Note however that the size of the array is still
 0.
 
+
 </description>
 <parameters>
 <parameter name="reserved_size">
@@ -6560,10 +10051,10 @@ Note that on platforms where #GPid must be explicitly closed
 source is still active. Typically, you will want to call
 g_spawn_close_pid() in the callback function for the source.
 
-Note further that using g_child_watch_source_new() is not 
-compatible with calling &lt;literal&gt;waitpid(-1)&lt;/literal&gt; in 
-the application. Calling waitpid() for individual pids will
-still work fine. 
+Note further that using g_child_watch_source_new() is not
+compatible with calling &lt;literal&gt;waitpid&lt;/literal&gt; with a
+nonpositive first argument in the application. Calling waitpid()
+for individual pids will still work fine.
 
 Since: 2.4
 
@@ -7174,6 +10665,7 @@ when no longer needed.
 </parameters>
 <return> the list of items whose strings begin with
 @prefix. This should not be changed.
+
 </return>
 </function>
 
@@ -7237,6 +10729,7 @@ Deprecated: 2.26: Rarely used API
 <description>
 Creates a new #GCompletion.
 
+
 </description>
 <parameters>
 <parameter name="func">
@@ -8013,6 +11506,7 @@ not be called.
 Gets a data element, using its string identifier. This is slower than
 g_datalist_id_get_data() because it compares strings.
 
+
 </description>
 <parameters>
 <parameter name="datalist">
@@ -8134,6 +11628,7 @@ Removes an element, using its #GQuark identifier.
 Removes an element, without calling its destroy notification
 function.
 
+
 </description>
 <parameters>
 <parameter name="datalist">
@@ -8462,6 +11957,7 @@ invocation of this function, it should not be called.
 <description>
 Gets the data element corresponding to a string.
 
+
 </description>
 <parameters>
 <parameter name="l">
@@ -8482,6 +11978,7 @@ it is not found.
 <description>
 Gets the data element corresponding to a #GQuark.
 
+
 </description>
 <parameters>
 <parameter name="dataset_location">
@@ -8522,6 +12019,7 @@ function is called if it has been set.
 Removes an element, without calling its destroy notification
 function.
 
+
 </description>
 <parameters>
 <parameter name="dataset_location">
@@ -12311,8 +15809,8 @@ errors. Any of the errors in #GConvertError may occur.
 </parameter_description>
 </parameter>
 </parameters>
-<return> a newly-allocated string holding the resulting
-filename, or %NULL on an error.
+<return> a newly-allocated string holding
+the resulting filename, or %NULL on an error.
 </return>
 </function>
 
@@ -12336,8 +15834,8 @@ nul-terminated.
 </parameter_description>
 </parameter>
 <parameter name="bytes_read">
-<parameter_description>    location to store the number of bytes in the
-input string that were successfully converted, or %NULL.
+<parameter_description> location to store the number of bytes in
+the input string that were successfully converted, or %NULL.
 Even if the conversion was successful, this may be 
 less than @len if there were partial characters
 at the end of the input. If the error
@@ -12357,7 +15855,8 @@ errors. Any of the errors in #GConvertError may occur.
 </parameter_description>
 </parameter>
 </parameters>
-<return> The converted string, or %NULL on an error.
+<return>
+The converted string, or %NULL on an error.
 </return>
 </function>
 
@@ -15683,7 +19182,8 @@ Replacement for g_io_channel_read() with the new API.
 </parameter_description>
 </parameter>
 <parameter name="buf">
-<parameter_description> a buffer to read data into
+<parameter_description>
+a buffer to read data into
 </parameter_description>
 </parameter>
 <parameter name="count">
@@ -15791,11 +19291,11 @@ Reads all the remaining data from the file.
 </parameter_description>
 </parameter>
 <parameter name="str_return">
-<parameter_description> Location to store a pointer to a string holding
-the remaining data in the #GIOChannel. This data should
-be freed with g_free() when no longer needed. This
-data is terminated by an extra nul character, but there 
-may be other nuls in the intervening data.
+<parameter_description> Location to
+store a pointer to a string holding the remaining data in the
+#GIOChannel. This data should be freed with g_free() when no
+longer needed. This data is terminated by an extra nul
+character, but there may be other nuls in the intervening data.
 </parameter_description>
 </parameter>
 <parameter name="length">
@@ -16094,10 +19594,10 @@ where in the file a line break occurs.
 </parameter_description>
 </parameter>
 <parameter name="line_term">
-<parameter_description> The line termination string. Use %NULL for autodetect.
-Autodetection breaks on &quot;\n&quot;, &quot;\r\n&quot;, &quot;\r&quot;, &quot;\0&quot;, and
-the Unicode paragraph separator. Autodetection should
-not be used for anything other than file-based channels.
+<parameter_description> The line termination string. Use %NULL for
+autodetect.  Autodetection breaks on &quot;\n&quot;, &quot;\r\n&quot;, &quot;\r&quot;, &quot;\0&quot;,
+and the Unicode paragraph separator. Autodetection should not be
+used for anything other than file-based channels.
 </parameter_description>
 </parameter>
 <parameter name="length">
@@ -16143,6 +19643,7 @@ Returns the file descriptor of the #GIOChannel.
 On Windows this function returns the file descriptor or socket of
 the #GIOChannel.
 
+
 </description>
 <parameters>
 <parameter name="channel">
@@ -16177,6 +19678,7 @@ in case the argument you pass to this function happens to be both a
 valid file descriptor and socket. If that happens a warning is
 issued, and GLib assumes that it is the file descriptor you mean.
 
+
 </description>
 <parameters>
 <parameter name="fd">
@@ -16227,6 +19729,7 @@ thread. Your code should call only g_io_channel_read().
 
 This function is available only in GLib on Windows.
 
+
 </description>
 <parameters>
 <parameter name="fd">
@@ -16245,6 +19748,7 @@ Creates a new #GIOChannel given a window handle on Windows.
 This function creates a #GIOChannel that can be used to poll for
 Windows messages for the window in question.
 
+
 </description>
 <parameters>
 <parameter name="hwnd">
@@ -16267,6 +19771,7 @@ Polling a #GSource created to watch a channel for a socket puts the
 socket in non-blocking mode. This is a side-effect of the
 implementation and unavoidable.
 
+
 </description>
 <parameters>
 <parameter name="socket">
@@ -17912,6 +21417,7 @@ Allocates space for one #GList element. It is called by
 g_list_append(), g_list_prepend(), g_list_insert() and
 g_list_insert_sorted() and so is rarely used on its own.
 
+
 </description>
 <parameters>
 </parameters>
@@ -18407,6 +21913,7 @@ count its elements.
 <description>
 A convenience macro to get the next element in a #GList.
 
+
 </description>
 <parameters>
 <parameter name="list">
@@ -18539,6 +22046,7 @@ list = g_list_prepend (list, &quot;first&quot;);
 <description>
 A convenience macro to get the previous element in a #GList.
 
+
 </description>
 <parameters>
 <parameter name="list">
@@ -19887,6 +23395,61 @@ there is more work to do.
 </return>
 </function>
 
+<function name="g_main_destroy">
+<description>
+Frees the memory allocated for the #GMainLoop.
+
+Deprecated: 2.2: Use g_main_loop_unref() instead
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_is_running">
+<description>
+Checks if the main loop is running.
+
+Deprecated: 2.2: Use g_main_loop_is_running() instead
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if the main loop is running
+
+</return>
+</function>
+
+<function name="g_main_iteration">
+<description>
+Runs a single iteration for the default #GMainContext.
+
+Deprecated: 2.2: Use g_main_context_iteration() instead.
+
+</description>
+<parameters>
+<parameter name="may_block">
+<parameter_description> set to %TRUE if it should block (i.e. wait) until an event
+source becomes ready. It will return after an event source has been
+processed. If set to %FALSE it will return immediately if no event
+source is ready to be processed.
+</parameter_description>
+</parameter>
+</parameters>
+<return> %TRUE if more events are pending.
+
+</return>
+</function>
+
 <function name="g_main_loop_get_context">
 <description>
 Returns the #GMainContext of @loop.
@@ -20007,6 +23570,91 @@ the result is zero, free the loop and free all associated memory.
 <return></return>
 </function>
 
+<function name="g_main_new">
+<description>
+Creates a new #GMainLoop for th default main context.
+
+Deprecated: 2.2: Use g_main_loop_new() instead
+
+</description>
+<parameters>
+<parameter name="is_running">
+<parameter_description> set to %TRUE to indicate that the loop is running. This
+is not very important since calling g_main_run() will set this
+to %TRUE anyway.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GMainLoop
+
+</return>
+</function>
+
+<function name="g_main_pending">
+<description>
+Checks if any events are pending for the default #GMainContext
+(i.e. ready to be processed).
+
+
+</description>
+<parameters>
+</parameters>
+<return> %TRUE if any events are pending.
+
+Deprected: 2.2: Use g_main_context_pending() instead.
+</return>
+</function>
+
+<function name="g_main_quit">
+<description>
+Stops the #GMainLoop.
+If g_main_run() was called to run the #GMainLoop, it will now return.
+
+Deprecated: 2.2: Use g_main_loop_quit() instead
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_run">
+<description>
+Runs a main loop until it stops running.
+
+Deprecated: 2.2: Use g_main_loop_run() instead
+
+</description>
+<parameters>
+<parameter name="loop">
+<parameter_description> a #GMainLoop
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_main_set_poll_func">
+<description>
+Sets the function to use for the handle polling of file descriptors
+for the default main context.
+
+Deprecated: 2.2: Use g_main_context_set_poll_func() again
+
+</description>
+<parameters>
+<parameter name="func">
+<parameter_description> the function to call to poll all file descriptors
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_malloc">
 <description>
 Allocates @n_bytes bytes of memory.
@@ -21925,6 +25573,120 @@ current thread leads to undefined behaviour.
 <return></return>
 </function>
 
+<function name="g_new">
+<description>
+Allocates @n_structs elements of type @struct_type.
+The returned pointer is cast to a pointer to the given type.
+If @n_structs is 0 it returns %NULL.
+Care is taken to avoid overflow when calculating the size of the allocated block.
+
+Since the returned pointer is already casted to the right type,
+it is normally unnecessary to cast it explicitly, and doing
+so might hide memory allocation errors.
+
+
+</description>
+<parameters>
+<parameter name="struct_type">
+<parameter_description> the type of the elements to allocate
+</parameter_description>
+</parameter>
+<parameter name="n_structs">
+<parameter_description> the number of elements to allocate
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the allocated memory, cast to a pointer to @struct_type
+</return>
+</function>
+
+<function name="g_new0">
+<description>
+Allocates @n_structs elements of type @struct_type, initialized to 0's.
+The returned pointer is cast to a pointer to the given type.
+If @n_structs is 0 it returns %NULL.
+Care is taken to avoid overflow when calculating the size of the allocated block.
+
+Since the returned pointer is already casted to the right type,
+it is normally unnecessary to cast it explicitly, and doing
+so might hide memory allocation errors.
+
+
+</description>
+<parameters>
+<parameter name="struct_type">
+<parameter_description> the type of the elements to allocate.
+</parameter_description>
+</parameter>
+<parameter name="n_structs">
+<parameter_description> the number of elements to allocate.
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the allocated memory, cast to a pointer to @struct_type.
+</return>
+</function>
+
+<function name="g_newa">
+<description>
+Wraps g_alloca() in a more typesafe manner.
+
+
+</description>
+<parameters>
+<parameter name="struct_type">
+<parameter_description> Type of memory chunks to be allocated
+</parameter_description>
+</parameter>
+<parameter name="n_structs">
+<parameter_description> Number of chunks to be allocated
+</parameter_description>
+</parameter>
+</parameters>
+<return> Pointer to stack space for @n_structs chunks of type @struct_type
+</return>
+</function>
+
+<function name="g_node_append">
+<description>
+Inserts a #GNode as the last child of the given parent.
+
+
+</description>
+<parameters>
+<parameter name="parent">
+<parameter_description> the #GNode to place the new #GNode under
+</parameter_description>
+</parameter>
+<parameter name="node">
+<parameter_description> the #GNode to insert
+</parameter_description>
+</parameter>
+</parameters>
+<return> the inserted #GNode
+</return>
+</function>
+
+<function name="g_node_append_data">
+<description>
+Inserts a new #GNode as the last child of the given parent.
+
+
+</description>
+<parameters>
+<parameter name="parent">
+<parameter_description> the #GNode to place the new #GNode under
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GNode
+</return>
+</function>
+
 <function name="g_node_child_index">
 <description>
 Gets the position of the first child of a #GNode 
@@ -22130,6 +25892,23 @@ Finds the first child of a #GNode with the given data.
 </return>
 </function>
 
+<function name="g_node_first_child">
+<description>
+Gets the first child of a #GNode.
+
+
+</description>
+<parameters>
+<parameter name="node">
+<parameter_description> a #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the first child of @node, or %NULL if @node is %NULL 
+or has no children
+</return>
+</function>
+
 <function name="g_node_first_sibling">
 <description>
 Gets the first sibling of a #GNode.
@@ -22238,6 +26017,79 @@ If sibling is %NULL, the node is inserted as the last child of @parent.
 </return>
 </function>
 
+<function name="g_node_insert_data">
+<description>
+Inserts a new #GNode at the given position.
+
+
+</description>
+<parameters>
+<parameter name="parent">
+<parameter_description> the #GNode to place the new #GNode under
+</parameter_description>
+</parameter>
+<parameter name="position">
+<parameter_description> the position to place the new #GNode at. If position is -1, 
+the new #GNode is inserted as the last child of @parent
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GNode
+</return>
+</function>
+
+<function name="g_node_insert_data_after">
+<description>
+Inserts a new #GNode after the given sibling.
+
+
+</description>
+<parameters>
+<parameter name="parent">
+<parameter_description> the #GNode to place the new #GNode under
+</parameter_description>
+</parameter>
+<parameter name="sibling">
+<parameter_description> the sibling #GNode to place the new #GNode after
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GNode
+</return>
+</function>
+
+<function name="g_node_insert_data_before">
+<description>
+Inserts a new #GNode before the given sibling.
+
+
+</description>
+<parameters>
+<parameter name="parent">
+<parameter_description> the #GNode to place the new #GNode under
+</parameter_description>
+</parameter>
+<parameter name="sibling">
+<parameter_description> the sibling #GNode to place the new #GNode before
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GNode
+</return>
+</function>
+
 <function name="g_node_is_ancestor">
 <description>
 Returns %TRUE if @node is an ancestor of @descendant.
@@ -22367,6 +26219,23 @@ Used to create the first node in a tree.
 </return>
 </function>
 
+<function name="g_node_next_sibling">
+<description>
+Gets the next sibling of a #GNode.
+
+
+</description>
+<parameters>
+<parameter name="node">
+<parameter_description> a #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the next sibling of @node, or %NULL if @node is the last node
+or %NULL
+</return>
+</function>
+
 <function name="g_node_nth_child">
 <description>
 Gets a child of a #GNode, using the given index.
@@ -22409,6 +26278,43 @@ Inserts a #GNode as the first child of the given parent.
 </return>
 </function>
 
+<function name="g_node_prepend_data">
+<description>
+Inserts a new #GNode as the first child of the given parent.
+
+
+</description>
+<parameters>
+<parameter name="parent">
+<parameter_description> the #GNode to place the new #GNode under
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the data for the new #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the new #GNode
+</return>
+</function>
+
+<function name="g_node_prev_sibling">
+<description>
+Gets the previous sibling of a #GNode.
+
+
+</description>
+<parameters>
+<parameter name="node">
+<parameter_description> a #GNode
+</parameter_description>
+</parameter>
+</parameters>
+<return> the previous sibling of @node, or %NULL if @node is the first
+node or %NULL
+</return>
+</function>
+
 <function name="g_node_reverse_children">
 <description>
 Reverses the order of the children of a #GNode.
@@ -26766,6 +30672,7 @@ only if the string doesn't contain any multibyte characters. GLib
 offers the g_utf8_strreverse() function to reverse UTF-8 encoded
 strings.
 
+
 </description>
 <parameters>
 <parameter name="pspec">
@@ -26797,6 +30704,7 @@ function is to be called in a loop, it's more efficient to compile
 the pattern once with g_pattern_spec_new() and call
 g_pattern_match_string() repeatedly.
 
+
 </description>
 <parameters>
 <parameter name="pattern">
@@ -26818,6 +30726,7 @@ Matches a string against a compiled pattern. If the string is to be
 matched against more than one pattern, consider using
 g_pattern_match() instead while supplying the reversed string.
 
+
 </description>
 <parameters>
 <parameter name="pspec">
@@ -26838,6 +30747,7 @@ g_pattern_match() instead while supplying the reversed string.
 Compares two compiled pattern specs and returns whether they will
 match the same set of strings.
 
+
 </description>
 <parameters>
 <parameter name="pspec1">
@@ -26871,6 +30781,7 @@ Frees the memory allocated for the #GPatternSpec.
 <description>
 Compiles a pattern to a #GPatternSpec.
 
+
 </description>
 <parameters>
 <parameter name="pattern">
@@ -27335,6 +31246,7 @@ size of @array will be set to zero.
 memory, they should be freed separately if @free_seg is %TRUE and no
 #GDestroyNotify function has been set for @array.&lt;/para&gt;&lt;/note&gt;
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -27355,6 +31267,7 @@ The pointer array should be freed using g_free().
 <description>
 Returns the pointer at the given index of the pointer array.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -27374,6 +31287,7 @@ Returns the pointer at the given index of the pointer array.
 <description>
 Creates a new #GPtrArray with a reference count of 1.
 
+
 </description>
 <parameters>
 </parameters>
@@ -27459,6 +31373,7 @@ removed element.
 It returns %TRUE if the pointer was removed, or %FALSE if the
 pointer was not found.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -27486,6 +31401,7 @@ faster than g_ptr_array_remove(). If @array has a non-%NULL
 It returns %TRUE if the pointer was removed, or %FALSE if the
 pointer was not found.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -27508,6 +31424,7 @@ following elements are moved down one place. If @array has a
 non-%NULL #GDestroyNotify function it is called for the removed
 element.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -27531,6 +31448,7 @@ function does not preserve the order of the array. But it is faster
 than g_ptr_array_remove_index(). If @array has a non-%NULL
 #GDestroyNotify function it is called for the removed element.
 
+
 </description>
 <parameters>
 <parameter name="array">
@@ -27623,6 +31541,7 @@ and a reference count of 1. This avoids frequent reallocation, if
 you are going to add many pointers to the array. Note however that
 the size of the array is still 0.
 
+
 </description>
 <parameters>
 <parameter name="reserved_size">
@@ -28668,6 +32587,7 @@ Since: 2.4
 Returns a random #gboolean from @rand_. This corresponds to a
 unbiased coin toss.
 
+
 </description>
 <parameters>
 <parameter name="rand_">
@@ -28899,6 +32819,7 @@ Since: 2.4
 <description>
 Returns a random #gboolean. This corresponds to a unbiased coin toss.
 
+
 </description>
 <parameters>
 </parameters>
@@ -30186,6 +34107,7 @@ Deprecated: 2.26: Rarely used API
 </parameter>
 </parameters>
 <return> the number of matches.
+
 </return>
 </function>
 
@@ -30212,6 +34134,7 @@ Deprecated: 2.26: Rarely used API
 </parameter>
 </parameters>
 <return> the number of records deleted.
+
 </return>
 </function>
 
@@ -30254,6 +34177,7 @@ the number of fields in the #GRelation.
 </parameter>
 </parameters>
 <return> %TRUE if a record matches.
+
 </return>
 </function>
 
@@ -30323,6 +34247,7 @@ Deprecated: 2.26: Rarely used API
 </parameter>
 </parameters>
 <return> a new #GRelation.
+
 </return>
 </function>
 
@@ -30367,6 +34292,7 @@ Deprecated: 2.26: Rarely used API
 </parameter>
 </parameters>
 <return> the records (tuples) that matched.
+
 </return>
 </function>
 
@@ -30450,6 +34376,102 @@ Since: 2.6
 </return>
 </function>
 
+<function name="g_renew">
+<description>
+Reallocates the memory pointed to by @mem, so that it now has space for
+@n_structs elements of type @struct_type. It returns the new address of
+the memory, which may have been moved.
+Care is taken to avoid overflow when calculating the size of the allocated block.
+
+
+</description>
+<parameters>
+<parameter name="struct_type">
+<parameter_description> the type of the elements to allocate
+</parameter_description>
+</parameter>
+<parameter name="mem">
+<parameter_description> the currently allocated memory
+</parameter_description>
+</parameter>
+<parameter name="n_structs">
+<parameter_description> the number of elements to allocate
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the new allocated memory, cast to a pointer to @struct_type
+</return>
+</function>
+
+<function name="g_return_if_fail">
+<description>
+Verifies that the expression evaluates to %TRUE.  If the expression
+evaluates to %FALSE, a critical message is logged and the current
+function returns.  This can only be used in functions which do not
+return a value.
+
+If G_DISABLE_CHECKS is defined then the check is not performed.  You
+should therefore not depend on any side effects of @expr.
+
+</description>
+<parameters>
+<parameter name="expr">
+<parameter_description> the expression to check
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_return_if_reached">
+<description>
+Logs a critical message and returns from the current function.
+This can only be used in functions which do not return a value.
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_return_val_if_fail">
+<description>
+Verifies that the expression evaluates to %TRUE.  If the expression
+evaluates to %FALSE, a critical message is logged and @val is
+returned from the current function.
+
+If G_DISABLE_CHECKS is defined then the check is not performed.  You
+should therefore not depend on any side effects of @expr.
+
+</description>
+<parameters>
+<parameter name="expr">
+<parameter_description> the expression to check
+</parameter_description>
+</parameter>
+<parameter name="val">
+<parameter_description> the value to return from the current function
+if the expression is not true
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_return_val_if_reached">
+<description>
+Logs a critical message and returns @val.
+
+</description>
+<parameters>
+<parameter name="val">
+<parameter_description> the value to return from the current function
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_rmdir">
 <description>
 A wrapper for the POSIX rmdir() function. The rmdir() function
@@ -32647,6 +36669,66 @@ is #G_TYPE_NONE, the return value location can be omitted.
 <return></return>
 </function>
 
+<function name="g_signal_connect">
+<description>
+Connects a #GCallback function to a signal for a particular object.
+
+The handler will be called before the default handler of the signal.
+
+
+</description>
+<parameters>
+<parameter name="instance">
+<parameter_description> the instance to connect to.
+</parameter_description>
+</parameter>
+<parameter name="detailed_signal">
+<parameter_description> a string of the form &quot;signal-name::detail&quot;.
+</parameter_description>
+</parameter>
+<parameter name="c_handler">
+<parameter_description> the #GCallback to connect.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @c_handler calls.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the handler id
+</return>
+</function>
+
+<function name="g_signal_connect_after">
+<description>
+Connects a #GCallback function to a signal for a particular object.
+
+The handler will be called after the default handler of the signal.
+
+
+</description>
+<parameters>
+<parameter name="instance">
+<parameter_description> the instance to connect to.
+</parameter_description>
+</parameter>
+<parameter name="detailed_signal">
+<parameter_description> a string of the form &quot;signal-name::detail&quot;.
+</parameter_description>
+</parameter>
+<parameter name="c_handler">
+<parameter_description> the #GCallback to connect.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @c_handler calls.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the handler id
+</return>
+</function>
+
 <function name="g_signal_connect_closure">
 <description>
 Connects a closure to a signal for a particular object.
@@ -32755,24 +36837,10 @@ This is similar to g_signal_connect_data(), but uses a closure which
 ensures that the @gobject stays alive during the call to @c_handler
 by temporarily adding a reference count to @gobject.
 
-Note that there is a bug in GObject that makes this function
-much less useful than it might seem otherwise. Once @gobject is
-disposed, the callback will no longer be called, but, the signal
-handler is &lt;emphasis&gt;not&lt;/emphasis&gt; currently disconnected. If the
-@instance is itself being freed at the same time than this doesn't
-matter, since the signal will automatically be removed, but
-if @instance persists, then the signal handler will leak. You
-should not remove the signal yourself because in a future versions of
-GObject, the handler &lt;emphasis&gt;will&lt;/emphasis&gt; automatically
-be disconnected.
-
-It's possible to work around this problem in a way that will
-continue to work with future versions of GObject by checking
-that the signal handler is still connected before disconnected it:
-&lt;informalexample&gt;&lt;programlisting&gt;
-if (g_signal_handler_is_connected (instance, id))
-g_signal_handler_disconnect (instance, id);
-&lt;/programlisting&gt;&lt;/informalexample&gt;
+When the object is destroyed the signal handler will be automatically
+disconnected.  Note that this is not currently threadsafe (ie:
+emitting a signal while @gobject is being destroyed in another thread
+is not safe).
 
 
 </description>
@@ -32802,6 +36870,37 @@ g_signal_handler_disconnect (instance, id);
 </return>
 </function>
 
+<function name="g_signal_connect_swapped">
+<description>
+Connects a #GCallback function to a signal for a particular object.
+
+The instance on which the signal is emitted and @data will be swapped when 
+calling the handler.
+
+
+</description>
+<parameters>
+<parameter name="instance">
+<parameter_description> the instance to connect to.
+</parameter_description>
+</parameter>
+<parameter name="detailed_signal">
+<parameter_description> a string of the form &quot;signal-name::detail&quot;.
+</parameter_description>
+</parameter>
+<parameter name="c_handler">
+<parameter_description> the #GCallback to connect.
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> data to pass to @c_handler calls.
+</parameter_description>
+</parameter>
+</parameters>
+<return> the handler id
+</return>
+</function>
+
 <function name="g_signal_emit">
 <description>
 Emits a signal.
@@ -33081,6 +37180,30 @@ connected to a signal of @instance and is currently blocked.
 <return></return>
 </function>
 
+<function name="g_signal_handlers_block_by_func">
+<description>
+Blocks all handlers on an instance that match @func and @data.
+
+
+</description>
+<parameters>
+<parameter name="instance">
+<parameter_description> The instance to block handlers from.
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> The C closure callback of the handlers (useless for non-C closures).
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> The closure data of the handlers' closures.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The number of handlers that matched.
+</return>
+</function>
+
 <function name="g_signal_handlers_block_matched">
 <description>
 Blocks all handlers on an instance that match a certain selection criteria.
@@ -33128,6 +37251,52 @@ and/or @data the handlers have to match.
 </return>
 </function>
 
+<function name="g_signal_handlers_disconnect_by_data">
+<description>
+Disconnects all handlers on an instance that match @data.
+
+Since: 2.32
+
+</description>
+<parameters>
+<parameter name="instance">
+<parameter_description> The instance to remove handlers from
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> the closure data of the handlers' closures
+</parameter_description>
+</parameter>
+</parameters>
+<return> The number of handlers that matched.
+
+</return>
+</function>
+
+<function name="g_signal_handlers_disconnect_by_func">
+<description>
+Disconnects all handlers on an instance that match @func and @data.
+
+
+</description>
+<parameters>
+<parameter name="instance">
+<parameter_description> The instance to remove handlers from.
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> The C closure callback of the handlers (useless for non-C closures).
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> The closure data of the handlers' closures.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The number of handlers that matched.
+</return>
+</function>
+
 <function name="g_signal_handlers_disconnect_matched">
 <description>
 Disconnects all handlers on an instance that match a certain
@@ -33176,6 +37345,30 @@ and/or @data the handlers have to match.
 </return>
 </function>
 
+<function name="g_signal_handlers_unblock_by_func">
+<description>
+Unblocks all handlers on an instance that match @func and @data.
+
+
+</description>
+<parameters>
+<parameter name="instance">
+<parameter_description> The instance to unblock handlers from.
+</parameter_description>
+</parameter>
+<parameter name="func">
+<parameter_description> The C closure callback of the handlers (useless for non-C closures).
+</parameter_description>
+</parameter>
+<parameter name="data">
+<parameter_description> The closure data of the handlers' closures.
+</parameter_description>
+</parameter>
+</parameters>
+<return> The number of handlers that matched.
+</return>
+</function>
+
 <function name="g_signal_handlers_unblock_matched">
 <description>
 Unblocks all handlers on an instance that match a certain selection
@@ -34090,6 +38283,7 @@ Allocates space for one #GSList element. It is called by the
 g_slist_append(), g_slist_prepend(), g_slist_insert() and
 g_slist_insert_sorted() functions and so is rarely used on its own.
 
+
 </description>
 <parameters>
 </parameters>
@@ -34580,6 +38774,7 @@ count its elements.
 <description>
 A convenience macro to get the next element in a #GSList.
 
+
 </description>
 <parameters>
 <parameter name="slist">
@@ -36215,6 +40410,7 @@ Deprecated: 2.32: Just use a #GMutex
 </parameter>
 </parameters>
 <return> the #GMutex corresponding to @mutex.
+
 </return>
 </function>
 
@@ -36265,6 +40461,7 @@ Deprecated: 2.32: Use g_mutex_trylock()
 </parameter>
 </parameters>
 <return> %TRUE, if the #GStaticMutex could be locked.
+
 </return>
 </function>
 
@@ -36467,6 +40664,7 @@ Deprecated: 2.32: Use g_rec_mutex_trylock()
 </parameter>
 </parameters>
 <return> %TRUE, if @mutex could be locked.
+
 </return>
 </function>
 
@@ -36511,6 +40709,7 @@ Deprecated: 2.32: Use g_rec_mutex_unlock()
 </parameters>
 <return> number of times @mutex has been locked by the current
 thread.
+
 </return>
 </function>
 
@@ -36587,7 +40786,6 @@ lock @lock for writing, immediately returns %FALSE. Otherwise locks
 @lock for reading and returns %TRUE. This lock has to be unlocked by
 g_static_rw_lock_reader_unlock().
 
-Deprectated: 2.32: Use g_rw_lock_reader_trylock() instead
 
 </description>
 <parameters>
@@ -36597,6 +40795,8 @@ Deprectated: 2.32: Use g_rw_lock_reader_trylock() instead
 </parameter>
 </parameters>
 <return> %TRUE, if @lock could be locked for reading.
+
+Deprectated: 2.32: Use g_rw_lock_reader_trylock() instead
 </return>
 </function>
 
@@ -36647,7 +40847,6 @@ either reading or writing) by another thread, it immediately returns
 %FALSE. Otherwise it locks @lock for writing and returns %TRUE. This
 lock has to be unlocked by g_static_rw_lock_writer_unlock().
 
-Deprectated: 2.32: Use g_rw_lock_writer_trylock() instead
 
 </description>
 <parameters>
@@ -36657,6 +40856,8 @@ Deprectated: 2.32: Use g_rw_lock_writer_trylock() instead
 </parameter>
 </parameters>
 <return> %TRUE, if @lock could be locked for writing.
+
+Deprectated: 2.32: Use g_rw_lock_writer_trylock() instead
 </return>
 </function>
 
@@ -36902,7 +41103,7 @@ Also see g_strchomp() and g_strstrip().
 
 <function name="g_strcmp0">
 <description>
-Compares @str1 and @str2 like strcmp(). Handles %NULL 
+Compares @str1 and @str2 like strcmp(). Handles %NULL
 gracefully by sorting it before non-%NULL strings.
 Comparing two %NULL pointers returns 0.
 
@@ -36919,7 +41120,7 @@ Since: 2.16
 </parameter_description>
 </parameter>
 </parameters>
-<return> -1, 0 or 1, if @str1 is &lt;, == or &gt; than @str2.
+<return> an integer less than, equal to, or greater than zero, if @str1 is &lt;, == or &gt; than @str2.
 
 </return>
 </function>
@@ -39010,7 +43211,7 @@ For example:
 * context is already owned by another thread.
 * /
 g_test_expect_message (G_LOG_DOMAIN,
-G_LOG_LEVEL_CRITICIAL,
+G_LOG_LEVEL_CRITICAL,
 &quot;assertion.*acquired_context.*failed&quot;);
 g_main_context_push_thread_default (bad_context);
 g_test_assert_expected_messages ();
@@ -39983,6 +44184,7 @@ Use g_thread_new().
 </parameter>
 </parameters>
 <return> the new #GThread on success.
+
 </return>
 </function>
 
@@ -41338,6 +45540,7 @@ stopped. The return value is the number of seconds elapsed,
 including any fractional part. The @microseconds out parameter is
 essentially useless.
 
+
 </description>
 <parameters>
 <parameter name="timer">
@@ -41361,6 +45564,7 @@ fractional part.
 Creates a new timer, and starts timing (i.e. g_timer_start() is
 implicitly called for you).
 
+
 </description>
 <parameters>
 </parameters>
@@ -41994,6 +46198,55 @@ Since: 2.24
 </return>
 </function>
 
+<function name="g_try_new">
+<description>
+Attempts to allocate @n_structs elements of type @struct_type, and returns
+%NULL on failure. Contrast with g_new(), which aborts the program on failure.
+The returned pointer is cast to a pointer to the given type.
+The function returns %NULL when @n_structs is 0 of if an overflow occurs.
+
+Since: 2.8
+
+</description>
+<parameters>
+<parameter name="struct_type">
+<parameter_description> the type of the elements to allocate
+</parameter_description>
+</parameter>
+<parameter name="n_structs">
+<parameter_description> the number of elements to allocate
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the allocated memory, cast to a pointer to @struct_type
+</return>
+</function>
+
+<function name="g_try_new0">
+<description>
+Attempts to allocate @n_structs elements of type @struct_type, initialized
+to 0's, and returns %NULL on failure. Contrast with g_new0(), which aborts
+the program on failure.
+The returned pointer is cast to a pointer to the given type.
+The function returns %NULL when @n_structs is 0 of if an overflow occurs.
+
+Since: 2.8
+
+</description>
+<parameters>
+<parameter name="struct_type">
+<parameter_description> the type of the elements to allocate
+</parameter_description>
+</parameter>
+<parameter name="n_structs">
+<parameter_description> the number of elements to allocate
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the allocated memory, cast to a pointer to @struct_type
+</return>
+</function>
+
 <function name="g_try_realloc">
 <description>
 Attempts to realloc @mem to a new size, @n_bytes, and returns %NULL
@@ -42042,6 +46295,35 @@ Since: 2.24
 </return>
 </function>
 
+<function name="g_try_renew">
+<description>
+Attempts to reallocate the memory pointed to by @mem, so that it now has
+space for @n_structs elements of type @struct_type, and returns %NULL on
+failure. Contrast with g_renew(), which aborts the program on failure.
+It returns the new address of the memory, which may have been moved.
+The function returns %NULL if an overflow occurs.
+
+Since: 2.8
+
+</description>
+<parameters>
+<parameter name="struct_type">
+<parameter_description> the type of the elements to allocate
+</parameter_description>
+</parameter>
+<parameter name="mem">
+<parameter_description> the currently allocated memory
+</parameter_description>
+</parameter>
+<parameter name="n_structs">
+<parameter_description> the number of elements to allocate
+</parameter_description>
+</parameter>
+</parameters>
+<return> a pointer to the new allocated memory, cast to a pointer to @struct_type
+</return>
+</function>
+
 <function name="g_tuples_destroy">
 <description>
 Frees the records which were returned by g_relation_select(). This
@@ -42085,6 +46367,7 @@ Deprecated: 2.26: Rarely used API
 </parameter>
 </parameters>
 <return> the field of the record.
+
 </return>
 </function>
 
@@ -42723,17 +47006,11 @@ be retrieved from a subtype using g_type_get_qdata().
 
 <function name="g_type_init">
 <description>
-Prior to any use of the type system, g_type_init() has to be called
-to initialize the type system and assorted other code portions
-(such as the various fundamental type implementations or the signal
-system).
-
-This function is idempotent: If you call it multiple times, all but
-the first calls will be silently ignored.
-
-There is no way to undo the effect of g_type_init().
+This function used to initialise the type system.  Since GLib 2.36,
+the type system is initialised automatically and this function does
+nothing.
 
-Since version 2.24 this also initializes the thread system
+Deprecated: 2.36: the type system is now initialised automatically
 
 </description>
 <parameters>
@@ -42743,9 +47020,14 @@ Since version 2.24 this also initializes the thread system
 
 <function name="g_type_init_with_debug_flags">
 <description>
-Similar to g_type_init(), but additionally sets debug flags.
+This function used to initialise the type system with debugging
+flags.  Since GLib 2.36, the type system is initialised automatically
+and this function does nothing.
+
+If you need to enable debugging features, use the GOBJECT_DEBUG
+environment variable.
 
-This function is idempotent.
+Deprecated: 2.36: the type system is now initialised automatically
 
 </description>
 <parameters>
@@ -44565,11 +48847,15 @@ the range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.
 <function name="g_unix_signal_source_new">
 <description>
 Create a #GSource that will be dispatched upon delivery of the UNIX
-signal @signum.  Currently only &lt;literal&gt;SIGHUP&lt;/literal&gt;,
-&lt;literal&gt;SIGINT&lt;/literal&gt;, and &lt;literal&gt;SIGTERM&lt;/literal&gt; can
-be monitored.  Note that unlike the UNIX default, all sources which
-have created a watch will be dispatched, regardless of which
-underlying thread invoked g_unix_signal_source_new().
+signal @signum.  In GLib versions before 2.36, only
+&lt;literal&gt;SIGHUP&lt;/literal&gt;, &lt;literal&gt;SIGINT&lt;/literal&gt;,
+&lt;literal&gt;SIGTERM&lt;/literal&gt; can be monitored.  In GLib 2.36,
+&lt;literal&gt;SIGUSR1&lt;/literal&gt; and &lt;literal&gt;SIGUSR2&lt;/literal&gt; were
+added.
+
+Note that unlike the UNIX default, all sources which have created a
+watch will be dispatched, regardless of which underlying thread
+invoked g_unix_signal_source_new().
 
 For example, an effective use of this function is to handle &lt;literal&gt;SIGTERM&lt;/literal&gt;
 cleanly; flushing any outstanding files, and then calling
@@ -45144,6 +49430,25 @@ Unicode character, returns (gunichar)-1.
 </return>
 </function>
 
+<function name="g_utf8_next_char">
+<description>
+Skips to the next character in a UTF-8 string. The string must be
+valid; this macro is as fast as possible, and has no error-checking.
+You would use this macro to iterate over a string character by
+character. The macro returns the start of the next UTF-8 character.
+Before using this macro, use g_utf8_validate() to validate strings
+that may contain invalid UTF-8.
+
+</description>
+<parameters>
+<parameter name="p">
+<parameter_description> Pointer to the start of a valid UTF-8 character
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_utf8_normalize">
 <description>
 Converts a string into canonical form, standardizing
@@ -48101,6 +52406,27 @@ Since: 2.24
 </return>
 </function>
 
+<function name="g_variant_get_data_as_bytes">
+<description>
+Returns a pointer to the serialised form of a #GVariant instance.
+The semantics of this function are exactly the same as
+g_variant_get_data(), except that the returned #GBytes holds
+a reference to the variant data.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="value">
+<parameter_description> a #GVariant
+</parameter_description>
+</parameter>
+</parameters>
+<return> A new #GBytes representing the variant data
+
+</return>
+</function>
+
 <function name="g_variant_get_double">
 <description>
 Returns the double precision floating point value of @value.
@@ -49492,6 +53818,36 @@ Since: 2.32
 </return>
 </function>
 
+<function name="g_variant_new_from_bytes">
+<description>
+Constructs a new serialised-mode #GVariant instance.  This is the
+inner interface for creation of new serialised values that gets
+called from various functions in gvariant.c.
+
+A reference is taken on @bytes.
+
+Since: 2.36
+
+</description>
+<parameters>
+<parameter name="type">
+<parameter_description> a #GVariantType
+</parameter_description>
+</parameter>
+<parameter name="bytes">
+<parameter_description> a #GBytes
+</parameter_description>
+</parameter>
+<parameter name="trusted">
+<parameter_description> if the contents of @bytes are trusted
+</parameter_description>
+</parameter>
+</parameters>
+<return> a new #GVariant with a floating reference
+
+</return>
+</function>
+
 <function name="g_variant_new_from_data">
 <description>
 Creates a new #GVariant instance from serialised data.
@@ -50050,6 +54406,7 @@ then it will be set to reflect the error that occurred.
 Officially, the language understood by the parser is &quot;any string
 produced by g_variant_print()&quot;.
 
+
 </description>
 <parameters>
 <parameter name="type">
@@ -51236,6 +55593,34 @@ Since: 2.30
 <return></return>
 </function>
 
+<function name="g_warn_if_fail">
+<description>
+Logs a warning if the expression is not true.
+
+Since: 2.16
+
+</description>
+<parameters>
+<parameter name="expr">
+<parameter_description> the expression to check
+</parameter_description>
+</parameter>
+</parameters>
+<return></return>
+</function>
+
+<function name="g_warn_if_reached">
+<description>
+Logs a critical warning.
+
+Since: 2.16
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
 <function name="g_warning">
 <description>
 A convenience function/macro to log a warning message.
@@ -51620,6 +56005,16 @@ Corresponds to the standard C &lt;type&gt;char&lt;/type&gt; type.
 <return></return>
 </function>
 
+<function name="gchararray">
+<description>
+A C representable type name for #G_TYPE_STRING.
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
 <function name="gconstpointer">
 <description>
 An untyped pointer to constant data.
@@ -52043,6 +56438,59 @@ Values of this type can range from 0 to #G_MAXULONG.
 <return></return>
 </function>
 
+<function name="gunichar">
+<description>
+A type which can hold any UTF-32 or UCS-4 character code,
+also known as a Unicode code point.
+
+If you want to produce the UTF-8 representation of a #gunichar,
+use g_ucs4_to_utf8(). See also g_utf8_to_ucs4() for the reverse
+process.
+
+To print/scan values of this type as integer, use
+%G_GINT32_MODIFIER and/or %G_GUINT32_FORMAT.
+
+The notation to express a Unicode code point in running text is
+as a hexadecimal number with four to six digits and uppercase
+letters, prefixed by the string &quot;U+&quot;. Leading zeros are omitted,
+unless the code point would have fewer than four hexadecimal digits.
+For example, &quot;U+0041 LATIN CAPITAL LETTER A&quot;. To print a code point
+in the U+-notation, use the format string &quot;U+\%04&quot;G_GINT32_FORMAT&quot;X&quot;.
+To scan, use the format string &quot;U+\%06&quot;G_GINT32_FORMAT&quot;X&quot;.
+
+|[
+gunichar c;
+sscanf (&quot;U+0041&quot;, &quot;U+%06&quot;G_GINT32_FORMAT&quot;X&quot;, &amp;c)
+g_print (&quot;Read U+%04&quot;G_GINT32_FORMAT&quot;X&quot;, c);
+]|
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
+<function name="gunichar2">
+<description>
+A type which can hold any UTF-16 code
+point&lt;footnote id=&quot;utf16_surrogate_pairs&quot;&gt;UTF-16 also has so called
+&lt;firstterm&gt;surrogate pairs&lt;/firstterm&gt; to encode characters beyond
+the BMP as pairs of 16bit numbers. Surrogate pairs cannot be stored
+in a single gunichar2 field, but all GLib functions accepting gunichar2
+arrays will correctly interpret surrogate pairs.&lt;/footnote&gt;.
+
+To print/scan values of this type to/from text you need to convert
+to/from UTF-8, using g_utf16_to_utf8()/g_utf8_to_utf16().
+
+To print/scan values of this type as integer, use
+%G_GINT16_MODIFIER and/or %G_GUINT16_FORMAT.
+
+</description>
+<parameters>
+</parameters>
+<return></return>
+</function>
+
 <function name="gushort">
 <description>
 Corresponds to the standard C &lt;type&gt;unsigned short&lt;/type&gt; type.
index 38f3afc..e903b4a 100644 (file)
             Returns: the summary
             See set_summary() for more information
 
+            Since: 2.14
         </description>
         <parameters>
         </parameters>
         <return> the summary
-
-            Since: 2.14
         </return>
     </function>
 
             Returns: the description
             See set_description() for more information
 
+            Since: 2.14
         </description>
         <parameters>
         </parameters>
         <return> the description
-
-            Since: 2.14
         </return>
     </function>
 
@@ -90,6 +88,8 @@
 <description>
 Return value: the value associated with the key as a double.
 
+Since: 2.14
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -112,8 +112,6 @@ Return value: the value associated with the key as a double.
 </parameters>
 <return> the value associated with the key as a double, or
 0.0 if the key was not found or could not be parsed.
-
-Since: 2.14
 </return>
 </function>
 
@@ -153,6 +151,7 @@ Since: 2.14
 Loads a key file into an empty KeyFile instance.
 If the file could not be loaded then a FileError or KeyFileError exception is thrown.
 
+Since: 2.6
 \throw Glib::FileError
 \throw Glib::KeyFileError
 </description>
@@ -174,8 +173,7 @@ If the file could not be loaded then a FileError or KeyFileError exception is th
 </parameter_description>
 </parameter>
 </parameters>
-<return> %TRUE if a key file could be loaded, %FALSE othewise
-Since: 2.6
+<return> %TRUE if a key file could be loaded, %FALSE otherwise
 </return>
 </function>
 
@@ -184,6 +182,8 @@ Since: 2.6
 <description>
 Returns the value associated with @key under @group_name.
 
+Since: 2.6
+
 \throw Glib::FileError in the event the key cannot be found (with the Glib::KEY_FILE_ERROR_KEY_NOT_FOUND code).
 \throw Glib::KeyFileError in the event that the @group_name cannot be found (with the Glib::KEY_FILE_ERROR_GROUP_NOT_FOUND).
 </description>
@@ -206,8 +206,6 @@ Returns the value associated with @key under @group_name.
 </parameter>
 </parameters>
 <return> The value as a string.
-
-Since: 2.6
 </return>
 </function>
 
@@ -219,6 +217,8 @@ If @key is %NULL then @comment will be read from above
 @comment will be read from above the first group in the file.
 Use the overrides for a %NULL @key or @group.
 
+Since: 2.6
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -240,8 +240,6 @@ Use the overrides for a %NULL @key or @group.
 </parameter>
 </parameters>
 <return> The comment
-
-Since: 2.6
 </return>
 </function>
 
@@ -314,6 +312,8 @@ be removed above the first group in the file.
 Looks whether the key file has the key @key in the group
 @group_name. 
 
+Since: 2.6
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -336,8 +336,6 @@ Looks whether the key file has the key @key in the group
 </parameters>
 <return> %TRUE if @key is a part of @group_name, %FALSE
 otherwise.
-
-Since: 2.6
 </return>
 </function>
 
@@ -345,6 +343,8 @@ Since: 2.6
 <description>
 Return value: a newly allocated string or %NULL.
 
+Since: 2.6
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -367,8 +367,6 @@ Return value: a newly allocated string or %NULL.
 </parameters>
 <return> a newly allocated string or %NULL if the specified 
 key cannot be found.
-
-Since: 2.6
 </return>
 </function>
 
@@ -376,6 +374,8 @@ Since: 2.6
 <description>
 Return value: a newly allocated string or %NULL.
 
+Since: 2.6
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -398,8 +398,6 @@ Return value: a newly allocated string or %NULL.
 </parameters>
 <return> a newly allocated string or %NULL if the specified 
 key cannot be found.
-
-Since: 2.6
 </return>
 </function>
 
@@ -407,6 +405,8 @@ Since: 2.6
 <description>
 Return value: a newly allocated string or %NULL.
 
+Since: 2.6
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -433,8 +433,6 @@ Return value: a newly allocated string or %NULL.
 </parameters>
 <return> a newly allocated string or %NULL if the specified 
 key cannot be found.
-
-Since: 2.6
 </return>
 </function>
 
@@ -442,6 +440,8 @@ Since: 2.6
 <description>
 Return value: the value associated with the key as a boolean.
 
+Since: 2.6
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -464,8 +464,6 @@ Return value: the value associated with the key as a boolean.
 </parameters>
 <return> the value associated with the key as a boolean, 
 or %FALSE if the key was not found or could not be parsed.
-
-Since: 2.6
 </return>
 </function>
 
@@ -473,6 +471,8 @@ Since: 2.6
 <description>
 Return value: the value associated with the key as an integer.
 
+Since: 2.6
+
 \throw Glib::KeyFileError
 </description>
 <parameters>
@@ -495,8 +495,6 @@ Return value: the value associated with the key as an integer.
 </parameters>
 <return> the value associated with the key as an integer, or
 0 if the key was not found or could not be parsed.
-
-Since: 2.6
 </return>
 </function>
 
index 9dd327a..d173edc 100644 (file)
   (c-name "GDateTime")
 )
 
+(define-object GArray
+  (in-module "GLib")
+  (c-name "GArray")
+)
+
+(define-object IOChannel
+  (in-module "GLib")
+  (c-name "GIOChannel")
+)
+
 (define-object KeyFile
   (in-module "GLib")
   (c-name "GKeyFile")
index f04a14b..bc0f404 100644 (file)
@@ -140,8 +140,7 @@ public:
   static Glib::RefPtr<IOChannel> create_from_fd(int fd);
   _IGNORE(g_io_channel_unix_new)
 
-/* defined(DOXYGEN_SHOULD_SKIP_THIS) actually does the opposite of what it looks like... */
-#if defined(G_OS_WIN32) || defined(DOXYGEN_SHOULD_SKIP_THIS)
+#ifdef G_OS_WIN32
 
   /** Create an I/O channel for C runtime (emulated Unix-like) file descriptors.
    * After calling add_watch() on a I/O channel returned by this function, you
@@ -162,7 +161,7 @@ public:
   static Glib::RefPtr<IOChannel> create_from_win32_socket(int socket);
   _IGNORE(g_io_channel_win32_new_socket)
 
-#endif /* defined(G_OS_WIN32) || defined(DOXYGEN_SHOULD_SKIP_THIS) */
+#endif /* G_OS_WIN32 */
 
   /** Read a single UCS-4 character.
    * @retval thechar The Unicode character.
@@ -428,7 +427,7 @@ protected:
 
   /** Constructor that should be used by derived classes.
    * Use this constructor if you want to inherit from IOChannel.
-   * It will set up a GIOChannel that will call the vfuncs of your 
+   * It will set up a GIOChannel that will call the vfuncs of your
    * class even if it is being used from C code, and it will keep
    * a reference to the C++ code while the GIOChannel exists.
    */
index 5a6c65e..366b498 100644 (file)
@@ -155,7 +155,7 @@ bool KeyFile::get_boolean(const Glib::ustring& key) const
 {
   GError* gerror = 0;
   const bool value =
-    static_cast<bool>(g_key_file_get_boolean(const_cast<GKeyFile*>(gobj()), 
+    static_cast<bool>(g_key_file_get_boolean(const_cast<GKeyFile*>(gobj()),
     0, key.c_str(), &gerror));
   if(gerror)
     Glib::Error::throw_exception(gerror);
@@ -213,7 +213,7 @@ double KeyFile::get_double(const Glib::ustring& key) const
 
 void KeyFile::set_double(const Glib::ustring& key, double value)
 {
-  g_key_file_set_double(gobj(), 0, key.c_str(), value); 
+  g_key_file_set_double(gobj(), 0, key.c_str(), value);
 }
 
 # define GLIBMM_ERROR_ARG
index 415dd49..a572e4d 100644 (file)
@@ -37,12 +37,12 @@ namespace Glib
  */
 _WRAP_GERROR(KeyFileError, GKeyFileError, G_KEY_FILE_ERROR, NO_GTYPE)
 
-/** This class lets you parse, edit or create files containing groups of key-value pairs, which we call key files 
- * for lack of a better name. Several freedesktop.org specifications use key files now, e.g the Desktop Entry 
+/** This class lets you parse, edit or create files containing groups of key-value pairs, which we call key files
+ * for lack of a better name. Several freedesktop.org specifications use key files now, e.g the Desktop Entry
  * Specification and the Icon Theme Specification.
  *
- * The syntax of key files is described in detail in the Desktop Entry Specification, here is a quick summary: Key  
- * files consists of groups of key-value pairs, interspersed with comments. 
+ * The syntax of key files is described in detail in the Desktop Entry Specification, here is a quick summary: Key
+ * files consists of groups of key-value pairs, interspersed with comments.
  *
  * @code
  * # this is just an example
@@ -67,28 +67,28 @@ _WRAP_GERROR(KeyFileError, GKeyFileError, G_KEY_FILE_ERROR, NO_GTYPE)
  *
  * Lines beginning with a '#' and blank lines are considered comments.
  *
- * Groups are started by a header line containing the group name enclosed in '[' and ']', and ended implicitly by 
+ * Groups are started by a header line containing the group name enclosed in '[' and ']', and ended implicitly by
  * the start of the next group or the end of the file. Each key-value pair must be contained in a group.
- * 
- * Key-value pairs generally have the form key=value, with the exception of localized strings, which have the form 
- * key[locale]=value. Space before and after the '=' character are ignored. Newline, tab, carriage return and 
- * backslash characters in value are escaped as \\n, \\t, \\r, and \\\\, respectively. To preserve leading spaces in 
+ *
+ * Key-value pairs generally have the form key=value, with the exception of localized strings, which have the form
+ * key[locale]=value. Space before and after the '=' character are ignored. Newline, tab, carriage return and
+ * backslash characters in value are escaped as \\n, \\t, \\r, and \\\\, respectively. To preserve leading spaces in
  * values, these can also be escaped as \\s.
- * 
- * Key files can store strings (possibly with localized variants), integers, booleans and lists of these. Lists are 
- * separated by a separator character, typically ';' or ','. To use the list separator character in a value in a 
+ *
+ * Key files can store strings (possibly with localized variants), integers, booleans and lists of these. Lists are
+ * separated by a separator character, typically ';' or ','. To use the list separator character in a value in a
  * list, it has to be escaped by prefixing it with a backslash.
- * 
- * This syntax is obviously inspired by the .ini files commonly met on Windows, but there are some important 
+ *
+ * This syntax is obviously inspired by the .ini files commonly met on Windows, but there are some important
  * differences:
  * - .ini files use the ';' character to begin comments, key files use the '#' character.
  * - Key files allow only comments before the first group.
  * - Key files are always encoded in UTF-8.
  * - Key and Group names are case-sensitive, for example a group called [GROUP] is a different group from [group].
- * 
- * Note that in contrast to the Desktop Entry Specification, groups in key files may contain the same key multiple 
- * times; the last entry wins. Key files may also contain multiple groups with the same name; they are merged 
- * together. Another difference is that keys and group names in key files are not restricted to ASCII characters. 
+ *
+ * Note that in contrast to the Desktop Entry Specification, groups in key files may contain the same key multiple
+ * times; the last entry wins. Key files may also contain multiple groups with the same name; they are merged
+ * together. Another difference is that keys and group names in key files are not restricted to ASCII characters.
  *
  * @newin{2,14}
  */
@@ -112,17 +112,17 @@ public:
   _IGNORE(g_key_file_free)
 
   /** Creates a glibmm KeyFile wrapper for a GKeyFile object.
-   * Note, when using this that when the wrapper is deleted, 
-   * it will not automatically deleted the GKeyFile unless you
-   * set the delete_c_instance boolean to true.
-   * @param castitem The C instance to wrap
-   * @param delete_c_instance If the C instance should be deleted when
+   * Note, when using this that when the wrapper is deleted,
+   * it will not automatically delete the GKeyFile unless you
+   * set the @a takes_ownership boolean to <tt>true</tt>.
+   * @param castitem The C instance to wrap.
+   * @param takes_ownership If the C instance should be deleted when
    * the wrapper is deleted.
    */
   KeyFile(GKeyFile* castitem, bool takes_ownership = false);
 
 public:
-  _WRAP_METHOD(bool load_from_file(const std::string& filename, KeyFileFlags flags = Glib::KEY_FILE_NONE), g_key_file_load_from_file, errthrow)
+  _WRAP_METHOD(bool load_from_file(const std::string& file, KeyFileFlags flags = Glib::KEY_FILE_NONE), g_key_file_load_from_file, errthrow)
 
   /** Loads a KeyFile from memory
    * @param data The data to use as a KeyFile
@@ -262,7 +262,7 @@ _DEPRECATE_IFDEF_END
 
   /** Associates a new double value with @a key under the start group.
    * If @a key  cannot be found then it is created.
-   * 
+   *
    * @newin{2,12}
    * @param key A key.
    * @param value An double value.
@@ -349,7 +349,7 @@ _DEPRECATE_IFDEF_END
   _WRAP_METHOD(void set_int64(const Glib::ustring& group_name, const Glib::ustring& key, gint64 value), g_key_file_set_int64)
   _WRAP_METHOD(void set_uint64(const Glib::ustring& group_name, const Glib::ustring& key, guint64 value), g_key_file_set_uint64)
        
-  /** Sets a list of string values for @a key under @a group_name. If 
+  /** Sets a list of string values for @a key under @a group_name. If
    * key cannot be found it is created. If @a group_name cannot be found
    * it is created.
    * @param group_name The name of a group
index 3d52d81..ae3d4d2 100644 (file)
@@ -63,13 +63,13 @@ public:
 
   static void text(GMarkupParseContext* context,
                    const char*          text,
-                   gsize                text_len,  
+                   gsize                text_len,
                    void*                user_data,
                    GError**             error);
 
   static void passthrough(GMarkupParseContext* context,
                           const char*          passthrough_text,
-                          gsize                text_len,  
+                          gsize                text_len,
                           void*                user_data,
                           GError**             error);
 
@@ -149,7 +149,7 @@ void ParserCallbacks::end_element(GMarkupParseContext* context,
 
 void ParserCallbacks::text(GMarkupParseContext* context,
                            const char*          text,
-                           gsize                text_len,  
+                           gsize                text_len,
                            void*                user_data,
                            GError**             error)
 {
@@ -172,7 +172,7 @@ void ParserCallbacks::text(GMarkupParseContext* context,
 
 void ParserCallbacks::passthrough(GMarkupParseContext* context,
                                   const char*          passthrough_text,
-                                  gsize                text_len,  
+                                  gsize                text_len,
                                   void*                user_data,
                                   GError**             error)
 {
index a1bdb7e..afa2bcd 100644 (file)
@@ -44,7 +44,7 @@ class Module
   _IGNORE(g_module_open, g_module_close)
 
 public:
+
   /** Opens a module.
    *
    * First of all it tries to open file_name as a module. If that
index c8f89fb..5a4a4b7 100644 (file)
@@ -30,11 +30,11 @@ _DEFS(glibmm,glib)
 namespace Glib
 {
 
-//Hand-written, instead of using _WRAP_ENUM, 
+//Hand-written, instead of using _WRAP_ENUM,
 //because the C enum values don't have a prefix.
 
 /** Specifies the type of traveral performed by methods such as NodeTree::_traverse() and NodeTree::find().
- * 
+ *
  * @ingroup glibmmEnums
  */
 enum TraverseType
@@ -47,24 +47,24 @@ enum TraverseType
 
 /** N-ary Trees - trees of data with any number of branches
  * The NodeTree class and its associated functions provide an N-ary tree data structure, in which nodes in the tree can contain arbitrary data.
- * 
+ *
  * To insert a node into a tree use insert(), insert_before(), append() or prepend().
- * 
+ *
  * To create a new node and insert it into a tree use insert_data(), insert_data_before(), append_data() and prepend_data().
- * 
+ *
  * To reverse the children of a node use reverse_children().
- * 
+ *
  * To find a node use root(), find(), find_child(), index_of(), child_index(), first_child(), last_child(), nth_child(), first_sibling(), prev_sibling(), next_sibling() or last_sibling().
- * 
+ *
  * To get information about a node or tree use is_leaf(), is_root(), depth(), node_count(), child_count(), is_ancestor() or max_height().
- * 
+ *
  * To traverse a tree, calling a function for each node visited in the traversal, use traverse() or foreach().
- * 
+ *
  * To remove a node or subtree from a tree use unlink().
  *
  * @newin{2,18}
  */
-template <typename T> 
+template <typename T>
 class NodeTree
 {
   _CLASS_GENERIC(NodeTree, GNode)
@@ -136,7 +136,7 @@ public:
 
   /** Inserts a NodeTree beneath the parent at the given position.
    *
-   * @param position the position to place node at, with respect to its siblings 
+   * @param position the position to place node at, with respect to its siblings
    * If position is -1, node is inserted as the last child of parent
    * @param node the NodeTree to insert
    * @return the inserted NodeTree
@@ -189,7 +189,7 @@ public:
 
   /** Inserts a NodeTree as the first child.
    *
-   * @param data the data for the NodeTree
+   * @param node the NodeTree to prepend
    * @return the NodeTree
    */
   NodeTree<T>& prepend(NodeTree<T>& node)
@@ -201,9 +201,9 @@ public:
 
   /** Inserts a new NodeTree at the given position.
    *
-   * @param position the position to place the new NodeTree at. 
+   * @param position the position to place the new NodeTree at.
    * If position is -1, the new NodeTree is inserted as the last child of parent
-   * @param data the data for the new NodeTree
+   * @param the_data the data for the new NodeTree
    * @return the new NodeTree
    */
   NodeTree<T>* insert_data(int position, const T& the_data)
@@ -216,8 +216,8 @@ public:
 
   /** Inserts a new NodeTree before the given sibling.
    *
-   * @param sibling the sibling NodeTree to place node before. 
-   * @param data the data for the new NodeTree
+   * @param sibling the sibling NodeTree to place node before.
+   * @param the_data the data for the new NodeTree
    * @return the new NodeTree
    */
   NodeTree<T>* insert_data_before(NodeTree<T>& sibling, const T& the_data)
@@ -230,7 +230,7 @@ public:
 
   /** Inserts a new NodeTree as the last child.
    *
-   * @param data the data for the new NodeTree
+   * @param the_data the data for the new NodeTree
    * @return the new NodeTree
    */
   NodeTree<T>* append_data(const T& the_data)
@@ -243,7 +243,7 @@ public:
 
   /** Inserts a new NodeTree as the first child.
    *
-   * @param data the data for the new NodeTree
+   * @param the_data the data for the new NodeTree
    * @return the new NodeTree
    */
   NodeTree<T>* prepend_data(const T& the_data)
@@ -292,13 +292,13 @@ public:
   };
 
   /** Traverses a tree starting at the current node.
-   * It calls the given function for each node visited. 
+   * It calls the given function for each node visited.
    * The traversal can be halted at any point by returning true from @a func.
    *
    * @param order The order in which nodes are visited.
    * @param flags Which types of children are to be visited.
-   * @param max_depth The maximum depth of the traversal. 
-   * Nodes below this depth will not be visited. 
+   * @param max_depth The maximum depth of the traversal.
+   * Nodes below this depth will not be visited.
    * If max_depth is -1 all nodes in the tree are visited.
    * If max_depth is 1, only the root is visited.
    * If max_depth is 2, the root and its children are visited. And so on.
@@ -327,7 +327,7 @@ public:
   /** Finds the first child of a NodeTree with the given data.
    *
    * @param flags Which types of children are to be visited, one of TRAVERSE_ALL, TRAVERSE_LEAVES and TRAVERSE_NON_LEAVES.
-   * @param data The data for which to search.
+   * @param the_data The data for which to search.
    * @return the found child, or 0 if the data is not found
    */
   NodeTree<T>* find_child(const T& the_data, TraverseFlags flags = TRAVERSE_ALL)
@@ -339,14 +339,14 @@ public:
     type_foreach_gnode_slot bound_slot = sigc::bind(real_slot, the_data, &child);
 
     g_node_children_foreach(gobj(), (GTraverseFlags)flags, c_callback_foreach_compare_child, reinterpret_cast<gpointer>(&bound_slot));
-    
+
     return wrap(child);
   }
 
   /** Finds the first child of a NodeTree with the given data.
    *
    * @param flags Which types of children are to be visited, one of TRAVERSE_ALL, TRAVERSE_LEAVES and TRAVERSE_NON_LEAVES.
-   * @param data The data for which to search.
+   * @param the_data The data for which to search.
    * @return the found child, or 0 if the data is not found
    */
   const NodeTree<T>* find_child(const T& the_data, TraverseFlags flags = TRAVERSE_ALL) const
@@ -360,7 +360,7 @@ public:
    *
    * @param order The order in which nodes are visited: IN_ORDER, TRAVERSE_PRE_ORDER, TRAVERSE_POST_ORDER, or TRAVERSE_LEVEL_ORDER
    * @param flags Which types of children are to be visited: one of TRAVERSE_ALL, TRAVERSE_LEAVES and TRAVERSE_NON_LEAVES.
-   * @param data The data for which to search.
+   * @param the_data The data for which to search.
    * @return The found node, or 0 if the data is not found.
    */
   NodeTree<T>* find(const T& the_data, TraverseType order = TRAVERSE_IN_ORDER, TraverseFlags flags = TRAVERSE_ALL)
@@ -381,7 +381,7 @@ public:
    *
    * @param order The order in which nodes are visited.
    * @param flags Which types of children are to be visited.
-   * @param data The data for which to search.
+   * @param the_data The data for which to search.
    * @return The found node, or 0 if the data is not found.
    */
   const NodeTree<T>* find(const T& the_data, TraverseType order = TRAVERSE_IN_ORDER, TraverseFlags flags = TRAVERSE_ALL) const
@@ -392,7 +392,7 @@ public:
 
   /** Gets the position of the first child which contains the given data.
    *
-   * @param data The data to find.
+   * @param the_data The data to find.
    * @return The index of the child which contains data, or -1 if the data is not found.
    */
   int child_index(const T& the_data) const
@@ -411,7 +411,7 @@ public:
   }
   _IGNORE(g_node_child_index)
 
-  /** Gets the position with respect to its siblings. 
+  /** Gets the position with respect to its siblings.
    * child must be a child of node.
    * The first child is numbered 0, the second 1, and so on.
    *
@@ -426,7 +426,7 @@ public:
 
   /** Gets the first child.
    *
-   * @return The first child, or 0 if the node has no children. 
+   * @return The first child, or 0 if the node has no children.
    */
   NodeTree<T>* first_child()
   {
@@ -435,7 +435,7 @@ public:
 
   /** Gets the first child.
    *
-   * @return The first child, or 0 if the node has no children. 
+   * @return The first child, or 0 if the node has no children.
    */
   const NodeTree<T>* first_child() const
   {
@@ -466,7 +466,7 @@ public:
    *
    * @return The nth child, or 0 if n is too large.
    */
-  NodeTree<T>* nth_child(int n) 
+  NodeTree<T>* nth_child(int n)
   {
     return wrap(g_node_nth_child(gobj(), n));
   }
@@ -480,7 +480,7 @@ public:
     return const_cast<NodeTree<T>*>(this)->nth_child(n);
   }
   _IGNORE(g_node_nth_child)
-  
+
   /** Gets the first sibling
    * @return The first sibling, or 0 if the node has no siblings.
    */
index fec4329..601b928 100644 (file)
@@ -64,7 +64,7 @@ OptionContext::~OptionContext()
 {
   if(has_ownership_)
     g_option_context_free(gobj());
-    
+
   gobject_ = 0;
 }
 
index 770d889..bc31f15 100644 (file)
@@ -46,12 +46,12 @@ public:
    * @param parameter_string A string which is displayed in the first line of --help output, after programname [OPTION...]
    */
   explicit OptionContext(const Glib::ustring& parameter_string = Glib::ustring());
-  
+
   //Note that, unlike Glib::Wrap(), this would create a second C++ instance for the same C instance,
   //so it should be used carefully. For instance you could not access data in a derived class via this second instance.
   explicit OptionContext(GOptionContext* castitem, bool take_ownership = false);
   virtual ~OptionContext();
-  
+
   _WRAP_METHOD(void set_help_enabled(bool help_enabled = true), g_option_context_set_help_enabled)
   _WRAP_METHOD(bool get_help_enabled() const, g_option_context_get_help_enabled)
   _WRAP_METHOD(void set_ignore_unknown_options(bool ignore_unknown = true), g_option_context_set_ignore_unknown_options)
@@ -63,16 +63,16 @@ public:
   //g_option_context_add_main_entries(), just creates a group internally, adds them to it, and does a set_main_group()
   //- a group without callbacks seems to do some simple default parsing.
   _IGNORE(g_option_context_add_main_entries)
-  
-  /** Adds an OptionGroup to the context, so that parsing with context will recognize the options in the group. 
+
+  /** Adds an OptionGroup to the context, so that parsing with context will recognize the options in the group.
    * Note that the group will not be copied, so it should exist for as long as the context exists.
    *
    * @param group The group to add.
    */
   void add_group(OptionGroup& group);
   _IGNORE(g_option_context_add_group)
-  
-  /** Sets an OptionGroup as the main group of the context. This has the same effect as calling add_group(), the only 
+
+  /** Sets an OptionGroup as the main group of the context. This has the same effect as calling add_group(), the only
    * difference is that the options in the main group are treated differently when generating --help output.
    * Note that the group will not be copied, so it should exist for as long as the context exists.
    *
@@ -80,7 +80,7 @@ public:
    */
   void set_main_group(OptionGroup& group);
   _IGNORE(g_option_context_set_main_group)
-  
+
   //We don't need this (hopefully), and the memory management would be really awkward.
   //OptionGroup& get_main_group();
   //const OptionGroup& get_main_group() const;
@@ -88,9 +88,9 @@ public:
 
   #m4 _CONVERSION(`const OptionGroup&',`GOptionGroup*',`const_cast<GOptionGroup*>(($3).gobj())')
   _WRAP_METHOD(Glib::ustring get_help(bool main_help, const OptionGroup& group) const, g_option_context_get_help)
-  /** Returns a formatted, translated help text for the given context. 
-   * To obtain the text produced by --help, call get_help (true). 
+
+  /** Returns a formatted, translated help text for the given context.
+   * To obtain the text produced by --help, call get_help (true).
    * To obtain the text produced by --help-all, call get_help(false).
    * To obtain the help text for an option group, call get_help(false, group).
    *
index 2febf45..9a64f10 100644 (file)
@@ -28,10 +28,10 @@ OptionEntry::OptionEntry()
 
 OptionEntry::~OptionEntry()
 {
-  g_free(const_cast<char*>(gobject_->long_name));  
+  g_free(const_cast<char*>(gobject_->long_name));
   g_free(const_cast<char*>(gobject_->description));
   g_free(const_cast<char*>(gobject_->arg_description));
-  g_free(gobject_);  
+  g_free(gobject_);
 }
 
 OptionEntry::OptionEntry(const OptionEntry& src)
@@ -57,7 +57,7 @@ OptionEntry& OptionEntry::operator=(const OptionEntry& src)
     gobject_->arg_data = src.gobject_->arg_data; //Shared, because it's not owned by any instance of this class anyway.
 
     if(gobject_->description)
-      g_free(const_cast<char*>(gobject_->description));    
+      g_free(const_cast<char*>(gobject_->description));
 
     gobject_->description = g_strdup(src.gobject_->description);
 
@@ -78,9 +78,9 @@ void OptionEntry::set_long_name(const Glib::ustring& value)
     gobject_->long_name = 0;
   }
 
-  //Note that we do not use NULL for an empty string, 
+  //Note that we do not use NULL for an empty string,
   //because G_OPTION_REMAINING is actually a "", so it actually has a distinct meaning:
-  //TODO: Wrap G_OPTION_REMAINING in C++ somehow, maybe as an explicit set_long_name(void) or set_is_remaining()? murrayc. 
+  //TODO: Wrap G_OPTION_REMAINING in C++ somehow, maybe as an explicit set_long_name(void) or set_is_remaining()? murrayc.
   gobj()->long_name = (value).c_str() ? g_strdup((value).c_str()) : 0;
 }
 
@@ -105,7 +105,7 @@ void OptionEntry::set_arg_description(const Glib::ustring& value)
 
   gobj()->arg_description = (value).empty() ? 0 : g_strdup((value).c_str());
 }
+
 
 } // namespace Glib
 
index 70b8d65..852dff2 100644 (file)
@@ -27,18 +27,18 @@ extern "C" { typedef struct _GOptionEntry GOptionEntry; }
 namespace Glib
 {
 
-/** An OptionEntry defines a single option. To have an effect, it must be added to an OptionGroup with 
+/** An OptionEntry defines a single option. To have an effect, it must be added to an OptionGroup with
  * OptionGroup::add_entry().
- * 
- * The long name of an option can be used to specify it in a commandline as --long_name. 
- * Every option must have a long name. To resolve conflicts if multiple option groups contain the same long name, it is also 
+ *
+ * The long name of an option can be used to specify it in a commandline as --long_name.
+ * Every option must have a long name. To resolve conflicts if multiple option groups contain the same long name, it is also
  * possible to specify the option as --groupname-long_name.
  *
  * If an option has a short name, it can be specified as -short_name in a commandline.
  *
  * The description for the option is shown in the --help  output.
  *
- * The arg_descripton is the placeholder to use for the extra argument parsed by the option in --help  output. 
+ * The arg_descripton is the placeholder to use for the extra argument parsed by the option in --help  output.
  */
 class OptionEntry
 {
@@ -60,36 +60,36 @@ public:
   OptionEntry();
   OptionEntry(const OptionEntry& src);
   virtual ~OptionEntry();
-  
+
   OptionEntry& operator=(const OptionEntry& src);
 
   //#m4 _CONVERSION(`Glib::ustring',`const gchar*',`($3).empty() ? NULL : g_strdup(($3).c_str())')
-  
+
   _MEMBER_GET(long_name, long_name, Glib::ustring, const char*)
 
   void set_long_name(const Glib::ustring& value);
-  
+
   _MEMBER_GET(short_name, short_name, gchar, gchar)
   _MEMBER_SET(short_name, short_name, gchar, gchar)
-  
+
   _MEMBER_GET(flags, flags, int, int)
   /** Set one or more OptionEntry::Flags.
    * Do not set FLAG_FILENAME. Character encoding is chosen when the OptionEntry
    * is added to an OptionGroup.
    */
   _MEMBER_SET(flags, flags, int, int)
-  
+
   _MEMBER_GET(description, description, Glib::ustring, const char*)
 
   void set_description(const Glib::ustring& value);
-  
+
   _MEMBER_GET(arg_description, arg_description, Glib::ustring, const char*)
 
   void set_arg_description(const Glib::ustring& value);
-  
+
   GOptionEntry*       gobj()       { return gobject_; }
   const GOptionEntry* gobj() const { return gobject_; }
-  
+
 protected:
 
   GOptionEntry* gobject_;
index 1d6697a..baa1331 100644 (file)
@@ -43,10 +43,10 @@ public:
 
   bool is_filename_option() const
   { return slot_filename_ != 0; }
-  
+
   const OptionGroup::SlotOptionArgString* get_slot_string() const
   { return slot_string_; }
-  
+
   const OptionGroup::SlotOptionArgFilename* get_slot_filename() const
   { return slot_filename_; }
 
@@ -743,8 +743,8 @@ void OptionGroup::CppOptionEntry::convert_c_to_cpp()
         //Glib::StringArrayHandle array_handle(*typed_arg,  Glib::OWNERSHIP_NONE);
 
         //The SUN Forte compiler complains about this:
-        // "optiongroup.cc", line 354: Error: Cannot assign Glib::ArrayHandle<Glib::ustring, 
-        // Glib::Container_Helpers::TypeTraits<Glib::ustring>> to std::vector<Glib::ustring> without 
+        // "optiongroup.cc", line 354: Error: Cannot assign Glib::ArrayHandle<Glib::ustring,
+        // Glib::Container_Helpers::TypeTraits<Glib::ustring>> to std::vector<Glib::ustring> without
         // "std::vector<Glib::ustring>::operator=(const std::vector<Glib::ustring>&)";.
         //
         //(*typed_cpp_arg) = array_handle;
@@ -777,7 +777,7 @@ void OptionGroup::CppOptionEntry::convert_c_to_cpp()
       char*** typed_arg = static_cast<char***>(carg_);
       vecustrings* typed_cpp_arg = static_cast<vecustrings*>(cpparg_);
       if(typed_arg && typed_cpp_arg)
-      { 
+      {
         typed_cpp_arg->clear();
 
         //See comments above about the SUN Forte and Tru64 compilers.
@@ -808,7 +808,7 @@ void OptionGroup::CppOptionEntry::convert_c_to_cpp()
       break;
     }
   }
-} 
+}
 
 GOptionGroup* OptionGroup::gobj_give_ownership()
 {
index 59fd117..7d330eb 100644 (file)
@@ -37,7 +37,7 @@ class OptionEntry;
 class OptionContext;
 #endif //DOXYGEN_SHOULD_SKIP_THIS
 
-/** An OptionGroup defines the options in a single group. 
+/** An OptionGroup defines the options in a single group.
  * Libraries which need to parse commandline options are expected to provide a function that allows their OptionGroups to
  * be added to the application's OptionContext.
  */
@@ -53,7 +53,7 @@ public:
    *  const Glib::ustring& value, bool has_value);.
    */
   typedef sigc::slot<bool, const Glib::ustring&, const Glib::ustring&, bool> SlotOptionArgString;
-   
+
   /** For example bool on_option_arg_filename(const Glib::ustring& option_name,
    *  const std::string& value, bool has_value);.
    */
@@ -61,10 +61,10 @@ public:
 
   OptionGroup(const Glib::ustring& name, const Glib::ustring& description, const Glib::ustring& help_description = Glib::ustring());
 
-  /** This always takes ownership of the underlying GOptionGroup, 
-   * so it is only useful with C functions that return newly-allocated GOptionGroups. 
+  /** This always takes ownership of the underlying GOptionGroup,
+   * so it is only useful with C functions that return newly-allocated GOptionGroups.
    */
-  explicit OptionGroup(GOptionGroup* castitem);  
+  explicit OptionGroup(GOptionGroup* castitem);
   _IGNORE(g_option_group_new)
 
   virtual ~OptionGroup();
@@ -87,7 +87,7 @@ public:
   void add_entry(const OptionEntry& entry, int& arg);
   void add_entry(const OptionEntry& entry, double& arg);
   void add_entry(const OptionEntry& entry, Glib::ustring& arg);
-  void add_entry_filename(const OptionEntry& entry, std::string& arg);  
+  void add_entry_filename(const OptionEntry& entry, std::string& arg);
   void add_entry(const OptionEntry& entry, vecustrings& arg);
   void add_entry_filename(const OptionEntry& entry, vecstrings& arg);
   void add_entry(const OptionEntry& entry, const SlotOptionArgString& slot);
index 63f0dff..33b1701 100644 (file)
@@ -43,53 +43,53 @@ class MatchInfo;
 
 /** Perl-compatible regular expressions - matches strings against regular expressions.
  *
- * The Glib::Regex functions implement regular expression pattern matching using 
+ * The Glib::Regex functions implement regular expression pattern matching using
  * syntax and semantics similar to Perl regular expression.
  *
- * Some functions accept a start_position argument, setting it differs from just 
- * passing over a shortened string and setting REGEX_MATCH_NOTBOL in the case 
- * of a pattern that begins with any kind of lookbehind assertion. For example, 
- * consider the pattern "\Biss\B" which finds occurrences of "iss" in the middle 
- * of words. ("\B" matches only if the current position in the subject is not a 
- * word boundary.) When applied to the string "Mississipi" from the fourth byte, 
- * namely "issipi", it does not match, because "\B" is always false at the 
- * start of the subject, which is deemed to be a word boundary. However, if 
- * the entire string is passed , but with start_position set to 4, it finds the 
+ * Some functions accept a start_position argument, setting it differs from just
+ * passing over a shortened string and setting REGEX_MATCH_NOTBOL in the case
+ * of a pattern that begins with any kind of lookbehind assertion. For example,
+ * consider the pattern "\Biss\B" which finds occurrences of "iss" in the middle
+ * of words. ("\B" matches only if the current position in the subject is not a
+ * word boundary.) When applied to the string "Mississipi" from the fourth byte,
+ * namely "issipi", it does not match, because "\B" is always false at the
+ * start of the subject, which is deemed to be a word boundary. However, if
+ * the entire string is passed , but with start_position set to 4, it finds the
  * second occurrence of "iss" because it is able to look behind the starting point
  * to discover that it is preceded by a letter.
  *
- * Note that, unless you set the REGEX_RAW flag, all the strings passed to these 
+ * Note that, unless you set the REGEX_RAW flag, all the strings passed to these
  * functions must be encoded in UTF-8. The lengths and the positions inside the
- *  strings are in bytes and not in characters, so, for instance, 
- * "\xc3\xa0" (i.e. "à") is two bytes long but it is treated as a single 
+ *  strings are in bytes and not in characters, so, for instance,
+ * "\xc3\xa0" (i.e. "à") is two bytes long but it is treated as a single
  * character. If you set REGEX_RAW the strings can be non-valid UTF-8 strings
- * and a byte is treated as a character, so "\xc3\xa0" is two bytes and 
+ * and a byte is treated as a character, so "\xc3\xa0" is two bytes and
  * two characters long.
  *
- * When matching a pattern, "\n" matches only against a "\n" character in the 
- * string, and "\r" matches only a "\r" character. To match any newline sequence 
- * use "\R". This particular group matches either the two-character sequence 
+ * When matching a pattern, "\n" matches only against a "\n" character in the
+ * string, and "\r" matches only a "\r" character. To match any newline sequence
+ * use "\R". This particular group matches either the two-character sequence
  * CR + LF ("\r\n"), or one of the single characters LF (linefeed, U+000A, "\n"),
- *  VT (vertical tab, U+000B, "\v"), FF (formfeed, U+000C, "\f"), CR (carriage 
- * return, U+000D, "\r"), NEL (next line, U+0085), LS (line separator, U+2028), 
+ *  VT (vertical tab, U+000B, "\v"), FF (formfeed, U+000C, "\f"), CR (carriage
+ * return, U+000D, "\r"), NEL (next line, U+0085), LS (line separator, U+2028),
  * or PS (paragraph separator, U+2029).
  *
- * The behaviour of the dot, circumflex, and dollar metacharacters are affected 
+ * The behaviour of the dot, circumflex, and dollar metacharacters are affected
  * by newline characters, the default is to recognize any newline character (the
  * same characters recognized by "\R"). This can be changed with REGEX_NEWLINE_CR,
- * REGEX_NEWLINE_LF and REGEX_NEWLINE_CRLF compile options, and with 
- * REGEX_MATCH_NEWLINE_ANY, REGEX_MATCH_NEWLINE_CR, REGEX_MATCH_NEWLINE_LF 
- * and REGEX_MATCH_NEWLINE_CRLF match options. These settings are also 
+ * REGEX_NEWLINE_LF and REGEX_NEWLINE_CRLF compile options, and with
+ * REGEX_MATCH_NEWLINE_ANY, REGEX_MATCH_NEWLINE_CR, REGEX_MATCH_NEWLINE_LF
+ * and REGEX_MATCH_NEWLINE_CRLF match options. These settings are also
  * relevant when compiling a pattern if REGEX_EXTENDED is set, and an unescaped
- * "#" outside a character class is encountered. This indicates a comment that 
+ * "#" outside a character class is encountered. This indicates a comment that
  * lasts until after the next newline.
  *
- * Creating and manipulating the same Glib::Regex class from different threads is 
- * not a problem as Glib::Regex does not modify its internal state between creation and 
+ * Creating and manipulating the same Glib::Regex class from different threads is
+ * not a problem as Glib::Regex does not modify its internal state between creation and
  * destruction, on the other hand Glib::MatchInfo is not threadsafe.
  *
- * The regular expressions low level functionalities are obtained through the 
- * excellent PCRE library written by Philip Hazel. 
+ * The regular expressions low level functionalities are obtained through the
+ * excellent PCRE library written by Philip Hazel.
  *
  * @newin{2,14}
  */
@@ -100,12 +100,12 @@ class Regex
 public:
 
   static Glib::RefPtr<Glib::Regex> create(const Glib::ustring& pattern, RegexCompileFlags compile_options = static_cast<RegexCompileFlags>(0), RegexMatchFlags match_options = static_cast<RegexMatchFlags>(0));
-  
+
   _WRAP_METHOD(Glib::ustring get_pattern() const, g_regex_get_pattern)
   _WRAP_METHOD(int get_max_backref() const, g_regex_get_max_backref)
   _WRAP_METHOD(int get_capture_count() const, g_regex_get_capture_count)
   _WRAP_METHOD(bool get_has_cr_or_lf() const, g_regex_get_has_cr_or_lf)
-  
+
   _WRAP_METHOD(int get_string_number(const Glib::ustring& name) const, g_regex_get_string_number)
   _WRAP_METHOD(RegexCompileFlags get_compile_flags() const, g_regex_get_compile_flags)
   _WRAP_METHOD(RegexMatchFlags get_match_flags() const, g_regex_get_match_flags)
index 13e859e..69db201 100644 (file)
@@ -84,14 +84,13 @@ private:
  * which might emit it. Actually, proxies are controlled by
  * the template derivatives, which serve as gatekeepers for the
  * types allowed on a particular signal.
- *
  */
 class SignalProxyNormal : public SignalProxyBase
 {
 public:
   ~SignalProxyNormal();
 
-  /// stops the current signal emmision (not in libsigc++)
+  /// Stops the current signal emission (not in libsigc++)
   void emission_stop();
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
@@ -102,26 +101,25 @@ public:
 
 protected:
 
-  /** Create a proxy for a signal that can be emitted by @a obj.
+  /** Creates a proxy for a signal that can be emitted by @a obj.
    * @param obj The object that can emit the signal.
    * @param info Information about the signal, including its name, and the C callbacks that should be called by glib.
    */
   SignalProxyNormal(Glib::ObjectBase* obj, const SignalProxyInfo* info);
 
-  /** Connects a signal to a generic signal handler. This is called by connect() in derived SignalProxy classes.
+  /** Connects a generic signal handler to a signal.
+   * This is called by connect() in derived SignalProxy classes.
    *
-   * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+   * @param slot The signal handler, usually created with sigc::mem_fun() or sigc::ptr_fun().
    * @param after Whether this signal handler should be called before or after the default signal handler.
    */
   sigc::slot_base& connect_(const sigc::slot_base& slot, bool after);
 
-  /** Connects a signal to a signal handler without a return value.
-   * This is called by connect() in derived SignalProxy classes.
+  /** Connects a signal handler without a return value to a signal.
+   * This is called by connect_notify() in derived SignalProxy classes.
    *
-   * By default, the signal handler will be called before the default signal handler,
-   * in which case any return value would be replaced anyway by that of the later signal handler.
-   *
-   * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+   * @param slot The signal handler, which should have a @c void return type,
+   *        usually created with sigc::mem_fun() or sigc::ptr_fun().
    * @param after Whether this signal handler should be called before or after the default signal handler.
    */
   sigc::slot_base& connect_notify_(const sigc::slot_base& slot, bool after);
@@ -129,8 +127,8 @@ protected:
 private:
   const SignalProxyInfo* info_;
 
-  //TODO: We could maybe replace both connect_ and connect_notify_ with this in future, because they don't do anything extra.
-  /** This is called by connect_ and connect_impl_.
+  //TODO: We could maybe replace both connect_() and connect_notify_() with this in future, because they don't do anything extra.
+  /** This is called by connect_() and connect_notify_().
    */
   sigc::slot_base& connect_impl_(GCallback callback, const sigc::slot_base& slot, bool after);
 
@@ -138,7 +136,6 @@ private:
   SignalProxyNormal& operator=(const SignalProxyNormal&);
 };
 
-
 dnl
 dnl GLIB_SIGNAL_PROXY([P1, P2, ...],return type)
 dnl
@@ -148,7 +145,8 @@ LINE(]__line__[)dnl
 /**** Glib::[SignalProxy]NUM($1) ***************************************************/
 
 /** Proxy for signals with NUM($1) arguments.
- * Use the connect() method, with sigc::mem_fun() or sigc::ptr_fun() to connect signals to signal handlers.
+ * Use the connect() or connect_notify() method, with sigc::mem_fun() or sigc::ptr_fun()
+ * to connect signal handlers to signals.
  */
 template <LIST(class R,ARG_CLASS($1))>
 class [SignalProxy]NUM($1) : public SignalProxyNormal
@@ -160,22 +158,35 @@ public:
   [SignalProxy]NUM($1)(ObjectBase* obj, const SignalProxyInfo* info)
     : SignalProxyNormal(obj, info) {}
 
-  /** Connects a signal to a signal handler.
+  /** Connects a signal handler to a signal.
+   *
    * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
    *
-   * @param slot The signal handler, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+   * @param slot The signal handler, usually created with sigc::mem_fun() or sigc::ptr_fun().
    * @param after Whether this signal handler should be called before or after the default signal handler.
    */
   sigc::connection connect(const SlotType& slot, bool after = true)
     { return sigc::connection(connect_(slot, after)); }
 
-  /** Connects a signal to a signal handler without a return value.
-   * By default, the signal handler will be called before the default signal handler,
-   * in which case any return value would be replaced anyway by that of the later signal handler.
+  /** Connects a signal handler without a return value to a signal.
+   * By default, the signal handler will be called before the default signal handler.
    *
-   * For instance, connect( sigc::mem_fun(*this, &TheClass::on_something) );
+   * For instance, connect_notify( sigc::mem_fun(*this, &TheClass::on_something) );
+   *
+   * If the signal requires signal handlers with a @c void return type,
+   * the only difference between connect() and connect_notify() is the default
+   * value of @a after.
    *
-   * @param slot The signal handler, which should have a void return type, usually created with sigc::mem_fun(), or sigc::ptr_fun().
+   * If the signal requires signal handlers with a return value of type T,
+   * connect_notify() binds <tt>return T()</tt> to the connected signal handler.
+   * For instance, if the return type is @c bool, the following two calls are equivalent.
+   * @code
+   * connect_notify( sigc::mem_fun(*this, &TheClass::on_something) );
+   * connect( sigc::bind_return<bool>(sigc::mem_fun(*this, &TheClass::on_something), false), false );
+   * @endcode
+   *
+   * @param slot The signal handler, which should have a @c void return type,
+   *        usually created with sigc::mem_fun() or sigc::ptr_fun().
    * @param after Whether this signal handler should be called before or after the default signal handler.
    */
   sigc::connection connect_notify(const VoidSlotType& slot, bool after = false)
@@ -195,6 +206,5 @@ GLIB_SIGNAL_PROXY(ARGS(P,6))
 
 } // namespace Glib
 
-
 #endif /* __header__ */
 
index d177833..2d4172b 100644 (file)
@@ -44,7 +44,7 @@ _WRAP_GERROR(SpawnError, GSpawnError, G_SPAWN_ERROR, NO_GTYPE, s#^2BIG$#TOOBIG#)
  * specified by the only argument that must be provided, @a argv.
  * The first string in @a argv is of
  * course the name of the program to execute. By default, the name of
- * the program must be a full path; the PATH shell variable 
+ * the program must be a full path; the PATH shell variable
  * will only be searched if you pass the SPAWN_SEARCH_PATH flag.
  *
  * On Windows, note that all the string or string vector arguments to
@@ -87,25 +87,25 @@ _WRAP_GERROR(SpawnError, GSpawnError, G_SPAWN_ERROR, NO_GTYPE, s#^2BIG$#TOOBIG#)
  * the child's environment.
  *
  * @a flags should be the bitwise OR of any flags you want to affect the
- * function's behaviour. The SPAWN_DO_NOT_REAP_CHILD flags means that 
+ * function's behaviour. The SPAWN_DO_NOT_REAP_CHILD flags means that
  * the child will not automatically be reaped; you must use a
- * ChildWatch source to be notified about the death of the child 
+ * ChildWatch source to be notified about the death of the child
  * process. Eventually you must call spawn_close_pid() on the
  * @a child_pid, in order to free resources which may be associated
  * with the child process. (On Unix, using a ChildWatch source is
- * equivalent to calling waitpid() or handling the SIGCHLD signal 
+ * equivalent to calling waitpid() or handling the SIGCHLD signal
  * manually. On Windows, calling spawn_close_pid() is equivalent
- * to calling CloseHandle() on the process handle returned in 
+ * to calling CloseHandle() on the process handle returned in
  * @a child_pid).
  *
  * PAWN_LEAVE_DESCRIPTORS_OPEN means that the parent's open file
  * descriptors will be inherited by the child; otherwise all
  * descriptors except stdin/stdout/stderr will be closed before
- * calling exec() in the child. SPAWN_SEARCH_PATH 
+ * calling exec() in the child. SPAWN_SEARCH_PATH
  * means that argv[0] need not be an absolute path, it
- * will be looked for in the user's PATH. 
- * SPAWN_STDOUT_TO_DEV_NULL means that the child's standard output will 
- * be discarded, instead of going to the same location as the parent's 
+ * will be looked for in the user's PATH.
+ * SPAWN_STDOUT_TO_DEV_NULL means that the child's standard output will
+ * be discarded, instead of going to the same location as the parent's
  * standard output. If you use this flag, @a standard_output must be NULL.
  * SPAWN_STDERR_TO_DEV_NULL means that the child's standard error
  * will be discarded, instead of going to the same location as the parent's
@@ -141,7 +141,7 @@ _WRAP_GERROR(SpawnError, GSpawnError, G_SPAWN_ERROR, NO_GTYPE, s#^2BIG$#TOOBIG#)
  * SPAWN_DO_NOT_REAP_CHILD flag. You can then access the child
  * process using the Win32 API, for example wait for its termination
  * with the WaitFor*() functions, or examine its
- * exit code with GetExitCodeProcess(). You should close the handle 
+ * exit code with GetExitCodeProcess(). You should close the handle
  * with CloseHandle() or spawn_close_pid() when you no longer need it.
  *
  * If non-NULL, the @a standard_input, @a standard_output, @a standard_error
@@ -151,24 +151,24 @@ _WRAP_GERROR(SpawnError, GSpawnError, G_SPAWN_ERROR, NO_GTYPE, s#^2BIG$#TOOBIG#)
  * when they are no longer in use. If these parameters are NULL, the corresponding
  * pipe won't be created.
  *
- * If @a standard_input is NULL, the child's standard input is attached to 
+ * If @a standard_input is NULL, the child's standard input is attached to
  * /dev/null unless SPAWN_CHILD_INHERITS_STDIN is set.
  *
- * If @a standard_error is NULL, the child's standard error goes to the same 
- * location as the parent's standard error unless SPAWN_STDERR_TO_DEV_NULL 
+ * If @a standard_error is NULL, the child's standard error goes to the same
+ * location as the parent's standard error unless SPAWN_STDERR_TO_DEV_NULL
  * is set.
  *
- * If @a standard_output is NULL, the child's standard output goes to the same 
- * location as the parent's standard output unless SPAWN_STDOUT_TO_DEV_NULL 
+ * If @a standard_output is NULL, the child's standard output goes to the same
+ * location as the parent's standard output unless SPAWN_STDOUT_TO_DEV_NULL
  * is set.
  *
  * If @a child_pid is not NULL and an error does not occur then the returned
  * pid must be closed using spawn_close_pid().
  *
  * @note
- * If you are writing a gtkmm application, and the program you 
+ * If you are writing a gtkmm application, and the program you
  * are spawning is a graphical application, too, then you may
- * want to use spawn_on_screen_with_pipes() instead to ensure that 
+ * want to use spawn_on_screen_with_pipes() instead to ensure that
  * the spawned program opens its windows on the right screen.
  *
  * @param working_directory Child's current working directory, or an empty string to inherit the parent's, in the GLib file name encoding.
@@ -223,18 +223,18 @@ void spawn_async_with_pipes(const std::string& working_directory,
                             int* standard_output = 0,
                             int* standard_error = 0);
 
-/** See pawn_async_with_pipes() for a full description. This function
+/** See spawn_async_with_pipes() for a full description. This function
  * simply calls the spawn_async_with_pipes() without any pipes.
- * 
+ *
  * @note
- * If you are writing a GTK+ application, and the program you 
+ * If you are writing a GTK+ application, and the program you
  * are spawning is a graphical application, too, then you may
- * want to use gdk_spawn_on_screen() instead to ensure that 
+ * want to use gdk_spawn_on_screen() instead to ensure that
  * the spawned program opens its windows on the right screen.
  *
  * @param working_directory Child's current working directory, or an empty string to inherit parent's.
  * @param argv Child's argument vector.
- * @param env Child's environment.
+ * @param envp Child's environment.
  * @param flags Flags from SpawnFlags.
  * @param child_setup Slot to run in the child just before exec().
  * @param child_pid Return location for child process ID, or NULL
@@ -255,7 +255,6 @@ void spawn_async(const std::string& working_directory,
  *
  * @param working_directory Child's current working directory, or an empty string to inherit parent's.
  * @param argv Child's argument vector.
- * @param env Child's environment.
  * @param flags Flags from SpawnFlags.
  * @param child_setup Slot to run in the child just before exec().
  * @param child_pid Return location for child process ID, or NULL
@@ -273,21 +272,21 @@ void spawn_async(const std::string& working_directory,
 
 /** Executes a child synchronously (waits for the child to exit before returning).
  * All output from the child is stored in @a standard_output and @a standard_error,
- * if those parameters are non-NULL. Note that you must set the  
+ * if those parameters are non-NULL. Note that you must set the
  * SPAWN_STDOUT_TO_DEV_NULL and SPAWN_STDERR_TO_DEV_NULL flags when
  * passing NULL for @a standard_output and @a standard_error.
  * If @a exit_status is non-NULL, the exit status of the child is stored
- * there as it would be returned by waitpid(); standard UNIX macros such 
+ * there as it would be returned by waitpid(); standard UNIX macros such
  * as WIFEXITED() and WEXITSTATUS() must be used to evaluate the exit status.
  * Note that this function calls waitpid() even if @a exit_status is NULL, and
  * does not accept the SPAWN_DO_NOT_REAP_CHILD flag.
- * If an error occurs, no data is returned in @a standard_output, 
- * @a standard_error, or @a exit_status. 
+ * If an error occurs, no data is returned in @a standard_output,
+ * @a standard_error, or @a exit_status.
  *
  * This function calls spawn_async_with_pipes() internally; see that
  * function for full details on the other parameters and details on
  * how these functions work on Windows.
- * 
+ *
  * @param working_directory Child's current working directory, or an empty string to inherit the parent's, in the GLib file name encoding.
  * @param argv Child's argument vector.
  * @param envp Child's environment.
@@ -313,7 +312,7 @@ void spawn_sync(const std::string& working_directory,
                 int* exit_status = 0);
 
 /** Like the main spawn_sync() method, but inheriting the parent's environment.
- * 
+ *
  * @param working_directory Child's current working directory, or an empty string to inherit the parent's, in the GLib file name encoding.
  * @param argv Child's argument vector.
  * @param flags Flags from SpawnFlags
@@ -341,8 +340,8 @@ void spawn_sync(const std::string& working_directory,
  * command line in the background. Unlike spawn_async(), the
  * SPAWN_SEARCH_PATH flag is enabled, other flags are not. Note
  * that SPAWN_SEARCH_PATH can have security implications, so
- * consider using spawn_async() directly if appropriate. 
- * 
+ * consider using spawn_async() directly if appropriate.
+ *
  * The same concerns on Windows apply as for spawn_command_line_sync().
  *
  * @param command_line A command line.
@@ -366,9 +365,9 @@ void spawn_command_line_async(const std::string& command_line);
  * If @a exit_status is non-NULL, the exit status of the child is stored there as
  * it would be returned by waitpid(); standard UNIX macros such as WIFEXITED()
  * and WEXITSTATUS() must be used to evaluate the exit status.
- * 
+ *
  * On Windows, please note the implications of shell_parse_argv()
- * parsing @a command_line. Parsing is done according to Unix shell rules, not 
+ * parsing @a command_line. Parsing is done according to Unix shell rules, not
  * Windows command interpreter rules.
  * Space is a separator, and backslashes are
  * special. Thus you cannot simply pass a @a command_line containing
@@ -377,7 +376,7 @@ void spawn_command_line_async(const std::string& command_line);
  * separator. You need to enclose such paths with single quotes, like
  * "'c:\\program files\\app\\app.exe' 'e:\\folder\\argument.txt'".
  *
- * @param command_line A command line. 
+ * @param command_line A command line.
  * @param standard_output Return location for child output.
  * @param standard_error Return location for child errors.
  * @param exit_status Return location for child exit status, as returned by waitpid().
@@ -400,7 +399,7 @@ void spawn_command_line_sync(const std::string& command_line,
  *
  * @param pid The process identifier to close.
  */
-void spawn_close_pid(Pid pid);                             
+void spawn_close_pid(Pid pid);
 
 /** @} group Spawn */
 
index a6f346a..cfc3895 100644 (file)
@@ -56,7 +56,7 @@ namespace Glib
 {
 
 // This was always meant as an internal method. It is no longer called,
-// and no longer needs to be called. We are keeping it just to avoid 
+// and no longer needs to be called. We are keeping it just to avoid
 // breaking ABI, though hopefully nobody is using it anyway.
 // TODO: Remove this when we can break ABI.
 void thread_init_impl()
@@ -148,10 +148,10 @@ ThreadPriority Thread::get_priority() const
 void thread_init(GThreadFunctions* /* vtable */)
 {
   //g_thread_init() is deprecated and now does nothing,
-  //so we do not even call it. That avoids a need to link to gthread-2.0, 
+  //so we do not even call it. That avoids a need to link to gthread-2.0,
   //which contains the empty g_thread_init() implementation.
   //g_thread_init(vtable);
-  
+
   Glib::thread_init_impl();
 }
 
index 1bc10dc..fb6f19b 100644 (file)
@@ -33,7 +33,7 @@ _IS_DEPRECATED // This whole file is deprecated.
 //Stop the deprecation ifdef guards around the API declarations:
 #undef G_DISABLE_DEPRECATED
 
-//Stop the compiler warnings about using the deprecated API; 
+//Stop the compiler warnings about using the deprecated API;
 #define GLIB_DISABLE_DEPRECATION_WARNINGS 1
 
 #define GLIBMM_G_DISABLE_DEPRECATED_UNDEFED 1
@@ -71,7 +71,7 @@ enum { THREAD_PRIORITY_NORMAL = GLIBMM_MACRO_DEFINITION_THREAD_PRIORITY_NORMAL }
  * @relates Glib::StaticRecMutex
  * @hideinitializer
  *
- * @deprecated Glib::StaticRecMutex is deprecated in favour of Glib::Threads::RecMutex, which can be used statically. 
+ * @deprecated Glib::StaticRecMutex is deprecated in favour of Glib::Threads::RecMutex, which can be used statically.
  */
 #define GLIBMM_STATIC_REC_MUTEX_INIT { G_STATIC_REC_MUTEX_INIT }
 
@@ -79,7 +79,7 @@ enum { THREAD_PRIORITY_NORMAL = GLIBMM_MACRO_DEFINITION_THREAD_PRIORITY_NORMAL }
  * @relates Glib::StaticRWLock
  * @hideinitializer
  *
- * @deprecated Glib::StaticRWLock is deprecated in favour of Glib::Threads::RWLock, which can be used statically. 
+ * @deprecated Glib::StaticRWLock is deprecated in favour of Glib::Threads::RWLock, which can be used statically.
  */
 #define GLIBMM_STATIC_RW_LOCK_INIT { G_STATIC_RW_LOCK_INIT }
 
@@ -87,7 +87,7 @@ enum { THREAD_PRIORITY_NORMAL = GLIBMM_MACRO_DEFINITION_THREAD_PRIORITY_NORMAL }
  * @relates Glib::StaticPrivate
  * @hideinitializer
  *
- * @deprecated Glib::StaticPrivate is deprecated in favour of Glib::Threads::Private, which can be used statically. 
+ * @deprecated Glib::StaticPrivate is deprecated in favour of Glib::Threads::Private, which can be used statically.
  */
 #define GLIBMM_STATIC_PRIVATE_INIT { G_STATIC_PRIVATE_INIT }
 
@@ -247,7 +247,7 @@ public:
    * @return The new Thread* on success.
    * @throw Glib::ThreadError
    *
-   * @deprecated Use the simpler create() method instead, because all Threads 
+   * @deprecated Use the simpler create() method instead, because all Threads
    * are now joinable, and bounds and priority parameters now have no effect.
    */
   static Thread* create(const sigc::slot<void>& slot, unsigned long stack_size,
@@ -259,7 +259,7 @@ public:
    * @deprecated All threads are now joinable.
    */
   bool joinable() const;
-  
+
   /** Changes the priority of the thread to @a priority.
    * @note It is not guaranteed, that threads with different priorities really
    * behave accordingly.  On some systems (e.g. Linux) only @c root can
@@ -336,7 +336,7 @@ struct StaticMutex;
  * conversion to Mutex&, thus you can safely use Mutex::Lock with a
  * StaticMutex.
  *
- * @deprecated Use Glib::Threads::Mutex instead, which can be used statically. 
+ * @deprecated Use Glib::Threads::Mutex instead, which can be used statically.
  */
 struct StaticMutex
 {
@@ -358,7 +358,7 @@ struct StaticMutex
  * @relates Glib::StaticMutex
  * @hideinitializer
  *
- * @deprecated  Glib::StaticMutex is deprecated in favour of Glib::Threads::Mutex, which can be used statically. 
+ * @deprecated  Glib::StaticMutex is deprecated in favour of Glib::Threads::Mutex, which can be used statically.
  */
 #define GLIBMM_STATIC_MUTEX_INIT { G_STATIC_MUTEX_INIT }
 
@@ -630,9 +630,9 @@ private:
   RWLock::WriterLock& operator=(const RWLock::WriterLock&);
 };
 
-/** An opaque data structure to represent a condition. 
- * A @a Cond is an object that threads can block on, if they find a certain 
- * condition to be false. If other threads change the state of this condition 
+/** An opaque data structure to represent a condition.
+ * A @a Cond is an object that threads can block on, if they find a certain
+ * condition to be false. If other threads change the state of this condition
  * they can signal the @a Cond, such that the waiting thread is woken up.
  * @par Usage example:
  * @code
@@ -670,15 +670,15 @@ public:
   Cond();
   ~Cond();
 
-  /** If threads are waiting for this @a Cond, exactly one of them is woken up. 
-   * It is good practice to hold the same lock as the waiting thread, while calling 
+  /** If threads are waiting for this @a Cond, exactly one of them is woken up.
+   * It is good practice to hold the same lock as the waiting thread, while calling
    * this method, though not required.
    *
    */
   void signal();
 
   /** If threads are waiting for this @a Cond, all of them are woken up.
-   * It is good practice to hold the same lock as the waiting thread, while calling 
+   * It is good practice to hold the same lock as the waiting thread, while calling
    * this method, though not required.
    */
   void broadcast();
@@ -687,12 +687,12 @@ public:
    * The mutex is unlocked before falling asleep and locked again before resuming.
    *
    * @param mutex a @a Mutex that is currently locked.
-   * 
+   *
    * @note It is important to use the @a wait() and @a timed_wait() methods
-   * only inside a loop, which checks for the condition to be true as it is not 
-   * guaranteed that the waiting thread will find it fulfilled, even if the signaling 
-   * thread left the condition in that state. This is because another thread can have 
-   * altered the condition, before the waiting thread got the chance to be woken up, 
+   * only inside a loop, which checks for the condition to be true as it is not
+   * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+   * thread left the condition in that state. This is because another thread can have
+   * altered the condition, before the waiting thread got the chance to be woken up,
    * even if the condition itself is protected by a @a Mutex.
    */
   void wait(Mutex& mutex);
@@ -702,12 +702,12 @@ public:
    *
    * @param mutex a @a Mutex that is currently locked.
    * @param abs_time a max time to wait.
-   * 
+   *
    * @note It is important to use the @a wait() and @a timed_wait() methods
-   * only inside a loop, which checks for the condition to be true as it is not 
-   * guaranteed that the waiting thread will find it fulfilled, even if the signaling 
-   * thread left the condition in that state. This is because another thread can have 
-   * altered the condition, before the waiting thread got the chance to be woken up, 
+   * only inside a loop, which checks for the condition to be true as it is not
+   * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+   * thread left the condition in that state. This is because another thread can have
+   * altered the condition, before the waiting thread got the chance to be woken up,
    * even if the condition itself is protected by a @a Mutex.
    */
   bool timed_wait(Mutex& mutex, const Glib::TimeVal& abs_time);
index eb0c0f5..d417a98 100644 (file)
@@ -62,15 +62,20 @@ namespace Threads
 /**** Glib::Thread *********************************************************/
 
 // static
-Thread* Thread::create(const sigc::slot<void>& slot)
+Thread* Thread::create(const sigc::slot<void>& slot, const std::string& name)
 {
   // Make a copy of slot on the heap
   sigc::slot_base *const slot_copy = new sigc::slot<void>(slot);
 
   GError* error = 0;
+  GThread* thread;
 
-  GThread *const thread = g_thread_try_new(NULL,
-      &call_thread_entry_slot, slot_copy, &error);
+  if (name.size() > 0)
+    thread = g_thread_try_new(name.c_str(), &call_thread_entry_slot,
+        slot_copy, &error);
+  else
+    thread = g_thread_try_new(NULL, &call_thread_entry_slot,
+        slot_copy, &error);
 
   if(error)
   {
@@ -82,6 +87,12 @@ Thread* Thread::create(const sigc::slot<void>& slot)
 }
 
 // static
+Thread* Thread::create(const sigc::slot<void>& slot)
+{
+  return create(slot, std::string());
+}
+
+// static
 Thread* Thread::self()
 {
   return reinterpret_cast<Thread*>(g_thread_self());
index 10ef5dd..9e536cc 100644 (file)
 _DEFS(glibmm,glib)
 _CONFIGINCLUDE(glibmmconfig.h)
 
+
+// We use the (now deprecated) GThread definition in the API,
+// and we cannot stop that without breaking ABI.
+// (see the comment below),
+// so we must temporarily undef G_DISABLE_DEPRECATED when
+// including glib.h.
+
+// Temporarily undef G_DISABLE_DEPRECATED, redefining it later if appropriate.
+#if defined(G_DISABLE_DEPRECATED) && !defined(GLIBMM_G_DISABLE_DEPRECATED_UNDEFED)
+
+//Stop the deprecation ifdef guards around the API declarations:
+#undef G_DISABLE_DEPRECATED
+
+//Stop the compiler warnings about using the deprecated API;
+#define GLIB_DISABLE_DEPRECATION_WARNINGS 1
+
+#define GLIBMM_G_DISABLE_DEPRECATED_UNDEFED 1
+
+#endif
+
 #include <glib.h>
 
+// Redefine G_DISABLE_DEPRECATED if it was defined before we temporarily undefed it:
+#if defined(GLIBMM_G_DISABLE_DEPRECATED_UNDEFED)
+#define G_DISABLE_DEPRECATED 1
+#undef GLIB_DISABLE_DEPRECATION_WARNINGS
+#undef GLIBMM_G_DISABLE_DEPRECATED_UNDEFED
+#endif
+
+
 #include <glibmm/error.h>
 #include <sigc++/sigc++.h>
 
@@ -72,6 +100,9 @@ public:
   class Exit;
 
   //See http://bugzilla.gnome.org/show_bug.cgi?id=512348 about the sigc::trackable issue.
+  // TODO: At the next ABI break, consider changing const sigc::slot<void>& slot
+  // to const std::function<void()>& func, if it can be assumed that all supported
+  // compilers understand the C++11 template class std::function<>.
   /** Creates a new thread.
    * You can wait for this thread's termination by calling join().
    *
@@ -79,9 +110,10 @@ public:
    * pass additional arguments using sigc::bind().  If the thread was created
    * successfully, it is returned, otherwise a Threads::ThreadError exception is thrown.
    *
-   * Because sigc::trackable is not thread safe, if the slot represents a
-   * non-static class method (that is, it is created by sigc::mem_fun()), the
-   * class concerned should not derive from sigc::trackable.
+   * Because sigc::trackable is not thread-safe, if the slot represents a
+   * non-static class method and is created by sigc::mem_fun(), the class concerned
+   * should not derive from sigc::trackable. You can use, say, boost::bind() or,
+   * in C++11, std::bind() or a C++11 lambda expression instead of sigc::mem_fun().
    *
    * @param slot A slot to execute in the new thread.
    * @return The new Thread* on success.
@@ -89,6 +121,33 @@ public:
    */
   static Thread* create(const sigc::slot<void>& slot);
 
+  // TODO: At next ABI break, remove the single parameter create
+  //       method and default name to std::string()
+
+  /** Creates a new named thread.
+   * You can wait for this thread's termination by calling join().
+   *
+   * The new thread executes the function or method @a slot points to.  You can
+   * pass additional arguments using sigc::bind().  If the thread was created
+   * successfully, it is returned, otherwise a Threads::ThreadError exception is thrown.
+   *
+   * Because sigc::trackable is not thread-safe, if the slot represents a
+   * non-static class method and is created by sigc::mem_fun(), the class concerned
+   * should not derive from sigc::trackable. You can use, say, boost::bind() or,
+   * in C++11, std::bind() or a C++11 lambda expression instead of sigc::mem_fun().
+   *
+   * The @a name can be useful for discriminating threads in a debugger.
+   * Some systems restrict the length of @a name to 16 bytes.
+   *
+   * @param slot A slot to execute in the new thread.
+   * @param name A name for the new thread.
+   * @return The new Thread* on success.
+   * @throw Glib::Threads::ThreadError
+   *
+   * @newin{2,36}
+   */
+  static Thread* create(const sigc::slot<void>& slot, const std::string& name);
+
   /** Returns the Thread* corresponding to the calling thread.
    * @return The current thread.
    */
@@ -390,9 +449,9 @@ private:
   RWLock::WriterLock& operator=(const RWLock::WriterLock&);
 };
 
-/** An opaque data structure to represent a condition. 
- * A @a Cond is an object that threads can block on, if they find a certain 
- * condition to be false. If other threads change the state of this condition 
+/** An opaque data structure to represent a condition.
+ * A @a Cond is an object that threads can block on, if they find a certain
+ * condition to be false. If other threads change the state of this condition
  * they can signal the @a Cond, such that the waiting thread is woken up.
  * @par Usage example:
  * @code
@@ -428,15 +487,15 @@ public:
   Cond();
   ~Cond();
 
-  /** If threads are waiting for this @a Cond, exactly one of them is woken up. 
-   * It is good practice to hold the same lock as the waiting thread, while calling 
+  /** If threads are waiting for this @a Cond, exactly one of them is woken up.
+   * It is good practice to hold the same lock as the waiting thread, while calling
    * this method, though not required.
    *
    */
   void signal();
 
   /** If threads are waiting for this @a Cond, all of them are woken up.
-   * It is good practice to hold the same lock as the waiting thread, while calling 
+   * It is good practice to hold the same lock as the waiting thread, while calling
    * this method, though not required.
    */
   void broadcast();
@@ -445,27 +504,27 @@ public:
    * The mutex is unlocked before falling asleep and locked again before resuming.
    *
    * @param mutex a @a Mutex that is currently locked.
-   * 
+   *
    * @note It is important to use the @a wait() and @a wait_until() methods
-   * only inside a loop, which checks for the condition to be true as it is not 
-   * guaranteed that the waiting thread will find it fulfilled, even if the signaling 
-   * thread left the condition in that state. This is because another thread can have 
-   * altered the condition, before the waiting thread got the chance to be woken up, 
+   * only inside a loop, which checks for the condition to be true as it is not
+   * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+   * thread left the condition in that state. This is because another thread can have
+   * altered the condition, before the waiting thread got the chance to be woken up,
    * even if the condition itself is protected by a @a Mutex.
    */
   void wait(Mutex& mutex);
 
-  /** Waits until this thread is woken up on this @a Cond, but not longer than until the time, that is specified by @a abs_time.
+  /** Waits until this thread is woken up on this @a Cond, but not longer than until the time, that is specified by @a end_time.
    * The mutex is unlocked before falling asleep and locked again before resuming.
    *
    * @param mutex a @a Mutex that is currently locked.
-   * @param abs_time a max time to wait.
-   * 
+   * @param end_time a max time to wait.
+   *
    * @note It is important to use the @a wait() and @a wait_until() methods
-   * only inside a loop, which checks for the condition to be true as it is not 
-   * guaranteed that the waiting thread will find it fulfilled, even if the signaling 
-   * thread left the condition in that state. This is because another thread can have 
-   * altered the condition, before the waiting thread got the chance to be woken up, 
+   * only inside a loop, which checks for the condition to be true as it is not
+   * guaranteed that the waiting thread will find it fulfilled, even if the signaling
+   * thread left the condition in that state. This is because another thread can have
+   * altered the condition, before the waiting thread got the chance to be woken up,
    * even if the condition itself is protected by a @a Mutex.
    */
   bool wait_until(Mutex& mutex, gint64 end_time);
index 6ef99d9..a1a6f89 100644 (file)
@@ -26,12 +26,12 @@ namespace Glib
  * Various uri-related functions.
  */
 
-//Note that the illegal_characters and reserved_chars_allowed parameters are bytes and may not be UTF-8 
+//Note that the illegal_characters and reserved_chars_allowed parameters are bytes and may not be UTF-8
 //so they are not Glib::ustring. See http://bugzilla.gnome.org/show_bug.cgi?id=508773
 
 /** Unescapes a whole escaped string.
  * If any of the characters in @a illegal_characters or the character zero appears
- * as an escaped character in @a escaped_string then that is an error and an empty string 
+ * as an escaped character in @a escaped_string then that is an error and an empty string
  * will be returned. This is useful it you want to avoid, for instance, having a
  * slash being expanded in an escaped path element, which might confuse pathname
  * handling.
@@ -39,26 +39,26 @@ namespace Glib
  * @param escaped_string An escaped string to be unescaped.
  * @param illegal_characters An optional string of illegal characters not to be allowed.
  * @result An unescaped version of @a escaped_string.
- * 
+ *
  * @ingroup UriUtils
  * @newin{2,16}
  */
 std::string uri_unescape_string(const std::string& escaped_string, const std::string& illegal_characters = std::string());
 
-//TODO: Use iterator? 
+//TODO: Use iterator?
 //char *   g_uri_unescape_segment      (const char *escaped_string,
 //                                   const char *escaped_string_end,
 //                                   const char *illegal_characters);
 
 /** Gets the scheme portion of a URI. RFC 3986 decodes the scheme as:
  * @code
- * URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] 
+ * URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
  * @endcode
  * Common schemes include "file", "http", "svn+ssh", etc.
  *
  * @param uri
- * @result The "Scheme" component of the URI, or an empty string on error. 
- * 
+ * @result The "Scheme" component of the URI, or an empty string on error.
+ *
  * @ingroup UriUtils
  * @newin{2,16}
  */
index 8dc5ad8..dea7391 100644 (file)
@@ -112,11 +112,7 @@ VariantContainerBase::create_tuple(const std::vector<VariantBase>& children)
 
   VariantContainerBase result = VariantContainerBase(g_variant_new_tuple(
     var_array, children.size()));
-
-  g_variant_ref_sink(result.gobj());
-
   delete[] var_array;
-
   return result;
 }
 
@@ -131,17 +127,12 @@ VariantContainerBase::create_tuple(const VariantBase& child)
 
 //static
 VariantContainerBase
-VariantContainerBase::create_maybe(const VariantType& child_type, 
+VariantContainerBase::create_maybe(const VariantType& child_type,
   const VariantBase& child)
 {
   GVariant* g_variant = g_variant_new_maybe(child_type.gobj(),
     const_cast<GVariant*>(child.gobj()));
-
   VariantContainerBase result = VariantContainerBase(g_variant);
-
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
@@ -191,6 +182,11 @@ bool VariantContainerBase::get_maybe(VariantBase& maybe) const
 
 /****************** Specializations ***********************************/
 
+VariantBase::operator const void*() const
+{
+  return gobj() ? GINT_TO_POINTER(1) : 0;
+}
+
 void VariantBase::init(const GVariant* cobject, bool take_a_reference)
 {
   if(gobject_)
@@ -221,10 +217,6 @@ const VariantType& Variant<VariantBase>::variant_type()
 Variant<VariantBase> Variant<VariantBase>::create(const VariantBase& data)
 {
   Variant<VariantBase> result = Variant<VariantBase>(g_variant_new_variant(const_cast<GVariant*>(data.gobj())));
-
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
@@ -256,10 +248,6 @@ Variant<Glib::ustring>::create(const Glib::ustring& data)
 {
   Variant<Glib::ustring> result =
     Variant<Glib::ustring>(g_variant_new_string(data.c_str()));
-
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
@@ -314,10 +302,6 @@ Variant<std::string>::create(const std::string& data)
 {
   Variant<std::string> result =
     Variant<std::string>(g_variant_new_bytestring(data.c_str()));
-
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
@@ -403,9 +387,6 @@ Variant<type_vec_ustring>::create(const type_vec_ustring& data)
     Variant<type_vec_ustring>(g_variant_new(
       array_variant_type.get_string().c_str(), builder));
 
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
@@ -486,16 +467,37 @@ Variant<type_vec_string>::create(const type_vec_string& data)
   // Terminate the string array.
   str_array[data.size()] = NULL;
 
-  // Create the variant using the builder.
+  // Create the variant using g_variant_new_bytestring_array() (passing the
+  // newly constructed array.
   Variant<type_vec_string> result =
     Variant<type_vec_string>(g_variant_new_bytestring_array(str_array,
       data.size()));
 
   g_strfreev(str_array);
+  return result;
+}
 
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
+Variant<type_vec_string>
+Variant<type_vec_string>::create_from_object_paths(const type_vec_string& data)
+{
+  // Create a string array to add the strings of the vector to.
+  char** str_array = g_new(char*, data.size() + 1);
 
+  // Add the elements of the vector into the string array.
+  for(type_vec_string::size_type i = 0; i < data.size(); i++)
+  {
+    str_array[i] = g_strdup(data[i].c_str());
+  }
+
+  // Terminate the string array.
+  str_array[data.size()] = NULL;
+
+  // Create the variant using g_variant_new_objv() (passing the
+  // newly constructed array.
+  Variant<type_vec_string> result =
+    Variant<type_vec_string>(g_variant_new_objv(str_array, data.size()));
+
+  g_strfreev(str_array);
   return result;
 }
 
index 97f8e71..92c7193 100644 (file)
@@ -37,7 +37,7 @@ namespace Glib
  * information about the type of that value. The range of possible
  * values is determined by the type. The type system used is VariantType.
  *
- * See the VariantBase class and it's derived types, such as VariantContainerbase,
+ * See the VariantBase class and it's derived types, such as VariantContainerBase,
  * and the Variant<> template type.
  *
  * Variant instances always have a type and a value (which are given
@@ -87,6 +87,23 @@ class VariantBase
     g_variant_get, g_variant_get_va)
 public:
 
+  /** This typedef is just to make it more obvious that
+   * our operator const void* should be used like operator bool().
+   */
+  typedef const void* BoolExpr;
+
+  /** Test whether the Variant has an underlying instance.
+   *
+   * Mimics usage of pointers:
+   * @code
+   *   if (variant)
+   *     do_something();
+   * @endcode
+   *
+   * @newin{2,36}
+   */
+   operator BoolExpr() const;
+
   /** Replace the underlying GVariant.
    * This is for use by methods that take a VariantBase& as an output
    * parameter.
@@ -97,7 +114,11 @@ public:
    */
   void init(const GVariant* cobject, bool take_a_reference = false);
 
+// It's necessary to take an extra reference of the 'const GVariantType*'
+// returned by g_variant_get_type() because it doesn't do that already.
+#m4 _CONVERSION(`const GVariantType*',`VariantType',`Glib::wrap(const_cast<GVariantType*>($3), true)')
   _WRAP_METHOD(VariantType get_type() const, g_variant_get_type)
+
   _WRAP_METHOD(std::string get_type_string() const, g_variant_get_type_string)
   _WRAP_METHOD(bool is_floating() const, g_variant_is_floating)
   _WRAP_METHOD(bool is_of_type(const VariantType& type) const, g_variant_is_of_type)
@@ -113,6 +134,13 @@ public:
 
   #m4 _CONVERSION(`const VariantBase&',`gconstpointer',`const_cast<GVariant*>(($3).gobj())')
   _WRAP_METHOD(guint hash() const, g_variant_hash)
+
+  /** Checks if @a *this and @a other have the same type and value.
+   * 
+   * @newin{2,24}
+   * @param other The Variant to compare with.
+   * @return <tt>true</tt> if @a *this and @a other are equal.
+   */
   _WRAP_METHOD(bool equal(const VariantBase& other) const, g_variant_equal)
 
   /** Gets a VariantBase instance that has the same value as this variant and
@@ -171,6 +199,26 @@ public:
    template<class V_CastTo>
    static V_CastTo cast_dynamic(const VariantBase& v) throw(std::bad_cast);
 
+private:
+  /** Relational operators are deleted to prevent invalid conversion
+   * to const void*.
+   */
+  bool operator<(const VariantBase& src) const;
+
+  /// See operator<().
+  bool operator<=(const VariantBase& src) const;
+
+  /// See operator<().
+  bool operator>(const VariantBase& src) const;
+
+  /// See operator<().
+  bool operator>=(const VariantBase& src) const;
+
+  /// See operator<().
+  bool operator==(const VariantBase& src) const;
+
+  /// See operator<().
+  bool operator!=(const VariantBase& src) const;
 };
 
 template<class V_CastTo>
@@ -239,7 +287,7 @@ public:
    * @newin{2,28}
    */
   static void create_signature(VariantStringBase& output,
-    const std::string& object_path);
+    const std::string& signature);
   _IGNORE(g_variant_new_signature)
 
   _WRAP_METHOD(static bool is_signature(const std::string& string), g_variant_is_signature)
@@ -398,6 +446,50 @@ public:
   _WRAP_METHOD(VariantBase get() const, g_variant_get_variant)
 };
 
+/** Specialization of Variant containing a Variant<T>.
+ * @newin{2,36}
+ * @ingroup Variant
+ */
+template<class T>
+class Variant< Variant<T> > : public VariantContainerBase
+{
+public:
+  typedef GVariant*                     CType;
+  typedef Variant<T>                    CppType;
+  typedef Variant<CppType>              CppContainerType;
+
+  /// Default constructor.
+  Variant< Variant<T> >();
+
+  /** GVariant constructor.
+   * @param castitem The GVariant to wrap.
+   * @param take_a_reference Whether to take an extra reference of the
+   * GVariant or not (not taking one could destroy the GVariant with the
+   * wrapper).
+   * @newin{2,36}
+   */
+  explicit Variant< Variant<T> >(GVariant* castitem, bool take_a_reference = false);
+
+  /** Gets the VariantType.
+   * @return The VariantType.
+   * @newin{2,36}
+   */
+  static const VariantType& variant_type() G_GNUC_CONST;
+
+  /** Creates a new Variant< Variant<T> >.
+   * @param data The value of the new Variant.
+   * @return The new Variant.
+   * @newin{2,36}
+   */
+  static Variant< Variant<T> > create(const Variant<T>& data);
+
+  /** Gets the contents of the Variant.
+   * @return The contents of the Variant.
+   * @newin{2,36}
+   */
+  Variant<T> get() const;
+};
+
 /** Specialization of Variant containing a Glib::ustring, for variants of type
  * string, bytestring, object path, or signature.
  * @newin{2,28}
@@ -597,7 +689,7 @@ public:
    * This function is O(1).
    *
    * @param index The index of the element.
-   * @return The element at index @index.
+   * @return The element at index @index.
    * @throw std::out_of_range
    * @newin{2,28}
    */
@@ -661,7 +753,7 @@ public:
    * This function is O(1).
    *
    * @param index The index of the element.
-   * @return The element at index @index.
+   * @return The element at index @index.
    * @throw std::out_of_range
    * @newin{2,28}
    */
@@ -718,6 +810,14 @@ public:
   static Variant< std::vector<std::string> >
     create(const std::vector<std::string>& data);
 
+  /** Creates a new Variant from an array of D-Bus object paths.
+   * @param paths The array to use for creation.
+   * @return The new Variant.
+   * @newin{2,36}
+   */
+  static Variant< std::vector<std::string> >
+    create_from_object_paths(const std::vector<std::string>& paths);
+
   /** Gets a specific element of the string array.  It is an error if @a index
    * is greater than the number of child items in the container.  See
    * VariantContainerBase::get_n_children().
@@ -725,7 +825,7 @@ public:
    * This function is O(1).
    *
    * @param index The index of the element.
-   * @return The element at index @index.
+   * @return The element at index @index.
    * @throw std::out_of_range
    * @newin{2,28}
    */
@@ -738,6 +838,10 @@ public:
   std::vector<std::string> get() const;
   _IGNORE(g_variant_get_bytestring_array, g_variant_dup_bytestring_array)
 
+  // Object paths are merely strings so it is possible to get them already with
+  // the existing get() methods in this class.
+  _IGNORE(g_variant_get_objv, g_variant_dup_objv)
+
   /** Gets a VariantIter of the Variant.
    * @return the VaraintIter.
    * @newin{2,28}
@@ -793,7 +897,7 @@ public:
    * This function is O(1).
    *
    * @param index The index of the element.
-   * @return The dictionary entry at index @index.
+   * @return The dictionary entry at index @index.
    * @throw std::out_of_range
    * @newin{2,28}
    */
@@ -846,6 +950,42 @@ _IGNORE(
 namespace Glib
 {
 
+/*--------------------Variant< Variant<T> >---------------------*/
+
+template<class T>
+Variant< Variant<T> >::Variant()
+: VariantContainerBase()
+{
+}
+
+template<class T>
+Variant< Variant<T> >::Variant(GVariant* castitem, bool take_a_reference)
+: VariantContainerBase(castitem, take_a_reference)
+{
+}
+
+// static
+template<class T>
+const VariantType& Variant< Variant<T> >::variant_type()
+{
+  return VARIANT_TYPE_VARIANT;
+}
+
+template<class T>
+Variant< Variant<T> > Variant< Variant<T> >::create(const Variant<T>& data)
+{
+  Variant< Variant<T> > result = Variant< Variant<T> >(
+    g_variant_new_variant(const_cast<GVariant*>(data.gobj())));
+  return result;
+}
+
+template<class T>
+Variant<T> Variant< Variant<T> >::get() const
+{
+  GVariant* const gvariant = g_variant_get_variant(gobject_);
+  return Variant<T>(gvariant, true);
+}
+
 /*--------------------Variant< std::pair<K, V> >---------------------*/
 
 // static
@@ -869,9 +1009,6 @@ Variant< std::pair<K, V> >::create(const std::pair<K, V>& data)
   Variant< std::pair<K, V> > result = Variant< std::pair<K, V> >(
     g_variant_new_dict_entry(key.gobj(), value.gobj()));
 
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
@@ -920,8 +1057,8 @@ Variant< std::vector<T> >::create(const std::vector<T>& data)
   for(typename std::vector<T>::const_iterator iter = data.begin();
    iter < data.end(); iter++)
   {
-    g_variant_builder_add(builder,
-      reinterpret_cast<gchar*>(element_variant_type.gobj()), *iter);
+    Glib::Variant<T> variant = Glib::Variant<T>::create(*iter);
+    g_variant_builder_add_value(builder, variant.gobj());
   }
 
   // Create the variant using the builder.
@@ -929,38 +1066,43 @@ Variant< std::vector<T> >::create(const std::vector<T>& data)
     Variant< std::vector<T> >(g_variant_new(
       reinterpret_cast<gchar*>(array_variant_type.gobj()), builder));
 
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
 template<class T>
 T Variant< std::vector<T> >::get_child(gsize index) const
 {
-  gsize n_elements = 0;
+  if(index >= g_variant_n_children(const_cast<GVariant*>(gobj())))
+    throw std::out_of_range(
+      "Variant< std::vector<T> >::get_child(): Index out of bounds.");
 
-  const T* array = reinterpret_cast<const T*>(
-    g_variant_get_fixed_array(const_cast<GVariant*>(gobj()), &n_elements,
-    sizeof(T)));
+  Glib::Variant<T> variant;
 
-  if(index >= n_elements)
-    throw std::out_of_range(
-      "Variant< std::vector<T> >::get(): Index out of bounds.");
+  GVariant* gvariant =
+    g_variant_get_child_value(const_cast<GVariant*>(gobj()), index);
 
-  return array[index];
+  variant.init(gvariant);
+  return variant.get();
 }
 
 template<class T>
 std::vector<T> Variant< std::vector<T> >::get() const
 {
-  gsize n_elements = 0;
+  std::vector<T> result;
+
+  gsize n_children = g_variant_n_children(const_cast<GVariant*>(gobj()));
 
-  const T* array = reinterpret_cast<const T*>(
-    g_variant_get_fixed_array(const_cast<GVariant*>(gobj()), &n_elements,
-    sizeof(T)));
+  for(gsize i = 0; i < n_children; i++)
+  {
+    Glib::Variant<T> variant;
+
+    GVariant* gvariant =
+      g_variant_get_child_value(const_cast<GVariant*>(gobj()), i);
+
+    variant.init(gvariant);
+    result.push_back(variant.get());
+  }
 
-  std::vector<T> result(array, array + n_elements);
   return result;
 }
 
@@ -1021,9 +1163,6 @@ Variant< std::map<K, V> >::create(const std::map<K, V>& data)
   Variant< std::map<K, V> > result = Variant< std::map<K, V> >(g_variant_new(
     reinterpret_cast<gchar*>(array_variant_type.gobj()), builder));
 
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
index 1b54ac1..ba79a20 100644 (file)
@@ -45,10 +45,6 @@ const VariantType& Variant<$1>::variant_type()
 Variant<$1> Variant<$1>::create($1 data)
 {
   Variant<$1> result = Variant<$1>(g_variant_new_$3(data));
-
-  // Remove the floating reference (since it is newly created).
-  g_variant_ref_sink(result.gobj());
-
   return result;
 }
 
index 0a0732b..2f11a52 100644 (file)
@@ -49,6 +49,9 @@ public:
 
   /** GVariant constructor.
    * @param castitem The GVariant to wrap.
+   * @param take_a_reference Whether to take an extra reference of the
+   * GVariant or not (not taking one could destroy the GVariant with the
+   * wrapper).
    */
   explicit Variant<$1>(GVariant* castitem, bool take_a_reference = false)
   : VariantBase(castitem, take_a_reference)
index 9ecf193..e72b75c 100644 (file)
@@ -49,9 +49,9 @@ public:
 
   bool next_value(VariantBase& value);
   _IGNORE(g_variant_iter_next_value)
-  
-  // Ignore varargs function
-  _IGNORE(g_variant_iter_next)
+
+  // Ignore varargs functions
+  _IGNORE(g_variant_iter_loop, g_variant_iter_next)
 };
 
 } // namespace Glib
index c60031e..5493ead 100644 (file)
@@ -41,16 +41,31 @@ VariantType& VariantType::operator=(const GVariantType* castitem)
   {
     g_variant_type_free (gobject_);
   }
-  
+
   if(castitem)
     gobject_ = g_variant_type_copy(castitem);
   else
     gobject_ = 0;
-    
+
   return *this;
 }
 
 
+VariantType VariantType::create_tuple(const std::vector<VariantType>& items)
+{
+  typedef GVariantType* var_ptr;
+  var_ptr* const var_array = new var_ptr[items.size()];
+
+  for(std::vector<VariantType>::size_type i = 0; i < items.size(); i++)
+  {
+    var_array[i] = const_cast<GVariantType*>(items[i].gobj());
+  }
+
+  VariantType result = Glib::wrap(g_variant_type_new_tuple(var_array, items.size()));
+  delete[] var_array;
+  return result;
+}
+
 const VariantType VARIANT_TYPE_BOOL(G_VARIANT_TYPE_BOOLEAN);
 
 const VariantType VARIANT_TYPE_BYTE(G_VARIANT_TYPE_BYTE);
index c9e6a0e..6093afd 100644 (file)
@@ -20,6 +20,7 @@ _DEFS(glibmm,glib)
 #include <glibmmconfig.h>
 #include <glib-object.h> //For gsize
 #include <string>
+#include <vector>
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 typedef struct _GVariantType GVariantType;
@@ -113,8 +114,15 @@ public:
   _WRAP_METHOD(static VariantType create_array(const VariantType& element), g_variant_type_new_array)
   _WRAP_METHOD(static VariantType create_maybe(const VariantType& element), g_variant_type_new_maybe)
 
-  //TODO: Use a single list parameter:
-  //_WRAP_METHOD(static VariantType create_tuple(const GVariantType * const *items, gint length), g_variant_type_new_tuple)
+  /** Constructs a new tuple type, from @a items.
+    *
+    * @param items A vector of VariantTypes, one for each item.
+    * @return A new tuple VariantType.
+    *
+    * @newin{2,36}
+    */
+  static VariantType create_tuple(const std::vector<VariantType>& items);
+  _IGNORE(g_variant_type_new_tuple)
 
   _WRAP_METHOD(static VariantType create_dict_entry(const VariantType& key, const VariantType& value), g_variant_type_new_dict_entry)
 
@@ -136,10 +144,26 @@ public:
 
   #m4 _CONVERSION(`const VariantType&',`gconstpointer',`const_cast<GVariantType*>(($3).gobj())')
   _WRAP_METHOD(guint hash() const, g_variant_type_hash)
+
+  /** Compares @a *this and @a other for equality.
+   * 
+   * Only returns <tt>true</tt> if the types are exactly equal.  Even if one type
+   * is an indefinite type and the other is a subtype of it, <tt>false</tt> will
+   * be returned if they are not exactly equal.  If you want to check for
+   * subtypes, use is_subtype_of().
+   * 
+   * @param other The VariantType to compare with.
+   * @return <tt>true</tt> if @a *this and @a other are exactly equal.
+   * 
+   * @newin{2,24}
+   */
   _WRAP_METHOD(bool equal(const VariantType& other) const, g_variant_type_equal)
 
   _WRAP_METHOD(bool is_subtype_of(const VariantType& supertype) const, g_variant_type_is_subtype_of)
 
+// It's necessary to take an extra reference of the 'const GVariantType*'
+// returned by g_variant_type_element() because it doesn't do that already.
+#m4 _CONVERSION(`const GVariantType*',`VariantType',`Glib::wrap(const_cast<GVariantType*>($3), true)')
   _WRAP_METHOD(VariantType element() const, g_variant_type_element)
   _WRAP_METHOD(VariantType first() const, g_variant_type_first)
   _WRAP_METHOD(VariantType next () const, g_variant_type_next)
index 49da1e2..086719f 100644 (file)
@@ -55,7 +55,7 @@ int main(int, char**)
   vec_strings.push_back("a");
   Glib::Variant<std::vector<std::string> > variant_vec_strings =
     Glib::Variant<std::vector<std::string> >::create(vec_strings);
-  
+
   //Dict:
 
   typedef std::pair<Glib::ustring, Glib::ustring> TypeDictEntry;
@@ -120,6 +120,61 @@ int main(int, char**)
       " in the variant are: " << value << '.' << std::endl;
   }
 
+  //std::vector< std::map< Glib::ustring, Glib::Variant<int> > >
+  typedef std::map< Glib::ustring, Glib::Variant<int> > ComplexDictType;
+
+  ComplexDictType complex_dict1;
+  ComplexDictType complex_dict2;
+
+  for(int i = 0; i < 10; i++)
+  {
+    // Convert integer i to string.
+    std::stringstream ss;
+    ss << i;
+
+    Glib::ustring s = "String " + ss.str();
+
+    Glib::Variant<int> v = Glib::Variant<int>::create(i);
+
+    complex_dict1.insert(
+      std::pair< Glib::ustring, Glib::Variant<int> >("Map 1 " + s, v));
+
+    complex_dict2.insert(
+      std::pair< Glib::ustring, Glib::Variant<int> >("Map 2 " + s, v));
+  }
+
+  typedef std::vector< std::map< Glib::ustring, Glib::Variant<int> > >
+    ComplexVecType;
+
+  ComplexVecType complex_vector;
+  complex_vector.push_back(complex_dict1);
+  complex_vector.push_back(complex_dict2);
+
+  Glib::Variant<ComplexVecType> complex_variant =
+    Glib::Variant<ComplexVecType>::create(complex_vector);
+
+  // This will output the type string aa{sv}.
+  ostr << "The type string of the variant containing a vector of "
+    "dictionaries is: " << std::endl << complex_variant.get_type_string() <<
+    "." << std::endl << std::endl;
+
+  ComplexVecType copy_complex_vector = complex_variant.get();
+
+  for(guint i = 0; i < copy_complex_vector.size(); i++)
+  {
+    ostr << "Printing dictionary # " << i + 1 << ":" << std::endl;
+
+    ComplexDictType map = copy_complex_vector[i];
+
+    for(ComplexDictType::const_iterator iter = map.begin();
+      iter != map.end(); iter++)
+    {
+      std::pair< Glib::ustring, Glib::Variant<int> > entry = *iter;
+      ostr << entry.first << " -> " << entry.second.get() << "." << std::endl;
+    }
+    ostr << std::endl;
+  }
+  
   test_variant_floating();
   test_dynamic_cast();
 
index 13beeff..8b0b690 100644 (file)
@@ -17,7 +17,8 @@ __all__ = ['extract']
 class GtkDoc:
     def __init__(self):
         self.name = None
-        self.block_type = '' # The block type ('function', 'signal', 'property')
+        # The block type ('function', 'signal', property', 'enum')
+        self.block_type = ''
         self.params = []
         self.annotations = []
         self.description = ''
@@ -63,6 +64,7 @@ comment_empty_line_pattern = re.compile(r'^\s*\**\s*$')
 function_name_pattern = re.compile(r'^([a-z]\w*)\s*:?(\s*\(.*\)\s*){0,2}\s*$')
 signal_name_pattern = re.compile(r'^([A-Z]\w+::[a-z0-9-]+)\s*:?(\s*\(.*\)\s*){0,2}\s*$')
 property_name_pattern = re.compile(r'^([A-Z]\w+:[a-z0-9-]+)\s*:?(\s*\(.*\)\s*){0,2}\s*$')
+enum_name_pattern = re.compile(r'^([A-Z]\w+)\s*:?(\s*\(.*\)\s*){0,2}\s*$')
 return_pattern = re.compile(r'^@?(returns:|return\s+value:)(.*\n?)$', re.IGNORECASE)
 deprecated_pattern = re.compile(r'^(deprecated\s*:\s*.*\n?)$', re.IGNORECASE)
 rename_to_pattern = re.compile(r'^(rename\s+to)\s*:\s*(.*\n?)$', re.IGNORECASE)
@@ -77,7 +79,7 @@ annotation_lead_pattern = re.compile(r'^\s*\(\s*(.*?)\s*\)\s*')
 # are grouped in a list for easy determination of block identifiers (in
 # skip_to_identifier).  The function_name_pattern should be tested for last
 # because it always matches signal and property identifiers.
-identifier_patterns = [ signal_name_pattern, property_name_pattern, function_name_pattern ]
+identifier_patterns = [ signal_name_pattern, property_name_pattern, enum_name_pattern, function_name_pattern ]
 
 # This pattern is to match return sections that forget to have a colon (':')
 # after the initial 'Return' phrase.  It is not included by default in the list
@@ -87,6 +89,13 @@ identifier_patterns = [ signal_name_pattern, property_name_pattern, function_nam
 no_colon_return_pattern = re.compile(r'^@?(returns|return\s+value)\s*(.*\n?)$', re.IGNORECASE)
 since_pattern = re.compile(r'^(since\s*:\s*.*\n?)$', re.IGNORECASE)
 
+# This pattern is to match since sections that forget to have a colon (':')
+# after the initial 'Since' phrase.  It is not included by default in the list
+# of final sections below because some function descriptions contain
+# 'Since ...' and the process_description() function would stop at that
+# line, thinking it is a since section.
+no_colon_since_pattern = re.compile(r'^Since\s+[.0-9]+\n?$')
+
 # These patterns normally will be encountered after the description.  Knowing
 # the order of their appearance is difficult so this list is used to test when
 # one begins and the other ends when processing the rest of the sections after
@@ -106,8 +115,14 @@ def parse_file(fp, doc_dict):
             line = process_params(fp, line, cur_doc)
             line = process_description(fp, line, cur_doc)
             line = process_final_sections(fp, line, cur_doc)
-            # Add the current doc block to the dictionary of doc blocks.
-            doc_dict[cur_doc.name] = cur_doc
+
+            # Add the current doc block to the dictionary of doc blocks.  If
+            # this block was initially recognized as an 'enum' block in
+            # skip_to_identifier(), the process_params() function will mark the
+            # block as invalid if enum members are not all caps.  In that case
+            # do not add the block.
+            if cur_doc.get_type() != 'invalid':
+                doc_dict[cur_doc.name] = cur_doc
 
 # Given a list of annotations as string of the form 
 # '(annotation1) (annotation2) ...' return a list of annotations of the form
@@ -153,9 +168,9 @@ def skip_to_nonblank(fp, line):
 # Given the first line of a comment block (the '/**'), see if the next
 # non-blank line is the identifier of the comment block.  Stop processing if
 # the end of the block or eof is reached.  Store the identifier (if there is
-# one) and its type ('function', 'signal' or 'property') in the given GtkDoc.
-# Return the line where the identifier is found or the line that stops the
-# processing (if eof or the end of the comment block is found first).
+# one) and its type ('function', 'signal' or 'property', 'enum') in the given
+# GtkDoc.  Return the line where the identifier is found or the line that stops
+# the processing (if eof or the end of the comment block is found first).
 def skip_to_identifier(fp, line, cur_doc):
     # Skip the initial comment block line ('/**') if not eof.
     if line: line = fp.readline()
@@ -182,6 +197,8 @@ def skip_to_identifier(fp, line, cur_doc):
                     cur_doc.set_type('signal')
                 elif pattern == property_name_pattern:
                     cur_doc.set_type('property')
+                elif pattern == enum_name_pattern:
+                    cur_doc.set_type('enum')
                 elif pattern == function_name_pattern:
                     cur_doc.set_type('function')
                 return line
@@ -198,6 +215,10 @@ def process_params(fp, line, cur_doc):
     if line: line = fp.readline()
     line = skip_to_nonblank(fp, line)
     if not line or comment_end_pattern.match(line):
+        # If there are no parameters and this block has been recognized as an
+        # enum block, then mark it as invalid.
+        if cur_doc.get_type() == 'enum':
+            cur_doc.set_type('invalid')
         return line
 
     # Remove initial ' * ' in first non-empty comment block line.
@@ -207,9 +228,20 @@ def process_params(fp, line, cur_doc):
     # param section is not reached (which could be triggered by anything that
     # doesn't match a '@param:..." line, even the end of the comment block).
     match = param_pattern.match(line)
+
+    # Mark the cur_doc type as invalid if no parameters are found.
+    if not match and cur_doc.get_type() == 'enum':
+        cur_doc.set_type('invalid')
+
     while line and match:
+        name = match.group(1)
         description = match.group(2)
 
+        # Set the cur_doc type as 'invalid' if the enum member names are not
+        # all caps.
+        if not name.isupper() and cur_doc.get_type() == 'enum':
+            cur_doc.set_type('invalid')
+
         # First extract the annotations from the description and save them.
         annotations = []
         annotation_match = annotations_pattern.match(description)
@@ -224,12 +256,12 @@ def process_params(fp, line, cur_doc):
         # See if the return has been included as part of the parameter
         # section and make sure that lines are added to the GtkDoc return if
         # so.
-        if match.group(1).lower() == "returns":
+        if name.lower() == "returns":
             cur_doc.add_return(description, annotations)
             append_func = cur_doc.append_to_return
         # If not, just add it as a regular parameter.
         else:
-            cur_doc.add_param(match.group(1), description, annotations)
+            cur_doc.add_param(name, description, annotations)
 
         # Now read lines and append them until next parameter, beginning of
         # description (an empty line), the end of the comment block or eof.
@@ -292,7 +324,12 @@ def process_description(fp, line, cur_doc):
                 return line
 
         # If not, append lines to description in the doc comment block.
-        cur_doc.append_to_description(line)
+        # But if --no-since is specified, skip a no_colon_since_pattern line.
+        if no_since and \
+                no_colon_since_pattern.match(line) and prev_line == '\n':
+            pass
+        else:
+            cur_doc.append_to_description(line)
 
         prev_line = line
         line = fp.readline()
@@ -311,6 +348,12 @@ def process_description(fp, line, cur_doc):
 # sections) process the final sections ('Returns:', 'Since:', etc.) until the
 # end of the comment block or eof.  Return the line that ends the processing.
 def process_final_sections(fp, line, cur_doc):
+    # Temporarily append the no_colon_since_pattern to the final section
+    # patterns now that the description has been processed.  It will be
+    # removed at the end of this function so that future descriptions
+    # that begin with 'Since ...' are not interpreted as a since section.
+    final_section_patterns.append(no_colon_since_pattern)
+
     while line and not comment_end_pattern.match(line):
         # Remove leading ' * ' from current non-empty comment line.
         line = comment_line_lead_pattern.sub('', line)
@@ -349,10 +392,11 @@ def process_final_sections(fp, line, cur_doc):
                     cur_doc.add_annotation((match.group(1),
                             match.group(2)))
                 else:
-                    # For all others ('Since:' and 'Deprecated:') just append
-                    # the line to the description for now.
-                    # But if --no-since is specified, don't append it.
-                    if no_since and pattern == since_pattern:
+                    # For all others ('Since:', 'Since ' and 'Deprecated:')
+                    # just append the line to the description for now.
+                    # But if --no-since is specified, skip a Since line.
+                    if no_since and (pattern == since_pattern or \
+                            pattern == no_colon_since_pattern):
                         pass
                     else:
                         cur_doc.append_to_description(line)
@@ -395,6 +439,10 @@ def process_final_sections(fp, line, cur_doc):
             # Get the next line to continue processing.
             line = fp.readline()
 
+    # Remove the no_colon_since_pattern (which was temporarily added at
+    # the beginning of this function) from the list of final section patterns.
+    final_section_patterns.pop()
+
     return line
 
 def parse_dir(dir, doc_dict):
@@ -403,7 +451,7 @@ def parse_dir(dir, doc_dict):
         path = os.path.join(dir, file)
         if os.path.isdir(path):
             parse_dir(path, doc_dict)
-        if len(file) > 2 and file[-2:] == '.c':
+        if len(file) > 2 and (file[-2:] == '.c' or file[-2:] == '.h'):
             sys.stderr.write("Processing " + path + '\n')
             parse_file(open(path, 'r'), doc_dict)
 
index edc2f36..c94c857 100755 (executable)
@@ -17,7 +17,7 @@ def usage():
     sys.stderr.write('usage: docextract_to_xml.py ' +
         '[-s /src/dir | --source-dir=/src/dir] ' +
         '[-a | --with-annotations] [-p | --with-properties] ' +
-        '[-i | --no-signals ] [-n | --no-since]\n')
+        '[-n | --no-since] [-i | --no-signals ] [-e | --no-enums ]\n')
     sys.exit(1)
 
 # Translates special texts to &... HTML acceptable format.  Also replace
@@ -34,6 +34,7 @@ def escape_text(unescaped_text):
     escaped_text = string.replace(escaped_text, '&ast;', '*')
     escaped_text = string.replace(escaped_text, '&percnt;', '%')
     escaped_text = string.replace(escaped_text, '&commat;', '@')
+    escaped_text = string.replace(escaped_text, '&colon;', ':')
     escaped_text = string.replace(escaped_text, '&num;', '&#35;')
     escaped_text = string.replace(escaped_text, '&nbsp;', '&#160;')
     escaped_text = string.replace(escaped_text, '&solidus;', '&#47;')
@@ -60,10 +61,10 @@ def print_annotations(annotations):
 
 if __name__ == '__main__':
     try:
-        opts, args = getopt.getopt(sys.argv[1:], "d:s:o:apin",
+        opts, args = getopt.getopt(sys.argv[1:], "d:s:o:apnie",
                                    ["source-dir=", "with-annotations",
-                                     "with-properties", "no-signals",
-                                     "no-since"])
+                                     "with-properties", "no-since",
+                                     "no-signals", "no-enums"])
     except getopt.error, e:
         sys.stderr.write('docextract_to_xml.py: %s\n' % e)
         usage()
@@ -71,6 +72,7 @@ if __name__ == '__main__':
     with_annotations = False
     with_signals = True
     with_properties = False
+    with_enums = True
     for opt, arg in opts:
         if opt in ('-s', '--source-dir'):
             source_dirs.append(arg)
@@ -78,10 +80,12 @@ if __name__ == '__main__':
             with_annotations = True
         if opt in ('-p', '--with-properties'):
             with_properties = True
-        if opt in ('-i', '--no-signals'):
-            with_signals = False
         if opt in ('-n', '--no-since'):
             docextract.no_since = True
+        if opt in ('-i', '--no-signals'):
+            with_signals = False
+        if opt in ('-e', '--no-enums'):
+            with_enums = False
     if len(args) != 0:
         usage()
 
@@ -105,6 +109,9 @@ if __name__ == '__main__':
             # Likewise for properties.
             elif block_type == 'property' and not with_properties:
                 continue
+            # Likewise for enums.
+            elif block_type == 'enum' and not with_enums:
+                continue
 
             print "<" + block_type + " name=\"" + escape_text(name) + "\">"
 
@@ -126,15 +133,17 @@ if __name__ == '__main__':
 
                 print "</parameters>"
 
-                # Show the return-type (also if not dealing with a property):
-                if with_annotations:
-                    print "<return>"
-                    print "<return_description>" + escape_text(value.ret[0]) + \
-                            "</return_description>"
-                    print_annotations(value.ret[1])
-                    print "</return>"
-                else:
-                    print "<return>" + escape_text(value.ret[0]) + "</return>"
+            if block_type != 'property' and block_type != 'enum':
+              # Show the return-type (also if not dealing with a property or
+              # enum):
+              if with_annotations:
+                  print "<return>"
+                  print "<return_description>" + escape_text(value.ret[0]) + \
+                          "</return_description>"
+                  print_annotations(value.ret[1])
+                  print "</return>"
+              else:
+                  print "<return>" + escape_text(value.ret[0]) + "</return>"
 
             if with_annotations:
                 print_annotations(value.get_annotations())
index e56622a..6e63aea 100644 (file)
@@ -35,7 +35,8 @@
 
 int main(int, char**)
 {
-  g_type_init ();
+  // g_type_init() is deprecated as of 2.36.
+  // g_type_init();
 
   std::cout << get_defs(G_TYPE_ASYNC_RESULT)
             << get_defs(G_TYPE_ACTION)
@@ -113,6 +114,15 @@ int main(int, char**)
             << get_defs(G_TYPE_SOCKET_CLIENT)
             << get_defs(G_TYPE_SOCKET_CONNECTION)
             << get_defs(G_TYPE_TCP_CONNECTION)
+            << get_defs(G_TYPE_TLS_BACKEND)
+            << get_defs(G_TYPE_TLS_CERTIFICATE)
+            << get_defs(G_TYPE_TLS_CLIENT_CONNECTION)
+            << get_defs(G_TYPE_TLS_CONNECTION)
+            << get_defs(G_TYPE_TLS_DATABASE)
+            << get_defs(G_TYPE_TLS_FILE_DATABASE)
+            << get_defs(G_TYPE_TLS_INTERACTION)
+            << get_defs(G_TYPE_TLS_PASSWORD)
+            << get_defs(G_TYPE_TLS_SERVER_CONNECTION)
 #ifndef G_OS_WIN32
             << get_defs(G_TYPE_UNIX_CONNECTION)
 #endif
index 76286bd..01176b7 100644 (file)
@@ -24,7 +24,8 @@
 
 int main()
 {
-  g_type_init();
+  // g_type_init() is deprecated as of 2.36.
+  // g_type_init();
 
   std::cout << get_defs( G_TYPE_DATE )
             << get_defs( G_TYPE_IO_CHANNEL )
index b558ee1..8229cd7 100644 (file)
@@ -256,6 +256,3 @@ std::string get_defs(GType gtype, GTypeIsAPointerFunc is_a_pointer_func)
 
   return strDefs;
 }
-
-
-
index 5c78e12..4fac16d 100644 (file)
@@ -33,11 +33,18 @@ _CONV_ENUM(G,MountOperationResult)
 _CONV_ENUM(G,MountUnmountFlags)
 _CONV_ENUM(G,OutputStreamSpliceFlags)
 _CONV_ENUM(G,PasswordSave)
+_CONV_ENUM(G,ResolverRecordType)
 _CONV_ENUM(G,SettingsBindFlags)
 _CONV_ENUM(G,SocketFamily)
 _CONV_ENUM(G,SocketMsgFlags)
 _CONV_ENUM(G,SocketProtocol)
 _CONV_ENUM(G,SocketType)
+_CONV_ENUM(G,TlsCertificateFlags)
+_CONV_ENUM(G,TlsDatabaseVerifyFlags)
+_CONV_ENUM(G,TlsDatabaseLookupFlags)
+_CONV_ENUM(G,TlsInteractionResult)
+_CONV_ENUM(G,TlsPasswordFlags)
+_CONV_ENUM(G,TlsRehandshakeMode)
 _CONV_ENUM(G,UnixSocketAddressType)
 _CONV_ENUM(G,ZlibCompressorFormat)
 
@@ -248,6 +255,8 @@ _CONVERSION(`GSocketAddressEnumerator*',`Glib::RefPtr<SocketAddressEnumerator>',
 
 #SocketConnectable
 _CONVERSION(`const Glib::RefPtr<SocketConnectable>&',`GSocketConnectable*',__CONVERT_CONST_REFPTR_TO_P)
+_CONVERSION(`const Glib::RefPtr<const SocketConnectable>&', `GSocketConnectable*', `const_cast<GSocketConnectable*>(Glib::unwrap($3))')
+_CONVERSION(`GSocketConnectable*',`Glib::RefPtr<SocketConnectable>',`Glib::wrap($3)')
 
 #SocketConnection
 _CONVERSION(`GSocketConnection*',`Glib::RefPtr<SocketConnection>',`Glib::wrap($3)')
@@ -259,6 +268,22 @@ _CONVERSION(`GSocketControlMessage*',`Glib::RefPtr<SocketControlMessage>',`Glib:
 #TimeZoneMonitor
 _CONVERSION(`GTimeZoneMonitor*',`Glib::RefPtr<TimeZoneMonitor>',`Glib::wrap($3)')
 
+#TlsCertificate
+_CONVERSION(`GTlsCertificate*', `Glib::RefPtr<TlsCertificate>', `Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<const TlsCertificate>&', `GTlsCertificate*', `const_cast<GTlsCertificate*>(Glib::unwrap($3))')
+_CONVERSION(`const Glib::RefPtr<TlsCertificate>&',`GTlsCertificate*',`Glib::unwrap($3)')
+
+#TlsDatabase
+_CONVERSION(`GTlsDatabase*',`Glib::RefPtr<TlsDatabase>',`Glib::wrap($3)')
+_CONVERSION(`const Glib::RefPtr<TlsDatabase>&',`GTlsDatabase*',`Glib::unwrap($3)')
+
+#TlsInteraction
+_CONVERSION(`const Glib::RefPtr<TlsInteraction>&',`GTlsInteraction*',`Glib::unwrap($3)')
+_CONVERSION(`GTlsInteraction*',`Glib::RefPtr<TlsInteraction>',`Glib::wrap($3)')
+
+#TlsPassword
+_CONVERSION(`const Glib::RefPtr<TlsPassword>&',`GTlsPassword*',`Glib::unwrap($3)')
+
 #UnixFDList
 _CONVERSION(`GUnixFDList*',`Glib::RefPtr<UnixFDList>',`Glib::wrap($3)')
 _CONVERSION(`const Glib::RefPtr<UnixFDList>&',`GUnixFDList*',`Glib::unwrap($3)')
index 9ac8eeb..5e36245 100644 (file)
@@ -155,8 +155,7 @@ _CONVERSION(`const VariantContainerBase&',`GVariant*',`const_cast<GVariant*>(($3
 dnl VariantType
 _CONVERSION(`const VariantType&',`const GVariantType*',`($3).gobj()')
 _CONVERSION(`const Glib::VariantType&',`const GVariantType*',`($3).gobj()')
-_CONVERSION(`const GVariantType*',`VariantType',`Glib::wrap(const_cast<GVariantType*>($3), true)')
-_CONVERSION(`GVariantType*',`VariantType',`Glib::wrap(($3), true)')
+_CONVERSION(`GVariantType*',`VariantType',`Glib::wrap($3)')
 
 dnl Miscellaneous
 _CONVERSION(`gint64&',`gint64*',`&($3)')
index b1901d5..3ac338b 100644 (file)
@@ -1,4 +1,3 @@
-
 dnl
 dnl _ENUM(cpp_type, c_type, value_suffix, `element_list', `flags', `optional_refdoc_comment', 'get_type_function_name')
 dnl
@@ -20,7 +19,7 @@ m4_define(`__DOCGROUP_'__MODULE_CANONICAL__`_ENUMS__')dnl
 ')dnl endif
 dnl
 dnl
-/**$6
+/** $6
  * @ingroup __MODULE_CANONICAL__`'Enums
 m4_ifelse($3,Flags,`dnl
  * @par Bitwise operators:
@@ -98,4 +97,3 @@ GType Glib::Value<__NAMESPACE__::__ENUM_CPPNAME__>::value_type()
 _POP()
 ')dnl endif !NO_GTYPE
 ')dnl enddef _ENUM
-
index 41a5e76..3c48b3e 100644 (file)
@@ -9,8 +9,8 @@ dnl
 
 dnl
 dnl method
-dnl           $1       $2     $3         $4       $5        $6        $7         $8          $9     $10       $11       $12         $13       $14         $15               $16        $17             $18
-dnl  _METHOD(cppname,cname,cpprettype,crettype,arglist,cdeclarations,cargs,cinitializations,const,refreturn,errthrow,deprecated,constversion,ifdef,arglist_without_types,out_param,out_param_cpptype,wrap_line)
+dnl           $1       $2     $3         $4       $5        $6        $7         $8          $9     $10       $11       $12         $13       $14         $15               $16        $17              $18        $19        $20         $21
+dnl  _METHOD(cppname,cname,cpprettype,crettype,arglist,cdeclarations,cargs,cinitializations,const,refreturn,errthrow,deprecated,constversion,ifdef,arglist_without_types,out_param,out_param_cpptype,slot_type,slot_name,no_slot_copy,wrap_line)
 define(`_METHOD',`dnl
 _PUSH(SECTION_CC)
 ifelse(`$12',,,`_DEPRECATE_IFDEF_START
@@ -21,8 +21,19 @@ $3 __CPPNAME__::$1`'($5)ifelse(`$9',1,` const')
 {
 ifelse(`$13',,dnl
 `ifelse(`$10'`$11',,dnl If it is not errthrow or refreturn
+dnl If a slot type has been specified insert a slot copy declaration.
+`ifelse(`$18',,,dnl
+dnl See if the slot should or should not be copied
+`ifelse(`$20',,dnl
+`  // Create a copy of the slot.
+  $18* slot_copy = new $18($19); ',dnl
+dnl
+`  // Use the original slot (not a copy).
+  $18* slot_copy = const_cast<$18*>(&$19);')
+
+')`'dnl
 dnl Insert the declarations for C output parameters
-`ifelse(`$6',,,`$6
+ifelse(`$6',,,`$6
 ')`'dnl
 ifelse(`$16',,dnl If no C++ output parameter is specified
 `ifelse(`$3',void,dnl If the C function returns voids:
@@ -41,7 +52,7 @@ ifelse(`$6',,,`  return retvalue;
 ')dnl
 ')'dnl End if it returns voids.
 dnl A C++ output parameter is specified:
-,`  _INITIALIZE($17,$4,`$16',`$2`'(ifelse(`$9',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$7',,,`, ')$7)',$18);
+,`  _INITIALIZE($17,$4,`$16',`$2`'(ifelse(`$9',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$7',,,`, ')$7)',$21);
 dnl
 dnl Insert the initializations for the C output parameters
 ifelse(`$8',,,`$8
@@ -50,6 +61,17 @@ ifelse(`$8',,,`$8
 dnl If is errthrow or refreturn
 `ifelse(`$11',,,`  GError* gerror = 0;
 ')dnl
+dnl If a slot type has been specified insert a slot copy declaration.
+ifelse(`$18',,,dnl
+dnl See if the slot should or should not be copied
+`ifelse(`$20',,dnl
+`  // Create a copy of the slot.
+  $18* slot_copy = new $18($19); ',dnl
+dnl
+`  // Use the original slot (not a copy).
+  $18* slot_copy = const_cast<$18*>(&$19);')
+
+')`'dnl
 dnl Insert the declarations for C output parameters
 ifelse(`$6',,,`$6
 ')`'dnl
@@ -57,7 +79,7 @@ ifelse(`$16',,dnl If no C++ output parameter is specified:
 `  ifelse(`$3',void,,``$3' retvalue = ')_CONVERT($4,`$3',`$2`'(ifelse(`$9',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$7',,,`, ')$7)');
 'dnl
 ,dnl A C++ output parameter is specified:
-`  _INITIALIZE($17,$4,`$16',`$2`'(ifelse(`$9',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$7',,,`, ')$7)',$18);
+`  _INITIALIZE($17,$4,`$16',`$2`'(ifelse(`$9',1,const_cast<__CNAME__*>(gobj()),gobj())`'ifelse(`$7',,,`, ')$7)',$21);
 'dnl
 )dnl
 ifelse(`$11',,,`dnl
@@ -87,8 +109,8 @@ _POP()')
 
 dnl
 dnl static method
-dnl                  $1       $2     $3         $4      $5        $6         $7         $8            $9      $10         $11       $12     $13        $14          $15
-dnl  _STATIC_METHOD(cppname,cname,cpprettype,crettype,arglist,cdeclarations,cargs,cinitializations,refreturn,errthrow,deprecated,ifdef,out_param,out_param_type,wrap_line)
+dnl                  $1       $2     $3         $4      $5        $6         $7         $8            $9      $10         $11       $12     $13        $14         $15      $16          $17       $18
+dnl  _STATIC_METHOD(cppname,cname,cpprettype,crettype,arglist,cdeclarations,cargs,cinitializations,refreturn,errthrow,deprecated,ifdef,out_param,out_param_type,slot_type,slot_name,no_slot_copy,wrap_line)
 define(`_STATIC_METHOD',`dnl
 _PUSH(SECTION_CC)
 ifelse(`$11',,,`_DEPRECATE_IFDEF_START
@@ -98,6 +120,17 @@ ifelse(`$12',,,`#ifdef $12'
 $3 __CPPNAME__::$1($5)
 {
 ifelse(`$9'`$10',,dnl
+dnl If a slot type has been specified insert a slot copy declaration.
+ifelse(`$15',,,dnl
+dnl See if the slot should or should not be copied
+`ifelse(`$17',,dnl
+`  // Create a copy of the slot.
+  $15* slot_copy = new $15($16); ',dnl
+dnl
+`  // Use the original slot (not a copy).
+  $15* slot_copy = const_cast<$15*>(&$16);')
+
+')`'dnl
 dnl Insert declarations for C the output parameters
 ifelse(`$6',,,`$6
 ')`'dnl
@@ -108,7 +141,7 @@ dnl Returns non-void:
 dnl Store the return if there are C output parameters
 ifelse(`$6',,`return ',``$3' retval = '))_CONVERT($4,`$3',`$2`'($7)');'dnl
 dnl A C++ output parameter is specified so initialize it from C return
-,`  _INITIALIZE($14,$4,`$13',`$2`'($7)',$15);'dnl
+,`  _INITIALIZE($14,$4,`$13',`$2`'($7)',$18);'dnl
 )
 dnl Insert the initializations for the C output parameters if there are any
 ifelse(`$8',,,`$8
@@ -118,13 +151,24 @@ ifelse(`$3',void,,`ifelse(`$6',,,`  return retval;
 ')')dnl
 ',dnl End if a C++ output parameter is specified.
 `ifelse(`$10',,,`  GError* gerror = 0;')
+dnl If a slot type has been specified insert a slot copy declaration.
+ifelse(`$15',,,dnl
+dnl See if the slot should or should not be copied
+`ifelse(`$17',,dnl
+`  // Create a copy of the slot.
+  $15* slot_copy = new $15($16); ',dnl
+dnl
+`  // Use the original slot (not a copy).
+  $15* slot_copy = const_cast<$15*>(&$16);')
+
+')`'dnl
 dnl Insert the declarations for the C output parameters
 ifelse(`$6',,,`$6
 ')`'dnl
 ifelse(`$13',,dnl If no C++ output parameter is specified:
   ifelse(`$3',void,,``$3' retvalue = ')_CONVERT($4,`$3',`$2`'($7)');dnl
 dnl A C++ output parameter is specified:
-,`  _INITIALIZE($14,$4,`$13',`$2`'($7)',$15);'dnl
+,`  _INITIALIZE($14,$4,`$13',`$2`'($7)',$18);'dnl
 )dnl
 ifelse(`$10',,,`
   if(gerror)
index 2d270a9..119f21c 100644 (file)
@@ -8,7 +8,7 @@ dnl
 
 dnl                  $1         $2            $3          $4           $5        $6
 dnl _PROPERTY_PROXY(name, name_underscored, cpp_type, proxy_suffix, deprecated, docs)
-dnl proxy_suffix could be "_WriteOnly" or "_ReadOnly"
+dnl proxy_suffix could be "", "_WriteOnly" or "_ReadOnly"
 dnl The method will be const if the propertyproxy is _ReadOnly.
 dnl
 define(`_PROPERTY_PROXY',`dnl
@@ -21,8 +21,9 @@ Glib::PropertyProxy$4< _QUOTE($3) >'dnl
 /** $6
    *
    * You rarely need to use properties because there are get_ and set_ methods for almost all of them.
-   * @return A PropertyProxy that allows you to get or set the property of the value, or receive notification when
-   * the value of the property changes.
+   * @return A PropertyProxy$4 that allows you to dnl
+ifelse($4,_ReadOnly,get,`ifelse($4,_WriteOnly,set,get or set)') the value of the property,
+   * or receive notification when the value of the property changes.
    */
   __PROXY_TYPE__ property_$2`'() ifelse($4,_ReadOnly, const,);
 #endif //#GLIBMM_PROPERTIES_ENABLED
index 4671948..f9802eb 100644 (file)
@@ -16,11 +16,11 @@ dnl               $10 = `refdoc_comment',
 dnl               $11 = ifdef)
 
 define(`_SIGNAL_PROXY',`
-$10
 ifelse(`$11',,,`#ifdef $11'
 )dnl
 ifelse(`$9',,,`_DEPRECATE_IFDEF_START
 ')dnl
+$10
   Glib::SignalProxy`'_NUM($6)< $5`'_COMMA_PREFIX($6) > signal_$4`'();
 ifelse(`$9',,,`_DEPRECATE_IFDEF_END
 ')dnl
index c361162..061ba5c 100644 (file)
@@ -21,7 +21,9 @@ _POP()')
 dnl              $1      $2       $3        $4
 dnl _VFUNC_PCC(cppname,gtkname,cpprettype,crettype,
 dnl                         $5               $6           $7            $8         $9           $10      $11
-dnl                  `<cargs and names>',`<cnames>',`<cpparg names>',firstarg, refreturn_ctype, ifdef, errthrow)
+dnl                  `<cargs and names>',`<cnames>',`<cpparg names>',firstarg, refreturn_ctype, ifdef, errthrow,
+dnl                     $12           $13
+dnl                  slot_type, c_data_param_name)
 dnl
 dnl Note: _get_current_wrapper_inline() could be used throughout for performance instead of _get_current_wrapper(),
 dnl and is_derived_() instead of is_derived_(),
@@ -32,6 +34,10 @@ ifelse(`$10',,,`#ifdef $10'
 )dnl
 $4 __CPPNAME__`'_Class::$2_vfunc_callback`'($5)
 {
+ifelse(`$13',,,dnl
+`  const $12* slot = static_cast<$12*>($13);
+
+')dnl
 dnl  First, do a simple cast to ObjectBase. We will have to do a dynamic_cast
 dnl  eventually, but it is not necessary to check whether we need to call
 dnl  the vfunc.
@@ -87,12 +93,12 @@ dnl  g_assert(base != 0);
   // Call the original underlying C function:
   if(base && base->$2)
   {
-    ifelse($4,void,,`$4 result = ')(*base->$2)`'($6);
+    ifelse($4,void,,`$4 retval = ')(*base->$2)`'($6);
 ifelse($11,errthrow,`dnl
     if(*error)
       ::Glib::Error::throw_exception(*error);
 ')dnl
-ifelse($4,void,,`    return result;
+ifelse($4,void,,`    return retval;
 ')dnl
   }
 
@@ -106,8 +112,8 @@ ifelse(`$10',,,`#endif // $10
 ')dnl
 _POP()')
 
-#               $1        $2          $3         $4          $5             $6          $7        $8        $9        $10
-# _VFUNC_CC(vfunc_name, gtkname, cpp_rettype, c_rettype, `<cppargs>', `<carg_names>', is_const, refreturn, $ifdef, $errthrow)
+#               $1        $2          $3         $4          $5             $6          $7        $8        $9        $10         $11        $12          $13
+# _VFUNC_CC(vfunc_name, gtkname, cpp_rettype, c_rettype, `<cppargs>', `<carg_names>', is_const, refreturn, $ifdef, $errthrow, $slot_type, $slot_name, $no_slot_copy)
 #
 define(`_VFUNC_CC',`dnl
 _PUSH(SECTION_CC_VFUNCS)
@@ -115,6 +121,17 @@ ifelse(`$9',,,`#ifdef $9'
 )dnl
 $3 __NAMESPACE__::__CPPNAME__::$1`'($5) ifelse($7,1,const,)
 {
+dnl If a slot type has been specified, insert code to create a copy of it.
+ifelse(`$11',,,dnl
+dnl See if the slot should or should not be copied
+`ifelse(`$13',,dnl
+`  // Create a copy of the slot.
+  $11* slot_copy = new $11($12); ',dnl
+dnl
+`  // Use the original slot (not a copy).
+  $11* slot_copy = const_cast<$11*>(&$12);')
+
+')dnl
   BaseClassType *const base = static_cast<BaseClassType*>(
 ifdef(`__BOOL_IS_INTERFACE__',`dnl
       _IFACE_PARENT_FROM_OBJECT(gobject_)dnl
@@ -133,15 +150,15 @@ ifelse($3,void,`dnl
   }
 ',`dnl
 ifelse($8,refreturn,`dnl Assume Glib::wrap() is correct if refreturn is requested.
-    $3 result(Glib::wrap((*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6)), true));
+    $3 retval(Glib::wrap((*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6)), true));
 ',`dnl
-    $3 result(_CONVERT($4,$3,`(*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6))'));
+    $3 retval(_CONVERT($4,$3,`(*base->$2)`'(ifelse(`$7',1,const_cast<__CNAME__*>(gobj()),gobj())`'_COMMA_PREFIX($6))'));
 ')dnl
 ifelse($10,errthrow,`dnl
     if(gerror)
       ::Glib::Error::throw_exception(gerror);
 ')dnl
-    return result;
+    return retval;
   }
 
   typedef $3 RType;
index 65d3f1d..87fcdfd 100644 (file)
@@ -112,11 +112,12 @@ sub parse_on_start($$%)
 
   $tag = lc($tag);
 
-  if($tag eq "function" or $tag eq "signal")
+  if($tag eq "function" or $tag eq "signal" or $tag eq "enum")
   {
     if(defined $DocsParser::objCurrentFunction)
     {
-      $objParser->xpcroak("\nClose a function tag before you open another one.");
+      $objParser->xpcroak(
+        "\nClose a function, signal or enum tag before you open another one.");
     }
 
     my $functionName = $attr{name};
@@ -194,7 +195,7 @@ sub parse_on_end($$)
 
   $tag = lc($tag);
 
-  if($tag eq "function" or $tag eq "signal")
+  if($tag eq "function" or $tag eq "signal" or $tag eq "enum")
   {
     # Store the Function structure in the array:
     my $functionName = $$DocsParser::objCurrentFunction{name};
@@ -233,10 +234,84 @@ sub parse_on_cdata($$)
 }
 
 
-# $strCommentBlock lookup_documentation($strFunctionName, $deprecation_docs)
-sub lookup_documentation($$)
+# $text lookup_enum_description($enum_name)
+# Looks up the description of enum and returns it after converting it from
+# C to C++ format.
+sub lookup_enum_description($)
 {
-  my ($functionName, $deprecation_docs) = @_;
+  my ($enum_name) = @_;
+
+  my $objFunction = $DocsParser::hasharrayFunctions{$enum_name};
+  if(!$objFunction)
+  {
+    #print "DocsParser.pm: Warning: enum not found: $enum_name\n";
+    return ""
+  }
+
+  my $text = $$objFunction{description};
+
+  if(length($text) eq 0)
+  {
+    print "DocsParser.pm: Warning: No C docs for: \"$enum_name\"\n";
+    return "";
+  }
+
+  DocsParser::convert_docs_to_cpp($objFunction, \$text);
+  DocsParser::add_m4_quotes(\$text);
+
+  # Escape the space after "i.e." or "e.g." in the brief description.
+  $text =~ s/^([^.]*\b(?:i\.e\.|e\.g\.))\s/$1\\ /;
+
+  remove_example_code($enum_name, \$text);
+
+  return $text;
+}
+
+# $strCommentBlock lookup_enum_value_documentation($enum_name, $c_val_name)
+# Returns a Doxygen comment block for the enum value.
+sub lookup_enum_value_documentation($$)
+{
+  my ($enum_name, $c_val_name) = @_;
+
+  # Assume that there is no description.
+  my $desc = "";
+
+  my $obj_function = $DocsParser::hasharrayFunctions{$enum_name};
+
+  if($obj_function)
+  {
+    my $param_descriptions = \$$obj_function{param_descriptions};
+    $desc = $$param_descriptions->{$c_val_name};
+  }
+
+  if(!$desc or length($desc) eq 0)
+  {
+    return "";
+  }
+
+  DocsParser::convert_docs_to_cpp($obj_function, \$desc);
+  DocsParser::add_m4_quotes(\$desc);
+
+  # Escape the space after "i.e." or "e.g." in the brief description.
+  $desc =~ s/^([^.]*\b(?:i\.e\.|e\.g\.))\s/$1\\ /;
+
+  remove_example_code($enum_name, \$desc);
+
+  # Convert to Doxygen-style comment.
+  $desc =~ s/\n/\n${DocsParser::commentMiddleStart}/g;
+  $desc =  $DocsParser::commentStart . $desc;
+  $desc .= "\n${DocsParser::commentEnd}\n";
+
+  return $desc;
+}
+
+# $strCommentBlock lookup_documentation($strFunctionName, $deprecation_docs, $objCppfunc)
+# The final objCppfunc parameter is optional.  If passed, it is used to
+# decide if the final C parameter should be omitted if the C++ method
+# has a slot parameter.
+sub lookup_documentation($$;$)
+{
+  my ($functionName, $deprecation_docs, $objCppfunc) = @_;
 
   my $objFunction = $DocsParser::hasharrayFunctions{$functionName};
   if(!$objFunction)
@@ -260,22 +335,14 @@ sub lookup_documentation($$)
     $text .= "\n\@deprecated $deprecation_docs";
   }
 
-  DocsParser::append_parameter_docs($objFunction, \$text);
+  DocsParser::append_parameter_docs($objFunction, \$text, $objCppfunc);
   DocsParser::append_return_docs($objFunction, \$text);
   DocsParser::add_m4_quotes(\$text);
 
   # Escape the space after "i.e." or "e.g." in the brief description.
   $text =~ s/^([^.]*\b(?:i\.e\.|e\.g\.))\s/$1\\ /;
 
-  # Remove C example code.
-  my $example_removals =
-    ($text =~ s"<informalexample>.*?</informalexample>"[C example ellipted]"sg);
-  $example_removals +=
-    ($text =~ s"<programlisting>.*?</programlisting>"\n[C example ellipted]"sg);
-  $example_removals += ($text =~ s"\|\[.*?]\|"\n[C example ellipted]"sg);
-
-  print STDERR "gmmproc: $functionName(): Example code discarded.\n"
-    if ($example_removals);
+  remove_example_code($functionName, \$text);
 
   # Convert to Doxygen-style comment.
   $text =~ s/\n/\n${DocsParser::commentMiddleStart}/g;
@@ -285,6 +352,23 @@ sub lookup_documentation($$)
   return $text;
 }
 
+# void remove_example_code($obj_name, \$text)
+# Removes example code from the text of docs (passed by reference).
+sub remove_example_code($$)
+{
+  my ($obj_name, $text) = @_;
+
+  # Remove C example code.
+  my $example_removals =
+    ($$text =~ s"<informalexample>.*?</informalexample>"[C example ellipted]"sg);
+  $example_removals +=
+    ($$text =~ s"<programlisting>.*?</programlisting>"\n[C example ellipted]"sg);
+  $example_removals += ($$text =~ s"\|\[.*?]\|"\n[C example ellipted]"sg);
+
+  print STDERR "gmmproc: $obj_name: Example code discarded.\n"
+    if ($example_removals);
+}
+
 sub add_m4_quotes($)
 {
   my ($text) = @_;
@@ -300,9 +384,12 @@ sub add_m4_quotes($)
   $$text = "`" . $$text . "'";
 }
 
-sub append_parameter_docs($$)
+# The final objCppfunc is optional.  If passed, it is used to determine
+# if the final C parameter should be omitted if the C++ method has a
+# slot parameter.
+sub append_parameter_docs($$;$)
 {
-  my ($obj_function, $text) = @_;
+  my ($obj_function, $text, $objCppfunc) = @_;
 
   my @param_names = @{$$obj_function{param_names}};
   my $param_descriptions = \$$obj_function{param_descriptions};
@@ -317,12 +404,24 @@ sub append_parameter_docs($$)
   # Also skip first param if this is a signal.
   shift(@param_names) if ($$obj_function{name} =~ /\w+::/);
 
+  # Skip the last param if there is a slot because it would be a
+  # gpointer user_data parameter.
+  pop(@param_names) if (defined($objCppfunc) && $$objCppfunc{slot_name});
+
   foreach my $param (@param_names)
   {
     if ($param ne "error" ) #We wrap GErrors as exceptions, so ignore these.
     {
       my $desc = $$param_descriptions->{$param};
 
+      # Deal with callback parameters converting the docs to a slot
+      # compatible format.
+      if ($param eq "callback")
+      {
+        $param = "slot";
+        $$text =~ s/\@a callback/\@a slot/g;
+      }
+
       $param =~ s/([a-zA-Z0-9]*(_[a-zA-Z0-9]+)*)_?/$1/g;
       DocsParser::convert_docs_to_cpp($obj_function, \$desc);
       if(length($desc) > 0)
@@ -375,37 +474,40 @@ sub convert_tags_to_doxygen($)
   for($$text)
   {
     # Replace format tags.
-    s"<(/?)emphasis>"<$1em>"g;
-    s"<(/?)literal>"<$1tt>"g;
-    s"<(/?)constant>"<$1tt>"g;
-    s"<(/?)function>"<$1tt>"g;
+    s"<(/?)(?:emphasis|replaceable)>"<$1em>"g;
+    s"<(/?)(?:constant|envar|filename|function|guimenuitem|literal|option|structfield|varname)>"<$1tt>"g;
 
     # Some argument names are suffixed by "_" -- strip this.
     # gtk-doc uses @thearg, but doxygen uses @a thearg.
     s" ?\@([a-zA-Z0-9]*(_[a-zA-Z0-9]+)*)_?\b" \@a $1"g;
 
-    # Don't convert doxygen's @throws and @param, so these can be used in the
-    # docs_override.xml:
-    s" \@a (throws|param)" \@$1"g;
-    s"^Note ?\d?: "\@note "mg;
+    # Don't convert Doxygen's $throw, @throws and @param, so these can be used
+    # in the docs_override.xml.
+    s" \@a (throws?|param)\b" \@$1"g;
 
+    s"^Note ?\d?: "\@note "mg;
     s"</?programlisting>""g;
-
     s"<!>""g;
 
     # Remove all link tags.
     s"</?u?link[^&]*?>""g;
 
-    # Remove all para tags (from tmpl sgml files).
-    s"</?para>""g;
+    # Remove all para tags and simpara tags (simple paragraph).
+    s"</?(sim)?para>""g;
 
-    # Convert <itemizedlist> tags to Doxygen format.
-    s"</?itemizedlist>\n?""g;
-    s"<listitem>(.*?)(\n?)</listitem>(\n?)"- $1\n"sg;
+    # Convert <simplelist>, <itemizedlist> and <variablelist> to something that
+    # Doxygen understands.
+    s"<simplelist>\n?(.*?)</simplelist>\n?"&DocsParser::convert_simplelist($1)"esg;
+    s"<itemizedlist>\n?(.*?)</itemizedlist>\n?"&DocsParser::convert_itemizedlist($1)"esg;
+    s"<variablelist>\n?(.*?)</variablelist>\n?"&DocsParser::convert_variablelist($1)"esg;
 
-    # Use our Doxygen @newin alias:
-    s/\bSince:\s*(\d+)\.(\d+)\.(\d+)\b/\@newin{$1,$2,$3}/g;
-    s/\bSince:\s*(\d+)\.(\d+)\b/\@newin{$1,$2}/g;
+    # Use our Doxygen @newin alias.
+    # If Since is not followed by a colon, substitute @newin only if it's
+    # in a sentence of its own at the end of the string. 
+    s/\bSince:\s*(\d+)\.(\d+)\.(\d+)\b\.?/\@newin{$1,$2,$3}/g;
+    s/\bSince:\s*(\d+)\.(\d+)\b\.?/\@newin{$1,$2}/g;
+    s/(\.\s+)Since\s+(\d+)\.(\d+)\.(\d+)\.?$/$1\@newin{$2,$3,$4}/;
+    s/(\.\s+)Since\s+(\d+)\.(\d+)\.?$/$1\@newin{$2,$3}/;
 
     s"\b->\b"->"g;
 
@@ -420,11 +522,41 @@ sub convert_tags_to_doxygen($)
     s"#?\bg(int|short|long)\b"<tt>$1</tt>"g;
     s"#?\bgu(int|short|long)\b"<tt>unsigned $1</tt>"g;
 
-    # For Gtk::TextIter.
-    s"(\\[rn])\b"<tt>\\$1</tt>"g;
+    # Escape all backslashes, except in \throw, \throws and \param, which can
+    # be Doxygen commands in the docs_override.xml.
+    s"\\"\\\\"g;
+    s"\\\\(throws?|param)\b"\\$1"g
   }
 }
 
+# Convert <simplelist> tags to a list of newline-separated elements.
+sub convert_simplelist($)
+{
+  my ($text) = @_;
+
+  $text =~ s"<member>(.*?)(\n?)</member>(\n?)"$1<br>\n"sg;
+  return "<br>\n" . $text . "<br>\n";
+}
+
+# Convert <itemizedlist> tags to Doxygen format.
+sub convert_itemizedlist($)
+{
+  my ($text) = @_;
+
+  $text =~ s"<listitem>(.*?)(\n?)</listitem>(\n?)"- $1\n"sg;
+  return $text;
+}
+
+# Convert <variablelist> tags to an HTML definition list.
+sub convert_variablelist($)
+{
+  my ($text) = @_;
+
+  $text =~ s"</?varlistentry>\n?""g;
+  $text =~ s"<(/?)term>"<$1dt>"g;
+  $text =~ s"<(/?)listitem>"<$1dd>"g;
+  return "<dl>\n" . $text . "</dl>\n";
+}
 
 sub substitute_identifiers($$)
 {
@@ -463,6 +595,9 @@ sub substitute_identifiers($$)
     s/\bNo::/NO_/g;
     s/\bG:://g; #Rename G::Something to Something. Doesn't seem to work. murrayc.
 
+    # Substitute callback types to slot types.
+    s/(\b\w+)Callback/Slot$1/g;
+
     # Replace C function names with C++ counterparts.
     s/\b([a-z]+_[a-z][a-z\d_]+) ?\(\)/&DocsParser::substitute_function($doc_func, $1)/eg;
   }
index 6096645..2c71ab8 100644 (file)
@@ -2,6 +2,7 @@ package Enum;
 
 use strict;
 use warnings;
+use DocsParser;
 
 BEGIN {
      use Exporter   ();
@@ -27,6 +28,7 @@ our @EXPORT_OK;
 #
 #       string array elem_names;
 #       string array elem_values;
+#       string c_prefix;
 #
 #       bool mark;
 #    }
@@ -143,6 +145,7 @@ sub new
 
   $$self{mark}  = 0;
   $$self{flags} = 0;
+  $$self{c_prefix} = "";
 
   $$self{elem_names}  = [];
   $$self{elem_values} = [];
@@ -215,6 +218,9 @@ sub parse_values($$)
   {
     # cut off the module prefix, e.g. GTK_
     s/^$common_prefix// foreach (@$elem_names);
+
+    # Save the common prefix.
+    $$self{c_prefix}  = $common_prefix;
   }
 
   $$self{elem_names}  = $elem_names;
@@ -311,15 +317,34 @@ sub build_element_list($$$$)
     my $name  = $$elem_names[$i];
     my $value = $$elem_values[$i];
 
+    my $docs  =
+      DocsParser::lookup_enum_value_documentation("$$self{c_type}",
+        "$$self{c_prefix}$name");
+
     for(my $ii = 0; $ii < scalar(@subst_in); ++$ii)
     {
       $name  =~ s/${subst_in[$ii]}/${subst_out[$ii]}/;
       $value =~ s/${subst_in[$ii]}/${subst_out[$ii]}/;
     }
 
+    # Skip this element, if its name has been deleted.
+    next if($name eq "");
+
+    if($docs ne "")
+    {
+      # Make sure the docs is indented the right number of spaces.
+      # (First remove initial spaces in first line and then the rest
+      # and then indent the lines).
+      $docs =~ s/^\s+//;
+      $docs =~ s/\n\s+/\n/g;
+      $docs =~ s/\n(\s*\*)/\n${indent} $1/g;
+      $docs = "${indent}${docs}";
+    }
+
+    $elements .= ",\n" if($elements ne "");
+    $elements .= $docs;
     $elements .= "${indent}${name}";
     $elements .= " = ${value}" if($value ne "");
-    $elements .= ",\n" if($i < $num_elements - 1);
   }
 
   return $elements;
index 598178b..8934b2c 100644 (file)
@@ -260,15 +260,26 @@ sub parse_param($$)
       # Determine if the param is optional, an output param or if a C param
       # name should be mapped to the current C++ index (if name ends with
       # {c_name>>?}). (A '.' for the name means use the C++ as the C name).
-      # '@' - Means that it is an output parameter.
+      # '>>' - Means that it is an output parameter.
       # '?' - Means that it is an optional parameter.
-      if ($name =~ /\{\s*(\w+|\.)?\s*(>>)?\s*(\??)\s*\}$/)
+      if ($name =~ /\{(.*)\}$/)
       {
-        $flags = FLAG_PARAM_OPTIONAL if($3);
-        $flags |= FLAG_PARAM_OUTPUT if($2);
-        $mapping = $1 if($1);
-        $name =~ s/\{\s*(\w+|\.)?\s*(>>)?\s*\??\s*\}$//;
-        $mapping = $name if($mapping eq ".");
+        # Get the options.
+        my $options = $1;
+        # Remove the options from the name.
+        $name =~ s/\{.*\}$//;
+        # Check if param should be optional or an output param.
+        $flags = FLAG_PARAM_OPTIONAL if($options =~ /\?/);
+        $flags |= FLAG_PARAM_OUTPUT if($options =~ />>/);
+        # Check if it should be mapped to a C param.
+        if ($options =~ /(\w+|\.)/)
+        {
+          $mapping = $1;
+          $mapping = $name if($mapping eq ".");
+        }
       }
 
       push(@$param_types, $type);
@@ -331,17 +342,30 @@ sub parse_param($$)
   }
 
   $type = string_trim($type);
-  
+
   # Determine if the param is optional, an output param or if a C param
   # name should be mapped to the current C++ index (if name ends with
   # {c_name>>?}). (A '.' for the name means use the C++ as the C name).
-  if ($name =~ /\{\s*(\w+|\.)?\s*(>>)?\s*(\??)\s*\}$/)
+  # '>>' - Means that it is an output parameter.
+  # '?' - Means that it is an optional parameter.
+  if ($name =~ /\{(.*)\}$/)
   {
-    $flags = FLAG_PARAM_OPTIONAL if($3);
-    $flags |= FLAG_PARAM_OUTPUT if($2);
-    $mapping = $1 if($1);
-    $name =~ s/\{\s*(\w+|\.)?\s*(>>)?\??\s*\}$//;
-    $mapping = $name if($mapping eq ".");
+    # Get the options.
+    my $options = $1;
+    # Remove the options from the name.
+    $name =~ s/\{.*\}$//;
+        
+    # Check if param should be optional or an output param.
+    $flags = FLAG_PARAM_OPTIONAL if($options =~ /\?/);
+    $flags |= FLAG_PARAM_OUTPUT if($options =~ />>/);
+      
+    # Check if it should be mapped to a C param.
+    if ($options =~ /(\w+|\.)/)
+    {
+      $mapping = $1;
+      $mapping = $name if($mapping eq ".");
+    }
   }
 
   push(@$param_types, $type);
index 5312218..3300e8c 100644 (file)
@@ -118,6 +118,8 @@ sub output_wrap_vfunc_h($$$$$$)
 #   );
 #  $self->append($str);
 
+  $self->ifdef($ifdef);
+
   # Prepend a Doxygen @throws directive to the declaration if the virtual
   # function throws an error.
   if($$objCDefsFunc{throw_any_errors})
@@ -131,7 +133,6 @@ sub output_wrap_vfunc_h($$$$$$)
     $cppVfuncDecl .= " const";
   }
 
-  $self->ifdef($ifdef);
   $self->append("  $cppVfuncDecl;\n");
   $self->endif($ifdef);
 
@@ -154,7 +155,7 @@ sub output_wrap_vfunc_cc($$$$$$$$)
       $custom_vfunc, $custom_vfunc_callback, $ifdef) = @_;
 
   my $cname = $$objCFunc{name};
-  
+
   my $errthrow = "";
   if($$objCFunc{throw_any_errors})
   {
@@ -173,7 +174,10 @@ sub output_wrap_vfunc_cc($$$$$$$$)
     my ($conversions, $declarations, $initializations) =
       convert_args_cpp_to_c($objCppfunc, $objCFunc, 0, $line_num, $errthrow);
 
-    my $str = sprintf("_VFUNC_CC(%s,%s,%s,%s,\`%s\',\`%s\',%s,%s,%s,%s)dnl\n",
+    my $no_slot_copy = "";
+    $no_slot_copy = "no_slot_copy" if ($$objCppfunc{no_slot_copy});
+
+    my $str = sprintf("_VFUNC_CC(%s,%s,%s,%s,\`%s\',\`%s\',%s,%s,%s,%s,%s,%s,%s)dnl\n",
       $$objCppfunc{name},
       $cname,
       $$objCppfunc{rettype},
@@ -183,7 +187,10 @@ sub output_wrap_vfunc_cc($$$$$$$$)
       $objCppfunc->get_is_const(),
       $refreturn,
       $ifdef,
-      $errthrow);
+      $errthrow,
+      $$objCppfunc{slot_type},
+      $$objCppfunc{slot_name},
+      $no_slot_copy);
 
     $self->append($str);
   }
@@ -195,18 +202,24 @@ sub output_wrap_vfunc_cc($$$$$$$$)
     my $refreturn_ctype = "";
     $refreturn_ctype = "refreturn_ctype" if($$objCFunc{rettype_needs_ref});
 
-    my $str = sprintf("_VFUNC_PCC(%s,%s,%s,%s,\`%s\',\`%s\',\`%s\',%s,%s,%s,%s)dnl\n",
+    # Get the conversions.
+    my $conversions =
+     convert_args_c_to_cpp($objCFunc, $objCppfunc, $line_num);
+
+    my $str = sprintf("_VFUNC_PCC(%s,%s,%s,%s,\`%s\',\`%s\',\`%s\',%s,%s,%s,%s,%s,%s)dnl\n",
       $$objCppfunc{name},
       $cname,
       $$objCppfunc{rettype},
       $$objCFunc{rettype},
       $objCFunc->args_types_and_names(),
       $objCFunc->args_names_only(),
-      convert_args_c_to_cpp($objCFunc, $objCppfunc, $line_num),
+      $conversions,
       ${$objCFunc->get_param_names()}[0],
       $refreturn_ctype,
       $ifdef,
-      $errthrow);
+      $errthrow,
+      $$objCppfunc{slot_type},
+      $$objCppfunc{c_data_param_name});
 
     $self->append($str);
   }
@@ -343,6 +356,8 @@ sub output_wrap_meth($$$$$$$)
       $self->append("\n_DEPRECATE_IFDEF_START");
     }
 
+    $self->ifdef($ifdef);
+
     if($arg_list == 0)
     {
       # Doxygen documentation before the method declaration:
@@ -353,13 +368,10 @@ sub output_wrap_meth($$$$$$$)
       $self->append("\n\n  /// A $$objCppfunc{name}() convenience overload.\n");
     }
 
-    $self->ifdef($ifdef);
-
     $self->append("  " . $objCppfunc->get_declaration($arg_list));
 
     $self->endif($ifdef);
 
-
     if($deprecated ne "")
     {
       $self->append("\n_DEPRECATE_IFDEF_END\n");
@@ -390,7 +402,20 @@ sub output_wrap_meth($$$$$$$)
         convert_args_cpp_to_c($objCppfunc, $objCDefsFunc, 1, $line_num,
         $errthrow, $arg_list); #1 means it's static, so it has 'object'.
 
-      $str = sprintf("_STATIC_METHOD(%s,%s,\`%s\',%s,\`%s\',\`%s\',\`%s\',\`%s\',%s,%s,%s,%s,%s,%s,%s)dnl\n",
+      my $no_slot_copy = "";
+      my $slot_type = "";
+      my $slot_name = "";
+
+      # A slot may be optional so if it is signaled by
+      # convert_args_cpp_to_c() to not be included, then don't.
+      if ($$objCppfunc{include_slot})
+      {
+        $slot_type = $$objCppfunc{slot_type};
+        $slot_name = $$objCppfunc{slot_name};
+        $no_slot_copy = "no_slot_copy" if ($$objCppfunc{no_slot_copy});
+      }
+
+      $str = sprintf("_STATIC_METHOD(%s,%s,\`%s\',%s,\`%s\',\`%s\',\`%s\',\`%s\',%s,%s,%s,%s,%s,%s,`%s',`%s',`%s',%s)dnl\n",
         $$objCppfunc{name},
         $$objCDefsFunc{c_name},
         $$objCppfunc{rettype},
@@ -405,6 +430,9 @@ sub output_wrap_meth($$$$$$$)
         $ifdef,
         $output_var_name,
         $output_var_type,
+        $slot_type,
+        $slot_name,
+        $no_slot_copy,
         $line_num
         );
     } else {
@@ -412,7 +440,20 @@ sub output_wrap_meth($$$$$$$)
         convert_args_cpp_to_c($objCppfunc, $objCDefsFunc, 0, $line_num,
         $errthrow, $arg_list);
 
-      $str = sprintf("_METHOD(%s,%s,\`%s\',%s,\`%s\',\`%s\',\`%s\',\`%s\',%s,%s,%s,%s,%s,\`%s\',%s,%s,%s,%s)dnl\n",
+      my $no_slot_copy = "";
+      my $slot_type = "";
+      my $slot_name = "";
+
+      # A slot may be optional so if it is signaled by
+      # convert_args_cpp_to_c() to not be included, then don't.
+      if ($$objCppfunc{include_slot})
+      {
+        $slot_type = $$objCppfunc{slot_type};
+        $slot_name = $$objCppfunc{slot_name};
+        $no_slot_copy = "no_slot_copy" if ($$objCppfunc{no_slot_copy});
+      }
+
+      $str = sprintf("_METHOD(%s,%s,\`%s\',%s,\`%s\',\`%s\',\`%s\',\`%s\',%s,%s,%s,%s,%s,\`%s\',%s,%s,%s,`%s',`%s',`%s',%s)dnl\n",
         $$objCppfunc{name},
         $$objCDefsFunc{c_name},
         $$objCppfunc{rettype},
@@ -430,6 +471,9 @@ sub output_wrap_meth($$$$$$$)
         $ifdef,
         $output_var_name,
         $output_var_type,
+        $slot_type,
+        $slot_name,
+        $no_slot_copy,
         $line_num
         );
     }
@@ -470,12 +514,18 @@ sub output_wrap_ctor($$$$$)
     #TODO: Add explicit.
     $self->append("  explicit " . $objCppfunc->get_declaration($arg_list) . "\n");
 
+    my $errthrow = "";
+    if($$objCDefsFunc{throw_any_errors})
+    {
+      $errthrow = "errthrow";
+    }
+
     #Implementation:
     my $str = sprintf("_CTOR_IMPL(%s,%s,\`%s\',\`%s\')dnl\n",
       $$objCppfunc{name},
       $$objCDefsFunc{c_name},
       $objCppfunc->args_types_and_names($arg_list),
-      get_ctor_properties($objCppfunc, $objCDefsFunc, $line_num, $arg_list)
+      get_ctor_properties($objCppfunc, $objCDefsFunc, $line_num, $errthrow, $arg_list)
     );
 
     $self->append($str);
@@ -602,6 +652,18 @@ sub output_wrap_enum($$$$$$$)
   my $value_suffix = "Enum";
   $value_suffix = "Flags" if($$objEnum{flags});
 
+  # Get the existing enum description from the parsed docs.
+  my $description = DocsParser::lookup_enum_description("$c_type");
+
+  # Prepend the Doxygen marker ' * ' to all but the first line.
+  $description =~ s/\n/\n * /g;
+
+  # Make sure indentation of passed in comment is correct.
+  $comment =~ s/\n\s*\*/\n */g;
+
+  # Merge the passed in comment to the existing enum documentation.
+  $comment = $comment . "\n * " . $description;
+
   my $str = sprintf("_ENUM(%s,%s,%s,\`%s\',\`%s\',\`%s\')dnl\n",
     $cpp_type,
     $c_type,
@@ -706,7 +768,7 @@ sub output_wrap_property($$$$$$$$)
     {
       $self->append("\n_DEPRECATE_IFDEF_START\n");
     }
-    
+
     my $str = sprintf("_PROPERTY_PROXY(%s,%s,%s,%s,%s,`%s')dnl\n",
       $name,
       $name_underscored,
@@ -732,7 +794,7 @@ sub output_wrap_property($$$$$$$$)
       );
       $self->append($str);
     }
-    
+
     if($deprecated ne "")
     {
       $self->append("\n_DEPRECATE_IFDEF_END");
@@ -908,6 +970,11 @@ sub convert_args_cpp_to_c($$$$$)
     $$cpp_param_mappings{@$c_param_names[$num_c_args_expected]} = $cpp_index;
   }
 
+  # If the method has a slot temporarily decrement the C arg count when
+  # comparing the C++ and C argument count because the C function would
+  # have a final 'gpointer data' parameter.
+  $num_c_args_expected-- if ($$objCppfunc{slot_name});
+
   if ( $num_cpp_args != $num_c_args_expected )
   {
     Output::error( "convert_args_cpp_to_c(): Incorrect number of arguments. (%d != %d)\n",
@@ -919,6 +986,9 @@ sub convert_args_cpp_to_c($$$$$)
     return ("", "", "");
   }
 
+  # Reincrement the expected C argument count if there is a slot.
+  $num_c_args_expected++ if ($$objCppfunc{slot_name});
+
   # If there is an output parameter it must be processed so re-increment (now)
   # the number of C++ arguments.
   $num_cpp_args++ if($has_output_param);
@@ -926,6 +996,10 @@ sub convert_args_cpp_to_c($$$$$)
   # Get the desired argument list combination.
   my $possible_arg_list = $$objCppfunc{possible_args_list}[$index];
 
+  # Tells if slot code should be included or not based on if a slot
+  # parameter is optional.
+  $$objCppfunc{include_slot} = 0;
+
   # Loop through the parameters:
   my $i;
   my $cpp_param_max = $num_cpp_args;
@@ -974,7 +1048,7 @@ sub convert_args_cpp_to_c($$$$$)
       # Remove a possible final '*' from the output parameter type because it
       # will be passed by C reference (&name).
       $cOutputParamType =~ s/\*$//;
+
       # Only initialize pointers to zero.  Otherwise, use the default
       # constructor of the type.
       my $initialization = "";
@@ -1000,6 +1074,35 @@ sub convert_args_cpp_to_c($$$$$)
       next;
     }
 
+    # If dealing with a slot.
+    if ($$objCppfunc{slot_name} eq $cppParamName)
+    {
+      if ($$objCppfunc{slot_callback})
+      {
+        # The conversion for the slot is the address of the callback.
+        push(@conversions, "&" . $$objCppfunc{slot_callback});
+      }
+      else
+      {
+        Output::error(
+          "convert_args_cpp_to_c(): Missing a slot callback.  " .
+          "Specify it with the 'slot_callback' option.\n",);
+        $objCppfunc->dump();
+        $objCDefsFunc->dump();
+        return ("", "", "");
+      }
+
+      # Get the slot type without the const and the & and store it so
+      # it can be passed to the m4 _*METHOD macros.
+      $cppParamType =~ /^const\s+(.*)&/;
+      $$objCppfunc{slot_type} = $1;
+
+      # Signal that the slot code should be included.
+      $$objCppfunc{include_slot} = 1;
+
+      next;
+    }
+
     if ($cppParamType ne $cParamType) #If a type conversion is needed.
     {
 
@@ -1016,6 +1119,23 @@ sub convert_args_cpp_to_c($$$$$)
     }
   }
 
+  # Append the final slot copy parameter to the C function if the method
+  # has a slot.  The m4 macros assume that that parameter name is
+  # "slot_copy".  The m4 macros will either copy the slot to the
+  # "slot_copy variable or set it to the address of the slot itself if
+  # the slot should not be copied.
+  if ($$objCppfunc{slot_name})
+  {
+    if ($$objCppfunc{include_slot})
+    {
+      push(@conversions, "slot_copy");
+    }
+    else
+    {
+      push(@conversions, "0")
+    }
+  }
+
   return ( join(", ", @conversions), join("\n", @declarations),
     join("\n  ", @initializations) );
 }
@@ -1027,19 +1147,32 @@ sub convert_args_c_to_cpp($$$)
 {
   my ($objCDefsFunc, $objCppfunc, $wrap_line_number) = @_;
 
+  my $cpp_param_names = $$objCppfunc{param_names};
   my $cpp_param_types = $$objCppfunc{param_types};
   my $c_param_types = $$objCDefsFunc{param_types};
   my $c_param_names = $$objCDefsFunc{param_names};
 
+  # This variable stores the C++ parameter mappings from the C++
+  # index to the C param name if the mappings exist.
+  my %cpp_index_param_mappings;
+
+  @cpp_index_param_mappings{values $$objCppfunc{param_mappings}}
+    = keys $$objCppfunc{param_mappings};
+
   my @result;
 
   my $num_c_args = scalar(@{$c_param_types});
-  
-  # If the the function has been marked as a function that throws errors (Glib::Error)
-  # don't count the last GError** argument.
+
+  # If the the function has been marked as a function that throws errors
+  # (Glib::Error) don't count the last GError** argument.
   $num_c_args-- if($$objCDefsFunc{throw_any_errors});
 
   my $num_cpp_args = scalar(@{$cpp_param_types});
+  # If the method has a slot temporarily increment the C++ arg count when
+  # comparing the C++ and C argument count because the C function would
+  # have a final 'gpointer data' parameter and the C++ method would not.
+  $num_cpp_args++ if ($$objCppfunc{slot_name});
 
   if ( ($num_cpp_args + 1) !=  $num_c_args )
   {
@@ -1052,30 +1185,82 @@ sub convert_args_c_to_cpp($$$)
     return "";
   }
 
+  # Re-decrement the expected C++ argument count if there is a slot.
+  $num_cpp_args-- if ($$objCppfunc{slot_name});
 
-  # Loop through the c parameters:
- my $i;
my $c_param_max = $num_c_args;
+  # Loop through the C++ parameters:
 my $i;
 my $cpp_param_max = $num_cpp_args;
 
for ($i = 1; $i < $c_param_max; $i++)
- {
-   #index of C parameter:
-   my $iCppParam = $i - 1;
 for ($i = 0; $i < $cpp_param_max; $i++)
 {
+    my $cParamName = "";
+    my $c_index = 0;
 
-   my $cppParamType = $$cpp_param_types[$iCppParam];
-   $cppParamType =~ s/ &/&/g; #Remove space between type and &.
-   $cppParamType =~ s/ \*/*/g; #Remove space between type and *
+    if (defined $cpp_index_param_mappings{$i})
+    {
+      # If a mapping exists from the current index to a C param name,
+      # use that C param for the conversion.
+      $cParamName = $cpp_index_param_mappings{$i};
 
-   my $cParamName = $$c_param_names[$i];
-   my $cParamType = $$c_param_types[$i];
+      # Get the C index based on the C param name.
+      ++$c_index until $$c_param_names[$c_index] eq $cParamName;
+    }
+    else
+    {
+      # If no mapping exists, the C index is the C++ index + 1 (to skip
+      # The 'self' argument of the C function).
+      $c_index = $i + 1;
+      $cParamName = $$c_param_names[$c_index];
+    }
 
-   if ($cParamType ne $cppParamType) #If a type conversion is needed.
-   {
-     push(@result, sprintf("_CONVERT(%s,%s,%s,%s)\n",
-                  $cParamType,
-                  $cppParamType,
-                  $cParamName,
-                  $wrap_line_number) );
+    my $cParamType = $$c_param_types[$c_index];
+
+    my $cppParamName = $$cpp_param_names[$i];
+    my $cppParamType = $$cpp_param_types[$i];
+    $cppParamType =~ s/ &/&/g; #Remove space between type and &.
+    $cppParamType =~ s/ \*/*/g; #Remove space between type and *
+
+    if ($$objCppfunc{slot_name})
+    {
+      # If the current parameter is the slot parameter insert the
+      # derefenced name of the variable containing the slot which is
+      # assumed to be '*slot'.  The m4 macro is responsible for ensuring
+      # that the variable is declared and the slot in the 'user_data' C
+      # param is placed in the variable.
+      if ($$objCppfunc{slot_name} eq $cppParamName)
+      {
+        push(@result, "*slot");
+  
+        # Get the slot type without the const and the '&' and store it so
+        # it can be passed to the m4 macro.
+        $cppParamType =~ /^const\s+(.*)&/;
+        
+        # If the type does not contain
+        # any '::' then assume that it is in the library standard namespace
+        # by prepending '__NAMESPACE__::' to it which the m4 macros will
+        # translate to the library namespace.
+        my $plainCppParamType = $1;
+        $plainCppParamType = "__NAMESPACE__::" . $plainCppParamType
+          if (!($plainCppParamType =~ /::/));
+
+        $$objCppfunc{slot_type} = $plainCppParamType;
+  
+        # Store the name of the C data parameter so it can be passed
+        # to the m4 macro so it can extract the slot.
+        $$objCppfunc{c_data_param_name} = $$c_param_names[$num_c_args - 1];
+        
+        next;
+      }
+    }
+
+    if ($cParamType ne $cppParamType) #If a type conversion is needed.
+    {
+      push(@result, sprintf("_CONVERT(%s,%s,%s,%s)\n",
+                   $cParamType,
+                   $cppParamType,
+                   $cParamName,
+                   $wrap_line_number) );
     }
     else
     {
@@ -1087,15 +1272,21 @@ sub convert_args_c_to_cpp($$$)
 }
 
 
-# generates the XXX in g_object_new(get_type(), XXX): A list of property names and values.
-# Uses the cpp arg name as the property name.
-# The optional index specifies which arg list out of the possible combination
-# of arguments based on whether any arguments are optional. index = 0 ==> all
-# the arguments.
-# $string get_ctor_properties($objCppfunc, $objCDefsFunc, $wrap_line_number, $index = 0)
-sub get_ctor_properties($$$$$)
+# generates the XXX in g_object_new(get_type(), XXX): A list of property names
+# and values.  Uses the cpp arg name as the property name.
+#
+# - The optional index specifies which arg list out of the possible combination
+#   of arguments based on whether any arguments are optional. index = 0 ==> all
+#   the arguments.
+#
+# - The errthrow parameter tells if the C new function has a final GError**
+#   parameter.  That parameter is ignored since it will not form part of the
+#   property list.
+#
+# $string get_ctor_properties($objCppfunc, $objCDefsFunc, $wrap_line_number, $errthrow, $index = 0)
+sub get_ctor_properties($$$$$$)
 {
-  my ($objCppfunc, $objCDefsFunc, $wrap_line_number, $index) = @_;
+  my ($objCppfunc, $objCDefsFunc, $wrap_line_number, $errthrow, $index) = @_;
 
   $index = 0 unless defined $index;
 
@@ -1110,6 +1301,9 @@ sub get_ctor_properties($$$$$)
 
   my $num_args = scalar(@{$c_param_types});
 
+  # If the C function has a final GError** parameter, ignore it.
+  $num_args-- if ($errthrow eq "errthrow");
+
   my $num_cpp_args = scalar(@{$cpp_param_types});
   if ( $num_cpp_args != $num_args )
   {
index e55479b..8235218 100644 (file)
@@ -942,6 +942,25 @@ sub on_wrap_method($)
     {
        $ifdef = $1;
     }
+    # The "slot_name" option tells gmmproc the name of the parameter
+    # that is a slot in the method if there is one.
+    elsif($argRef =~ /^slot_name\s+(\w+)/)
+    {
+      $$objCppfunc{slot_name} = $1;
+    }
+    # The "slot_callback" option tells gmmproc the name of the
+    # callback function that should be passed to the C function if the
+    # method has a slot.
+    elsif($argRef =~ /^slot_callback\s+(\w+)/)
+    {
+      $$objCppfunc{slot_callback} = $1;
+    }
+    # The "no_slot_copy" options tells gmmproc to pass the actual slot
+    # and not a copy of it to the C function in the data parameter.
+    if($argRef eq "no_slot_copy")
+    {
+      $$objCppfunc{no_slot_copy} = 1;
+    }
   }
 
   if ($commentblock ne '')
@@ -950,7 +969,8 @@ sub on_wrap_method($)
   }
   else
   {
-    $commentblock = DocsParser::lookup_documentation($argCFunctionName, $deprecation_docs);
+    $commentblock = DocsParser::lookup_documentation($argCFunctionName,
+      $deprecation_docs, $objCppfunc);
   }
 
   $objOutputter->output_wrap_meth($filename, $line_num, $objCppfunc, $objCfunc, $argCppMethodDecl, $commentblock, $ifdef);
@@ -1071,6 +1091,22 @@ sub on_wrap_ctor($)
     }
   }
 
+    # Handle options (presently only "errthrow" is recognized).
+  $$objCfunc{throw_any_errors} = 0;
+  while($#args >= 2)
+  {
+    my $argRef = string_trim(pop @args);
+    if($argRef eq "errthrow")
+    {
+      $$objCfunc{throw_any_errors} = 1;
+    }
+    else
+    {
+      print STDERR "$filename:$line_num:_WRAP_CTOR: Invalid option '$argRef'.\n";
+      return;
+    }
+  }
+
   $objOutputter->output_wrap_ctor($filename, $line_num, $objCppfunc, $objCfunc, $argCppMethodDecl);
 }
 
@@ -1216,6 +1252,9 @@ sub on_wrap_vfunc($)
   my $custom_vfunc_callback = 0;
   my $ifdef = "";
   my $errthrow = 0;
+  my $slot_name = "";
+  my $slot_callback = "";
+  my $no_slot_copy = 0;
 
   while($#args >= 2) # If optional arguments are there.
   {
@@ -1246,11 +1285,31 @@ sub on_wrap_vfunc($)
     {
        $ifdef = $1;
     }
+    # The "slot_name" option tells gmmproc the name of the parameter
+    # that is a slot in the virtual function if there is one.
+    elsif($argRef =~ /^slot_name\s+(\w+)/)
+    {
+      $slot_name = $1;
+    }
+    # The "slot_callback" option tells gmmproc the name of the
+    # callback function that should be passed to the C function if the
+    # virtual function has a slot.
+    elsif($argRef =~ /^slot_callback\s+(\w+)/)
+    {
+      $slot_callback = $1;
+    }
+    # The "no_slot_copy" options tells gmmproc to pass the actual slot
+    # and not a copy of it to the C function in the data parameter.
+    elsif($argRef eq "no_slot_copy")
+    {
+      $no_slot_copy = 1;
+    }
   }
 
   $self->output_wrap_vfunc($argCppDecl, $argCName, $$self{filename}, $$self{line_num},
                            $refreturn, $refreturn_ctype, $custom_vfunc,
-                           $custom_vfunc_callback, $ifdef, $errthrow);
+                           $custom_vfunc_callback, $ifdef, $errthrow,
+                           $slot_name, $slot_callback, $no_slot_copy);
 }
 
 sub on_wrap_enum($)
@@ -1319,14 +1378,14 @@ sub on_wrap_property($)
 
   my $filename = $$self{filename};
   my $line_num = $$self{line_num};
-  
+
   #TODO: Reduce duplication with on_wrap_method():
   my $argDeprecated = "";
   my $deprecation_docs = "";
   while($#args >= 2) # If the optional arguments are there.
   {
     my $argRef = string_trim(pop @args);
-    
+
     if($argRef =~ /^deprecated(.*)/) #If deprecated is at the start.
     {
       $argDeprecated = "deprecated";
@@ -1337,7 +1396,7 @@ sub on_wrap_property($)
       }
     }
   }
-    
+
 
   $objOutputter->output_wrap_property($filename, $line_num, $argPropertyName, $argCppType, $$self{c_class}, $argDeprecated, $deprecation_docs);
 }
@@ -1418,12 +1477,15 @@ sub output_wrap_signal($$$$$$$$$$$)
   }
 }
 
-# void output_wrap($CppDecl, $vfunc_name, $filename, $line_num, $refreturn, $refreturn_ctype,
-#                  $custom_vfunc, $custom_vfunc_callback, $ifdef, $errthrow)
-sub output_wrap_vfunc($$$$$$$$$)
+# void output_wrap_vfunc($CppDecl, $vfunc_name, $filename, $line_num,
+#                  $refreturn, $refreturn_ctype,
+#                  $custom_vfunc, $custom_vfunc_callback, $ifdef, $errthrow,
+#                  $slot_name, $slot_callback, $no_slot_copy)
+sub output_wrap_vfunc($$$$$$$$$$$$)
 {
   my ($self, $CppDecl, $vfunc_name, $filename, $line_num, $refreturn, $refreturn_ctype,
-      $custom_vfunc, $custom_vfunc_callback, $ifdef, $errthrow) = @_;
+      $custom_vfunc, $custom_vfunc_callback, $ifdef, $errthrow,
+      $slot_name, $slot_callback, $no_slot_copy) = @_;
 
   #Some checks:
   return if ($self->output_wrap_check($CppDecl, $vfunc_name, $filename, $line_num, '_WRAP_VFUNC'));
@@ -1455,6 +1517,11 @@ sub output_wrap_vfunc($$$$$$$$$)
 
   $$objCppVfunc{rettype_needs_ref} = $refreturn;
   $$objCppVfunc{name} .= "_vfunc"; #All vfuncs should have the "_vfunc" suffix, and a separate easily-named invoker method.
+  
+  # Store the slot information in the vfunc if specified.
+  $$objCppVfunc{slot_name} = $slot_name if ($slot_name);
+  $$objCppVfunc{slot_callback} = $slot_callback if ($slot_callback);
+  $$objCppVfunc{no_slot_copy} = $no_slot_copy if ($no_slot_copy);
 
   $$objCVfunc{rettype_needs_ref} = $refreturn_ctype;
   $$objCVfunc{throw_any_errors} = 1 if($errthrow);