Imported Upstream version 1.58.0 upstream/1.58.0
authorDongHun Kwak <dh0128.kwak@samsung.com>
Thu, 10 Jan 2019 04:15:50 +0000 (13:15 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Thu, 10 Jan 2019 04:15:50 +0000 (13:15 +0900)
119 files changed:
.flake8 [new file with mode: 0644]
MSVC.README.rst
Makefile-giscanner.am
Makefile-tools.am
Makefile.am
Makefile.in
NEWS
aclocal.m4
build-aux/compile
build-aux/depcomp
build-aux/install-sh
build-aux/missing
build-aux/py-compile
build-aux/test-driver
build-aux/ylwrap
configure
configure.ac
docs/Makefile.in
docs/reference/Makefile.in
docs/reference/html/GIRepository.html
docs/reference/html/annotation-glossary.html
docs/reference/html/api-index-1-29-0.html
docs/reference/html/api-index-1-29-17.html
docs/reference/html/api-index-1-30-1.html
docs/reference/html/api-index-1-34.html
docs/reference/html/api-index-1-35-8.html
docs/reference/html/api-index-deprecated.html
docs/reference/html/api-index-full.html
docs/reference/html/ch01.html
docs/reference/html/ch03.html
docs/reference/html/gi-GIArgInfo.html
docs/reference/html/gi-GIBaseInfo.html
docs/reference/html/gi-GICallableInfo.html
docs/reference/html/gi-GICallbackInfo.html
docs/reference/html/gi-GIConstantInfo.html
docs/reference/html/gi-GIEnumInfo.html
docs/reference/html/gi-GIFieldInfo.html
docs/reference/html/gi-GIFunctionInfo.html
docs/reference/html/gi-GIInterfaceInfo.html
docs/reference/html/gi-GIObjectInfo.html
docs/reference/html/gi-GIPropertyInfo.html
docs/reference/html/gi-GIRegisteredTypeInfo.html
docs/reference/html/gi-GISignalInfo.html
docs/reference/html/gi-GIStructInfo.html
docs/reference/html/gi-GITypeInfo.html
docs/reference/html/gi-GITypelib.html
docs/reference/html/gi-GIUnionInfo.html
docs/reference/html/gi-GIVFuncInfo.html
docs/reference/html/gi-GIValueInfo.html
docs/reference/html/gi-building.html
docs/reference/html/gi-common-types.html
docs/reference/html/gi-gir-reference.html
docs/reference/html/gi-girffi.html
docs/reference/html/gi-gitypelib.html
docs/reference/html/gi-programming.html
docs/reference/html/gi-struct-hierarchy.html
docs/reference/html/gi-typelib.html
docs/reference/html/gi.html
docs/reference/html/index.html
docs/reference/html/overview.html
docs/reference/version.xml
gir/gio-2.0.c
gir/glib-2.0.c
gir/gobject-2.0.c
giscanner/_version.py
giscanner/annotationmain.py
giscanner/ast.py
giscanner/ccompiler.py
giscanner/docmain.py
giscanner/doctemplates/devdocs/Gjs/_doc.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/_index.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/_method.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/_methods.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/_properties.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/_signals.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/_staticmethods.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/_vfuncs.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/base.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/callback.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/class.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/default.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/enum.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/function.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/interface.tmpl [new file with mode: 0644]
giscanner/doctemplates/devdocs/Gjs/namespace.tmpl [new file with mode: 0644]
giscanner/docwriter.py
giscanner/dumper.py
giscanner/giscannermodule.c
giscanner/maintransformer.py
giscanner/mdextensions.py [new file with mode: 0644]
giscanner/msvccompiler.py
giscanner/scannermain.py
giscanner/sourcescanner.py
giscanner/transformer.py
giscanner/utils.py
giscanner/xmlwriter.py
gobject-introspection-1.0.pc
gobject-introspection-no-export-1.0.pc
meson.build
misc/pep8.py [deleted file]
misc/pyflakes.py [deleted file]
tests/Makefile.in
tests/offsets/Makefile.in
tests/repository/Makefile.in
tests/scanner/Makefile.am
tests/scanner/Makefile.in
tests/scanner/Regress-1.0-C-expected/Regress.TestObj-byte_array.page [new file with mode: 0644]
tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-byte_array.page [new file with mode: 0644]
tests/scanner/Regress-1.0-expected.gir
tests/scanner/annotationparser/Makefile.in
tests/scanner/meson.build [new file with mode: 0644]
tests/scanner/regress.c
tests/scanner/regress.h
tests/scanner/test_pkgconfig.py
tests/scanner/test_transformer.py
tests/warn/Makefile.in
tests/warn/warningtester.py
tools/g-ir-tool-template.in
tools/meson.build

diff --git a/.flake8 b/.flake8
new file mode 100644 (file)
index 0000000..9c8621c
--- /dev/null
+++ b/.flake8
@@ -0,0 +1,4 @@
+[flake8]
+ignore=E127,E402,E501,E731,E128,W503,E741
+exclude=misc,subprojects
+builtins=DATADIR
index 8200077..06cdf75 100644 (file)
@@ -42,16 +42,28 @@ You will need the following, in addition to your Visual Studio installation:
   as they run on your system.
 
 Set PATH to contain your Python-3.4.x+ interpreter, Ninja build tool (if needed) and
-winflex/flex and Bison executables towards its end.
-
-Note that if you plan to use g-ir-scanner for other packages built using Meson, you
-need to use the same Python release series (3.4, 3.5...) for running Meson there as
-well.
+winflex/flex and Bison executables towards its end.  Please note that if using Python
+2.7.x (such as with the case of building with Visual Studio 2008), the PATH variable
+needs to contain the native Windows Python 2.7.x installation path as well, before
+the path where the Flex and Bison executables are, if using the Flex and Bison
+executables from MSYS2 or Cygwin, as the copy of the Python interpreter from MSYS2
+and Cygwin will likely conflict with the installation of the native Windows Python
+2.7.x.  Please note that building against MSYS2 or Cygwin Python with Visual Studio
+builds is not (and will likely never be) supported.
 
 Open a Visual Studio command prompt and create an empty build directory (which needs
 to be on the same drive as the G-I sources).  In that directory, run the following::
 
-  python $(PythonInstallationPath)\scripts\meson.py $(G-I_srcdir) --buildtype=<build_configuration> --prefix=$(PREFIX) -Dcairo-libname=<DLL filename of cairo-gobject>
+  python $(PythonInstallationPath)\scripts\meson.py $(G-I_srcdir) --buildtype=<build_configuration> --prefix=$(PREFIX) -Dcairo-libname=<DLL filename of cairo-gobject> -Dpython=<full path to Python interpreter to build _giscanner.pyd>
+
+The -Dcairo-libname is likely necessary as the default DLL file name for Cairo-GObject
+may likely not match the default "libcairo-gobject-2.dll", which is the default
+DLL filename for Cairo-GObject that is built with MinGW/mingw-w64.
+
+The -Dpython is likely necessary when using multiple Python installations on the
+system and is necessary when building with Visual Studio 2008~2013 when building
+with later versions of Meson (which requires Python 3.5+), due to CRT differences.
+Note that for this setting, Python-2.7.x or Python-3.4.x or later is supported.
 
 When Meson completes configuring and generating the build files, proceed building
 using Ninja or the generated Visual Studio projects.
index 4f08934..2879ab2 100644 (file)
@@ -47,6 +47,7 @@ pkgpyexec_PYTHON =                    \
        giscanner/introspectablepass.py \
        giscanner/libtoolimporter.py    \
        giscanner/maintransformer.py    \
+       giscanner/mdextensions.py       \
        giscanner/message.py            \
        giscanner/msvccompiler.py       \
        giscanner/pkgconfig.py          \
@@ -105,7 +106,23 @@ nobase_dist_template_DATA =                \
        giscanner/doctemplates/mallard/Gjs/property.tmpl        \
        giscanner/doctemplates/mallard/Gjs/record.tmpl          \
        giscanner/doctemplates/mallard/Gjs/signal.tmpl          \
-       giscanner/doctemplates/mallard/Gjs/vfunc.tmpl
+       giscanner/doctemplates/mallard/Gjs/vfunc.tmpl           \
+       giscanner/doctemplates/devdocs/Gjs/_doc.tmpl            \
+       giscanner/doctemplates/devdocs/Gjs/_index.tmpl          \
+       giscanner/doctemplates/devdocs/Gjs/_method.tmpl         \
+       giscanner/doctemplates/devdocs/Gjs/_methods.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/_properties.tmpl     \
+       giscanner/doctemplates/devdocs/Gjs/_signals.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/_staticmethods.tmpl  \
+       giscanner/doctemplates/devdocs/Gjs/_vfuncs.tmpl         \
+       giscanner/doctemplates/devdocs/Gjs/base.tmpl            \
+       giscanner/doctemplates/devdocs/Gjs/callback.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/class.tmpl           \
+       giscanner/doctemplates/devdocs/Gjs/default.tmpl         \
+       giscanner/doctemplates/devdocs/Gjs/enum.tmpl            \
+       giscanner/doctemplates/devdocs/Gjs/function.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/interface.tmpl       \
+       giscanner/doctemplates/devdocs/Gjs/namespace.tmpl
 
 _giscanner_la_CFLAGS = \
        $(PYTHON_INCLUDES) \
index 8c4a069..c70d985 100644 (file)
@@ -9,7 +9,7 @@ EXTRA_DIST +=                           \
        tools/g-ir-tool-template.in \
        tools/meson.build
 
-TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON\@,$(PYTHON),
+TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON_CMD\@,\/usr\/bin\/env\ $(PYTHON),
 
 g-ir-scanner: tools/g-ir-tool-template.in _giscanner.la Makefile
        $(AM_V_GEN) sed $(TOOL_SUBSTITUTIONS) -e s,@TOOL_MODULE\@,scannermain, -e s,@TOOL_FUNCTION\@,scanner_main, $< > $@.tmp && mv $@.tmp $@
index e071ec2..44ed115 100644 (file)
@@ -53,30 +53,17 @@ EXTRA_DIST +=                       \
        $(pkgconfig_DATA)       \
        $(man_MANS)             \
        $(m4_DATA)              \
-       misc/pep8.py            \
-       misc/pyflakes.py        \
        misc/update-glib-annotations.py \
        misc/update-gtkdoc-tests.py     \
        misc/verbump.py         \
        README.rst \
        MSVC.README.rst \
        meson.build \
-       meson_options.txt
-
-# Default pep8.py --exclude + emacs backup files
-PEP8_EXCLUDES=--exclude='.svn,CVS,.bzr,.hg,.git,__pycache__,.\#*'
-
-check-local:
-       @echo "TEST: PEP-8 INQUISITION"
-       @find $(top_srcdir)/giscanner -name \*.py | sort | uniq | xargs \
-               $(PYTHON) $(top_srcdir)/misc/pep8.py --max-line-length=99 --ignore=E128,W503 $(PEP8_EXCLUDES)
-       @find $(top_srcdir)/tests -name \*.py | sort | uniq | xargs \
-               $(PYTHON) $(top_srcdir)/misc/pep8.py --ignore=E127,E402,E501,E731 $(PEP8_EXCLUDES)
-
-check-pyflakes:
-       @echo "  CHECK Pyflakes"
-       @find $(top_srcdir)/giscanner -name \*.py | sort | uniq | xargs $(PYTHON) $(top_srcdir)/misc/pyflakes.py
+       meson_options.txt \
+       .flake8
 
+check.quality:
+       (cd $(abs_top_srcdir) && $(PYTHON) -m flake8 --count);
 
 # Colin's handy Makefile bits for:
 # 1) stuffing tarballs with pre-generated scripts from your workstation
index 01cc4c3..c0ba8d1 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -180,6 +180,15 @@ CONFIG_CLEAN_FILES = giscanner/_version.py \
        gobject-introspection-1.0.pc \
        gobject-introspection-no-export-1.0.pc
 CONFIG_CLEAN_VPATH_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" \
+       "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(bindir)" \
+       "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(man1dir)" \
+       "$(DESTDIR)$(makedir)" "$(DESTDIR)$(gdumpdir)" \
+       "$(DESTDIR)$(girdir)" "$(DESTDIR)$(m4dir)" \
+       "$(DESTDIR)$(templatedir)" "$(DESTDIR)$(pkgconfigdir)" \
+       "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(girepodir)"
+@OS_WIN32_FALSE@am__EXEEXT_1 = gi-dump-types$(EXEEXT)
+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -207,13 +216,6 @@ am__uninstall_files_from_dir = { \
     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
          $(am__cd) "$$dir" && rm -f $$files; }; \
   }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgpyexecdir)" \
-       "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
-       "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(man1dir)" \
-       "$(DESTDIR)$(makedir)" "$(DESTDIR)$(gdumpdir)" \
-       "$(DESTDIR)$(girdir)" "$(DESTDIR)$(m4dir)" \
-       "$(DESTDIR)$(templatedir)" "$(DESTDIR)$(pkgconfigdir)" \
-       "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(girepodir)"
 LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) \
        $(pkgpyexec_LTLIBRARIES)
 am__DEPENDENCIES_1 =
@@ -319,8 +321,6 @@ libgiscanner_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
        $(libgiscanner_la_CFLAGS) $(CFLAGS) $(libgiscanner_la_LDFLAGS) \
        $(LDFLAGS) -o $@
-@OS_WIN32_FALSE@am__EXEEXT_1 = gi-dump-types$(EXEEXT)
-PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS)
 am_cmph_bdz_test_OBJECTS =  \
        girepository/cmph_bdz_test-cmph-bdz-test.$(OBJEXT)
 cmph_bdz_test_OBJECTS = $(am_cmph_bdz_test_OBJECTS)
@@ -389,7 +389,70 @@ am__v_at_0 = @
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = examples/$(DEPDIR)/glib_print-glib-print.Po \
+       girepository/$(DEPDIR)/cmph_bdz_test-cmph-bdz-test.Po \
+       girepository/$(DEPDIR)/gi_dump_types-gdump.Po \
+       girepository/$(DEPDIR)/gi_dump_types-gi-dump-types.Po \
+       girepository/$(DEPDIR)/gthash_test-gthash-test.Po \
+       girepository/$(DEPDIR)/gthash_test-gthash.Po \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gdump.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-giarginfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gibaseinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gicallableinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-giconstantinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gienuminfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gifieldinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gifunctioninfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-giinterfaceinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-ginvoke.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-giobjectinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gipropertyinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-giregisteredtypeinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-girepository.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-girffi.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gisignalinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gistructinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gitypeinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-gitypelib.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-giunioninfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_1_0_la-givfuncinfo.Plo \
+       girepository/$(DEPDIR)/libgirepository_gthash_la-gthash.Plo \
+       girepository/$(DEPDIR)/libgirepository_internals_la-girmodule.Plo \
+       girepository/$(DEPDIR)/libgirepository_internals_la-girnode.Plo \
+       girepository/$(DEPDIR)/libgirepository_internals_la-giroffsets.Plo \
+       girepository/$(DEPDIR)/libgirepository_internals_la-girparser.Plo \
+       girepository/$(DEPDIR)/libgirepository_internals_la-girwriter.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-bdz.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-bdz_ph.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-bmz.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-bmz8.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-brz.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-buffer_entry.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-buffer_manager.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-chd.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-chd_ph.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-chm.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-cmph.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-cmph_structs.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-compressed_rank.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-compressed_seq.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-fch.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-fch_buckets.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-graph.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-hash.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-jenkins_hash.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-miller_rabin.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-select.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-vqueue.Plo \
+       girepository/cmph/$(DEPDIR)/libcmph_la-vstack.Plo \
+       giscanner/$(DEPDIR)/_giscanner_la-giscannermodule.Plo \
+       giscanner/$(DEPDIR)/libgiscanner_la-scannerlexer.Plo \
+       giscanner/$(DEPDIR)/libgiscanner_la-scannerparser.Plo \
+       giscanner/$(DEPDIR)/libgiscanner_la-sourcescanner.Plo \
+       tools/$(DEPDIR)/g_ir_compiler-compiler.Po \
+       tools/$(DEPDIR)/g_ir_generate-generate.Po \
+       tools/$(DEPDIR)/g_ir_inspect-g-ir-inspect.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -459,7 +522,7 @@ am__can_run_installinfo = \
   esac
 am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
 am__pep3147_tweak = \
-  sed -e 's|\.py$$||' -e 's|[^/]*$$|__pycache__/&.*.py|'
+  sed -e 's|\.py$$||' -e 's|[^/]*$$|&.*.pyc\n&.*.pyo|'
 py_compile = $(top_srcdir)/build-aux/py-compile
 man1dir = $(mandir)/man1
 NROFF = nroff
@@ -475,7 +538,8 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       cscope check recheck distdir dist dist-all distcheck
+       cscope check recheck distdir distdir-am dist dist-all \
+       distcheck
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
        $(LISP)config.h.in
 # Read a list of newline-separated strings from the standard input,
@@ -934,10 +998,10 @@ EXTRA_DIST = girepository/cmph/meson.build girepository/docs.c \
        gir/cairo-1.0.gir.in gir/glib-2.0.c gir/gmodule-2.0.c \
        gir/gobject-2.0.c gir/gio-2.0.c tools/g-ir-tool-template.in \
        tools/meson.build COPYING.LGPL COPYING.GPL autogen.sh \
-       $(pkgconfig_DATA) $(man_MANS) $(m4_DATA) misc/pep8.py \
-       misc/pyflakes.py misc/update-glib-annotations.py \
-       misc/update-gtkdoc-tests.py misc/verbump.py README.rst \
-       MSVC.README.rst meson.build meson_options.txt
+       $(pkgconfig_DATA) $(man_MANS) $(m4_DATA) \
+       misc/update-glib-annotations.py misc/update-gtkdoc-tests.py \
+       misc/verbump.py README.rst MSVC.README.rst meson.build \
+       meson_options.txt .flake8
 lib_LTLIBRARIES = libgirepository-1.0.la
 noinst_LTLIBRARIES = libgirepository-internals.la \
        libgirepository-gthash.la libgiscanner.la
@@ -1238,6 +1302,7 @@ pkgpyexec_PYTHON = \
        giscanner/introspectablepass.py \
        giscanner/libtoolimporter.py    \
        giscanner/maintransformer.py    \
+       giscanner/mdextensions.py       \
        giscanner/message.py            \
        giscanner/msvccompiler.py       \
        giscanner/pkgconfig.py          \
@@ -1296,7 +1361,23 @@ nobase_dist_template_DATA = \
        giscanner/doctemplates/mallard/Gjs/property.tmpl        \
        giscanner/doctemplates/mallard/Gjs/record.tmpl          \
        giscanner/doctemplates/mallard/Gjs/signal.tmpl          \
-       giscanner/doctemplates/mallard/Gjs/vfunc.tmpl
+       giscanner/doctemplates/mallard/Gjs/vfunc.tmpl           \
+       giscanner/doctemplates/devdocs/Gjs/_doc.tmpl            \
+       giscanner/doctemplates/devdocs/Gjs/_index.tmpl          \
+       giscanner/doctemplates/devdocs/Gjs/_method.tmpl         \
+       giscanner/doctemplates/devdocs/Gjs/_methods.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/_properties.tmpl     \
+       giscanner/doctemplates/devdocs/Gjs/_signals.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/_staticmethods.tmpl  \
+       giscanner/doctemplates/devdocs/Gjs/_vfuncs.tmpl         \
+       giscanner/doctemplates/devdocs/Gjs/base.tmpl            \
+       giscanner/doctemplates/devdocs/Gjs/callback.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/class.tmpl           \
+       giscanner/doctemplates/devdocs/Gjs/default.tmpl         \
+       giscanner/doctemplates/devdocs/Gjs/enum.tmpl            \
+       giscanner/doctemplates/devdocs/Gjs/function.tmpl        \
+       giscanner/doctemplates/devdocs/Gjs/interface.tmpl       \
+       giscanner/doctemplates/devdocs/Gjs/namespace.tmpl
 
 _giscanner_la_CFLAGS = \
        $(PYTHON_INCLUDES) \
@@ -1477,7 +1558,7 @@ girdir = $(GIR_DIR)
 gir_DATA = $(STATIC_GIRSOURCES) $(SUBSTITUTED_GIRSOURCES) $(BUILT_GIRSOURCES)
 typelibsdir = $(libdir)/girepository-1.0
 typelibs_DATA = $(gir_DATA:.gir=.typelib)
-TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON\@,$(PYTHON),
+TOOL_SUBSTITUTIONS = -e s,@libdir\@,$(libdir), -e s,@datarootdir\@,$(datarootdir), -e s,@PYTHON_CMD\@,\/usr\/bin\/env\ $(PYTHON),
 g_ir_compiler_SOURCES = tools/compiler.c
 g_ir_compiler_CPPFLAGS = -I$(top_srcdir)/girepository
 g_ir_compiler_CFLAGS = $(GIO_CFLAGS) $(WARN_CFLAGS)
@@ -1518,9 +1599,6 @@ m4_DATA = m4/introspection.m4
 makedir = $(datadir)/gobject-introspection-1.0
 dist_make_DATA = Makefile.introspection
 
-# Default pep8.py --exclude + emacs backup files
-PEP8_EXCLUDES = --exclude='.svn,CVS,.bzr,.hg,.git,__pycache__,.\#*'
-
 # Colin's handy Makefile bits for:
 # 1) stuffing tarballs with pre-generated scripts from your workstation
 # 2) bumping configure.ac version post-release
@@ -1562,8 +1640,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
            echo ' $(SHELL) ./config.status'; \
            $(SHELL) ./config.status;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
        esac;
 $(srcdir)/common.mk $(srcdir)/Makefile.introspection $(srcdir)/Makefile-cmph.am $(srcdir)/Makefile-girepository.am $(srcdir)/Makefile-giscanner.am $(srcdir)/Makefile-examples.am $(srcdir)/Makefile-gir.am $(srcdir)/Makefile-tools.am $(am__empty):
 
@@ -1596,6 +1674,73 @@ gobject-introspection-1.0.pc: $(top_builddir)/config.status $(srcdir)/gobject-in
        cd $(top_builddir) && $(SHELL) ./config.status $@
 gobject-introspection-no-export-1.0.pc: $(top_builddir)/config.status $(srcdir)/gobject-introspection-no-export-1.0.pc.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
+install-binPROGRAMS: $(bin_PROGRAMS)
+       @$(NORMAL_INSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+       fi; \
+       for p in $$list; do echo "$$p $$p"; done | \
+       sed 's/$(EXEEXT)$$//' | \
+       while read p p1; do if test -f $$p \
+        || test -f $$p1 \
+         ; then echo "$$p"; echo "$$p"; else :; fi; \
+       done | \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
+           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+       sed 'N;N;N;s,\n, ,g' | \
+       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+           if ($$2 == $$4) files[d] = files[d] " " $$1; \
+           else { print "f", $$3 "/" $$4, $$1; } } \
+         END { for (d in files) print "f", d, files[d] }' | \
+       while read type dir files; do \
+           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+           test -z "$$files" || { \
+           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+           } \
+       ; done
+
+uninstall-binPROGRAMS:
+       @$(NORMAL_UNINSTALL)
+       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+       files=`for p in $$list; do echo "$$p"; done | \
+         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
+       test -n "$$list" || exit 0; \
+       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+       cd "$(DESTDIR)$(bindir)" && rm -f $$files
+
+clean-binPROGRAMS:
+       @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+
+clean-checkPROGRAMS:
+       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
+
+clean-noinstPROGRAMS:
+       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
+       echo " rm -f" $$list; \
+       rm -f $$list || exit $$?; \
+       test -n "$(EXEEXT)" || exit 0; \
+       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+       echo " rm -f" $$list; \
+       rm -f $$list
 
 clean-checkLTLIBRARIES:
        -test -z "$(check_LTLIBRARIES)" || rm -f $(check_LTLIBRARIES)
@@ -1885,73 +2030,6 @@ giscanner/libgiscanner_la-scannerparser.lo: giscanner/$(am__dirstamp) \
 
 libgiscanner.la: $(libgiscanner_la_OBJECTS) $(libgiscanner_la_DEPENDENCIES) $(EXTRA_libgiscanner_la_DEPENDENCIES) 
        $(AM_V_CCLD)$(libgiscanner_la_LINK)  $(libgiscanner_la_OBJECTS) $(libgiscanner_la_LIBADD) $(LIBS)
-install-binPROGRAMS: $(bin_PROGRAMS)
-       @$(NORMAL_INSTALL)
-       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-       if test -n "$$list"; then \
-         echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
-         $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
-       fi; \
-       for p in $$list; do echo "$$p $$p"; done | \
-       sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p \
-        || test -f $$p1 \
-         ; then echo "$$p"; echo "$$p"; else :; fi; \
-       done | \
-       sed -e 'p;s,.*/,,;n;h' \
-           -e 's|.*|.|' \
-           -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
-       sed 'N;N;N;s,\n, ,g' | \
-       $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
-         { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
-           if ($$2 == $$4) files[d] = files[d] " " $$1; \
-           else { print "f", $$3 "/" $$4, $$1; } } \
-         END { for (d in files) print "f", d, files[d] }' | \
-       while read type dir files; do \
-           if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
-           test -z "$$files" || { \
-           echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
-           $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
-           } \
-       ; done
-
-uninstall-binPROGRAMS:
-       @$(NORMAL_UNINSTALL)
-       @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
-       files=`for p in $$list; do echo "$$p"; done | \
-         sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-             -e 's/$$/$(EXEEXT)/' \
-       `; \
-       test -n "$$list" || exit 0; \
-       echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
-       cd "$(DESTDIR)$(bindir)" && rm -f $$files
-
-clean-binPROGRAMS:
-       @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
-       echo " rm -f" $$list; \
-       rm -f $$list || exit $$?; \
-       test -n "$(EXEEXT)" || exit 0; \
-       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-       echo " rm -f" $$list; \
-       rm -f $$list
-
-clean-checkPROGRAMS:
-       @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \
-       echo " rm -f" $$list; \
-       rm -f $$list || exit $$?; \
-       test -n "$(EXEEXT)" || exit 0; \
-       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-       echo " rm -f" $$list; \
-       rm -f $$list
-
-clean-noinstPROGRAMS:
-       @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
-       echo " rm -f" $$list; \
-       rm -f $$list || exit $$?; \
-       test -n "$(EXEEXT)" || exit 0; \
-       list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
-       echo " rm -f" $$list; \
-       rm -f $$list
 girepository/cmph_bdz_test-cmph-bdz-test.$(OBJEXT):  \
        girepository/$(am__dirstamp) \
        girepository/$(DEPDIR)/$(am__dirstamp)
@@ -2065,69 +2143,75 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@examples/$(DEPDIR)/glib_print-glib-print.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/cmph_bdz_test-cmph-bdz-test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gi_dump_types-gdump.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gi_dump_types-gi-dump-types.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gthash_test-gthash-test.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gthash_test-gthash.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gdump.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giarginfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gibaseinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gicallableinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giconstantinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gienuminfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gifieldinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gifunctioninfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giinterfaceinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-ginvoke.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giobjectinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gipropertyinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giregisteredtypeinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-girepository.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-girffi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gisignalinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gistructinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gitypeinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gitypelib.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giunioninfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-givfuncinfo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_gthash_la-gthash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girmodule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girnode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-giroffsets.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girparser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girwriter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bdz.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bdz_ph.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bmz.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bmz8.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-brz.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-buffer_entry.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-buffer_manager.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-chd.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-chd_ph.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-chm.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-cmph.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-cmph_structs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-compressed_rank.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-compressed_seq.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-fch.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-fch_buckets.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-graph.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-hash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-jenkins_hash.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-miller_rabin.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-select.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-vqueue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-vstack.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/_giscanner_la-giscannermodule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/libgiscanner_la-scannerlexer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/libgiscanner_la-scannerparser.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/libgiscanner_la-sourcescanner.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/g_ir_compiler-compiler.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/g_ir_generate-generate.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/g_ir_inspect-g-ir-inspect.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@examples/$(DEPDIR)/glib_print-glib-print.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/cmph_bdz_test-cmph-bdz-test.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gi_dump_types-gdump.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gi_dump_types-gi-dump-types.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gthash_test-gthash-test.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/gthash_test-gthash.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gdump.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giarginfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gibaseinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gicallableinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giconstantinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gienuminfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gifieldinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gifunctioninfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giinterfaceinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-ginvoke.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giobjectinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gipropertyinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giregisteredtypeinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-girepository.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-girffi.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gisignalinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gistructinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gitypeinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-gitypelib.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-giunioninfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_1_0_la-givfuncinfo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_gthash_la-gthash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girmodule.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girnode.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-giroffsets.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girparser.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/$(DEPDIR)/libgirepository_internals_la-girwriter.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bdz.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bdz_ph.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bmz.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-bmz8.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-brz.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-buffer_entry.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-buffer_manager.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-chd.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-chd_ph.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-chm.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-cmph.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-cmph_structs.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-compressed_rank.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-compressed_seq.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-fch.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-fch_buckets.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-graph.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-hash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-jenkins_hash.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-miller_rabin.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-select.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-vqueue.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@girepository/cmph/$(DEPDIR)/libcmph_la-vstack.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/_giscanner_la-giscannermodule.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/libgiscanner_la-scannerlexer.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/libgiscanner_la-scannerparser.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@giscanner/$(DEPDIR)/libgiscanner_la-sourcescanner.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/g_ir_compiler-compiler.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/g_ir_generate-generate.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@tools/$(DEPDIR)/g_ir_inspect-g-ir-inspect.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -2707,20 +2791,15 @@ uninstall-pkgpyexecPYTHON:
        dir='$(DESTDIR)$(pkgpyexecdir)'; \
        pyc_files=`echo "$$py_files" | sed 's|$$|c|'`; \
        pyo_files=`echo "$$py_files" | sed 's|$$|o|'`; \
-       py_files_pep3147=`echo "$$py_files" | $(am__pep3147_tweak)`; \
-       echo "$$py_files_pep3147";\
-       pyc_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|c|'`; \
-       pyo_files_pep3147=`echo "$$py_files_pep3147" | sed 's|$$|o|'`; \
        st=0; \
-       for files in \
-         "$$py_files" \
-         "$$pyc_files" \
-         "$$pyo_files" \
-         "$$pyc_files_pep3147" \
-         "$$pyo_files_pep3147" \
-       ; do \
+       for files in "$$py_files" "$$pyc_files" "$$pyo_files"; do \
          $(am__uninstall_files_from_dir) || st=$$?; \
        done; \
+       dir='$(DESTDIR)$(pkgpyexecdir)/__pycache__'; \
+       echo "$$py_files" | $(am__pep3147_tweak) | $(am__base_list) | \
+         while read files; do \
+           $(am__uninstall_files_from_dir) || st=$$?; \
+         done || exit $$?; \
        exit $$st
 install-man1: $(man_MANS)
        @$(NORMAL_INSTALL)
@@ -3163,7 +3242,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        fi;                                                             \
        $$success || exit 1
 
-check-TESTS:
+check-TESTS: $(check_PROGRAMS) $(check_LTLIBRARIES)
        @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -3173,7 +3252,7 @@ check-TESTS:
        log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
        $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
        exit $$?;
-recheck: all $(check_LTLIBRARIES) $(check_PROGRAMS)
+recheck: all $(check_PROGRAMS) $(check_LTLIBRARIES)
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
        @set +e; $(am__set_TESTS_bases); \
        bases=`for i in $$bases; do echo $$i; done \
@@ -3213,7 +3292,10 @@ gthash-test.log: gthash-test$(EXEEXT)
 @am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        $(am__remove_distdir)
        test -d "$(distdir)" || mkdir "$(distdir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -3401,17 +3483,17 @@ distcleancheck: distclean
               $(distcleancheck_listfiles) ; \
               exit 1; } >&2
 check-am: all-am
-       $(MAKE) $(AM_MAKEFLAGS) $(check_LTLIBRARIES) $(check_PROGRAMS)
-       $(MAKE) $(AM_MAKEFLAGS) check-TESTS check-local
+       $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_LTLIBRARIES)
+       $(MAKE) $(AM_MAKEFLAGS) check-TESTS
 check: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) check-recursive
-all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(MANS) $(DATA) \
+all-am: Makefile $(PROGRAMS) $(LTLIBRARIES) $(SCRIPTS) $(MANS) $(DATA) \
                $(HEADERS) config.h
 install-binPROGRAMS: install-libLTLIBRARIES
 
 installdirs: installdirs-recursive
 installdirs-am:
-       for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(makedir)" "$(DESTDIR)$(gdumpdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(m4dir)" "$(DESTDIR)$(templatedir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(girepodir)"; do \
+       for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgpyexecdir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(makedir)" "$(DESTDIR)$(gdumpdir)" "$(DESTDIR)$(girdir)" "$(DESTDIR)$(m4dir)" "$(DESTDIR)$(templatedir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(typelibsdir)" "$(DESTDIR)$(girepodir)"; do \
          test -z "$$dir" || $(MKDIR_P) "$$dir"; \
        done
 install: $(BUILT_SOURCES)
@@ -3472,7 +3554,69 @@ clean-am: clean-binPROGRAMS clean-checkLTLIBRARIES clean-checkPROGRAMS \
 
 distclean: distclean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
-       -rm -rf examples/$(DEPDIR) girepository/$(DEPDIR) girepository/cmph/$(DEPDIR) giscanner/$(DEPDIR) tools/$(DEPDIR)
+               -rm -f examples/$(DEPDIR)/glib_print-glib-print.Po
+       -rm -f girepository/$(DEPDIR)/cmph_bdz_test-cmph-bdz-test.Po
+       -rm -f girepository/$(DEPDIR)/gi_dump_types-gdump.Po
+       -rm -f girepository/$(DEPDIR)/gi_dump_types-gi-dump-types.Po
+       -rm -f girepository/$(DEPDIR)/gthash_test-gthash-test.Po
+       -rm -f girepository/$(DEPDIR)/gthash_test-gthash.Po
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gdump.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giarginfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gibaseinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gicallableinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giconstantinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gienuminfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gifieldinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gifunctioninfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giinterfaceinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-ginvoke.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giobjectinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gipropertyinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giregisteredtypeinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-girepository.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-girffi.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gisignalinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gistructinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gitypeinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gitypelib.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giunioninfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-givfuncinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_gthash_la-gthash.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girmodule.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girnode.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-giroffsets.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girparser.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girwriter.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bdz.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bdz_ph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bmz.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bmz8.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-brz.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-buffer_entry.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-buffer_manager.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-chd.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-chd_ph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-chm.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-cmph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-cmph_structs.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-compressed_rank.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-compressed_seq.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-fch.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-fch_buckets.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-graph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-hash.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-jenkins_hash.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-miller_rabin.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-select.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-vqueue.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-vstack.Plo
+       -rm -f giscanner/$(DEPDIR)/_giscanner_la-giscannermodule.Plo
+       -rm -f giscanner/$(DEPDIR)/libgiscanner_la-scannerlexer.Plo
+       -rm -f giscanner/$(DEPDIR)/libgiscanner_la-scannerparser.Plo
+       -rm -f giscanner/$(DEPDIR)/libgiscanner_la-sourcescanner.Plo
+       -rm -f tools/$(DEPDIR)/g_ir_compiler-compiler.Po
+       -rm -f tools/$(DEPDIR)/g_ir_generate-generate.Po
+       -rm -f tools/$(DEPDIR)/g_ir_inspect-g-ir-inspect.Po
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-hdr distclean-libtool distclean-tags
@@ -3525,7 +3669,69 @@ installcheck-am:
 maintainer-clean: maintainer-clean-recursive
        -rm -f $(am__CONFIG_DISTCLEAN_FILES)
        -rm -rf $(top_srcdir)/autom4te.cache
-       -rm -rf examples/$(DEPDIR) girepository/$(DEPDIR) girepository/cmph/$(DEPDIR) giscanner/$(DEPDIR) tools/$(DEPDIR)
+               -rm -f examples/$(DEPDIR)/glib_print-glib-print.Po
+       -rm -f girepository/$(DEPDIR)/cmph_bdz_test-cmph-bdz-test.Po
+       -rm -f girepository/$(DEPDIR)/gi_dump_types-gdump.Po
+       -rm -f girepository/$(DEPDIR)/gi_dump_types-gi-dump-types.Po
+       -rm -f girepository/$(DEPDIR)/gthash_test-gthash-test.Po
+       -rm -f girepository/$(DEPDIR)/gthash_test-gthash.Po
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gdump.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giarginfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gibaseinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gicallableinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giconstantinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gienuminfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gifieldinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gifunctioninfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giinterfaceinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-ginvoke.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giobjectinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gipropertyinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giregisteredtypeinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-girepository.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-girffi.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gisignalinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gistructinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gitypeinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-gitypelib.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-giunioninfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_1_0_la-givfuncinfo.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_gthash_la-gthash.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girmodule.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girnode.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-giroffsets.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girparser.Plo
+       -rm -f girepository/$(DEPDIR)/libgirepository_internals_la-girwriter.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bdz.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bdz_ph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bmz.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-bmz8.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-brz.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-buffer_entry.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-buffer_manager.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-chd.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-chd_ph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-chm.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-cmph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-cmph_structs.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-compressed_rank.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-compressed_seq.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-fch.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-fch_buckets.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-graph.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-hash.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-jenkins_hash.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-miller_rabin.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-select.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-vqueue.Plo
+       -rm -f girepository/cmph/$(DEPDIR)/libcmph_la-vstack.Plo
+       -rm -f giscanner/$(DEPDIR)/_giscanner_la-giscannermodule.Plo
+       -rm -f giscanner/$(DEPDIR)/libgiscanner_la-scannerlexer.Plo
+       -rm -f giscanner/$(DEPDIR)/libgiscanner_la-scannerparser.Plo
+       -rm -f giscanner/$(DEPDIR)/libgiscanner_la-sourcescanner.Plo
+       -rm -f tools/$(DEPDIR)/g_ir_compiler-compiler.Po
+       -rm -f tools/$(DEPDIR)/g_ir_generate-generate.Po
+       -rm -f tools/$(DEPDIR)/g_ir_inspect-g-ir-inspect.Po
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -3556,7 +3762,7 @@ uninstall-man: uninstall-man1
        install-strip
 
 .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
-       am--refresh check check-TESTS check-am check-local clean \
+       am--depfiles am--refresh check check-TESTS check-am clean \
        clean-binPROGRAMS clean-checkLTLIBRARIES clean-checkPROGRAMS \
        clean-cscope clean-generic clean-libLTLIBRARIES clean-libtool \
        clean-noinstLTLIBRARIES clean-noinstPROGRAMS \
@@ -3728,16 +3934,8 @@ g-ir-doc-tool: tools/g-ir-tool-template.in _giscanner.la Makefile
        $(AM_V_GEN) sed $(TOOL_SUBSTITUTIONS) -e s,@TOOL_MODULE\@,docmain, -e s,@TOOL_FUNCTION\@,doc_main, $< > $@.tmp && mv $@.tmp $@
        @chmod a+x $@
 
-check-local:
-       @echo "TEST: PEP-8 INQUISITION"
-       @find $(top_srcdir)/giscanner -name \*.py | sort | uniq | xargs \
-               $(PYTHON) $(top_srcdir)/misc/pep8.py --max-line-length=99 --ignore=E128,W503 $(PEP8_EXCLUDES)
-       @find $(top_srcdir)/tests -name \*.py | sort | uniq | xargs \
-               $(PYTHON) $(top_srcdir)/misc/pep8.py --ignore=E127,E402,E501,E731 $(PEP8_EXCLUDES)
-
-check-pyflakes:
-       @echo "  CHECK Pyflakes"
-       @find $(top_srcdir)/giscanner -name \*.py | sort | uniq | xargs $(PYTHON) $(top_srcdir)/misc/pyflakes.py
+check.quality:
+       (cd $(abs_top_srcdir) && $(PYTHON) -m flake8 --count);
 
 prepare-release-tag: Makefile
        git tag -m "Tag $(TAG_VERSION)" -a $(TAG_PREFIX)$(TAG_VERSION)
diff --git a/NEWS b/NEWS
index 7499f43..2d4593a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,6 +9,9 @@
       - Use Sphinx to generate the user documentation; gtk-doc is still
         required for the girepository-1.0 C API reference
       - Support all _Float* C types from ISO/IEC TS 18661-3:2015
+      - The autotools build now uses autoconf-archive
+      - g-ir-doc-tool: Add DevDocs formatting for GJS (--format=devdocs)
+        This adds a dependency on the Python markdown package
 
     â€¢ Issues resolved on gitlab.gnome.org:
       - #139 - make check fails for gobject-introspection 1.44.0 on
@@ -29,7 +32,7 @@
     â€¢ Contributors:
       Tomasz MiÄ…sko, Emmanuele Bassi, Rico Tzschichholz, Chun-wei Fan,
       Philip Chimento, Tom Schoonjans, Christoph Reiter, Ray Donnelly,
-      Marcus Calhoun-Lopez, Florian Müllner
+      Marcus Calhoun-Lopez, Florian Müllner, Evan Welsh, Mathieu Duponchelle
 
 === 2.56 ======================================================================
 
index b89e4ce..bf3b7ba 100644 (file)
@@ -1,6 +1,6 @@
-# generated automatically by aclocal 1.15.1 -*- Autoconf -*-
+# generated automatically by aclocal 1.16.1 -*- Autoconf -*-
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1183,7 +1183,7 @@ AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
   m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
 ])dnl AX_REQUIRE_DEFINED
 
-# Copyright (C) 2002-2017 Free Software Foundation, Inc.
+# Copyright (C) 2002-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1195,10 +1195,10 @@ AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.15'
+[am__api_version='1.16'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.15.1], [],
+m4_if([$1], [1.16.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -1214,14 +1214,14 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.15.1])dnl
+[AM_AUTOMAKE_VERSION([1.16.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1273,7 +1273,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1304,7 +1304,7 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1495,13 +1495,12 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
@@ -1509,49 +1508,41 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  AS_CASE([$CONFIG_FILES],
+          [*\'*], [eval set x "$CONFIG_FILES"],
+          [*], [set x $CONFIG_FILES])
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_mf
   do
     # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
+    am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
     # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`AS_DIRNAME("$mf")`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`AS_DIRNAME(["$file"])`
-      AS_MKDIR_P([$dirpart/$fdir])
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`AS_DIRNAME(["$am_mf"])`
+    am_filepart=`AS_BASENAME(["$am_mf"])`
+    AM_RUN_LOG([cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles]) || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).])
+  fi
+  AS_UNSET([am_dirpart])
+  AS_UNSET([am_filepart])
+  AS_UNSET([am_mf])
+  AS_UNSET([am_rc])
+  rm -f conftest-deps.mk
 }
 ])# _AM_OUTPUT_DEPENDENCY_COMMANDS
 
@@ -1560,18 +1551,17 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 # -----------------------------
 # This macro should only be invoked once -- use via AC_REQUIRE.
 #
-# This code is only required when automatic dependency tracking
-# is enabled.  FIXME.  This creates each '.P' file that we will
-# need in order to bootstrap the dependency handling code.
+# This code is only required when automatic dependency tracking is enabled.
+# This creates each '.Po' and '.Plo' makefile fragment that we'll need in
+# order to bootstrap the dependency handling code.
 AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 [AC_CONFIG_COMMANDS([depfiles],
      [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
-     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
-])
+     [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])])
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1658,8 +1648,8 @@ AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl
 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 AC_SUBST([mkdir_p], ['$(MKDIR_P)'])
 # We need awk for the "check" target (and possibly the TAP driver).  The
 # system "awk" is bad on some platforms.
@@ -1726,7 +1716,7 @@ END
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -1768,7 +1758,7 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1789,7 +1779,7 @@ if test x"${install_sh+set}" != xset; then
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2017 Free Software Foundation, Inc.
+# Copyright (C) 2003-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1811,7 +1801,7 @@ AC_SUBST([am__leading_dot])])
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1846,7 +1836,7 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1854,49 +1844,42 @@ AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
 
 # AM_MAKE_INCLUDE()
 # -----------------
-# Check to see how make treats includes.
+# Check whether make has an 'include' directive that can support all
+# the idioms we need for our automatic dependency tracking code.
 AC_DEFUN([AM_MAKE_INCLUDE],
-[am_make=${MAKE-make}
-cat > confinc << 'END'
+[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive])
+cat > confinc.mk << 'END'
 am__doit:
-       @echo this is the am__doit target
+       @echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-AC_MSG_CHECKING([for style of include used by $am_make])
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
-     ;;
-   esac
-fi
-AC_SUBST([am__include])
-AC_SUBST([am__quote])
-AC_MSG_RESULT([$_am_result])
-rm -f confinc confmf
-])
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out])
+  AS_CASE([$?:`cat confinc.out 2>/dev/null`],
+      ['0:this is the am__doit target'],
+      [AS_CASE([$s],
+          [BSD], [am__include='.include' am__quote='"'],
+          [am__include='include' am__quote=''])])
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+AC_MSG_RESULT([${_am_result}])
+AC_SUBST([am__include])])
+AC_SUBST([am__quote])])
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2017 Free Software Foundation, Inc.
+# Copyright (C) 1997-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1935,7 +1918,7 @@ fi
 
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -1964,7 +1947,7 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -2011,7 +1994,7 @@ AC_LANG_POP([C])])
 # For backward compatibility.
 AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -2044,10 +2027,12 @@ AC_DEFUN([AM_PATH_PYTHON],
  [
   dnl Find a Python interpreter.  Python versions prior to 2.0 are not
   dnl supported. (2.0 was released on October 16, 2000).
-  dnl FIXME: Remove the need to hard-code Python versions here.
   m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
-[python python2 python3 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
- python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
+[python python2 python3 dnl
+ python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl
+ python3.2 python3.1 python3.0 dnl
+ python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl
+ python2.0])
 
   AC_ARG_VAR([PYTHON], [the Python interpreter])
 
@@ -2247,7 +2232,7 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
 sys.exit(sys.hexversion < minverhex)"
   AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -2266,7 +2251,7 @@ AC_DEFUN([AM_RUN_LOG],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -2347,7 +2332,7 @@ AC_CONFIG_COMMANDS_PRE(
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2017 Free Software Foundation, Inc.
+# Copyright (C) 2009-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -2407,7 +2392,7 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2017 Free Software Foundation, Inc.
+# Copyright (C) 2001-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -2435,7 +2420,7 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2017 Free Software Foundation, Inc.
+# Copyright (C) 2006-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -2454,7 +2439,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2017 Free Software Foundation, Inc.
+# Copyright (C) 2004-2018 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
index a85b723..99e5052 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2014 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -255,7 +255,8 @@ EOF
     echo "compile $scriptversion"
     exit $?
     ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
     func_cl_wrapper "$@"      # Doesn't return...
     ;;
 esac
@@ -339,9 +340,9 @@ exit $ret
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:
index b39f98f..65cbf70 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# Copyright (C) 1999-2018 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@ scriptversion=2016-01-11.22; # UTC
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -783,7 +783,7 @@ exit 0
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
 # time-stamp-time-zone: "UTC0"
index 59990a1..8175c64 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2014-09-12.12; # UTC
+scriptversion=2018-03-11.20; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -271,15 +271,18 @@ do
     fi
     dst=$dst_arg
 
-    # If destination is a directory, append the input filename; won't work
-    # if double slashes aren't ignored.
+    # If destination is a directory, append the input filename.
     if test -d "$dst"; then
       if test "$is_target_a_directory" = never; then
         echo "$0: $dst_arg: Is a directory" >&2
         exit 1
       fi
       dstdir=$dst
-      dst=$dstdir/`basename "$src"`
+      dstbase=`basename "$src"`
+      case $dst in
+       */) dst=$dst$dstbase;;
+       *)  dst=$dst/$dstbase;;
+      esac
       dstdir_status=0
     else
       dstdir=`dirname "$dst"`
@@ -288,6 +291,11 @@ do
     fi
   fi
 
+  case $dstdir in
+    */) dstdirslash=$dstdir;;
+    *)  dstdirslash=$dstdir/;;
+  esac
+
   obsolete_mkdir_used=false
 
   if test $dstdir_status != 0; then
@@ -324,14 +332,16 @@ do
             # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
             ;;
           *)
-            # $RANDOM is not portable (e.g. dash);  use it when possible to
-            # lower collision chance
+            # Note that $RANDOM variable is not portable (e.g. dash);  Use it
+            # here however when possible just to lower collision chance.
             tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
+
             trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
 
-            # As "mkdir -p" follows symlinks and we work in /tmp possibly;  so
-            # create the $tmpdir first (and fail if unsuccessful) to make sure
-            # that nobody tries to guess the $tmpdir name.
+            # Because "mkdir -p" follows existing symlinks and we likely work
+            # directly in world-writeable /tmp, make sure that the '$tmpdir'
+            # directory is successfully created first before we actually test
+            # 'mkdir -p' feature.
             if (umask $mkdir_umask &&
                 $mkdirprog $mkdir_mode "$tmpdir" &&
                 exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
@@ -434,8 +444,8 @@ do
   else
 
     # Make a couple of temp file names in the proper directory.
-    dsttmp=$dstdir/_inst.$$_
-    rmtmp=$dstdir/_rm.$$_
+    dsttmp=${dstdirslash}_inst.$$_
+    rmtmp=${dstdirslash}_rm.$$_
 
     # Trap to clean up those temp files at exit.
     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
@@ -500,9 +510,9 @@ do
 done
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:
index f62bbae..625aeb1 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2013-10-28.13; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2013-10-28.13; # UTC
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -101,9 +101,9 @@ else
   exit $st
 fi
 
-perl_URL=http://www.perl.org/
-flex_URL=http://flex.sourceforge.net/
-gnu_software_URL=http://www.gnu.org/software
+perl_URL=https://www.perl.org/
+flex_URL=https://github.com/westes/flex
+gnu_software_URL=https://www.gnu.org/software
 
 program_details ()
 {
@@ -207,9 +207,9 @@ give_advice "$1" | sed -e '1s/^/WARNING: /' \
 exit $st
 
 # Local variables:
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:
index 3693d96..9f8baf7 100755 (executable)
@@ -1,9 +1,9 @@
 #!/bin/sh
 # py-compile - Compile a Python program
 
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 2000-2017 Free Software Foundation, Inc.
+# Copyright (C) 2000-2018 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@ scriptversion=2016-01-11.22; # UTC
 # GNU General Public License for more details.
 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -162,7 +162,7 @@ sys.stdout.write('\n')" 2>/dev/null || :
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
 # time-stamp-time-zone: "UTC0"
index 8e575b0..b8521a4 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # test-driver - basic testsuite driver script.
 
-scriptversion=2013-07-13.22; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 2011-2014 Free Software Foundation, Inc.
+# Copyright (C) 2011-2018 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@ scriptversion=2013-07-13.22; # UTC
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -140,9 +140,9 @@ echo ":copy-in-global-log: $gcopy" >> $trs_file
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:
index d788f2d..5943168 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # ylwrap - wrapper for lex/yacc invocations.
 
-scriptversion=2016-01-11.22; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1996-2017 Free Software Foundation, Inc.
+# Copyright (C) 1996-2018 Free Software Foundation, Inc.
 #
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
@@ -18,7 +18,7 @@ scriptversion=2016-01-11.22; # UTC
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -239,7 +239,7 @@ exit $ret
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
 # time-stamp-time-zone: "UTC0"
index 7dce5fb..37038fb 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gobject-introspection 1.57.2.
+# Generated by GNU Autoconf 2.69 for gobject-introspection 1.58.0.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=gobject-introspection>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='gobject-introspection'
 PACKAGE_TARNAME='gobject-introspection'
-PACKAGE_VERSION='1.57.2'
-PACKAGE_STRING='gobject-introspection 1.57.2'
+PACKAGE_VERSION='1.58.0'
+PACKAGE_STRING='gobject-introspection 1.58.0'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=gobject-introspection'
 PACKAGE_URL=''
 
@@ -757,7 +757,6 @@ am__nodep
 AMDEPBACKSLASH
 AMDEP_FALSE
 AMDEP_TRUE
-am__quote
 am__include
 DEPDIR
 OBJEXT
@@ -846,7 +845,8 @@ PACKAGE_VERSION
 PACKAGE_TARNAME
 PACKAGE_NAME
 PATH_SEPARATOR
-SHELL'
+SHELL
+am__quote'
 ac_subst_files=''
 ac_user_opts='
 enable_option_checking
@@ -1457,7 +1457,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures gobject-introspection 1.57.2 to adapt to many kinds of systems.
+\`configure' configures gobject-introspection 1.58.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1529,7 +1529,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of gobject-introspection 1.57.2:";;
+     short | recursive ) echo "Configuration of gobject-introspection 1.58.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1694,7 +1694,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-gobject-introspection configure 1.57.2
+gobject-introspection configure 1.58.0
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2246,7 +2246,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by gobject-introspection $as_me 1.57.2, which was
+It was created by gobject-introspection $as_me 1.58.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2628,7 +2628,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 
 
 
-am__api_version='1.15'
+am__api_version='1.16'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -3114,7 +3114,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='gobject-introspection'
- VERSION='1.57.2'
+ VERSION='1.58.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3144,8 +3144,8 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
 
 # For better backward compatibility.  To be removed once Automake 1.9.x
 # dies out for good.  For more background, see:
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
-# <http://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00001.html>
+# <https://lists.gnu.org/archive/html/automake/2012-07/msg00014.html>
 mkdir_p='$(MKDIR_P)'
 
 # We need awk for the "check" target (and possibly the TAP driver).  The
@@ -3312,7 +3312,7 @@ END
 Aborting the configuration process, to ensure you take notice of the issue.
 
 You can download and install GNU coreutils to get an 'rm' implementation
-that behaves properly: <http://www.gnu.org/software/coreutils/>.
+that behaves properly: <https://www.gnu.org/software/coreutils/>.
 
 If you want to complete the configuration process using your problematic
 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
@@ -3388,7 +3388,7 @@ AM_BACKSLASH='\'
 
 
 # Used in docs/reference/version.xml
-GI_VERSION=1.57.2
+GI_VERSION=1.58.0
 
 
 # Check for Win32
@@ -4332,45 +4332,45 @@ DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
 
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5
+$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; }
+cat > confinc.mk << 'END'
 am__doit:
-       @echo this is the am__doit target
+       @echo this is the am__doit target >confinc.out
 .PHONY: am__doit
 END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
 am__include="#"
 am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
-  am__include=include
-  am__quote=
-  _am_result=GNU
-  ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
-   echo '.include "confinc"' > confmf
-   case `$am_make -s -f confmf 2> /dev/null` in #(
-   *the\ am__doit\ target*)
-     am__include=.include
-     am__quote="\""
-     _am_result=BSD
+# BSD make does it like this.
+echo '.include "confinc.mk" # ignored' > confmf.BSD
+# Other make implementations (GNU, Solaris 10, AIX) do it like this.
+echo 'include confinc.mk # ignored' > confmf.GNU
+_am_result=no
+for s in GNU BSD; do
+  { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5
+   (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); }
+  case $?:`cat confinc.out 2>/dev/null` in #(
+  '0:this is the am__doit target') :
+    case $s in #(
+  BSD) :
+    am__include='.include' am__quote='"' ;; #(
+  *) :
+    am__include='include' am__quote='' ;;
+esac ;; #(
+  *) :
      ;;
-   esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
+esac
+  if test "$am__include" != "#"; then
+    _am_result="yes ($s style)"
+    break
+  fi
+done
+rm -f confinc.* confmf.*
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5
+$as_echo "${_am_result}" >&6; }
 
 # Check whether --enable-dependency-tracking was given.
 if test "${enable_dependency_tracking+set}" = set; then :
@@ -15010,12 +15010,12 @@ if test -n "$GLIB_CFLAGS"; then
     pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.57.2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.57.2") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.58.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.58.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.57.2" 2>/dev/null`
+  pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.58.0" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -15027,12 +15027,12 @@ if test -n "$GLIB_LIBS"; then
     pkg_cv_GLIB_LIBS="$GLIB_LIBS"
  elif test -n "$PKG_CONFIG"; then
     if test -n "$PKG_CONFIG" && \
-    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.57.2\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.57.2") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.58.0\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.58.0") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.57.2" 2>/dev/null`
+  pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.58.0" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -15053,14 +15053,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.57.2" 2>&1`
+               GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.58.0" 2>&1`
         else
-               GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.57.2" 2>&1`
+               GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.58.0" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$GLIB_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (glib-2.0 >= 2.57.2) were not met:
+       as_fn_error $? "Package requirements (glib-2.0 >= 2.58.0) were not met:
 
 $GLIB_PKG_ERRORS
 
@@ -16853,7 +16853,7 @@ if ${am_cv_pathless_PYTHON+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-       for am_cv_pathless_PYTHON in python python2 python3 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7  python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
+       for am_cv_pathless_PYTHON in python python2 python3  python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3  python3.2 python3.1 python3.0  python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1  python2.0 none; do
          test "$am_cv_pathless_PYTHON" = none && break
          prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
@@ -17194,13 +17194,56 @@ $as_echo "no" >&6; }
 fi
 
 
+py_mod_var=`echo markdown'_' | sed 'y%./+-%__p_%'`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for python module markdown" >&5
+$as_echo_n "checking for python module markdown... " >&6; }
+if eval \${py_cv_mod_$py_mod_var+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+prog="
+import sys
+try:
+        import markdown
+except ImportError:
+        sys.exit(1)
+except:
+        sys.exit(0)
+sys.exit(0)"
+if $PYTHON -c "$prog" 1>&5 2>&5
+  then
+    eval "py_cv_mod_$py_mod_var=yes"
+  else
+    eval "py_cv_mod_$py_mod_var=no"
+  fi
+
+fi
+
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+  have_python_markdown=yes
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+  have_python_markdown=no
+fi
+
+
 fi
-if  test x$enable_doctool = xauto && test x$have_python_mako = xyes ; then :
+if  test x$enable_doctool = xauto &&
+        test x$have_python_mako = xyes &&
+        test x$have_python_markdown = xyes ; then :
    enable_doctool=yes
-elif  test x$enable_doctool = xauto && test x$have_python_mako = xno ; then :
+elif  test x$enable_doctool = xauto &&
+        (test x$have_python_mako = xno ||
+         test x$have_python_markdown = xno) ; then :
    enable_doctool=no
 elif  test x$enable_doctool = xyes && test x$have_python_mako = xno ; then :
    as_fn_error $? "Python mako module not found" "$LINENO" 5
+elif  test x$enable_doctool = xyes && test x$have_python_markdown = xno ; then :
+   as_fn_error $? "Python markdown module not found" "$LINENO" 5
 fi
  if test x$enable_doctool != xno; then
   BUILD_DOCTOOL_TRUE=
@@ -17929,7 +17972,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by gobject-introspection $as_me 1.57.2, which was
+This file was extended by gobject-introspection $as_me 1.58.0, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17995,7 +18038,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-gobject-introspection config.status 1.57.2
+gobject-introspection config.status 1.58.0
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -18114,7 +18157,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 #
 # INIT-COMMANDS
 #
-AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"
 
 
 # The HP-UX ksh and POSIX shell print the target directory to stdout
@@ -19022,29 +19065,35 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
   # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
-  case $CONFIG_FILES in
-  *\'*) eval set x "$CONFIG_FILES" ;;
-  *)   set x $CONFIG_FILES ;;
-  esac
+  # TODO: see whether this extra hack can be removed once we start
+  # requiring Autoconf 2.70 or later.
+  case $CONFIG_FILES in #(
+  *\'*) :
+    eval set x "$CONFIG_FILES" ;; #(
+  *) :
+    set x $CONFIG_FILES ;; #(
+  *) :
+     ;;
+esac
   shift
-  for mf
+  # Used to flag and report bootstrapping failures.
+  am_rc=0
+  for am_mf
   do
     # Strip MF so we end up with the name of the file.
-    mf=`echo "$mf" | sed -e 's/:.*$//'`
-    # Check whether this is an Automake generated Makefile or not.
-    # We used to match only the files named 'Makefile.in', but
-    # some people rename them; so instead we look at the file content.
-    # Grep'ing the first line is not enough: some people post-process
-    # each Makefile.in and add a new line on top of each file to say so.
-    # Grep'ing the whole file is not good either: AIX grep has a line
+    am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'`
+    # Check whether this is an Automake generated Makefile which includes
+    # dependency-tracking related rules and includes.
+    # Grep'ing the whole file directly is not great: AIX grep has a line
     # limit of 2048, but all sed's we know have understand at least 4000.
-    if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
-      dirpart=`$as_dirname -- "$mf" ||
-$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$mf" : 'X\(//\)[^/]' \| \
-        X"$mf" : 'X\(//\)$' \| \
-        X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$mf" |
+    sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \
+      || continue
+    am_dirpart=`$as_dirname -- "$am_mf" ||
+$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$am_mf" : 'X\(//\)[^/]' \| \
+        X"$am_mf" : 'X\(//\)$' \| \
+        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X"$am_mf" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -19062,53 +19111,48 @@ $as_echo X"$mf" |
            q
          }
          s/.*/./; q'`
-    else
-      continue
-    fi
-    # Extract the definition of DEPDIR, am__include, and am__quote
-    # from the Makefile without running 'make'.
-    DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
-    test -z "$DEPDIR" && continue
-    am__include=`sed -n 's/^am__include = //p' < "$mf"`
-    test -z "$am__include" && continue
-    am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
-    # Find all dependency output files, they are included files with
-    # $(DEPDIR) in their names.  We invoke sed twice because it is the
-    # simplest approach to changing $(DEPDIR) to its actual value in the
-    # expansion.
-    for file in `sed -n "
-      s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
-        sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do
-      # Make sure the directory exists.
-      test -f "$dirpart/$file" && continue
-      fdir=`$as_dirname -- "$file" ||
-$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$file" : 'X\(//\)[^/]' \| \
-        X"$file" : 'X\(//\)$' \| \
-        X"$file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$file" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
+    am_filepart=`$as_basename -- "$am_mf" ||
+$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \
+        X"$am_mf" : 'X\(//\)$' \| \
+        X"$am_mf" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$am_mf" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
            s//\1/
            q
          }
-         /^X\(\/\/\)$/{
+         /^X\/\(\/\/\)$/{
            s//\1/
            q
          }
-         /^X\(\/\).*/{
+         /^X\/\(\/\).*/{
            s//\1/
            q
          }
          s/.*/./; q'`
-      as_dir=$dirpart/$fdir; as_fn_mkdir_p
-      # echo "creating $dirpart/$file"
-      echo '# dummy' > "$dirpart/$file"
-    done
+    { echo "$as_me:$LINENO: cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles" >&5
+   (cd "$am_dirpart" \
+      && sed -e '/# am--include-marker/d' "$am_filepart" \
+        | $MAKE -f - am--depfiles) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } || am_rc=$?
   done
+  if test $am_rc -ne 0; then
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "Something went wrong bootstrapping makefile fragments
+    for automatic dependency tracking.  Try re-running configure with the
+    '--disable-dependency-tracking' option to at least be able to build
+    the package (albeit without support for automatic dependency tracking).
+See \`config.log' for more details" "$LINENO" 5; }
+  fi
+  { am_dirpart=; unset am_dirpart;}
+  { am_filepart=; unset am_filepart;}
+  { am_mf=; unset am_mf;}
+  { am_rc=; unset am_rc;}
+  rm -f conftest-deps.mk
 }
  ;;
     "libtool":C)
index 29bddde..d48e6c3 100644 (file)
@@ -3,8 +3,8 @@
 
 dnl the gi version number
 m4_define(gi_major_version, 1)
-m4_define(gi_minor_version, 57)
-m4_define(gi_micro_version, 2)
+m4_define(gi_minor_version, 58)
+m4_define(gi_micro_version, 0)
 m4_define(gi_version, gi_major_version.gi_minor_version.gi_micro_version)
 
 AC_PREREQ([2.63])
@@ -118,7 +118,7 @@ GIR_DIR="$EXPANDED_DATADIR/$GIR_SUFFIX"
 AC_SUBST(GIR_DIR)
 AC_DEFINE_UNQUOTED(GIR_DIR, "$GIR_DIR", [Director prefix for gir installation])
 
-PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.57.2])
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.58.0])
 
 PKG_CHECK_MODULES(GOBJECT, [gobject-2.0])
 PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])
@@ -276,13 +276,20 @@ dnl an external dependency
 AC_ARG_ENABLE(doctool,[  --disable-doctool           disable g-ir-doc-tool ],,enable_doctool=auto)
 AS_IF([ test x$enable_doctool != xno], [
    AM_CHECK_PYMOD(mako,,have_python_mako=yes,have_python_mako=no)
+   AM_CHECK_PYMOD(markdown,,have_python_markdown=yes,have_python_markdown=no)
 ])
-AS_IF([ test x$enable_doctool = xauto && test x$have_python_mako = xyes ],
+AS_IF([ test x$enable_doctool = xauto &&
+        test x$have_python_mako = xyes &&
+        test x$have_python_markdown = xyes ],
       [ enable_doctool=yes ],
-      [ test x$enable_doctool = xauto && test x$have_python_mako = xno ],
+      [ test x$enable_doctool = xauto &&
+        (test x$have_python_mako = xno ||
+         test x$have_python_markdown = xno) ],
       [ enable_doctool=no ],
       [ test x$enable_doctool = xyes && test x$have_python_mako = xno ],
-      [ AC_MSG_ERROR([Python mako module not found]) ])
+      [ AC_MSG_ERROR([Python mako module not found]) ],
+      [ test x$enable_doctool = xyes && test x$have_python_markdown = xno ],
+      [ AC_MSG_ERROR([Python markdown module not found]) ])
 AM_CONDITIONAL(BUILD_DOCTOOL, test x$enable_doctool != xno)
 
 # Glib documentation
index de508d6..3c9463d 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -166,7 +166,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       distdir
+       distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -427,8 +427,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -566,7 +566,10 @@ cscopelist-am: $(am__tagged_files)
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
index 3b14397..0ad448b 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -540,8 +540,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 $(top_srcdir)/gtk-doc.make $(am__empty):
 
@@ -568,7 +568,10 @@ ctags CTAGS:
 cscope cscopelist:
 
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
index 4e9d90c..4e908ae 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="ch01.html" title="GIRepository">
 <link rel="next" href="gi-struct-hierarchy.html" title="Struct hierarchy">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -1331,6 +1331,6 @@ from a <a class="link" href="GIRepository.html" title="GIRepository"><span class
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 77574e1..8613009 100644 (file)
@@ -7,7 +7,7 @@
 <link rel="home" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="api-index-1-35-8.html" title="Index of new symbols in 1.35.8">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -72,6 +72,6 @@ justifications.
 <dd class="glossdef"><p>Override the parsed C type with given type.</p></dd>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 8c2ee6f..2abb366 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="api-index-deprecated.html" title="Index of deprecated symbols">
 <link rel="next" href="api-index-1-29-17.html" title="Index of new symbols in 1.29.17">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -29,6 +29,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 54f55de..e7c945f 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="api-index-1-29-0.html" title="Index of new symbols in 1.29.0">
 <link rel="next" href="api-index-1-30-1.html" title="Index of new symbols in 1.30.1">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -44,6 +44,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index b312835..9ebc837 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="api-index-1-29-17.html" title="Index of new symbols in 1.29.17">
 <link rel="next" href="api-index-1-34.html" title="Index of new symbols in 1.34">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -29,6 +29,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index e5b07e6..65d1dd1 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="api-index-1-30-1.html" title="Index of new symbols in 1.30.1">
 <link rel="next" href="api-index-1-35-8.html" title="Index of new symbols in 1.35.8">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -40,6 +40,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 1050404..7f9e607 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="api-index-1-34.html" title="Index of new symbols in 1.34">
 <link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -29,6 +29,6 @@
 <dd></dd>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index c5ad358..2ed826b 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="api-index-full.html" title="Index">
 <link rel="next" href="api-index-1-29-0.html" title="Index of new symbols in 1.29.0">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -25,6 +25,6 @@
 <a name="idx"></a>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 935ef65..c5c80dc 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="gi-gir-reference.html" title="The GIR XML format">
 <link rel="next" href="api-index-deprecated.html" title="Index of deprecated symbols">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <dd></dd>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index ee7f454..28a1157 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="gi.html" title="Part II. API Reference">
 <link rel="prev" href="gi.html" title="Part II. API Reference">
 <link rel="next" href="GIRepository.html" title="GIRepository">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -89,6 +89,6 @@
 </dl></div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 7746749..8321c5c 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="gi.html" title="Part II. API Reference">
 <link rel="prev" href="gi-GITypelib.html" title="GITypelib">
 <link rel="next" href="gi-girffi.html" title="girffi">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -32,6 +32,6 @@
 </dl></div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 88fc764..47e138d 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIInterfaceInfo.html" title="GIInterfaceInfo">
 <link rel="next" href="gi-GIConstantInfo.html" title="GIConstantInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -707,6 +707,6 @@ cleaning up the container and item resources of this transfer.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 2fc4f35..58db33a 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-common-types.html" title="common types">
 <link rel="next" href="gi-GICallableInfo.html" title="GICallableInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -817,6 +817,6 @@ in a <span class="type">GIBaseInfo</span> struct.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 5e57de6..4d42a92 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIBaseInfo.html" title="GIBaseInfo">
 <link rel="next" href="gi-GIFunctionInfo.html" title="GIFunctionInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -694,6 +694,6 @@ g_callable_info_skip_return (<em class="parameter"><code><a class="link" href="g
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 09bd2a3..d12f45a 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIFunctionInfo.html" title="GIFunctionInfo">
 <link rel="next" href="gi-GISignalInfo.html" title="GISignalInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -73,6 +73,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 5ff188f..083d811 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIArgInfo.html" title="GIArgInfo">
 <link rel="next" href="gi-GIFieldInfo.html" title="GIFieldInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -234,6 +234,6 @@ Free the value with <a class="link" href="gi-GIConstantInfo.html#g-constant-info
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 9079787..fe8c009 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIRegisteredTypeInfo.html" title="GIRegisteredTypeInfo">
 <link rel="next" href="gi-GIStructInfo.html" title="GIStructInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -408,6 +408,6 @@ return type is to allow both.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index e215b7c..ae78432 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIConstantInfo.html" title="GIConstantInfo">
 <link rel="next" href="gi-GIPropertyInfo.html" title="GIPropertyInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -396,6 +396,6 @@ g_field_info_get_type (<em class="parameter"><code><a class="link" href="gi-GIFi
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index fe3ccd9..5defc86 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GICallableInfo.html" title="GICallableInfo">
 <link rel="next" href="gi-GICallbackInfo.html" title="GICallbackInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -492,6 +492,6 @@ the expected arguments for the functions type signature.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index c4311a3..a2db76a 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIObjectInfo.html" title="GIObjectInfo">
 <link rel="next" href="gi-GIArgInfo.html" title="GIArgInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -761,6 +761,6 @@ g_interface_info_get_iface_struct (<em class="parameter"><code><a class="link" h
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index bba269d..715c73f 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIUnionInfo.html" title="GIUnionInfo">
 <link rel="next" href="gi-GIInterfaceInfo.html" title="GIInterfaceInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -1580,6 +1580,6 @@ the base classes of this type, starting at the top type.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 1301fc0..b124c2c 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIFieldInfo.html" title="GIFieldInfo">
 <link rel="next" href="gi-GITypeInfo.html" title="GITypeInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -216,6 +216,6 @@ g_property_info_get_type (<em class="parameter"><code><a class="link" href="gi-G
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index cc2ebb3..636b7d4 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIVFuncInfo.html" title="GIVFuncInfo">
 <link rel="next" href="gi-GIEnumInfo.html" title="GIEnumInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -229,6 +229,6 @@ that the shared library which provides the type_init function for this
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 55a7cfd..4098b29 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GICallbackInfo.html" title="GICallbackInfo">
 <link rel="next" href="gi-GIVFuncInfo.html" title="GIVFuncInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -220,6 +220,6 @@ stop the emission of the signal.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index d7b1ecf..afab1f5 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIEnumInfo.html" title="GIEnumInfo">
 <link rel="next" href="gi-GIUnionInfo.html" title="GIUnionInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -448,6 +448,6 @@ when done. </p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 7b261d3..3ff5cda 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIPropertyInfo.html" title="GIPropertyInfo">
 <link rel="next" href="gi-GIValueInfo.html" title="GIValueInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -479,6 +479,6 @@ returned.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 3ed0520..0960a2d 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="gi-typelib.html" title="GITypelib">
 <link rel="prev" href="gi-gitypelib.html" title="gitypelib">
 <link rel="next" href="ch03.html" title="TODO">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -3234,6 +3234,6 @@ entry can be found by a binary search.</p></td>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 2d13b83..27aa587 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GIStructInfo.html" title="GIStructInfo">
 <link rel="next" href="gi-GIObjectInfo.html" title="GIObjectInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -502,6 +502,6 @@ g_union_info_get_alignment (<em class="parameter"><code><a class="link" href="gi
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index a053019..d9bdaa5 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GISignalInfo.html" title="GISignalInfo">
 <link rel="next" href="gi-GIRegisteredTypeInfo.html" title="GIRegisteredTypeInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -424,6 +424,6 @@ error occurred.</p>
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index ffdd320..9ae8683 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-GITypeInfo.html" title="GITypeInfo">
 <link rel="next" href="gi-typelib.html" title="GITypelib">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -70,6 +70,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index b8f563c..903efd5 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="overview.html" title="Part I. GObject-Introspection Overview">
 <link rel="prev" href="overview.html" title="Part I. GObject-Introspection Overview">
 <link rel="next" href="gi-programming.html" title="Writing introspected libraries">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index f510b1e..8d67563 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="gi-struct-hierarchy.html" title="Struct hierarchy">
 <link rel="next" href="gi-GIBaseInfo.html" title="GIBaseInfo">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 488d9a0..91d016d 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch03.html" title="TODO">
 <link rel="prev" href="gi-girffi.html" title="girffi">
 <link rel="next" href="api-index-full.html" title="Index">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index d7b4ee3..6cc0acc 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch03.html" title="TODO">
 <link rel="prev" href="ch03.html" title="TODO">
 <link rel="next" href="gi-gir-reference.html" title="The GIR XML format">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -530,6 +530,6 @@ g_callable_info_free_closure (<em class="parameter"><code><a class="link" href="
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 2e37253..2488462 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="gi-typelib.html" title="GITypelib">
 <link rel="prev" href="gi-typelib.html" title="GITypelib">
 <link rel="next" href="gi-GITypelib.html" title="GITypelib">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -328,6 +328,6 @@ g_typelib_get_namespace (<em class="parameter"><code><a class="link" href="gi-gi
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 51b5a3c..f69391a 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="overview.html" title="Part I. GObject-Introspection Overview">
 <link rel="prev" href="gi-building.html" title="Compiling the GObject Introspection package">
 <link rel="next" href="gi.html" title="Part II. API Reference">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -36,6 +36,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 67fb002..e1928ab 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="ch01.html" title="GIRepository">
 <link rel="prev" href="GIRepository.html" title="GIRepository">
 <link rel="next" href="gi-common-types.html" title="common types">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -51,6 +51,6 @@
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 05880a5..d3b9ffd 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="gi.html" title="Part II. API Reference">
 <link rel="prev" href="gi-GIValueInfo.html" title="GIValueInfo">
 <link rel="next" href="gi-gitypelib.html" title="gitypelib">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -32,6 +32,6 @@
 </dl></div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 53ac7af..dd60884 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="gi-programming.html" title="Writing introspected libraries">
 <link rel="next" href="ch01.html" title="GIRepository">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 </div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index c22dcde..241f944 100644 (file)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
 <link rel="home" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="next" href="overview.html" title="Part I. GObject-Introspection Overview">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GObject Introspection Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      This document is for GObject Introspection version 1.57.2
+      This document is for GObject Introspection version 1.58.0
 .
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="http://developer.gnome.org/gi/unstable/" target="_top">http://developer.gnome.org/gi/unstable/</a>.
 </dl></div>
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 56f93f2..fbe1174 100644 (file)
@@ -8,7 +8,7 @@
 <link rel="up" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="prev" href="index.html" title="GObject Introspection Reference Manual">
 <link rel="next" href="gi-building.html" title="Compiling the GObject Introspection package">
-<meta name="generator" content="GTK-Doc V1.28.1 (XML mode)">
+<meta name="generator" content="GTK-Doc V1.29.1 (XML mode)">
 <link rel="stylesheet" href="style.css" type="text/css">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -57,6 +57,6 @@
 <img src="overview.png">
 </div>
 <div class="footer">
-<hr>Generated by GTK-Doc V1.28.1</div>
+<hr>Generated by GTK-Doc V1.29.1</div>
 </body>
 </html>
\ No newline at end of file
index 2084202..ce76cdb 100644 (file)
 
 
 /**
- * GOsxAppInfo:
- *
- * Information about an installed application from a NSBundle.
- */
-
-
-/**
  * GPermission:
  *
  * #GPermission is an opaque data structure and can only be accessed
  *
  * If %TRUE, forces the connection to use a fallback version of TLS
  * or SSL, rather than trying to negotiate the best version of TLS
- * to use. This can be used when talking to servers that don't
- * implement version negotiation correctly and therefore refuse to
- * handshake at all with a modern TLS handshake.
- *
- * Despite the property name, the fallback version is usually not
- * SSL 3.0, because SSL 3.0 is generally disabled by the #GTlsBackend.
- * #GTlsClientConnection will use the next-highest available version
- * as the fallback version.
+ * to use. See g_tls_client_connection_set_use_ssl3().
  *
  * Since: 2.28
  * Deprecated: 2.56: SSL 3.0 is insecure, and this property does not
 
 
 /**
- * GXdpDocuments:
- *
- * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-Documents.top_of_page">org.freedesktop.portal.Documents</link>.
- */
-
-
-/**
- * GXdpDocuments::handle-add:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @arg_o_path_fd: Argument passed by remote caller.
- * @arg_reuse_existing: Argument passed by remote caller.
- * @arg_persistent: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Add">Add()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_add() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-add-full:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @arg_o_path_fds: Argument passed by remote caller.
- * @arg_flags: Argument passed by remote caller.
- * @arg_app_id: Argument passed by remote caller.
- * @arg_permissions: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddFull">AddFull()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_add_full() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-add-named:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @arg_o_path_parent_fd: Argument passed by remote caller.
- * @arg_filename: Argument passed by remote caller.
- * @arg_reuse_existing: Argument passed by remote caller.
- * @arg_persistent: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddNamed">AddNamed()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_add_named() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-delete:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_doc_id: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Delete">Delete()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_delete() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-get-mount-point:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GetMountPoint">GetMountPoint()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_get_mount_point() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-grant-permissions:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_doc_id: Argument passed by remote caller.
- * @arg_app_id: Argument passed by remote caller.
- * @arg_permissions: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GrantPermissions">GrantPermissions()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_grant_permissions() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-info:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_doc_id: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Info">Info()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_info() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-list:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_app_id: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.List">List()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_list() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-lookup:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_filename: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Lookup">Lookup()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_lookup() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments::handle-revoke-permissions:
- * @object: A #GXdpDocuments.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_doc_id: Argument passed by remote caller.
- * @arg_app_id: Argument passed by remote caller.
- * @arg_permissions: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-Documents.RevokePermissions">RevokePermissions()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_documents_complete_revoke_permissions() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpDocuments:version:
- *
- * Represents the D-Bus property <link linkend="gdbus-property-org-freedesktop-portal-Documents.version">"version"</link>.
- *
- * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
- */
-
-
-/**
- * GXdpDocumentsIface:
- * @parent_iface: The parent interface.
- * @handle_add: Handler for the #GXdpDocuments::handle-add signal.
- * @handle_add_full: Handler for the #GXdpDocuments::handle-add-full signal.
- * @handle_add_named: Handler for the #GXdpDocuments::handle-add-named signal.
- * @handle_delete: Handler for the #GXdpDocuments::handle-delete signal.
- * @handle_get_mount_point: Handler for the #GXdpDocuments::handle-get-mount-point signal.
- * @handle_grant_permissions: Handler for the #GXdpDocuments::handle-grant-permissions signal.
- * @handle_info: Handler for the #GXdpDocuments::handle-info signal.
- * @handle_list: Handler for the #GXdpDocuments::handle-list signal.
- * @handle_lookup: Handler for the #GXdpDocuments::handle-lookup signal.
- * @handle_revoke_permissions: Handler for the #GXdpDocuments::handle-revoke-permissions signal.
- * @get_version: Getter for the #GXdpDocuments:version property.
- *
- * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-Documents.top_of_page">org.freedesktop.portal.Documents</link>.
- */
-
-
-/**
- * GXdpDocumentsProxy:
- *
- * The #GXdpDocumentsProxy structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpDocumentsProxyClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpDocumentsProxy.
- */
-
-
-/**
- * GXdpDocumentsSkeleton:
- *
- * The #GXdpDocumentsSkeleton structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpDocumentsSkeletonClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpDocumentsSkeleton.
- */
-
-
-/**
- * GXdpNetworkMonitor:
- *
- * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-NetworkMonitor.top_of_page">org.freedesktop.portal.NetworkMonitor</link>.
- */
-
-
-/**
- * GXdpNetworkMonitor::changed:
- * @object: A #GXdpNetworkMonitor.
- * @arg_available: Argument.
- *
- * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-freedesktop-portal-NetworkMonitor.changed">"changed"</link> is received.
- *
- * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
- */
-
-
-/**
- * GXdpNetworkMonitor:available:
- *
- * Represents the D-Bus property <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.available">"available"</link>.
- *
- * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
- */
-
-
-/**
- * GXdpNetworkMonitor:connectivity:
- *
- * Represents the D-Bus property <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.connectivity">"connectivity"</link>.
- *
- * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
- */
-
-
-/**
- * GXdpNetworkMonitor:metered:
- *
- * Represents the D-Bus property <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.metered">"metered"</link>.
- *
- * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
- */
-
-
-/**
- * GXdpNetworkMonitorIface:
- * @parent_iface: The parent interface.
- * @get_available: Getter for the #GXdpNetworkMonitor:available property.
- * @get_connectivity: Getter for the #GXdpNetworkMonitor:connectivity property.
- * @get_metered: Getter for the #GXdpNetworkMonitor:metered property.
- * @changed: Handler for the #GXdpNetworkMonitor::changed signal.
- *
- * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-NetworkMonitor.top_of_page">org.freedesktop.portal.NetworkMonitor</link>.
- */
-
-
-/**
- * GXdpNetworkMonitorProxy:
- *
- * The #GXdpNetworkMonitorProxy structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpNetworkMonitorProxyClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpNetworkMonitorProxy.
- */
-
-
-/**
- * GXdpNetworkMonitorSkeleton:
- *
- * The #GXdpNetworkMonitorSkeleton structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpNetworkMonitorSkeletonClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpNetworkMonitorSkeleton.
- */
-
-
-/**
- * GXdpOpenURI:
- *
- * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-OpenURI.top_of_page">org.freedesktop.portal.OpenURI</link>.
- */
-
-
-/**
- * GXdpOpenURI::handle-open-file:
- * @object: A #GXdpOpenURI.
- * @invocation: A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @arg_parent_window: Argument passed by remote caller.
- * @arg_fd: Argument passed by remote caller.
- * @arg_options: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenFile">OpenFile()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_open_uri_complete_open_file() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpOpenURI::handle-open-uri:
- * @object: A #GXdpOpenURI.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_parent_window: Argument passed by remote caller.
- * @arg_uri: Argument passed by remote caller.
- * @arg_options: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenURI">OpenURI()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_open_uri_complete_open_uri() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpOpenURI:version:
- *
- * Represents the D-Bus property <link linkend="gdbus-property-org-freedesktop-portal-OpenURI.version">"version"</link>.
- *
- * Since the D-Bus property for this #GObject property is readable but not writable, it is meaningful to read from it on both the client- and service-side. It is only meaningful, however, to write to it on the service-side.
- */
-
-
-/**
- * GXdpOpenURIIface:
- * @parent_iface: The parent interface.
- * @handle_open_file: Handler for the #GXdpOpenURI::handle-open-file signal.
- * @handle_open_uri: Handler for the #GXdpOpenURI::handle-open-uri signal.
- * @get_version: Getter for the #GXdpOpenURI:version property.
- *
- * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-OpenURI.top_of_page">org.freedesktop.portal.OpenURI</link>.
- */
-
-
-/**
- * GXdpOpenURIProxy:
- *
- * The #GXdpOpenURIProxy structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpOpenURIProxyClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpOpenURIProxy.
- */
-
-
-/**
- * GXdpOpenURISkeleton:
- *
- * The #GXdpOpenURISkeleton structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpOpenURISkeletonClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpOpenURISkeleton.
- */
-
-
-/**
- * GXdpProxyResolver:
- *
- * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-ProxyResolver.top_of_page">org.freedesktop.portal.ProxyResolver</link>.
- */
-
-
-/**
- * GXdpProxyResolver::handle-lookup:
- * @object: A #GXdpProxyResolver.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_uri: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-portal-ProxyResolver.Lookup">Lookup()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call gxdp_proxy_resolver_complete_lookup() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * GXdpProxyResolverIface:
- * @parent_iface: The parent interface.
- * @handle_lookup: Handler for the #GXdpProxyResolver::handle-lookup signal.
- *
- * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-ProxyResolver.top_of_page">org.freedesktop.portal.ProxyResolver</link>.
- */
-
-
-/**
- * GXdpProxyResolverProxy:
- *
- * The #GXdpProxyResolverProxy structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpProxyResolverProxyClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpProxyResolverProxy.
- */
-
-
-/**
- * GXdpProxyResolverSkeleton:
- *
- * The #GXdpProxyResolverSkeleton structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * GXdpProxyResolverSkeletonClass:
- * @parent_class: The parent class.
- *
- * Class structure for #GXdpProxyResolverSkeleton.
- */
-
-
-/**
  * GZlibCompressor:
  *
  * Zlib decompression
 
 
 /**
- * SECTION:GXdpDocuments
- * @title: GXdpDocuments
- * @short_description: Generated C code for the org.freedesktop.portal.Documents D-Bus interface
- *
- * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-portal-Documents.top_of_page">org.freedesktop.portal.Documents</link> D-Bus interface in C.
- */
-
-
-/**
- * SECTION:GXdpNetworkMonitor
- * @title: GXdpNetworkMonitor
- * @short_description: Generated C code for the org.freedesktop.portal.NetworkMonitor D-Bus interface
- *
- * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-portal-NetworkMonitor.top_of_page">org.freedesktop.portal.NetworkMonitor</link> D-Bus interface in C.
- */
-
-
-/**
- * SECTION:GXdpOpenURI
- * @title: GXdpOpenURI
- * @short_description: Generated C code for the org.freedesktop.portal.OpenURI D-Bus interface
- *
- * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-portal-OpenURI.top_of_page">org.freedesktop.portal.OpenURI</link> D-Bus interface in C.
- */
-
-
-/**
- * SECTION:GXdpProxyResolver
- * @title: GXdpProxyResolver
- * @short_description: Generated C code for the org.freedesktop.portal.ProxyResolver D-Bus interface
- *
- * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-portal-ProxyResolver.top_of_page">org.freedesktop.portal.ProxyResolver</link> D-Bus interface in C.
- */
-
-
-/**
- * SECTION:_GFreedesktopDBus
- * @title: _GFreedesktopDBus
- * @short_description: Generated C code for the org.freedesktop.DBus D-Bus interface
- *
- * This section contains code for working with the <link linkend="gdbus-interface-org-freedesktop-DBus.top_of_page">org.freedesktop.DBus</link> D-Bus interface in C.
- */
-
-
-/**
  * SECTION:extensionpoints
  * @short_description: Extension Points
  * @include: gio.h
 
 
 /**
- * SECTION:gosxappinfo
- * @title: GOsxAppInfo
- * @short_description: Application information from NSBundles
- * @include: gio/gosxappinfo.h
- *
- * #GOsxAppInfo is an implementation of #GAppInfo based on NSBundle information.
- *
- * Note that `<gio/gosxappinfo.h>` is unique to OSX.
- */
-
-
-/**
  * SECTION:goutputstream
  * @short_description: Base class for implementing streaming output
  * @include: gio/gio.h
  * where it was created (waiting until the next iteration of the main
  * loop first, if necessary). The caller will pass the #GTask back to
  * the operation's finish function (as a #GAsyncResult), and you can
- * can use g_task_propagate_pointer() or the like to extract the
+ * use g_task_propagate_pointer() or the like to extract the
  * return value.
  *
  * Here is an example for using GTask as a GAsyncResult:
 
 
 /**
- * _GFreedesktopDBus:
- *
- * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus.top_of_page">org.freedesktop.DBus</link>.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-add-match:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_rule: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.AddMatch">AddMatch()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_add_match() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-get-connection-selinux-security-context:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionSELinuxSecurityContext">GetConnectionSELinuxSecurityContext()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_get_connection_selinux_security_context() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-get-connection-unix-process-id:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixProcessID">GetConnectionUnixProcessID()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_get_connection_unix_process_id() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-get-connection-unix-user:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixUser">GetConnectionUnixUser()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_get_connection_unix_user() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-get-id:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.GetId">GetId()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_get_id() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-get-name-owner:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.GetNameOwner">GetNameOwner()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_get_name_owner() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-hello:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.Hello">Hello()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_hello() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-list-activatable-names:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.ListActivatableNames">ListActivatableNames()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_list_activatable_names() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-list-names:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.ListNames">ListNames()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_list_names() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-list-queued-owners:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.ListQueuedOwners">ListQueuedOwners()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_list_queued_owners() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-name-has-owner:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.NameHasOwner">NameHasOwner()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_name_has_owner() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-release-name:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.ReleaseName">ReleaseName()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_release_name() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-reload-config:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.ReloadConfig">ReloadConfig()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_reload_config() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-remove-match:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_rule: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.RemoveMatch">RemoveMatch()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_remove_match() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-request-name:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- * @arg_flags: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.RequestName">RequestName()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_request_name() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-start-service-by-name:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_name: Argument passed by remote caller.
- * @arg_flags: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.StartServiceByName">StartServiceByName()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_start_service_by_name() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::handle-update-activation-environment:
- * @object: A #_GFreedesktopDBus.
- * @invocation: A #GDBusMethodInvocation.
- * @arg_environment: Argument passed by remote caller.
- *
- * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-org-freedesktop-DBus.UpdateActivationEnvironment">UpdateActivationEnvironment()</link> D-Bus method.
- *
- * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call _g_freedesktop_dbus_complete_update_activation_environment() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
- *
- * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
- */
-
-
-/**
- * _GFreedesktopDBus::name-acquired:
- * @object: A #_GFreedesktopDBus.
- * @arg_name: Argument.
- *
- * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-freedesktop-DBus.NameAcquired">"NameAcquired"</link> is received.
- *
- * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
- */
-
-
-/**
- * _GFreedesktopDBus::name-lost:
- * @object: A #_GFreedesktopDBus.
- * @arg_name: Argument.
- *
- * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-freedesktop-DBus.NameLost">"NameLost"</link> is received.
- *
- * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
- */
-
-
-/**
- * _GFreedesktopDBus::name-owner-changed:
- * @object: A #_GFreedesktopDBus.
- * @arg_name: Argument.
- * @arg_old_owner: Argument.
- * @arg_new_owner: Argument.
- *
- * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-org-freedesktop-DBus.NameOwnerChanged">"NameOwnerChanged"</link> is received.
- *
- * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
- */
-
-
-/**
- * _GFreedesktopDBusIface:
- * @parent_iface: The parent interface.
- * @handle_add_match: Handler for the #_GFreedesktopDBus::handle-add-match signal.
- * @handle_get_connection_selinux_security_context: Handler for the #_GFreedesktopDBus::handle-get-connection-selinux-security-context signal.
- * @handle_get_connection_unix_process_id: Handler for the #_GFreedesktopDBus::handle-get-connection-unix-process-id signal.
- * @handle_get_connection_unix_user: Handler for the #_GFreedesktopDBus::handle-get-connection-unix-user signal.
- * @handle_get_id: Handler for the #_GFreedesktopDBus::handle-get-id signal.
- * @handle_get_name_owner: Handler for the #_GFreedesktopDBus::handle-get-name-owner signal.
- * @handle_hello: Handler for the #_GFreedesktopDBus::handle-hello signal.
- * @handle_list_activatable_names: Handler for the #_GFreedesktopDBus::handle-list-activatable-names signal.
- * @handle_list_names: Handler for the #_GFreedesktopDBus::handle-list-names signal.
- * @handle_list_queued_owners: Handler for the #_GFreedesktopDBus::handle-list-queued-owners signal.
- * @handle_name_has_owner: Handler for the #_GFreedesktopDBus::handle-name-has-owner signal.
- * @handle_release_name: Handler for the #_GFreedesktopDBus::handle-release-name signal.
- * @handle_reload_config: Handler for the #_GFreedesktopDBus::handle-reload-config signal.
- * @handle_remove_match: Handler for the #_GFreedesktopDBus::handle-remove-match signal.
- * @handle_request_name: Handler for the #_GFreedesktopDBus::handle-request-name signal.
- * @handle_start_service_by_name: Handler for the #_GFreedesktopDBus::handle-start-service-by-name signal.
- * @handle_update_activation_environment: Handler for the #_GFreedesktopDBus::handle-update-activation-environment signal.
- * @name_acquired: Handler for the #_GFreedesktopDBus::name-acquired signal.
- * @name_lost: Handler for the #_GFreedesktopDBus::name-lost signal.
- * @name_owner_changed: Handler for the #_GFreedesktopDBus::name-owner-changed signal.
- *
- * Virtual table for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus.top_of_page">org.freedesktop.DBus</link>.
- */
-
-
-/**
- * _GFreedesktopDBusProxy:
- *
- * The #_GFreedesktopDBusProxy structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * _GFreedesktopDBusProxyClass:
- * @parent_class: The parent class.
- *
- * Class structure for #_GFreedesktopDBusProxy.
- */
-
-
-/**
- * _GFreedesktopDBusSkeleton:
- *
- * The #_GFreedesktopDBusSkeleton structure contains only private data and should only be accessed using the provided API.
- */
-
-
-/**
- * _GFreedesktopDBusSkeletonClass:
- * @parent_class: The parent class.
- *
- * Class structure for #_GFreedesktopDBusSkeleton.
- */
-
-
-/**
  * _g_dbus_initialize:
  *
  * Does various one-time init things such as
 
 
 /**
- * _g_freedesktop_dbus_call_add_match:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_rule: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * _g_io_module_extract_name:
+ * @filename: filename of a GIOModule
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.AddMatch">AddMatch()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_add_match_finish() to get the result of the operation.
+ * Extract the plugin name from its filename. It removes optional "lib" or
+ * "libgio" prefix, and removes everything after the first dot. For example:
+ * "libgiognutls.so" -> "gnutls".
  *
- * See _g_freedesktop_dbus_call_add_match_sync() for the synchronous, blocking version of this method.
+ * Returns: (transfer full): the module's name
  */
 
 
 /**
- * _g_freedesktop_dbus_call_add_match_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_add_match().
- * @error: Return location for error or %NULL.
+ * _g_io_module_get_default:
+ * @extension_point: the name of an extension point
+ * @envvar: (nullable): the name of an environment variable to
+ *     override the default implementation.
+ * @verify_func: (nullable): a function to call to verify that
+ *     a given implementation is usable in the current environment.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_add_match().
+ * Retrieves the default object implementing @extension_point.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_add_match_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_rule: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * If @envvar is not %NULL, and the environment variable with that
+ * name is set, then the implementation it specifies will be tried
+ * first. After that, or if @envvar is not set, all other
+ * implementations will be tried in order of decreasing priority.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.AddMatch">AddMatch()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * If an extension point implementation implements #GInitable, then
+ * that implementation will only be used if it initializes
+ * successfully. Otherwise, if @verify_func is not %NULL, then it will
+ * be called on each candidate implementation after construction, to
+ * check if it is actually usable or not.
  *
- * See _g_freedesktop_dbus_call_add_match() for the asynchronous version of this method.
+ * The result is cached after it is generated the first time, and
+ * the function is thread-safe.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer none): an object implementing
+ *     @extension_point, or %NULL if there are no usable
+ *     implementations.
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_connection_selinux_security_context:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * _g_io_module_get_default_type:
+ * @extension_point: the name of an extension point
+ * @envvar: (nullable): the name of an environment variable to
+ *     override the default implementation.
+ * @is_supported_offset: a vtable offset, or zero
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionSELinuxSecurityContext">GetConnectionSELinuxSecurityContext()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_get_connection_selinux_security_context_finish() to get the result of the operation.
+ * Retrieves the default class implementing @extension_point.
  *
- * See _g_freedesktop_dbus_call_get_connection_selinux_security_context_sync() for the synchronous, blocking version of this method.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_get_connection_selinux_security_context_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_security_context: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_connection_selinux_security_context().
- * @error: Return location for error or %NULL.
+ * If @envvar is not %NULL, and the environment variable with that
+ * name is set, then the implementation it specifies will be tried
+ * first. After that, or if @envvar is not set, all other
+ * implementations will be tried in order of decreasing priority.
+ *
+ * If @is_supported_offset is non-zero, then it is the offset into the
+ * class vtable at which there is a function that takes no arguments and
+ * returns a boolean.  This function will be called on each candidate
+ * implementation to check if it is actually usable or not.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_get_connection_selinux_security_context().
+ * The result is cached after it is generated the first time, and
+ * the function is thread-safe.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer none): the type to instantiate to implement
+ *     @extension_point, or %G_TYPE_INVALID if there are no usable
+ *     implementations.
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_connection_selinux_security_context_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @out_security_context: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionSELinuxSecurityContext">GetConnectionSELinuxSecurityContext()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * _g_poll_file_monitor_new:
+ * @file: a #GFile.
  *
- * See _g_freedesktop_dbus_call_get_connection_selinux_security_context() for the asynchronous version of this method.
+ * Polls @file for changes.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: a new #GFileMonitor for the given #GFile.
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_connection_unix_process_id:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_activate:
+ * @action: a #GAction
+ * @parameter: (nullable): the parameter to the activation
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixProcessID">GetConnectionUnixProcessID()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_get_connection_unix_process_id_finish() to get the result of the operation.
+ * Activates the action.
  *
- * See _g_freedesktop_dbus_call_get_connection_unix_process_id_sync() for the synchronous, blocking version of this method.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_get_connection_unix_process_id_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_pid: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_connection_unix_process_id().
- * @error: Return location for error or %NULL.
+ * @parameter must be the correct type of parameter for the action (ie:
+ * the parameter type given at construction time).  If the parameter
+ * type was %NULL then @parameter must also be %NULL.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_get_connection_unix_process_id().
+ * If the @parameter GVariant is floating, it is consumed.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_connection_unix_process_id_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @out_pid: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_change_state:
+ * @action: a #GAction
+ * @value: the new state
+ *
+ * Request for the state of @action to be changed to @value.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixProcessID">GetConnectionUnixProcessID()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * The action must be stateful and @value must be of the correct type.
+ * See g_action_get_state_type().
+ *
+ * This call merely requests a change.  The action may refuse to change
+ * its state or may change its state to something other than @value.
+ * See g_action_get_state_hint().
  *
- * See _g_freedesktop_dbus_call_get_connection_unix_process_id() for the asynchronous version of this method.
+ * If the @value GVariant is floating, it is consumed.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.30
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_connection_unix_user:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_get_enabled:
+ * @action: a #GAction
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixUser">GetConnectionUnixUser()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_get_connection_unix_user_finish() to get the result of the operation.
+ * Checks if @action is currently enabled.
+ *
+ * An action must be enabled in order to be activated or in order to
+ * have its state changed from outside callers.
  *
- * See _g_freedesktop_dbus_call_get_connection_unix_user_sync() for the synchronous, blocking version of this method.
+ * Returns: whether the action is enabled
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_connection_unix_user_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_uid: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_connection_unix_user().
- * @error: Return location for error or %NULL.
+ * g_action_get_name:
+ * @action: a #GAction
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_get_connection_unix_user().
+ * Queries the name of @action.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: the name of the action
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_connection_unix_user_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @out_uid: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_get_parameter_type:
+ * @action: a #GAction
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixUser">GetConnectionUnixUser()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Queries the type of the parameter that must be given when activating
+ * @action.
+ *
+ * When activating the action using g_action_activate(), the #GVariant
+ * given to that function must be of the type returned by this function.
  *
- * See _g_freedesktop_dbus_call_get_connection_unix_user() for the asynchronous version of this method.
+ * In the case that this function returns %NULL, you must not give any
+ * #GVariant, but %NULL instead.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (nullable): the parameter type
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_id:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_get_state:
+ * @action: a #GAction
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetId">GetId()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_get_id_finish() to get the result of the operation.
+ * Queries the current state of @action.
  *
- * See _g_freedesktop_dbus_call_get_id_sync() for the synchronous, blocking version of this method.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_get_id_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_unique_id: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_id().
- * @error: Return location for error or %NULL.
+ * If the action is not stateful then %NULL will be returned.  If the
+ * action is stateful then the type of the return value is the type
+ * given by g_action_get_state_type().
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_get_id().
+ * The return value (if non-%NULL) should be freed with
+ * g_variant_unref() when it is no longer required.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer full): the current state of the action
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_id_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_unique_id: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_get_state_hint:
+ * @action: a #GAction
+ *
+ * Requests a hint about the valid range of values for the state of
+ * @action.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetId">GetId()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * If %NULL 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.
  *
- * See _g_freedesktop_dbus_call_get_id() for the asynchronous version of this method.
+ * If a #GVariant array is returned then each item in the array is a
+ * possible value for the state.  If a #GVariant pair (ie: two-tuple) is
+ * returned then the tuple specifies the inclusive lower and upper bound
+ * of valid values for the state.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_get_name_owner:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * 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.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetNameOwner">GetNameOwner()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_get_name_owner_finish() to get the result of the operation.
+ * The return value (if non-%NULL) should be freed with
+ * g_variant_unref() when it is no longer required.
  *
- * See _g_freedesktop_dbus_call_get_name_owner_sync() for the synchronous, blocking version of this method.
+ * Returns: (nullable) (transfer full): the state range hint
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_name_owner_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_unique_name: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_get_name_owner().
- * @error: Return location for error or %NULL.
+ * g_action_get_state_type:
+ * @action: a #GAction
+ *
+ * Queries the type of the state of @action.
+ *
+ * If the action is stateful (e.g. created with
+ * g_simple_action_new_stateful()) then this function returns the
+ * #GVariantType of the state.  This is the type of the initial value
+ * given as the state. All calls to g_action_change_state() must give a
+ * #GVariant of this type and g_action_get_state() will return a
+ * #GVariant of the same type.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_get_name_owner().
+ * If the action is not stateful (e.g. created with g_simple_action_new())
+ * then this function will return %NULL. In that case, g_action_get_state()
+ * will return %NULL and you must not call g_action_change_state().
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (nullable): the state type, if the action is stateful
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_get_name_owner_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @out_unique_name: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_group_action_added:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of an action in the group
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.GetNameOwner">GetNameOwner()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Emits the #GActionGroup::action-added signal on @action_group.
  *
- * See _g_freedesktop_dbus_call_get_name_owner() for the asynchronous version of this method.
+ * This function should only be called by #GActionGroup implementations.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_hello:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_group_action_enabled_changed:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of an action in the group
+ * @enabled: whether or not the action is now enabled
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.Hello">Hello()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_hello_finish() to get the result of the operation.
+ * Emits the #GActionGroup::action-enabled-changed signal on @action_group.
+ *
+ * This function should only be called by #GActionGroup implementations.
  *
- * See _g_freedesktop_dbus_call_hello_sync() for the synchronous, blocking version of this method.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_hello_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_assigned_name: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_hello().
- * @error: Return location for error or %NULL.
+ * g_action_group_action_removed:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of an action in the group
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_hello().
+ * Emits the #GActionGroup::action-removed signal on @action_group.
+ *
+ * This function should only be called by #GActionGroup implementations.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_hello_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_assigned_name: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_group_action_state_changed:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of an action in the group
+ * @state: the new state of the named action
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.Hello">Hello()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Emits the #GActionGroup::action-state-changed signal on @action_group.
  *
- * See _g_freedesktop_dbus_call_hello() for the asynchronous version of this method.
+ * This function should only be called by #GActionGroup implementations.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_list_activatable_names:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_group_activate_action:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to activate
+ * @parameter: (nullable): parameters to the activation
+ *
+ * Activate the named action within @action_group.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ListActivatableNames">ListActivatableNames()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_list_activatable_names_finish() to get the result of the operation.
+ * If the action is expecting a parameter, then the correct type of
+ * parameter must be given as @parameter.  If the action is expecting no
+ * parameters then @parameter must be %NULL.  See
+ * g_action_group_get_action_parameter_type().
  *
- * See _g_freedesktop_dbus_call_list_activatable_names_sync() for the synchronous, blocking version of this method.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_list_activatable_names_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_activatable_names: (out) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_list_activatable_names().
- * @error: Return location for error or %NULL.
+ * g_action_group_change_action_state:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to request the change on
+ * @value: the new state
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_list_activatable_names().
+ * Request for the state of the named action within @action_group to be
+ * changed to @value.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_list_activatable_names_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_activatable_names: (out) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * The action must be stateful and @value must be of the correct type.
+ * See g_action_group_get_action_state_type().
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ListActivatableNames">ListActivatableNames()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * This call merely requests a change.  The action may refuse to change
+ * its state or may change its state to something other than @value.
+ * See g_action_group_get_action_state_hint().
  *
- * See _g_freedesktop_dbus_call_list_activatable_names() for the asynchronous version of this method.
+ * If the @value GVariant is floating, it is consumed.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_list_names:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_group_get_action_enabled:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to query
+ *
+ * Checks if the named action within @action_group is currently enabled.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ListNames">ListNames()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_list_names_finish() to get the result of the operation.
+ * An action must be enabled in order to be activated or in order to
+ * have its state changed from outside callers.
  *
- * See _g_freedesktop_dbus_call_list_names_sync() for the synchronous, blocking version of this method.
+ * Returns: whether or not the action is currently enabled
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_list_names_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_names: (out) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_list_names().
- * @error: Return location for error or %NULL.
+ * g_action_group_get_action_parameter_type:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to query
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_list_names().
+ * Queries the type of the parameter that must be given when activating
+ * the named action within @action_group.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_list_names_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_names: (out) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * When activating the action using g_action_group_activate_action(),
+ * the #GVariant given to that function must be of the type returned
+ * by this function.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ListNames">ListNames()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * In the case that this function returns %NULL, you must not give any
+ * #GVariant, but %NULL instead.
  *
- * See _g_freedesktop_dbus_call_list_names() for the asynchronous version of this method.
+ * The parameter type of a particular action will never change but it is
+ * possible for an action to be removed and for a new action to be added
+ * with the same name but a different parameter type.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (nullable): the parameter type
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_list_queued_owners:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_group_get_action_state:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to query
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ListQueuedOwners">ListQueuedOwners()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_list_queued_owners_finish() to get the result of the operation.
+ * Queries the current state of the named action within @action_group.
  *
- * See _g_freedesktop_dbus_call_list_queued_owners_sync() for the synchronous, blocking version of this method.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_list_queued_owners_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_queued_owners: (out) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_list_queued_owners().
- * @error: Return location for error or %NULL.
+ * If the action is not stateful then %NULL will be returned.  If the
+ * action is stateful then the type of the return value is the type
+ * given by g_action_group_get_action_state_type().
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_list_queued_owners().
+ * The return value (if non-%NULL) should be freed with
+ * g_variant_unref() when it is no longer required.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (nullable): the current state of the action
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_list_queued_owners_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @out_queued_owners: (out) (array zero-terminated=1): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_group_get_action_state_hint:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to query
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ListQueuedOwners">ListQueuedOwners()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Requests a hint about the valid range of values for the state of the
+ * named action within @action_group.
  *
- * See _g_freedesktop_dbus_call_list_queued_owners() for the asynchronous version of this method.
+ * If %NULL 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.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_name_has_owner:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * If a #GVariant array is returned then each item in the array is a
+ * possible value for the state.  If a #GVariant 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.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.NameHasOwner">NameHasOwner()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_name_has_owner_finish() to get the result of the operation.
+ * The return value (if non-%NULL) should be freed with
+ * g_variant_unref() when it is no longer required.
  *
- * See _g_freedesktop_dbus_call_name_has_owner_sync() for the synchronous, blocking version of this method.
+ * Returns: (nullable) (transfer full): the state range hint
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_name_has_owner_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_has_owner: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_name_has_owner().
- * @error: Return location for error or %NULL.
+ * g_action_group_get_action_state_type:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to query
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_name_has_owner().
+ * Queries the type of the state of the named action within
+ * @action_group.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_name_has_owner_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @out_has_owner: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * If the action is stateful then this function returns the
+ * #GVariantType of the state.  All calls to
+ * g_action_group_change_action_state() must give a #GVariant of this
+ * type and g_action_group_get_action_state() will return a #GVariant
+ * of the same type.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.NameHasOwner">NameHasOwner()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * If the action is not stateful then this function will return %NULL.
+ * In that case, g_action_group_get_action_state() will return %NULL
+ * and you must not call g_action_group_change_action_state().
  *
- * See _g_freedesktop_dbus_call_name_has_owner() for the asynchronous version of this method.
+ * The state type of a particular action will never change but it is
+ * possible for an action to be removed and for a new action to be added
+ * with the same name but a different state type.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (nullable): the state type, if the action is stateful
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_release_name:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_group_has_action:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of the action to check for
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ReleaseName">ReleaseName()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_release_name_finish() to get the result of the operation.
+ * Checks if the named action exists within @action_group.
  *
- * See _g_freedesktop_dbus_call_release_name_sync() for the synchronous, blocking version of this method.
+ * Returns: whether the named action exists
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_release_name_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_value: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_release_name().
- * @error: Return location for error or %NULL.
+ * g_action_group_list_actions:
+ * @action_group: a #GActionGroup
+ *
+ * Lists the actions contained within @action_group.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_release_name().
+ * The caller is responsible for freeing the list with g_strfreev() when
+ * it is no longer required.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer full): a %NULL-terminated array of the names of the
+ * actions in the group
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_call_release_name_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @out_value: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_group_query_action:
+ * @action_group: a #GActionGroup
+ * @action_name: the name of an action in the group
+ * @enabled: (out): if the action is presently enabled
+ * @parameter_type: (out) (optional): the parameter type, or %NULL if none needed
+ * @state_type: (out) (optional): the state type, or %NULL if stateless
+ * @state_hint: (out) (optional): the state hint, or %NULL if none
+ * @state: (out) (optional): the current state, or %NULL if stateless
+ *
+ * Queries all aspects of the named action within an @action_group.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ReleaseName">ReleaseName()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * This function acquires the information available from
+ * g_action_group_has_action(), g_action_group_get_action_enabled(),
+ * g_action_group_get_action_parameter_type(),
+ * g_action_group_get_action_state_type(),
+ * g_action_group_get_action_state_hint() and
+ * g_action_group_get_action_state() with a single function call.
  *
- * See _g_freedesktop_dbus_call_release_name() for the asynchronous version of this method.
+ * This provides two main benefits.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * _g_freedesktop_dbus_call_reload_config:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * The first is the improvement in efficiency that comes with not having
+ * to perform repeated lookups of the action in order to discover
+ * different things about it.  The second is that implementing
+ * #GActionGroup can now be done by only overriding this one virtual
+ * function.
+ *
+ * The interface provides a default implementation of this function that
+ * calls the individual functions, as required, to fetch the
+ * information.  The interface also provides default implementations of
+ * those functions that call this function.  All implementations,
+ * therefore, must override either this function or all of the others.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ReloadConfig">ReloadConfig()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_reload_config_finish() to get the result of the operation.
+ * If the action exists, %TRUE is returned and any of the requested
+ * fields (as indicated by having a non-%NULL reference passed in) are
+ * filled.  If the action doesn't exist, %FALSE is returned and the
+ * fields may or may not have been modified.
  *
- * See _g_freedesktop_dbus_call_reload_config_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE if the action exists, else %FALSE
+ * Since: 2.32
  */
 
 
 /**
- * _g_freedesktop_dbus_call_reload_config_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_reload_config().
- * @error: Return location for error or %NULL.
+ * g_action_map_add_action:
+ * @action_map: a #GActionMap
+ * @action: a #GAction
+ *
+ * Adds an action to the @action_map.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_reload_config().
+ * If the action map already contains an action with the same name
+ * as @action then the old action is dropped from the action map.
+ *
+ * The action map takes its own reference on @action.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.32
  */
 
 
 /**
- * _g_freedesktop_dbus_call_reload_config_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_map_add_action_entries:
+ * @action_map: a #GActionMap
+ * @entries: (array length=n_entries) (element-type GActionEntry): a pointer to
+ *           the first item in an array of #GActionEntry structs
+ * @n_entries: the length of @entries, or -1 if @entries is %NULL-terminated
+ * @user_data: the user data for signal connections
+ *
+ * A convenience function for creating multiple #GSimpleAction instances
+ * and adding them to a #GActionMap.
+ *
+ * Each action is constructed as per one #GActionEntry.
+ *
+ * |[<!-- language="C" -->
+ * static void
+ * activate_quit (GSimpleAction *simple,
+ *                GVariant      *parameter,
+ *                gpointer       user_data)
+ * {
+ *   exit (0);
+ * }
+ *
+ * static void
+ * activate_print_string (GSimpleAction *simple,
+ *                        GVariant      *parameter,
+ *                        gpointer       user_data)
+ * {
+ *   g_print ("%s\n", g_variant_get_string (parameter, NULL));
+ * }
+ *
+ * static GActionGroup *
+ * create_action_group (void)
+ * {
+ *   const GActionEntry entries[] = {
+ *     { "quit",         activate_quit              },
+ *     { "print-string", activate_print_string, "s" }
+ *   };
+ *   GSimpleActionGroup *group;
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.ReloadConfig">ReloadConfig()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *   group = g_simple_action_group_new ();
+ *   g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
  *
- * See _g_freedesktop_dbus_call_reload_config() for the asynchronous version of this method.
+ *   return G_ACTION_GROUP (group);
+ * }
+ * ]|
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.32
  */
 
 
 /**
- * _g_freedesktop_dbus_call_remove_match:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_rule: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_map_lookup_action:
+ * @action_map: a #GActionMap
+ * @action_name: the name of an action
+ *
+ * Looks up the action with the name @action_name in @action_map.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.RemoveMatch">RemoveMatch()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_remove_match_finish() to get the result of the operation.
+ * If no such action exists, returns %NULL.
  *
- * See _g_freedesktop_dbus_call_remove_match_sync() for the synchronous, blocking version of this method.
+ * Returns: (transfer none): a #GAction, or %NULL
+ * Since: 2.32
  */
 
 
 /**
- * _g_freedesktop_dbus_call_remove_match_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_remove_match().
- * @error: Return location for error or %NULL.
+ * g_action_map_remove_action:
+ * @action_map: a #GActionMap
+ * @action_name: the name of the action
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_remove_match().
+ * Removes the named action from the action map.
+ *
+ * If no action of this name is in the map then nothing happens.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.32
  */
 
 
 /**
- * _g_freedesktop_dbus_call_remove_match_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_rule: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_action_name_is_valid:
+ * @action_name: an potential action name
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.RemoveMatch">RemoveMatch()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Checks if @action_name is valid.
+ *
+ * @action_name is valid if it consists only of alphanumeric characters,
+ * plus '-' and '.'.  The empty string is not a valid action name.
  *
- * See _g_freedesktop_dbus_call_remove_match() for the asynchronous version of this method.
+ * It is an error to call this function with a non-utf8 @action_name.
+ * @action_name must not be %NULL.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if @action_name is valid
+ * Since: 2.38
  */
 
 
 /**
- * _g_freedesktop_dbus_call_request_name:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @arg_flags: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_action_parse_detailed_name:
+ * @detailed_name: a detailed action name
+ * @action_name: (out): the action name
+ * @target_value: (out): the target value, or %NULL for no target
+ * @error: a pointer to a %NULL #GError, or %NULL
+ *
+ * Parses a detailed action name into its separate name and target
+ * components.
+ *
+ * Detailed action names can have three formats.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.RequestName">RequestName()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_request_name_finish() to get the result of the operation.
+ * The first format is used to represent an action name with no target
+ * value and consists of just an action name containing no whitespace
+ * nor the characters ':', '(' or ')'.  For example: "app.action".
+ *
+ * The second format is used to represent an action with a target value
+ * that is a non-empty string consisting only of alphanumerics, plus '-'
+ * and '.'.  In that case, the action name and target value are
+ * separated by a double colon ("::").  For example:
+ * "app.action::target".
+ *
+ * The third format is used to represent an action with any type of
+ * target value, including strings.  The target value follows the action
+ * name, surrounded in parens.  For example: "app.action(42)".  The
+ * target value is parsed using g_variant_parse().  If a tuple-typed
+ * value is desired, it must be specified in the same way, resulting in
+ * two sets of parens, for example: "app.action((1,2,3))".  A string
+ * target can be specified this way as well: "app.action('target')".
+ * For strings, this third format must be used if * target value is
+ * empty or contains characters other than alphanumerics, '-' and '.'.
  *
- * See _g_freedesktop_dbus_call_request_name_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE if successful, else %FALSE with @error set
+ * Since: 2.38
  */
 
 
 /**
- * _g_freedesktop_dbus_call_request_name_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_value: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_request_name().
- * @error: Return location for error or %NULL.
+ * g_action_print_detailed_name:
+ * @action_name: a valid action name
+ * @target_value: (nullable): a #GVariant target value, or %NULL
+ *
+ * Formats a detailed action name from @action_name and @target_value.
+ *
+ * It is an error to call this function with an invalid action name.
+ *
+ * This function is the opposite of g_action_parse_detailed_name().
+ * It will produce a string that can be parsed back to the @action_name
+ * and @target_value by that function.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_request_name().
+ * See that function for the types of strings that will be printed by
+ * this function.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: a detailed format string
+ * Since: 2.38
  */
 
 
 /**
- * _g_freedesktop_dbus_call_request_name_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @arg_flags: Argument to pass with the method invocation.
- * @out_value: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.RequestName">RequestName()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_app_info_add_supports_type:
+ * @appinfo: a #GAppInfo.
+ * @content_type: a string.
+ * @error: a #GError.
  *
- * See _g_freedesktop_dbus_call_request_name() for the asynchronous version of this method.
+ * Adds a content type to the application information to indicate the
+ * application is capable of opening files with the given content type.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE on success, %FALSE on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_call_start_service_by_name:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @arg_flags: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_app_info_can_delete:
+ * @appinfo: a #GAppInfo
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.StartServiceByName">StartServiceByName()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_start_service_by_name_finish() to get the result of the operation.
+ * Obtains the information whether the #GAppInfo can be deleted.
+ * See g_app_info_delete().
  *
- * See _g_freedesktop_dbus_call_start_service_by_name_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE if @appinfo can be deleted
+ * Since: 2.20
  */
 
 
 /**
- * _g_freedesktop_dbus_call_start_service_by_name_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @out_value: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_start_service_by_name().
- * @error: Return location for error or %NULL.
+ * g_app_info_can_remove_supports_type:
+ * @appinfo: a #GAppInfo.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_start_service_by_name().
+ * Checks if a supported content type can be removed from an application.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if it is possible to remove supported
+ *     content types from a given @appinfo, %FALSE if not.
  */
 
 
 /**
- * _g_freedesktop_dbus_call_start_service_by_name_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_name: Argument to pass with the method invocation.
- * @arg_flags: Argument to pass with the method invocation.
- * @out_value: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_app_info_create_from_commandline:
+ * @commandline: (type filename): the commandline to use
+ * @application_name: (nullable): the application name, or %NULL to use @commandline
+ * @flags: flags that can specify details of the created #GAppInfo
+ * @error: a #GError location to store the error occurring, %NULL to ignore.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.StartServiceByName">StartServiceByName()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Creates a new #GAppInfo from the given information.
  *
- * See _g_freedesktop_dbus_call_start_service_by_name() for the asynchronous version of this method.
+ * Note that for @commandline, the quoting rules of the Exec key of the
+ * [freedesktop.org Desktop Entry Specification](http://freedesktop.org/Standards/desktop-entry-spec)
+ * are applied. For example, if the @commandline contains
+ * percent-encoded URIs, the percent-character must be doubled in order to prevent it from
+ * being swallowed by Exec key unquoting. See the specification for exact quoting rules.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer full): new #GAppInfo for given command.
  */
 
 
 /**
- * _g_freedesktop_dbus_call_update_activation_environment:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_environment: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_app_info_delete: (virtual do_delete)
+ * @appinfo: a #GAppInfo
+ *
+ * Tries to delete a #GAppInfo.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.UpdateActivationEnvironment">UpdateActivationEnvironment()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_call_update_activation_environment_finish() to get the result of the operation.
+ * On some platforms, there may be a difference between user-defined
+ * #GAppInfos which can be deleted, and system-wide ones which cannot.
+ * See g_app_info_can_delete().
  *
- * See _g_freedesktop_dbus_call_update_activation_environment_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE if @appinfo has been deleted
+ * Since: 2.20
  */
 
 
 /**
- * _g_freedesktop_dbus_call_update_activation_environment_finish:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_call_update_activation_environment().
- * @error: Return location for error or %NULL.
+ * g_app_info_dup:
+ * @appinfo: a #GAppInfo.
  *
- * Finishes an operation started with _g_freedesktop_dbus_call_update_activation_environment().
+ * Creates a duplicate of a #GAppInfo.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer full): a duplicate of @appinfo.
  */
 
 
 /**
- * _g_freedesktop_dbus_call_update_activation_environment_sync:
- * @proxy: A #_GFreedesktopDBusProxy.
- * @arg_environment: Argument to pass with the method invocation.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_app_info_equal:
+ * @appinfo1: the first #GAppInfo.
+ * @appinfo2: the second #GAppInfo.
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-DBus.UpdateActivationEnvironment">UpdateActivationEnvironment()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Checks if two #GAppInfos are equal.
  *
- * See _g_freedesktop_dbus_call_update_activation_environment() for the asynchronous version of this method.
+ * Note that the check <emphasis>may not</emphasis> compare each individual
+ * field, and only does an identity check. In case detecting changes in the
+ * contents is needed, program code must additionally compare relevant fields.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if @appinfo1 is equal to @appinfo2. %FALSE otherwise.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_add_match:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * g_app_info_get_all:
+ *
+ * Gets a list of all of the applications currently registered
+ * on this system.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.AddMatch">AddMatch()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * For desktop files, this includes applications that have
+ * `NoDisplay=true` set or are excluded from display by means
+ * of `OnlyShowIn` or `NotShowIn`. See g_app_info_should_show().
+ * The returned list does not include applications which have
+ * the `Hidden` key set.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (element-type GAppInfo) (transfer full): a newly allocated #GList of references to #GAppInfos.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_get_connection_selinux_security_context:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @security_context: Parameter to return.
+ * g_app_info_get_all_for_type:
+ * @content_type: the content type to find a #GAppInfo for
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionSELinuxSecurityContext">GetConnectionSELinuxSecurityContext()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets a list of all #GAppInfos for a given content type,
+ * including the recommended and fallback #GAppInfos. See
+ * g_app_info_get_recommended_for_type() and
+ * g_app_info_get_fallback_for_type().
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
+ *     for given @content_type or %NULL on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_get_connection_unix_process_id:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @pid: Parameter to return.
+ * g_app_info_get_commandline:
+ * @appinfo: a #GAppInfo
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixProcessID">GetConnectionUnixProcessID()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the commandline with which the application will be
+ * started.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (type filename): a string containing the @appinfo's commandline,
+ *     or %NULL if this information is not available
+ * Since: 2.20
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_get_connection_unix_user:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @uid: Parameter to return.
+ * g_app_info_get_default_for_type:
+ * @content_type: the content type to find a #GAppInfo for
+ * @must_support_uris: if %TRUE, the #GAppInfo is expected to
+ *     support URIs
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.GetConnectionUnixUser">GetConnectionUnixUser()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the default #GAppInfo for a given content type.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (transfer full): #GAppInfo for given @content_type or
+ *     %NULL on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_get_id:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @unique_id: Parameter to return.
+ * g_app_info_get_default_for_uri_scheme:
+ * @uri_scheme: a string containing a URI scheme.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.GetId">GetId()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the default application for handling URIs with
+ * the given URI scheme. A URI scheme is the initial part
+ * of the URI, up to but not including the ':', e.g. "http",
+ * "ftp" or "sip".
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (transfer full): #GAppInfo for given @uri_scheme or %NULL on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_get_name_owner:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @unique_name: Parameter to return.
+ * g_app_info_get_description:
+ * @appinfo: a #GAppInfo.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.GetNameOwner">GetNameOwner()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets a human-readable description of an installed application.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: a string containing a description of the
+ * application @appinfo, or %NULL if none.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_hello:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @assigned_name: Parameter to return.
+ * g_app_info_get_display_name:
+ * @appinfo: a #GAppInfo.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.Hello">Hello()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the display name of the application. The display name is often more
+ * descriptive to the user than the name itself.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: the display name of the application for @appinfo, or the name if
+ * no display name is available.
+ * Since: 2.24
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_list_activatable_names:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @activatable_names: Parameter to return.
+ * g_app_info_get_executable:
+ * @appinfo: a #GAppInfo
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.ListActivatableNames">ListActivatableNames()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the executable's name for the installed application.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (type filename): a string containing the @appinfo's application
+ * binaries name
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_list_names:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @names: Parameter to return.
+ * g_app_info_get_fallback_for_type:
+ * @content_type: the content type to find a #GAppInfo for
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.ListNames">ListNames()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets a list of fallback #GAppInfos for a given content type, i.e.
+ * those applications which claim to support the given content type
+ * by MIME type subclassing and not directly.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
+ *     for given @content_type or %NULL on error.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_list_queued_owners:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @queued_owners: Parameter to return.
+ * g_app_info_get_icon:
+ * @appinfo: a #GAppInfo.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.ListQueuedOwners">ListQueuedOwners()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the icon for the application.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (transfer none): the default #GIcon for @appinfo or %NULL
+ * if there is no default icon.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_name_has_owner:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @has_owner: Parameter to return.
+ * g_app_info_get_id:
+ * @appinfo: a #GAppInfo.
+ *
+ * Gets the ID of an application. An id is a string that
+ * identifies the application. The exact format of the id is
+ * platform dependent. For instance, on Unix this is the
+ * desktop file id from the xdg menu specification.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.NameHasOwner">NameHasOwner()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Note that the returned ID may be %NULL, depending on how
+ * the @appinfo has been constructed.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: a string containing the application's ID.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_release_name:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @value: Parameter to return.
+ * g_app_info_get_name:
+ * @appinfo: a #GAppInfo.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.ReleaseName">ReleaseName()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the installed name of the application.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: the name of the application for @appinfo.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_reload_config:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * g_app_info_get_recommended_for_type:
+ * @content_type: the content type to find a #GAppInfo for
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.ReloadConfig">ReloadConfig()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets a list of recommended #GAppInfos for a given content type, i.e.
+ * those applications which claim to support the given content type exactly,
+ * and not by MIME type subclassing.
+ * Note that the first application of the list is the last used one, i.e.
+ * the last one for which g_app_info_set_as_last_used_for_type() has been
+ * called.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
+ *     for given @content_type or %NULL on error.
+ * Since: 2.28
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_remove_match:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * g_app_info_get_supported_types:
+ * @appinfo: a #GAppInfo that can handle files
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.RemoveMatch">RemoveMatch()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Retrieves the list of content types that @app_info claims to support.
+ * If this information is not provided by the environment, this function
+ * will return %NULL.
+ * This function does not take in consideration associations added with
+ * g_app_info_add_supports_type(), but only those exported directly by
+ * the application.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (transfer none) (array zero-terminated=1) (element-type utf8):
+ *    a list of content types.
+ * Since: 2.34
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_request_name:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @value: Parameter to return.
+ * g_app_info_launch:
+ * @appinfo: a #GAppInfo
+ * @files: (nullable) (element-type GFile): a #GList of #GFile objects
+ * @context: (nullable): a #GAppLaunchContext or %NULL
+ * @error: a #GError
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.RequestName">RequestName()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Launches the application. Passes @files to the launched application
+ * as arguments, using the optional @context to get information
+ * about the details of the launcher (like what screen it is on).
+ * On error, @error will be set accordingly.
  *
- * This method will free @invocation, you cannot use it afterwards.
- */
-
-
-/**
- * _g_freedesktop_dbus_complete_start_service_by_name:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @value: Parameter to return.
+ * To launch the application without arguments pass a %NULL @files list.
+ *
+ * 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.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.StartServiceByName">StartServiceByName()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * 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
+ * g_app_info_launch_uris() instead.
+ *
+ * The launched application inherits the environment of the launching
+ * process, but it can be modified with g_app_launch_context_setenv()
+ * and g_app_launch_context_unsetenv().
+ *
+ * On UNIX, this function sets the `GIO_LAUNCHED_DESKTOP_FILE`
+ * environment variable with the path of the launched desktop file and
+ * `GIO_LAUNCHED_DESKTOP_FILE_PID` to the process id of the launched
+ * process. This can be used to ignore `GIO_LAUNCHED_DESKTOP_FILE`,
+ * should it be inherited by further processes. The `DISPLAY` and
+ * `DESKTOP_STARTUP_ID` environment variables are also set, based
+ * on information provided in @context.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: %TRUE on successful launch, %FALSE otherwise.
  */
 
 
 /**
- * _g_freedesktop_dbus_complete_update_activation_environment:
- * @object: A #_GFreedesktopDBus.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * g_app_info_launch_default_for_uri:
+ * @uri: the uri to show
+ * @context: (nullable): an optional #GAppLaunchContext
+ * @error: (nullable): return location for an error, or %NULL
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-DBus.UpdateActivationEnvironment">UpdateActivationEnvironment()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Utility function that launches the default application
+ * registered to handle the specified uri. Synchronous I/O
+ * is done on the uri to detect the type of the file if
+ * required.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: %TRUE on success, %FALSE on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_emit_name_acquired:
- * @object: A #_GFreedesktopDBus.
- * @arg_name: Argument to pass with the signal.
+ * g_app_info_launch_default_for_uri_async:
+ * @uri: the uri to show
+ * @context: (nullable): an optional #GAppLaunchContext
+ * @cancellable: (nullable): a #GCancellable
+ * @callback: (nullable): a #GASyncReadyCallback to call when the request is done
+ * @user_data: (nullable): data to pass to @callback
+ *
+ * Async version of g_app_info_launch_default_for_uri().
+ *
+ * This version is useful if you are interested in receiving
+ * error information in the case where the application is
+ * sandboxed and the portal may present an application chooser
+ * dialog to the user.
  *
- * Emits the <link linkend="gdbus-signal-org-freedesktop-DBus.NameAcquired">"NameAcquired"</link> D-Bus signal.
+ * Since: 2.50
  */
 
 
 /**
- * _g_freedesktop_dbus_emit_name_lost:
- * @object: A #_GFreedesktopDBus.
- * @arg_name: Argument to pass with the signal.
+ * g_app_info_launch_default_for_uri_finish:
+ * @result: a #GAsyncResult
+ * @error: (nullable): return location for an error, or %NULL
  *
- * Emits the <link linkend="gdbus-signal-org-freedesktop-DBus.NameLost">"NameLost"</link> D-Bus signal.
+ * Finishes an asynchronous launch-default-for-uri operation.
+ *
+ * Returns: %TRUE if the launch was successful, %FALSE if @error is set
+ * Since: 2.50
  */
 
 
 /**
- * _g_freedesktop_dbus_emit_name_owner_changed:
- * @object: A #_GFreedesktopDBus.
- * @arg_name: Argument to pass with the signal.
- * @arg_old_owner: Argument to pass with the signal.
- * @arg_new_owner: Argument to pass with the signal.
+ * g_app_info_launch_uris:
+ * @appinfo: a #GAppInfo
+ * @uris: (nullable) (element-type utf8): a #GList containing URIs to launch.
+ * @context: (nullable): a #GAppLaunchContext or %NULL
+ * @error: a #GError
+ *
+ * Launches the application. This passes the @uris to the launched application
+ * as arguments, using the optional @context to get information
+ * about the details of the launcher (like what screen it is on).
+ * On error, @error will be set accordingly.
+ *
+ * To launch the application without arguments pass a %NULL @uris list.
+ *
+ * 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.
  *
- * Emits the <link linkend="gdbus-signal-org-freedesktop-DBus.NameOwnerChanged">"NameOwnerChanged"</link> D-Bus signal.
+ * Returns: %TRUE on successful launch, %FALSE otherwise.
  */
 
 
 /**
- * _g_freedesktop_dbus_interface_info:
+ * g_app_info_monitor_get:
  *
- * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-DBus.top_of_page">org.freedesktop.DBus</link> D-Bus interface.
+ * Gets the #GAppInfoMonitor for the current thread-default main
+ * context.
  *
- * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ * The #GAppInfoMonitor will emit a "changed" signal in the
+ * thread-default main context whenever the list of installed
+ * applications (as reported by g_app_info_get_all()) may have changed.
+ *
+ * You must only call g_object_unref() on the return value from under
+ * the same main context as you created it.
+ *
+ * Returns: (transfer full): a reference to a #GAppInfoMonitor
+ * Since: 2.40
  */
 
 
 /**
- * _g_freedesktop_dbus_override_properties:
- * @klass: The class structure for a #GObject derived class.
- * @property_id_begin: The property id to assign to the first overridden property.
+ * g_app_info_remove_supports_type:
+ * @appinfo: a #GAppInfo.
+ * @content_type: a string.
+ * @error: a #GError.
  *
- * Overrides all #GObject properties in the #_GFreedesktopDBus interface for a concrete class.
- * The properties are overridden in the order they are defined.
+ * Removes a supported type from an application, if possible.
  *
- * Returns: The last property id.
+ * Returns: %TRUE on success, %FALSE on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_proxy_new:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
- *
- * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus.top_of_page">org.freedesktop.DBus</link>. See g_dbus_proxy_new() for more details.
+ * g_app_info_reset_type_associations:
+ * @content_type: a content type
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_proxy_new_finish() to get the result of the operation.
+ * Removes all changes to the type associations done by
+ * g_app_info_set_as_default_for_type(),
+ * g_app_info_set_as_default_for_extension(),
+ * g_app_info_add_supports_type() or
+ * g_app_info_remove_supports_type().
  *
- * See _g_freedesktop_dbus_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ * Since: 2.20
  */
 
 
 /**
- * _g_freedesktop_dbus_proxy_new_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_proxy_new().
- * @error: Return location for error or %NULL
+ * g_app_info_set_as_default_for_extension:
+ * @appinfo: a #GAppInfo.
+ * @extension: (type filename): a string containing the file extension
+ *     (without the dot).
+ * @error: a #GError.
  *
- * Finishes an operation started with _g_freedesktop_dbus_proxy_new().
+ * Sets the application as the default handler for the given file extension.
  *
- * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: %TRUE on success, %FALSE on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_proxy_new_for_bus:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
- *
- * Like _g_freedesktop_dbus_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ * g_app_info_set_as_default_for_type:
+ * @appinfo: a #GAppInfo.
+ * @content_type: the content type.
+ * @error: a #GError.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call _g_freedesktop_dbus_proxy_new_for_bus_finish() to get the result of the operation.
+ * Sets the application as the default handler for a given type.
  *
- * See _g_freedesktop_dbus_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ * Returns: %TRUE on success, %FALSE on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_proxy_new_for_bus_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to _g_freedesktop_dbus_proxy_new_for_bus().
- * @error: Return location for error or %NULL
+ * g_app_info_set_as_last_used_for_type:
+ * @appinfo: a #GAppInfo.
+ * @content_type: the content type.
+ * @error: a #GError.
  *
- * Finishes an operation started with _g_freedesktop_dbus_proxy_new_for_bus().
+ * Sets the application as the last used application for a given type.
+ * This will make the application appear as first in the list returned
+ * by g_app_info_get_recommended_for_type(), regardless of the default
+ * application for that content type.
  *
- * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: %TRUE on success, %FALSE on error.
  */
 
 
 /**
- * _g_freedesktop_dbus_proxy_new_for_bus_sync:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
- *
- * Like _g_freedesktop_dbus_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
- *
- * The calling thread is blocked until a reply is received.
+ * g_app_info_should_show:
+ * @appinfo: a #GAppInfo.
  *
- * See _g_freedesktop_dbus_proxy_new_for_bus() for the asynchronous version of this constructor.
+ * Checks if the application info should be shown in menus that
+ * list available applications.
  *
- * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: %TRUE if the @appinfo should be shown, %FALSE otherwise.
  */
 
 
 /**
- * _g_freedesktop_dbus_proxy_new_sync:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
- *
- * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus.top_of_page">org.freedesktop.DBus</link>. See g_dbus_proxy_new_sync() for more details.
- *
- * The calling thread is blocked until a reply is received.
+ * g_app_info_supports_files:
+ * @appinfo: a #GAppInfo.
  *
- * See _g_freedesktop_dbus_proxy_new() for the asynchronous version of this constructor.
+ * Checks if the application accepts files as arguments.
  *
- * Returns: (transfer full) (type _GFreedesktopDBusProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: %TRUE if the @appinfo supports files.
  */
 
 
 /**
- * _g_freedesktop_dbus_skeleton_new:
+ * g_app_info_supports_uris:
+ * @appinfo: a #GAppInfo.
  *
- * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-DBus.top_of_page">org.freedesktop.DBus</link>.
+ * Checks if the application supports reading files and directories from URIs.
  *
- * Returns: (transfer full) (type _GFreedesktopDBusSkeleton): The skeleton object.
+ * Returns: %TRUE if the @appinfo supports URIs.
  */
 
 
 /**
- * _g_io_module_extract_name:
- * @filename: filename of a GIOModule
+ * g_app_launch_context_get_display:
+ * @context: a #GAppLaunchContext
+ * @info: a #GAppInfo
+ * @files: (element-type GFile): a #GList of #GFile objects
  *
- * Extract the plugin name from its filename. It removes optional "lib" or
- * "libgio" prefix, and removes everything after the first dot. For example:
- * "libgiognutls.so" -> "gnutls".
+ * Gets the display string for the @context. This is used to ensure new
+ * applications are started on the same display as the launching
+ * application, by setting the `DISPLAY` environment variable.
  *
- * Returns: (transfer full): the module's name
+ * Returns: a display string for the display.
  */
 
 
 /**
- * _g_io_module_get_default:
- * @extension_point: the name of an extension point
- * @envvar: (nullable): the name of an environment variable to
- *     override the default implementation.
- * @verify_func: (nullable): a function to call to verify that
- *     a given implementation is usable in the current environment.
+ * g_app_launch_context_get_environment:
+ * @context: a #GAppLaunchContext
  *
- * Retrieves the default object implementing @extension_point.
+ * Gets the complete environment variable list to be passed to
+ * the child process when @context is used to launch an application.
+ * This is a %NULL-terminated array of strings, where each string has
+ * the form `KEY=VALUE`.
  *
- * If @envvar is not %NULL, and the environment variable with that
- * name is set, then the implementation it specifies will be tried
- * first. After that, or if @envvar is not set, all other
- * implementations will be tried in order of decreasing priority.
+ * Returns: (array zero-terminated=1) (element-type filename) (transfer full):
+ *     the child's environment
+ * Since: 2.32
+ */
+
+
+/**
+ * g_app_launch_context_get_startup_notify_id:
+ * @context: a #GAppLaunchContext
+ * @info: a #GAppInfo
+ * @files: (element-type GFile): a #GList of of #GFile objects
  *
- * If an extension point implementation implements #GInitable, then
- * that implementation will only be used if it initializes
- * successfully. Otherwise, if @verify_func is not %NULL, then it will
- * be called on each candidate implementation after construction, to
- * check if it is actually usable or not.
+ * Initiates startup notification for the application and returns the
+ * `DESKTOP_STARTUP_ID` for the launched operation, if supported.
  *
- * The result is cached after it is generated the first time, and
- * the function is thread-safe.
+ * Startup notification IDs are defined in the
+ * [FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt").
  *
- * Returns: (transfer none): an object implementing
- *     @extension_point, or %NULL if there are no usable
- *     implementations.
+ * Returns: a startup notification ID for the application, or %NULL if
+ *     not supported.
  */
 
 
 /**
- * _g_io_module_get_default_type:
- * @extension_point: the name of an extension point
- * @envvar: (nullable): the name of an environment variable to
- *     override the default implementation.
- * @is_supported_offset: a vtable offset, or zero
+ * g_app_launch_context_launch_failed:
+ * @context: a #GAppLaunchContext.
+ * @startup_notify_id: the startup notification id that was returned by g_app_launch_context_get_startup_notify_id().
  *
- * Retrieves the default class implementing @extension_point.
+ * Called when an application has failed to launch, so that it can cancel
+ * the application startup notification started in g_app_launch_context_get_startup_notify_id().
+ */
+
+
+/**
+ * g_app_launch_context_new:
  *
- * If @envvar is not %NULL, and the environment variable with that
- * name is set, then the implementation it specifies will be tried
- * first. After that, or if @envvar is not set, all other
- * implementations will be tried in order of decreasing priority.
+ * Creates a new application launch context. This is not normally used,
+ * instead you instantiate a subclass of this, such as #GdkAppLaunchContext.
  *
- * If @is_supported_offset is non-zero, then it is the offset into the
- * class vtable at which there is a function that takes no arguments and
- * returns a boolean.  This function will be called on each candidate
- * implementation to check if it is actually usable or not.
+ * Returns: a #GAppLaunchContext.
+ */
+
+
+/**
+ * g_app_launch_context_setenv:
+ * @context: a #GAppLaunchContext
+ * @variable: (type filename): the environment variable to set
+ * @value: (type filename): the value for to set the variable to.
  *
- * The result is cached after it is generated the first time, and
- * the function is thread-safe.
+ * Arranges for @variable to be set to @value in the child's
+ * environment when @context is used to launch an application.
  *
- * Returns: (transfer none): the type to instantiate to implement
- *     @extension_point, or %G_TYPE_INVALID if there are no usable
- *     implementations.
+ * Since: 2.32
  */
 
 
 /**
- * _g_poll_file_monitor_new:
- * @file: a #GFile.
+ * g_app_launch_context_unsetenv:
+ * @context: a #GAppLaunchContext
+ * @variable: (type filename): the environment variable to remove
  *
- * Polls @file for changes.
+ * Arranges for @variable to be unset in the child's environment
+ * when @context is used to launch an application.
  *
- * Returns: a new #GFileMonitor for the given #GFile.
+ * Since: 2.32
  */
 
 
 /**
- * g_action_activate:
- * @action: a #GAction
- * @parameter: (nullable): the parameter to the activation
+ * g_application_activate:
+ * @application: a #GApplication
  *
- * Activates the action.
+ * Activates the application.
  *
- * @parameter must be the correct type of parameter for the action (ie:
- * the parameter type given at construction time).  If the parameter
- * type was %NULL then @parameter must also be %NULL.
+ * In essence, this results in the #GApplication::activate signal being
+ * emitted in the primary instance.
  *
- * If the @parameter GVariant is floating, it is consumed.
+ * The application must be registered before calling this function.
  *
  * Since: 2.28
  */
 
 
 /**
- * g_action_change_state:
- * @action: a #GAction
- * @value: the new state
+ * g_application_add_main_option:
+ * @application: the #GApplication
+ * @long_name: the long name of an option used to specify it in a commandline
+ * @short_name: the short name of an option
+ * @flags: flags from #GOptionFlags
+ * @arg: the type of the option, as a #GOptionArg
+ * @description: the description for the option in `--help` output
+ * @arg_description: (nullable): the placeholder to use for the extra argument
+ *    parsed by the option in `--help` output
  *
- * Request for the state of @action to be changed to @value.
+ * Add an option to be handled by @application.
  *
- * The action must be stateful and @value must be of the correct type.
- * See g_action_get_state_type().
+ * Calling this function is the equivalent of calling
+ * g_application_add_main_option_entries() with a single #GOptionEntry
+ * that has its arg_data member set to %NULL.
  *
- * This call merely requests a change.  The action may refuse to change
- * its state or may change its state to something other than @value.
- * See g_action_get_state_hint().
+ * The parsed arguments will be packed into a #GVariantDict which
+ * is passed to #GApplication::handle-local-options. If
+ * %G_APPLICATION_HANDLES_COMMAND_LINE is set, then it will also
+ * be sent to the primary instance. See
+ * g_application_add_main_option_entries() for more details.
  *
- * If the @value GVariant is floating, it is consumed.
+ * See #GOptionEntry for more documentation of the arguments.
  *
- * Since: 2.30
+ * Since: 2.42
  */
 
 
 /**
- * g_action_get_enabled:
- * @action: a #GAction
+ * g_application_add_main_option_entries:
+ * @application: a #GApplication
+ * @entries: (array zero-terminated=1) (element-type GOptionEntry): a
+ *           %NULL-terminated list of #GOptionEntrys
  *
- * Checks if @action is currently enabled.
+ * Adds main option entries to be handled by @application.
  *
- * An action must be enabled in order to be activated or in order to
- * have its state changed from outside callers.
+ * This function is comparable to g_option_context_add_main_entries().
  *
- * Returns: whether the action is enabled
- * Since: 2.28
+ * After the commandline arguments are parsed, the
+ * #GApplication::handle-local-options signal will be emitted.  At this
+ * point, the application can inspect the values pointed to by @arg_data
+ * in the given #GOptionEntrys.
+ *
+ * Unlike #GOptionContext, #GApplication supports giving a %NULL
+ * @arg_data for a non-callback #GOptionEntry.  This results in the
+ * argument in question being packed into a #GVariantDict which is also
+ * passed to #GApplication::handle-local-options, where it can be
+ * inspected and modified.  If %G_APPLICATION_HANDLES_COMMAND_LINE is
+ * set, then the resulting dictionary is sent to the primary instance,
+ * where g_application_command_line_get_options_dict() will return it.
+ * This "packing" is done according to the type of the argument --
+ * booleans for normal flags, strings for strings, bytestrings for
+ * filenames, etc.  The packing only occurs if the flag is given (ie: we
+ * do not pack a "false" #GVariant in the case that a flag is missing).
+ *
+ * In general, it is recommended that all commandline arguments are
+ * parsed locally.  The options dictionary should then be used to
+ * transmit the result of the parsing to the primary instance, where
+ * g_variant_dict_lookup() can be used.  For local options, it is
+ * possible to either use @arg_data in the usual way, or to consult (and
+ * potentially remove) the option from the options dictionary.
+ *
+ * This function is new in GLib 2.40.  Before then, the only real choice
+ * was to send all of the commandline arguments (options and all) to the
+ * primary instance for handling.  #GApplication ignored them completely
+ * on the local side.  Calling this function "opts in" to the new
+ * behaviour, and in particular, means that unrecognised options will be
+ * treated as errors.  Unrecognised options have never been ignored when
+ * %G_APPLICATION_HANDLES_COMMAND_LINE is unset.
+ *
+ * If #GApplication::handle-local-options needs to see the list of
+ * filenames, then the use of %G_OPTION_REMAINING is recommended.  If
+ * @arg_data is %NULL then %G_OPTION_REMAINING can be used as a key into
+ * the options dictionary.  If you do use %G_OPTION_REMAINING then you
+ * need to handle these arguments for yourself because once they are
+ * consumed, they will no longer be visible to the default handling
+ * (which treats them as filenames to be opened).
+ *
+ * It is important to use the proper GVariant format when retrieving
+ * the options with g_variant_dict_lookup():
+ * - for %G_OPTION_ARG_NONE, use b
+ * - for %G_OPTION_ARG_STRING, use &s
+ * - for %G_OPTION_ARG_INT, use i
+ * - for %G_OPTION_ARG_INT64, use x
+ * - for %G_OPTION_ARG_DOUBLE, use d
+ * - for %G_OPTION_ARG_FILENAME, use ^ay
+ * - for %G_OPTION_ARG_STRING_ARRAY, use &as
+ * - for %G_OPTION_ARG_FILENAME_ARRAY, use ^aay
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_action_get_name:
- * @action: a #GAction
+ * g_application_add_option_group:
+ * @application: the #GApplication
+ * @group: (transfer full): a #GOptionGroup
  *
- * Queries the name of @action.
+ * Adds a #GOptionGroup to the commandline handling of @application.
  *
- * Returns: the name of the action
- * Since: 2.28
+ * This function is comparable to g_option_context_add_group().
+ *
+ * Unlike g_application_add_main_option_entries(), this function does
+ * not deal with %NULL @arg_data and never transmits options to the
+ * primary instance.
+ *
+ * The reason for that is because, by the time the options arrive at the
+ * primary instance, it is typically too late to do anything with them.
+ * Taking the GTK option group as an example: GTK will already have been
+ * initialised by the time the #GApplication::command-line handler runs.
+ * In the case that this is not the first-running instance of the
+ * application, the existing instance may already have been running for
+ * a very long time.
+ *
+ * This means that the options from #GOptionGroup are only really usable
+ * in the case that the instance of the application being run is the
+ * first instance.  Passing options like `--display=` or `--gdk-debug=`
+ * on future runs will have no effect on the existing primary instance.
+ *
+ * Calling this function will cause the options in the supplied option
+ * group to be parsed, but it does not cause you to be "opted in" to the
+ * new functionality whereby unrecognised options are rejected even if
+ * %G_APPLICATION_HANDLES_COMMAND_LINE was given.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_action_get_parameter_type:
- * @action: a #GAction
- *
- * Queries the type of the parameter that must be given when activating
- * @action.
+ * g_application_bind_busy_property:
+ * @application: a #GApplication
+ * @object: (type GObject.Object): a #GObject
+ * @property: the name of a boolean property of @object
  *
- * When activating the action using g_action_activate(), the #GVariant
- * given to that function must be of the type returned by this function.
+ * Marks @application as busy (see g_application_mark_busy()) while
+ * @property on @object is %TRUE.
  *
- * In the case that this function returns %NULL, you must not give any
- * #GVariant, but %NULL instead.
+ * The binding holds a reference to @application while it is active, but
+ * not to @object. Instead, the binding is destroyed when @object is
+ * finalized.
  *
- * Returns: (nullable): the parameter type
- * Since: 2.28
+ * Since: 2.44
  */
 
 
 /**
- * g_action_get_state:
- * @action: a #GAction
- *
- * Queries the current state of @action.
+ * g_application_command_line_create_file_for_arg:
+ * @cmdline: a #GApplicationCommandLine
+ * @arg: (type filename): an argument from @cmdline
  *
- * If the action is not stateful then %NULL will be returned.  If the
- * action is stateful then the type of the return value is the type
- * given by g_action_get_state_type().
+ * Creates a #GFile corresponding to a filename that was given as part
+ * of the invocation of @cmdline.
  *
- * The return value (if non-%NULL) should be freed with
- * g_variant_unref() when it is no longer required.
+ * This differs from g_file_new_for_commandline_arg() in that it
+ * resolves relative pathnames using the current working directory of
+ * the invoking process rather than the local process.
  *
- * Returns: (transfer full): the current state of the action
- * Since: 2.28
+ * Returns: (transfer full): a new #GFile
+ * Since: 2.36
  */
 
 
 /**
- * g_action_get_state_hint:
- * @action: a #GAction
- *
- * Requests a hint about the valid range of values for the state of
- * @action.
+ * g_application_command_line_get_arguments:
+ * @cmdline: a #GApplicationCommandLine
+ * @argc: (out) (optional): the length of the arguments array, or %NULL
  *
- * If %NULL 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.
+ * Gets the list of arguments that was passed on the command line.
  *
- * If a #GVariant array is returned then each item in the array is a
- * possible value for the state.  If a #GVariant pair (ie: two-tuple) is
- * returned then the tuple specifies the inclusive lower and upper bound
- * of valid values for the state.
+ * The strings in the array may contain non-UTF-8 data on UNIX (such as
+ * filenames or arguments given in the system locale) but are always in
+ * UTF-8 on Windows.
  *
- * 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.
+ * If you wish to use the return value with #GOptionContext, you must
+ * use g_option_context_parse_strv().
  *
- * The return value (if non-%NULL) should be freed with
- * g_variant_unref() when it is no longer required.
+ * The return value is %NULL-terminated and should be freed using
+ * g_strfreev().
  *
- * Returns: (nullable) (transfer full): the state range hint
+ * Returns: (array length=argc) (element-type filename) (transfer full):
+ *      the string array containing the arguments (the argv)
  * Since: 2.28
  */
 
 
 /**
- * g_action_get_state_type:
- * @action: a #GAction
+ * g_application_command_line_get_cwd:
+ * @cmdline: a #GApplicationCommandLine
  *
- * Queries the type of the state of @action.
+ * Gets the working directory of the command line invocation.
+ * The string may contain non-utf8 data.
  *
- * If the action is stateful (e.g. created with
- * g_simple_action_new_stateful()) then this function returns the
- * #GVariantType of the state.  This is the type of the initial value
- * given as the state. All calls to g_action_change_state() must give a
- * #GVariant of this type and g_action_get_state() will return a
- * #GVariant of the same type.
+ * It is possible that the remote application did not send a working
+ * directory, so this may be %NULL.
  *
- * If the action is not stateful (e.g. created with g_simple_action_new())
- * then this function will return %NULL. In that case, g_action_get_state()
- * will return %NULL and you must not call g_action_change_state().
+ * The return value should not be modified or freed and is valid for as
+ * long as @cmdline exists.
  *
- * Returns: (nullable): the state type, if the action is stateful
+ * Returns: (nullable) (type filename): the current directory, or %NULL
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_action_added:
- * @action_group: a #GActionGroup
- * @action_name: the name of an action in the group
+ * g_application_command_line_get_environ:
+ * @cmdline: a #GApplicationCommandLine
  *
- * Emits the #GActionGroup::action-added signal on @action_group.
+ * Gets the contents of the 'environ' variable of the command line
+ * invocation, as would be returned by g_get_environ(), ie as a
+ * %NULL-terminated list of strings in the form 'NAME=VALUE'.
+ * The strings may contain non-utf8 data.
  *
- * This function should only be called by #GActionGroup implementations.
+ * The remote application usually does not send an environment.  Use
+ * %G_APPLICATION_SEND_ENVIRONMENT to affect that.  Even with this flag
+ * set it is possible that the environment is still not available (due
+ * to invocation messages from other applications).
+ *
+ * The return value should not be modified or freed and is valid for as
+ * long as @cmdline exists.
+ *
+ * See g_application_command_line_getenv() if you are only interested
+ * in the value of a single environment variable.
  *
+ * Returns: (array zero-terminated=1) (element-type filename) (transfer none):
+ *     the environment strings, or %NULL if they were not sent
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_action_enabled_changed:
- * @action_group: a #GActionGroup
- * @action_name: the name of an action in the group
- * @enabled: whether or not the action is now enabled
- *
- * Emits the #GActionGroup::action-enabled-changed signal on @action_group.
+ * g_application_command_line_get_exit_status:
+ * @cmdline: a #GApplicationCommandLine
  *
- * This function should only be called by #GActionGroup implementations.
+ * Gets the exit status of @cmdline.  See
+ * g_application_command_line_set_exit_status() for more information.
  *
+ * Returns: the exit status
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_action_removed:
- * @action_group: a #GActionGroup
- * @action_name: the name of an action in the group
- *
- * Emits the #GActionGroup::action-removed signal on @action_group.
+ * g_application_command_line_get_is_remote:
+ * @cmdline: a #GApplicationCommandLine
  *
- * This function should only be called by #GActionGroup implementations.
+ * Determines if @cmdline represents a remote invocation.
  *
+ * Returns: %TRUE if the invocation was remote
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_action_state_changed:
- * @action_group: a #GActionGroup
- * @action_name: the name of an action in the group
- * @state: the new state of the named action
+ * g_application_command_line_get_options_dict:
+ * @cmdline: a #GApplicationCommandLine
  *
- * Emits the #GActionGroup::action-state-changed signal on @action_group.
+ * Gets the options there were passed to g_application_command_line().
  *
- * This function should only be called by #GActionGroup implementations.
- *
- * Since: 2.28
- */
-
-
-/**
- * g_action_group_activate_action:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to activate
- * @parameter: (nullable): parameters to the activation
- *
- * Activate the named action within @action_group.
+ * If you did not override local_command_line() then these are the same
+ * options that were parsed according to the #GOptionEntrys added to the
+ * application with g_application_add_main_option_entries() and possibly
+ * modified from your GApplication::handle-local-options handler.
  *
- * If the action is expecting a parameter, then the correct type of
- * parameter must be given as @parameter.  If the action is expecting no
- * parameters then @parameter must be %NULL.  See
- * g_action_group_get_action_parameter_type().
+ * If no options were sent then an empty dictionary is returned so that
+ * you don't need to check for %NULL.
  *
- * Since: 2.28
+ * Returns: (transfer none): a #GVariantDict with the options
+ * Since: 2.40
  */
 
 
 /**
- * g_action_group_change_action_state:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to request the change on
- * @value: the new state
- *
- * Request for the state of the named action within @action_group to be
- * changed to @value.
+ * g_application_command_line_get_platform_data:
+ * @cmdline: #GApplicationCommandLine
  *
- * The action must be stateful and @value must be of the correct type.
- * See g_action_group_get_action_state_type().
+ * Gets the platform data associated with the invocation of @cmdline.
  *
- * This call merely requests a change.  The action may refuse to change
- * its state or may change its state to something other than @value.
- * See g_action_group_get_action_state_hint().
+ * This is a #GVariant dictionary containing information about the
+ * context in which the invocation occurred.  It typically contains
+ * information like the current working directory and the startup
+ * notification ID.
  *
- * If the @value GVariant is floating, it is consumed.
+ * For local invocation, it will be %NULL.
  *
+ * Returns: (nullable): the platform data, or %NULL
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_get_action_enabled:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to query
+ * g_application_command_line_get_stdin:
+ * @cmdline: a #GApplicationCommandLine
  *
- * Checks if the named action within @action_group is currently enabled.
+ * Gets the stdin of the invoking process.
  *
- * An action must be enabled in order to be activated or in order to
- * have its state changed from outside callers.
+ * The #GInputStream can be used to read data passed to the standard
+ * input of the invoking process.
+ * This doesn't work on all platforms.  Presently, it is only available
+ * on UNIX when using a DBus daemon capable of passing file descriptors.
+ * If stdin is not available then %NULL will be returned.  In the
+ * future, support may be expanded to other platforms.
  *
- * Returns: whether or not the action is currently enabled
- * Since: 2.28
+ * You must only call this function once per commandline invocation.
+ *
+ * Returns: (transfer full): a #GInputStream for stdin
+ * Since: 2.34
  */
 
 
 /**
- * g_action_group_get_action_parameter_type:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to query
- *
- * Queries the type of the parameter that must be given when activating
- * the named action within @action_group.
+ * g_application_command_line_getenv:
+ * @cmdline: a #GApplicationCommandLine
+ * @name: (type filename): the environment variable to get
  *
- * When activating the action using g_action_group_activate_action(),
- * the #GVariant given to that function must be of the type returned
- * by this function.
+ * Gets the value of a particular environment variable of the command
+ * line invocation, as would be returned by g_getenv().  The strings may
+ * contain non-utf8 data.
  *
- * In the case that this function returns %NULL, you must not give any
- * #GVariant, but %NULL instead.
+ * The remote application usually does not send an environment.  Use
+ * %G_APPLICATION_SEND_ENVIRONMENT to affect that.  Even with this flag
+ * set it is possible that the environment is still not available (due
+ * to invocation messages from other applications).
  *
- * The parameter type of a particular action will never change but it is
- * possible for an action to be removed and for a new action to be added
- * with the same name but a different parameter type.
+ * The return value should not be modified or freed and is valid for as
+ * long as @cmdline exists.
  *
- * Returns: (nullable): the parameter type
+ * Returns: the value of the variable, or %NULL if unset or unsent
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_get_action_state:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to query
- *
- * Queries the current state of the named action within @action_group.
+ * g_application_command_line_print:
+ * @cmdline: a #GApplicationCommandLine
+ * @format: a printf-style format string
+ * @...: arguments, as per @format
  *
- * If the action is not stateful then %NULL will be returned.  If the
- * action is stateful then the type of the return value is the type
- * given by g_action_group_get_action_state_type().
+ * Formats a message and prints it using the stdout print handler in the
+ * invoking process.
  *
- * The return value (if non-%NULL) should be freed with
- * g_variant_unref() when it is no longer required.
+ * If @cmdline is a local invocation then this is exactly equivalent to
+ * g_print().  If @cmdline is remote then this is equivalent to calling
+ * g_print() in the invoking process.
  *
- * Returns: (nullable): the current state of the action
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_get_action_state_hint:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to query
- *
- * Requests a hint about the valid range of values for the state of the
- * named action within @action_group.
- *
- * If %NULL 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 #GVariant array is returned then each item in the array is a
- * possible value for the state.  If a #GVariant pair (ie: two-tuple) is
- * returned then the tuple specifies the inclusive lower and upper bound
- * of valid values for the state.
+ * g_application_command_line_printerr:
+ * @cmdline: a #GApplicationCommandLine
+ * @format: a printf-style format string
+ * @...: arguments, as per @format
  *
- * 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.
+ * Formats a message and prints it using the stderr print handler in the
+ * invoking process.
  *
- * The return value (if non-%NULL) should be freed with
- * g_variant_unref() when it is no longer required.
+ * If @cmdline is a local invocation then this is exactly equivalent to
+ * g_printerr().  If @cmdline is remote then this is equivalent to
+ * calling g_printerr() in the invoking process.
  *
- * Returns: (nullable) (transfer full): the state range hint
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_get_action_state_type:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to query
+ * g_application_command_line_set_exit_status:
+ * @cmdline: a #GApplicationCommandLine
+ * @exit_status: the exit status
  *
- * Queries the type of the state of the named action within
- * @action_group.
+ * Sets the exit status that will be used when the invoking process
+ * exits.
  *
- * If the action is stateful then this function returns the
- * #GVariantType of the state.  All calls to
- * g_action_group_change_action_state() must give a #GVariant of this
- * type and g_action_group_get_action_state() will return a #GVariant
- * of the same type.
+ * The return value of the #GApplication::command-line signal is
+ * passed to this function when the handler returns.  This is the usual
+ * way of setting the exit status.
  *
- * If the action is not stateful then this function will return %NULL.
- * In that case, g_action_group_get_action_state() will return %NULL
- * and you must not call g_action_group_change_action_state().
+ * In the event that you want the remote invocation to continue running
+ * and want to decide on the exit status in the future, you can use this
+ * call.  For the case of a remote invocation, the remote process will
+ * typically exit when the last reference is dropped on @cmdline.  The
+ * exit status of the remote process will be equal to the last value
+ * that was set with this function.
  *
- * The state type of a particular action will never change but it is
- * possible for an action to be removed and for a new action to be added
- * with the same name but a different state type.
+ * In the case that the commandline invocation is local, the situation
+ * is slightly more complicated.  If the commandline invocation results
+ * in the mainloop running (ie: because the use-count of the application
+ * increased to a non-zero value) then the application is considered to
+ * have been 'successful' in a certain sense, and the exit status is
+ * always zero.  If the application use count is zero, though, the exit
+ * status of the local #GApplicationCommandLine is used.
  *
- * Returns: (nullable): the state type, if the action is stateful
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_has_action:
- * @action_group: a #GActionGroup
- * @action_name: the name of the action to check for
+ * g_application_get_application_id:
+ * @application: a #GApplication
  *
- * Checks if the named action exists within @action_group.
+ * Gets the unique identifier for @application.
  *
- * Returns: whether the named action exists
+ * Returns: the identifier for @application, owned by @application
  * Since: 2.28
  */
 
 
 /**
- * g_action_group_list_actions:
- * @action_group: a #GActionGroup
+ * g_application_get_dbus_connection:
+ * @application: a #GApplication
  *
- * Lists the actions contained within @action_group.
+ * Gets the #GDBusConnection being used by the application, or %NULL.
  *
- * The caller is responsible for freeing the list with g_strfreev() when
- * it is no longer required.
+ * If #GApplication is using its D-Bus backend then this function will
+ * return the #GDBusConnection being used for uniqueness and
+ * communication with the desktop environment and other instances of the
+ * application.
  *
- * Returns: (transfer full): a %NULL-terminated array of the names of the
- * actions in the group
- * Since: 2.28
+ * If #GApplication is not using D-Bus then this function will return
+ * %NULL.  This includes the situation where the D-Bus backend would
+ * normally be in use but we were unable to connect to the bus.
+ *
+ * This function must not be called before the application has been
+ * registered.  See g_application_get_is_registered().
+ *
+ * Returns: (transfer none): a #GDBusConnection, or %NULL
+ * Since: 2.34
  */
 
 
 /**
- * g_action_group_query_action:
- * @action_group: a #GActionGroup
- * @action_name: the name of an action in the group
- * @enabled: (out): if the action is presently enabled
- * @parameter_type: (out) (optional): the parameter type, or %NULL if none needed
- * @state_type: (out) (optional): the state type, or %NULL if stateless
- * @state_hint: (out) (optional): the state hint, or %NULL if none
- * @state: (out) (optional): the current state, or %NULL if stateless
- *
- * Queries all aspects of the named action within an @action_group.
- *
- * This function acquires the information available from
- * g_action_group_has_action(), g_action_group_get_action_enabled(),
- * g_action_group_get_action_parameter_type(),
- * g_action_group_get_action_state_type(),
- * g_action_group_get_action_state_hint() and
- * g_action_group_get_action_state() with a single function call.
+ * g_application_get_dbus_object_path:
+ * @application: a #GApplication
  *
- * This provides two main benefits.
+ * Gets the D-Bus object path being used by the application, or %NULL.
  *
- * The first is the improvement in efficiency that comes with not having
- * to perform repeated lookups of the action in order to discover
- * different things about it.  The second is that implementing
- * #GActionGroup can now be done by only overriding this one virtual
- * function.
+ * If #GApplication is using its D-Bus backend then this function will
+ * return the D-Bus object path that #GApplication is using.  If the
+ * application is the primary instance then there is an object published
+ * at this path.  If the application is not the primary instance then
+ * the result of this function is undefined.
  *
- * The interface provides a default implementation of this function that
- * calls the individual functions, as required, to fetch the
- * information.  The interface also provides default implementations of
- * those functions that call this function.  All implementations,
- * therefore, must override either this function or all of the others.
+ * If #GApplication is not using D-Bus then this function will return
+ * %NULL.  This includes the situation where the D-Bus backend would
+ * normally be in use but we were unable to connect to the bus.
  *
- * If the action exists, %TRUE is returned and any of the requested
- * fields (as indicated by having a non-%NULL reference passed in) are
- * filled.  If the action doesn't exist, %FALSE is returned and the
- * fields may or may not have been modified.
+ * This function must not be called before the application has been
+ * registered.  See g_application_get_is_registered().
  *
- * Returns: %TRUE if the action exists, else %FALSE
- * Since: 2.32
+ * Returns: the object path, or %NULL
+ * Since: 2.34
  */
 
 
 /**
- * g_action_map_add_action:
- * @action_map: a #GActionMap
- * @action: a #GAction
+ * g_application_get_default:
  *
- * Adds an action to the @action_map.
+ * Returns the default #GApplication instance for this process.
  *
- * If the action map already contains an action with the same name
- * as @action then the old action is dropped from the action map.
+ * Normally there is only one #GApplication per process and it becomes
+ * the default when it is created.  You can exercise more control over
+ * this by using g_application_set_default().
  *
- * The action map takes its own reference on @action.
+ * If there is no default application then %NULL is returned.
  *
+ * Returns: (transfer none): the default application for this process, or %NULL
  * Since: 2.32
  */
 
 
 /**
- * g_action_map_add_action_entries:
- * @action_map: a #GActionMap
- * @entries: (array length=n_entries) (element-type GActionEntry): a pointer to
- *           the first item in an array of #GActionEntry structs
- * @n_entries: the length of @entries, or -1 if @entries is %NULL-terminated
- * @user_data: the user data for signal connections
- *
- * A convenience function for creating multiple #GSimpleAction instances
- * and adding them to a #GActionMap.
- *
- * Each action is constructed as per one #GActionEntry.
- *
- * |[<!-- language="C" -->
- * static void
- * activate_quit (GSimpleAction *simple,
- *                GVariant      *parameter,
- *                gpointer       user_data)
- * {
- *   exit (0);
- * }
- *
- * static void
- * activate_print_string (GSimpleAction *simple,
- *                        GVariant      *parameter,
- *                        gpointer       user_data)
- * {
- *   g_print ("%s\n", g_variant_get_string (parameter, NULL));
- * }
- *
- * static GActionGroup *
- * create_action_group (void)
- * {
- *   const GActionEntry entries[] = {
- *     { "quit",         activate_quit              },
- *     { "print-string", activate_print_string, "s" }
- *   };
- *   GSimpleActionGroup *group;
+ * g_application_get_flags:
+ * @application: a #GApplication
  *
- *   group = g_simple_action_group_new ();
- *   g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
+ * Gets the flags for @application.
  *
- *   return G_ACTION_GROUP (group);
- * }
- * ]|
+ * See #GApplicationFlags.
  *
- * Since: 2.32
+ * Returns: the flags for @application
+ * Since: 2.28
  */
 
 
 /**
- * g_action_map_lookup_action:
- * @action_map: a #GActionMap
- * @action_name: the name of an action
+ * g_application_get_inactivity_timeout:
+ * @application: a #GApplication
  *
- * Looks up the action with the name @action_name in @action_map.
+ * Gets the current inactivity timeout for the application.
  *
- * If no such action exists, returns %NULL.
+ * This is the amount of time (in milliseconds) after the last call to
+ * g_application_release() before the application stops running.
  *
- * Returns: (transfer none): a #GAction, or %NULL
- * Since: 2.32
+ * Returns: the timeout, in milliseconds
+ * Since: 2.28
  */
 
 
 /**
- * g_action_map_remove_action:
- * @action_map: a #GActionMap
- * @action_name: the name of the action
- *
- * Removes the named action from the action map.
+ * g_application_get_is_busy:
+ * @application: a #GApplication
  *
- * If no action of this name is in the map then nothing happens.
+ * Gets the application's current busy state, as set through
+ * g_application_mark_busy() or g_application_bind_busy_property().
  *
- * Since: 2.32
+ * Returns: %TRUE if @application is currenty marked as busy
+ * Since: 2.44
  */
 
 
 /**
- * g_action_name_is_valid:
- * @action_name: an potential action name
- *
- * Checks if @action_name is valid.
+ * g_application_get_is_registered:
+ * @application: a #GApplication
  *
- * @action_name is valid if it consists only of alphanumeric characters,
- * plus '-' and '.'.  The empty string is not a valid action name.
+ * Checks if @application is registered.
  *
- * It is an error to call this function with a non-utf8 @action_name.
- * @action_name must not be %NULL.
+ * An application is registered if g_application_register() has been
+ * successfully called.
  *
- * Returns: %TRUE if @action_name is valid
- * Since: 2.38
+ * Returns: %TRUE if @application is registered
+ * Since: 2.28
  */
 
 
 /**
- * g_action_parse_detailed_name:
- * @detailed_name: a detailed action name
- * @action_name: (out): the action name
- * @target_value: (out): the target value, or %NULL for no target
- * @error: a pointer to a %NULL #GError, or %NULL
- *
- * Parses a detailed action name into its separate name and target
- * components.
- *
- * Detailed action names can have three formats.
+ * g_application_get_is_remote:
+ * @application: a #GApplication
  *
- * The first format is used to represent an action name with no target
- * value and consists of just an action name containing no whitespace
- * nor the characters ':', '(' or ')'.  For example: "app.action".
+ * Checks if @application is remote.
  *
- * The second format is used to represent an action with a target value
- * that is a non-empty string consisting only of alphanumerics, plus '-'
- * and '.'.  In that case, the action name and target value are
- * separated by a double colon ("::").  For example:
- * "app.action::target".
+ * If @application is remote then it means that another instance of
+ * application already exists (the 'primary' instance).  Calls to
+ * perform actions on @application will result in the actions being
+ * performed by the primary instance.
  *
- * The third format is used to represent an action with any type of
- * target value, including strings.  The target value follows the action
- * name, surrounded in parens.  For example: "app.action(42)".  The
- * target value is parsed using g_variant_parse().  If a tuple-typed
- * value is desired, it must be specified in the same way, resulting in
- * two sets of parens, for example: "app.action((1,2,3))".  A string
- * target can be specified this way as well: "app.action('target')".
- * For strings, this third format must be used if * target value is
- * empty or contains characters other than alphanumerics, '-' and '.'.
+ * The value of this property cannot be accessed before
+ * g_application_register() has been called.  See
+ * g_application_get_is_registered().
  *
- * Returns: %TRUE if successful, else %FALSE with @error set
- * Since: 2.38
+ * Returns: %TRUE if @application is remote
+ * Since: 2.28
  */
 
 
 /**
- * g_action_print_detailed_name:
- * @action_name: a valid action name
- * @target_value: (nullable): a #GVariant target value, or %NULL
- *
- * Formats a detailed action name from @action_name and @target_value.
- *
- * It is an error to call this function with an invalid action name.
+ * g_application_get_resource_base_path:
+ * @application: a #GApplication
  *
- * This function is the opposite of g_action_parse_detailed_name().
- * It will produce a string that can be parsed back to the @action_name
- * and @target_value by that function.
+ * Gets the resource base path of @application.
  *
- * See that function for the types of strings that will be printed by
- * this function.
+ * See g_application_set_resource_base_path() for more information.
  *
- * Returns: a detailed format string
- * Since: 2.38
+ * Returns: (nullable): the base resource path, if one is set
+ * Since: 2.42
  */
 
 
 /**
- * g_app_info_add_supports_type:
- * @appinfo: a #GAppInfo.
- * @content_type: a string.
- * @error: a #GError.
- *
- * Adds a content type to the application information to indicate the
- * application is capable of opening files with the given content type.
+ * g_application_hold:
+ * @application: a #GApplication
  *
- * Returns: %TRUE on success, %FALSE on error.
- */
-
-
-/**
- * g_app_info_can_delete:
- * @appinfo: a #GAppInfo
+ * Increases the use count of @application.
  *
- * Obtains the information whether the #GAppInfo can be deleted.
- * See g_app_info_delete().
+ * Use this function to indicate that the application has a reason to
+ * continue to run.  For example, g_application_hold() is called by GTK+
+ * when a toplevel window is on the screen.
  *
- * Returns: %TRUE if @appinfo can be deleted
- * Since: 2.20
+ * To cancel the hold, call g_application_release().
  */
 
 
 /**
- * g_app_info_can_remove_supports_type:
- * @appinfo: a #GAppInfo.
+ * g_application_id_is_valid:
+ * @application_id: a potential application identifier
  *
- * Checks if a supported content type can be removed from an application.
+ * Checks if @application_id is a valid application identifier.
  *
- * Returns: %TRUE if it is possible to remove supported
- *     content types from a given @appinfo, %FALSE if not.
- */
-
-
-/**
- * g_app_info_create_from_commandline:
- * @commandline: (type filename): the commandline to use
- * @application_name: (nullable): the application name, or %NULL to use @commandline
- * @flags: flags that can specify details of the created #GAppInfo
- * @error: a #GError location to store the error occurring, %NULL to ignore.
+ * A valid ID is required for calls to g_application_new() and
+ * g_application_set_application_id().
  *
- * Creates a new #GAppInfo from the given information.
+ * Application identifiers follow the same format as
+ * [D-Bus well-known bus names](https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus).
+ * For convenience, the restrictions on application identifiers are
+ * reproduced here:
  *
- * Note that for @commandline, the quoting rules of the Exec key of the
- * [freedesktop.org Desktop Entry Specification](http://freedesktop.org/Standards/desktop-entry-spec)
- * are applied. For example, if the @commandline contains
- * percent-encoded URIs, the percent-character must be doubled in order to prevent it from
- * being swallowed by Exec key unquoting. See the specification for exact quoting rules.
+ * - Application identifiers are composed of 1 or more elements separated by a
+ *   period (`.`) character. All elements must contain at least one character.
  *
- * Returns: (transfer full): new #GAppInfo for given command.
- */
-
-
-/**
- * g_app_info_delete: (virtual do_delete)
- * @appinfo: a #GAppInfo
+ * - Each element must only contain the ASCII characters `[A-Z][a-z][0-9]_-`,
+ *   with `-` discouraged in new application identifiers. Each element must not
+ *   begin with a digit.
  *
- * Tries to delete a #GAppInfo.
+ * - Application identifiers must contain at least one `.` (period) character
+ *   (and thus at least two elements).
  *
- * On some platforms, there may be a difference between user-defined
- * #GAppInfos which can be deleted, and system-wide ones which cannot.
- * See g_app_info_can_delete().
+ * - Application identifiers must not begin with a `.` (period) character.
  *
- * Returns: %TRUE if @appinfo has been deleted
- * Since: 2.20
- */
-
-
-/**
- * g_app_info_dup:
- * @appinfo: a #GAppInfo.
+ * - Application identifiers must not exceed 255 characters.
  *
- * Creates a duplicate of a #GAppInfo.
+ * Note that the hyphen (`-`) character is allowed in application identifiers,
+ * but is problematic or not allowed in various specifications and APIs that
+ * refer to D-Bus, such as
+ * [Flatpak application IDs](http://docs.flatpak.org/en/latest/introduction.html#identifiers),
+ * the
+ * [`DBusActivatable` interface in the Desktop Entry Specification](https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#dbus),
+ * and the convention that an application's "main" interface and object path
+ * resemble its application identifier and bus name. To avoid situations that
+ * require special-case handling, it is recommended that new application
+ * identifiers consistently replace hyphens with underscores.
  *
- * Returns: (transfer full): a duplicate of @appinfo.
+ * Like D-Bus interface names, application identifiers should start with the
+ * reversed DNS domain name of the author of the interface (in lower-case), and
+ * it is conventional for the rest of the application identifier to consist of
+ * words run together, with initial capital letters.
+ *
+ * As with D-Bus interface names, if the author's DNS domain name contains
+ * hyphen/minus characters they should be replaced by underscores, and if it
+ * contains leading digits they should be escaped by prepending an underscore.
+ * For example, if the owner of 7-zip.org used an application identifier for an
+ * archiving application, it might be named `org._7_zip.Archiver`.
+ *
+ * Returns: %TRUE if @application_id is valid
  */
 
 
 /**
- * g_app_info_equal:
- * @appinfo1: the first #GAppInfo.
- * @appinfo2: the second #GAppInfo.
+ * g_application_mark_busy:
+ * @application: a #GApplication
  *
- * Checks if two #GAppInfos are equal.
+ * Increases the busy count of @application.
  *
- * Note that the check <emphasis>may not</emphasis> compare each individual
- * field, and only does an identity check. In case detecting changes in the
- * contents is needed, program code must additionally compare relevant fields.
+ * Use this function to indicate that the application is busy, for instance
+ * while a long running operation is pending.
  *
- * Returns: %TRUE if @appinfo1 is equal to @appinfo2. %FALSE otherwise.
+ * The busy state will be exposed to other processes, so a session shell will
+ * use that information to indicate the state to the user (e.g. with a
+ * spinner).
+ *
+ * To cancel the busy indication, use g_application_unmark_busy().
+ *
+ * Since: 2.38
  */
 
 
 /**
- * g_app_info_get_all:
+ * g_application_new:
+ * @application_id: (nullable): the application id
+ * @flags: the application flags
  *
- * Gets a list of all of the applications currently registered
- * on this system.
+ * Creates a new #GApplication instance.
  *
- * For desktop files, this includes applications that have
- * `NoDisplay=true` set or are excluded from display by means
- * of `OnlyShowIn` or `NotShowIn`. See g_app_info_should_show().
- * The returned list does not include applications which have
- * the `Hidden` key set.
+ * If non-%NULL, the application id must be valid.  See
+ * g_application_id_is_valid().
  *
- * Returns: (element-type GAppInfo) (transfer full): a newly allocated #GList of references to #GAppInfos.
+ * If no application ID is given then some features of #GApplication
+ * (most notably application uniqueness) will be disabled.
+ *
+ * Returns: a new #GApplication instance
  */
 
 
 /**
- * g_app_info_get_all_for_type:
- * @content_type: the content type to find a #GAppInfo for
+ * g_application_open:
+ * @application: a #GApplication
+ * @files: (array length=n_files): an array of #GFiles to open
+ * @n_files: the length of the @files array
+ * @hint: a hint (or ""), but never %NULL
  *
- * Gets a list of all #GAppInfos for a given content type,
- * including the recommended and fallback #GAppInfos. See
- * g_app_info_get_recommended_for_type() and
- * g_app_info_get_fallback_for_type().
+ * Opens the given files.
  *
- * Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
- *     for given @content_type or %NULL on error.
- */
-
-
-/**
- * g_app_info_get_commandline:
- * @appinfo: a #GAppInfo
+ * In essence, this results in the #GApplication::open signal being emitted
+ * in the primary instance.
  *
- * Gets the commandline with which the application will be
- * started.
+ * @n_files must be greater than zero.
  *
- * Returns: (type filename): a string containing the @appinfo's commandline,
- *     or %NULL if this information is not available
- * Since: 2.20
- */
-
-
-/**
- * g_app_info_get_default_for_type:
- * @content_type: the content type to find a #GAppInfo for
- * @must_support_uris: if %TRUE, the #GAppInfo is expected to
- *     support URIs
+ * @hint is simply passed through to the ::open signal.  It is
+ * intended to be used by applications that have multiple modes for
+ * opening files (eg: "view" vs "edit", etc).  Unless you have a need
+ * for this functionality, you should use "".
  *
- * Gets the default #GAppInfo for a given content type.
+ * The application must be registered before calling this function
+ * and it must have the %G_APPLICATION_HANDLES_OPEN flag set.
  *
- * Returns: (transfer full): #GAppInfo for given @content_type or
- *     %NULL on error.
+ * Since: 2.28
  */
 
 
 /**
- * g_app_info_get_default_for_uri_scheme:
- * @uri_scheme: a string containing a URI scheme.
+ * g_application_quit:
+ * @application: a #GApplication
  *
- * Gets the default application for handling URIs with
- * the given URI scheme. A URI scheme is the initial part
- * of the URI, up to but not including the ':', e.g. "http",
- * "ftp" or "sip".
+ * Immediately quits the application.
  *
- * Returns: (transfer full): #GAppInfo for given @uri_scheme or %NULL on error.
- */
-
-
-/**
- * g_app_info_get_description:
- * @appinfo: a #GAppInfo.
+ * Upon return to the mainloop, g_application_run() will return,
+ * calling only the 'shutdown' function before doing so.
  *
- * Gets a human-readable description of an installed application.
+ * The hold count is ignored.
+ * Take care if your code has called g_application_hold() on the application and
+ * is therefore still expecting it to exist.
+ * (Note that you may have called g_application_hold() indirectly, for example
+ * through gtk_application_add_window().)
  *
- * Returns: a string containing a description of the
- * application @appinfo, or %NULL if none.
+ * The result of calling g_application_run() again after it returns is
+ * unspecified.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_app_info_get_display_name:
- * @appinfo: a #GAppInfo.
+ * g_application_register:
+ * @application: a #GApplication
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a pointer to a NULL #GError, or %NULL
  *
- * Gets the display name of the application. The display name is often more
- * descriptive to the user than the name itself.
+ * Attempts registration of the application.
  *
- * Returns: the display name of the application for @appinfo, or the name if
- * no display name is available.
- * Since: 2.24
- */
-
-
-/**
- * g_app_info_get_executable:
- * @appinfo: a #GAppInfo
+ * This is the point at which the application discovers if it is the
+ * primary instance or merely acting as a remote for an already-existing
+ * primary instance.  This is implemented by attempting to acquire the
+ * application identifier as a unique bus name on the session bus using
+ * GDBus.
  *
- * Gets the executable's name for the installed application.
+ * If there is no application ID or if %G_APPLICATION_NON_UNIQUE was
+ * given, then this process will always become the primary instance.
  *
- * Returns: (type filename): a string containing the @appinfo's application
- * binaries name
- */
-
-
-/**
- * g_app_info_get_fallback_for_type:
- * @content_type: the content type to find a #GAppInfo for
+ * Due to the internal architecture of GDBus, method calls can be
+ * dispatched at any time (even if a main loop is not running).  For
+ * this reason, you must ensure that any object paths that you wish to
+ * register are registered before calling this function.
  *
- * Gets a list of fallback #GAppInfos for a given content type, i.e.
- * those applications which claim to support the given content type
- * by MIME type subclassing and not directly.
+ * If the application has already been registered then %TRUE is
+ * returned with no work performed.
  *
- * Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
- *     for given @content_type or %NULL on error.
+ * The #GApplication::startup signal is emitted if registration succeeds
+ * and @application is the primary instance (including the non-unique
+ * case).
+ *
+ * In the event of an error (such as @cancellable being cancelled, or a
+ * failure to connect to the session bus), %FALSE is returned and @error
+ * is set appropriately.
+ *
+ * Note: the return value of this function is not an indicator that this
+ * instance is or is not the primary instance of the application.  See
+ * g_application_get_is_remote() for that.
+ *
+ * Returns: %TRUE if registration succeeded
  * Since: 2.28
  */
 
 
 /**
- * g_app_info_get_icon:
- * @appinfo: a #GAppInfo.
+ * g_application_release:
+ * @application: a #GApplication
  *
- * Gets the icon for the application.
+ * Decrease the use count of @application.
  *
- * Returns: (transfer none): the default #GIcon for @appinfo or %NULL
- * if there is no default icon.
+ * When the use count reaches zero, the application will stop running.
+ *
+ * Never call this function except to cancel the effect of a previous
+ * call to g_application_hold().
  */
 
 
 /**
- * g_app_info_get_id:
- * @appinfo: a #GAppInfo.
+ * g_application_run:
+ * @application: a #GApplication
+ * @argc: the argc from main() (or 0 if @argv is %NULL)
+ * @argv: (array length=argc) (element-type filename) (nullable):
+ *     the argv from main(), or %NULL
  *
- * Gets the ID of an application. An id is a string that
- * identifies the application. The exact format of the id is
- * platform dependent. For instance, on Unix this is the
- * desktop file id from the xdg menu specification.
+ * Runs the application.
  *
- * Note that the returned ID may be %NULL, depending on how
- * the @appinfo has been constructed.
+ * This function is intended to be run from main() and its return value
+ * is intended to be returned by main(). Although you are expected to pass
+ * the @argc, @argv parameters from main() to this function, it is possible
+ * to pass %NULL if @argv is not available or commandline handling is not
+ * required.  Note that on Windows, @argc and @argv are ignored, and
+ * g_win32_get_command_line() is called internally (for proper support
+ * of Unicode commandline arguments).
  *
- * Returns: a string containing the application's ID.
- */
-
-
-/**
- * g_app_info_get_name:
- * @appinfo: a #GAppInfo.
+ * #GApplication will attempt to parse the commandline arguments.  You
+ * can add commandline flags to the list of recognised options by way of
+ * g_application_add_main_option_entries().  After this, the
+ * #GApplication::handle-local-options signal is emitted, from which the
+ * application can inspect the values of its #GOptionEntrys.
  *
- * Gets the installed name of the application.
+ * #GApplication::handle-local-options is a good place to handle options
+ * such as `--version`, where an immediate reply from the local process is
+ * desired (instead of communicating with an already-running instance).
+ * A #GApplication::handle-local-options handler can stop further processing
+ * by returning a non-negative value, which then becomes the exit status of
+ * the process.
  *
- * Returns: the name of the application for @appinfo.
- */
-
-
-/**
- * g_app_info_get_recommended_for_type:
- * @content_type: the content type to find a #GAppInfo for
+ * What happens next depends on the flags: if
+ * %G_APPLICATION_HANDLES_COMMAND_LINE was specified then the remaining
+ * commandline arguments are sent to the primary instance, where a
+ * #GApplication::command-line signal is emitted.  Otherwise, the
+ * remaining commandline arguments are assumed to be a list of files.
+ * If there are no files listed, the application is activated via the
+ * #GApplication::activate signal.  If there are one or more files, and
+ * %G_APPLICATION_HANDLES_OPEN was specified then the files are opened
+ * via the #GApplication::open signal.
  *
- * Gets a list of recommended #GAppInfos for a given content type, i.e.
- * those applications which claim to support the given content type exactly,
- * and not by MIME type subclassing.
- * Note that the first application of the list is the last used one, i.e.
- * the last one for which g_app_info_set_as_last_used_for_type() has been
- * called.
+ * If you are interested in doing more complicated local handling of the
+ * commandline then you should implement your own #GApplication subclass
+ * and override local_command_line(). In this case, you most likely want
+ * to return %TRUE from your local_command_line() implementation to
+ * suppress the default handling. See
+ * [gapplication-example-cmdline2.c][gapplication-example-cmdline2]
+ * for an example.
  *
- * Returns: (element-type GAppInfo) (transfer full): #GList of #GAppInfos
- *     for given @content_type or %NULL on error.
- * Since: 2.28
- */
-
-
-/**
- * g_app_info_get_supported_types:
- * @appinfo: a #GAppInfo that can handle files
+ * If, after the above is done, the use count of the application is zero
+ * then the exit status is returned immediately.  If the use count is
+ * non-zero then the default main context is iterated until the use count
+ * falls to zero, at which point 0 is returned.
  *
- * Retrieves the list of content types that @app_info claims to support.
- * If this information is not provided by the environment, this function
- * will return %NULL.
- * This function does not take in consideration associations added with
- * g_app_info_add_supports_type(), but only those exported directly by
- * the application.
+ * If the %G_APPLICATION_IS_SERVICE flag is set, then the service will
+ * run for as much as 10 seconds with a use count of zero while waiting
+ * for the message that caused the activation to arrive.  After that,
+ * if the use count falls to zero the application will exit immediately,
+ * except in the case that g_application_set_inactivity_timeout() is in
+ * use.
  *
- * Returns: (transfer none) (array zero-terminated=1) (element-type utf8):
- *    a list of content types.
- * Since: 2.34
+ * This function sets the prgname (g_set_prgname()), if not already set,
+ * to the basename of argv[0].
+ *
+ * Much like g_main_loop_run(), this function will acquire the main context
+ * for the duration that the application is running.
+ *
+ * Since 2.40, applications that are not explicitly flagged as services
+ * or launchers (ie: neither %G_APPLICATION_IS_SERVICE or
+ * %G_APPLICATION_IS_LAUNCHER are given as flags) will check (from the
+ * default handler for local_command_line) if "--gapplication-service"
+ * was given in the command line.  If this flag is present then normal
+ * commandline processing is interrupted and the
+ * %G_APPLICATION_IS_SERVICE flag is set.  This provides a "compromise"
+ * solution whereby running an application directly from the commandline
+ * will invoke it in the normal way (which can be useful for debugging)
+ * while still allowing applications to be D-Bus activated in service
+ * mode.  The D-Bus service file should invoke the executable with
+ * "--gapplication-service" as the sole commandline argument.  This
+ * approach is suitable for use by most graphical applications but
+ * should not be used from applications like editors that need precise
+ * control over when processes invoked via the commandline will exit and
+ * what their exit status will be.
+ *
+ * Returns: the exit status
+ * Since: 2.28
  */
 
 
 /**
- * g_app_info_launch:
- * @appinfo: a #GAppInfo
- * @files: (nullable) (element-type GFile): a #GList of #GFile objects
- * @context: (nullable): a #GAppLaunchContext or %NULL
- * @error: a #GError
+ * g_application_send_notification:
+ * @application: a #GApplication
+ * @id: (nullable): id of the notification, or %NULL
+ * @notification: the #GNotification to send
  *
- * Launches the application. Passes @files to the launched application
- * as arguments, using the optional @context to get information
- * about the details of the launcher (like what screen it is on).
- * On error, @error will be set accordingly.
+ * Sends a notification on behalf of @application to the desktop shell.
+ * There is no guarantee that the notification is displayed immediately,
+ * or even at all.
  *
- * To launch the application without arguments pass a %NULL @files list.
+ * Notifications may persist after the application exits. It will be
+ * D-Bus-activated when the notification or one of its actions is
+ * activated.
  *
- * 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.
+ * Modifying @notification after this call has no effect. However, the
+ * object can be reused for a later call to this function.
  *
- * 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
- * g_app_info_launch_uris() instead.
+ * @id may be any string that uniquely identifies the event for the
+ * application. It does not need to be in any special format. For
+ * example, "new-message" might be appropriate for a notification about
+ * new messages.
  *
- * The launched application inherits the environment of the launching
- * process, but it can be modified with g_app_launch_context_setenv()
- * and g_app_launch_context_unsetenv().
+ * If a previous notification was sent with the same @id, it will be
+ * replaced with @notification and shown again as if it was a new
+ * notification. This works even for notifications sent from a previous
+ * execution of the application, as long as @id is the same string.
  *
- * On UNIX, this function sets the `GIO_LAUNCHED_DESKTOP_FILE`
- * environment variable with the path of the launched desktop file and
- * `GIO_LAUNCHED_DESKTOP_FILE_PID` to the process id of the launched
- * process. This can be used to ignore `GIO_LAUNCHED_DESKTOP_FILE`,
- * should it be inherited by further processes. The `DISPLAY` and
- * `DESKTOP_STARTUP_ID` environment variables are also set, based
- * on information provided in @context.
+ * @id may be %NULL, but it is impossible to replace or withdraw
+ * notifications without an id.
  *
- * Returns: %TRUE on successful launch, %FALSE otherwise.
+ * If @notification is no longer relevant, it can be withdrawn with
+ * g_application_withdraw_notification().
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_app_info_launch_default_for_uri:
- * @uri: the uri to show
- * @context: (nullable): an optional #GAppLaunchContext
- * @error: (nullable): return location for an error, or %NULL
+ * g_application_set_action_group:
+ * @application: a #GApplication
+ * @action_group: (nullable): a #GActionGroup, or %NULL
  *
- * Utility function that launches the default application
- * registered to handle the specified uri. Synchronous I/O
- * is done on the uri to detect the type of the file if
- * required.
+ * This used to be how actions were associated with a #GApplication.
+ * Now there is #GActionMap for that.
  *
- * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.28
+ * Deprecated: 2.32: Use the #GActionMap interface instead.  Never ever
+ * mix use of this API with use of #GActionMap on the same @application
+ * or things will go very badly wrong.  This function is known to
+ * introduce buggy behaviour (ie: signals not emitted on changes to the
+ * action group), so you should really use #GActionMap instead.
  */
 
 
 /**
- * g_app_info_launch_default_for_uri_async:
- * @uri: the uri to show
- * @context: (nullable): an optional #GAppLaunchContext
- * @cancellable: (nullable): a #GCancellable
- * @callback: (nullable): a #GASyncReadyCallback to call when the request is done
- * @user_data: (nullable): data to pass to @callback
+ * g_application_set_application_id:
+ * @application: a #GApplication
+ * @application_id: (nullable): the identifier for @application
  *
- * Async version of g_app_info_launch_default_for_uri().
+ * Sets the unique identifier for @application.
  *
- * This version is useful if you are interested in receiving
- * error information in the case where the application is
- * sandboxed and the portal may present an application chooser
- * dialog to the user.
+ * The application id can only be modified if @application has not yet
+ * been registered.
  *
- * Since: 2.50
+ * If non-%NULL, the application id must be valid.  See
+ * g_application_id_is_valid().
+ *
+ * Since: 2.28
  */
 
 
 /**
- * g_app_info_launch_default_for_uri_finish:
- * @result: a #GAsyncResult
- * @error: (nullable): return location for an error, or %NULL
+ * g_application_set_default:
+ * @application: (nullable): the application to set as default, or %NULL
  *
- * Finishes an asynchronous launch-default-for-uri operation.
+ * Sets or unsets the default application for the process, as returned
+ * by g_application_get_default().
  *
- * Returns: %TRUE if the launch was successful, %FALSE if @error is set
- * Since: 2.50
+ * This function does not take its own reference on @application.  If
+ * @application is destroyed then the default application will revert
+ * back to %NULL.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_app_info_launch_uris:
- * @appinfo: a #GAppInfo
- * @uris: (nullable) (element-type utf8): a #GList containing URIs to launch.
- * @context: (nullable): a #GAppLaunchContext or %NULL
- * @error: a #GError
+ * g_application_set_flags:
+ * @application: a #GApplication
+ * @flags: the flags for @application
  *
- * Launches the application. This passes the @uris to the launched application
- * as arguments, using the optional @context to get information
- * about the details of the launcher (like what screen it is on).
- * On error, @error will be set accordingly.
+ * Sets the flags for @application.
  *
- * To launch the application without arguments pass a %NULL @uris list.
+ * The flags can only be modified if @application has not yet been
+ * registered.
  *
- * 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.
+ * See #GApplicationFlags.
  *
- * Returns: %TRUE on successful launch, %FALSE otherwise.
+ * Since: 2.28
  */
 
 
 /**
- * g_app_info_monitor_get:
+ * g_application_set_inactivity_timeout:
+ * @application: a #GApplication
+ * @inactivity_timeout: the timeout, in milliseconds
  *
- * Gets the #GAppInfoMonitor for the current thread-default main
- * context.
+ * Sets the current inactivity timeout for the application.
  *
- * The #GAppInfoMonitor will emit a "changed" signal in the
- * thread-default main context whenever the list of installed
- * applications (as reported by g_app_info_get_all()) may have changed.
+ * This is the amount of time (in milliseconds) after the last call to
+ * g_application_release() before the application stops running.
  *
- * You must only call g_object_unref() on the return value from under
- * the same main context as you created it.
+ * This call has no side effects of its own.  The value set here is only
+ * used for next time g_application_release() drops the use count to
+ * zero.  Any timeouts currently in progress are not impacted.
  *
- * Returns: (transfer full): a reference to a #GAppInfoMonitor
- * Since: 2.40
+ * Since: 2.28
  */
 
 
 /**
- * g_app_info_remove_supports_type:
- * @appinfo: a #GAppInfo.
- * @content_type: a string.
- * @error: a #GError.
+ * g_application_set_option_context_description:
+ * @application: the #GApplication
+ * @description: (nullable): a string to be shown in `--help` output
+ *  after the list of options, or %NULL
  *
- * Removes a supported type from an application, if possible.
+ * Adds a description to the @application option context.
  *
- * Returns: %TRUE on success, %FALSE on error.
+ * See g_option_context_set_description() for more information.
+ *
+ * Since: 2.56
  */
 
 
 /**
- * g_app_info_reset_type_associations:
- * @content_type: a content type
+ * g_application_set_option_context_parameter_string:
+ * @application: the #GApplication
+ * @parameter_string: (nullable): a string which is displayed
+ *   in the first line of `--help` output, after the usage summary `programname [OPTION...]`.
  *
- * Removes all changes to the type associations done by
- * g_app_info_set_as_default_for_type(),
- * g_app_info_set_as_default_for_extension(),
- * g_app_info_add_supports_type() or
- * g_app_info_remove_supports_type().
+ * Sets the parameter string to be used by the commandline handling of @application.
  *
- * Since: 2.20
+ * This function registers the argument to be passed to g_option_context_new()
+ * when the internal #GOptionContext of @application is created.
+ *
+ * See g_option_context_new() for more information about @parameter_string.
+ *
+ * Since: 2.56
  */
 
 
 /**
- * g_app_info_set_as_default_for_extension:
- * @appinfo: a #GAppInfo.
- * @extension: (type filename): a string containing the file extension
- *     (without the dot).
- * @error: a #GError.
+ * g_application_set_option_context_summary:
+ * @application: the #GApplication
+ * @summary: (nullable): a string to be shown in `--help` output
+ *  before the list of options, or %NULL
  *
- * Sets the application as the default handler for the given file extension.
+ * Adds a summary to the @application option context.
  *
- * Returns: %TRUE on success, %FALSE on error.
+ * See g_option_context_set_summary() for more information.
+ *
+ * Since: 2.56
  */
 
 
 /**
- * g_app_info_set_as_default_for_type:
- * @appinfo: a #GAppInfo.
- * @content_type: the content type.
- * @error: a #GError.
+ * g_application_set_resource_base_path:
+ * @application: a #GApplication
+ * @resource_path: (nullable): the resource path to use
  *
- * Sets the application as the default handler for a given type.
+ * Sets (or unsets) the base resource path of @application.
  *
- * Returns: %TRUE on success, %FALSE on error.
+ * The path is used to automatically load various [application
+ * resources][gresource] such as menu layouts and action descriptions.
+ * The various types of resources will be found at fixed names relative
+ * to the given base path.
+ *
+ * By default, the resource base path is determined from the application
+ * ID by prefixing '/' and replacing each '.' with '/'.  This is done at
+ * the time that the #GApplication object is constructed.  Changes to
+ * the application ID after that point will not have an impact on the
+ * resource base path.
+ *
+ * As an example, if the application has an ID of "org.example.app" then
+ * the default resource base path will be "/org/example/app".  If this
+ * is a #GtkApplication (and you have not manually changed the path)
+ * then Gtk will then search for the menus of the application at
+ * "/org/example/app/gtk/menus.ui".
+ *
+ * See #GResource for more information about adding resources to your
+ * application.
+ *
+ * You can disable automatic resource loading functionality by setting
+ * the path to %NULL.
+ *
+ * Changing the resource base path once the application is running is
+ * not recommended.  The point at which the resource path is consulted
+ * for forming paths for various purposes is unspecified.  When writing
+ * a sub-class of #GApplication you should either set the
+ * #GApplication:resource-base-path property at construction time, or call
+ * this function during the instance initialization. Alternatively, you
+ * can call this function in the #GApplicationClass.startup virtual function,
+ * before chaining up to the parent implementation.
+ *
+ * Since: 2.42
  */
 
 
 /**
- * g_app_info_set_as_last_used_for_type:
- * @appinfo: a #GAppInfo.
- * @content_type: the content type.
- * @error: a #GError.
+ * g_application_unbind_busy_property:
+ * @application: a #GApplication
+ * @object: (type GObject.Object): a #GObject
+ * @property: the name of a boolean property of @object
  *
- * Sets the application as the last used application for a given type.
- * This will make the application appear as first in the list returned
- * by g_app_info_get_recommended_for_type(), regardless of the default
- * application for that content type.
+ * Destroys a binding between @property and the busy state of
+ * @application that was previously created with
+ * g_application_bind_busy_property().
  *
- * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.44
  */
 
 
 /**
- * g_app_info_should_show:
- * @appinfo: a #GAppInfo.
+ * g_application_unmark_busy:
+ * @application: a #GApplication
  *
- * Checks if the application info should be shown in menus that
- * list available applications.
+ * Decreases the busy count of @application.
  *
- * Returns: %TRUE if the @appinfo should be shown, %FALSE otherwise.
+ * When the busy count reaches zero, the new state will be propagated
+ * to other processes.
+ *
+ * This function must only be called to cancel the effect of a previous
+ * call to g_application_mark_busy().
+ *
+ * Since: 2.38
  */
 
 
 /**
- * g_app_info_supports_files:
- * @appinfo: a #GAppInfo.
+ * g_application_withdraw_notification:
+ * @application: a #GApplication
+ * @id: id of a previously sent notification
  *
- * Checks if the application accepts files as arguments.
+ * Withdraws a notification that was sent with
+ * g_application_send_notification().
  *
- * Returns: %TRUE if the @appinfo supports files.
+ * This call does nothing if a notification with @id doesn't exist or
+ * the notification was never sent.
+ *
+ * This function works even for notifications sent in previous
+ * executions of this application, as long @id is the same as it was for
+ * the sent notification.
+ *
+ * Note that notifications are dismissed when the user clicks on one
+ * of the buttons in a notification or triggers its default action, so
+ * there is no need to explicitly withdraw the notification in that case.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_app_info_supports_uris:
- * @appinfo: a #GAppInfo.
+ * g_async_initable_init_async:
+ * @initable: a #GAsyncInitable.
+ * @io_priority: the [I/O priority][io-priority] of the operation
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to callback function
  *
- * Checks if the application supports reading files and directories from URIs.
+ * Starts asynchronous initialization of the object implementing the
+ * interface. This must be done before any real use of the object after
+ * initial construction. If the object also implements #GInitable you can
+ * optionally call g_initable_init() instead.
  *
- * Returns: %TRUE if the @appinfo supports URIs.
+ * This method is intended for language bindings. If writing in C,
+ * g_async_initable_new_async() should typically be used instead.
+ *
+ * When the initialization is finished, @callback will be called. You can
+ * then call g_async_initable_init_finish() to get the result of the
+ * initialization.
+ *
+ * Implementations may also support cancellation. If @cancellable is not
+ * %NULL, then initialization can be cancelled by triggering the cancellable
+ * object from another thread. If the operation was cancelled, the error
+ * %G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL, and
+ * the object doesn't support cancellable initialization, the error
+ * %G_IO_ERROR_NOT_SUPPORTED will be returned.
+ *
+ * As with #GInitable, if the object is not initialized, or initialization
+ * returns with an error, then all operations on the object except
+ * g_object_ref() and g_object_unref() are considered to be invalid, and
+ * have undefined behaviour. They will often fail with g_critical() or
+ * g_warning(), but this must not be relied on.
+ *
+ * Callers should not assume that a class which implements #GAsyncInitable can
+ * be initialized multiple times; for more information, see g_initable_init().
+ * If a class explicitly supports being initialized multiple times,
+ * implementation requires yielding all subsequent calls to init_async() on the
+ * results of the first call.
+ *
+ * For classes that also support the #GInitable interface, the default
+ * implementation of this method will run the g_initable_init() function
+ * in a thread, so if you want to support asynchronous initialization via
+ * threads, just implement the #GAsyncInitable interface without overriding
+ * any interface methods.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_app_launch_context_get_display:
- * @context: a #GAppLaunchContext
- * @info: a #GAppInfo
- * @files: (element-type GFile): a #GList of #GFile objects
+ * g_async_initable_init_finish:
+ * @initable: a #GAsyncInitable.
+ * @res: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Gets the display string for the @context. This is used to ensure new
- * applications are started on the same display as the launching
- * application, by setting the `DISPLAY` environment variable.
+ * Finishes asynchronous initialization and returns the result.
+ * See g_async_initable_init_async().
  *
- * Returns: a display string for the display.
+ * Returns: %TRUE if successful. If an error has occurred, this function
+ * will return %FALSE and set @error appropriately if present.
+ * Since: 2.22
  */
 
 
 /**
- * g_app_launch_context_get_environment:
- * @context: a #GAppLaunchContext
+ * g_async_initable_new_async:
+ * @object_type: a #GType supporting #GAsyncInitable.
+ * @io_priority: the [I/O priority][io-priority] of the operation
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @callback: a #GAsyncReadyCallback to call when the initialization is
+ *     finished
+ * @user_data: the data to pass to callback function
+ * @first_property_name: (nullable): the name of the first property, or %NULL if no
+ *     properties
+ * @...: the value of the first property, followed by other property
+ *    value pairs, and ended by %NULL.
  *
- * Gets the complete environment variable list to be passed to
- * the child process when @context is used to launch an application.
- * This is a %NULL-terminated array of strings, where each string has
- * the form `KEY=VALUE`.
+ * Helper function for constructing #GAsyncInitable object. This is
+ * similar to g_object_new() but also initializes the object asynchronously.
  *
- * Returns: (array zero-terminated=1) (element-type filename) (transfer full):
- *     the child's environment
- * Since: 2.32
+ * When the initialization is finished, @callback will be called. You can
+ * then call g_async_initable_new_finish() to get the new object and check
+ * for any errors.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_app_launch_context_get_startup_notify_id:
- * @context: a #GAppLaunchContext
- * @info: a #GAppInfo
- * @files: (element-type GFile): a #GList of of #GFile objects
- *
- * Initiates startup notification for the application and returns the
- * `DESKTOP_STARTUP_ID` for the launched operation, if supported.
+ * g_async_initable_new_finish:
+ * @initable: the #GAsyncInitable from the callback
+ * @res: the #GAsyncResult from the callback
+ * @error: return location for errors, or %NULL to ignore
  *
- * Startup notification IDs are defined in the
- * [FreeDesktop.Org Startup Notifications standard](http://standards.freedesktop.org/startup-notification-spec/startup-notification-latest.txt").
+ * Finishes the async construction for the various g_async_initable_new
+ * calls, returning the created object or %NULL on error.
  *
- * Returns: a startup notification ID for the application, or %NULL if
- *     not supported.
+ * Returns: (type GObject.Object) (transfer full): a newly created #GObject,
+ *      or %NULL on error. Free with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_app_launch_context_launch_failed:
- * @context: a #GAppLaunchContext.
- * @startup_notify_id: the startup notification id that was returned by g_app_launch_context_get_startup_notify_id().
+ * g_async_initable_new_valist_async:
+ * @object_type: a #GType supporting #GAsyncInitable.
+ * @first_property_name: the name of the first property, followed by
+ * the value, and other property value pairs, and ended by %NULL.
+ * @var_args: The var args list generated from @first_property_name.
+ * @io_priority: the [I/O priority][io-priority] of the operation
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @callback: a #GAsyncReadyCallback to call when the initialization is
+ *     finished
+ * @user_data: the data to pass to callback function
  *
- * Called when an application has failed to launch, so that it can cancel
- * the application startup notification started in g_app_launch_context_get_startup_notify_id().
+ * Helper function for constructing #GAsyncInitable object. This is
+ * similar to g_object_new_valist() but also initializes the object
+ * asynchronously.
+ *
+ * When the initialization is finished, @callback will be called. You can
+ * then call g_async_initable_new_finish() to get the new object and check
+ * for any errors.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_app_launch_context_new:
+ * g_async_initable_newv_async:
+ * @object_type: a #GType supporting #GAsyncInitable.
+ * @n_parameters: the number of parameters in @parameters
+ * @parameters: the parameters to use to construct the object
+ * @io_priority: the [I/O priority][io-priority] of the operation
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @callback: a #GAsyncReadyCallback to call when the initialization is
+ *     finished
+ * @user_data: the data to pass to callback function
  *
- * Creates a new application launch context. This is not normally used,
- * instead you instantiate a subclass of this, such as #GdkAppLaunchContext.
+ * Helper function for constructing #GAsyncInitable object. This is
+ * similar to g_object_newv() but also initializes the object asynchronously.
  *
- * Returns: a #GAppLaunchContext.
+ * When the initialization is finished, @callback will be called. You can
+ * then call g_async_initable_new_finish() to get the new object and check
+ * for any errors.
+ *
+ * Since: 2.22
+ * Deprecated: 2.54: Use g_object_new_with_properties() and
+ * g_async_initable_init_async() instead. See #GParameter for more information.
  */
 
 
 /**
- * g_app_launch_context_setenv:
- * @context: a #GAppLaunchContext
- * @variable: (type filename): the environment variable to set
- * @value: (type filename): the value for to set the variable to.
+ * g_async_result_get_source_object:
+ * @res: a #GAsyncResult
  *
- * Arranges for @variable to be set to @value in the child's
- * environment when @context is used to launch an application.
+ * Gets the source object from a #GAsyncResult.
  *
- * Since: 2.32
+ * Returns: (transfer full) (nullable): a new reference to the source
+ *    object for the @res, or %NULL if there is none.
  */
 
 
 /**
- * g_app_launch_context_unsetenv:
- * @context: a #GAppLaunchContext
- * @variable: (type filename): the environment variable to remove
+ * g_async_result_get_user_data:
+ * @res: a #GAsyncResult.
  *
- * Arranges for @variable to be unset in the child's environment
- * when @context is used to launch an application.
+ * Gets the user data from a #GAsyncResult.
  *
- * Since: 2.32
+ * Returns: (transfer full): the user data for @res.
  */
 
 
 /**
- * g_application_activate:
- * @application: a #GApplication
- *
- * Activates the application.
- *
- * In essence, this results in the #GApplication::activate signal being
- * emitted in the primary instance.
+ * g_async_result_is_tagged:
+ * @res: a #GAsyncResult
+ * @source_tag: an application-defined tag
  *
- * The application must be registered before calling this function.
+ * Checks if @res has the given @source_tag (generally a function
+ * pointer indicating the function @res was created by).
  *
- * Since: 2.28
+ * Returns: %TRUE if @res has the indicated @source_tag, %FALSE if
+ *   not.
+ * Since: 2.34
  */
 
 
 /**
- * g_application_add_main_option:
- * @application: the #GApplication
- * @long_name: the long name of an option used to specify it in a commandline
- * @short_name: the short name of an option
- * @flags: flags from #GOptionFlags
- * @arg: the type of the option, as a #GOptionArg
- * @description: the description for the option in `--help` output
- * @arg_description: (nullable): the placeholder to use for the extra argument
- *    parsed by the option in `--help` output
- *
- * Add an option to be handled by @application.
- *
- * Calling this function is the equivalent of calling
- * g_application_add_main_option_entries() with a single #GOptionEntry
- * that has its arg_data member set to %NULL.
+ * g_async_result_legacy_propagate_error:
+ * @res: a #GAsyncResult
+ * @error: (out): a location to propagate the error to.
  *
- * The parsed arguments will be packed into a #GVariantDict which
- * is passed to #GApplication::handle-local-options. If
- * %G_APPLICATION_HANDLES_COMMAND_LINE is set, then it will also
- * be sent to the primary instance. See
- * g_application_add_main_option_entries() for more details.
+ * If @res is a #GSimpleAsyncResult, this is equivalent to
+ * g_simple_async_result_propagate_error(). Otherwise it returns
+ * %FALSE.
  *
- * See #GOptionEntry for more documentation of the arguments.
+ * This can be used for legacy error handling in async *_finish()
+ * wrapper functions that traditionally handled #GSimpleAsyncResult
+ * error returns themselves rather than calling into the virtual method.
+ * This should not be used in new code; #GAsyncResult errors that are
+ * set by virtual methods should also be extracted by virtual methods,
+ * to enable subclasses to chain up correctly.
  *
- * Since: 2.42
+ * Returns: %TRUE if @error is has been filled in with an error from
+ *   @res, %FALSE if not.
+ * Since: 2.34
  */
 
 
 /**
- * g_application_add_main_option_entries:
- * @application: a #GApplication
- * @entries: (array zero-terminated=1) (element-type GOptionEntry): a
- *           %NULL-terminated list of #GOptionEntrys
- *
- * Adds main option entries to be handled by @application.
+ * g_buffered_input_stream_fill:
+ * @stream: a #GBufferedInputStream
+ * @count: the number of bytes that will be read from the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * This function is comparable to g_option_context_add_main_entries().
+ * Tries to read @count bytes from the stream into the buffer.
+ * Will block during this read.
  *
- * After the commandline arguments are parsed, the
- * #GApplication::handle-local-options signal will be emitted.  At this
- * point, the application can inspect the values pointed to by @arg_data
- * in the given #GOptionEntrys.
+ * If @count is zero, returns zero and does nothing. A value of @count
+ * larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
  *
- * Unlike #GOptionContext, #GApplication supports giving a %NULL
- * @arg_data for a non-callback #GOptionEntry.  This results in the
- * argument in question being packed into a #GVariantDict which is also
- * passed to #GApplication::handle-local-options, where it can be
- * inspected and modified.  If %G_APPLICATION_HANDLES_COMMAND_LINE is
- * set, then the resulting dictionary is sent to the primary instance,
- * where g_application_command_line_get_options_dict() will return it.
- * This "packing" is done according to the type of the argument --
- * booleans for normal flags, strings for strings, bytestrings for
- * filenames, etc.  The packing only occurs if the flag is given (ie: we
- * do not pack a "false" #GVariant in the case that a flag is missing).
+ * On success, the number of bytes read into the buffer is returned.
+ * It is not an error if this is not the same as the requested size, as it
+ * can happen e.g. near the end of a file. Zero is returned on end of file
+ * (or if @count is zero),  but never otherwise.
  *
- * In general, it is recommended that all commandline arguments are
- * parsed locally.  The options dictionary should then be used to
- * transmit the result of the parsing to the primary instance, where
- * g_variant_dict_lookup() can be used.  For local options, it is
- * possible to either use @arg_data in the usual way, or to consult (and
- * potentially remove) the option from the options dictionary.
+ * If @count is -1 then the attempted read size is equal to the number of
+ * bytes that are required to fill the buffer.
  *
- * This function is new in GLib 2.40.  Before then, the only real choice
- * was to send all of the commandline arguments (options and all) to the
- * primary instance for handling.  #GApplication ignored them completely
- * on the local side.  Calling this function "opts in" to the new
- * behaviour, and in particular, means that unrecognised options will be
- * treated as errors.  Unrecognised options have never been ignored when
- * %G_APPLICATION_HANDLES_COMMAND_LINE is unset.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+ * operation was partially finished when the operation was cancelled the
+ * partial result will be returned, without an error.
  *
- * If #GApplication::handle-local-options needs to see the list of
- * filenames, then the use of %G_OPTION_REMAINING is recommended.  If
- * @arg_data is %NULL then %G_OPTION_REMAINING can be used as a key into
- * the options dictionary.  If you do use %G_OPTION_REMAINING then you
- * need to handle these arguments for yourself because once they are
- * consumed, they will no longer be visible to the default handling
- * (which treats them as filenames to be opened).
+ * On error -1 is returned and @error is set accordingly.
  *
- * It is important to use the proper GVariant format when retrieving
- * the options with g_variant_dict_lookup():
- * - for %G_OPTION_ARG_NONE, use b
- * - for %G_OPTION_ARG_STRING, use &s
- * - for %G_OPTION_ARG_INT, use i
- * - for %G_OPTION_ARG_INT64, use x
- * - for %G_OPTION_ARG_DOUBLE, use d
- * - for %G_OPTION_ARG_FILENAME, use ^ay
- * - for %G_OPTION_ARG_STRING_ARRAY, use &as
- * - for %G_OPTION_ARG_FILENAME_ARRAY, use ^aay
+ * For the asynchronous, non-blocking, version of this function, see
+ * g_buffered_input_stream_fill_async().
  *
- * Since: 2.40
+ * Returns: the number of bytes read into @stream's buffer, up to @count,
+ *     or -1 on error.
  */
 
 
 /**
- * g_application_add_option_group:
- * @application: the #GApplication
- * @group: (transfer full): a #GOptionGroup
- *
- * Adds a #GOptionGroup to the commandline handling of @application.
- *
- * This function is comparable to g_option_context_add_group().
- *
- * Unlike g_application_add_main_option_entries(), this function does
- * not deal with %NULL @arg_data and never transmits options to the
- * primary instance.
+ * g_buffered_input_stream_fill_async:
+ * @stream: a #GBufferedInputStream
+ * @count: the number of bytes that will be read from the stream
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): a #gpointer
  *
- * The reason for that is because, by the time the options arrive at the
- * primary instance, it is typically too late to do anything with them.
- * Taking the GTK option group as an example: GTK will already have been
- * initialised by the time the #GApplication::command-line handler runs.
- * In the case that this is not the first-running instance of the
- * application, the existing instance may already have been running for
- * a very long time.
+ * Reads data into @stream's buffer asynchronously, up to @count size.
+ * @io_priority can be used to prioritize reads. For the synchronous
+ * version of this function, see g_buffered_input_stream_fill().
  *
- * This means that the options from #GOptionGroup are only really usable
- * in the case that the instance of the application being run is the
- * first instance.  Passing options like `--display=` or `--gdk-debug=`
- * on future runs will have no effect on the existing primary instance.
+ * If @count is -1 then the attempted read size is equal to the number
+ * of bytes that are required to fill the buffer.
+ */
+
+
+/**
+ * g_buffered_input_stream_fill_finish:
+ * @stream: a #GBufferedInputStream
+ * @result: a #GAsyncResult
+ * @error: a #GError
  *
- * Calling this function will cause the options in the supplied option
- * group to be parsed, but it does not cause you to be "opted in" to the
- * new functionality whereby unrecognised options are rejected even if
- * %G_APPLICATION_HANDLES_COMMAND_LINE was given.
+ * Finishes an asynchronous read.
  *
- * Since: 2.40
+ * Returns: a #gssize of the read stream, or `-1` on an error.
  */
 
 
 /**
- * g_application_bind_busy_property:
- * @application: a #GApplication
- * @object: (type GObject.Object): a #GObject
- * @property: the name of a boolean property of @object
- *
- * Marks @application as busy (see g_application_mark_busy()) while
- * @property on @object is %TRUE.
+ * g_buffered_input_stream_get_available:
+ * @stream: #GBufferedInputStream
  *
- * The binding holds a reference to @application while it is active, but
- * not to @object. Instead, the binding is destroyed when @object is
- * finalized.
+ * Gets the size of the available data within the stream.
  *
- * Since: 2.44
+ * Returns: size of the available stream.
  */
 
 
 /**
- * g_application_command_line_create_file_for_arg:
- * @cmdline: a #GApplicationCommandLine
- * @arg: (type filename): an argument from @cmdline
- *
- * Creates a #GFile corresponding to a filename that was given as part
- * of the invocation of @cmdline.
+ * g_buffered_input_stream_get_buffer_size:
+ * @stream: a #GBufferedInputStream
  *
- * This differs from g_file_new_for_commandline_arg() in that it
- * resolves relative pathnames using the current working directory of
- * the invoking process rather than the local process.
+ * Gets the size of the input buffer.
  *
- * Returns: (transfer full): a new #GFile
- * Since: 2.36
+ * Returns: the current buffer size.
  */
 
 
 /**
- * g_application_command_line_get_arguments:
- * @cmdline: a #GApplicationCommandLine
- * @argc: (out) (optional): the length of the arguments array, or %NULL
- *
- * Gets the list of arguments that was passed on the command line.
- *
- * The strings in the array may contain non-UTF-8 data on UNIX (such as
- * filenames or arguments given in the system locale) but are always in
- * UTF-8 on Windows.
- *
- * If you wish to use the return value with #GOptionContext, you must
- * use g_option_context_parse_strv().
+ * g_buffered_input_stream_new:
+ * @base_stream: a #GInputStream
  *
- * The return value is %NULL-terminated and should be freed using
- * g_strfreev().
+ * Creates a new #GInputStream from the given @base_stream, with
+ * a buffer set to the default size (4 kilobytes).
  *
- * Returns: (array length=argc) (element-type filename) (transfer full):
- *      the string array containing the arguments (the argv)
- * Since: 2.28
+ * Returns: a #GInputStream for the given @base_stream.
  */
 
 
 /**
- * g_application_command_line_get_cwd:
- * @cmdline: a #GApplicationCommandLine
- *
- * Gets the working directory of the command line invocation.
- * The string may contain non-utf8 data.
- *
- * It is possible that the remote application did not send a working
- * directory, so this may be %NULL.
+ * g_buffered_input_stream_new_sized:
+ * @base_stream: a #GInputStream
+ * @size: a #gsize
  *
- * The return value should not be modified or freed and is valid for as
- * long as @cmdline exists.
+ * Creates a new #GBufferedInputStream from the given @base_stream,
+ * with a buffer set to @size.
  *
- * Returns: (nullable) (type filename): the current directory, or %NULL
- * Since: 2.28
+ * Returns: a #GInputStream.
  */
 
 
 /**
- * g_application_command_line_get_environ:
- * @cmdline: a #GApplicationCommandLine
- *
- * Gets the contents of the 'environ' variable of the command line
- * invocation, as would be returned by g_get_environ(), ie as a
- * %NULL-terminated list of strings in the form 'NAME=VALUE'.
- * The strings may contain non-utf8 data.
- *
- * The remote application usually does not send an environment.  Use
- * %G_APPLICATION_SEND_ENVIRONMENT to affect that.  Even with this flag
- * set it is possible that the environment is still not available (due
- * to invocation messages from other applications).
- *
- * The return value should not be modified or freed and is valid for as
- * long as @cmdline exists.
+ * g_buffered_input_stream_peek:
+ * @stream: a #GBufferedInputStream
+ * @buffer: (array length=count) (element-type guint8): a pointer to
+ *   an allocated chunk of memory
+ * @offset: a #gsize
+ * @count: a #gsize
  *
- * See g_application_command_line_getenv() if you are only interested
- * in the value of a single environment variable.
+ * Peeks in the buffer, copying data of size @count into @buffer,
+ * offset @offset bytes.
  *
- * Returns: (array zero-terminated=1) (element-type filename) (transfer none):
- *     the environment strings, or %NULL if they were not sent
- * Since: 2.28
+ * Returns: a #gsize of the number of bytes peeked, or -1 on error.
  */
 
 
 /**
- * g_application_command_line_get_exit_status:
- * @cmdline: a #GApplicationCommandLine
+ * g_buffered_input_stream_peek_buffer:
+ * @stream: a #GBufferedInputStream
+ * @count: (out): a #gsize to get the number of bytes available in the buffer
  *
- * Gets the exit status of @cmdline.  See
- * g_application_command_line_set_exit_status() for more information.
+ * Returns the buffer with the currently available bytes. The returned
+ * buffer must not be modified and will become invalid when reading from
+ * the stream or filling the buffer.
  *
- * Returns: the exit status
- * Since: 2.28
+ * Returns: (array length=count) (element-type guint8) (transfer none):
+ *          read-only buffer
  */
 
 
 /**
- * g_application_command_line_get_is_remote:
- * @cmdline: a #GApplicationCommandLine
- *
- * Determines if @cmdline represents a remote invocation.
+ * g_buffered_input_stream_read_byte:
+ * @stream: a #GBufferedInputStream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Returns: %TRUE if the invocation was remote
- * Since: 2.28
- */
-
-
-/**
- * g_application_command_line_get_options_dict:
- * @cmdline: a #GApplicationCommandLine
+ * Tries to read a single byte from the stream or the buffer. Will block
+ * during this read.
  *
- * Gets the options there were passed to g_application_command_line().
+ * On success, the byte read from the stream is returned. On end of stream
+ * -1 is returned but it's not an exceptional error and @error is not set.
  *
- * If you did not override local_command_line() then these are the same
- * options that were parsed according to the #GOptionEntrys added to the
- * application with g_application_add_main_option_entries() and possibly
- * modified from your GApplication::handle-local-options handler.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+ * operation was partially finished when the operation was cancelled the
+ * partial result will be returned, without an error.
  *
- * If no options were sent then an empty dictionary is returned so that
- * you don't need to check for %NULL.
+ * On error -1 is returned and @error is set accordingly.
  *
- * Returns: (transfer none): a #GVariantDict with the options
- * Since: 2.40
+ * Returns: the byte read from the @stream, or -1 on end of stream or error.
  */
 
 
 /**
- * g_application_command_line_get_platform_data:
- * @cmdline: #GApplicationCommandLine
- *
- * Gets the platform data associated with the invocation of @cmdline.
- *
- * This is a #GVariant dictionary containing information about the
- * context in which the invocation occurred.  It typically contains
- * information like the current working directory and the startup
- * notification ID.
- *
- * For local invocation, it will be %NULL.
+ * g_buffered_input_stream_set_buffer_size:
+ * @stream: a #GBufferedInputStream
+ * @size: a #gsize
  *
- * Returns: (nullable): the platform data, or %NULL
- * Since: 2.28
+ * Sets the size of the internal buffer of @stream to @size, or to the
+ * size of the contents of the buffer. The buffer can never be resized
+ * smaller than its current contents.
  */
 
 
 /**
- * g_application_command_line_get_stdin:
- * @cmdline: a #GApplicationCommandLine
- *
- * Gets the stdin of the invoking process.
- *
- * The #GInputStream can be used to read data passed to the standard
- * input of the invoking process.
- * This doesn't work on all platforms.  Presently, it is only available
- * on UNIX when using a DBus daemon capable of passing file descriptors.
- * If stdin is not available then %NULL will be returned.  In the
- * future, support may be expanded to other platforms.
+ * g_buffered_output_stream_get_auto_grow:
+ * @stream: a #GBufferedOutputStream.
  *
- * You must only call this function once per commandline invocation.
+ * Checks if the buffer automatically grows as data is added.
  *
- * Returns: (transfer full): a #GInputStream for stdin
- * Since: 2.34
+ * Returns: %TRUE if the @stream's buffer automatically grows,
+ * %FALSE otherwise.
  */
 
 
 /**
- * g_application_command_line_getenv:
- * @cmdline: a #GApplicationCommandLine
- * @name: (type filename): the environment variable to get
- *
- * Gets the value of a particular environment variable of the command
- * line invocation, as would be returned by g_getenv().  The strings may
- * contain non-utf8 data.
- *
- * The remote application usually does not send an environment.  Use
- * %G_APPLICATION_SEND_ENVIRONMENT to affect that.  Even with this flag
- * set it is possible that the environment is still not available (due
- * to invocation messages from other applications).
+ * g_buffered_output_stream_get_buffer_size:
+ * @stream: a #GBufferedOutputStream.
  *
- * The return value should not be modified or freed and is valid for as
- * long as @cmdline exists.
+ * Gets the size of the buffer in the @stream.
  *
- * Returns: the value of the variable, or %NULL if unset or unsent
- * Since: 2.28
+ * Returns: the current size of the buffer.
  */
 
 
 /**
- * g_application_command_line_print:
- * @cmdline: a #GApplicationCommandLine
- * @format: a printf-style format string
- * @...: arguments, as per @format
- *
- * Formats a message and prints it using the stdout print handler in the
- * invoking process.
+ * g_buffered_output_stream_new:
+ * @base_stream: a #GOutputStream.
  *
- * If @cmdline is a local invocation then this is exactly equivalent to
- * g_print().  If @cmdline is remote then this is equivalent to calling
- * g_print() in the invoking process.
+ * Creates a new buffered output stream for a base stream.
  *
- * Since: 2.28
+ * Returns: a #GOutputStream for the given @base_stream.
  */
 
 
 /**
- * g_application_command_line_printerr:
- * @cmdline: a #GApplicationCommandLine
- * @format: a printf-style format string
- * @...: arguments, as per @format
- *
- * Formats a message and prints it using the stderr print handler in the
- * invoking process.
+ * g_buffered_output_stream_new_sized:
+ * @base_stream: a #GOutputStream.
+ * @size: a #gsize.
  *
- * If @cmdline is a local invocation then this is exactly equivalent to
- * g_printerr().  If @cmdline is remote then this is equivalent to
- * calling g_printerr() in the invoking process.
+ * Creates a new buffered output stream with a given buffer size.
  *
- * Since: 2.28
+ * Returns: a #GOutputStream with an internal buffer set to @size.
  */
 
 
 /**
- * g_application_command_line_set_exit_status:
- * @cmdline: a #GApplicationCommandLine
- * @exit_status: the exit status
- *
- * Sets the exit status that will be used when the invoking process
- * exits.
- *
- * The return value of the #GApplication::command-line signal is
- * passed to this function when the handler returns.  This is the usual
- * way of setting the exit status.
- *
- * In the event that you want the remote invocation to continue running
- * and want to decide on the exit status in the future, you can use this
- * call.  For the case of a remote invocation, the remote process will
- * typically exit when the last reference is dropped on @cmdline.  The
- * exit status of the remote process will be equal to the last value
- * that was set with this function.
- *
- * In the case that the commandline invocation is local, the situation
- * is slightly more complicated.  If the commandline invocation results
- * in the mainloop running (ie: because the use-count of the application
- * increased to a non-zero value) then the application is considered to
- * have been 'successful' in a certain sense, and the exit status is
- * always zero.  If the application use count is zero, though, the exit
- * status of the local #GApplicationCommandLine is used.
+ * g_buffered_output_stream_set_auto_grow:
+ * @stream: a #GBufferedOutputStream.
+ * @auto_grow: a #gboolean.
  *
- * Since: 2.28
+ * Sets whether or not the @stream's buffer should automatically grow.
+ * If @auto_grow is true, then each write will just make the buffer
+ * larger, and you must manually flush the buffer to actually write out
+ * the data to the underlying stream.
  */
 
 
 /**
- * g_application_get_application_id:
- * @application: a #GApplication
- *
- * Gets the unique identifier for @application.
+ * g_buffered_output_stream_set_buffer_size:
+ * @stream: a #GBufferedOutputStream.
+ * @size: a #gsize.
  *
- * Returns: the identifier for @application, owned by @application
- * Since: 2.28
+ * Sets the size of the internal buffer to @size.
  */
 
 
 /**
- * g_application_get_dbus_connection:
- * @application: a #GApplication
- *
- * Gets the #GDBusConnection being used by the application, or %NULL.
+ * g_bus_get:
+ * @bus_type: a #GBusType
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to @callback
  *
- * If #GApplication is using its D-Bus backend then this function will
- * return the #GDBusConnection being used for uniqueness and
- * communication with the desktop environment and other instances of the
- * application.
+ * Asynchronously connects to the message bus specified by @bus_type.
  *
- * If #GApplication is not using D-Bus then this function will return
- * %NULL.  This includes the situation where the D-Bus backend would
- * normally be in use but we were unable to connect to the bus.
+ * When the operation is finished, @callback will be invoked. You can
+ * then call g_bus_get_finish() to get the result of the operation.
  *
- * This function must not be called before the application has been
- * registered.  See g_application_get_is_registered().
+ * This is a asynchronous failable function. See g_bus_get_sync() for
+ * the synchronous version.
  *
- * Returns: (transfer none): a #GDBusConnection, or %NULL
- * Since: 2.34
+ * Since: 2.26
  */
 
 
 /**
- * g_application_get_dbus_object_path:
- * @application: a #GApplication
- *
- * Gets the D-Bus object path being used by the application, or %NULL.
+ * g_bus_get_finish:
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
+ *     to g_bus_get()
+ * @error: return location for error or %NULL
  *
- * If #GApplication is using its D-Bus backend then this function will
- * return the D-Bus object path that #GApplication is using.  If the
- * application is the primary instance then there is an object published
- * at this path.  If the application is not the primary instance then
- * the result of this function is undefined.
+ * Finishes an operation started with g_bus_get().
  *
- * If #GApplication is not using D-Bus then this function will return
- * %NULL.  This includes the situation where the D-Bus backend would
- * normally be in use but we were unable to connect to the bus.
+ * The returned object is a singleton, that is, shared with other
+ * callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
+ * event that you need a private message bus connection, use
+ * g_dbus_address_get_for_bus_sync() and
+ * g_dbus_connection_new_for_address().
  *
- * This function must not be called before the application has been
- * registered.  See g_application_get_is_registered().
+ * Note that the returned #GDBusConnection object will (usually) have
+ * the #GDBusConnection:exit-on-close property set to %TRUE.
  *
- * Returns: the object path, or %NULL
- * Since: 2.34
+ * Returns: (transfer full): a #GDBusConnection or %NULL if @error is set.
+ *     Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_application_get_default:
+ * g_bus_get_sync:
+ * @bus_type: a #GBusType
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * Returns the default #GApplication instance for this process.
+ * Synchronously connects to the message bus specified by @bus_type.
+ * Note that the returned object may shared with other callers,
+ * e.g. if two separate parts of a process calls this function with
+ * the same @bus_type, they will share the same object.
  *
- * Normally there is only one #GApplication per process and it becomes
- * the default when it is created.  You can exercise more control over
- * this by using g_application_set_default().
+ * This is a synchronous failable function. See g_bus_get() and
+ * g_bus_get_finish() for the asynchronous version.
  *
- * If there is no default application then %NULL is returned.
+ * The returned object is a singleton, that is, shared with other
+ * callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
+ * event that you need a private message bus connection, use
+ * g_dbus_address_get_for_bus_sync() and
+ * g_dbus_connection_new_for_address().
  *
- * Returns: (transfer none): the default application for this process, or %NULL
- * Since: 2.32
+ * Note that the returned #GDBusConnection object will (usually) have
+ * the #GDBusConnection:exit-on-close property set to %TRUE.
+ *
+ * Returns: (transfer full): a #GDBusConnection or %NULL if @error is set.
+ *     Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_application_get_flags:
- * @application: a #GApplication
+ * g_bus_own_name:
+ * @bus_type: the type of bus to own a name on
+ * @name: the well-known name to own
+ * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
+ * @bus_acquired_handler: (nullable): handler to invoke when connected to the bus of type @bus_type or %NULL
+ * @name_acquired_handler: (nullable): handler to invoke when @name is acquired or %NULL
+ * @name_lost_handler: (nullable): handler to invoke when @name is lost or %NULL
+ * @user_data: user data to pass to handlers
+ * @user_data_free_func: (nullable): function for freeing @user_data or %NULL
  *
- * Gets the flags for @application.
+ * Starts acquiring @name on the bus specified by @bus_type and calls
+ * @name_acquired_handler and @name_lost_handler when the name is
+ * acquired respectively lost. Callbacks will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this function from.
  *
- * See #GApplicationFlags.
+ * You are guaranteed that one of the @name_acquired_handler and @name_lost_handler
+ * callbacks will be invoked after calling this function - there are three
+ * possible cases:
  *
- * Returns: the flags for @application
- * Since: 2.28
- */
-
-
-/**
- * g_application_get_inactivity_timeout:
- * @application: a #GApplication
+ * - @name_lost_handler with a %NULL connection (if a connection to the bus
+ *   can't be made).
  *
- * Gets the current inactivity timeout for the application.
+ * - @bus_acquired_handler then @name_lost_handler (if the name can't be
+ *   obtained)
  *
- * This is the amount of time (in milliseconds) after the last call to
- * g_application_release() before the application stops running.
+ * - @bus_acquired_handler then @name_acquired_handler (if the name was
+ *   obtained).
  *
- * Returns: the timeout, in milliseconds
- * Since: 2.28
+ * When you are done owning the name, just call g_bus_unown_name()
+ * with the owner id this function returns.
+ *
+ * If the name is acquired or lost (for example another application
+ * could acquire the name if you allow replacement or the application
+ * currently owning the name exits), the handlers are also invoked.
+ * If the #GDBusConnection that is used for attempting to own the name
+ * closes, then @name_lost_handler is invoked since it is no longer
+ * possible for other processes to access the process.
+ *
+ * You cannot use g_bus_own_name() several times for the same name (unless
+ * interleaved with calls to g_bus_unown_name()) - only the first call
+ * will work.
+ *
+ * Another guarantee is that invocations of @name_acquired_handler
+ * and @name_lost_handler are guaranteed to alternate; that
+ * is, if @name_acquired_handler is invoked then you are
+ * guaranteed that the next time one of the handlers is invoked, it
+ * will be @name_lost_handler. The reverse is also true.
+ *
+ * If you plan on exporting objects (using e.g.
+ * g_dbus_connection_register_object()), note that it is generally too late
+ * to export the objects in @name_acquired_handler. Instead, you can do this
+ * in @bus_acquired_handler since you are guaranteed that this will run
+ * before @name is requested from the bus.
+ *
+ * This behavior makes it very simple to write applications that wants
+ * to [own names][gdbus-owning-names] and export objects.
+ * Simply register objects to be exported in @bus_acquired_handler and
+ * unregister the objects (if any) in @name_lost_handler.
+ *
+ * Returns: an identifier (never 0) that an be used with
+ *     g_bus_unown_name() to stop owning the name.
+ * Since: 2.26
  */
 
 
 /**
- * g_application_get_is_busy:
- * @application: a #GApplication
+ * g_bus_own_name_on_connection:
+ * @connection: a #GDBusConnection
+ * @name: the well-known name to own
+ * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
+ * @name_acquired_handler: (nullable): handler to invoke when @name is acquired or %NULL
+ * @name_lost_handler: (nullable): handler to invoke when @name is lost or %NULL
+ * @user_data: user data to pass to handlers
+ * @user_data_free_func: (nullable): function for freeing @user_data or %NULL
  *
- * Gets the application's current busy state, as set through
- * g_application_mark_busy() or g_application_bind_busy_property().
+ * Like g_bus_own_name() but takes a #GDBusConnection instead of a
+ * #GBusType.
  *
- * Returns: %TRUE if @application is currenty marked as busy
- * Since: 2.44
+ * Returns: an identifier (never 0) that an be used with
+ *     g_bus_unown_name() to stop owning the name
+ * Since: 2.26
  */
 
 
 /**
- * g_application_get_is_registered:
- * @application: a #GApplication
- *
- * Checks if @application is registered.
+ * g_bus_own_name_on_connection_with_closures: (rename-to g_bus_own_name_on_connection)
+ * @connection: a #GDBusConnection
+ * @name: the well-known name to own
+ * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
+ * @name_acquired_closure: (nullable): #GClosure to invoke when @name is
+ *     acquired or %NULL
+ * @name_lost_closure: (nullable): #GClosure to invoke when @name is lost
+ *     or %NULL
  *
- * An application is registered if g_application_register() has been
- * successfully called.
+ * Version of g_bus_own_name_on_connection() using closures instead of
+ * callbacks for easier binding in other languages.
  *
- * Returns: %TRUE if @application is registered
- * Since: 2.28
+ * Returns: an identifier (never 0) that an be used with
+ *     g_bus_unown_name() to stop owning the name.
+ * Since: 2.26
  */
 
 
 /**
- * g_application_get_is_remote:
- * @application: a #GApplication
- *
- * Checks if @application is remote.
- *
- * If @application is remote then it means that another instance of
- * application already exists (the 'primary' instance).  Calls to
- * perform actions on @application will result in the actions being
- * performed by the primary instance.
+ * g_bus_own_name_with_closures: (rename-to g_bus_own_name)
+ * @bus_type: the type of bus to own a name on
+ * @name: the well-known name to own
+ * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
+ * @bus_acquired_closure: (nullable): #GClosure to invoke when connected to
+ *     the bus of type @bus_type or %NULL
+ * @name_acquired_closure: (nullable): #GClosure to invoke when @name is
+ *     acquired or %NULL
+ * @name_lost_closure: (nullable): #GClosure to invoke when @name is lost or
+ *     %NULL
  *
- * The value of this property cannot be accessed before
- * g_application_register() has been called.  See
- * g_application_get_is_registered().
+ * Version of g_bus_own_name() using closures instead of callbacks for
+ * easier binding in other languages.
  *
- * Returns: %TRUE if @application is remote
- * Since: 2.28
+ * Returns: an identifier (never 0) that an be used with
+ *     g_bus_unown_name() to stop owning the name.
+ * Since: 2.26
  */
 
 
 /**
- * g_application_get_resource_base_path:
- * @application: a #GApplication
- *
- * Gets the resource base path of @application.
+ * g_bus_unown_name:
+ * @owner_id: an identifier obtained from g_bus_own_name()
  *
- * See g_application_set_resource_base_path() for more information.
+ * Stops owning a name.
  *
- * Returns: (nullable): the base resource path, if one is set
- * Since: 2.42
+ * Since: 2.26
  */
 
 
 /**
- * g_application_hold:
- * @application: a #GApplication
- *
- * Increases the use count of @application.
+ * g_bus_unwatch_name:
+ * @watcher_id: An identifier obtained from g_bus_watch_name()
  *
- * Use this function to indicate that the application has a reason to
- * continue to run.  For example, g_application_hold() is called by GTK+
- * when a toplevel window is on the screen.
+ * Stops watching a name.
  *
- * To cancel the hold, call g_application_release().
+ * Since: 2.26
  */
 
 
 /**
- * g_application_id_is_valid:
- * @application_id: a potential application identifier
- *
- * Checks if @application_id is a valid application identifier.
- *
- * A valid ID is required for calls to g_application_new() and
- * g_application_set_application_id().
- *
- * Application identifiers follow the same format as
- * [D-Bus well-known bus names](https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-bus).
- * For convenience, the restrictions on application identifiers are
- * reproduced here:
- *
- * - Application identifiers are composed of 1 or more elements separated by a
- *   period (`.`) character. All elements must contain at least one character.
- *
- * - Each element must only contain the ASCII characters `[A-Z][a-z][0-9]_-`,
- *   with `-` discouraged in new application identifiers. Each element must not
- *   begin with a digit.
- *
- * - Application identifiers must contain at least one `.` (period) character
- *   (and thus at least two elements).
+ * g_bus_watch_name:
+ * @bus_type: The type of bus to watch a name on.
+ * @name: The name (well-known or unique) to watch.
+ * @flags: Flags from the #GBusNameWatcherFlags enumeration.
+ * @name_appeared_handler: (nullable): Handler to invoke when @name is known to exist or %NULL.
+ * @name_vanished_handler: (nullable): Handler to invoke when @name is known to not exist or %NULL.
+ * @user_data: User data to pass to handlers.
+ * @user_data_free_func: (nullable): Function for freeing @user_data or %NULL.
  *
- * - Application identifiers must not begin with a `.` (period) character.
+ * Starts watching @name on the bus specified by @bus_type and calls
+ * @name_appeared_handler and @name_vanished_handler when the name is
+ * known to have a owner respectively known to lose its
+ * owner. Callbacks will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this function from.
  *
- * - Application identifiers must not exceed 255 characters.
+ * You are guaranteed that one of the handlers will be invoked after
+ * calling this function. When you are done watching the name, just
+ * call g_bus_unwatch_name() with the watcher id this function
+ * returns.
  *
- * Note that the hyphen (`-`) character is allowed in application identifiers,
- * but is problematic or not allowed in various specifications and APIs that
- * refer to D-Bus, such as
- * [Flatpak application IDs](http://docs.flatpak.org/en/latest/introduction.html#identifiers),
- * the
- * [`DBusActivatable` interface in the Desktop Entry Specification](https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#dbus),
- * and the convention that an application's "main" interface and object path
- * resemble its application identifier and bus name. To avoid situations that
- * require special-case handling, it is recommended that new application
- * identifiers consistently replace hyphens with underscores.
+ * If the name vanishes or appears (for example the application owning
+ * the name could restart), the handlers are also invoked. If the
+ * #GDBusConnection that is used for watching the name disconnects, then
+ * @name_vanished_handler is invoked since it is no longer
+ * possible to access the name.
  *
- * Like D-Bus interface names, application identifiers should start with the
- * reversed DNS domain name of the author of the interface (in lower-case), and
- * it is conventional for the rest of the application identifier to consist of
- * words run together, with initial capital letters.
+ * Another guarantee is that invocations of @name_appeared_handler
+ * and @name_vanished_handler are guaranteed to alternate; that
+ * is, if @name_appeared_handler is invoked then you are
+ * guaranteed that the next time one of the handlers is invoked, it
+ * will be @name_vanished_handler. The reverse is also true.
  *
- * As with D-Bus interface names, if the author's DNS domain name contains
- * hyphen/minus characters they should be replaced by underscores, and if it
- * contains leading digits they should be escaped by prepending an underscore.
- * For example, if the owner of 7-zip.org used an application identifier for an
- * archiving application, it might be named `org._7_zip.Archiver`.
+ * This behavior makes it very simple to write applications that want
+ * to take action when a certain [name exists][gdbus-watching-names].
+ * Basically, the application should create object proxies in
+ * @name_appeared_handler and destroy them again (if any) in
+ * @name_vanished_handler.
  *
- * Returns: %TRUE if @application_id is valid
+ * Returns: An identifier (never 0) that an be used with
+ * g_bus_unwatch_name() to stop watching the name.
+ * Since: 2.26
  */
 
 
 /**
- * g_application_mark_busy:
- * @application: a #GApplication
- *
- * Increases the busy count of @application.
- *
- * Use this function to indicate that the application is busy, for instance
- * while a long running operation is pending.
- *
- * The busy state will be exposed to other processes, so a session shell will
- * use that information to indicate the state to the user (e.g. with a
- * spinner).
+ * g_bus_watch_name_on_connection:
+ * @connection: A #GDBusConnection.
+ * @name: The name (well-known or unique) to watch.
+ * @flags: Flags from the #GBusNameWatcherFlags enumeration.
+ * @name_appeared_handler: (nullable): Handler to invoke when @name is known to exist or %NULL.
+ * @name_vanished_handler: (nullable): Handler to invoke when @name is known to not exist or %NULL.
+ * @user_data: User data to pass to handlers.
+ * @user_data_free_func: (nullable): Function for freeing @user_data or %NULL.
  *
- * To cancel the busy indication, use g_application_unmark_busy().
+ * Like g_bus_watch_name() but takes a #GDBusConnection instead of a
+ * #GBusType.
  *
- * Since: 2.38
+ * Returns: An identifier (never 0) that an be used with
+ * g_bus_unwatch_name() to stop watching the name.
+ * Since: 2.26
  */
 
 
 /**
- * g_application_new:
- * @application_id: (nullable): the application id
- * @flags: the application flags
- *
- * Creates a new #GApplication instance.
- *
- * If non-%NULL, the application id must be valid.  See
- * g_application_id_is_valid().
+ * g_bus_watch_name_on_connection_with_closures: (rename-to g_bus_watch_name_on_connection)
+ * @connection: A #GDBusConnection.
+ * @name: The name (well-known or unique) to watch.
+ * @flags: Flags from the #GBusNameWatcherFlags enumeration.
+ * @name_appeared_closure: (nullable): #GClosure to invoke when @name is known
+ * to exist or %NULL.
+ * @name_vanished_closure: (nullable): #GClosure to invoke when @name is known
+ * to not exist or %NULL.
  *
- * If no application ID is given then some features of #GApplication
- * (most notably application uniqueness) will be disabled.
+ * Version of g_bus_watch_name_on_connection() using closures instead of callbacks for
+ * easier binding in other languages.
  *
- * Returns: a new #GApplication instance
+ * Returns: An identifier (never 0) that an be used with
+ * g_bus_unwatch_name() to stop watching the name.
+ * Since: 2.26
  */
 
 
 /**
- * g_application_open:
- * @application: a #GApplication
- * @files: (array length=n_files): an array of #GFiles to open
- * @n_files: the length of the @files array
- * @hint: a hint (or ""), but never %NULL
- *
- * Opens the given files.
- *
- * In essence, this results in the #GApplication::open signal being emitted
- * in the primary instance.
- *
- * @n_files must be greater than zero.
- *
- * @hint is simply passed through to the ::open signal.  It is
- * intended to be used by applications that have multiple modes for
- * opening files (eg: "view" vs "edit", etc).  Unless you have a need
- * for this functionality, you should use "".
+ * g_bus_watch_name_with_closures: (rename-to g_bus_watch_name)
+ * @bus_type: The type of bus to watch a name on.
+ * @name: The name (well-known or unique) to watch.
+ * @flags: Flags from the #GBusNameWatcherFlags enumeration.
+ * @name_appeared_closure: (nullable): #GClosure to invoke when @name is known
+ * to exist or %NULL.
+ * @name_vanished_closure: (nullable): #GClosure to invoke when @name is known
+ * to not exist or %NULL.
  *
- * The application must be registered before calling this function
- * and it must have the %G_APPLICATION_HANDLES_OPEN flag set.
+ * Version of g_bus_watch_name() using closures instead of callbacks for
+ * easier binding in other languages.
  *
- * Since: 2.28
+ * Returns: An identifier (never 0) that an be used with
+ * g_bus_unwatch_name() to stop watching the name.
+ * Since: 2.26
  */
 
 
 /**
- * g_application_quit:
- * @application: a #GApplication
- *
- * Immediately quits the application.
- *
- * Upon return to the mainloop, g_application_run() will return,
- * calling only the 'shutdown' function before doing so.
- *
- * The hold count is ignored.
- * Take care if your code has called g_application_hold() on the application and
- * is therefore still expecting it to exist.
- * (Note that you may have called g_application_hold() indirectly, for example
- * through gtk_application_add_window().)
+ * g_bytes_icon_get_bytes:
+ * @icon: a #GIcon.
  *
- * The result of calling g_application_run() again after it returns is
- * unspecified.
+ * Gets the #GBytes associated with the given @icon.
  *
- * Since: 2.32
+ * Returns: (transfer none): a #GBytes, or %NULL.
+ * Since: 2.38
  */
 
 
 /**
- * g_application_register:
- * @application: a #GApplication
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a pointer to a NULL #GError, or %NULL
- *
- * Attempts registration of the application.
- *
- * This is the point at which the application discovers if it is the
- * primary instance or merely acting as a remote for an already-existing
- * primary instance.  This is implemented by attempting to acquire the
- * application identifier as a unique bus name on the session bus using
- * GDBus.
- *
- * If there is no application ID or if %G_APPLICATION_NON_UNIQUE was
- * given, then this process will always become the primary instance.
- *
- * Due to the internal architecture of GDBus, method calls can be
- * dispatched at any time (even if a main loop is not running).  For
- * this reason, you must ensure that any object paths that you wish to
- * register are registered before calling this function.
- *
- * If the application has already been registered then %TRUE is
- * returned with no work performed.
- *
- * The #GApplication::startup signal is emitted if registration succeeds
- * and @application is the primary instance (including the non-unique
- * case).
- *
- * In the event of an error (such as @cancellable being cancelled, or a
- * failure to connect to the session bus), %FALSE is returned and @error
- * is set appropriately.
+ * g_bytes_icon_new:
+ * @bytes: a #GBytes.
  *
- * Note: the return value of this function is not an indicator that this
- * instance is or is not the primary instance of the application.  See
- * g_application_get_is_remote() for that.
+ * Creates a new icon for a bytes.
  *
- * Returns: %TRUE if registration succeeded
- * Since: 2.28
+ * Returns: (transfer full) (type GBytesIcon): a #GIcon for the given
+ *   @bytes, or %NULL on error.
+ * Since: 2.38
  */
 
 
 /**
- * g_application_release:
- * @application: a #GApplication
+ * g_cancellable_cancel:
+ * @cancellable: (nullable): a #GCancellable object.
  *
- * Decrease the use count of @application.
+ * Will set @cancellable to cancelled, and will emit the
+ * #GCancellable::cancelled signal. (However, see the warning about
+ * race conditions in the documentation for that signal if you are
+ * planning to connect to it.)
  *
- * When the use count reaches zero, the application will stop running.
+ * This function is thread-safe. In other words, you can safely call
+ * it from a thread other than the one running the operation that was
+ * passed the @cancellable.
  *
- * Never call this function except to cancel the effect of a previous
- * call to g_application_hold().
+ * If @cancellable is %NULL, this function returns immediately for convenience.
+ *
+ * The convention within GIO is that cancelling an asynchronous
+ * operation causes it to complete asynchronously. That is, if you
+ * cancel the operation from the same thread in which it is running,
+ * then the operation's #GAsyncReadyCallback will not be invoked until
+ * the application returns to the main loop.
  */
 
 
 /**
- * g_application_run:
- * @application: a #GApplication
- * @argc: the argc from main() (or 0 if @argv is %NULL)
- * @argv: (array length=argc) (element-type filename) (nullable):
- *     the argv from main(), or %NULL
- *
- * Runs the application.
- *
- * This function is intended to be run from main() and its return value
- * is intended to be returned by main(). Although you are expected to pass
- * the @argc, @argv parameters from main() to this function, it is possible
- * to pass %NULL if @argv is not available or commandline handling is not
- * required.  Note that on Windows, @argc and @argv are ignored, and
- * g_win32_get_command_line() is called internally (for proper support
- * of Unicode commandline arguments).
- *
- * #GApplication will attempt to parse the commandline arguments.  You
- * can add commandline flags to the list of recognised options by way of
- * g_application_add_main_option_entries().  After this, the
- * #GApplication::handle-local-options signal is emitted, from which the
- * application can inspect the values of its #GOptionEntrys.
- *
- * #GApplication::handle-local-options is a good place to handle options
- * such as `--version`, where an immediate reply from the local process is
- * desired (instead of communicating with an already-running instance).
- * A #GApplication::handle-local-options handler can stop further processing
- * by returning a non-negative value, which then becomes the exit status of
- * the process.
- *
- * What happens next depends on the flags: if
- * %G_APPLICATION_HANDLES_COMMAND_LINE was specified then the remaining
- * commandline arguments are sent to the primary instance, where a
- * #GApplication::command-line signal is emitted.  Otherwise, the
- * remaining commandline arguments are assumed to be a list of files.
- * If there are no files listed, the application is activated via the
- * #GApplication::activate signal.  If there are one or more files, and
- * %G_APPLICATION_HANDLES_OPEN was specified then the files are opened
- * via the #GApplication::open signal.
- *
- * If you are interested in doing more complicated local handling of the
- * commandline then you should implement your own #GApplication subclass
- * and override local_command_line(). In this case, you most likely want
- * to return %TRUE from your local_command_line() implementation to
- * suppress the default handling. See
- * [gapplication-example-cmdline2.c][gapplication-example-cmdline2]
- * for an example.
+ * g_cancellable_connect:
+ * @cancellable: A #GCancellable.
+ * @callback: The #GCallback to connect.
+ * @data: Data to pass to @callback.
+ * @data_destroy_func: (nullable): Free function for @data or %NULL.
  *
- * If, after the above is done, the use count of the application is zero
- * then the exit status is returned immediately.  If the use count is
- * non-zero then the default main context is iterated until the use count
- * falls to zero, at which point 0 is returned.
+ * Convenience function to connect to the #GCancellable::cancelled
+ * signal. Also handles the race condition that may happen
+ * if the cancellable is cancelled right before connecting.
  *
- * If the %G_APPLICATION_IS_SERVICE flag is set, then the service will
- * run for as much as 10 seconds with a use count of zero while waiting
- * for the message that caused the activation to arrive.  After that,
- * if the use count falls to zero the application will exit immediately,
- * except in the case that g_application_set_inactivity_timeout() is in
- * use.
+ * @callback is called at most once, either directly at the
+ * time of the connect if @cancellable is already cancelled,
+ * or when @cancellable is cancelled in some thread.
  *
- * This function sets the prgname (g_set_prgname()), if not already set,
- * to the basename of argv[0].
+ * @data_destroy_func will be called when the handler is
+ * disconnected, or immediately if the cancellable is already
+ * cancelled.
  *
- * Much like g_main_loop_run(), this function will acquire the main context
- * for the duration that the application is running.
+ * See #GCancellable::cancelled for details on how to use this.
  *
- * Since 2.40, applications that are not explicitly flagged as services
- * or launchers (ie: neither %G_APPLICATION_IS_SERVICE or
- * %G_APPLICATION_IS_LAUNCHER are given as flags) will check (from the
- * default handler for local_command_line) if "--gapplication-service"
- * was given in the command line.  If this flag is present then normal
- * commandline processing is interrupted and the
- * %G_APPLICATION_IS_SERVICE flag is set.  This provides a "compromise"
- * solution whereby running an application directly from the commandline
- * will invoke it in the normal way (which can be useful for debugging)
- * while still allowing applications to be D-Bus activated in service
- * mode.  The D-Bus service file should invoke the executable with
- * "--gapplication-service" as the sole commandline argument.  This
- * approach is suitable for use by most graphical applications but
- * should not be used from applications like editors that need precise
- * control over when processes invoked via the commandline will exit and
- * what their exit status will be.
+ * Since GLib 2.40, the lock protecting @cancellable is not held when
+ * @callback is invoked.  This lifts a restriction in place for
+ * earlier GLib versions which now makes it easier to write cleanup
+ * code that unconditionally invokes e.g. g_cancellable_cancel().
  *
- * Returns: the exit status
- * Since: 2.28
+ * Returns: The id of the signal handler or 0 if @cancellable has already
+ *          been cancelled.
+ * Since: 2.22
  */
 
 
 /**
- * g_application_send_notification:
- * @application: a #GApplication
- * @id: (nullable): id of the notification, or %NULL
- * @notification: the #GNotification to send
- *
- * Sends a notification on behalf of @application to the desktop shell.
- * There is no guarantee that the notification is displayed immediately,
- * or even at all.
- *
- * Notifications may persist after the application exits. It will be
- * D-Bus-activated when the notification or one of its actions is
- * activated.
- *
- * Modifying @notification after this call has no effect. However, the
- * object can be reused for a later call to this function.
- *
- * @id may be any string that uniquely identifies the event for the
- * application. It does not need to be in any special format. For
- * example, "new-message" might be appropriate for a notification about
- * new messages.
+ * g_cancellable_disconnect:
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @handler_id: Handler id of the handler to be disconnected, or `0`.
  *
- * If a previous notification was sent with the same @id, it will be
- * replaced with @notification and shown again as if it was a new
- * notification. This works even for notifications sent from a previous
- * execution of the application, as long as @id is the same string.
+ * Disconnects a handler from a cancellable instance similar to
+ * g_signal_handler_disconnect().  Additionally, in the event that a
+ * signal handler is currently running, this call will block until the
+ * handler has finished.  Calling this function from a
+ * #GCancellable::cancelled signal handler will therefore result in a
+ * deadlock.
  *
- * @id may be %NULL, but it is impossible to replace or withdraw
- * notifications without an id.
+ * This avoids a race condition where a thread cancels at the
+ * same time as the cancellable operation is finished and the
+ * signal handler is removed. See #GCancellable::cancelled for
+ * details on how to use this.
  *
- * If @notification is no longer relevant, it can be withdrawn with
- * g_application_withdraw_notification().
+ * If @cancellable is %NULL or @handler_id is `0` this function does
+ * nothing.
  *
- * Since: 2.40
+ * Since: 2.22
  */
 
 
 /**
- * g_application_set_action_group:
- * @application: a #GApplication
- * @action_group: (nullable): a #GActionGroup, or %NULL
+ * g_cancellable_get_current:
  *
- * This used to be how actions were associated with a #GApplication.
- * Now there is #GActionMap for that.
+ * Gets the top cancellable from the stack.
  *
- * Since: 2.28
- * Deprecated: 2.32: Use the #GActionMap interface instead.  Never ever
- * mix use of this API with use of #GActionMap on the same @application
- * or things will go very badly wrong.  This function is known to
- * introduce buggy behaviour (ie: signals not emitted on changes to the
- * action group), so you should really use #GActionMap instead.
+ * Returns: (nullable) (transfer none): a #GCancellable from the top
+ * of the stack, or %NULL if the stack is empty.
  */
 
 
 /**
- * g_application_set_application_id:
- * @application: a #GApplication
- * @application_id: (nullable): the identifier for @application
+ * g_cancellable_get_fd:
+ * @cancellable: a #GCancellable.
  *
- * Sets the unique identifier for @application.
+ * Gets the file descriptor for a cancellable job. This can be used to
+ * implement cancellable operations on Unix systems. The returned fd will
+ * turn readable when @cancellable is cancelled.
  *
- * The application id can only be modified if @application has not yet
- * been registered.
+ * You are not supposed to read from the fd yourself, just check for
+ * readable status. Reading to unset the readable status is done
+ * with g_cancellable_reset().
  *
- * If non-%NULL, the application id must be valid.  See
- * g_application_id_is_valid().
+ * After a successful return from this function, you should use
+ * g_cancellable_release_fd() to free up resources allocated for
+ * the returned file descriptor.
  *
- * Since: 2.28
+ * See also g_cancellable_make_pollfd().
+ *
+ * Returns: A valid file descriptor. %-1 if the file descriptor
+ * is not supported, or on errors.
  */
 
 
 /**
- * g_application_set_default:
- * @application: (nullable): the application to set as default, or %NULL
- *
- * Sets or unsets the default application for the process, as returned
- * by g_application_get_default().
+ * g_cancellable_is_cancelled:
+ * @cancellable: (nullable): a #GCancellable or %NULL
  *
- * This function does not take its own reference on @application.  If
- * @application is destroyed then the default application will revert
- * back to %NULL.
+ * Checks if a cancellable job has been cancelled.
  *
- * Since: 2.32
+ * Returns: %TRUE if @cancellable is cancelled,
+ * FALSE if called with %NULL or if item is not cancelled.
  */
 
 
 /**
- * g_application_set_flags:
- * @application: a #GApplication
- * @flags: the flags for @application
+ * g_cancellable_make_pollfd:
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @pollfd: a pointer to a #GPollFD
  *
- * Sets the flags for @application.
+ * Creates a #GPollFD corresponding to @cancellable; this can be passed
+ * to g_poll() and used to poll for cancellation. This is useful both
+ * for unix systems without a native poll and for portability to
+ * windows.
  *
- * The flags can only be modified if @application has not yet been
- * registered.
+ * When this function returns %TRUE, you should use
+ * g_cancellable_release_fd() to free up resources allocated for the
+ * @pollfd. After a %FALSE return, do not call g_cancellable_release_fd().
  *
- * See #GApplicationFlags.
+ * If this function returns %FALSE, either no @cancellable was given or
+ * resource limits prevent this function from allocating the necessary
+ * structures for polling. (On Linux, you will likely have reached
+ * the maximum number of file descriptors.) The suggested way to handle
+ * these cases is to ignore the @cancellable.
  *
- * Since: 2.28
+ * You are not supposed to read from the fd yourself, just check for
+ * readable status. Reading to unset the readable status is done
+ * with g_cancellable_reset().
+ *
+ * Returns: %TRUE if @pollfd was successfully initialized, %FALSE on
+ *          failure to prepare the cancellable.
+ * Since: 2.22
  */
 
 
 /**
- * g_application_set_inactivity_timeout:
- * @application: a #GApplication
- * @inactivity_timeout: the timeout, in milliseconds
+ * g_cancellable_new:
  *
- * Sets the current inactivity timeout for the application.
+ * Creates a new #GCancellable object.
  *
- * This is the amount of time (in milliseconds) after the last call to
- * g_application_release() before the application stops running.
+ * Applications that want to start one or more operations
+ * that should be cancellable should create a #GCancellable
+ * and pass it to the operations.
  *
- * This call has no side effects of its own.  The value set here is only
- * used for next time g_application_release() drops the use count to
- * zero.  Any timeouts currently in progress are not impacted.
+ * One #GCancellable can be used in multiple consecutive
+ * operations or in multiple concurrent operations.
  *
- * Since: 2.28
+ * Returns: a #GCancellable.
  */
 
 
 /**
- * g_application_set_option_context_description:
- * @application: the #GApplication
- * @description: (nullable): a string to be shown in `--help` output
- *  after the list of options, or %NULL
- *
- * Adds a description to the @application option context.
- *
- * See g_option_context_set_description() for more information.
+ * g_cancellable_pop_current:
+ * @cancellable: a #GCancellable object
  *
- * Since: 2.56
+ * Pops @cancellable off the cancellable stack (verifying that @cancellable
+ * is on the top of the stack).
  */
 
 
 /**
- * g_application_set_option_context_parameter_string:
- * @application: the #GApplication
- * @parameter_string: (nullable): a string which is displayed
- *   in the first line of `--help` output, after the usage summary `programname [OPTION...]`.
+ * g_cancellable_push_current:
+ * @cancellable: a #GCancellable object
  *
- * Sets the parameter string to be used by the commandline handling of @application.
+ * Pushes @cancellable onto the cancellable stack. The current
+ * cancellable can then be received using g_cancellable_get_current().
  *
- * This function registers the argument to be passed to g_option_context_new()
- * when the internal #GOptionContext of @application is created.
+ * This is useful when implementing cancellable operations in
+ * code that does not allow you to pass down the cancellable object.
  *
- * See g_option_context_new() for more information about @parameter_string.
- *
- * Since: 2.56
+ * This is typically called automatically by e.g. #GFile operations,
+ * so you rarely have to call this yourself.
  */
 
 
 /**
- * g_application_set_option_context_summary:
- * @application: the #GApplication
- * @summary: (nullable): a string to be shown in `--help` output
- *  before the list of options, or %NULL
+ * g_cancellable_release_fd:
+ * @cancellable: a #GCancellable
  *
- * Adds a summary to the @application option context.
+ * Releases a resources previously allocated by g_cancellable_get_fd()
+ * or g_cancellable_make_pollfd().
  *
- * See g_option_context_set_summary() for more information.
+ * For compatibility reasons with older releases, calling this function
+ * is not strictly required, the resources will be automatically freed
+ * when the @cancellable is finalized. However, the @cancellable will
+ * block scarce file descriptors until it is finalized if this function
+ * is not called. This can cause the application to run out of file
+ * descriptors when many #GCancellables are used at the same time.
  *
- * Since: 2.56
+ * Since: 2.22
  */
 
 
 /**
- * g_application_set_resource_base_path:
- * @application: a #GApplication
- * @resource_path: (nullable): the resource path to use
- *
- * Sets (or unsets) the base resource path of @application.
- *
- * The path is used to automatically load various [application
- * resources][gresource] such as menu layouts and action descriptions.
- * The various types of resources will be found at fixed names relative
- * to the given base path.
- *
- * By default, the resource base path is determined from the application
- * ID by prefixing '/' and replacing each '.' with '/'.  This is done at
- * the time that the #GApplication object is constructed.  Changes to
- * the application ID after that point will not have an impact on the
- * resource base path.
- *
- * As an example, if the application has an ID of "org.example.app" then
- * the default resource base path will be "/org/example/app".  If this
- * is a #GtkApplication (and you have not manually changed the path)
- * then Gtk will then search for the menus of the application at
- * "/org/example/app/gtk/menus.ui".
- *
- * See #GResource for more information about adding resources to your
- * application.
+ * g_cancellable_reset:
+ * @cancellable: a #GCancellable object.
  *
- * You can disable automatic resource loading functionality by setting
- * the path to %NULL.
+ * Resets @cancellable to its uncancelled state.
  *
- * Changing the resource base path once the application is running is
- * not recommended.  The point at which the resource path is consulted
- * for forming paths for various purposes is unspecified.  When writing
- * a sub-class of #GApplication you should either set the
- * #GApplication:resource-base-path property at construction time, or call
- * this function during the instance initialization. Alternatively, you
- * can call this function in the #GApplicationClass.startup virtual function,
- * before chaining up to the parent implementation.
+ * If cancellable is currently in use by any cancellable operation
+ * then the behavior of this function is undefined.
  *
- * Since: 2.42
+ * Note that it is generally not a good idea to reuse an existing
+ * cancellable for more operations after it has been cancelled once,
+ * as this function might tempt you to do. The recommended practice
+ * is to drop the reference to a cancellable after cancelling it,
+ * and let it die with the outstanding async operations. You should
+ * create a fresh cancellable for further async operations.
  */
 
 
 /**
- * g_application_unbind_busy_property:
- * @application: a #GApplication
- * @object: (type GObject.Object): a #GObject
- * @property: the name of a boolean property of @object
+ * g_cancellable_set_error_if_cancelled:
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: #GError to append error state to
  *
- * Destroys a binding between @property and the busy state of
- * @application that was previously created with
- * g_application_bind_busy_property().
+ * If the @cancellable is cancelled, sets the error to notify
+ * that the operation was cancelled.
  *
- * Since: 2.44
+ * Returns: %TRUE if @cancellable was cancelled, %FALSE if it was not
  */
 
 
 /**
- * g_application_unmark_busy:
- * @application: a #GApplication
+ * g_cancellable_source_new: (skip)
+ * @cancellable: (nullable): a #GCancellable, or %NULL
  *
- * Decreases the busy count of @application.
+ * Creates a source that triggers if @cancellable is cancelled and
+ * calls its callback of type #GCancellableSourceFunc. This is
+ * primarily useful for attaching to another (non-cancellable) source
+ * with g_source_add_child_source() to add cancellability to it.
  *
- * When the busy count reaches zero, the new state will be propagated
- * to other processes.
+ * For convenience, you can call this with a %NULL #GCancellable,
+ * in which case the source will never trigger.
  *
- * This function must only be called to cancel the effect of a previous
- * call to g_application_mark_busy().
+ * The new #GSource will hold a reference to the #GCancellable.
  *
- * Since: 2.38
+ * Returns: (transfer full): the new #GSource.
+ * Since: 2.28
  */
 
 
 /**
- * g_application_withdraw_notification:
- * @application: a #GApplication
- * @id: id of a previously sent notification
- *
- * Withdraws a notification that was sent with
- * g_application_send_notification().
- *
- * This call does nothing if a notification with @id doesn't exist or
- * the notification was never sent.
- *
- * This function works even for notifications sent in previous
- * executions of this application, as long @id is the same as it was for
- * the sent notification.
+ * g_charset_converter_get_num_fallbacks:
+ * @converter: a #GCharsetConverter
  *
- * Note that notifications are dismissed when the user clicks on one
- * of the buttons in a notification or triggers its default action, so
- * there is no need to explicitly withdraw the notification in that case.
+ * Gets the number of fallbacks that @converter has applied so far.
  *
- * Since: 2.40
+ * Returns: the number of fallbacks that @converter has applied
+ * Since: 2.24
  */
 
 
 /**
- * g_async_initable_init_async:
- * @initable: a #GAsyncInitable.
- * @io_priority: the [I/O priority][io-priority] of the operation
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
- *
- * Starts asynchronous initialization of the object implementing the
- * interface. This must be done before any real use of the object after
- * initial construction. If the object also implements #GInitable you can
- * optionally call g_initable_init() instead.
- *
- * This method is intended for language bindings. If writing in C,
- * g_async_initable_new_async() should typically be used instead.
- *
- * When the initialization is finished, @callback will be called. You can
- * then call g_async_initable_init_finish() to get the result of the
- * initialization.
- *
- * Implementations may also support cancellation. If @cancellable is not
- * %NULL, then initialization can be cancelled by triggering the cancellable
- * object from another thread. If the operation was cancelled, the error
- * %G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL, and
- * the object doesn't support cancellable initialization, the error
- * %G_IO_ERROR_NOT_SUPPORTED will be returned.
- *
- * As with #GInitable, if the object is not initialized, or initialization
- * returns with an error, then all operations on the object except
- * g_object_ref() and g_object_unref() are considered to be invalid, and
- * have undefined behaviour. They will often fail with g_critical() or
- * g_warning(), but this must not be relied on.
- *
- * Callers should not assume that a class which implements #GAsyncInitable can
- * be initialized multiple times; for more information, see g_initable_init().
- * If a class explicitly supports being initialized multiple times,
- * implementation requires yielding all subsequent calls to init_async() on the
- * results of the first call.
+ * g_charset_converter_get_use_fallback:
+ * @converter: a #GCharsetConverter
  *
- * For classes that also support the #GInitable interface, the default
- * implementation of this method will run the g_initable_init() function
- * in a thread, so if you want to support asynchronous initialization via
- * threads, just implement the #GAsyncInitable interface without overriding
- * any interface methods.
+ * Gets the #GCharsetConverter:use-fallback property.
  *
- * Since: 2.22
+ * Returns: %TRUE if fallbacks are used by @converter
+ * Since: 2.24
  */
 
 
 /**
- * g_async_initable_init_finish:
- * @initable: a #GAsyncInitable.
- * @res: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_charset_converter_new:
+ * @to_charset: destination charset
+ * @from_charset: source charset
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Finishes asynchronous initialization and returns the result.
- * See g_async_initable_init_async().
+ * Creates a new #GCharsetConverter.
  *
- * Returns: %TRUE if successful. If an error has occurred, this function
- * will return %FALSE and set @error appropriately if present.
- * Since: 2.22
+ * Returns: a new #GCharsetConverter or %NULL on error.
+ * Since: 2.24
  */
 
 
 /**
- * g_async_initable_new_async:
- * @object_type: a #GType supporting #GAsyncInitable.
- * @io_priority: the [I/O priority][io-priority] of the operation
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the initialization is
- *     finished
- * @user_data: the data to pass to callback function
- * @first_property_name: (nullable): the name of the first property, or %NULL if no
- *     properties
- * @...: the value of the first property, followed by other property
- *    value pairs, and ended by %NULL.
- *
- * Helper function for constructing #GAsyncInitable object. This is
- * similar to g_object_new() but also initializes the object asynchronously.
+ * g_charset_converter_set_use_fallback:
+ * @converter: a #GCharsetConverter
+ * @use_fallback: %TRUE to use fallbacks
  *
- * When the initialization is finished, @callback will be called. You can
- * then call g_async_initable_new_finish() to get the new object and check
- * for any errors.
+ * Sets the #GCharsetConverter:use-fallback property.
  *
- * Since: 2.22
+ * Since: 2.24
  */
 
 
 /**
- * g_async_initable_new_finish:
- * @initable: the #GAsyncInitable from the callback
- * @res: the #GAsyncResult from the callback
- * @error: return location for errors, or %NULL to ignore
+ * g_content_type_can_be_executable:
+ * @type: a content type string
  *
- * Finishes the async construction for the various g_async_initable_new
- * calls, returning the created object or %NULL on error.
+ * Checks if a content type can be executable. Note that for instance
+ * things like text files can be executables (i.e. scripts and batch files).
  *
- * Returns: (type GObject.Object) (transfer full): a newly created #GObject,
- *      or %NULL on error. Free with g_object_unref().
- * Since: 2.22
+ * Returns: %TRUE if the file type corresponds to a type that
+ *     can be executable, %FALSE otherwise.
  */
 
 
 /**
- * g_async_initable_new_valist_async:
- * @object_type: a #GType supporting #GAsyncInitable.
- * @first_property_name: the name of the first property, followed by
- * the value, and other property value pairs, and ended by %NULL.
- * @var_args: The var args list generated from @first_property_name.
- * @io_priority: the [I/O priority][io-priority] of the operation
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the initialization is
- *     finished
- * @user_data: the data to pass to callback function
- *
- * Helper function for constructing #GAsyncInitable object. This is
- * similar to g_object_new_valist() but also initializes the object
- * asynchronously.
+ * g_content_type_equals:
+ * @type1: a content type string
+ * @type2: a content type string
  *
- * When the initialization is finished, @callback will be called. You can
- * then call g_async_initable_new_finish() to get the new object and check
- * for any errors.
+ * Compares two content types for equality.
  *
- * Since: 2.22
+ * Returns: %TRUE if the two strings are identical or equivalent,
+ *     %FALSE otherwise.
  */
 
 
 /**
- * g_async_initable_newv_async:
- * @object_type: a #GType supporting #GAsyncInitable.
- * @n_parameters: the number of parameters in @parameters
- * @parameters: the parameters to use to construct the object
- * @io_priority: the [I/O priority][io-priority] of the operation
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: a #GAsyncReadyCallback to call when the initialization is
- *     finished
- * @user_data: the data to pass to callback function
- *
- * Helper function for constructing #GAsyncInitable object. This is
- * similar to g_object_newv() but also initializes the object asynchronously.
+ * g_content_type_from_mime_type:
+ * @mime_type: a mime type string
  *
- * When the initialization is finished, @callback will be called. You can
- * then call g_async_initable_new_finish() to get the new object and check
- * for any errors.
+ * Tries to find a content type based on the mime type name.
  *
- * Since: 2.22
- * Deprecated: 2.54: Use g_object_new_with_properties() and
- * g_async_initable_init_async() instead. See #GParameter for more information.
+ * Returns: (nullable): Newly allocated string with content type or
+ *     %NULL. Free with g_free()
+ * Since: 2.18
  */
 
 
 /**
- * g_async_result_get_source_object:
- * @res: a #GAsyncResult
+ * g_content_type_get_description:
+ * @type: a content type string
  *
- * Gets the source object from a #GAsyncResult.
+ * Gets the human readable description of the content type.
  *
- * Returns: (transfer full) (nullable): a new reference to the source
- *    object for the @res, or %NULL if there is none.
+ * Returns: a short description of the content type @type. Free the
+ *     returned string with g_free()
  */
 
 
 /**
- * g_async_result_get_user_data:
- * @res: a #GAsyncResult.
- *
- * Gets the user data from a #GAsyncResult.
+ * g_content_type_get_generic_icon_name:
+ * @type: a content type string
  *
- * Returns: (transfer full): the user data for @res.
- */
-
-
-/**
- * g_async_result_is_tagged:
- * @res: a #GAsyncResult
- * @source_tag: an application-defined tag
+ * Gets the generic icon name for a content type.
  *
- * Checks if @res has the given @source_tag (generally a function
- * pointer indicating the function @res was created by).
+ * See the
+ * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
+ * specification for more on the generic icon name.
  *
- * Returns: %TRUE if @res has the indicated @source_tag, %FALSE if
- *   not.
+ * Returns: (nullable): the registered generic icon name for the given @type,
+ *     or %NULL if unknown. Free with g_free()
  * Since: 2.34
  */
 
 
 /**
- * g_async_result_legacy_propagate_error:
- * @res: a #GAsyncResult
- * @error: (out): a location to propagate the error to.
- *
- * If @res is a #GSimpleAsyncResult, this is equivalent to
- * g_simple_async_result_propagate_error(). Otherwise it returns
- * %FALSE.
+ * g_content_type_get_icon:
+ * @type: a content type string
  *
- * This can be used for legacy error handling in async *_finish()
- * wrapper functions that traditionally handled #GSimpleAsyncResult
- * error returns themselves rather than calling into the virtual method.
- * This should not be used in new code; #GAsyncResult errors that are
- * set by virtual methods should also be extracted by virtual methods,
- * to enable subclasses to chain up correctly.
+ * Gets the icon for a content type.
  *
- * Returns: %TRUE if @error is has been filled in with an error from
- *   @res, %FALSE if not.
- * Since: 2.34
+ * Returns: (transfer full): #GIcon corresponding to the content type. Free the returned
+ *     object with g_object_unref()
  */
 
 
 /**
- * g_buffered_input_stream_fill:
- * @stream: a #GBufferedInputStream
- * @count: the number of bytes that will be read from the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Tries to read @count bytes from the stream into the buffer.
- * Will block during this read.
- *
- * If @count is zero, returns zero and does nothing. A value of @count
- * larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
- *
- * On success, the number of bytes read into the buffer is returned.
- * It is not an error if this is not the same as the requested size, as it
- * can happen e.g. near the end of a file. Zero is returned on end of file
- * (or if @count is zero),  but never otherwise.
- *
- * If @count is -1 then the attempted read size is equal to the number of
- * bytes that are required to fill the buffer.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
- * operation was partially finished when the operation was cancelled the
- * partial result will be returned, without an error.
- *
- * On error -1 is returned and @error is set accordingly.
+ * g_content_type_get_mime_type:
+ * @type: a content type string
  *
- * For the asynchronous, non-blocking, version of this function, see
- * g_buffered_input_stream_fill_async().
+ * Gets the mime type for the content type, if one is registered.
  *
- * Returns: the number of bytes read into @stream's buffer, up to @count,
- *     or -1 on error.
+ * Returns: (nullable) (transfer full): the registered mime type for the
+ *     given @type, or %NULL if unknown; free with g_free().
  */
 
 
 /**
- * g_buffered_input_stream_fill_async:
- * @stream: a #GBufferedInputStream
- * @count: the number of bytes that will be read from the stream
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): a #gpointer
+ * g_content_type_get_symbolic_icon:
+ * @type: a content type string
  *
- * Reads data into @stream's buffer asynchronously, up to @count size.
- * @io_priority can be used to prioritize reads. For the synchronous
- * version of this function, see g_buffered_input_stream_fill().
+ * Gets the symbolic icon for a content type.
  *
- * If @count is -1 then the attempted read size is equal to the number
- * of bytes that are required to fill the buffer.
+ * Returns: (transfer full): symbolic #GIcon corresponding to the content type.
+ *     Free the returned object with g_object_unref()
+ * Since: 2.34
  */
 
 
 /**
- * g_buffered_input_stream_fill_finish:
- * @stream: a #GBufferedInputStream
- * @result: a #GAsyncResult
- * @error: a #GError
+ * g_content_type_guess:
+ * @filename: (nullable): a string, or %NULL
+ * @data: (nullable) (array length=data_size): a stream of data, or %NULL
+ * @data_size: the size of @data
+ * @result_uncertain: (out) (optional): return location for the certainty
+ *     of the result, or %NULL
  *
- * Finishes an asynchronous read.
+ * Guesses the content type based on example data. If the function is
+ * uncertain, @result_uncertain will be set to %TRUE. Either @filename
+ * or @data may be %NULL, in which case the guess will be based solely
+ * on the other argument.
  *
- * Returns: a #gssize of the read stream, or `-1` on an error.
+ * Returns: a string indicating a guessed content type for the
+ *     given data. Free with g_free()
  */
 
 
 /**
- * g_buffered_input_stream_get_available:
- * @stream: #GBufferedInputStream
+ * g_content_type_guess_for_tree:
+ * @root: the root of the tree to guess a type for
  *
- * Gets the size of the available data within the stream.
+ * Tries to guess the type of the tree with root @root, by
+ * looking at the files it contains. The result is an array
+ * of content types, with the best guess coming first.
  *
- * Returns: size of the available stream.
- */
-
-
-/**
- * g_buffered_input_stream_get_buffer_size:
- * @stream: a #GBufferedInputStream
+ * The types returned all have the form x-content/foo, e.g.
+ * x-content/audio-cdda (for audio CDs) or x-content/image-dcf
+ * (for a camera memory card). See the
+ * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
+ * specification for more on x-content types.
  *
- * Gets the size of the input buffer.
+ * This function is useful in the implementation of
+ * g_mount_guess_content_type().
  *
- * Returns: the current buffer size.
+ * Returns: (transfer full) (array zero-terminated=1): an %NULL-terminated
+ *     array of zero or more content types. Free with g_strfreev()
+ * Since: 2.18
  */
 
 
 /**
- * g_buffered_input_stream_new:
- * @base_stream: a #GInputStream
+ * g_content_type_is_a:
+ * @type: a content type string
+ * @supertype: a content type string
  *
- * Creates a new #GInputStream from the given @base_stream, with
- * a buffer set to the default size (4 kilobytes).
+ * Determines if @type is a subset of @supertype.
  *
- * Returns: a #GInputStream for the given @base_stream.
+ * Returns: %TRUE if @type is a kind of @supertype,
+ *     %FALSE otherwise.
  */
 
 
 /**
- * g_buffered_input_stream_new_sized:
- * @base_stream: a #GInputStream
- * @size: a #gsize
+ * g_content_type_is_mime_type:
+ * @type: a content type string
+ * @mime_type: a mime type string
  *
- * Creates a new #GBufferedInputStream from the given @base_stream,
- * with a buffer set to @size.
+ * Determines if @type is a subset of @mime_type.
+ * Convenience wrapper around g_content_type_is_a().
  *
- * Returns: a #GInputStream.
+ * Returns: %TRUE if @type is a kind of @mime_type,
+ *     %FALSE otherwise.
+ * Since: 2.52
  */
 
 
 /**
- * g_buffered_input_stream_peek:
- * @stream: a #GBufferedInputStream
- * @buffer: (array length=count) (element-type guint8): a pointer to
- *   an allocated chunk of memory
- * @offset: a #gsize
- * @count: a #gsize
+ * g_content_type_is_unknown:
+ * @type: a content type string
  *
- * Peeks in the buffer, copying data of size @count into @buffer,
- * offset @offset bytes.
+ * Checks if the content type is the generic "unknown" type.
+ * On UNIX this is the "application/octet-stream" mimetype,
+ * while on win32 it is "*" and on OSX it is a dynamic type
+ * or octet-stream.
  *
- * Returns: a #gsize of the number of bytes peeked, or -1 on error.
+ * Returns: %TRUE if the type is the unknown type.
  */
 
 
 /**
- * g_buffered_input_stream_peek_buffer:
- * @stream: a #GBufferedInputStream
- * @count: (out): a #gsize to get the number of bytes available in the buffer
+ * g_content_types_get_registered:
  *
- * Returns the buffer with the currently available bytes. The returned
- * buffer must not be modified and will become invalid when reading from
- * the stream or filling the buffer.
+ * Gets a list of strings containing all the registered content types
+ * known to the system. The list and its data should be freed using
+ * g_list_free_full (list, g_free).
  *
- * Returns: (array length=count) (element-type guint8) (transfer none):
- *          read-only buffer
+ * Returns: (element-type utf8) (transfer full): list of the registered
+ *     content types
  */
 
 
 /**
- * g_buffered_input_stream_read_byte:
- * @stream: a #GBufferedInputStream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * g_converter_convert:
+ * @converter: a #GConverter.
+ * @inbuf: (array length=inbuf_size) (element-type guint8): the buffer
+ *         containing the data to convert.
+ * @inbuf_size: the number of bytes in @inbuf
+ * @outbuf: (element-type guint8) (array length=outbuf_size): a buffer to write
+ *    converted data in.
+ * @outbuf_size: the number of bytes in @outbuf, must be at least one
+ * @flags: a #GConverterFlags controlling the conversion details
+ * @bytes_read: (out): will be set to the number of bytes read from @inbuf on success
+ * @bytes_written: (out): will be set to the number of bytes written to @outbuf on success
  * @error: location to store the error occurring, or %NULL to ignore
  *
- * Tries to read a single byte from the stream or the buffer. Will block
- * during this read.
+ * This is the main operation used when converting data. It is to be called
+ * multiple times in a loop, and each time it will do some work, i.e.
+ * producing some output (in @outbuf) or consuming some input (from @inbuf) or
+ * both. If its not possible to do any work an error is returned.
  *
- * On success, the byte read from the stream is returned. On end of stream
- * -1 is returned but it's not an exceptional error and @error is not set.
+ * Note that a single call may not consume all input (or any input at all).
+ * Also a call may produce output even if given no input, due to state stored
+ * in the converter producing output.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
- * operation was partially finished when the operation was cancelled the
- * partial result will be returned, without an error.
+ * If any data was either produced or consumed, and then an error happens, then
+ * only the successful conversion is reported and the error is returned on the
+ * next call.
  *
- * On error -1 is returned and @error is set accordingly.
+ * A full conversion loop involves calling this method repeatedly, each time
+ * giving it new input and space output space. When there is no more input
+ * data after the data in @inbuf, the flag %G_CONVERTER_INPUT_AT_END must be set.
+ * The loop will be (unless some error happens) returning %G_CONVERTER_CONVERTED
+ * each time until all data is consumed and all output is produced, then
+ * %G_CONVERTER_FINISHED is returned instead. Note, that %G_CONVERTER_FINISHED
+ * may be returned even if %G_CONVERTER_INPUT_AT_END is not set, for instance
+ * in a decompression converter where the end of data is detectable from the
+ * data (and there might even be other data after the end of the compressed data).
  *
- * Returns: the byte read from the @stream, or -1 on end of stream or error.
- */
-
-
-/**
- * g_buffered_input_stream_set_buffer_size:
- * @stream: a #GBufferedInputStream
- * @size: a #gsize
+ * When some data has successfully been converted @bytes_read and is set to
+ * the number of bytes read from @inbuf, and @bytes_written is set to indicate
+ * how many bytes was written to @outbuf. If there are more data to output
+ * or consume (i.e. unless the %G_CONVERTER_INPUT_AT_END is specified) then
+ * %G_CONVERTER_CONVERTED is returned, and if no more data is to be output
+ * then %G_CONVERTER_FINISHED is returned.
  *
- * Sets the size of the internal buffer of @stream to @size, or to the
- * size of the contents of the buffer. The buffer can never be resized
- * smaller than its current contents.
- */
-
-
-/**
- * g_buffered_output_stream_get_auto_grow:
- * @stream: a #GBufferedOutputStream.
+ * On error %G_CONVERTER_ERROR is returned and @error is set accordingly.
+ * Some errors need special handling:
  *
- * Checks if the buffer automatically grows as data is added.
+ * %G_IO_ERROR_NO_SPACE is returned if there is not enough space
+ * to write the resulting converted data, the application should
+ * call the function again with a larger @outbuf to continue.
  *
- * Returns: %TRUE if the @stream's buffer automatically grows,
- * %FALSE otherwise.
+ * %G_IO_ERROR_PARTIAL_INPUT is returned if there is not enough
+ * input to fully determine what the conversion should produce,
+ * and the %G_CONVERTER_INPUT_AT_END flag is not set. This happens for
+ * example with an incomplete multibyte sequence when converting text,
+ * or when a regexp matches up to the end of the input (and may match
+ * further input). It may also happen when @inbuf_size is zero and
+ * there is no more data to produce.
+ *
+ * When this happens the application should read more input and then
+ * call the function again. If further input shows that there is no
+ * more data call the function again with the same data but with
+ * the %G_CONVERTER_INPUT_AT_END flag set. This may cause the conversion
+ * to finish as e.g. in the regexp match case (or, to fail again with
+ * %G_IO_ERROR_PARTIAL_INPUT in e.g. a charset conversion where the
+ * input is actually partial).
+ *
+ * After g_converter_convert() has returned %G_CONVERTER_FINISHED the
+ * converter object is in an invalid state where its not allowed
+ * to call g_converter_convert() anymore. At this time you can only
+ * free the object or call g_converter_reset() to reset it to the
+ * initial state.
+ *
+ * If the flag %G_CONVERTER_FLUSH is set then conversion is modified
+ * to try to write out all internal state to the output. The application
+ * has to call the function multiple times with the flag set, and when
+ * the available input has been consumed and all internal state has
+ * been produced then %G_CONVERTER_FLUSHED (or %G_CONVERTER_FINISHED if
+ * really at the end) is returned instead of %G_CONVERTER_CONVERTED.
+ * This is somewhat similar to what happens at the end of the input stream,
+ * but done in the middle of the data.
+ *
+ * This has different meanings for different conversions. For instance
+ * in a compression converter it would mean that we flush all the
+ * compression state into output such that if you uncompress the
+ * compressed data you get back all the input data. Doing this may
+ * make the final file larger due to padding though. Another example
+ * is a regexp conversion, where if you at the end of the flushed data
+ * have a match, but there is also a potential longer match. In the
+ * non-flushed case we would ask for more input, but when flushing we
+ * treat this as the end of input and do the match.
+ *
+ * Flushing is not always possible (like if a charset converter flushes
+ * at a partial multibyte sequence). Converters are supposed to try
+ * to produce as much output as possible and then return an error
+ * (typically %G_IO_ERROR_PARTIAL_INPUT).
+ *
+ * Returns: a #GConverterResult, %G_CONVERTER_ERROR on error.
+ * Since: 2.24
  */
 
 
 /**
- * g_buffered_output_stream_get_buffer_size:
- * @stream: a #GBufferedOutputStream.
+ * g_converter_input_stream_get_converter:
+ * @converter_stream: a #GConverterInputStream
  *
- * Gets the size of the buffer in the @stream.
+ * Gets the #GConverter that is used by @converter_stream.
  *
- * Returns: the current size of the buffer.
+ * Returns: (transfer none): the converter of the converter input stream
+ * Since: 2.24
  */
 
 
 /**
- * g_buffered_output_stream_new:
- * @base_stream: a #GOutputStream.
+ * g_converter_input_stream_new:
+ * @base_stream: a #GInputStream
+ * @converter: a #GConverter
  *
- * Creates a new buffered output stream for a base stream.
+ * Creates a new converter input stream for the @base_stream.
  *
- * Returns: a #GOutputStream for the given @base_stream.
+ * Returns: a new #GInputStream.
  */
 
 
 /**
- * g_buffered_output_stream_new_sized:
- * @base_stream: a #GOutputStream.
- * @size: a #gsize.
+ * g_converter_output_stream_get_converter:
+ * @converter_stream: a #GConverterOutputStream
  *
- * Creates a new buffered output stream with a given buffer size.
+ * Gets the #GConverter that is used by @converter_stream.
  *
- * Returns: a #GOutputStream with an internal buffer set to @size.
+ * Returns: (transfer none): the converter of the converter output stream
+ * Since: 2.24
  */
 
 
 /**
- * g_buffered_output_stream_set_auto_grow:
- * @stream: a #GBufferedOutputStream.
- * @auto_grow: a #gboolean.
+ * g_converter_output_stream_new:
+ * @base_stream: a #GOutputStream
+ * @converter: a #GConverter
  *
- * Sets whether or not the @stream's buffer should automatically grow.
- * If @auto_grow is true, then each write will just make the buffer
- * larger, and you must manually flush the buffer to actually write out
- * the data to the underlying stream.
+ * Creates a new converter output stream for the @base_stream.
+ *
+ * Returns: a new #GOutputStream.
  */
 
 
 /**
- * g_buffered_output_stream_set_buffer_size:
- * @stream: a #GBufferedOutputStream.
- * @size: a #gsize.
+ * g_converter_reset:
+ * @converter: a #GConverter.
  *
- * Sets the size of the internal buffer to @size.
+ * Resets all internal state in the converter, making it behave
+ * as if it was just created. If the converter has any internal
+ * state that would produce output then that output is lost.
+ *
+ * Since: 2.24
  */
 
 
 /**
- * g_bus_get:
- * @bus_type: a #GBusType
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to @callback
- *
- * Asynchronously connects to the message bus specified by @bus_type.
+ * g_credentials_get_native: (skip)
+ * @credentials: A #GCredentials.
+ * @native_type: The type of native credentials to get.
  *
- * When the operation is finished, @callback will be invoked. You can
- * then call g_bus_get_finish() to get the result of the operation.
+ * Gets a pointer to native credentials of type @native_type from
+ * @credentials.
  *
- * This is a asynchronous failable function. See g_bus_get_sync() for
- * the synchronous version.
+ * It is a programming error (which will cause an warning to be
+ * logged) to use this method if there is no #GCredentials support for
+ * the OS or if @native_type isn't supported by the OS.
  *
+ * Returns: The pointer to native credentials or %NULL if the
+ * operation there is no #GCredentials support for the OS or if
+ * @native_type isn't supported by the OS. Do not free the returned
+ * data, it is owned by @credentials.
  * Since: 2.26
  */
 
 
 /**
- * g_bus_get_finish:
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
- *     to g_bus_get()
- * @error: return location for error or %NULL
- *
- * Finishes an operation started with g_bus_get().
+ * g_credentials_get_unix_pid:
+ * @credentials: A #GCredentials
+ * @error: Return location for error or %NULL.
  *
- * The returned object is a singleton, that is, shared with other
- * callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
- * event that you need a private message bus connection, use
- * g_dbus_address_get_for_bus_sync() and
- * g_dbus_connection_new_for_address().
+ * Tries to get the UNIX process identifier from @credentials. This
+ * method is only available on UNIX platforms.
  *
- * Note that the returned #GDBusConnection object will (usually) have
- * the #GDBusConnection:exit-on-close property set to %TRUE.
+ * This operation can fail if #GCredentials is not supported on the
+ * OS or if the native credentials type does not contain information
+ * about the UNIX process ID.
  *
- * Returns: (transfer full): a #GDBusConnection or %NULL if @error is set.
- *     Free with g_object_unref().
- * Since: 2.26
+ * Returns: The UNIX process ID, or -1 if @error is set.
+ * Since: 2.36
  */
 
 
 /**
- * g_bus_get_sync:
- * @bus_type: a #GBusType
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Synchronously connects to the message bus specified by @bus_type.
- * Note that the returned object may shared with other callers,
- * e.g. if two separate parts of a process calls this function with
- * the same @bus_type, they will share the same object.
- *
- * This is a synchronous failable function. See g_bus_get() and
- * g_bus_get_finish() for the asynchronous version.
+ * g_credentials_get_unix_user:
+ * @credentials: A #GCredentials
+ * @error: Return location for error or %NULL.
  *
- * The returned object is a singleton, that is, shared with other
- * callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
- * event that you need a private message bus connection, use
- * g_dbus_address_get_for_bus_sync() and
- * g_dbus_connection_new_for_address().
+ * Tries to get the UNIX user identifier from @credentials. This
+ * method is only available on UNIX platforms.
  *
- * Note that the returned #GDBusConnection object will (usually) have
- * the #GDBusConnection:exit-on-close property set to %TRUE.
+ * This operation can fail if #GCredentials is not supported on the
+ * OS or if the native credentials type does not contain information
+ * about the UNIX user.
  *
- * Returns: (transfer full): a #GDBusConnection or %NULL if @error is set.
- *     Free with g_object_unref().
+ * Returns: The UNIX user identifier or -1 if @error is set.
  * Since: 2.26
  */
 
 
 /**
- * g_bus_own_name:
- * @bus_type: the type of bus to own a name on
- * @name: the well-known name to own
- * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
- * @bus_acquired_handler: (nullable): handler to invoke when connected to the bus of type @bus_type or %NULL
- * @name_acquired_handler: (nullable): handler to invoke when @name is acquired or %NULL
- * @name_lost_handler: (nullable): handler to invoke when @name is lost or %NULL
- * @user_data: user data to pass to handlers
- * @user_data_free_func: (nullable): function for freeing @user_data or %NULL
- *
- * Starts acquiring @name on the bus specified by @bus_type and calls
- * @name_acquired_handler and @name_lost_handler when the name is
- * acquired respectively lost. Callbacks will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this function from.
- *
- * You are guaranteed that one of the @name_acquired_handler and @name_lost_handler
- * callbacks will be invoked after calling this function - there are three
- * possible cases:
- *
- * - @name_lost_handler with a %NULL connection (if a connection to the bus
- *   can't be made).
- *
- * - @bus_acquired_handler then @name_lost_handler (if the name can't be
- *   obtained)
- *
- * - @bus_acquired_handler then @name_acquired_handler (if the name was
- *   obtained).
- *
- * When you are done owning the name, just call g_bus_unown_name()
- * with the owner id this function returns.
- *
- * If the name is acquired or lost (for example another application
- * could acquire the name if you allow replacement or the application
- * currently owning the name exits), the handlers are also invoked.
- * If the #GDBusConnection that is used for attempting to own the name
- * closes, then @name_lost_handler is invoked since it is no longer
- * possible for other processes to access the process.
- *
- * You cannot use g_bus_own_name() several times for the same name (unless
- * interleaved with calls to g_bus_unown_name()) - only the first call
- * will work.
- *
- * Another guarantee is that invocations of @name_acquired_handler
- * and @name_lost_handler are guaranteed to alternate; that
- * is, if @name_acquired_handler is invoked then you are
- * guaranteed that the next time one of the handlers is invoked, it
- * will be @name_lost_handler. The reverse is also true.
+ * g_credentials_is_same_user:
+ * @credentials: A #GCredentials.
+ * @other_credentials: A #GCredentials.
+ * @error: Return location for error or %NULL.
  *
- * If you plan on exporting objects (using e.g.
- * g_dbus_connection_register_object()), note that it is generally too late
- * to export the objects in @name_acquired_handler. Instead, you can do this
- * in @bus_acquired_handler since you are guaranteed that this will run
- * before @name is requested from the bus.
+ * Checks if @credentials and @other_credentials is the same user.
  *
- * This behavior makes it very simple to write applications that wants
- * to [own names][gdbus-owning-names] and export objects.
- * Simply register objects to be exported in @bus_acquired_handler and
- * unregister the objects (if any) in @name_lost_handler.
+ * This operation can fail if #GCredentials is not supported on the
+ * the OS.
  *
- * Returns: an identifier (never 0) that an be used with
- *     g_bus_unown_name() to stop owning the name.
+ * Returns: %TRUE if @credentials and @other_credentials has the same
+ * user, %FALSE otherwise or if @error is set.
  * Since: 2.26
  */
 
 
 /**
- * g_bus_own_name_on_connection:
- * @connection: a #GDBusConnection
- * @name: the well-known name to own
- * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
- * @name_acquired_handler: (nullable): handler to invoke when @name is acquired or %NULL
- * @name_lost_handler: (nullable): handler to invoke when @name is lost or %NULL
- * @user_data: user data to pass to handlers
- * @user_data_free_func: (nullable): function for freeing @user_data or %NULL
+ * g_credentials_new:
  *
- * Like g_bus_own_name() but takes a #GDBusConnection instead of a
- * #GBusType.
+ * Creates a new #GCredentials object with credentials matching the
+ * the current process.
  *
- * Returns: an identifier (never 0) that an be used with
- *     g_bus_unown_name() to stop owning the name
+ * Returns: A #GCredentials. Free with g_object_unref().
  * Since: 2.26
  */
 
 
 /**
- * g_bus_own_name_on_connection_with_closures: (rename-to g_bus_own_name_on_connection)
- * @connection: a #GDBusConnection
- * @name: the well-known name to own
- * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
- * @name_acquired_closure: (nullable): #GClosure to invoke when @name is
- *     acquired or %NULL
- * @name_lost_closure: (nullable): #GClosure to invoke when @name is lost
- *     or %NULL
+ * g_credentials_set_native:
+ * @credentials: A #GCredentials.
+ * @native_type: The type of native credentials to set.
+ * @native: (not nullable): A pointer to native credentials.
  *
- * Version of g_bus_own_name_on_connection() using closures instead of
- * callbacks for easier binding in other languages.
+ * Copies the native credentials of type @native_type from @native
+ * into @credentials.
+ *
+ * It is a programming error (which will cause an warning to be
+ * logged) to use this method if there is no #GCredentials support for
+ * the OS or if @native_type isn't supported by the OS.
  *
- * Returns: an identifier (never 0) that an be used with
- *     g_bus_unown_name() to stop owning the name.
  * Since: 2.26
  */
 
 
 /**
- * g_bus_own_name_with_closures: (rename-to g_bus_own_name)
- * @bus_type: the type of bus to own a name on
- * @name: the well-known name to own
- * @flags: a set of flags from the #GBusNameOwnerFlags enumeration
- * @bus_acquired_closure: (nullable): #GClosure to invoke when connected to
- *     the bus of type @bus_type or %NULL
- * @name_acquired_closure: (nullable): #GClosure to invoke when @name is
- *     acquired or %NULL
- * @name_lost_closure: (nullable): #GClosure to invoke when @name is lost or
- *     %NULL
+ * g_credentials_set_unix_user:
+ * @credentials: A #GCredentials.
+ * @uid: The UNIX user identifier to set.
+ * @error: Return location for error or %NULL.
  *
- * Version of g_bus_own_name() using closures instead of callbacks for
- * easier binding in other languages.
+ * Tries to set the UNIX user identifier on @credentials. This method
+ * is only available on UNIX platforms.
  *
- * Returns: an identifier (never 0) that an be used with
- *     g_bus_unown_name() to stop owning the name.
+ * This operation can fail if #GCredentials is not supported on the
+ * OS or if the native credentials type does not contain information
+ * about the UNIX user. It can also fail if the OS does not allow the
+ * use of "spoofed" credentials.
+ *
+ * Returns: %TRUE if @uid was set, %FALSE if error is set.
  * Since: 2.26
  */
 
 
 /**
- * g_bus_unown_name:
- * @owner_id: an identifier obtained from g_bus_own_name()
+ * g_credentials_to_string:
+ * @credentials: A #GCredentials object.
  *
- * Stops owning a name.
+ * Creates a human-readable textual representation of @credentials
+ * that can be used in logging and debug messages. The format of the
+ * returned string may change in future GLib release.
  *
+ * Returns: A string that should be freed with g_free().
  * Since: 2.26
  */
 
 
 /**
- * g_bus_unwatch_name:
- * @watcher_id: An identifier obtained from g_bus_watch_name()
+ * g_data_input_stream_get_byte_order:
+ * @stream: a given #GDataInputStream.
  *
- * Stops watching a name.
+ * Gets the byte order for the data input stream.
  *
- * Since: 2.26
+ * Returns: the @stream's current #GDataStreamByteOrder.
  */
 
 
 /**
- * g_bus_watch_name:
- * @bus_type: The type of bus to watch a name on.
- * @name: The name (well-known or unique) to watch.
- * @flags: Flags from the #GBusNameWatcherFlags enumeration.
- * @name_appeared_handler: (nullable): Handler to invoke when @name is known to exist or %NULL.
- * @name_vanished_handler: (nullable): Handler to invoke when @name is known to not exist or %NULL.
- * @user_data: User data to pass to handlers.
- * @user_data_free_func: (nullable): Function for freeing @user_data or %NULL.
- *
- * Starts watching @name on the bus specified by @bus_type and calls
- * @name_appeared_handler and @name_vanished_handler when the name is
- * known to have a owner respectively known to lose its
- * owner. Callbacks will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this function from.
- *
- * You are guaranteed that one of the handlers will be invoked after
- * calling this function. When you are done watching the name, just
- * call g_bus_unwatch_name() with the watcher id this function
- * returns.
- *
- * If the name vanishes or appears (for example the application owning
- * the name could restart), the handlers are also invoked. If the
- * #GDBusConnection that is used for watching the name disconnects, then
- * @name_vanished_handler is invoked since it is no longer
- * possible to access the name.
- *
- * Another guarantee is that invocations of @name_appeared_handler
- * and @name_vanished_handler are guaranteed to alternate; that
- * is, if @name_appeared_handler is invoked then you are
- * guaranteed that the next time one of the handlers is invoked, it
- * will be @name_vanished_handler. The reverse is also true.
+ * g_data_input_stream_get_newline_type:
+ * @stream: a given #GDataInputStream.
  *
- * This behavior makes it very simple to write applications that want
- * to take action when a certain [name exists][gdbus-watching-names].
- * Basically, the application should create object proxies in
- * @name_appeared_handler and destroy them again (if any) in
- * @name_vanished_handler.
+ * Gets the current newline type for the @stream.
  *
- * Returns: An identifier (never 0) that an be used with
- * g_bus_unwatch_name() to stop watching the name.
- * Since: 2.26
+ * Returns: #GDataStreamNewlineType for the given @stream.
  */
 
 
 /**
- * g_bus_watch_name_on_connection:
- * @connection: A #GDBusConnection.
- * @name: The name (well-known or unique) to watch.
- * @flags: Flags from the #GBusNameWatcherFlags enumeration.
- * @name_appeared_handler: (nullable): Handler to invoke when @name is known to exist or %NULL.
- * @name_vanished_handler: (nullable): Handler to invoke when @name is known to not exist or %NULL.
- * @user_data: User data to pass to handlers.
- * @user_data_free_func: (nullable): Function for freeing @user_data or %NULL.
+ * g_data_input_stream_new:
+ * @base_stream: a #GInputStream.
  *
- * Like g_bus_watch_name() but takes a #GDBusConnection instead of a
- * #GBusType.
+ * Creates a new data input stream for the @base_stream.
  *
- * Returns: An identifier (never 0) that an be used with
- * g_bus_unwatch_name() to stop watching the name.
- * Since: 2.26
+ * Returns: a new #GDataInputStream.
  */
 
 
 /**
- * g_bus_watch_name_on_connection_with_closures: (rename-to g_bus_watch_name_on_connection)
- * @connection: A #GDBusConnection.
- * @name: The name (well-known or unique) to watch.
- * @flags: Flags from the #GBusNameWatcherFlags enumeration.
- * @name_appeared_closure: (nullable): #GClosure to invoke when @name is known
- * to exist or %NULL.
- * @name_vanished_closure: (nullable): #GClosure to invoke when @name is known
- * to not exist or %NULL.
+ * g_data_input_stream_read_byte:
+ * @stream: a given #GDataInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Version of g_bus_watch_name_on_connection() using closures instead of callbacks for
- * easier binding in other languages.
+ * Reads an unsigned 8-bit/1-byte value from @stream.
  *
- * Returns: An identifier (never 0) that an be used with
- * g_bus_unwatch_name() to stop watching the name.
- * Since: 2.26
+ * Returns: an unsigned 8-bit/1-byte value read from the @stream or %0
+ * if an error occurred.
  */
 
 
 /**
- * g_bus_watch_name_with_closures: (rename-to g_bus_watch_name)
- * @bus_type: The type of bus to watch a name on.
- * @name: The name (well-known or unique) to watch.
- * @flags: Flags from the #GBusNameWatcherFlags enumeration.
- * @name_appeared_closure: (nullable): #GClosure to invoke when @name is known
- * to exist or %NULL.
- * @name_vanished_closure: (nullable): #GClosure to invoke when @name is known
- * to not exist or %NULL.
+ * g_data_input_stream_read_int16:
+ * @stream: a given #GDataInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Version of g_bus_watch_name() using closures instead of callbacks for
- * easier binding in other languages.
+ * Reads a 16-bit/2-byte value from @stream.
  *
- * Returns: An identifier (never 0) that an be used with
- * g_bus_unwatch_name() to stop watching the name.
- * Since: 2.26
+ * In order to get the correct byte order for this read operation,
+ * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+ *
+ * Returns: a signed 16-bit/2-byte value read from @stream or %0 if
+ * an error occurred.
  */
 
 
 /**
- * g_bytes_icon_get_bytes:
- * @icon: a #GIcon.
+ * g_data_input_stream_read_int32:
+ * @stream: a given #GDataInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Gets the #GBytes associated with the given @icon.
+ * Reads a signed 32-bit/4-byte value from @stream.
  *
- * Returns: (transfer none): a #GBytes, or %NULL.
- * Since: 2.38
- */
-
-
-/**
- * g_bytes_icon_new:
- * @bytes: a #GBytes.
+ * In order to get the correct byte order for this read operation,
+ * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
  *
- * Creates a new icon for a bytes.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: (transfer full) (type GBytesIcon): a #GIcon for the given
- *   @bytes, or %NULL on error.
- * Since: 2.38
+ * Returns: a signed 32-bit/4-byte value read from the @stream or %0 if
+ * an error occurred.
  */
 
 
 /**
- * g_cancellable_cancel:
- * @cancellable: (nullable): a #GCancellable object.
+ * g_data_input_stream_read_int64:
+ * @stream: a given #GDataInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Will set @cancellable to cancelled, and will emit the
- * #GCancellable::cancelled signal. (However, see the warning about
- * race conditions in the documentation for that signal if you are
- * planning to connect to it.)
+ * Reads a 64-bit/8-byte value from @stream.
  *
- * This function is thread-safe. In other words, you can safely call
- * it from a thread other than the one running the operation that was
- * passed the @cancellable.
+ * In order to get the correct byte order for this read operation,
+ * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
  *
- * If @cancellable is %NULL, this function returns immediately for convenience.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * The convention within GIO is that cancelling an asynchronous
- * operation causes it to complete asynchronously. That is, if you
- * cancel the operation from the same thread in which it is running,
- * then the operation's #GAsyncReadyCallback will not be invoked until
- * the application returns to the main loop.
+ * Returns: a signed 64-bit/8-byte value read from @stream or %0 if
+ * an error occurred.
  */
 
 
 /**
- * g_cancellable_connect:
- * @cancellable: A #GCancellable.
- * @callback: The #GCallback to connect.
- * @data: Data to pass to @callback.
- * @data_destroy_func: (nullable): Free function for @data or %NULL.
- *
- * Convenience function to connect to the #GCancellable::cancelled
- * signal. Also handles the race condition that may happen
- * if the cancellable is cancelled right before connecting.
- *
- * @callback is called at most once, either directly at the
- * time of the connect if @cancellable is already cancelled,
- * or when @cancellable is cancelled in some thread.
- *
- * @data_destroy_func will be called when the handler is
- * disconnected, or immediately if the cancellable is already
- * cancelled.
+ * g_data_input_stream_read_line:
+ * @stream: a given #GDataInputStream.
+ * @length: (out) (optional): a #gsize to get the length of the data read in.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * See #GCancellable::cancelled for details on how to use this.
+ * Reads a line from the data input stream.  Note that no encoding
+ * checks or conversion is performed; the input is not guaranteed to
+ * be UTF-8, and may in fact have embedded NUL characters.
  *
- * Since GLib 2.40, the lock protecting @cancellable is not held when
- * @callback is invoked.  This lifts a restriction in place for
- * earlier GLib versions which now makes it easier to write cleanup
- * code that unconditionally invokes e.g. g_cancellable_cancel().
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: The id of the signal handler or 0 if @cancellable has already
- *          been cancelled.
- * Since: 2.22
+ * Returns: (nullable) (transfer full) (array zero-terminated=1) (element-type guint8):
+ *  a NUL terminated byte array with the line that was read in
+ *  (without the newlines).  Set @length to a #gsize to get the length
+ *  of the read line.  On an error, it will return %NULL and @error
+ *  will be set. If there's no content to read, it will still return
+ *  %NULL, but @error won't be set.
  */
 
 
 /**
- * g_cancellable_disconnect:
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @handler_id: Handler id of the handler to be disconnected, or `0`.
- *
- * Disconnects a handler from a cancellable instance similar to
- * g_signal_handler_disconnect().  Additionally, in the event that a
- * signal handler is currently running, this call will block until the
- * handler has finished.  Calling this function from a
- * #GCancellable::cancelled signal handler will therefore result in a
- * deadlock.
+ * g_data_input_stream_read_line_async:
+ * @stream: a given #GDataInputStream.
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied.
+ * @user_data: (closure): the data to pass to callback function.
  *
- * This avoids a race condition where a thread cancels at the
- * same time as the cancellable operation is finished and the
- * signal handler is removed. See #GCancellable::cancelled for
- * details on how to use this.
+ * The asynchronous version of g_data_input_stream_read_line().  It is
+ * an error to have two outstanding calls to this function.
  *
- * If @cancellable is %NULL or @handler_id is `0` this function does
- * nothing.
+ * When the operation is finished, @callback will be called. You
+ * can then call g_data_input_stream_read_line_finish() to get
+ * the result of the operation.
  *
- * Since: 2.22
+ * Since: 2.20
  */
 
 
 /**
- * g_cancellable_get_current:
+ * g_data_input_stream_read_line_finish:
+ * @stream: a given #GDataInputStream.
+ * @result: the #GAsyncResult that was provided to the callback.
+ * @length: (out) (optional): a #gsize to get the length of the data read in.
+ * @error: #GError for error reporting.
  *
- * Gets the top cancellable from the stack.
+ * Finish an asynchronous call started by
+ * g_data_input_stream_read_line_async().  Note the warning about
+ * string encoding in g_data_input_stream_read_line() applies here as
+ * well.
  *
- * Returns: (nullable) (transfer none): a #GCancellable from the top
- * of the stack, or %NULL if the stack is empty.
+ * Returns: (nullable) (transfer full) (array zero-terminated=1) (element-type guint8):
+ *  a NUL-terminated byte array with the line that was read in
+ *  (without the newlines).  Set @length to a #gsize to get the length
+ *  of the read line.  On an error, it will return %NULL and @error
+ *  will be set. If there's no content to read, it will still return
+ *  %NULL, but @error won't be set.
+ * Since: 2.20
  */
 
 
 /**
- * g_cancellable_get_fd:
- * @cancellable: a #GCancellable.
- *
- * Gets the file descriptor for a cancellable job. This can be used to
- * implement cancellable operations on Unix systems. The returned fd will
- * turn readable when @cancellable is cancelled.
- *
- * You are not supposed to read from the fd yourself, just check for
- * readable status. Reading to unset the readable status is done
- * with g_cancellable_reset().
- *
- * After a successful return from this function, you should use
- * g_cancellable_release_fd() to free up resources allocated for
- * the returned file descriptor.
+ * g_data_input_stream_read_line_finish_utf8:
+ * @stream: a given #GDataInputStream.
+ * @result: the #GAsyncResult that was provided to the callback.
+ * @length: (out) (optional): a #gsize to get the length of the data read in.
+ * @error: #GError for error reporting.
  *
- * See also g_cancellable_make_pollfd().
+ * Finish an asynchronous call started by
+ * g_data_input_stream_read_line_async().
  *
- * Returns: A valid file descriptor. %-1 if the file descriptor
- * is not supported, or on errors.
+ * Returns: (nullable) (transfer full): a string with the line that
+ *  was read in (without the newlines).  Set @length to a #gsize to
+ *  get the length of the read line.  On an error, it will return
+ *  %NULL and @error will be set. For UTF-8 conversion errors, the set
+ *  error domain is %G_CONVERT_ERROR.  If there's no content to read,
+ *  it will still return %NULL, but @error won't be set.
+ * Since: 2.30
  */
 
 
 /**
- * g_cancellable_is_cancelled:
- * @cancellable: (nullable): a #GCancellable or %NULL
+ * g_data_input_stream_read_line_utf8:
+ * @stream: a given #GDataInputStream.
+ * @length: (out) (optional): a #gsize to get the length of the data read in.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Checks if a cancellable job has been cancelled.
+ * Reads a UTF-8 encoded line from the data input stream.
  *
- * Returns: %TRUE if @cancellable is cancelled,
- * FALSE if called with %NULL or if item is not cancelled.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: (nullable) (transfer full): a NUL terminated UTF-8 string
+ *  with the line that was read in (without the newlines).  Set
+ *  @length to a #gsize to get the length of the read line.  On an
+ *  error, it will return %NULL and @error will be set.  For UTF-8
+ *  conversion errors, the set error domain is %G_CONVERT_ERROR.  If
+ *  there's no content to read, it will still return %NULL, but @error
+ *  won't be set.
+ * Since: 2.30
  */
 
 
 /**
- * g_cancellable_make_pollfd:
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @pollfd: a pointer to a #GPollFD
- *
- * Creates a #GPollFD corresponding to @cancellable; this can be passed
- * to g_poll() and used to poll for cancellation. This is useful both
- * for unix systems without a native poll and for portability to
- * windows.
- *
- * When this function returns %TRUE, you should use
- * g_cancellable_release_fd() to free up resources allocated for the
- * @pollfd. After a %FALSE return, do not call g_cancellable_release_fd().
+ * g_data_input_stream_read_uint16:
+ * @stream: a given #GDataInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * If this function returns %FALSE, either no @cancellable was given or
- * resource limits prevent this function from allocating the necessary
- * structures for polling. (On Linux, you will likely have reached
- * the maximum number of file descriptors.) The suggested way to handle
- * these cases is to ignore the @cancellable.
+ * Reads an unsigned 16-bit/2-byte value from @stream.
  *
- * You are not supposed to read from the fd yourself, just check for
- * readable status. Reading to unset the readable status is done
- * with g_cancellable_reset().
+ * In order to get the correct byte order for this read operation,
+ * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
  *
- * Returns: %TRUE if @pollfd was successfully initialized, %FALSE on
- *          failure to prepare the cancellable.
- * Since: 2.22
+ * Returns: an unsigned 16-bit/2-byte value read from the @stream or %0 if
+ * an error occurred.
  */
 
 
 /**
- * g_cancellable_new:
+ * g_data_input_stream_read_uint32:
+ * @stream: a given #GDataInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Creates a new #GCancellable object.
+ * Reads an unsigned 32-bit/4-byte value from @stream.
  *
- * Applications that want to start one or more operations
- * that should be cancellable should create a #GCancellable
- * and pass it to the operations.
+ * In order to get the correct byte order for this read operation,
+ * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
  *
- * One #GCancellable can be used in multiple consecutive
- * operations or in multiple concurrent operations.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: a #GCancellable.
+ * Returns: an unsigned 32-bit/4-byte value read from the @stream or %0 if
+ * an error occurred.
  */
 
 
 /**
- * g_cancellable_pop_current:
- * @cancellable: a #GCancellable object
+ * g_data_input_stream_read_uint64:
+ * @stream: a given #GDataInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Pops @cancellable off the cancellable stack (verifying that @cancellable
- * is on the top of the stack).
+ * Reads an unsigned 64-bit/8-byte value from @stream.
+ *
+ * In order to get the correct byte order for this read operation,
+ * see g_data_input_stream_get_byte_order().
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: an unsigned 64-bit/8-byte read from @stream or %0 if
+ * an error occurred.
  */
 
 
 /**
- * g_cancellable_push_current:
- * @cancellable: a #GCancellable object
+ * g_data_input_stream_read_until:
+ * @stream: a given #GDataInputStream.
+ * @stop_chars: characters to terminate the read.
+ * @length: (out) (optional): a #gsize to get the length of the data read in.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting.
  *
- * Pushes @cancellable onto the cancellable stack. The current
- * cancellable can then be received using g_cancellable_get_current().
+ * Reads a string from the data input stream, up to the first
+ * occurrence of any of the stop characters.
  *
- * This is useful when implementing cancellable operations in
- * code that does not allow you to pass down the cancellable object.
+ * Note that, in contrast to g_data_input_stream_read_until_async(),
+ * this function consumes the stop character that it finds.
  *
- * This is typically called automatically by e.g. #GFile operations,
- * so you rarely have to call this yourself.
+ * Don't use this function in new code.  Its functionality is
+ * inconsistent with g_data_input_stream_read_until_async().  Both
+ * functions will be marked as deprecated in a future release.  Use
+ * g_data_input_stream_read_upto() instead, but note that that function
+ * does not consume the stop character.
+ *
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error.
+ * Deprecated: 2.56: Use g_data_input_stream_read_upto() instead, which has more
+ *     consistent behaviour regarding the stop character.
  */
 
 
 /**
- * g_cancellable_release_fd:
- * @cancellable: a #GCancellable
+ * g_data_input_stream_read_until_async:
+ * @stream: a given #GDataInputStream.
+ * @stop_chars: characters to terminate the read.
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied.
+ * @user_data: (closure): the data to pass to callback function.
  *
- * Releases a resources previously allocated by g_cancellable_get_fd()
- * or g_cancellable_make_pollfd().
+ * The asynchronous version of g_data_input_stream_read_until().
+ * It is an error to have two outstanding calls to this function.
  *
- * For compatibility reasons with older releases, calling this function
- * is not strictly required, the resources will be automatically freed
- * when the @cancellable is finalized. However, the @cancellable will
- * block scarce file descriptors until it is finalized if this function
- * is not called. This can cause the application to run out of file
- * descriptors when many #GCancellables are used at the same time.
+ * Note that, in contrast to g_data_input_stream_read_until(),
+ * this function does not consume the stop character that it finds.  You
+ * must read it for yourself.
  *
- * Since: 2.22
+ * When the operation is finished, @callback will be called. You
+ * can then call g_data_input_stream_read_until_finish() to get
+ * the result of the operation.
+ *
+ * Don't use this function in new code.  Its functionality is
+ * inconsistent with g_data_input_stream_read_until().  Both functions
+ * will be marked as deprecated in a future release.  Use
+ * g_data_input_stream_read_upto_async() instead.
+ *
+ * Since: 2.20
+ * Deprecated: 2.56: Use g_data_input_stream_read_upto_async() instead, which
+ *     has more consistent behaviour regarding the stop character.
  */
 
 
 /**
- * g_cancellable_reset:
- * @cancellable: a #GCancellable object.
- *
- * Resets @cancellable to its uncancelled state.
+ * g_data_input_stream_read_until_finish:
+ * @stream: a given #GDataInputStream.
+ * @result: the #GAsyncResult that was provided to the callback.
+ * @length: (out) (optional): a #gsize to get the length of the data read in.
+ * @error: #GError for error reporting.
  *
- * If cancellable is currently in use by any cancellable operation
- * then the behavior of this function is undefined.
+ * Finish an asynchronous call started by
+ * g_data_input_stream_read_until_async().
  *
- * Note that it is generally not a good idea to reuse an existing
- * cancellable for more operations after it has been cancelled once,
- * as this function might tempt you to do. The recommended practice
- * is to drop the reference to a cancellable after cancelling it,
- * and let it die with the outstanding async operations. You should
- * create a fresh cancellable for further async operations.
+ * Since: 2.20
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error.
+ * Deprecated: 2.56: Use g_data_input_stream_read_upto_finish() instead, which
+ *     has more consistent behaviour regarding the stop character.
  */
 
 
 /**
- * g_cancellable_set_error_if_cancelled:
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: #GError to append error state to
+ * g_data_input_stream_read_upto:
+ * @stream: a #GDataInputStream
+ * @stop_chars: characters to terminate the read
+ * @stop_chars_len: length of @stop_chars. May be -1 if @stop_chars is
+ *     nul-terminated
+ * @length: (out) (optional): a #gsize to get the length of the data read in
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @error: #GError for error reporting
  *
- * If the @cancellable is cancelled, sets the error to notify
- * that the operation was cancelled.
+ * Reads a string from the data input stream, up to the first
+ * occurrence of any of the stop characters.
  *
- * Returns: %TRUE if @cancellable was cancelled, %FALSE if it was not
+ * In contrast to g_data_input_stream_read_until(), this function
+ * does not consume the stop character. You have to use
+ * g_data_input_stream_read_byte() to get it before calling
+ * g_data_input_stream_read_upto() again.
+ *
+ * Note that @stop_chars may contain '\0' if @stop_chars_len is
+ * specified.
+ *
+ * The returned string will always be nul-terminated on success.
+ *
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error
+ * Since: 2.26
  */
 
 
 /**
- * g_cancellable_source_new: (skip)
- * @cancellable: (nullable): a #GCancellable, or %NULL
+ * g_data_input_stream_read_upto_async:
+ * @stream: a #GDataInputStream
+ * @stop_chars: characters to terminate the read
+ * @stop_chars_len: length of @stop_chars. May be -1 if @stop_chars is
+ *     nul-terminated
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Creates a source that triggers if @cancellable is cancelled and
- * calls its callback of type #GCancellableSourceFunc. This is
- * primarily useful for attaching to another (non-cancellable) source
- * with g_source_add_child_source() to add cancellability to it.
+ * The asynchronous version of g_data_input_stream_read_upto().
+ * It is an error to have two outstanding calls to this function.
  *
- * For convenience, you can call this with a %NULL #GCancellable,
- * in which case the source will never trigger.
+ * In contrast to g_data_input_stream_read_until(), this function
+ * does not consume the stop character. You have to use
+ * g_data_input_stream_read_byte() to get it before calling
+ * g_data_input_stream_read_upto() again.
  *
- * The new #GSource will hold a reference to the #GCancellable.
+ * Note that @stop_chars may contain '\0' if @stop_chars_len is
+ * specified.
  *
- * Returns: (transfer full): the new #GSource.
- * Since: 2.28
+ * When the operation is finished, @callback will be called. You
+ * can then call g_data_input_stream_read_upto_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_charset_converter_get_num_fallbacks:
- * @converter: a #GCharsetConverter
+ * g_data_input_stream_read_upto_finish:
+ * @stream: a #GDataInputStream
+ * @result: the #GAsyncResult that was provided to the callback
+ * @length: (out) (optional): a #gsize to get the length of the data read in
+ * @error: #GError for error reporting
  *
- * Gets the number of fallbacks that @converter has applied so far.
+ * Finish an asynchronous call started by
+ * g_data_input_stream_read_upto_async().
  *
- * Returns: the number of fallbacks that @converter has applied
+ * Note that this function does not consume the stop character. You
+ * have to use g_data_input_stream_read_byte() to get it before calling
+ * g_data_input_stream_read_upto_async() again.
+ *
+ * The returned string will always be nul-terminated on success.
+ *
+ * Returns: (transfer full): a string with the data that was read
+ *     before encountering any of the stop characters. Set @length to
+ *     a #gsize to get the length of the string. This function will
+ *     return %NULL on an error.
  * Since: 2.24
  */
 
 
 /**
- * g_charset_converter_get_use_fallback:
- * @converter: a #GCharsetConverter
- *
- * Gets the #GCharsetConverter:use-fallback property.
+ * g_data_input_stream_set_byte_order:
+ * @stream: a given #GDataInputStream.
+ * @order: a #GDataStreamByteOrder to set.
  *
- * Returns: %TRUE if fallbacks are used by @converter
- * Since: 2.24
+ * This function sets the byte order for the given @stream. All subsequent
+ * reads from the @stream will be read in the given @order.
  */
 
 
 /**
- * g_charset_converter_new:
- * @to_charset: destination charset
- * @from_charset: source charset
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_data_input_stream_set_newline_type:
+ * @stream: a #GDataInputStream.
+ * @type: the type of new line return as #GDataStreamNewlineType.
  *
- * Creates a new #GCharsetConverter.
+ * Sets the newline type for the @stream.
  *
- * Returns: a new #GCharsetConverter or %NULL on error.
- * Since: 2.24
+ * Note that using G_DATA_STREAM_NEWLINE_TYPE_ANY is slightly unsafe. If a read
+ * chunk ends in "CR" we must read an additional byte to know if this is "CR" or
+ * "CR LF", and this might block if there is no more data available.
  */
 
 
 /**
- * g_charset_converter_set_use_fallback:
- * @converter: a #GCharsetConverter
- * @use_fallback: %TRUE to use fallbacks
+ * g_data_output_stream_get_byte_order:
+ * @stream: a #GDataOutputStream.
  *
- * Sets the #GCharsetConverter:use-fallback property.
+ * Gets the byte order for the stream.
  *
- * Since: 2.24
+ * Returns: the #GDataStreamByteOrder for the @stream.
  */
 
 
 /**
- * g_content_type_can_be_executable:
- * @type: a content type string
+ * g_data_output_stream_new:
+ * @base_stream: a #GOutputStream.
  *
- * Checks if a content type can be executable. Note that for instance
- * things like text files can be executables (i.e. scripts and batch files).
+ * Creates a new data output stream for @base_stream.
  *
- * Returns: %TRUE if the file type corresponds to a type that
- *     can be executable, %FALSE otherwise.
+ * Returns: #GDataOutputStream.
  */
 
 
 /**
- * g_content_type_equals:
- * @type1: a content type string
- * @type2: a content type string
+ * g_data_output_stream_put_byte:
+ * @stream: a #GDataOutputStream.
+ * @data: a #guchar.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Compares two content types for equality.
+ * Puts a byte into the output stream.
  *
- * Returns: %TRUE if the two strings are identical or equivalent,
- *     %FALSE otherwise.
+ * Returns: %TRUE if @data was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_from_mime_type:
- * @mime_type: a mime type string
+ * g_data_output_stream_put_int16:
+ * @stream: a #GDataOutputStream.
+ * @data: a #gint16.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Tries to find a content type based on the mime type name.
+ * Puts a signed 16-bit integer into the output stream.
  *
- * Returns: (nullable): Newly allocated string with content type or
- *     %NULL. Free with g_free()
- * Since: 2.18
+ * Returns: %TRUE if @data was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_get_description:
- * @type: a content type string
+ * g_data_output_stream_put_int32:
+ * @stream: a #GDataOutputStream.
+ * @data: a #gint32.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Gets the human readable description of the content type.
+ * Puts a signed 32-bit integer into the output stream.
  *
- * Returns: a short description of the content type @type. Free the
- *     returned string with g_free()
+ * Returns: %TRUE if @data was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_get_generic_icon_name:
- * @type: a content type string
- *
- * Gets the generic icon name for a content type.
+ * g_data_output_stream_put_int64:
+ * @stream: a #GDataOutputStream.
+ * @data: a #gint64.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * See the
- * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
- * specification for more on the generic icon name.
+ * Puts a signed 64-bit integer into the stream.
  *
- * Returns: (nullable): the registered generic icon name for the given @type,
- *     or %NULL if unknown. Free with g_free()
- * Since: 2.34
+ * Returns: %TRUE if @data was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_get_icon:
- * @type: a content type string
+ * g_data_output_stream_put_string:
+ * @stream: a #GDataOutputStream.
+ * @str: a string.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Gets the icon for a content type.
+ * Puts a string into the output stream.
  *
- * Returns: (transfer full): #GIcon corresponding to the content type. Free the returned
- *     object with g_object_unref()
+ * Returns: %TRUE if @string was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_get_mime_type:
- * @type: a content type string
+ * g_data_output_stream_put_uint16:
+ * @stream: a #GDataOutputStream.
+ * @data: a #guint16.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Gets the mime type for the content type, if one is registered.
+ * Puts an unsigned 16-bit integer into the output stream.
  *
- * Returns: (nullable) (transfer full): the registered mime type for the
- *     given @type, or %NULL if unknown; free with g_free().
+ * Returns: %TRUE if @data was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_get_symbolic_icon:
- * @type: a content type string
+ * g_data_output_stream_put_uint32:
+ * @stream: a #GDataOutputStream.
+ * @data: a #guint32.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Gets the symbolic icon for a content type.
+ * Puts an unsigned 32-bit integer into the stream.
  *
- * Returns: (transfer full): symbolic #GIcon corresponding to the content type.
- *     Free the returned object with g_object_unref()
- * Since: 2.34
+ * Returns: %TRUE if @data was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_guess:
- * @filename: (nullable): a string, or %NULL
- * @data: (nullable) (array length=data_size): a stream of data, or %NULL
- * @data_size: the size of @data
- * @result_uncertain: (out) (optional): return location for the certainty
- *     of the result, or %NULL
+ * g_data_output_stream_put_uint64:
+ * @stream: a #GDataOutputStream.
+ * @data: a #guint64.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Guesses the content type based on example data. If the function is
- * uncertain, @result_uncertain will be set to %TRUE. Either @filename
- * or @data may be %NULL, in which case the guess will be based solely
- * on the other argument.
+ * Puts an unsigned 64-bit integer into the stream.
  *
- * Returns: a string indicating a guessed content type for the
- *     given data. Free with g_free()
+ * Returns: %TRUE if @data was successfully added to the @stream.
  */
 
 
 /**
- * g_content_type_guess_for_tree:
- * @root: the root of the tree to guess a type for
- *
- * Tries to guess the type of the tree with root @root, by
- * looking at the files it contains. The result is an array
- * 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
- * (for a camera memory card). See the
- * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
- * specification for more on x-content types.
- *
- * This function is useful in the implementation of
- * g_mount_guess_content_type().
+ * g_data_output_stream_set_byte_order:
+ * @stream: a #GDataOutputStream.
+ * @order: a %GDataStreamByteOrder.
  *
- * Returns: (transfer full) (array zero-terminated=1): an %NULL-terminated
- *     array of zero or more content types. Free with g_strfreev()
- * Since: 2.18
+ * Sets the byte order of the data output stream to @order.
  */
 
 
 /**
- * g_content_type_is_a:
- * @type: a content type string
- * @supertype: a content type string
+ * g_datagram_based_condition_check:
+ * @datagram_based: a #GDatagramBased
+ * @condition: a #GIOCondition mask to check
  *
- * Determines if @type is a subset of @supertype.
+ * Checks on the readiness of @datagram_based to perform operations. The
+ * operations specified in @condition are checked for and masked against the
+ * currently-satisfied conditions on @datagram_based. The result is returned.
  *
- * Returns: %TRUE if @type is a kind of @supertype,
- *     %FALSE otherwise.
- */
-
-
-/**
- * g_content_type_is_mime_type:
- * @type: a content type string
- * @mime_type: a mime type string
+ * %G_IO_IN will be set in the return value if data is available to read with
+ * g_datagram_based_receive_messages(), or if the connection is closed remotely
+ * (EOS); and if the datagram_based has not been closed locally using some
+ * implementation-specific method (such as g_socket_close() or
+ * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket).
  *
- * Determines if @type is a subset of @mime_type.
- * Convenience wrapper around g_content_type_is_a().
+ * If the connection is shut down or closed (by calling g_socket_close() or
+ * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket, for
+ * example), all calls to this function will return %G_IO_ERROR_CLOSED.
  *
- * Returns: %TRUE if @type is a kind of @mime_type,
- *     %FALSE otherwise.
- * Since: 2.52
+ * %G_IO_OUT will be set if it is expected that at least one byte can be sent
+ * using g_datagram_based_send_messages() without blocking. It will not be set
+ * if the datagram_based has been closed locally.
+ *
+ * %G_IO_HUP will be set if the connection has been closed locally.
+ *
+ * %G_IO_ERR will be set if there was an asynchronous error in transmitting data
+ * previously enqueued using g_datagram_based_send_messages().
+ *
+ * Note that on Windows, it is possible for an operation to return
+ * %G_IO_ERROR_WOULD_BLOCK even immediately after
+ * g_datagram_based_condition_check() has claimed that the #GDatagramBased is
+ * ready for writing. Rather than calling g_datagram_based_condition_check() and
+ * then writing to the #GDatagramBased if it succeeds, it is generally better to
+ * simply try writing right away, and try again later if the initial attempt
+ * returns %G_IO_ERROR_WOULD_BLOCK.
+ *
+ * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition; these
+ * conditions will always be set in the output if they are true. Apart from
+ * these flags, the output is guaranteed to be masked by @condition.
+ *
+ * This call never blocks.
+ *
+ * Returns: the #GIOCondition mask of the current state
+ * Since: 2.48
  */
 
 
 /**
- * g_content_type_is_unknown:
- * @type: a content type string
+ * g_datagram_based_condition_wait:
+ * @datagram_based: a #GDatagramBased
+ * @condition: a #GIOCondition mask to wait for
+ * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1
+ *   to block indefinitely
+ * @cancellable: (nullable): a #GCancellable
+ * @error: return location for a #GError
  *
- * Checks if the content type is the generic "unknown" type.
- * On UNIX this is the "application/octet-stream" mimetype,
- * while on win32 it is "*" and on OSX it is a dynamic type
- * or octet-stream.
+ * Waits for up to @timeout microseconds for condition to become true on
+ * @datagram_based. If the condition is met, %TRUE is returned.
  *
- * Returns: %TRUE if the type is the unknown type.
+ * If @cancellable is cancelled before the condition is met, or if @timeout is
+ * reached before the condition is met, then %FALSE is returned and @error is
+ * set appropriately (%G_IO_ERROR_CANCELLED or %G_IO_ERROR_TIMED_OUT).
+ *
+ * Returns: %TRUE if the condition was met, %FALSE otherwise
+ * Since: 2.48
  */
 
 
 /**
- * g_content_types_get_registered:
+ * g_datagram_based_create_source:
+ * @datagram_based: a #GDatagramBased
+ * @condition: a #GIOCondition mask to monitor
+ * @cancellable: (nullable): a #GCancellable
  *
- * Gets a list of strings containing all the registered content types
- * known to the system. The list and its data should be freed using
- * g_list_free_full (list, g_free).
+ * Creates a #GSource that can be attached to a #GMainContext to monitor for
+ * the availability of the specified @condition on the #GDatagramBased. The
+ * #GSource keeps a reference to the @datagram_based.
  *
- * Returns: (element-type utf8) (transfer full): list of the registered
- *     content types
+ * The callback on the source is of the #GDatagramBasedSourceFunc type.
+ *
+ * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition; these
+ * conditions will always be reported in the callback if they are true.
+ *
+ * If non-%NULL, @cancellable can be used to cancel the source, which will
+ * cause the source to trigger, reporting the current condition (which is
+ * likely 0 unless cancellation happened at the same time as a condition
+ * change). You can check for this in the callback using
+ * g_cancellable_is_cancelled().
+ *
+ * Returns: (transfer full): a newly allocated #GSource
+ * Since: 2.48
  */
 
 
 /**
- * g_converter_convert:
- * @converter: a #GConverter.
- * @inbuf: (array length=inbuf_size) (element-type guint8): the buffer
- *         containing the data to convert.
- * @inbuf_size: the number of bytes in @inbuf
- * @outbuf: (element-type guint8) (array length=outbuf_size): a buffer to write
- *    converted data in.
- * @outbuf_size: the number of bytes in @outbuf, must be at least one
- * @flags: a #GConverterFlags controlling the conversion details
- * @bytes_read: (out): will be set to the number of bytes read from @inbuf on success
- * @bytes_written: (out): will be set to the number of bytes written to @outbuf on success
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * This is the main operation used when converting data. It is to be called
- * multiple times in a loop, and each time it will do some work, i.e.
- * producing some output (in @outbuf) or consuming some input (from @inbuf) or
- * both. If its not possible to do any work an error is returned.
- *
- * Note that a single call may not consume all input (or any input at all).
- * Also a call may produce output even if given no input, due to state stored
- * in the converter producing output.
+ * g_datagram_based_receive_messages:
+ * @datagram_based: a #GDatagramBased
+ * @messages: (array length=num_messages): an array of #GInputMessage structs
+ * @num_messages: the number of elements in @messages
+ * @flags: an int containing #GSocketMsgFlags flags for the overall operation
+ * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1
+ *   to block indefinitely
+ * @cancellable: (nullable): a %GCancellable
+ * @error: return location for a #GError
  *
- * If any data was either produced or consumed, and then an error happens, then
- * only the successful conversion is reported and the error is returned on the
- * next call.
+ * Receive one or more data messages from @datagram_based in one go.
  *
- * A full conversion loop involves calling this method repeatedly, each time
- * giving it new input and space output space. When there is no more input
- * data after the data in @inbuf, the flag %G_CONVERTER_INPUT_AT_END must be set.
- * The loop will be (unless some error happens) returning %G_CONVERTER_CONVERTED
- * each time until all data is consumed and all output is produced, then
- * %G_CONVERTER_FINISHED is returned instead. Note, that %G_CONVERTER_FINISHED
- * may be returned even if %G_CONVERTER_INPUT_AT_END is not set, for instance
- * in a decompression converter where the end of data is detectable from the
- * data (and there might even be other data after the end of the compressed data).
+ * @messages must point to an array of #GInputMessage structs and
+ * @num_messages must be the length of this array. Each #GInputMessage
+ * contains a pointer to an array of #GInputVector structs describing the
+ * buffers that the data received in each message will be written to.
  *
- * When some data has successfully been converted @bytes_read and is set to
- * the number of bytes read from @inbuf, and @bytes_written is set to indicate
- * how many bytes was written to @outbuf. If there are more data to output
- * or consume (i.e. unless the %G_CONVERTER_INPUT_AT_END is specified) then
- * %G_CONVERTER_CONVERTED is returned, and if no more data is to be output
- * then %G_CONVERTER_FINISHED is returned.
+ * @flags modify how all messages are received. The commonly available
+ * arguments for this are available in the #GSocketMsgFlags enum, but the
+ * values there are the same as the system values, and the flags
+ * are passed in as-is, so you can pass in system-specific flags too. These
+ * flags affect the overall receive operation. Flags affecting individual
+ * messages are returned in #GInputMessage.flags.
  *
- * On error %G_CONVERTER_ERROR is returned and @error is set accordingly.
- * Some errors need special handling:
+ * The other members of #GInputMessage are treated as described in its
+ * documentation.
  *
- * %G_IO_ERROR_NO_SPACE is returned if there is not enough space
- * to write the resulting converted data, the application should
- * call the function again with a larger @outbuf to continue.
+ * If @timeout is negative the call will block until @num_messages have been
+ * received, the connection is closed remotely (EOS), @cancellable is cancelled,
+ * or an error occurs.
  *
- * %G_IO_ERROR_PARTIAL_INPUT is returned if there is not enough
- * input to fully determine what the conversion should produce,
- * and the %G_CONVERTER_INPUT_AT_END flag is not set. This happens for
- * example with an incomplete multibyte sequence when converting text,
- * or when a regexp matches up to the end of the input (and may match
- * further input). It may also happen when @inbuf_size is zero and
- * there is no more data to produce.
+ * If @timeout is 0 the call will return up to @num_messages without blocking,
+ * or %G_IO_ERROR_WOULD_BLOCK if no messages are queued in the operating system
+ * to be received.
  *
- * When this happens the application should read more input and then
- * call the function again. If further input shows that there is no
- * more data call the function again with the same data but with
- * the %G_CONVERTER_INPUT_AT_END flag set. This may cause the conversion
- * to finish as e.g. in the regexp match case (or, to fail again with
- * %G_IO_ERROR_PARTIAL_INPUT in e.g. a charset conversion where the
- * input is actually partial).
+ * If @timeout is positive the call will block on the same conditions as if
+ * @timeout were negative. If the timeout is reached
+ * before any messages are received, %G_IO_ERROR_TIMED_OUT is returned,
+ * otherwise it will return the number of messages received before timing out.
+ * (Note: This is effectively the behaviour of `MSG_WAITFORONE` with
+ * recvmmsg().)
  *
- * After g_converter_convert() has returned %G_CONVERTER_FINISHED the
- * converter object is in an invalid state where its not allowed
- * to call g_converter_convert() anymore. At this time you can only
- * free the object or call g_converter_reset() to reset it to the
- * initial state.
+ * To be notified when messages are available, wait for the %G_IO_IN condition.
+ * Note though that you may still receive %G_IO_ERROR_WOULD_BLOCK from
+ * g_datagram_based_receive_messages() even if you were previously notified of a
+ * %G_IO_IN condition.
  *
- * If the flag %G_CONVERTER_FLUSH is set then conversion is modified
- * to try to write out all internal state to the output. The application
- * has to call the function multiple times with the flag set, and when
- * the available input has been consumed and all internal state has
- * been produced then %G_CONVERTER_FLUSHED (or %G_CONVERTER_FINISHED if
- * really at the end) is returned instead of %G_CONVERTER_CONVERTED.
- * This is somewhat similar to what happens at the end of the input stream,
- * but done in the middle of the data.
+ * If the remote peer closes the connection, any messages queued in the
+ * underlying receive buffer will be returned, and subsequent calls to
+ * g_datagram_based_receive_messages() will return 0 (with no error set).
  *
- * This has different meanings for different conversions. For instance
- * in a compression converter it would mean that we flush all the
- * compression state into output such that if you uncompress the
- * compressed data you get back all the input data. Doing this may
- * make the final file larger due to padding though. Another example
- * is a regexp conversion, where if you at the end of the flushed data
- * have a match, but there is also a potential longer match. In the
- * non-flushed case we would ask for more input, but when flushing we
- * treat this as the end of input and do the match.
+ * If the connection is shut down or closed (by calling g_socket_close() or
+ * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket, for
+ * example), all calls to this function will return %G_IO_ERROR_CLOSED.
  *
- * Flushing is not always possible (like if a charset converter flushes
- * at a partial multibyte sequence). Converters are supposed to try
- * to produce as much output as possible and then return an error
- * (typically %G_IO_ERROR_PARTIAL_INPUT).
+ * On error -1 is returned and @error is set accordingly. An error will only
+ * be returned if zero messages could be received; otherwise the number of
+ * messages successfully received before the error will be returned. If
+ * @cancellable is cancelled, %G_IO_ERROR_CANCELLED is returned as with any
+ * other error.
  *
- * Returns: a #GConverterResult, %G_CONVERTER_ERROR on error.
- * Since: 2.24
+ * Returns: number of messages received, or -1 on error. Note that the number
+ *     of messages received may be smaller than @num_messages if @timeout is
+ *     zero or positive, if the peer closed the connection, or if @num_messages
+ *     was larger than `UIO_MAXIOV` (1024), in which case the caller may re-try
+ *     to receive the remaining messages.
+ * Since: 2.48
  */
 
 
 /**
- * g_converter_input_stream_get_converter:
- * @converter_stream: a #GConverterInputStream
+ * g_datagram_based_send_messages:
+ * @datagram_based: a #GDatagramBased
+ * @messages: (array length=num_messages): an array of #GOutputMessage structs
+ * @num_messages: the number of elements in @messages
+ * @flags: an int containing #GSocketMsgFlags flags
+ * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1
+ *   to block indefinitely
+ * @cancellable: (nullable): a %GCancellable
+ * @error: return location for a #GError
  *
- * Gets the #GConverter that is used by @converter_stream.
+ * Send one or more data messages from @datagram_based in one go.
  *
- * Returns: (transfer none): the converter of the converter input stream
- * Since: 2.24
- */
-
-
-/**
- * g_converter_input_stream_new:
- * @base_stream: a #GInputStream
- * @converter: a #GConverter
+ * @messages must point to an array of #GOutputMessage structs and
+ * @num_messages must be the length of this array. Each #GOutputMessage
+ * contains an address to send the data to, and a pointer to an array of
+ * #GOutputVector structs to describe the buffers that the data to be sent
+ * for each message will be gathered from.
  *
- * Creates a new converter input stream for the @base_stream.
+ * @flags modify how the message is sent. The commonly available arguments
+ * for this are available in the #GSocketMsgFlags enum, but the
+ * values there are the same as the system values, and the flags
+ * are passed in as-is, so you can pass in system-specific flags too.
  *
- * Returns: a new #GInputStream.
- */
-
-
-/**
- * g_converter_output_stream_get_converter:
- * @converter_stream: a #GConverterOutputStream
+ * The other members of #GOutputMessage are treated as described in its
+ * documentation.
  *
- * Gets the #GConverter that is used by @converter_stream.
+ * If @timeout is negative the call will block until @num_messages have been
+ * sent, @cancellable is cancelled, or an error occurs.
  *
- * Returns: (transfer none): the converter of the converter output stream
- * Since: 2.24
+ * If @timeout is 0 the call will send up to @num_messages without blocking,
+ * or will return %G_IO_ERROR_WOULD_BLOCK if there is no space to send messages.
+ *
+ * If @timeout is positive the call will block on the same conditions as if
+ * @timeout were negative. If the timeout is reached before any messages are
+ * sent, %G_IO_ERROR_TIMED_OUT is returned, otherwise it will return the number
+ * of messages sent before timing out.
+ *
+ * To be notified when messages can be sent, wait for the %G_IO_OUT condition.
+ * Note though that you may still receive %G_IO_ERROR_WOULD_BLOCK from
+ * g_datagram_based_send_messages() even if you were previously notified of a
+ * %G_IO_OUT condition. (On Windows in particular, this is very common due to
+ * the way the underlying APIs work.)
+ *
+ * If the connection is shut down or closed (by calling g_socket_close() or
+ * g_socket_shutdown() with @shutdown_write set, if it’s a #GSocket, for
+ * example), all calls to this function will return %G_IO_ERROR_CLOSED.
+ *
+ * On error -1 is returned and @error is set accordingly. An error will only
+ * be returned if zero messages could be sent; otherwise the number of messages
+ * successfully sent before the error will be returned. If @cancellable is
+ * cancelled, %G_IO_ERROR_CANCELLED is returned as with any other error.
+ *
+ * Returns: number of messages sent, or -1 on error. Note that the number of
+ *     messages sent may be smaller than @num_messages if @timeout is zero
+ *     or positive, or if @num_messages was larger than `UIO_MAXIOV` (1024), in
+ *     which case the caller may re-try to send the remaining messages.
+ * Since: 2.48
  */
 
 
 /**
- * g_converter_output_stream_new:
- * @base_stream: a #GOutputStream
- * @converter: a #GConverter
+ * g_dbus_action_group_get:
+ * @connection: A #GDBusConnection
+ * @bus_name: (nullable): the bus name which exports the action
+ *     group or %NULL if @connection is not a message bus connection
+ * @object_path: the object path at which the action group is exported
  *
- * Creates a new converter output stream for the @base_stream.
+ * Obtains a #GDBusActionGroup for the action group which is exported at
+ * the given @bus_name and @object_path.
  *
- * Returns: a new #GOutputStream.
+ * The thread default main context is taken at the time of this call.
+ * All signals on the menu model (and any linked models) are reported
+ * with respect to this context.  All calls on the returned menu model
+ * (and linked models) must also originate from this same context, with
+ * the thread default main context unchanged.
+ *
+ * This call is non-blocking.  The returned action group may or may not
+ * already be filled in.  The correct thing to do is connect the signals
+ * for the action group to monitor for changes and then to call
+ * g_action_group_list_actions() to get the initial list.
+ *
+ * Returns: (transfer full): a #GDBusActionGroup
+ * Since: 2.32
  */
 
 
 /**
- * g_converter_reset:
- * @converter: a #GConverter.
+ * g_dbus_address_escape_value:
+ * @string: an unescaped string to be included in a D-Bus address
+ *     as the value in a key-value pair
  *
- * Resets all internal state in the converter, making it behave
- * as if it was just created. If the converter has any internal
- * state that would produce output then that output is lost.
+ * Escape @string so it can appear in a D-Bus address as the value
+ * part of a key-value pair.
  *
- * Since: 2.24
+ * For instance, if @string is `/run/bus-for-:0`,
+ * this function would return `/run/bus-for-%3A0`,
+ * which could be used in a D-Bus address like
+ * `unix:nonce-tcp:host=127.0.0.1,port=42,noncefile=/run/bus-for-%3A0`.
+ *
+ * Returns: (transfer full): a copy of @string with all
+ *     non-optionally-escaped bytes escaped
+ * Since: 2.36
  */
 
 
 /**
- * g_credentials_get_native: (skip)
- * @credentials: A #GCredentials.
- * @native_type: The type of native credentials to get.
+ * g_dbus_address_get_for_bus_sync:
+ * @bus_type: a #GBusType
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * Gets a pointer to native credentials of type @native_type from
- * @credentials.
+ * Synchronously looks up the D-Bus address for the well-known message
+ * bus instance specified by @bus_type. This may involve using various
+ * platform specific mechanisms.
  *
- * It is a programming error (which will cause an warning to be
- * logged) to use this method if there is no #GCredentials support for
- * the OS or if @native_type isn't supported by the OS.
+ * The returned address will be in the
+ * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
  *
- * Returns: The pointer to native credentials or %NULL if the
- * operation there is no #GCredentials support for the OS or if
- * @native_type isn't supported by the OS. Do not free the returned
- * data, it is owned by @credentials.
+ * Returns: a valid D-Bus address string for @bus_type or %NULL if
+ *     @error is set
  * Since: 2.26
  */
 
 
 /**
- * g_credentials_get_unix_pid:
- * @credentials: A #GCredentials
- * @error: Return location for error or %NULL.
+ * g_dbus_address_get_stream:
+ * @address: A valid D-Bus address.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: Data to pass to @callback.
  *
- * Tries to get the UNIX process identifier from @credentials. This
- * method is only available on UNIX platforms.
+ * Asynchronously connects to an endpoint specified by @address and
+ * sets up the connection so it is in a state to run the client-side
+ * of the D-Bus authentication conversation. @address must be in the
+ * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
  *
- * This operation can fail if #GCredentials is not supported on the
- * OS or if the native credentials type does not contain information
- * about the UNIX process ID.
+ * When the operation is finished, @callback will be invoked. You can
+ * then call g_dbus_address_get_stream_finish() to get the result of
+ * the operation.
  *
- * Returns: The UNIX process ID, or -1 if @error is set.
- * Since: 2.36
+ * This is an asynchronous failable function. See
+ * g_dbus_address_get_stream_sync() for the synchronous version.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_credentials_get_unix_user:
- * @credentials: A #GCredentials
+ * g_dbus_address_get_stream_finish:
+ * @res: A #GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_address_get_stream().
+ * @out_guid: (optional) (out): %NULL or return location to store the GUID extracted from @address, if any.
  * @error: Return location for error or %NULL.
  *
- * Tries to get the UNIX user identifier from @credentials. This
- * method is only available on UNIX platforms.
- *
- * This operation can fail if #GCredentials is not supported on the
- * OS or if the native credentials type does not contain information
- * about the UNIX user.
+ * Finishes an operation started with g_dbus_address_get_stream().
  *
- * Returns: The UNIX user identifier or -1 if @error is set.
+ * Returns: (transfer full): A #GIOStream or %NULL if @error is set.
  * Since: 2.26
  */
 
 
 /**
- * g_credentials_is_same_user:
- * @credentials: A #GCredentials.
- * @other_credentials: A #GCredentials.
+ * g_dbus_address_get_stream_sync:
+ * @address: A valid D-Bus address.
+ * @out_guid: (optional) (out): %NULL or return location to store the GUID extracted from @address, if any.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
  * @error: Return location for error or %NULL.
  *
- * Checks if @credentials and @other_credentials is the same user.
+ * Synchronously connects to an endpoint specified by @address and
+ * sets up the connection so it is in a state to run the client-side
+ * of the D-Bus authentication conversation. @address must be in the
+ * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
  *
- * This operation can fail if #GCredentials is not supported on the
- * the OS.
+ * This is a synchronous failable function. See
+ * g_dbus_address_get_stream() for the asynchronous version.
  *
- * Returns: %TRUE if @credentials and @other_credentials has the same
- * user, %FALSE otherwise or if @error is set.
+ * Returns: (transfer full): A #GIOStream or %NULL if @error is set.
  * Since: 2.26
  */
 
 
 /**
- * g_credentials_new:
+ * g_dbus_annotation_info_lookup:
+ * @annotations: (array zero-terminated=1) (nullable): A %NULL-terminated array of annotations or %NULL.
+ * @name: The name of the annotation to look up.
  *
- * Creates a new #GCredentials object with credentials matching the
- * the current process.
+ * Looks up the value of an annotation.
  *
- * Returns: A #GCredentials. Free with g_object_unref().
+ * The cost of this function is O(n) in number of annotations.
+ *
+ * Returns: The value or %NULL if not found. Do not free, it is owned by @annotations.
  * Since: 2.26
  */
 
 
 /**
- * g_credentials_set_native:
- * @credentials: A #GCredentials.
- * @native_type: The type of native credentials to set.
- * @native: (not nullable): A pointer to native credentials.
- *
- * Copies the native credentials of type @native_type from @native
- * into @credentials.
+ * g_dbus_annotation_info_ref:
+ * @info: A #GDBusNodeInfo
  *
- * It is a programming error (which will cause an warning to be
- * logged) to use this method if there is no #GCredentials support for
- * the OS or if @native_type isn't supported by the OS.
+ * If @info is statically allocated does nothing. Otherwise increases
+ * the reference count.
  *
+ * Returns: The same @info.
  * Since: 2.26
  */
 
 
 /**
- * g_credentials_set_unix_user:
- * @credentials: A #GCredentials.
- * @uid: The UNIX user identifier to set.
- * @error: Return location for error or %NULL.
- *
- * Tries to set the UNIX user identifier on @credentials. This method
- * is only available on UNIX platforms.
+ * g_dbus_annotation_info_unref:
+ * @info: A #GDBusAnnotationInfo.
  *
- * This operation can fail if #GCredentials is not supported on the
- * OS or if the native credentials type does not contain information
- * about the UNIX user. It can also fail if the OS does not allow the
- * use of "spoofed" credentials.
+ * If @info is statically allocated, does nothing. Otherwise decreases
+ * the reference count of @info. When its reference count drops to 0,
+ * the memory used is freed.
  *
- * Returns: %TRUE if @uid was set, %FALSE if error is set.
  * Since: 2.26
  */
 
 
 /**
- * g_credentials_to_string:
- * @credentials: A #GCredentials object.
+ * g_dbus_arg_info_ref:
+ * @info: A #GDBusArgInfo
  *
- * Creates a human-readable textual representation of @credentials
- * that can be used in logging and debug messages. The format of the
- * returned string may change in future GLib release.
+ * If @info is statically allocated does nothing. Otherwise increases
+ * the reference count.
  *
- * Returns: A string that should be freed with g_free().
+ * Returns: The same @info.
  * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_get_byte_order:
- * @stream: a given #GDataInputStream.
+ * g_dbus_arg_info_unref:
+ * @info: A #GDBusArgInfo.
  *
- * Gets the byte order for the data input stream.
+ * If @info is statically allocated, does nothing. Otherwise decreases
+ * the reference count of @info. When its reference count drops to 0,
+ * the memory used is freed.
  *
- * Returns: the @stream's current #GDataStreamByteOrder.
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_get_newline_type:
- * @stream: a given #GDataInputStream.
+ * g_dbus_auth_observer_allow_mechanism:
+ * @observer: A #GDBusAuthObserver.
+ * @mechanism: The name of the mechanism, e.g. `DBUS_COOKIE_SHA1`.
  *
- * Gets the current newline type for the @stream.
+ * Emits the #GDBusAuthObserver::allow-mechanism signal on @observer.
  *
- * Returns: #GDataStreamNewlineType for the given @stream.
+ * Returns: %TRUE if @mechanism can be used to authenticate the other peer, %FALSE if not.
+ * Since: 2.34
  */
 
 
 /**
- * g_data_input_stream_new:
- * @base_stream: a #GInputStream.
+ * g_dbus_auth_observer_authorize_authenticated_peer:
+ * @observer: A #GDBusAuthObserver.
+ * @stream: A #GIOStream for the #GDBusConnection.
+ * @credentials: (nullable): Credentials received from the peer or %NULL.
  *
- * Creates a new data input stream for the @base_stream.
+ * Emits the #GDBusAuthObserver::authorize-authenticated-peer signal on @observer.
  *
- * Returns: a new #GDataInputStream.
+ * Returns: %TRUE if the peer is authorized, %FALSE if not.
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_byte:
- * @stream: a given #GDataInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
+ * g_dbus_auth_observer_new:
  *
- * Reads an unsigned 8-bit/1-byte value from @stream.
+ * Creates a new #GDBusAuthObserver object.
  *
- * Returns: an unsigned 8-bit/1-byte value read from the @stream or %0
- * if an error occurred.
+ * Returns: A #GDBusAuthObserver. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_int16:
- * @stream: a given #GDataInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
+ * g_dbus_connection_add_filter:
+ * @connection: a #GDBusConnection
+ * @filter_function: a filter function
+ * @user_data: user data to pass to @filter_function
+ * @user_data_free_func: function to free @user_data with when filter
+ *     is removed or %NULL
  *
- * Reads a 16-bit/2-byte value from @stream.
+ * Adds a message filter. Filters are handlers that are run on all
+ * incoming and outgoing messages, prior to standard dispatch. Filters
+ * are run in the order that they were added.  The same handler can be
+ * added as a filter more than once, in which case it will be run more
+ * than once.  Filters added during a filter callback won't be run on
+ * the message being processed. Filter functions are allowed to modify
+ * and even drop messages.
  *
- * In order to get the correct byte order for this read operation,
- * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+ * Note that filters are run in a dedicated message handling thread so
+ * they can't block and, generally, can't do anything but signal a
+ * worker thread. Also note that filters are rarely needed - use API
+ * such as g_dbus_connection_send_message_with_reply(),
+ * g_dbus_connection_signal_subscribe() or g_dbus_connection_call() instead.
  *
- * Returns: a signed 16-bit/2-byte value read from @stream or %0 if
- * an error occurred.
+ * If a filter consumes an incoming message the message is not
+ * dispatched anywhere else - not even the standard dispatch machinery
+ * (that API such as g_dbus_connection_signal_subscribe() and
+ * g_dbus_connection_send_message_with_reply() relies on) will see the
+ * message. Similary, if a filter consumes an outgoing message, the
+ * message will not be sent to the other peer.
+ *
+ * If @user_data_free_func is non-%NULL, it will be called (in the
+ * thread-default main context of the thread you are calling this
+ * method from) at some point after @user_data is no longer
+ * needed. (It is not guaranteed to be called synchronously when the
+ * filter is removed, and may be called after @connection has been
+ * destroyed.)
+ *
+ * Returns: a filter identifier that can be used with
+ *     g_dbus_connection_remove_filter()
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_int32:
- * @stream: a given #GDataInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
- *
- * Reads a signed 32-bit/4-byte value from @stream.
+ * g_dbus_connection_call:
+ * @connection: a #GDBusConnection
+ * @bus_name: (nullable): a unique or well-known bus name or %NULL if
+ *     @connection is not a message bus connection
+ * @object_path: path of remote object
+ * @interface_name: D-Bus interface to invoke method on
+ * @method_name: the name of the method to invoke
+ * @parameters: (nullable): a #GVariant tuple with parameters for the method
+ *     or %NULL if not passing parameters
+ * @reply_type: (nullable): the expected type of the reply (which will be a
+ *     tuple), or %NULL
+ * @flags: flags from the #GDBusCallFlags enumeration
+ * @timeout_msec: the timeout in milliseconds, -1 to use the default
+ *     timeout or %G_MAXINT for no timeout
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: (nullable): a #GAsyncReadyCallback to call when the request
+ *     is satisfied or %NULL if you don't care about the result of the
+ *     method invocation
+ * @user_data: the data to pass to @callback
  *
- * In order to get the correct byte order for this read operation,
- * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+ * Asynchronously invokes the @method_name method on the
+ * @interface_name D-Bus interface on the remote object at
+ * @object_path owned by @bus_name.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+ * fail with %G_IO_ERROR_CANCELLED. If @parameters contains a value
+ * not compatible with the D-Bus protocol, the operation fails with
+ * %G_IO_ERROR_INVALID_ARGUMENT.
  *
- * Returns: a signed 32-bit/4-byte value read from the @stream or %0 if
- * an error occurred.
- */
-
-
-/**
- * g_data_input_stream_read_int64:
- * @stream: a given #GDataInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
+ * If @reply_type is non-%NULL then the reply will be checked for having this type and an
+ * error will be raised if it does not match.  Said another way, if you give a @reply_type
+ * then any non-%NULL return value will be of this type. Unless it’s
+ * %G_VARIANT_TYPE_UNIT, the @reply_type will be a tuple containing one or more
+ * values.
  *
- * Reads a 64-bit/8-byte value from @stream.
+ * If the @parameters #GVariant is floating, it is consumed. This allows
+ * convenient 'inline' use of g_variant_new(), e.g.:
+ * |[<!-- language="C" -->
+ *  g_dbus_connection_call (connection,
+ *                          "org.freedesktop.StringThings",
+ *                          "/org/freedesktop/StringThings",
+ *                          "org.freedesktop.StringThings",
+ *                          "TwoStrings",
+ *                          g_variant_new ("(ss)",
+ *                                         "Thing One",
+ *                                         "Thing Two"),
+ *                          NULL,
+ *                          G_DBUS_CALL_FLAGS_NONE,
+ *                          -1,
+ *                          NULL,
+ *                          (GAsyncReadyCallback) two_strings_done,
+ *                          NULL);
+ * ]|
  *
- * In order to get the correct byte order for this read operation,
- * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+ * This is an asynchronous method. When the operation is finished,
+ * @callback will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from. You can then call
+ * g_dbus_connection_call_finish() to get the result of the operation.
+ * See g_dbus_connection_call_sync() for the synchronous version of this
+ * function.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * If @callback is %NULL then the D-Bus method call message will be sent with
+ * the %G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED flag set.
  *
- * Returns: a signed 64-bit/8-byte value read from @stream or %0 if
- * an error occurred.
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_line:
- * @stream: a given #GDataInputStream.
- * @length: (out) (optional): a #gsize to get the length of the data read in.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
- *
- * Reads a line from the data input stream.  Note that no encoding
- * checks or conversion is performed; the input is not guaranteed to
- * be UTF-8, and may in fact have embedded NUL characters.
+ * g_dbus_connection_call_finish:
+ * @connection: a #GDBusConnection
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_call()
+ * @error: return location for error or %NULL
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Finishes an operation started with g_dbus_connection_call().
  *
- * Returns: (nullable) (transfer full) (array zero-terminated=1) (element-type guint8):
- *  a NUL terminated byte array with the line that was read in
- *  (without the newlines).  Set @length to a #gsize to get the length
- *  of the read line.  On an error, it will return %NULL and @error
- *  will be set. If there's no content to read, it will still return
- *  %NULL, but @error won't be set.
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ *     return values. Free with g_variant_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_line_async:
- * @stream: a given #GDataInputStream.
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied.
- * @user_data: (closure): the data to pass to callback function.
+ * g_dbus_connection_call_sync:
+ * @connection: a #GDBusConnection
+ * @bus_name: (nullable): a unique or well-known bus name or %NULL if
+ *     @connection is not a message bus connection
+ * @object_path: path of remote object
+ * @interface_name: D-Bus interface to invoke method on
+ * @method_name: the name of the method to invoke
+ * @parameters: (nullable): a #GVariant tuple with parameters for the method
+ *     or %NULL if not passing parameters
+ * @reply_type: (nullable): the expected type of the reply, or %NULL
+ * @flags: flags from the #GDBusCallFlags enumeration
+ * @timeout_msec: the timeout in milliseconds, -1 to use the default
+ *     timeout or %G_MAXINT for no timeout
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * The asynchronous version of g_data_input_stream_read_line().  It is
- * an error to have two outstanding calls to this function.
+ * Synchronously invokes the @method_name method on the
+ * @interface_name D-Bus interface on the remote object at
+ * @object_path owned by @bus_name.
  *
- * When the operation is finished, @callback will be called. You
- * can then call g_data_input_stream_read_line_finish() to get
- * the result of the operation.
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the
+ * operation will fail with %G_IO_ERROR_CANCELLED. If @parameters
+ * contains a value not compatible with the D-Bus protocol, the operation
+ * fails with %G_IO_ERROR_INVALID_ARGUMENT.
  *
- * Since: 2.20
- */
-
-
-/**
- * g_data_input_stream_read_line_finish:
- * @stream: a given #GDataInputStream.
- * @result: the #GAsyncResult that was provided to the callback.
- * @length: (out) (optional): a #gsize to get the length of the data read in.
- * @error: #GError for error reporting.
+ * If @reply_type is non-%NULL then the reply will be checked for having
+ * this type and an error will be raised if it does not match.  Said
+ * another way, if you give a @reply_type then any non-%NULL return
+ * value will be of this type.
  *
- * Finish an asynchronous call started by
- * g_data_input_stream_read_line_async().  Note the warning about
- * string encoding in g_data_input_stream_read_line() applies here as
- * well.
+ * If the @parameters #GVariant is floating, it is consumed.
+ * This allows convenient 'inline' use of g_variant_new(), e.g.:
+ * |[<!-- language="C" -->
+ *  g_dbus_connection_call_sync (connection,
+ *                               "org.freedesktop.StringThings",
+ *                               "/org/freedesktop/StringThings",
+ *                               "org.freedesktop.StringThings",
+ *                               "TwoStrings",
+ *                               g_variant_new ("(ss)",
+ *                                              "Thing One",
+ *                                              "Thing Two"),
+ *                               NULL,
+ *                               G_DBUS_CALL_FLAGS_NONE,
+ *                               -1,
+ *                               NULL,
+ *                               &error);
+ * ]|
  *
- * Returns: (nullable) (transfer full) (array zero-terminated=1) (element-type guint8):
- *  a NUL-terminated byte array with the line that was read in
- *  (without the newlines).  Set @length to a #gsize to get the length
- *  of the read line.  On an error, it will return %NULL and @error
- *  will be set. If there's no content to read, it will still return
- *  %NULL, but @error won't be set.
- * Since: 2.20
+ * The calling thread is blocked until a reply is received. See
+ * g_dbus_connection_call() for the asynchronous version of
+ * this method.
+ *
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ *     return values. Free with g_variant_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_line_finish_utf8:
- * @stream: a given #GDataInputStream.
- * @result: the #GAsyncResult that was provided to the callback.
- * @length: (out) (optional): a #gsize to get the length of the data read in.
- * @error: #GError for error reporting.
+ * g_dbus_connection_call_with_unix_fd_list:
+ * @connection: a #GDBusConnection
+ * @bus_name: (nullable): a unique or well-known bus name or %NULL if
+ *     @connection is not a message bus connection
+ * @object_path: path of remote object
+ * @interface_name: D-Bus interface to invoke method on
+ * @method_name: the name of the method to invoke
+ * @parameters: (nullable): a #GVariant tuple with parameters for the method
+ *     or %NULL if not passing parameters
+ * @reply_type: (nullable): the expected type of the reply, or %NULL
+ * @flags: flags from the #GDBusCallFlags enumeration
+ * @timeout_msec: the timeout in milliseconds, -1 to use the default
+ *     timeout or %G_MAXINT for no timeout
+ * @fd_list: (nullable): a #GUnixFDList or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: (nullable): a #GAsyncReadyCallback to call when the request is
+ *     satisfied or %NULL if you don't * care about the result of the
+ *     method invocation
+ * @user_data: The data to pass to @callback.
  *
- * Finish an asynchronous call started by
- * g_data_input_stream_read_line_async().
+ * Like g_dbus_connection_call() but also takes a #GUnixFDList object.
+ *
+ * This method is only available on UNIX.
  *
- * Returns: (nullable) (transfer full): a string with the line that
- *  was read in (without the newlines).  Set @length to a #gsize to
- *  get the length of the read line.  On an error, it will return
- *  %NULL and @error will be set. For UTF-8 conversion errors, the set
- *  error domain is %G_CONVERT_ERROR.  If there's no content to read,
- *  it will still return %NULL, but @error won't be set.
  * Since: 2.30
  */
 
 
 /**
- * g_data_input_stream_read_line_utf8:
- * @stream: a given #GDataInputStream.
- * @length: (out) (optional): a #gsize to get the length of the data read in.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
- *
- * Reads a UTF-8 encoded line from the data input stream.
+ * g_dbus_connection_call_with_unix_fd_list_finish:
+ * @connection: a #GDBusConnection
+ * @out_fd_list: (out) (optional): return location for a #GUnixFDList or %NULL
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *     g_dbus_connection_call_with_unix_fd_list()
+ * @error: return location for error or %NULL
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Finishes an operation started with g_dbus_connection_call_with_unix_fd_list().
  *
- * Returns: (nullable) (transfer full): a NUL terminated UTF-8 string
- *  with the line that was read in (without the newlines).  Set
- *  @length to a #gsize to get the length of the read line.  On an
- *  error, it will return %NULL and @error will be set.  For UTF-8
- *  conversion errors, the set error domain is %G_CONVERT_ERROR.  If
- *  there's no content to read, it will still return %NULL, but @error
- *  won't be set.
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ *     return values. Free with g_variant_unref().
  * Since: 2.30
  */
 
 
 /**
- * g_data_input_stream_read_uint16:
- * @stream: a given #GDataInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
+ * g_dbus_connection_call_with_unix_fd_list_sync:
+ * @connection: a #GDBusConnection
+ * @bus_name: (nullable): a unique or well-known bus name or %NULL
+ *     if @connection is not a message bus connection
+ * @object_path: path of remote object
+ * @interface_name: D-Bus interface to invoke method on
+ * @method_name: the name of the method to invoke
+ * @parameters: (nullable): a #GVariant tuple with parameters for
+ *     the method or %NULL if not passing parameters
+ * @reply_type: (nullable): the expected type of the reply, or %NULL
+ * @flags: flags from the #GDBusCallFlags enumeration
+ * @timeout_msec: the timeout in milliseconds, -1 to use the default
+ *     timeout or %G_MAXINT for no timeout
+ * @fd_list: (nullable): a #GUnixFDList or %NULL
+ * @out_fd_list: (out) (optional): return location for a #GUnixFDList or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * Reads an unsigned 16-bit/2-byte value from @stream.
+ * Like g_dbus_connection_call_sync() but also takes and returns #GUnixFDList objects.
  *
- * In order to get the correct byte order for this read operation,
- * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+ * This method is only available on UNIX.
  *
- * Returns: an unsigned 16-bit/2-byte value read from the @stream or %0 if
- * an error occurred.
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ *     return values. Free with g_variant_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_data_input_stream_read_uint32:
- * @stream: a given #GDataInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
+ * g_dbus_connection_close:
+ * @connection: a #GDBusConnection
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: (nullable): a #GAsyncReadyCallback to call when the request is
+ *     satisfied or %NULL if you don't care about the result
+ * @user_data: The data to pass to @callback
  *
- * Reads an unsigned 32-bit/4-byte value from @stream.
+ * Closes @connection. Note that this never causes the process to
+ * exit (this might only happen if the other end of a shared message
+ * bus connection disconnects, see #GDBusConnection:exit-on-close).
  *
- * In order to get the correct byte order for this read operation,
- * see g_data_input_stream_get_byte_order() and g_data_input_stream_set_byte_order().
+ * Once the connection is closed, operations such as sending a message
+ * will return with the error %G_IO_ERROR_CLOSED. Closing a connection
+ * will not automatically flush the connection so queued messages may
+ * be lost. Use g_dbus_connection_flush() if you need such guarantees.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * If @connection is already closed, this method fails with
+ * %G_IO_ERROR_CLOSED.
  *
- * Returns: an unsigned 32-bit/4-byte value read from the @stream or %0 if
- * an error occurred.
+ * When @connection has been closed, the #GDBusConnection::closed
+ * signal is emitted in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread that @connection was constructed in.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * @callback will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from. You can
+ * then call g_dbus_connection_close_finish() to get the result of the
+ * operation. See g_dbus_connection_close_sync() for the synchronous
+ * version.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_uint64:
- * @stream: a given #GDataInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
- *
- * Reads an unsigned 64-bit/8-byte value from @stream.
- *
- * In order to get the correct byte order for this read operation,
- * see g_data_input_stream_get_byte_order().
+ * g_dbus_connection_close_finish:
+ * @connection: a #GDBusConnection
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
+ *     to g_dbus_connection_close()
+ * @error: return location for error or %NULL
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Finishes an operation started with g_dbus_connection_close().
  *
- * Returns: an unsigned 64-bit/8-byte read from @stream or %0 if
- * an error occurred.
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_until:
- * @stream: a given #GDataInputStream.
- * @stop_chars: characters to terminate the read.
- * @length: (out) (optional): a #gsize to get the length of the data read in.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting.
- *
- * Reads a string from the data input stream, up to the first
- * occurrence of any of the stop characters.
- *
- * Note that, in contrast to g_data_input_stream_read_until_async(),
- * this function consumes the stop character that it finds.
+ * g_dbus_connection_close_sync:
+ * @connection: a #GDBusConnection
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * Don't use this function in new code.  Its functionality is
- * inconsistent with g_data_input_stream_read_until_async().  Both
- * functions will be marked as deprecated in a future release.  Use
- * g_data_input_stream_read_upto() instead, but note that that function
- * does not consume the stop character.
+ * Synchronously closes @connection. The calling thread is blocked
+ * until this is done. See g_dbus_connection_close() for the
+ * asynchronous version of this method and more details about what it
+ * does.
  *
- * Returns: (transfer full): a string with the data that was read
- *     before encountering any of the stop characters. Set @length to
- *     a #gsize to get the length of the string. This function will
- *     return %NULL on an error.
- * Deprecated: 2.56: Use g_data_input_stream_read_upto() instead, which has more
- *     consistent behaviour regarding the stop character.
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_until_async:
- * @stream: a given #GDataInputStream.
- * @stop_chars: characters to terminate the read.
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied.
- * @user_data: (closure): the data to pass to callback function.
- *
- * The asynchronous version of g_data_input_stream_read_until().
- * It is an error to have two outstanding calls to this function.
+ * g_dbus_connection_emit_signal:
+ * @connection: a #GDBusConnection
+ * @destination_bus_name: (nullable): the unique bus name for the destination
+ *     for the signal or %NULL to emit to all listeners
+ * @object_path: path of remote object
+ * @interface_name: D-Bus interface to emit a signal on
+ * @signal_name: the name of the signal to emit
+ * @parameters: (nullable): a #GVariant tuple with parameters for the signal
+ *              or %NULL if not passing parameters
+ * @error: Return location for error or %NULL
  *
- * Note that, in contrast to g_data_input_stream_read_until(),
- * this function does not consume the stop character that it finds.  You
- * must read it for yourself.
+ * Emits a signal.
  *
- * When the operation is finished, @callback will be called. You
- * can then call g_data_input_stream_read_until_finish() to get
- * the result of the operation.
+ * If the parameters GVariant is floating, it is consumed.
  *
- * Don't use this function in new code.  Its functionality is
- * inconsistent with g_data_input_stream_read_until().  Both functions
- * will be marked as deprecated in a future release.  Use
- * g_data_input_stream_read_upto_async() instead.
+ * This can only fail if @parameters is not compatible with the D-Bus protocol
+ * (%G_IO_ERROR_INVALID_ARGUMENT), or if @connection has been closed
+ * (%G_IO_ERROR_CLOSED).
  *
- * Since: 2.20
- * Deprecated: 2.56: Use g_data_input_stream_read_upto_async() instead, which
- *     has more consistent behaviour regarding the stop character.
+ * Returns: %TRUE unless @error is set
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_read_until_finish:
- * @stream: a given #GDataInputStream.
- * @result: the #GAsyncResult that was provided to the callback.
- * @length: (out) (optional): a #gsize to get the length of the data read in.
- * @error: #GError for error reporting.
- *
- * Finish an asynchronous call started by
- * g_data_input_stream_read_until_async().
+ * g_dbus_connection_export_action_group:
+ * @connection: a #GDBusConnection
+ * @object_path: a D-Bus object path
+ * @action_group: a #GActionGroup
+ * @error: a pointer to a %NULL #GError, or %NULL
  *
- * Since: 2.20
- * Returns: (transfer full): a string with the data that was read
- *     before encountering any of the stop characters. Set @length to
- *     a #gsize to get the length of the string. This function will
- *     return %NULL on an error.
- * Deprecated: 2.56: Use g_data_input_stream_read_upto_finish() instead, which
- *     has more consistent behaviour regarding the stop character.
- */
-
-
-/**
- * g_data_input_stream_read_upto:
- * @stream: a #GDataInputStream
- * @stop_chars: characters to terminate the read
- * @stop_chars_len: length of @stop_chars. May be -1 if @stop_chars is
- *     nul-terminated
- * @length: (out) (optional): a #gsize to get the length of the data read in
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @error: #GError for error reporting
+ * Exports @action_group on @connection at @object_path.
  *
- * Reads a string from the data input stream, up to the first
- * occurrence of any of the stop characters.
+ * The implemented D-Bus API should be considered private.  It is
+ * subject to change in the future.
  *
- * In contrast to g_data_input_stream_read_until(), this function
- * does not consume the stop character. You have to use
- * g_data_input_stream_read_byte() to get it before calling
- * g_data_input_stream_read_upto() again.
+ * A given object path can only have one action group exported on it.
+ * If this constraint is violated, the export will fail and 0 will be
+ * returned (with @error set accordingly).
  *
- * Note that @stop_chars may contain '\0' if @stop_chars_len is
- * specified.
+ * You can unexport the action group using
+ * g_dbus_connection_unexport_action_group() with the return value of
+ * this function.
  *
- * The returned string will always be nul-terminated on success.
+ * The thread default main context is taken at the time of this call.
+ * All incoming action activations and state change requests are
+ * reported from this context.  Any changes on the action group that
+ * cause it to emit signals must also come from this same context.
+ * Since incoming action activations and state change requests are
+ * rather likely to cause changes on the action group, this effectively
+ * limits a given action group to being exported from only one main
+ * context.
  *
- * Returns: (transfer full): a string with the data that was read
- *     before encountering any of the stop characters. Set @length to
- *     a #gsize to get the length of the string. This function will
- *     return %NULL on an error
- * Since: 2.26
+ * Returns: the ID of the export (never zero), or 0 in case of failure
+ * Since: 2.32
  */
 
 
 /**
- * g_data_input_stream_read_upto_async:
- * @stream: a #GDataInputStream
- * @stop_chars: characters to terminate the read
- * @stop_chars_len: length of @stop_chars. May be -1 if @stop_chars is
- *     nul-terminated
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_dbus_connection_export_menu_model:
+ * @connection: a #GDBusConnection
+ * @object_path: a D-Bus object path
+ * @menu: a #GMenuModel
+ * @error: return location for an error, or %NULL
  *
- * The asynchronous version of g_data_input_stream_read_upto().
- * It is an error to have two outstanding calls to this function.
+ * Exports @menu on @connection at @object_path.
  *
- * In contrast to g_data_input_stream_read_until(), this function
- * does not consume the stop character. You have to use
- * g_data_input_stream_read_byte() to get it before calling
- * g_data_input_stream_read_upto() again.
+ * The implemented D-Bus API should be considered private.
+ * It is subject to change in the future.
  *
- * Note that @stop_chars may contain '\0' if @stop_chars_len is
- * specified.
+ * An object path can only have one menu model exported on it. If this
+ * constraint is violated, the export will fail and 0 will be
+ * returned (with @error set accordingly).
  *
- * When the operation is finished, @callback will be called. You
- * can then call g_data_input_stream_read_upto_finish() to get
- * the result of the operation.
+ * You can unexport the menu model using
+ * g_dbus_connection_unexport_menu_model() with the return value of
+ * this function.
  *
- * Since: 2.26
+ * Returns: the ID of the export (never zero), or 0 in case of failure
+ * Since: 2.32
  */
 
 
 /**
- * g_data_input_stream_read_upto_finish:
- * @stream: a #GDataInputStream
- * @result: the #GAsyncResult that was provided to the callback
- * @length: (out) (optional): a #gsize to get the length of the data read in
- * @error: #GError for error reporting
- *
- * Finish an asynchronous call started by
- * g_data_input_stream_read_upto_async().
+ * g_dbus_connection_flush:
+ * @connection: a #GDBusConnection
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: (nullable): a #GAsyncReadyCallback to call when the
+ *     request is satisfied or %NULL if you don't care about the result
+ * @user_data: The data to pass to @callback
  *
- * Note that this function does not consume the stop character. You
- * have to use g_data_input_stream_read_byte() to get it before calling
- * g_data_input_stream_read_upto_async() again.
+ * Asynchronously flushes @connection, that is, writes all queued
+ * outgoing message to the transport and then flushes the transport
+ * (using g_output_stream_flush_async()). This is useful in programs
+ * that wants to emit a D-Bus signal and then exit immediately. Without
+ * flushing the connection, there is no guaranteed that the message has
+ * been sent to the networking buffers in the OS kernel.
  *
- * The returned string will always be nul-terminated on success.
+ * This is an asynchronous method. When the operation is finished,
+ * @callback will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from. You can
+ * then call g_dbus_connection_flush_finish() to get the result of the
+ * operation. See g_dbus_connection_flush_sync() for the synchronous
+ * version.
  *
- * Returns: (transfer full): a string with the data that was read
- *     before encountering any of the stop characters. Set @length to
- *     a #gsize to get the length of the string. This function will
- *     return %NULL on an error.
- * Since: 2.24
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_set_byte_order:
- * @stream: a given #GDataInputStream.
- * @order: a #GDataStreamByteOrder to set.
+ * g_dbus_connection_flush_finish:
+ * @connection: a #GDBusConnection
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
+ *     to g_dbus_connection_flush()
+ * @error: return location for error or %NULL
  *
- * This function sets the byte order for the given @stream. All subsequent
- * reads from the @stream will be read in the given @order.
+ * Finishes an operation started with g_dbus_connection_flush().
+ *
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
+ * Since: 2.26
  */
 
 
 /**
- * g_data_input_stream_set_newline_type:
- * @stream: a #GDataInputStream.
- * @type: the type of new line return as #GDataStreamNewlineType.
+ * g_dbus_connection_flush_sync:
+ * @connection: a #GDBusConnection
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * Sets the newline type for the @stream.
+ * Synchronously flushes @connection. The calling thread is blocked
+ * until this is done. See g_dbus_connection_flush() for the
+ * asynchronous version of this method and more details about what it
+ * does.
  *
- * Note that using G_DATA_STREAM_NEWLINE_TYPE_ANY is slightly unsafe. If a read
- * chunk ends in "CR" we must read an additional byte to know if this is "CR" or
- * "CR LF", and this might block if there is no more data available.
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_get_byte_order:
- * @stream: a #GDataOutputStream.
+ * g_dbus_connection_get_capabilities:
+ * @connection: a #GDBusConnection
  *
- * Gets the byte order for the stream.
+ * Gets the capabilities negotiated with the remote peer
  *
- * Returns: the #GDataStreamByteOrder for the @stream.
+ * Returns: zero or more flags from the #GDBusCapabilityFlags enumeration
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_new:
- * @base_stream: a #GOutputStream.
+ * g_dbus_connection_get_exit_on_close:
+ * @connection: a #GDBusConnection
  *
- * Creates a new data output stream for @base_stream.
+ * Gets whether the process is terminated when @connection is
+ * closed by the remote peer. See
+ * #GDBusConnection:exit-on-close for more details.
  *
- * Returns: #GDataOutputStream.
+ * Returns: whether the process is terminated when @connection is
+ *     closed by the remote peer
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_put_byte:
- * @stream: a #GDataOutputStream.
- * @data: a #guchar.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dbus_connection_get_guid:
+ * @connection: a #GDBusConnection
  *
- * Puts a byte into the output stream.
+ * The GUID of the peer performing the role of server when
+ * authenticating. See #GDBusConnection:guid for more details.
  *
- * Returns: %TRUE if @data was successfully added to the @stream.
+ * Returns: The GUID. Do not free this string, it is owned by
+ *     @connection.
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_put_int16:
- * @stream: a #GDataOutputStream.
- * @data: a #gint16.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dbus_connection_get_last_serial:
+ * @connection: a #GDBusConnection
  *
- * Puts a signed 16-bit integer into the output stream.
+ * Retrieves the last serial number assigned to a #GDBusMessage on
+ * the current thread. This includes messages sent via both low-level
+ * API such as g_dbus_connection_send_message() as well as
+ * high-level API such as g_dbus_connection_emit_signal(),
+ * g_dbus_connection_call() or g_dbus_proxy_call().
  *
- * Returns: %TRUE if @data was successfully added to the @stream.
+ * Returns: the last used serial or zero when no message has been sent
+ *     within the current thread
+ * Since: 2.34
  */
 
 
 /**
- * g_data_output_stream_put_int32:
- * @stream: a #GDataOutputStream.
- * @data: a #gint32.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dbus_connection_get_peer_credentials:
+ * @connection: a #GDBusConnection
  *
- * Puts a signed 32-bit integer into the output stream.
+ * Gets the credentials of the authenticated peer. This will always
+ * return %NULL unless @connection acted as a server
+ * (e.g. %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER was passed)
+ * when set up and the client passed credentials as part of the
+ * authentication process.
  *
- * Returns: %TRUE if @data was successfully added to the @stream.
+ * In a message bus setup, the message bus is always the server and
+ * each application is a client. So this method will always return
+ * %NULL for message bus clients.
+ *
+ * Returns: (transfer none) (nullable): a #GCredentials or %NULL if not
+ *     available. Do not free this object, it is owned by @connection.
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_put_int64:
- * @stream: a #GDataOutputStream.
- * @data: a #gint64.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dbus_connection_get_stream:
+ * @connection: a #GDBusConnection
  *
- * Puts a signed 64-bit integer into the stream.
+ * Gets the underlying stream used for IO.
  *
- * Returns: %TRUE if @data was successfully added to the @stream.
+ * While the #GDBusConnection is active, it will interact with this
+ * stream from a worker thread, so it is not safe to interact with
+ * the stream directly.
+ *
+ * Returns: (transfer none): the stream used for IO
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_put_string:
- * @stream: a #GDataOutputStream.
- * @str: a string.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dbus_connection_get_unique_name:
+ * @connection: a #GDBusConnection
  *
- * Puts a string into the output stream.
+ * Gets the unique name of @connection as assigned by the message
+ * bus. This can also be used to figure out if @connection is a
+ * message bus connection.
  *
- * Returns: %TRUE if @string was successfully added to the @stream.
+ * Returns: the unique name or %NULL if @connection is not a message
+ *     bus connection. Do not free this string, it is owned by
+ *     @connection.
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_put_uint16:
- * @stream: a #GDataOutputStream.
- * @data: a #guint16.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dbus_connection_is_closed:
+ * @connection: a #GDBusConnection
  *
- * Puts an unsigned 16-bit integer into the output stream.
+ * Gets whether @connection is closed.
  *
- * Returns: %TRUE if @data was successfully added to the @stream.
+ * Returns: %TRUE if the connection is closed, %FALSE otherwise
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_put_uint32:
- * @stream: a #GDataOutputStream.
- * @data: a #guint32.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dbus_connection_new:
+ * @stream: a #GIOStream
+ * @guid: (nullable): the GUID to use if a authenticating as a server or %NULL
+ * @flags: flags describing how to make the connection
+ * @observer: (nullable): a #GDBusAuthObserver or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to @callback
  *
- * Puts an unsigned 32-bit integer into the stream.
+ * Asynchronously sets up a D-Bus connection for exchanging D-Bus messages
+ * with the end represented by @stream.
  *
- * Returns: %TRUE if @data was successfully added to the @stream.
- */
-
-
-/**
- * g_data_output_stream_put_uint64:
- * @stream: a #GDataOutputStream.
- * @data: a #guint64.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * If @stream is a #GSocketConnection, then the corresponding #GSocket
+ * will be put into non-blocking mode.
  *
- * Puts an unsigned 64-bit integer into the stream.
+ * The D-Bus connection will interact with @stream from a worker thread.
+ * As a result, the caller should not interact with @stream after this
+ * method has been called, except by calling g_object_unref() on it.
  *
- * Returns: %TRUE if @data was successfully added to the @stream.
+ * If @observer is not %NULL it may be used to control the
+ * authentication process.
+ *
+ * When the operation is finished, @callback will be invoked. You can
+ * then call g_dbus_connection_new_finish() to get the result of the
+ * operation.
+ *
+ * This is a asynchronous failable constructor. See
+ * g_dbus_connection_new_sync() for the synchronous
+ * version.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_data_output_stream_set_byte_order:
- * @stream: a #GDataOutputStream.
- * @order: a %GDataStreamByteOrder.
+ * g_dbus_connection_new_finish:
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback
+ *     passed to g_dbus_connection_new().
+ * @error: return location for error or %NULL
  *
- * Sets the byte order of the data output stream to @order.
+ * Finishes an operation started with g_dbus_connection_new().
+ *
+ * Returns: a #GDBusConnection or %NULL if @error is set. Free
+ *     with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_datagram_based_condition_check:
- * @datagram_based: a #GDatagramBased
- * @condition: a #GIOCondition mask to check
- *
- * Checks on the readiness of @datagram_based to perform operations. The
- * operations specified in @condition are checked for and masked against the
- * currently-satisfied conditions on @datagram_based. The result is returned.
- *
- * %G_IO_IN will be set in the return value if data is available to read with
- * g_datagram_based_receive_messages(), or if the connection is closed remotely
- * (EOS); and if the datagram_based has not been closed locally using some
- * implementation-specific method (such as g_socket_close() or
- * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket).
- *
- * If the connection is shut down or closed (by calling g_socket_close() or
- * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket, for
- * example), all calls to this function will return %G_IO_ERROR_CLOSED.
- *
- * %G_IO_OUT will be set if it is expected that at least one byte can be sent
- * using g_datagram_based_send_messages() without blocking. It will not be set
- * if the datagram_based has been closed locally.
+ * g_dbus_connection_new_for_address:
+ * @address: a D-Bus address
+ * @flags: flags describing how to make the connection
+ * @observer: (nullable): a #GDBusAuthObserver or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to @callback
  *
- * %G_IO_HUP will be set if the connection has been closed locally.
+ * Asynchronously connects and sets up a D-Bus client connection for
+ * exchanging D-Bus messages with an endpoint specified by @address
+ * which must be in the
+ * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
  *
- * %G_IO_ERR will be set if there was an asynchronous error in transmitting data
- * previously enqueued using g_datagram_based_send_messages().
+ * This constructor can only be used to initiate client-side
+ * connections - use g_dbus_connection_new() if you need to act as the
+ * server. In particular, @flags cannot contain the
+ * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or
+ * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.
  *
- * Note that on Windows, it is possible for an operation to return
- * %G_IO_ERROR_WOULD_BLOCK even immediately after
- * g_datagram_based_condition_check() has claimed that the #GDatagramBased is
- * ready for writing. Rather than calling g_datagram_based_condition_check() and
- * then writing to the #GDatagramBased if it succeeds, it is generally better to
- * simply try writing right away, and try again later if the initial attempt
- * returns %G_IO_ERROR_WOULD_BLOCK.
+ * When the operation is finished, @callback will be invoked. You can
+ * then call g_dbus_connection_new_finish() to get the result of the
+ * operation.
  *
- * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition; these
- * conditions will always be set in the output if they are true. Apart from
- * these flags, the output is guaranteed to be masked by @condition.
+ * If @observer is not %NULL it may be used to control the
+ * authentication process.
  *
- * This call never blocks.
+ * This is a asynchronous failable constructor. See
+ * g_dbus_connection_new_for_address_sync() for the synchronous
+ * version.
  *
- * Returns: the #GIOCondition mask of the current state
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_datagram_based_condition_wait:
- * @datagram_based: a #GDatagramBased
- * @condition: a #GIOCondition mask to wait for
- * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1
- *   to block indefinitely
- * @cancellable: (nullable): a #GCancellable
- * @error: return location for a #GError
- *
- * Waits for up to @timeout microseconds for condition to become true on
- * @datagram_based. If the condition is met, %TRUE is returned.
+ * g_dbus_connection_new_for_address_finish:
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
+ *     to g_dbus_connection_new()
+ * @error: return location for error or %NULL
  *
- * If @cancellable is cancelled before the condition is met, or if @timeout is
- * reached before the condition is met, then %FALSE is returned and @error is
- * set appropriately (%G_IO_ERROR_CANCELLED or %G_IO_ERROR_TIMED_OUT).
+ * Finishes an operation started with g_dbus_connection_new_for_address().
  *
- * Returns: %TRUE if the condition was met, %FALSE otherwise
- * Since: 2.48
+ * Returns: a #GDBusConnection or %NULL if @error is set. Free with
+ *     g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_datagram_based_create_source:
- * @datagram_based: a #GDatagramBased
- * @condition: a #GIOCondition mask to monitor
- * @cancellable: (nullable): a #GCancellable
+ * g_dbus_connection_new_for_address_sync:
+ * @address: a D-Bus address
+ * @flags: flags describing how to make the connection
+ * @observer: (nullable): a #GDBusAuthObserver or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * Creates a #GSource that can be attached to a #GMainContext to monitor for
- * the availability of the specified @condition on the #GDatagramBased. The
- * #GSource keeps a reference to the @datagram_based.
+ * Synchronously connects and sets up a D-Bus client connection for
+ * exchanging D-Bus messages with an endpoint specified by @address
+ * which must be in the
+ * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
  *
- * The callback on the source is of the #GDatagramBasedSourceFunc type.
+ * This constructor can only be used to initiate client-side
+ * connections - use g_dbus_connection_new_sync() if you need to act
+ * as the server. In particular, @flags cannot contain the
+ * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or
+ * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.
  *
- * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition; these
- * conditions will always be reported in the callback if they are true.
+ * This is a synchronous failable constructor. See
+ * g_dbus_connection_new_for_address() for the asynchronous version.
  *
- * If non-%NULL, @cancellable can be used to cancel the source, which will
- * cause the source to trigger, reporting the current condition (which is
- * likely 0 unless cancellation happened at the same time as a condition
- * change). You can check for this in the callback using
- * g_cancellable_is_cancelled().
+ * If @observer is not %NULL it may be used to control the
+ * authentication process.
  *
- * Returns: (transfer full): a newly allocated #GSource
- * Since: 2.48
+ * Returns: a #GDBusConnection or %NULL if @error is set. Free with
+ *     g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_datagram_based_receive_messages:
- * @datagram_based: a #GDatagramBased
- * @messages: (array length=num_messages): an array of #GInputMessage structs
- * @num_messages: the number of elements in @messages
- * @flags: an int containing #GSocketMsgFlags flags for the overall operation
- * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1
- *   to block indefinitely
- * @cancellable: (nullable): a %GCancellable
- * @error: return location for a #GError
- *
- * Receive one or more data messages from @datagram_based in one go.
- *
- * @messages must point to an array of #GInputMessage structs and
- * @num_messages must be the length of this array. Each #GInputMessage
- * contains a pointer to an array of #GInputVector structs describing the
- * buffers that the data received in each message will be written to.
- *
- * @flags modify how all messages are received. The commonly available
- * arguments for this are available in the #GSocketMsgFlags enum, but the
- * values there are the same as the system values, and the flags
- * are passed in as-is, so you can pass in system-specific flags too. These
- * flags affect the overall receive operation. Flags affecting individual
- * messages are returned in #GInputMessage.flags.
- *
- * The other members of #GInputMessage are treated as described in its
- * documentation.
- *
- * If @timeout is negative the call will block until @num_messages have been
- * received, the connection is closed remotely (EOS), @cancellable is cancelled,
- * or an error occurs.
- *
- * If @timeout is 0 the call will return up to @num_messages without blocking,
- * or %G_IO_ERROR_WOULD_BLOCK if no messages are queued in the operating system
- * to be received.
+ * g_dbus_connection_new_sync:
+ * @stream: a #GIOStream
+ * @guid: (nullable): the GUID to use if a authenticating as a server or %NULL
+ * @flags: flags describing how to make the connection
+ * @observer: (nullable): a #GDBusAuthObserver or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * If @timeout is positive the call will block on the same conditions as if
- * @timeout were negative. If the timeout is reached
- * before any messages are received, %G_IO_ERROR_TIMED_OUT is returned,
- * otherwise it will return the number of messages received before timing out.
- * (Note: This is effectively the behaviour of `MSG_WAITFORONE` with
- * recvmmsg().)
+ * Synchronously sets up a D-Bus connection for exchanging D-Bus messages
+ * with the end represented by @stream.
  *
- * To be notified when messages are available, wait for the %G_IO_IN condition.
- * Note though that you may still receive %G_IO_ERROR_WOULD_BLOCK from
- * g_datagram_based_receive_messages() even if you were previously notified of a
- * %G_IO_IN condition.
+ * If @stream is a #GSocketConnection, then the corresponding #GSocket
+ * will be put into non-blocking mode.
  *
- * If the remote peer closes the connection, any messages queued in the
- * underlying receive buffer will be returned, and subsequent calls to
- * g_datagram_based_receive_messages() will return 0 (with no error set).
+ * The D-Bus connection will interact with @stream from a worker thread.
+ * As a result, the caller should not interact with @stream after this
+ * method has been called, except by calling g_object_unref() on it.
  *
- * If the connection is shut down or closed (by calling g_socket_close() or
- * g_socket_shutdown() with @shutdown_read set, if it’s a #GSocket, for
- * example), all calls to this function will return %G_IO_ERROR_CLOSED.
+ * If @observer is not %NULL it may be used to control the
+ * authentication process.
  *
- * On error -1 is returned and @error is set accordingly. An error will only
- * be returned if zero messages could be received; otherwise the number of
- * messages successfully received before the error will be returned. If
- * @cancellable is cancelled, %G_IO_ERROR_CANCELLED is returned as with any
- * other error.
+ * This is a synchronous failable constructor. See
+ * g_dbus_connection_new() for the asynchronous version.
  *
- * Returns: number of messages received, or -1 on error. Note that the number
- *     of messages received may be smaller than @num_messages if @timeout is
- *     zero or positive, if the peer closed the connection, or if @num_messages
- *     was larger than `UIO_MAXIOV` (1024), in which case the caller may re-try
- *     to receive the remaining messages.
- * Since: 2.48
+ * Returns: a #GDBusConnection or %NULL if @error is set. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_datagram_based_send_messages:
- * @datagram_based: a #GDatagramBased
- * @messages: (array length=num_messages): an array of #GOutputMessage structs
- * @num_messages: the number of elements in @messages
- * @flags: an int containing #GSocketMsgFlags flags
- * @timeout: the maximum time (in microseconds) to wait, 0 to not block, or -1
- *   to block indefinitely
- * @cancellable: (nullable): a %GCancellable
- * @error: return location for a #GError
- *
- * Send one or more data messages from @datagram_based in one go.
+ * g_dbus_connection_register_object:
+ * @connection: a #GDBusConnection
+ * @object_path: the object path to register at
+ * @interface_info: introspection data for the interface
+ * @vtable: (nullable): a #GDBusInterfaceVTable to call into or %NULL
+ * @user_data: (nullable): data to pass to functions in @vtable
+ * @user_data_free_func: function to call when the object path is unregistered
+ * @error: return location for error or %NULL
  *
- * @messages must point to an array of #GOutputMessage structs and
- * @num_messages must be the length of this array. Each #GOutputMessage
- * contains an address to send the data to, and a pointer to an array of
- * #GOutputVector structs to describe the buffers that the data to be sent
- * for each message will be gathered from.
+ * Registers callbacks for exported objects at @object_path with the
+ * D-Bus interface that is described in @interface_info.
  *
- * @flags modify how the message is sent. The commonly available arguments
- * for this are available in the #GSocketMsgFlags enum, but the
- * values there are the same as the system values, and the flags
- * are passed in as-is, so you can pass in system-specific flags too.
+ * Calls to functions in @vtable (and @user_data_free_func) will happen
+ * in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from.
  *
- * The other members of #GOutputMessage are treated as described in its
- * documentation.
+ * Note that all #GVariant values passed to functions in @vtable will match
+ * the signature given in @interface_info - if a remote caller passes
+ * incorrect values, the `org.freedesktop.DBus.Error.InvalidArgs`
+ * is returned to the remote caller.
  *
- * If @timeout is negative the call will block until @num_messages have been
- * sent, @cancellable is cancelled, or an error occurs.
+ * Additionally, if the remote caller attempts to invoke methods or
+ * access properties not mentioned in @interface_info the
+ * `org.freedesktop.DBus.Error.UnknownMethod` resp.
+ * `org.freedesktop.DBus.Error.InvalidArgs` errors
+ * are returned to the caller.
  *
- * If @timeout is 0 the call will send up to @num_messages without blocking,
- * or will return %G_IO_ERROR_WOULD_BLOCK if there is no space to send messages.
+ * It is considered a programming error if the
+ * #GDBusInterfaceGetPropertyFunc function in @vtable returns a
+ * #GVariant of incorrect type.
  *
- * If @timeout is positive the call will block on the same conditions as if
- * @timeout were negative. If the timeout is reached before any messages are
- * sent, %G_IO_ERROR_TIMED_OUT is returned, otherwise it will return the number
- * of messages sent before timing out.
+ * If an existing callback is already registered at @object_path and
+ * @interface_name, then @error is set to #G_IO_ERROR_EXISTS.
  *
- * To be notified when messages can be sent, wait for the %G_IO_OUT condition.
- * Note though that you may still receive %G_IO_ERROR_WOULD_BLOCK from
- * g_datagram_based_send_messages() even if you were previously notified of a
- * %G_IO_OUT condition. (On Windows in particular, this is very common due to
- * the way the underlying APIs work.)
+ * GDBus automatically implements the standard D-Bus interfaces
+ * org.freedesktop.DBus.Properties, org.freedesktop.DBus.Introspectable
+ * and org.freedesktop.Peer, so you don't have to implement those for the
+ * objects you export. You can implement org.freedesktop.DBus.Properties
+ * yourself, e.g. to handle getting and setting of properties asynchronously.
  *
- * If the connection is shut down or closed (by calling g_socket_close() or
- * g_socket_shutdown() with @shutdown_write set, if it’s a #GSocket, for
- * example), all calls to this function will return %G_IO_ERROR_CLOSED.
+ * Note that the reference count on @interface_info will be
+ * incremented by 1 (unless allocated statically, e.g. if the
+ * reference count is -1, see g_dbus_interface_info_ref()) for as long
+ * as the object is exported. Also note that @vtable will be copied.
  *
- * On error -1 is returned and @error is set accordingly. An error will only
- * be returned if zero messages could be sent; otherwise the number of messages
- * successfully sent before the error will be returned. If @cancellable is
- * cancelled, %G_IO_ERROR_CANCELLED is returned as with any other error.
+ * See this [server][gdbus-server] for an example of how to use this method.
  *
- * Returns: number of messages sent, or -1 on error. Note that the number of
- *     messages sent may be smaller than @num_messages if @timeout is zero
- *     or positive, or if @num_messages was larger than `UIO_MAXIOV` (1024), in
- *     which case the caller may re-try to send the remaining messages.
- * Since: 2.48
+ * Returns: 0 if @error is set, otherwise a registration id (never 0)
+ *     that can be used with g_dbus_connection_unregister_object()
+ * Since: 2.26
  */
 
 
 /**
- * g_dbus_action_group_get:
- * @connection: A #GDBusConnection
- * @bus_name: (nullable): the bus name which exports the action
- *     group or %NULL if @connection is not a message bus connection
- * @object_path: the object path at which the action group is exported
- *
- * Obtains a #GDBusActionGroup for the action group which is exported at
- * the given @bus_name and @object_path.
- *
- * The thread default main context is taken at the time of this call.
- * All signals on the menu model (and any linked models) are reported
- * with respect to this context.  All calls on the returned menu model
- * (and linked models) must also originate from this same context, with
- * the thread default main context unchanged.
+ * g_dbus_connection_register_object_with_closures: (rename-to g_dbus_connection_register_object)
+ * @connection: A #GDBusConnection.
+ * @object_path: The object path to register at.
+ * @interface_info: Introspection data for the interface.
+ * @method_call_closure: (nullable): #GClosure for handling incoming method calls.
+ * @get_property_closure: (nullable): #GClosure for getting a property.
+ * @set_property_closure: (nullable): #GClosure for setting a property.
+ * @error: Return location for error or %NULL.
  *
- * This call is non-blocking.  The returned action group may or may not
- * already be filled in.  The correct thing to do is connect the signals
- * for the action group to monitor for changes and then to call
- * g_action_group_list_actions() to get the initial list.
+ * Version of g_dbus_connection_register_object() using closures instead of a
+ * #GDBusInterfaceVTable for easier binding in other languages.
  *
- * Returns: (transfer full): a #GDBusActionGroup
- * Since: 2.32
+ * Returns: 0 if @error is set, otherwise a registration id (never 0)
+ * that can be used with g_dbus_connection_unregister_object() .
+ * Since: 2.46
  */
 
 
 /**
- * g_dbus_address_escape_value:
- * @string: an unescaped string to be included in a D-Bus address
- *     as the value in a key-value pair
- *
- * Escape @string so it can appear in a D-Bus address as the value
- * part of a key-value pair.
+ * g_dbus_connection_register_subtree:
+ * @connection: a #GDBusConnection
+ * @object_path: the object path to register the subtree at
+ * @vtable: a #GDBusSubtreeVTable to enumerate, introspect and
+ *     dispatch nodes in the subtree
+ * @flags: flags used to fine tune the behavior of the subtree
+ * @user_data: data to pass to functions in @vtable
+ * @user_data_free_func: function to call when the subtree is unregistered
+ * @error: return location for error or %NULL
  *
- * For instance, if @string is `/run/bus-for-:0`,
- * this function would return `/run/bus-for-%3A0`,
- * which could be used in a D-Bus address like
- * `unix:nonce-tcp:host=127.0.0.1,port=42,noncefile=/run/bus-for-%3A0`.
+ * Registers a whole subtree of dynamic objects.
  *
- * Returns: (transfer full): a copy of @string with all
- *     non-optionally-escaped bytes escaped
- * Since: 2.36
- */
-
-
-/**
- * g_dbus_address_get_for_bus_sync:
- * @bus_type: a #GBusType
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
+ * The @enumerate and @introspection functions in @vtable are used to
+ * convey, to remote callers, what nodes exist in the subtree rooted
+ * by @object_path.
  *
- * Synchronously looks up the D-Bus address for the well-known message
- * bus instance specified by @bus_type. This may involve using various
- * platform specific mechanisms.
+ * When handling remote calls into any node in the subtree, first the
+ * @enumerate function is used to check if the node exists. If the node exists
+ * or the #G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is set
+ * the @introspection function is used to check if the node supports the
+ * requested method. If so, the @dispatch function is used to determine
+ * where to dispatch the call. The collected #GDBusInterfaceVTable and
+ * #gpointer will be used to call into the interface vtable for processing
+ * the request.
  *
- * The returned address will be in the
- * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
+ * All calls into user-provided code will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from.
  *
- * Returns: a valid D-Bus address string for @bus_type or %NULL if
- *     @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_address_get_stream:
- * @address: A valid D-Bus address.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: Data to pass to @callback.
+ * If an existing subtree is already registered at @object_path or
+ * then @error is set to #G_IO_ERROR_EXISTS.
  *
- * Asynchronously connects to an endpoint specified by @address and
- * sets up the connection so it is in a state to run the client-side
- * of the D-Bus authentication conversation. @address must be in the
- * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
+ * Note that it is valid to register regular objects (using
+ * g_dbus_connection_register_object()) in a subtree registered with
+ * g_dbus_connection_register_subtree() - if so, the subtree handler
+ * is tried as the last resort. One way to think about a subtree
+ * handler is to consider it a fallback handler for object paths not
+ * registered via g_dbus_connection_register_object() or other bindings.
  *
- * When the operation is finished, @callback will be invoked. You can
- * then call g_dbus_address_get_stream_finish() to get the result of
- * the operation.
+ * Note that @vtable will be copied so you cannot change it after
+ * registration.
  *
- * This is an asynchronous failable function. See
- * g_dbus_address_get_stream_sync() for the synchronous version.
+ * See this [server][gdbus-subtree-server] for an example of how to use
+ * this method.
  *
+ * Returns: 0 if @error is set, otherwise a subtree registration id (never 0)
+ * that can be used with g_dbus_connection_unregister_subtree() .
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_address_get_stream_finish:
- * @res: A #GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_address_get_stream().
- * @out_guid: (optional) (out): %NULL or return location to store the GUID extracted from @address, if any.
- * @error: Return location for error or %NULL.
+ * g_dbus_connection_remove_filter:
+ * @connection: a #GDBusConnection
+ * @filter_id: an identifier obtained from g_dbus_connection_add_filter()
  *
- * Finishes an operation started with g_dbus_address_get_stream().
+ * Removes a filter.
+ *
+ * Note that since filters run in a different thread, there is a race
+ * condition where it is possible that the filter will be running even
+ * after calling g_dbus_connection_remove_filter(), so you cannot just
+ * free data that the filter might be using. Instead, you should pass
+ * a #GDestroyNotify to g_dbus_connection_add_filter(), which will be
+ * called when it is guaranteed that the data is no longer needed.
  *
- * Returns: (transfer full): A #GIOStream or %NULL if @error is set.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_address_get_stream_sync:
- * @address: A valid D-Bus address.
- * @out_guid: (optional) (out): %NULL or return location to store the GUID extracted from @address, if any.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_dbus_connection_send_message:
+ * @connection: a #GDBusConnection
+ * @message: a #GDBusMessage
+ * @flags: flags affecting how the message is sent
+ * @out_serial: (out) (optional): return location for serial number assigned
+ *     to @message when sending it or %NULL
+ * @error: Return location for error or %NULL
  *
- * Synchronously connects to an endpoint specified by @address and
- * sets up the connection so it is in a state to run the client-side
- * of the D-Bus authentication conversation. @address must be in the
- * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
+ * Asynchronously sends @message to the peer represented by @connection.
  *
- * This is a synchronous failable function. See
- * g_dbus_address_get_stream() for the asynchronous version.
+ * Unless @flags contain the
+ * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
+ * will be assigned by @connection and set on @message via
+ * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+ * serial number used will be written to this location prior to
+ * submitting the message to the underlying transport.
  *
- * Returns: (transfer full): A #GIOStream or %NULL if @error is set.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_annotation_info_lookup:
- * @annotations: (array zero-terminated=1) (nullable): A %NULL-terminated array of annotations or %NULL.
- * @name: The name of the annotation to look up.
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @message is not well-formed,
+ * the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
  *
- * Looks up the value of an annotation.
+ * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
+ * for an example of how to use this low-level API to send and receive
+ * UNIX file descriptors.
  *
- * The cost of this function is O(n) in number of annotations.
+ * Note that @message must be unlocked, unless @flags contain the
+ * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
  *
- * Returns: The value or %NULL if not found. Do not free, it is owned by @annotations.
+ * Returns: %TRUE if the message was well-formed and queued for
+ *     transmission, %FALSE if @error is set
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_annotation_info_ref:
- * @info: A #GDBusNodeInfo
+ * g_dbus_connection_send_message_with_reply:
+ * @connection: a #GDBusConnection
+ * @message: a #GDBusMessage
+ * @flags: flags affecting how the message is sent
+ * @timeout_msec: the timeout in milliseconds, -1 to use the default
+ *     timeout or %G_MAXINT for no timeout
+ * @out_serial: (out) (optional): return location for serial number assigned
+ *     to @message when sending it or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: (nullable): a #GAsyncReadyCallback to call when the request
+ *     is satisfied or %NULL if you don't care about the result
+ * @user_data: The data to pass to @callback
  *
- * If @info is statically allocated does nothing. Otherwise increases
- * the reference count.
+ * Asynchronously sends @message to the peer represented by @connection.
  *
- * Returns: The same @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_annotation_info_unref:
- * @info: A #GDBusAnnotationInfo.
+ * Unless @flags contain the
+ * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
+ * will be assigned by @connection and set on @message via
+ * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+ * serial number used will be written to this location prior to
+ * submitting the message to the underlying transport.
  *
- * If @info is statically allocated, does nothing. Otherwise decreases
- * the reference count of @info. When its reference count drops to 0,
- * the memory used is freed.
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+ * fail with %G_IO_ERROR_CANCELLED. If @message is not well-formed,
+ * the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
+ *
+ * This is an asynchronous method. When the operation is finished, @callback
+ * will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from. You can then call
+ * g_dbus_connection_send_message_with_reply_finish() to get the result of the operation.
+ * See g_dbus_connection_send_message_with_reply_sync() for the synchronous version.
+ *
+ * Note that @message must be unlocked, unless @flags contain the
+ * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
+ *
+ * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
+ * for an example of how to use this low-level API to send and receive
+ * UNIX file descriptors.
  *
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_arg_info_ref:
- * @info: A #GDBusArgInfo
+ * g_dbus_connection_send_message_with_reply_finish:
+ * @connection: a #GDBusConnection
+ * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed to
+ *     g_dbus_connection_send_message_with_reply()
+ * @error: teturn location for error or %NULL
  *
- * If @info is statically allocated does nothing. Otherwise increases
- * the reference count.
+ * Finishes an operation started with g_dbus_connection_send_message_with_reply().
  *
- * Returns: The same @info.
+ * Note that @error is only set if a local in-process error
+ * occurred. That is to say that the returned #GDBusMessage object may
+ * be of type %G_DBUS_MESSAGE_TYPE_ERROR. Use
+ * g_dbus_message_to_gerror() to transcode this to a #GError.
+ *
+ * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
+ * for an example of how to use this low-level API to send and receive
+ * UNIX file descriptors.
+ *
+ * Returns: (transfer full): a locked #GDBusMessage or %NULL if @error is set
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_arg_info_unref:
- * @info: A #GDBusArgInfo.
+ * g_dbus_connection_send_message_with_reply_sync:
+ * @connection: a #GDBusConnection
+ * @message: a #GDBusMessage
+ * @flags: flags affecting how the message is sent.
+ * @timeout_msec: the timeout in milliseconds, -1 to use the default
+ *     timeout or %G_MAXINT for no timeout
+ * @out_serial: (out) (optional): return location for serial number
+ *     assigned to @message when sending it or %NULL
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @error: return location for error or %NULL
  *
- * If @info is statically allocated, does nothing. Otherwise decreases
- * the reference count of @info. When its reference count drops to 0,
- * the memory used is freed.
+ * Synchronously sends @message to the peer represented by @connection
+ * and blocks the calling thread until a reply is received or the
+ * timeout is reached. See g_dbus_connection_send_message_with_reply()
+ * for the asynchronous version of this method.
+ *
+ * Unless @flags contain the
+ * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
+ * will be assigned by @connection and set on @message via
+ * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
+ * serial number used will be written to this location prior to
+ * submitting the message to the underlying transport.
+ *
+ * If @connection is closed then the operation will fail with
+ * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
+ * fail with %G_IO_ERROR_CANCELLED. If @message is not well-formed,
+ * the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
+ *
+ * Note that @error is only set if a local in-process error
+ * occurred. That is to say that the returned #GDBusMessage object may
+ * be of type %G_DBUS_MESSAGE_TYPE_ERROR. Use
+ * g_dbus_message_to_gerror() to transcode this to a #GError.
+ *
+ * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
+ * for an example of how to use this low-level API to send and receive
+ * UNIX file descriptors.
+ *
+ * Note that @message must be unlocked, unless @flags contain the
+ * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
  *
+ * Returns: (transfer full): a locked #GDBusMessage that is the reply
+ *     to @message or %NULL if @error is set
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_auth_observer_allow_mechanism:
- * @observer: A #GDBusAuthObserver.
- * @mechanism: The name of the mechanism, e.g. `DBUS_COOKIE_SHA1`.
+ * g_dbus_connection_set_exit_on_close:
+ * @connection: a #GDBusConnection
+ * @exit_on_close: whether the process should be terminated
+ *     when @connection is closed by the remote peer
  *
- * Emits the #GDBusAuthObserver::allow-mechanism signal on @observer.
+ * Sets whether the process should be terminated when @connection is
+ * closed by the remote peer. See #GDBusConnection:exit-on-close for
+ * more details.
  *
- * Returns: %TRUE if @mechanism can be used to authenticate the other peer, %FALSE if not.
- * Since: 2.34
+ * Note that this function should be used with care. Most modern UNIX
+ * desktops tie the notion of a user session the session bus, and expect
+ * all of a users applications to quit when their bus connection goes away.
+ * If you are setting @exit_on_close to %FALSE for the shared session
+ * bus connection, you should make sure that your application exits
+ * when the user session ends.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_dbus_auth_observer_authorize_authenticated_peer:
- * @observer: A #GDBusAuthObserver.
- * @stream: A #GIOStream for the #GDBusConnection.
- * @credentials: (nullable): Credentials received from the peer or %NULL.
- *
- * Emits the #GDBusAuthObserver::authorize-authenticated-peer signal on @observer.
- *
- * Returns: %TRUE if the peer is authorized, %FALSE if not.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_auth_observer_new:
- *
- * Creates a new #GDBusAuthObserver object.
- *
- * Returns: A #GDBusAuthObserver. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_add_filter:
- * @connection: a #GDBusConnection
- * @filter_function: a filter function
- * @user_data: user data to pass to @filter_function
- * @user_data_free_func: function to free @user_data with when filter
- *     is removed or %NULL
- *
- * Adds a message filter. Filters are handlers that are run on all
- * incoming and outgoing messages, prior to standard dispatch. Filters
- * are run in the order that they were added.  The same handler can be
- * added as a filter more than once, in which case it will be run more
- * than once.  Filters added during a filter callback won't be run on
- * the message being processed. Filter functions are allowed to modify
- * and even drop messages.
- *
- * Note that filters are run in a dedicated message handling thread so
- * they can't block and, generally, can't do anything but signal a
- * worker thread. Also note that filters are rarely needed - use API
- * such as g_dbus_connection_send_message_with_reply(),
- * g_dbus_connection_signal_subscribe() or g_dbus_connection_call() instead.
- *
- * If a filter consumes an incoming message the message is not
- * dispatched anywhere else - not even the standard dispatch machinery
- * (that API such as g_dbus_connection_signal_subscribe() and
- * g_dbus_connection_send_message_with_reply() relies on) will see the
- * message. Similary, if a filter consumes an outgoing message, the
- * message will not be sent to the other peer.
- *
- * If @user_data_free_func is non-%NULL, it will be called (in the
- * thread-default main context of the thread you are calling this
- * method from) at some point after @user_data is no longer
- * needed. (It is not guaranteed to be called synchronously when the
- * filter is removed, and may be called after @connection has been
- * destroyed.)
- *
- * Returns: a filter identifier that can be used with
- *     g_dbus_connection_remove_filter()
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_call:
- * @connection: a #GDBusConnection
- * @bus_name: (nullable): a unique or well-known bus name or %NULL if
- *     @connection is not a message bus connection
- * @object_path: path of remote object
- * @interface_name: D-Bus interface to invoke method on
- * @method_name: the name of the method to invoke
- * @parameters: (nullable): a #GVariant tuple with parameters for the method
- *     or %NULL if not passing parameters
- * @reply_type: (nullable): the expected type of the reply (which will be a
- *     tuple), or %NULL
- * @flags: flags from the #GDBusCallFlags enumeration
- * @timeout_msec: the timeout in milliseconds, -1 to use the default
- *     timeout or %G_MAXINT for no timeout
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: (nullable): a #GAsyncReadyCallback to call when the request
- *     is satisfied or %NULL if you don't care about the result of the
- *     method invocation
- * @user_data: the data to pass to @callback
- *
- * Asynchronously invokes the @method_name method on the
- * @interface_name D-Bus interface on the remote object at
- * @object_path owned by @bus_name.
- *
- * If @connection is closed then the operation will fail with
- * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
- * fail with %G_IO_ERROR_CANCELLED. If @parameters contains a value
- * not compatible with the D-Bus protocol, the operation fails with
- * %G_IO_ERROR_INVALID_ARGUMENT.
- *
- * If @reply_type is non-%NULL then the reply will be checked for having this type and an
- * error will be raised if it does not match.  Said another way, if you give a @reply_type
- * then any non-%NULL return value will be of this type. Unless it’s
- * %G_VARIANT_TYPE_UNIT, the @reply_type will be a tuple containing one or more
- * values.
- *
- * If the @parameters #GVariant is floating, it is consumed. This allows
- * convenient 'inline' use of g_variant_new(), e.g.:
- * |[<!-- language="C" -->
- *  g_dbus_connection_call (connection,
- *                          "org.freedesktop.StringThings",
- *                          "/org/freedesktop/StringThings",
- *                          "org.freedesktop.StringThings",
- *                          "TwoStrings",
- *                          g_variant_new ("(ss)",
- *                                         "Thing One",
- *                                         "Thing Two"),
- *                          NULL,
- *                          G_DBUS_CALL_FLAGS_NONE,
- *                          -1,
- *                          NULL,
- *                          (GAsyncReadyCallback) two_strings_done,
- *                          NULL);
- * ]|
- *
- * This is an asynchronous method. When the operation is finished,
- * @callback will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from. You can then call
- * g_dbus_connection_call_finish() to get the result of the operation.
- * See g_dbus_connection_call_sync() for the synchronous version of this
- * function.
- *
- * If @callback is %NULL then the D-Bus method call message will be sent with
- * the %G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED flag set.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_call_finish:
- * @connection: a #GDBusConnection
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_connection_call()
- * @error: return location for error or %NULL
- *
- * Finishes an operation started with g_dbus_connection_call().
- *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- *     return values. Free with g_variant_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_call_sync:
- * @connection: a #GDBusConnection
- * @bus_name: (nullable): a unique or well-known bus name or %NULL if
- *     @connection is not a message bus connection
- * @object_path: path of remote object
- * @interface_name: D-Bus interface to invoke method on
- * @method_name: the name of the method to invoke
- * @parameters: (nullable): a #GVariant tuple with parameters for the method
- *     or %NULL if not passing parameters
- * @reply_type: (nullable): the expected type of the reply, or %NULL
- * @flags: flags from the #GDBusCallFlags enumeration
- * @timeout_msec: the timeout in milliseconds, -1 to use the default
- *     timeout or %G_MAXINT for no timeout
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Synchronously invokes the @method_name method on the
- * @interface_name D-Bus interface on the remote object at
- * @object_path owned by @bus_name.
- *
- * If @connection is closed then the operation will fail with
- * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the
- * operation will fail with %G_IO_ERROR_CANCELLED. If @parameters
- * contains a value not compatible with the D-Bus protocol, the operation
- * fails with %G_IO_ERROR_INVALID_ARGUMENT.
- *
- * If @reply_type is non-%NULL then the reply will be checked for having
- * this type and an error will be raised if it does not match.  Said
- * another way, if you give a @reply_type then any non-%NULL return
- * value will be of this type.
- *
- * If the @parameters #GVariant is floating, it is consumed.
- * This allows convenient 'inline' use of g_variant_new(), e.g.:
- * |[<!-- language="C" -->
- *  g_dbus_connection_call_sync (connection,
- *                               "org.freedesktop.StringThings",
- *                               "/org/freedesktop/StringThings",
- *                               "org.freedesktop.StringThings",
- *                               "TwoStrings",
- *                               g_variant_new ("(ss)",
- *                                              "Thing One",
- *                                              "Thing Two"),
- *                               NULL,
- *                               G_DBUS_CALL_FLAGS_NONE,
- *                               -1,
- *                               NULL,
- *                               &error);
- * ]|
- *
- * The calling thread is blocked until a reply is received. See
- * g_dbus_connection_call() for the asynchronous version of
- * this method.
- *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- *     return values. Free with g_variant_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_call_with_unix_fd_list:
- * @connection: a #GDBusConnection
- * @bus_name: (nullable): a unique or well-known bus name or %NULL if
- *     @connection is not a message bus connection
- * @object_path: path of remote object
- * @interface_name: D-Bus interface to invoke method on
- * @method_name: the name of the method to invoke
- * @parameters: (nullable): a #GVariant tuple with parameters for the method
- *     or %NULL if not passing parameters
- * @reply_type: (nullable): the expected type of the reply, or %NULL
- * @flags: flags from the #GDBusCallFlags enumeration
- * @timeout_msec: the timeout in milliseconds, -1 to use the default
- *     timeout or %G_MAXINT for no timeout
- * @fd_list: (nullable): a #GUnixFDList or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: (nullable): a #GAsyncReadyCallback to call when the request is
- *     satisfied or %NULL if you don't * care about the result of the
- *     method invocation
- * @user_data: The data to pass to @callback.
- *
- * Like g_dbus_connection_call() but also takes a #GUnixFDList object.
- *
- * This method is only available on UNIX.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_connection_call_with_unix_fd_list_finish:
- * @connection: a #GDBusConnection
- * @out_fd_list: (out) (optional): return location for a #GUnixFDList or %NULL
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed to
- *     g_dbus_connection_call_with_unix_fd_list()
- * @error: return location for error or %NULL
- *
- * Finishes an operation started with g_dbus_connection_call_with_unix_fd_list().
- *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- *     return values. Free with g_variant_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_connection_call_with_unix_fd_list_sync:
- * @connection: a #GDBusConnection
- * @bus_name: (nullable): a unique or well-known bus name or %NULL
- *     if @connection is not a message bus connection
- * @object_path: path of remote object
- * @interface_name: D-Bus interface to invoke method on
- * @method_name: the name of the method to invoke
- * @parameters: (nullable): a #GVariant tuple with parameters for
- *     the method or %NULL if not passing parameters
- * @reply_type: (nullable): the expected type of the reply, or %NULL
- * @flags: flags from the #GDBusCallFlags enumeration
- * @timeout_msec: the timeout in milliseconds, -1 to use the default
- *     timeout or %G_MAXINT for no timeout
- * @fd_list: (nullable): a #GUnixFDList or %NULL
- * @out_fd_list: (out) (optional): return location for a #GUnixFDList or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Like g_dbus_connection_call_sync() but also takes and returns #GUnixFDList objects.
- *
- * This method is only available on UNIX.
- *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- *     return values. Free with g_variant_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_connection_close:
- * @connection: a #GDBusConnection
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: (nullable): a #GAsyncReadyCallback to call when the request is
- *     satisfied or %NULL if you don't care about the result
- * @user_data: The data to pass to @callback
- *
- * Closes @connection. Note that this never causes the process to
- * exit (this might only happen if the other end of a shared message
- * bus connection disconnects, see #GDBusConnection:exit-on-close).
- *
- * Once the connection is closed, operations such as sending a message
- * will return with the error %G_IO_ERROR_CLOSED. Closing a connection
- * will not automatically flush the connection so queued messages may
- * be lost. Use g_dbus_connection_flush() if you need such guarantees.
- *
- * If @connection is already closed, this method fails with
- * %G_IO_ERROR_CLOSED.
- *
- * When @connection has been closed, the #GDBusConnection::closed
- * signal is emitted in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread that @connection was constructed in.
- *
- * This is an asynchronous method. When the operation is finished,
- * @callback will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from. You can
- * then call g_dbus_connection_close_finish() to get the result of the
- * operation. See g_dbus_connection_close_sync() for the synchronous
- * version.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_close_finish:
- * @connection: a #GDBusConnection
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
- *     to g_dbus_connection_close()
- * @error: return location for error or %NULL
- *
- * Finishes an operation started with g_dbus_connection_close().
- *
- * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_close_sync:
- * @connection: a #GDBusConnection
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Synchronously closes @connection. The calling thread is blocked
- * until this is done. See g_dbus_connection_close() for the
- * asynchronous version of this method and more details about what it
- * does.
- *
- * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_emit_signal:
- * @connection: a #GDBusConnection
- * @destination_bus_name: (nullable): the unique bus name for the destination
- *     for the signal or %NULL to emit to all listeners
- * @object_path: path of remote object
- * @interface_name: D-Bus interface to emit a signal on
- * @signal_name: the name of the signal to emit
- * @parameters: (nullable): a #GVariant tuple with parameters for the signal
- *              or %NULL if not passing parameters
- * @error: Return location for error or %NULL
- *
- * Emits a signal.
- *
- * If the parameters GVariant is floating, it is consumed.
- *
- * This can only fail if @parameters is not compatible with the D-Bus protocol
- * (%G_IO_ERROR_INVALID_ARGUMENT), or if @connection has been closed
- * (%G_IO_ERROR_CLOSED).
- *
- * Returns: %TRUE unless @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_export_action_group:
- * @connection: a #GDBusConnection
- * @object_path: a D-Bus object path
- * @action_group: a #GActionGroup
- * @error: a pointer to a %NULL #GError, or %NULL
- *
- * Exports @action_group on @connection at @object_path.
- *
- * The implemented D-Bus API should be considered private.  It is
- * subject to change in the future.
- *
- * A given object path can only have one action group exported on it.
- * If this constraint is violated, the export will fail and 0 will be
- * returned (with @error set accordingly).
- *
- * You can unexport the action group using
- * g_dbus_connection_unexport_action_group() with the return value of
- * this function.
- *
- * The thread default main context is taken at the time of this call.
- * All incoming action activations and state change requests are
- * reported from this context.  Any changes on the action group that
- * cause it to emit signals must also come from this same context.
- * Since incoming action activations and state change requests are
- * rather likely to cause changes on the action group, this effectively
- * limits a given action group to being exported from only one main
- * context.
- *
- * Returns: the ID of the export (never zero), or 0 in case of failure
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_connection_export_menu_model:
- * @connection: a #GDBusConnection
- * @object_path: a D-Bus object path
- * @menu: a #GMenuModel
- * @error: return location for an error, or %NULL
- *
- * Exports @menu on @connection at @object_path.
- *
- * The implemented D-Bus API should be considered private.
- * It is subject to change in the future.
- *
- * An object path can only have one menu model exported on it. If this
- * constraint is violated, the export will fail and 0 will be
- * returned (with @error set accordingly).
- *
- * You can unexport the menu model using
- * g_dbus_connection_unexport_menu_model() with the return value of
- * this function.
- *
- * Returns: the ID of the export (never zero), or 0 in case of failure
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_connection_flush:
- * @connection: a #GDBusConnection
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: (nullable): a #GAsyncReadyCallback to call when the
- *     request is satisfied or %NULL if you don't care about the result
- * @user_data: The data to pass to @callback
- *
- * Asynchronously flushes @connection, that is, writes all queued
- * outgoing message to the transport and then flushes the transport
- * (using g_output_stream_flush_async()). This is useful in programs
- * that wants to emit a D-Bus signal and then exit immediately. Without
- * flushing the connection, there is no guaranteed that the message has
- * been sent to the networking buffers in the OS kernel.
- *
- * This is an asynchronous method. When the operation is finished,
- * @callback will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from. You can
- * then call g_dbus_connection_flush_finish() to get the result of the
- * operation. See g_dbus_connection_flush_sync() for the synchronous
- * version.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_flush_finish:
- * @connection: a #GDBusConnection
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
- *     to g_dbus_connection_flush()
- * @error: return location for error or %NULL
- *
- * Finishes an operation started with g_dbus_connection_flush().
- *
- * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_flush_sync:
- * @connection: a #GDBusConnection
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Synchronously flushes @connection. The calling thread is blocked
- * until this is done. See g_dbus_connection_flush() for the
- * asynchronous version of this method and more details about what it
- * does.
- *
- * Returns: %TRUE if the operation succeeded, %FALSE if @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_get_capabilities:
- * @connection: a #GDBusConnection
- *
- * Gets the capabilities negotiated with the remote peer
- *
- * Returns: zero or more flags from the #GDBusCapabilityFlags enumeration
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_get_exit_on_close:
- * @connection: a #GDBusConnection
- *
- * Gets whether the process is terminated when @connection is
- * closed by the remote peer. See
- * #GDBusConnection:exit-on-close for more details.
- *
- * Returns: whether the process is terminated when @connection is
- *     closed by the remote peer
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_get_guid:
- * @connection: a #GDBusConnection
- *
- * The GUID of the peer performing the role of server when
- * authenticating. See #GDBusConnection:guid for more details.
- *
- * Returns: The GUID. Do not free this string, it is owned by
- *     @connection.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_get_last_serial:
- * @connection: a #GDBusConnection
- *
- * Retrieves the last serial number assigned to a #GDBusMessage on
- * the current thread. This includes messages sent via both low-level
- * API such as g_dbus_connection_send_message() as well as
- * high-level API such as g_dbus_connection_emit_signal(),
- * g_dbus_connection_call() or g_dbus_proxy_call().
- *
- * Returns: the last used serial or zero when no message has been sent
- *     within the current thread
- * Since: 2.34
- */
-
-
-/**
- * g_dbus_connection_get_peer_credentials:
- * @connection: a #GDBusConnection
- *
- * Gets the credentials of the authenticated peer. This will always
- * return %NULL unless @connection acted as a server
- * (e.g. %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER was passed)
- * when set up and the client passed credentials as part of the
- * authentication process.
- *
- * In a message bus setup, the message bus is always the server and
- * each application is a client. So this method will always return
- * %NULL for message bus clients.
- *
- * Returns: (transfer none) (nullable): a #GCredentials or %NULL if not
- *     available. Do not free this object, it is owned by @connection.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_get_stream:
- * @connection: a #GDBusConnection
- *
- * Gets the underlying stream used for IO.
- *
- * While the #GDBusConnection is active, it will interact with this
- * stream from a worker thread, so it is not safe to interact with
- * the stream directly.
- *
- * Returns: (transfer none): the stream used for IO
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_get_unique_name:
- * @connection: a #GDBusConnection
- *
- * Gets the unique name of @connection as assigned by the message
- * bus. This can also be used to figure out if @connection is a
- * message bus connection.
- *
- * Returns: the unique name or %NULL if @connection is not a message
- *     bus connection. Do not free this string, it is owned by
- *     @connection.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_is_closed:
- * @connection: a #GDBusConnection
- *
- * Gets whether @connection is closed.
- *
- * Returns: %TRUE if the connection is closed, %FALSE otherwise
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_new:
- * @stream: a #GIOStream
- * @guid: (nullable): the GUID to use if a authenticating as a server or %NULL
- * @flags: flags describing how to make the connection
- * @observer: (nullable): a #GDBusAuthObserver or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to @callback
- *
- * Asynchronously sets up a D-Bus connection for exchanging D-Bus messages
- * with the end represented by @stream.
- *
- * If @stream is a #GSocketConnection, then the corresponding #GSocket
- * will be put into non-blocking mode.
- *
- * The D-Bus connection will interact with @stream from a worker thread.
- * As a result, the caller should not interact with @stream after this
- * method has been called, except by calling g_object_unref() on it.
- *
- * If @observer is not %NULL it may be used to control the
- * authentication process.
- *
- * When the operation is finished, @callback will be invoked. You can
- * then call g_dbus_connection_new_finish() to get the result of the
- * operation.
- *
- * This is a asynchronous failable constructor. See
- * g_dbus_connection_new_sync() for the synchronous
- * version.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_new_finish:
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback
- *     passed to g_dbus_connection_new().
- * @error: return location for error or %NULL
- *
- * Finishes an operation started with g_dbus_connection_new().
- *
- * Returns: a #GDBusConnection or %NULL if @error is set. Free
- *     with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_new_for_address:
- * @address: a D-Bus address
- * @flags: flags describing how to make the connection
- * @observer: (nullable): a #GDBusAuthObserver or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to @callback
- *
- * Asynchronously connects and sets up a D-Bus client connection for
- * exchanging D-Bus messages with an endpoint specified by @address
- * which must be in the
- * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
- *
- * This constructor can only be used to initiate client-side
- * connections - use g_dbus_connection_new() if you need to act as the
- * server. In particular, @flags cannot contain the
- * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or
- * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.
- *
- * When the operation is finished, @callback will be invoked. You can
- * then call g_dbus_connection_new_finish() to get the result of the
- * operation.
- *
- * If @observer is not %NULL it may be used to control the
- * authentication process.
- *
- * This is a asynchronous failable constructor. See
- * g_dbus_connection_new_for_address_sync() for the synchronous
- * version.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_new_for_address_finish:
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed
- *     to g_dbus_connection_new()
- * @error: return location for error or %NULL
- *
- * Finishes an operation started with g_dbus_connection_new_for_address().
- *
- * Returns: a #GDBusConnection or %NULL if @error is set. Free with
- *     g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_new_for_address_sync:
- * @address: a D-Bus address
- * @flags: flags describing how to make the connection
- * @observer: (nullable): a #GDBusAuthObserver or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Synchronously connects and sets up a D-Bus client connection for
- * exchanging D-Bus messages with an endpoint specified by @address
- * which must be in the
- * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
- *
- * This constructor can only be used to initiate client-side
- * connections - use g_dbus_connection_new_sync() if you need to act
- * as the server. In particular, @flags cannot contain the
- * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_SERVER or
- * %G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_ALLOW_ANONYMOUS flags.
- *
- * This is a synchronous failable constructor. See
- * g_dbus_connection_new_for_address() for the asynchronous version.
- *
- * If @observer is not %NULL it may be used to control the
- * authentication process.
- *
- * Returns: a #GDBusConnection or %NULL if @error is set. Free with
- *     g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_new_sync:
- * @stream: a #GIOStream
- * @guid: (nullable): the GUID to use if a authenticating as a server or %NULL
- * @flags: flags describing how to make the connection
- * @observer: (nullable): a #GDBusAuthObserver or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Synchronously sets up a D-Bus connection for exchanging D-Bus messages
- * with the end represented by @stream.
- *
- * If @stream is a #GSocketConnection, then the corresponding #GSocket
- * will be put into non-blocking mode.
- *
- * The D-Bus connection will interact with @stream from a worker thread.
- * As a result, the caller should not interact with @stream after this
- * method has been called, except by calling g_object_unref() on it.
- *
- * If @observer is not %NULL it may be used to control the
- * authentication process.
- *
- * This is a synchronous failable constructor. See
- * g_dbus_connection_new() for the asynchronous version.
- *
- * Returns: a #GDBusConnection or %NULL if @error is set. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_register_object:
- * @connection: a #GDBusConnection
- * @object_path: the object path to register at
- * @interface_info: introspection data for the interface
- * @vtable: (nullable): a #GDBusInterfaceVTable to call into or %NULL
- * @user_data: (nullable): data to pass to functions in @vtable
- * @user_data_free_func: function to call when the object path is unregistered
- * @error: return location for error or %NULL
- *
- * Registers callbacks for exported objects at @object_path with the
- * D-Bus interface that is described in @interface_info.
- *
- * Calls to functions in @vtable (and @user_data_free_func) will happen
- * in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from.
- *
- * Note that all #GVariant values passed to functions in @vtable will match
- * the signature given in @interface_info - if a remote caller passes
- * incorrect values, the `org.freedesktop.DBus.Error.InvalidArgs`
- * is returned to the remote caller.
- *
- * Additionally, if the remote caller attempts to invoke methods or
- * access properties not mentioned in @interface_info the
- * `org.freedesktop.DBus.Error.UnknownMethod` resp.
- * `org.freedesktop.DBus.Error.InvalidArgs` errors
- * are returned to the caller.
- *
- * It is considered a programming error if the
- * #GDBusInterfaceGetPropertyFunc function in @vtable returns a
- * #GVariant of incorrect type.
- *
- * If an existing callback is already registered at @object_path and
- * @interface_name, then @error is set to #G_IO_ERROR_EXISTS.
- *
- * GDBus automatically implements the standard D-Bus interfaces
- * org.freedesktop.DBus.Properties, org.freedesktop.DBus.Introspectable
- * and org.freedesktop.Peer, so you don't have to implement those for the
- * objects you export. You can implement org.freedesktop.DBus.Properties
- * yourself, e.g. to handle getting and setting of properties asynchronously.
- *
- * Note that the reference count on @interface_info will be
- * incremented by 1 (unless allocated statically, e.g. if the
- * reference count is -1, see g_dbus_interface_info_ref()) for as long
- * as the object is exported. Also note that @vtable will be copied.
- *
- * See this [server][gdbus-server] for an example of how to use this method.
- *
- * Returns: 0 if @error is set, otherwise a registration id (never 0)
- *     that can be used with g_dbus_connection_unregister_object()
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_register_object_with_closures: (rename-to g_dbus_connection_register_object)
- * @connection: A #GDBusConnection.
- * @object_path: The object path to register at.
- * @interface_info: Introspection data for the interface.
- * @method_call_closure: (nullable): #GClosure for handling incoming method calls.
- * @get_property_closure: (nullable): #GClosure for getting a property.
- * @set_property_closure: (nullable): #GClosure for setting a property.
- * @error: Return location for error or %NULL.
- *
- * Version of g_dbus_connection_register_object() using closures instead of a
- * #GDBusInterfaceVTable for easier binding in other languages.
- *
- * Returns: 0 if @error is set, otherwise a registration id (never 0)
- * that can be used with g_dbus_connection_unregister_object() .
- * Since: 2.46
- */
-
-
-/**
- * g_dbus_connection_register_subtree:
- * @connection: a #GDBusConnection
- * @object_path: the object path to register the subtree at
- * @vtable: a #GDBusSubtreeVTable to enumerate, introspect and
- *     dispatch nodes in the subtree
- * @flags: flags used to fine tune the behavior of the subtree
- * @user_data: data to pass to functions in @vtable
- * @user_data_free_func: function to call when the subtree is unregistered
- * @error: return location for error or %NULL
- *
- * Registers a whole subtree of dynamic objects.
- *
- * The @enumerate and @introspection functions in @vtable are used to
- * convey, to remote callers, what nodes exist in the subtree rooted
- * by @object_path.
- *
- * When handling remote calls into any node in the subtree, first the
- * @enumerate function is used to check if the node exists. If the node exists
- * or the #G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is set
- * the @introspection function is used to check if the node supports the
- * requested method. If so, the @dispatch function is used to determine
- * where to dispatch the call. The collected #GDBusInterfaceVTable and
- * #gpointer will be used to call into the interface vtable for processing
- * the request.
- *
- * All calls into user-provided code will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from.
- *
- * If an existing subtree is already registered at @object_path or
- * then @error is set to #G_IO_ERROR_EXISTS.
- *
- * Note that it is valid to register regular objects (using
- * g_dbus_connection_register_object()) in a subtree registered with
- * g_dbus_connection_register_subtree() - if so, the subtree handler
- * is tried as the last resort. One way to think about a subtree
- * handler is to consider it a fallback handler for object paths not
- * registered via g_dbus_connection_register_object() or other bindings.
- *
- * Note that @vtable will be copied so you cannot change it after
- * registration.
- *
- * See this [server][gdbus-subtree-server] for an example of how to use
- * this method.
- *
- * Returns: 0 if @error is set, otherwise a subtree registration id (never 0)
- * that can be used with g_dbus_connection_unregister_subtree() .
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_remove_filter:
- * @connection: a #GDBusConnection
- * @filter_id: an identifier obtained from g_dbus_connection_add_filter()
- *
- * Removes a filter.
- *
- * Note that since filters run in a different thread, there is a race
- * condition where it is possible that the filter will be running even
- * after calling g_dbus_connection_remove_filter(), so you cannot just
- * free data that the filter might be using. Instead, you should pass
- * a #GDestroyNotify to g_dbus_connection_add_filter(), which will be
- * called when it is guaranteed that the data is no longer needed.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_send_message:
- * @connection: a #GDBusConnection
- * @message: a #GDBusMessage
- * @flags: flags affecting how the message is sent
- * @out_serial: (out) (optional): return location for serial number assigned
- *     to @message when sending it or %NULL
- * @error: Return location for error or %NULL
- *
- * Asynchronously sends @message to the peer represented by @connection.
- *
- * Unless @flags contain the
- * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
- * will be assigned by @connection and set on @message via
- * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
- * serial number used will be written to this location prior to
- * submitting the message to the underlying transport.
- *
- * If @connection is closed then the operation will fail with
- * %G_IO_ERROR_CLOSED. If @message is not well-formed,
- * the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
- *
- * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
- * for an example of how to use this low-level API to send and receive
- * UNIX file descriptors.
- *
- * Note that @message must be unlocked, unless @flags contain the
- * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
- *
- * Returns: %TRUE if the message was well-formed and queued for
- *     transmission, %FALSE if @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_send_message_with_reply:
- * @connection: a #GDBusConnection
- * @message: a #GDBusMessage
- * @flags: flags affecting how the message is sent
- * @timeout_msec: the timeout in milliseconds, -1 to use the default
- *     timeout or %G_MAXINT for no timeout
- * @out_serial: (out) (optional): return location for serial number assigned
- *     to @message when sending it or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: (nullable): a #GAsyncReadyCallback to call when the request
- *     is satisfied or %NULL if you don't care about the result
- * @user_data: The data to pass to @callback
- *
- * Asynchronously sends @message to the peer represented by @connection.
- *
- * Unless @flags contain the
- * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
- * will be assigned by @connection and set on @message via
- * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
- * serial number used will be written to this location prior to
- * submitting the message to the underlying transport.
- *
- * If @connection is closed then the operation will fail with
- * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
- * fail with %G_IO_ERROR_CANCELLED. If @message is not well-formed,
- * the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
- *
- * This is an asynchronous method. When the operation is finished, @callback
- * will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from. You can then call
- * g_dbus_connection_send_message_with_reply_finish() to get the result of the operation.
- * See g_dbus_connection_send_message_with_reply_sync() for the synchronous version.
- *
- * Note that @message must be unlocked, unless @flags contain the
- * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
- *
- * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
- * for an example of how to use this low-level API to send and receive
- * UNIX file descriptors.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_send_message_with_reply_finish:
- * @connection: a #GDBusConnection
- * @res: a #GAsyncResult obtained from the #GAsyncReadyCallback passed to
- *     g_dbus_connection_send_message_with_reply()
- * @error: teturn location for error or %NULL
- *
- * Finishes an operation started with g_dbus_connection_send_message_with_reply().
- *
- * Note that @error is only set if a local in-process error
- * occurred. That is to say that the returned #GDBusMessage object may
- * be of type %G_DBUS_MESSAGE_TYPE_ERROR. Use
- * g_dbus_message_to_gerror() to transcode this to a #GError.
- *
- * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
- * for an example of how to use this low-level API to send and receive
- * UNIX file descriptors.
- *
- * Returns: (transfer full): a locked #GDBusMessage or %NULL if @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_send_message_with_reply_sync:
- * @connection: a #GDBusConnection
- * @message: a #GDBusMessage
- * @flags: flags affecting how the message is sent.
- * @timeout_msec: the timeout in milliseconds, -1 to use the default
- *     timeout or %G_MAXINT for no timeout
- * @out_serial: (out) (optional): return location for serial number
- *     assigned to @message when sending it or %NULL
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @error: return location for error or %NULL
- *
- * Synchronously sends @message to the peer represented by @connection
- * and blocks the calling thread until a reply is received or the
- * timeout is reached. See g_dbus_connection_send_message_with_reply()
- * for the asynchronous version of this method.
- *
- * Unless @flags contain the
- * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag, the serial number
- * will be assigned by @connection and set on @message via
- * g_dbus_message_set_serial(). If @out_serial is not %NULL, then the
- * serial number used will be written to this location prior to
- * submitting the message to the underlying transport.
- *
- * If @connection is closed then the operation will fail with
- * %G_IO_ERROR_CLOSED. If @cancellable is canceled, the operation will
- * fail with %G_IO_ERROR_CANCELLED. If @message is not well-formed,
- * the operation fails with %G_IO_ERROR_INVALID_ARGUMENT.
- *
- * Note that @error is only set if a local in-process error
- * occurred. That is to say that the returned #GDBusMessage object may
- * be of type %G_DBUS_MESSAGE_TYPE_ERROR. Use
- * g_dbus_message_to_gerror() to transcode this to a #GError.
- *
- * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
- * for an example of how to use this low-level API to send and receive
- * UNIX file descriptors.
- *
- * Note that @message must be unlocked, unless @flags contain the
- * %G_DBUS_SEND_MESSAGE_FLAGS_PRESERVE_SERIAL flag.
- *
- * Returns: (transfer full): a locked #GDBusMessage that is the reply
- *     to @message or %NULL if @error is set
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_set_exit_on_close:
- * @connection: a #GDBusConnection
- * @exit_on_close: whether the process should be terminated
- *     when @connection is closed by the remote peer
- *
- * Sets whether the process should be terminated when @connection is
- * closed by the remote peer. See #GDBusConnection:exit-on-close for
- * more details.
- *
- * Note that this function should be used with care. Most modern UNIX
- * desktops tie the notion of a user session the session bus, and expect
- * all of a users applications to quit when their bus connection goes away.
- * If you are setting @exit_on_close to %FALSE for the shared session
- * bus connection, you should make sure that your application exits
- * when the user session ends.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_signal_subscribe:
- * @connection: a #GDBusConnection
- * @sender: (nullable): sender name to match on (unique or well-known name)
- *     or %NULL to listen from all senders
- * @interface_name: (nullable): D-Bus interface name to match on or %NULL to
- *     match on all interfaces
- * @member: (nullable): D-Bus signal name to match on or %NULL to match on
- *     all signals
- * @object_path: (nullable): object path to match on or %NULL to match on
- *     all object paths
- * @arg0: (nullable): contents of first string argument to match on or %NULL
- *     to match on all kinds of arguments
- * @flags: #GDBusSignalFlags describing how arg0 is used in subscribing to the
- *     signal
- * @callback: callback to invoke when there is a signal matching the requested data
- * @user_data: user data to pass to @callback
- * @user_data_free_func: (nullable): function to free @user_data with when
- *     subscription is removed or %NULL
- *
- * Subscribes to signals on @connection and invokes @callback with a whenever
- * the signal is received. Note that @callback will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from.
- *
- * If @connection is not a message bus connection, @sender must be
- * %NULL.
- *
- * If @sender is a well-known name note that @callback is invoked with
- * the unique name for the owner of @sender, not the well-known name
- * as one would expect. This is because the message bus rewrites the
- * name. As such, to avoid certain race conditions, users should be
- * tracking the name owner of the well-known name and use that when
- * processing the received signal.
- *
- * If one of %G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE or
- * %G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH are given, @arg0 is
- * interpreted as part of a namespace or path.  The first argument
- * of a signal is matched against that part as specified by D-Bus.
- *
- * If @user_data_free_func is non-%NULL, it will be called (in the
- * thread-default main context of the thread you are calling this
- * method from) at some point after @user_data is no longer
- * needed. (It is not guaranteed to be called synchronously when the
- * signal is unsubscribed from, and may be called after @connection
- * has been destroyed.)
- *
- * Returns: a subscription identifier that can be used with g_dbus_connection_signal_unsubscribe()
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_signal_unsubscribe:
- * @connection: a #GDBusConnection
- * @subscription_id: a subscription id obtained from
- *     g_dbus_connection_signal_subscribe()
- *
- * Unsubscribes from signals.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_start_message_processing:
- * @connection: a #GDBusConnection
- *
- * If @connection was created with
- * %G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING, this method
- * starts processing messages. Does nothing on if @connection wasn't
- * created with this flag or if the method has already been called.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_unexport_action_group:
- * @connection: a #GDBusConnection
- * @export_id: the ID from g_dbus_connection_export_action_group()
- *
- * Reverses the effect of a previous call to
- * g_dbus_connection_export_action_group().
- *
- * It is an error to call this function with an ID that wasn't returned
- * from g_dbus_connection_export_action_group() or to call it with the
- * same ID more than once.
- *
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_connection_unexport_menu_model:
- * @connection: a #GDBusConnection
- * @export_id: the ID from g_dbus_connection_export_menu_model()
- *
- * Reverses the effect of a previous call to
- * g_dbus_connection_export_menu_model().
- *
- * It is an error to call this function with an ID that wasn't returned
- * from g_dbus_connection_export_menu_model() or to call it with the
- * same ID more than once.
- *
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_connection_unregister_object:
- * @connection: a #GDBusConnection
- * @registration_id: a registration id obtained from
- *     g_dbus_connection_register_object()
- *
- * Unregisters an object.
- *
- * Returns: %TRUE if the object was unregistered, %FALSE otherwise
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_connection_unregister_subtree:
- * @connection: a #GDBusConnection
- * @registration_id: a subtree registration id obtained from
- *     g_dbus_connection_register_subtree()
- *
- * Unregisters a subtree.
- *
- * Returns: %TRUE if the subtree was unregistered, %FALSE otherwise
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_encode_gerror:
- * @error: A #GError.
- *
- * Creates a D-Bus error name to use for @error. If @error matches
- * a registered error (cf. g_dbus_error_register_error()), the corresponding
- * D-Bus error name will be returned.
- *
- * Otherwise the a name of the form
- * `org.gtk.GDBus.UnmappedGError.Quark._ESCAPED_QUARK_NAME.Code_ERROR_CODE`
- * will be used. This allows other GDBus applications to map the error
- * on the wire back to a #GError using g_dbus_error_new_for_dbus_error().
- *
- * This function is typically only used in object mappings to put a
- * #GError on the wire. Regular applications should not use it.
- *
- * Returns: A D-Bus error name (never %NULL). Free with g_free().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_get_remote_error:
- * @error: a #GError
- *
- * Gets the D-Bus error name used for @error, if any.
- *
- * This function is guaranteed to return a D-Bus error name for all
- * #GErrors returned from functions handling remote method calls
- * (e.g. g_dbus_connection_call_finish()) unless
- * g_dbus_error_strip_remote_error() has been used on @error.
- *
- * Returns: an allocated string or %NULL if the D-Bus error name
- *     could not be found. Free with g_free().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_is_remote_error:
- * @error: A #GError.
- *
- * Checks if @error represents an error received via D-Bus from a remote peer. If so,
- * use g_dbus_error_get_remote_error() to get the name of the error.
- *
- * Returns: %TRUE if @error represents an error from a remote peer,
- * %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_new_for_dbus_error:
- * @dbus_error_name: D-Bus error name.
- * @dbus_error_message: D-Bus error message.
- *
- * Creates a #GError based on the contents of @dbus_error_name and
- * @dbus_error_message.
- *
- * Errors registered with g_dbus_error_register_error() will be looked
- * up using @dbus_error_name and if a match is found, the error domain
- * and code is used. Applications can use g_dbus_error_get_remote_error()
- * to recover @dbus_error_name.
- *
- * If a match against a registered error is not found and the D-Bus
- * error name is in a form as returned by g_dbus_error_encode_gerror()
- * the error domain and code encoded in the name is used to
- * create the #GError. Also, @dbus_error_name is added to the error message
- * such that it can be recovered with g_dbus_error_get_remote_error().
- *
- * Otherwise, a #GError with the error code %G_IO_ERROR_DBUS_ERROR
- * in the #G_IO_ERROR error domain is returned. Also, @dbus_error_name is
- * added to the error message such that it can be recovered with
- * g_dbus_error_get_remote_error().
- *
- * In all three cases, @dbus_error_name can always be recovered from the
- * returned #GError using the g_dbus_error_get_remote_error() function
- * (unless g_dbus_error_strip_remote_error() hasn't been used on the returned error).
- *
- * This function is typically only used in object mappings to prepare
- * #GError instances for applications. Regular applications should not use
- * it.
- *
- * Returns: An allocated #GError. Free with g_error_free().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_register_error:
- * @error_domain: A #GQuark for a error domain.
- * @error_code: An error code.
- * @dbus_error_name: A D-Bus error name.
- *
- * Creates an association to map between @dbus_error_name and
- * #GErrors specified by @error_domain and @error_code.
- *
- * This is typically done in the routine that returns the #GQuark for
- * an error domain.
- *
- * Returns: %TRUE if the association was created, %FALSE if it already
- * exists.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_register_error_domain:
- * @error_domain_quark_name: The error domain name.
- * @quark_volatile: A pointer where to store the #GQuark.
- * @entries: (array length=num_entries): A pointer to @num_entries #GDBusErrorEntry struct items.
- * @num_entries: Number of items to register.
- *
- * Helper function for associating a #GError error domain with D-Bus error names.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_set_dbus_error:
- * @error: A pointer to a #GError or %NULL.
- * @dbus_error_name: D-Bus error name.
- * @dbus_error_message: D-Bus error message.
- * @format: (nullable): printf()-style format to prepend to @dbus_error_message or %NULL.
- * @...: Arguments for @format.
- *
- * Does nothing if @error is %NULL. Otherwise sets *@error to
- * a new #GError created with g_dbus_error_new_for_dbus_error()
- * with @dbus_error_message prepend with @format (unless %NULL).
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_set_dbus_error_valist:
- * @error: A pointer to a #GError or %NULL.
- * @dbus_error_name: D-Bus error name.
- * @dbus_error_message: D-Bus error message.
- * @format: (nullable): printf()-style format to prepend to @dbus_error_message or %NULL.
- * @var_args: Arguments for @format.
- *
- * Like g_dbus_error_set_dbus_error() but intended for language bindings.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_strip_remote_error:
- * @error: A #GError.
- *
- * Looks for extra information in the error message used to recover
- * the D-Bus error name and strips it if found. If stripped, the
- * message field in @error will correspond exactly to what was
- * received on the wire.
- *
- * This is typically used when presenting errors to the end user.
- *
- * Returns: %TRUE if information was stripped, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_error_unregister_error:
- * @error_domain: A #GQuark for a error domain.
- * @error_code: An error code.
- * @dbus_error_name: A D-Bus error name.
- *
- * Destroys an association previously set up with g_dbus_error_register_error().
- *
- * Returns: %TRUE if the association was destroyed, %FALSE if it wasn't found.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_generate_guid:
- *
- * Generate a D-Bus GUID that can be used with
- * e.g. g_dbus_connection_new().
- *
- * See the D-Bus specification regarding what strings are valid D-Bus
- * GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).
- *
- * Returns: A valid D-Bus GUID. Free with g_free().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_gvalue_to_gvariant:
- * @gvalue: A #GValue to convert to a #GVariant
- * @type: A #GVariantType
- *
- * Converts a #GValue to a #GVariant of the type indicated by the @type
- * parameter.
- *
- * The conversion is using the following rules:
- *
- * - #G_TYPE_STRING: 's', 'o', 'g' or 'ay'
- * - #G_TYPE_STRV: 'as', 'ao' or 'aay'
- * - #G_TYPE_BOOLEAN: 'b'
- * - #G_TYPE_UCHAR: 'y'
- * - #G_TYPE_INT: 'i', 'n'
- * - #G_TYPE_UINT: 'u', 'q'
- * - #G_TYPE_INT64 'x'
- * - #G_TYPE_UINT64: 't'
- * - #G_TYPE_DOUBLE: 'd'
- * - #G_TYPE_VARIANT: Any #GVariantType
- *
- * This can fail if e.g. @gvalue is of type #G_TYPE_STRING and @type
- * is ['i'][G-VARIANT-TYPE-INT32:CAPS]. It will also fail for any #GType
- * (including e.g. #G_TYPE_OBJECT and #G_TYPE_BOXED derived-types) not
- * in the table above.
- *
- * Note that if @gvalue is of type #G_TYPE_VARIANT and its value is
- * %NULL, the empty #GVariant instance (never %NULL) for @type is
- * returned (e.g. 0 for scalar types, the empty string for string types,
- * '/' for object path types, the empty array for any array type and so on).
- *
- * See the g_dbus_gvariant_to_gvalue() function for how to convert a
- * #GVariant to a #GValue.
- *
- * Returns: A #GVariant (never floating) of #GVariantType @type holding
- *     the data from @gvalue or %NULL in case of failure. Free with
- *     g_variant_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_gvariant_to_gvalue:
- * @value: A #GVariant.
- * @out_gvalue: (out): Return location pointing to a zero-filled (uninitialized) #GValue.
- *
- * Converts a #GVariant to a #GValue. If @value is floating, it is consumed.
- *
- * The rules specified in the g_dbus_gvalue_to_gvariant() function are
- * used - this function is essentially its reverse form. So, a #GVariant
- * containing any basic or string array type will be converted to a #GValue
- * containing a basic value or string array. Any other #GVariant (handle,
- * variant, tuple, dict entry) will be converted to a #GValue containing that
- * #GVariant.
- *
- * The conversion never fails - a valid #GValue is always returned in
- * @out_gvalue.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_dup_object: (rename-to g_dbus_interface_get_object)
- * @interface_: An exported D-Bus interface.
- *
- * Gets the #GDBusObject that @interface_ belongs to, if any.
- *
- * Returns: (transfer full): A #GDBusObject or %NULL. The returned
- * reference should be freed with g_object_unref().
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_interface_get_info:
- * @interface_: An exported D-Bus interface.
- *
- * Gets D-Bus introspection information for the D-Bus interface
- * implemented by @interface_.
- *
- * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_get_object: (skip)
- * @interface_: An exported D-Bus interface
- *
- * Gets the #GDBusObject that @interface_ belongs to, if any.
- *
- * It is not safe to use the returned object if @interface_ or
- * the returned object is being used from other threads. See
- * g_dbus_interface_dup_object() for a thread-safe alternative.
- *
- * Returns: (transfer none): A #GDBusObject or %NULL. The returned
- *     reference belongs to @interface_ and should not be freed.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_info_cache_build:
- * @info: A #GDBusInterfaceInfo.
- *
- * Builds a lookup-cache to speed up
- * g_dbus_interface_info_lookup_method(),
- * g_dbus_interface_info_lookup_signal() and
- * g_dbus_interface_info_lookup_property().
- *
- * If this has already been called with @info, the existing cache is
- * used and its use count is increased.
- *
- * Note that @info cannot be modified until
- * g_dbus_interface_info_cache_release() is called.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_info_cache_release:
- * @info: A GDBusInterfaceInfo
- *
- * Decrements the usage count for the cache for @info built by
- * g_dbus_interface_info_cache_build() (if any) and frees the
- * resources used by the cache if the usage count drops to zero.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_info_generate_xml:
- * @info: A #GDBusNodeInfo
- * @indent: Indentation level.
- * @string_builder: A #GString to to append XML data to.
- *
- * Appends an XML representation of @info (and its children) to @string_builder.
- *
- * This function is typically used for generating introspection XML
- * documents at run-time for handling the
- * `org.freedesktop.DBus.Introspectable.Introspect`
- * method.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_interface_info_lookup_method:
- * @info: A #GDBusInterfaceInfo.
- * @name: A D-Bus method name (typically in CamelCase)
- *
- * Looks up information about a method.
- *
- * The cost of this function is O(n) in number of methods unless
- * g_dbus_interface_info_cache_build() has been used on @info.
- *
- * Returns: (transfer none): A #GDBusMethodInfo or %NULL if not found. Do not free, it is owned by @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_interface_info_lookup_property:
- * @info: A #GDBusInterfaceInfo.
- * @name: A D-Bus property name (typically in CamelCase).
- *
- * Looks up information about a property.
- *
- * The cost of this function is O(n) in number of properties unless
- * g_dbus_interface_info_cache_build() has been used on @info.
- *
- * Returns: (transfer none): A #GDBusPropertyInfo or %NULL if not found. Do not free, it is owned by @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_interface_info_lookup_signal:
- * @info: A #GDBusInterfaceInfo.
- * @name: A D-Bus signal name (typically in CamelCase)
- *
- * Looks up information about a signal.
- *
- * The cost of this function is O(n) in number of signals unless
- * g_dbus_interface_info_cache_build() has been used on @info.
- *
- * Returns: (transfer none): A #GDBusSignalInfo or %NULL if not found. Do not free, it is owned by @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_interface_info_ref:
- * @info: A #GDBusInterfaceInfo
- *
- * If @info is statically allocated does nothing. Otherwise increases
- * the reference count.
- *
- * Returns: The same @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_interface_info_unref:
- * @info: A #GDBusInterfaceInfo.
- *
- * If @info is statically allocated, does nothing. Otherwise decreases
- * the reference count of @info. When its reference count drops to 0,
- * the memory used is freed.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_interface_set_object:
- * @interface_: An exported D-Bus interface.
- * @object: (nullable): A #GDBusObject or %NULL.
- *
- * Sets the #GDBusObject for @interface_ to @object.
- *
- * Note that @interface_ will hold a weak reference to @object.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_export:
- * @interface_: The D-Bus interface to export.
- * @connection: A #GDBusConnection to export @interface_ on.
- * @object_path: The path to export the interface at.
- * @error: Return location for error or %NULL.
- *
- * Exports @interface_ at @object_path on @connection.
- *
- * This can be called multiple times to export the same @interface_
- * onto multiple connections however the @object_path provided must be
- * the same for all connections.
- *
- * Use g_dbus_interface_skeleton_unexport() to unexport the object.
- *
- * Returns: %TRUE if the interface was exported on @connection, otherwise %FALSE with
- * @error set.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_flush:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * If @interface_ has outstanding changes, request for these changes to be
- * emitted immediately.
- *
- * For example, an exported D-Bus interface may queue up property
- * changes and emit the
- * `org.freedesktop.DBus.Properties.PropertiesChanged`
- * signal later (e.g. in an idle handler). This technique is useful
- * for collapsing multiple property changes into one.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_get_connection:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Gets the first connection that @interface_ is exported on, if any.
- *
- * Returns: (transfer none): A #GDBusConnection or %NULL if @interface_ is
- * not exported anywhere. Do not free, the object belongs to @interface_.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_get_connections:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Gets a list of the connections that @interface_ is exported on.
- *
- * Returns: (element-type GDBusConnection) (transfer full): A list of
- *   all the connections that @interface_ is exported on. The returned
- *   list should be freed with g_list_free() after each element has
- *   been freed with g_object_unref().
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_interface_skeleton_get_flags:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Gets the #GDBusInterfaceSkeletonFlags that describes what the behavior
- * of @interface_
- *
- * Returns: One or more flags from the #GDBusInterfaceSkeletonFlags enumeration.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_get_info:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Gets D-Bus introspection information for the D-Bus interface
- * implemented by @interface_.
- *
- * Returns: (transfer none): A #GDBusInterfaceInfo (never %NULL). Do not free.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_get_object_path:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Gets the object path that @interface_ is exported on, if any.
- *
- * Returns: A string owned by @interface_ or %NULL if @interface_ is not exported
- * anywhere. Do not free, the string belongs to @interface_.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_get_properties:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Gets all D-Bus properties for @interface_.
- *
- * Returns: (transfer full): A #GVariant of type
- * ['a{sv}'][G-VARIANT-TYPE-VARDICT:CAPS].
- * Free with g_variant_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_get_vtable: (skip)
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Gets the interface vtable for the D-Bus interface implemented by
- * @interface_. The returned function pointers should expect @interface_
- * itself to be passed as @user_data.
- *
- * Returns: A #GDBusInterfaceVTable (never %NULL).
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_has_connection:
- * @interface_: A #GDBusInterfaceSkeleton.
- * @connection: A #GDBusConnection.
- *
- * Checks if @interface_ is exported on @connection.
- *
- * Returns: %TRUE if @interface_ is exported on @connection, %FALSE otherwise.
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_interface_skeleton_set_flags:
- * @interface_: A #GDBusInterfaceSkeleton.
- * @flags: Flags from the #GDBusInterfaceSkeletonFlags enumeration.
- *
- * Sets flags describing what the behavior of @skeleton should be.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_unexport:
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Stops exporting @interface_ on all connections it is exported on.
- *
- * To unexport @interface_ from only a single connection, use
- * g_dbus_interface_skeleton_unexport_from_connection()
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_interface_skeleton_unexport_from_connection:
- * @interface_: A #GDBusInterfaceSkeleton.
- * @connection: A #GDBusConnection.
- *
- * Stops exporting @interface_ on @connection.
- *
- * To stop exporting on all connections the interface is exported on,
- * use g_dbus_interface_skeleton_unexport().
- *
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_is_address:
- * @string: A string.
- *
- * Checks if @string is a
- * [D-Bus address](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
- *
- * This doesn't check if @string is actually supported by #GDBusServer
- * or #GDBusConnection - use g_dbus_is_supported_address() to do more
- * checks.
- *
- * Returns: %TRUE if @string is a valid D-Bus address, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_is_guid:
- * @string: The string to check.
- *
- * Checks if @string is a D-Bus GUID.
- *
- * See the D-Bus specification regarding what strings are valid D-Bus
- * GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).
- *
- * Returns: %TRUE if @string is a guid, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_is_interface_name:
- * @string: The string to check.
- *
- * Checks if @string is a valid D-Bus interface name.
- *
- * Returns: %TRUE if valid, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_is_member_name:
- * @string: The string to check.
- *
- * Checks if @string is a valid D-Bus member (e.g. signal or method) name.
- *
- * Returns: %TRUE if valid, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_is_name:
- * @string: The string to check.
- *
- * Checks if @string is a valid D-Bus bus name (either unique or well-known).
- *
- * Returns: %TRUE if valid, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_is_supported_address:
- * @string: A string.
- * @error: Return location for error or %NULL.
- *
- * Like g_dbus_is_address() but also checks if the library supports the
- * transports in @string and that key/value pairs for each transport
- * are valid. See the specification of the
- * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
- *
- * Returns: %TRUE if @string is a valid D-Bus address that is
- * supported by this library, %FALSE if @error is set.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_is_unique_name:
- * @string: The string to check.
- *
- * Checks if @string is a valid D-Bus unique bus name.
- *
- * Returns: %TRUE if valid, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_menu_model_get:
- * @connection: a #GDBusConnection
- * @bus_name: (nullable): the bus name which exports the menu model
- *     or %NULL if @connection is not a message bus connection
- * @object_path: the object path at which the menu model is exported
- *
- * Obtains a #GDBusMenuModel for the menu model which is exported
- * at the given @bus_name and @object_path.
- *
- * The thread default main context is taken at the time of this call.
- * All signals on the menu model (and any linked models) are reported
- * with respect to this context.  All calls on the returned menu model
- * (and linked models) must also originate from this same context, with
- * the thread default main context unchanged.
- *
- * Returns: (transfer full): a #GDBusMenuModel object. Free with
- *     g_object_unref().
- * Since: 2.32
- */
-
-
-/**
- * g_dbus_message_bytes_needed:
- * @blob: (array length=blob_len) (element-type guint8): A blob represent a binary D-Bus message.
- * @blob_len: The length of @blob (must be at least 16).
- * @error: Return location for error or %NULL.
- *
- * Utility function to calculate how many bytes are needed to
- * completely deserialize the D-Bus message stored at @blob.
- *
- * Returns: Number of bytes needed or -1 if @error is set (e.g. if
- * @blob contains invalid data or not enough data is available to
- * determine the size).
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_copy:
- * @message: A #GDBusMessage.
- * @error: Return location for error or %NULL.
- *
- * Copies @message. The copy is a deep copy and the returned
- * #GDBusMessage is completely identical except that it is guaranteed
- * to not be locked.
- *
- * This operation can fail if e.g. @message contains file descriptors
- * and the per-process or system-wide open files limit is reached.
- *
- * Returns: (transfer full): A new #GDBusMessage or %NULL if @error is set.
- *     Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_arg0:
- * @message: A #GDBusMessage.
- *
- * Convenience to get the first item in the body of @message.
- *
- * Returns: The string item or %NULL if the first item in the body of
- * @message is not a string.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_body:
- * @message: A #GDBusMessage.
- *
- * Gets the body of a message.
- *
- * Returns: (transfer none): A #GVariant or %NULL if the body is
- * empty. Do not free, it is owned by @message.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_byte_order:
- * @message: A #GDBusMessage.
- *
- * Gets the byte order of @message.
- *
- * Returns: The byte order.
- */
-
-
-/**
- * g_dbus_message_get_destination:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_error_name:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_flags:
- * @message: A #GDBusMessage.
- *
- * Gets the flags for @message.
- *
- * Returns: Flags that are set (typically values from the #GDBusMessageFlags enumeration bitwise ORed together).
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_header:
- * @message: A #GDBusMessage.
- * @header_field: A 8-bit unsigned integer (typically a value from the #GDBusMessageHeaderField enumeration)
- *
- * Gets a header field on @message.
- *
- * Returns: A #GVariant with the value if the header was found, %NULL
- * otherwise. Do not free, it is owned by @message.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_header_fields:
- * @message: A #GDBusMessage.
- *
- * Gets an array of all header fields on @message that are set.
- *
- * Returns: (array zero-terminated=1): An array of header fields
- * terminated by %G_DBUS_MESSAGE_HEADER_FIELD_INVALID.  Each element
- * is a #guchar. Free with g_free().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_interface:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_locked:
- * @message: A #GDBusMessage.
- *
- * Checks whether @message is locked. To monitor changes to this
- * value, conncet to the #GObject::notify signal to listen for changes
- * on the #GDBusMessage:locked property.
- *
- * Returns: %TRUE if @message is locked, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_member:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_message_type:
- * @message: A #GDBusMessage.
- *
- * Gets the type of @message.
- *
- * Returns: A 8-bit unsigned integer (typically a value from the #GDBusMessageType enumeration).
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_num_unix_fds:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_path:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_reply_serial:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_sender:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_serial:
- * @message: A #GDBusMessage.
- *
- * Gets the serial for @message.
- *
- * Returns: A #guint32.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_signature:
- * @message: A #GDBusMessage.
- *
- * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.
- *
- * Returns: The value.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_get_unix_fd_list:
- * @message: A #GDBusMessage.
- *
- * Gets the UNIX file descriptors associated with @message, if any.
- *
- * This method is only available on UNIX.
- *
- * Returns: (transfer none): A #GUnixFDList or %NULL if no file descriptors are
- * associated. Do not free, this object is owned by @message.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_lock:
- * @message: A #GDBusMessage.
- *
- * If @message is locked, does nothing. Otherwise locks the message.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new:
- *
- * Creates a new empty #GDBusMessage.
- *
- * Returns: A #GDBusMessage. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new_from_blob:
- * @blob: (array length=blob_len) (element-type guint8): A blob represent a binary D-Bus message.
- * @blob_len: The length of @blob.
- * @capabilities: A #GDBusCapabilityFlags describing what protocol features are supported.
- * @error: Return location for error or %NULL.
- *
- * Creates a new #GDBusMessage from the data stored at @blob. The byte
- * order that the message was in can be retrieved using
- * g_dbus_message_get_byte_order().
- *
- * Returns: A new #GDBusMessage or %NULL if @error is set. Free with
- * g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new_method_call:
- * @name: (nullable): A valid D-Bus name or %NULL.
- * @path: A valid object path.
- * @interface_: (nullable): A valid D-Bus interface name or %NULL.
- * @method: A valid method name.
- *
- * Creates a new #GDBusMessage for a method call.
- *
- * Returns: A #GDBusMessage. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new_method_error:
- * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
- * create a reply message to.
- * @error_name: A valid D-Bus error name.
- * @error_message_format: The D-Bus error message in a printf() format.
- * @...: Arguments for @error_message_format.
- *
- * Creates a new #GDBusMessage that is an error reply to @method_call_message.
- *
- * Returns: (transfer full): A #GDBusMessage. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new_method_error_literal:
- * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
- * create a reply message to.
- * @error_name: A valid D-Bus error name.
- * @error_message: The D-Bus error message.
- *
- * Creates a new #GDBusMessage that is an error reply to @method_call_message.
- *
- * Returns: (transfer full): A #GDBusMessage. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new_method_error_valist:
- * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
- * create a reply message to.
- * @error_name: A valid D-Bus error name.
- * @error_message_format: The D-Bus error message in a printf() format.
- * @var_args: Arguments for @error_message_format.
- *
- * Like g_dbus_message_new_method_error() but intended for language bindings.
- *
- * Returns: (transfer full): A #GDBusMessage. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new_method_reply:
- * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
- * create a reply message to.
- *
- * Creates a new #GDBusMessage that is a reply to @method_call_message.
- *
- * Returns: (transfer full): #GDBusMessage. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_new_signal:
- * @path: A valid object path.
- * @interface_: A valid D-Bus interface name.
- * @signal: A valid signal name.
- *
- * Creates a new #GDBusMessage for a signal emission.
- *
- * Returns: A #GDBusMessage. Free with g_object_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_print: (type method-return)
- * @message: A #GDBusMessage.
- * @indent: Indentation level.
- *
- * Produces a human-readable multi-line description of @message.
- *
- * The contents of the description has no ABI guarantees, the contents
- * and formatting is subject to change at any time. Typical output
- * looks something like this:
- * |[
- * Flags:   none
- * Version: 0
- * Serial:  4
- * Headers:
- *   path -> objectpath '/org/gtk/GDBus/TestObject'
- *   interface -> 'org.gtk.GDBus.TestInterface'
- *   member -> 'GimmeStdout'
- *   destination -> ':1.146'
- * Body: ()
- * UNIX File Descriptors:
- *   (none)
- * ]|
- * or
- * |[
- * Flags:   no-reply-expected
- * Version: 0
- * Serial:  477
- * Headers:
- *   reply-serial -> uint32 4
- *   destination -> ':1.159'
- *   sender -> ':1.146'
- *   num-unix-fds -> uint32 1
- * Body: ()
- * UNIX File Descriptors:
- *   fd 12: dev=0:10,mode=020620,ino=5,uid=500,gid=5,rdev=136:2,size=0,atime=1273085037,mtime=1273085851,ctime=1272982635
- * ]|
- *
- * Returns: A string that should be freed with g_free().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_body:
- * @message: A #GDBusMessage.
- * @body: Either %NULL or a #GVariant that is a tuple.
- *
- * Sets the body @message. As a side-effect the
- * %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field is set to the
- * type string of @body (or cleared if @body is %NULL).
- *
- * If @body is floating, @message assumes ownership of @body.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_byte_order:
- * @message: A #GDBusMessage.
- * @byte_order: The byte order.
- *
- * Sets the byte order of @message.
- */
-
-
-/**
- * g_dbus_message_set_destination:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_error_name:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_flags:
- * @message: A #GDBusMessage.
- * @flags: Flags for @message that are set (typically values from the #GDBusMessageFlags
- * enumeration bitwise ORed together).
- *
- * Sets the flags to set on @message.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_header:
- * @message: A #GDBusMessage.
- * @header_field: A 8-bit unsigned integer (typically a value from the #GDBusMessageHeaderField enumeration)
- * @value: (nullable): A #GVariant to set the header field or %NULL to clear the header field.
- *
- * Sets a header field on @message.
- *
- * If @value is floating, @message assumes ownership of @value.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_interface:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_member:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_message_type:
- * @message: A #GDBusMessage.
- * @type: A 8-bit unsigned integer (typically a value from the #GDBusMessageType enumeration).
- *
- * Sets @message to be of @type.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_num_unix_fds:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_path:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_reply_serial:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_sender:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_serial:
- * @message: A #GDBusMessage.
- * @serial: A #guint32.
- *
- * Sets the serial for @message.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_signature:
- * @message: A #GDBusMessage.
- * @value: The value to set.
- *
- * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_set_unix_fd_list:
- * @message: A #GDBusMessage.
- * @fd_list: (nullable): A #GUnixFDList or %NULL.
- *
- * Sets the UNIX file descriptors associated with @message. As a
- * side-effect the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header
- * field is set to the number of fds in @fd_list (or cleared if
- * @fd_list is %NULL).
- *
- * This method is only available on UNIX.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_to_blob:
- * @message: A #GDBusMessage.
- * @out_size: Return location for size of generated blob.
- * @capabilities: A #GDBusCapabilityFlags describing what protocol features are supported.
- * @error: Return location for error.
- *
- * Serializes @message to a blob. The byte order returned by
- * g_dbus_message_get_byte_order() will be used.
- *
- * Returns: (array length=out_size) (transfer full): A pointer to a
- * valid binary D-Bus message of @out_size bytes generated by @message
- * or %NULL if @error is set. Free with g_free().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_message_to_gerror:
- * @message: A #GDBusMessage.
- * @error: The #GError to set.
- *
- * If @message is not of type %G_DBUS_MESSAGE_TYPE_ERROR does
- * nothing and returns %FALSE.
- *
- * Otherwise this method encodes the error in @message as a #GError
- * using g_dbus_error_set_dbus_error() using the information in the
- * %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field of @message as
- * well as the first string item in @message's body.
- *
- * Returns: %TRUE if @error was set, %FALSE otherwise.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_info_ref:
- * @info: A #GDBusMethodInfo
- *
- * If @info is statically allocated does nothing. Otherwise increases
- * the reference count.
- *
- * Returns: The same @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_info_unref:
- * @info: A #GDBusMethodInfo.
- *
- * If @info is statically allocated, does nothing. Otherwise decreases
- * the reference count of @info. When its reference count drops to 0,
- * the memory used is freed.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_connection:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the #GDBusConnection the method was invoked on.
- *
- * Returns: (transfer none): A #GDBusConnection. Do not free, it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_interface_name:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the name of the D-Bus interface the method was invoked on.
- *
- * If this method call is a property Get, Set or GetAll call that has
- * been redirected to the method call handler then
- * "org.freedesktop.DBus.Properties" will be returned.  See
- * #GDBusInterfaceVTable for more information.
- *
- * Returns: A string. Do not free, it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_message:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the #GDBusMessage for the method invocation. This is useful if
- * you need to use low-level protocol features, such as UNIX file
- * descriptor passing, that cannot be properly expressed in the
- * #GVariant API.
- *
- * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
- * for an example of how to use this low-level API to send and receive
- * UNIX file descriptors.
- *
- * Returns: (transfer none): #GDBusMessage. Do not free, it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_method_info:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets information about the method call, if any.
- *
- * If this method invocation is a property Get, Set or GetAll call that
- * has been redirected to the method call handler then %NULL will be
- * returned.  See g_dbus_method_invocation_get_property_info() and
- * #GDBusInterfaceVTable for more information.
- *
- * Returns: A #GDBusMethodInfo or %NULL. Do not free, it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_method_name:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the name of the method that was invoked.
- *
- * Returns: A string. Do not free, it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_object_path:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the object path the method was invoked on.
- *
- * Returns: A string. Do not free, it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_parameters:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the parameters of the method invocation. If there are no input
- * parameters then this will return a GVariant with 0 children rather than NULL.
- *
- * Returns: (transfer none): A #GVariant tuple. Do not unref this because it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_property_info:
- * @invocation: A #GDBusMethodInvocation
- *
- * Gets information about the property that this method call is for, if
- * any.
- *
- * This will only be set in the case of an invocation in response to a
- * property Get or Set call that has been directed to the method call
- * handler for an object on account of its property_get() or
- * property_set() vtable pointers being unset.
- *
- * See #GDBusInterfaceVTable for more information.
- *
- * If the call was GetAll, %NULL will be returned.
- *
- * Returns: (transfer none): a #GDBusPropertyInfo or %NULL
- * Since: 2.38
- */
-
-
-/**
- * g_dbus_method_invocation_get_sender:
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the bus name that invoked the method.
- *
- * Returns: A string. Do not free, it is owned by @invocation.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_get_user_data: (skip)
- * @invocation: A #GDBusMethodInvocation.
- *
- * Gets the @user_data #gpointer passed to g_dbus_connection_register_object().
- *
- * Returns: A #gpointer.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_return_dbus_error:
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @error_name: A valid D-Bus error name.
- * @error_message: A valid D-Bus error message.
- *
- * Finishes handling a D-Bus method call by returning an error.
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_return_error:
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @domain: A #GQuark for the #GError error domain.
- * @code: The error code.
- * @format: printf()-style format.
- * @...: Parameters for @format.
- *
- * Finishes handling a D-Bus method call by returning an error.
- *
- * See g_dbus_error_encode_gerror() for details about what error name
- * will be returned on the wire. In a nutshell, if the given error is
- * registered using g_dbus_error_register_error() the name given
- * during registration is used. Otherwise, a name of the form
- * `org.gtk.GDBus.UnmappedGError.Quark...` is used. This provides
- * transparent mapping of #GError between applications using GDBus.
- *
- * If you are writing an application intended to be portable,
- * always register errors with g_dbus_error_register_error()
- * or use g_dbus_method_invocation_return_dbus_error().
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since 2.48, if the method call requested for a reply not to be sent
- * then this call will free @invocation but otherwise do nothing (as per
- * the recommendations of the D-Bus specification).
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_return_error_literal:
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @domain: A #GQuark for the #GError error domain.
- * @code: The error code.
- * @message: The error message.
- *
- * Like g_dbus_method_invocation_return_error() but without printf()-style formatting.
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_return_error_valist:
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @domain: A #GQuark for the #GError error domain.
- * @code: The error code.
- * @format: printf()-style format.
- * @var_args: #va_list of parameters for @format.
- *
- * Like g_dbus_method_invocation_return_error() but intended for
- * language bindings.
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_return_gerror:
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @error: A #GError.
- *
- * Like g_dbus_method_invocation_return_error() but takes a #GError
- * instead of the error domain, error code and message.
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_return_value:
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @parameters: (nullable): A #GVariant tuple with out parameters for the method or %NULL if not passing any parameters.
- *
- * Finishes handling a D-Bus method call by returning @parameters.
- * If the @parameters GVariant is floating, it is consumed.
- *
- * It is an error if @parameters is not of the right format: it must be a tuple
- * containing the out-parameters of the D-Bus method. Even if the method has a
- * single out-parameter, it must be contained in a tuple. If the method has no
- * out-parameters, @parameters may be %NULL or an empty tuple.
- *
- * |[<!-- language="C" -->
- * GDBusMethodInvocation *invocation = some_invocation;
- * g_autofree gchar *result_string = NULL;
- * g_autoptr (GError) error = NULL;
- *
- * result_string = calculate_result (&error);
- *
- * if (error != NULL)
- *   g_dbus_method_invocation_return_gerror (invocation, error);
- * else
- *   g_dbus_method_invocation_return_value (invocation,
- *                                          g_variant_new ("(s)", result_string));
- *
- * // Do not free @invocation here; returning a value does that
- * ]|
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since 2.48, if the method call requested for a reply not to be sent
- * then this call will sink @parameters and free @invocation, but
- * otherwise do nothing (as per the recommendations of the D-Bus
- * specification).
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_method_invocation_return_value_with_unix_fd_list:
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @parameters: (nullable): A #GVariant tuple with out parameters for the method or %NULL if not passing any parameters.
- * @fd_list: (nullable): A #GUnixFDList or %NULL.
- *
- * Like g_dbus_method_invocation_return_value() but also takes a #GUnixFDList.
- *
- * This method is only available on UNIX.
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_method_invocation_take_error: (skip)
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @error: (transfer full): A #GError.
- *
- * Like g_dbus_method_invocation_return_gerror() but takes ownership
- * of @error so the caller does not need to free it.
- *
- * This method will take ownership of @invocation. See
- * #GDBusInterfaceVTable for more information about the ownership of
- * @invocation.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_node_info_generate_xml:
- * @info: A #GDBusNodeInfo.
- * @indent: Indentation level.
- * @string_builder: A #GString to to append XML data to.
- *
- * Appends an XML representation of @info (and its children) to @string_builder.
- *
- * This function is typically used for generating introspection XML documents at run-time for
- * handling the `org.freedesktop.DBus.Introspectable.Introspect`  method.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_node_info_lookup_interface:
- * @info: A #GDBusNodeInfo.
- * @name: A D-Bus interface name.
- *
- * Looks up information about an interface.
- *
- * The cost of this function is O(n) in number of interfaces.
- *
- * Returns: (transfer none): A #GDBusInterfaceInfo or %NULL if not found. Do not free, it is owned by @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_node_info_new_for_xml:
- * @xml_data: Valid D-Bus introspection XML.
- * @error: Return location for error.
- *
- * Parses @xml_data and returns a #GDBusNodeInfo representing the data.
- *
- * The introspection XML must contain exactly one top-level
- * <node> element.
- *
- * Note that this routine is using a
- * [GMarkup][glib-Simple-XML-Subset-Parser.description]-based
- * parser that only accepts a subset of valid XML documents.
- *
- * Returns: A #GDBusNodeInfo structure or %NULL if @error is set. Free
- * with g_dbus_node_info_unref().
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_node_info_ref:
- * @info: A #GDBusNodeInfo
- *
- * If @info is statically allocated does nothing. Otherwise increases
- * the reference count.
- *
- * Returns: The same @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_node_info_unref:
- * @info: A #GDBusNodeInfo.
- *
- * If @info is statically allocated, does nothing. Otherwise decreases
- * the reference count of @info. When its reference count drops to 0,
- * the memory used is freed.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_object_get_interface:
- * @object: A #GDBusObject.
- * @interface_name: A D-Bus interface name.
- *
- * Gets the D-Bus interface with name @interface_name associated with
- * @object, if any.
- *
- * Returns: (transfer full): %NULL if not found, otherwise a
- *   #GDBusInterface that must be freed with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_get_interfaces:
- * @object: A #GDBusObject.
- *
- * Gets the D-Bus interfaces associated with @object.
- *
- * Returns: (element-type GDBusInterface) (transfer full): A list of #GDBusInterface instances.
- *   The returned list must be freed by g_list_free() after each element has been freed
- *   with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_get_object_path:
- * @object: A #GDBusObject.
- *
- * Gets the object path for @object.
- *
- * Returns: A string owned by @object. Do not free.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_get_connection:
- * @manager: A #GDBusObjectManagerClient
- *
- * Gets the #GDBusConnection used by @manager.
- *
- * Returns: (transfer none): A #GDBusConnection object. Do not free,
- *   the object belongs to @manager.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_get_flags:
- * @manager: A #GDBusObjectManagerClient
- *
- * Gets the flags that @manager was constructed with.
- *
- * Returns: Zero of more flags from the #GDBusObjectManagerClientFlags
- * enumeration.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_get_name:
- * @manager: A #GDBusObjectManagerClient
- *
- * Gets the name that @manager is for, or %NULL if not a message bus
- * connection.
- *
- * Returns: A unique or well-known name. Do not free, the string
- * belongs to @manager.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_get_name_owner:
- * @manager: A #GDBusObjectManagerClient.
- *
- * The unique name that owns the name that @manager is for or %NULL if
- * no-one currently owns that name. You can connect to the
- * #GObject::notify signal to track changes to the
- * #GDBusObjectManagerClient:name-owner property.
- *
- * Returns: (nullable): The name owner or %NULL if no name owner
- * exists. Free with g_free().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_new:
- * @connection: A #GDBusConnection.
- * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
- * @name: The owner of the control object (unique or well-known name).
- * @object_path: The object path of the control object.
- * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
- * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
- * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
- * @cancellable: (nullable): A #GCancellable or %NULL
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: The data to pass to @callback.
- *
- * Asynchronously creates a new #GDBusObjectManagerClient object.
- *
- * This is an asynchronous failable constructor. When the result is
- * ready, @callback will be invoked in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread you are calling this method from. You can
- * then call g_dbus_object_manager_client_new_finish() to get the result. See
- * g_dbus_object_manager_client_new_sync() for the synchronous version.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_new_finish:
- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_object_manager_client_new().
- * @error: Return location for error or %NULL.
- *
- * Finishes an operation started with g_dbus_object_manager_client_new().
- *
- * Returns: (transfer full) (type GDBusObjectManagerClient): A
- *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
- *   with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_new_for_bus:
- * @bus_type: A #GBusType.
- * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
- * @name: The owner of the control object (unique or well-known name).
- * @object_path: The object path of the control object.
- * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
- * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
- * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
- * @cancellable: (nullable): A #GCancellable or %NULL
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: The data to pass to @callback.
- *
- * Like g_dbus_object_manager_client_new() but takes a #GBusType instead of a
- * #GDBusConnection.
- *
- * This is an asynchronous failable constructor. When the result is
- * ready, @callback will be invoked in the
- * [thread-default main loop][g-main-context-push-thread-default]
- * of the thread you are calling this method from. You can
- * then call g_dbus_object_manager_client_new_for_bus_finish() to get the result. See
- * g_dbus_object_manager_client_new_for_bus_sync() for the synchronous version.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_new_for_bus_finish:
- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_object_manager_client_new_for_bus().
- * @error: Return location for error or %NULL.
- *
- * Finishes an operation started with g_dbus_object_manager_client_new_for_bus().
- *
- * Returns: (transfer full) (type GDBusObjectManagerClient): A
- *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
- *   with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_new_for_bus_sync:
- * @bus_type: A #GBusType.
- * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
- * @name: The owner of the control object (unique or well-known name).
- * @object_path: The object path of the control object.
- * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
- * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
- * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
- * @cancellable: (nullable): A #GCancellable or %NULL
- * @error: Return location for error or %NULL.
- *
- * Like g_dbus_object_manager_client_new_sync() but takes a #GBusType instead
- * of a #GDBusConnection.
- *
- * This is a synchronous failable constructor - the calling thread is
- * blocked until a reply is received. See g_dbus_object_manager_client_new_for_bus()
- * for the asynchronous version.
- *
- * Returns: (transfer full) (type GDBusObjectManagerClient): A
- *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
- *   with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_client_new_sync:
- * @connection: A #GDBusConnection.
- * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
- * @name: (nullable): The owner of the control object (unique or well-known name), or %NULL when not using a message bus connection.
- * @object_path: The object path of the control object.
- * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
- * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
- * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
- * @cancellable: (nullable): A #GCancellable or %NULL
- * @error: Return location for error or %NULL.
- *
- * Creates a new #GDBusObjectManagerClient object.
- *
- * This is a synchronous failable constructor - the calling thread is
- * blocked until a reply is received. See g_dbus_object_manager_client_new()
- * for the asynchronous version.
- *
- * Returns: (transfer full) (type GDBusObjectManagerClient): A
- *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
- *   with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_get_interface:
- * @manager: A #GDBusObjectManager.
- * @object_path: Object path to lookup.
- * @interface_name: D-Bus interface name to lookup.
- *
- * Gets the interface proxy for @interface_name at @object_path, if
- * any.
- *
- * Returns: (transfer full): A #GDBusInterface instance or %NULL. Free
- *   with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_get_object:
- * @manager: A #GDBusObjectManager.
- * @object_path: Object path to lookup.
- *
- * Gets the #GDBusObjectProxy at @object_path, if any.
- *
- * Returns: (transfer full): A #GDBusObject or %NULL. Free with
- *   g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_get_object_path:
- * @manager: A #GDBusObjectManager.
- *
- * Gets the object path that @manager is for.
- *
- * Returns: A string owned by @manager. Do not free.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_get_objects:
- * @manager: A #GDBusObjectManager.
- *
- * Gets all #GDBusObject objects known to @manager.
- *
- * Returns: (transfer full) (element-type GDBusObject): A list of
- *   #GDBusObject objects. The returned list should be freed with
- *   g_list_free() after each element has been freed with
- *   g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_server_export:
- * @manager: A #GDBusObjectManagerServer.
- * @object: A #GDBusObjectSkeleton.
- *
- * Exports @object on @manager.
- *
- * If there is already a #GDBusObject exported at the object path,
- * then the old object is removed.
- *
- * The object path for @object must be in the hierarchy rooted by the
- * object path for @manager.
- *
- * Note that @manager will take a reference on @object for as long as
- * it is exported.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_server_export_uniquely:
- * @manager: A #GDBusObjectManagerServer.
- * @object: An object.
- *
- * Like g_dbus_object_manager_server_export() but appends a string of
- * the form _N (with N being a natural number) to @object's object path
- * if an object with the given path already exists. As such, the
- * #GDBusObjectProxy:g-object-path property of @object may be modified.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_server_get_connection:
- * @manager: A #GDBusObjectManagerServer
- *
- * Gets the #GDBusConnection used by @manager.
- *
- * Returns: (transfer full): A #GDBusConnection object or %NULL if
- *   @manager isn't exported on a connection. The returned object should
- *   be freed with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_server_is_exported:
- * @manager: A #GDBusObjectManagerServer.
- * @object: An object.
- *
- * Returns whether @object is currently exported on @manager.
- *
- * Returns: %TRUE if @object is exported
- * Since: 2.34
- */
-
-
-/**
- * g_dbus_object_manager_server_new:
- * @object_path: The object path to export the manager object at.
- *
- * Creates a new #GDBusObjectManagerServer object.
- *
- * The returned server isn't yet exported on any connection. To do so,
- * use g_dbus_object_manager_server_set_connection(). Normally you
- * want to export all of your objects before doing so to avoid
- * [InterfacesAdded](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager)
- * signals being emitted.
- *
- * Returns: A #GDBusObjectManagerServer object. Free with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_manager_server_set_connection:
- * @manager: A #GDBusObjectManagerServer.
- * @connection: (nullable): A #GDBusConnection or %NULL.
- *
- * Exports all objects managed by @manager on @connection. If
- * @connection is %NULL, stops exporting objects.
- */
-
-
-/**
- * g_dbus_object_manager_server_unexport:
- * @manager: A #GDBusObjectManagerServer.
- * @object_path: An object path.
- *
- * If @manager has an object at @path, removes the object. Otherwise
- * does nothing.
- *
- * Note that @object_path must be in the hierarchy rooted by the
- * object path for @manager.
- *
- * Returns: %TRUE if object at @object_path was removed, %FALSE otherwise.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_proxy_get_connection:
- * @proxy: a #GDBusObjectProxy
- *
- * Gets the connection that @proxy is for.
- *
- * Returns: (transfer none): A #GDBusConnection. Do not free, the
- *   object is owned by @proxy.
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_proxy_new:
+ * g_dbus_connection_signal_subscribe:
  * @connection: a #GDBusConnection
- * @object_path: the object path
- *
- * Creates a new #GDBusObjectProxy for the given connection and
- * object path.
- *
- * Returns: a new #GDBusObjectProxy
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_skeleton_add_interface:
- * @object: A #GDBusObjectSkeleton.
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Adds @interface_ to @object.
- *
- * If @object already contains a #GDBusInterfaceSkeleton with the same
- * interface name, it is removed before @interface_ is added.
- *
- * Note that @object takes its own reference on @interface_ and holds
- * it until removed.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_skeleton_flush:
- * @object: A #GDBusObjectSkeleton.
- *
- * This method simply calls g_dbus_interface_skeleton_flush() on all
- * interfaces belonging to @object. See that method for when flushing
- * is useful.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_skeleton_new:
- * @object_path: An object path.
- *
- * Creates a new #GDBusObjectSkeleton.
- *
- * Returns: A #GDBusObjectSkeleton. Free with g_object_unref().
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_skeleton_remove_interface:
- * @object: A #GDBusObjectSkeleton.
- * @interface_: A #GDBusInterfaceSkeleton.
- *
- * Removes @interface_ from @object.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_skeleton_remove_interface_by_name:
- * @object: A #GDBusObjectSkeleton.
- * @interface_name: A D-Bus interface name.
- *
- * Removes the #GDBusInterface with @interface_name from @object.
- *
- * If no D-Bus interface of the given interface exists, this function
- * does nothing.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_object_skeleton_set_object_path:
- * @object: A #GDBusObjectSkeleton.
- * @object_path: A valid D-Bus object path.
- *
- * Sets the object path for @object.
- *
- * Since: 2.30
- */
-
-
-/**
- * g_dbus_property_info_ref:
- * @info: A #GDBusPropertyInfo
- *
- * If @info is statically allocated does nothing. Otherwise increases
- * the reference count.
- *
- * Returns: The same @info.
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_property_info_unref:
- * @info: A #GDBusPropertyInfo.
- *
- * If @info is statically allocated, does nothing. Otherwise decreases
- * the reference count of @info. When its reference count drops to 0,
- * the memory used is freed.
- *
- * Since: 2.26
- */
-
-
-/**
- * g_dbus_proxy_call:
- * @proxy: A #GDBusProxy.
- * @method_name: Name of method to invoke.
- * @parameters: (nullable): A #GVariant tuple with parameters for the signal or %NULL if not passing parameters.
- * @flags: Flags from the #GDBusCallFlags enumeration.
- * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
- *                "infinite") or -1 to use the proxy default timeout.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: (nullable): A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't
- * care about the result of the method invocation.
- * @user_data: The data to pass to @callback.
- *
- * Asynchronously invokes the @method_name method on @proxy.
- *
- * If @method_name contains any dots, then @name is split into interface and
- * method name parts. This allows using @proxy for invoking methods on
- * other interfaces.
- *
- * If the #GDBusConnection associated with @proxy is closed then
- * the operation will fail with %G_IO_ERROR_CLOSED. If
- * @cancellable is canceled, the operation will fail with
- * %G_IO_ERROR_CANCELLED. If @parameters contains a value not
- * compatible with the D-Bus protocol, the operation fails with
- * %G_IO_ERROR_INVALID_ARGUMENT.
- *
- * If the @parameters #GVariant is floating, it is consumed. This allows
- * convenient 'inline' use of g_variant_new(), e.g.:
- * |[<!-- language="C" -->
- *  g_dbus_proxy_call (proxy,
- *                     "TwoStrings",
- *                     g_variant_new ("(ss)",
- *                                    "Thing One",
- *                                    "Thing Two"),
- *                     G_DBUS_CALL_FLAGS_NONE,
- *                     -1,
- *                     NULL,
- *                     (GAsyncReadyCallback) two_strings_done,
- *                     &data);
- * ]|
- *
- * If @proxy has an expected interface (see
- * #GDBusProxy:g-interface-info) and @method_name is referenced by it,
- * then the return value is checked against the return type.
+ * @sender: (nullable): sender name to match on (unique or well-known name)
+ *     or %NULL to listen from all senders
+ * @interface_name: (nullable): D-Bus interface name to match on or %NULL to
+ *     match on all interfaces
+ * @member: (nullable): D-Bus signal name to match on or %NULL to match on
+ *     all signals
+ * @object_path: (nullable): object path to match on or %NULL to match on
+ *     all object paths
+ * @arg0: (nullable): contents of first string argument to match on or %NULL
+ *     to match on all kinds of arguments
+ * @flags: #GDBusSignalFlags describing how arg0 is used in subscribing to the
+ *     signal
+ * @callback: callback to invoke when there is a signal matching the requested data
+ * @user_data: user data to pass to @callback
+ * @user_data_free_func: (nullable): function to free @user_data with when
+ *     subscription is removed or %NULL
  *
- * This is an asynchronous method. When the operation is finished,
- * @callback will be invoked in the
+ * Subscribes to signals on @connection and invokes @callback with a whenever
+ * the signal is received. Note that @callback will be invoked in the
  * [thread-default main context][g-main-context-push-thread-default]
  * of the thread you are calling this method from.
- * You can then call g_dbus_proxy_call_finish() to get the result of
- * the operation. See g_dbus_proxy_call_sync() for the synchronous
- * version of this method.
  *
- * If @callback is %NULL then the D-Bus method call message will be sent with
- * the %G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED flag set.
+ * If @connection is not a message bus connection, @sender must be
+ * %NULL.
+ *
+ * If @sender is a well-known name note that @callback is invoked with
+ * the unique name for the owner of @sender, not the well-known name
+ * as one would expect. This is because the message bus rewrites the
+ * name. As such, to avoid certain race conditions, users should be
+ * tracking the name owner of the well-known name and use that when
+ * processing the received signal.
+ *
+ * If one of %G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_NAMESPACE or
+ * %G_DBUS_SIGNAL_FLAGS_MATCH_ARG0_PATH are given, @arg0 is
+ * interpreted as part of a namespace or path.  The first argument
+ * of a signal is matched against that part as specified by D-Bus.
+ *
+ * If @user_data_free_func is non-%NULL, it will be called (in the
+ * thread-default main context of the thread you are calling this
+ * method from) at some point after @user_data is no longer
+ * needed. (It is not guaranteed to be called synchronously when the
+ * signal is unsubscribed from, and may be called after @connection
+ * has been destroyed.)
  *
+ * Returns: a subscription identifier that can be used with g_dbus_connection_signal_unsubscribe()
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_call_finish:
- * @proxy: A #GDBusProxy.
- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_proxy_call().
- * @error: Return location for error or %NULL.
+ * g_dbus_connection_signal_unsubscribe:
+ * @connection: a #GDBusConnection
+ * @subscription_id: a subscription id obtained from
+ *     g_dbus_connection_signal_subscribe()
  *
- * Finishes an operation started with g_dbus_proxy_call().
+ * Unsubscribes from signals.
  *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- * return values. Free with g_variant_unref().
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_call_sync:
- * @proxy: A #GDBusProxy.
- * @method_name: Name of method to invoke.
- * @parameters: (nullable): A #GVariant tuple with parameters for the signal
- *              or %NULL if not passing parameters.
- * @flags: Flags from the #GDBusCallFlags enumeration.
- * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
- *                "infinite") or -1 to use the proxy default timeout.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_dbus_connection_start_message_processing:
+ * @connection: a #GDBusConnection
  *
- * Synchronously invokes the @method_name method on @proxy.
+ * If @connection was created with
+ * %G_DBUS_CONNECTION_FLAGS_DELAY_MESSAGE_PROCESSING, this method
+ * starts processing messages. Does nothing on if @connection wasn't
+ * created with this flag or if the method has already been called.
  *
- * If @method_name contains any dots, then @name is split into interface and
- * method name parts. This allows using @proxy for invoking methods on
- * other interfaces.
+ * Since: 2.26
+ */
+
+
+/**
+ * g_dbus_connection_unexport_action_group:
+ * @connection: a #GDBusConnection
+ * @export_id: the ID from g_dbus_connection_export_action_group()
  *
- * If the #GDBusConnection associated with @proxy is disconnected then
- * the operation will fail with %G_IO_ERROR_CLOSED. If
- * @cancellable is canceled, the operation will fail with
- * %G_IO_ERROR_CANCELLED. If @parameters contains a value not
- * compatible with the D-Bus protocol, the operation fails with
- * %G_IO_ERROR_INVALID_ARGUMENT.
+ * Reverses the effect of a previous call to
+ * g_dbus_connection_export_action_group().
  *
- * If the @parameters #GVariant is floating, it is consumed. This allows
- * convenient 'inline' use of g_variant_new(), e.g.:
- * |[<!-- language="C" -->
- *  g_dbus_proxy_call_sync (proxy,
- *                          "TwoStrings",
- *                          g_variant_new ("(ss)",
- *                                         "Thing One",
- *                                         "Thing Two"),
- *                          G_DBUS_CALL_FLAGS_NONE,
- *                          -1,
- *                          NULL,
- *                          &error);
- * ]|
+ * It is an error to call this function with an ID that wasn't returned
+ * from g_dbus_connection_export_action_group() or to call it with the
+ * same ID more than once.
  *
- * The calling thread is blocked until a reply is received. See
- * g_dbus_proxy_call() for the asynchronous version of this
- * method.
+ * Since: 2.32
+ */
+
+
+/**
+ * g_dbus_connection_unexport_menu_model:
+ * @connection: a #GDBusConnection
+ * @export_id: the ID from g_dbus_connection_export_menu_model()
  *
- * If @proxy has an expected interface (see
- * #GDBusProxy:g-interface-info) and @method_name is referenced by it,
- * then the return value is checked against the return type.
+ * Reverses the effect of a previous call to
+ * g_dbus_connection_export_menu_model().
  *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- * return values. Free with g_variant_unref().
- * Since: 2.26
+ * It is an error to call this function with an ID that wasn't returned
+ * from g_dbus_connection_export_menu_model() or to call it with the
+ * same ID more than once.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_dbus_proxy_call_with_unix_fd_list:
- * @proxy: A #GDBusProxy.
- * @method_name: Name of method to invoke.
- * @parameters: (nullable): A #GVariant tuple with parameters for the signal or %NULL if not passing parameters.
- * @flags: Flags from the #GDBusCallFlags enumeration.
- * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
- *                "infinite") or -1 to use the proxy default timeout.
- * @fd_list: (nullable): A #GUnixFDList or %NULL.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: (nullable): A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't
- * care about the result of the method invocation.
- * @user_data: The data to pass to @callback.
- *
- * Like g_dbus_proxy_call() but also takes a #GUnixFDList object.
+ * g_dbus_connection_unregister_object:
+ * @connection: a #GDBusConnection
+ * @registration_id: a registration id obtained from
+ *     g_dbus_connection_register_object()
  *
- * This method is only available on UNIX.
+ * Unregisters an object.
  *
- * Since: 2.30
+ * Returns: %TRUE if the object was unregistered, %FALSE otherwise
+ * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_call_with_unix_fd_list_finish:
- * @proxy: A #GDBusProxy.
- * @out_fd_list: (out) (optional): Return location for a #GUnixFDList or %NULL.
- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_proxy_call_with_unix_fd_list().
- * @error: Return location for error or %NULL.
+ * g_dbus_connection_unregister_subtree:
+ * @connection: a #GDBusConnection
+ * @registration_id: a subtree registration id obtained from
+ *     g_dbus_connection_register_subtree()
  *
- * Finishes an operation started with g_dbus_proxy_call_with_unix_fd_list().
+ * Unregisters a subtree.
  *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- * return values. Free with g_variant_unref().
- * Since: 2.30
+ * Returns: %TRUE if the subtree was unregistered, %FALSE otherwise
+ * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_call_with_unix_fd_list_sync:
- * @proxy: A #GDBusProxy.
- * @method_name: Name of method to invoke.
- * @parameters: (nullable): A #GVariant tuple with parameters for the signal
- *              or %NULL if not passing parameters.
- * @flags: Flags from the #GDBusCallFlags enumeration.
- * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
- *                "infinite") or -1 to use the proxy default timeout.
- * @fd_list: (nullable): A #GUnixFDList or %NULL.
- * @out_fd_list: (out) (optional): Return location for a #GUnixFDList or %NULL.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_dbus_error_encode_gerror:
+ * @error: A #GError.
  *
- * Like g_dbus_proxy_call_sync() but also takes and returns #GUnixFDList objects.
+ * Creates a D-Bus error name to use for @error. If @error matches
+ * a registered error (cf. g_dbus_error_register_error()), the corresponding
+ * D-Bus error name will be returned.
  *
- * This method is only available on UNIX.
+ * Otherwise the a name of the form
+ * `org.gtk.GDBus.UnmappedGError.Quark._ESCAPED_QUARK_NAME.Code_ERROR_CODE`
+ * will be used. This allows other GDBus applications to map the error
+ * on the wire back to a #GError using g_dbus_error_new_for_dbus_error().
  *
- * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
- * return values. Free with g_variant_unref().
- * Since: 2.30
+ * This function is typically only used in object mappings to put a
+ * #GError on the wire. Regular applications should not use it.
+ *
+ * Returns: A D-Bus error name (never %NULL). Free with g_free().
+ * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_cached_property:
- * @proxy: A #GDBusProxy.
- * @property_name: Property name.
+ * g_dbus_error_get_remote_error:
+ * @error: a #GError
  *
- * Looks up the value for a property from the cache. This call does no
- * blocking IO.
+ * Gets the D-Bus error name used for @error, if any.
  *
- * If @proxy has an expected interface (see
- * #GDBusProxy:g-interface-info) and @property_name is referenced by
- * it, then @value is checked against the type of the property.
+ * This function is guaranteed to return a D-Bus error name for all
+ * #GErrors returned from functions handling remote method calls
+ * (e.g. g_dbus_connection_call_finish()) unless
+ * g_dbus_error_strip_remote_error() has been used on @error.
  *
- * Returns: (transfer full) (nullable): A reference to the #GVariant instance
- *    that holds the value for @property_name or %NULL if the value is not in
- *    the cache. The returned reference must be freed with g_variant_unref().
+ * Returns: an allocated string or %NULL if the D-Bus error name
+ *     could not be found. Free with g_free().
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_cached_property_names:
- * @proxy: A #GDBusProxy.
+ * g_dbus_error_is_remote_error:
+ * @error: A #GError.
  *
- * Gets the names of all cached properties on @proxy.
+ * Checks if @error represents an error received via D-Bus from a remote peer. If so,
+ * use g_dbus_error_get_remote_error() to get the name of the error.
  *
- * Returns: (transfer full) (nullable) (array zero-terminated=1): A
- *          %NULL-terminated array of strings or %NULL if
- *          @proxy has no cached properties. Free the returned array with
- *          g_strfreev().
+ * Returns: %TRUE if @error represents an error from a remote peer,
+ * %FALSE otherwise.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_connection:
- * @proxy: A #GDBusProxy.
+ * g_dbus_error_new_for_dbus_error:
+ * @dbus_error_name: D-Bus error name.
+ * @dbus_error_message: D-Bus error message.
  *
- * Gets the connection @proxy is for.
+ * Creates a #GError based on the contents of @dbus_error_name and
+ * @dbus_error_message.
  *
- * Returns: (transfer none): A #GDBusConnection owned by @proxy. Do not free.
+ * Errors registered with g_dbus_error_register_error() will be looked
+ * up using @dbus_error_name and if a match is found, the error domain
+ * and code is used. Applications can use g_dbus_error_get_remote_error()
+ * to recover @dbus_error_name.
+ *
+ * If a match against a registered error is not found and the D-Bus
+ * error name is in a form as returned by g_dbus_error_encode_gerror()
+ * the error domain and code encoded in the name is used to
+ * create the #GError. Also, @dbus_error_name is added to the error message
+ * such that it can be recovered with g_dbus_error_get_remote_error().
+ *
+ * Otherwise, a #GError with the error code %G_IO_ERROR_DBUS_ERROR
+ * in the #G_IO_ERROR error domain is returned. Also, @dbus_error_name is
+ * added to the error message such that it can be recovered with
+ * g_dbus_error_get_remote_error().
+ *
+ * In all three cases, @dbus_error_name can always be recovered from the
+ * returned #GError using the g_dbus_error_get_remote_error() function
+ * (unless g_dbus_error_strip_remote_error() hasn't been used on the returned error).
+ *
+ * This function is typically only used in object mappings to prepare
+ * #GError instances for applications. Regular applications should not use
+ * it.
+ *
+ * Returns: An allocated #GError. Free with g_error_free().
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_default_timeout:
- * @proxy: A #GDBusProxy.
+ * g_dbus_error_register_error:
+ * @error_domain: A #GQuark for a error domain.
+ * @error_code: An error code.
+ * @dbus_error_name: A D-Bus error name.
  *
- * Gets the timeout to use if -1 (specifying default timeout) is
- * passed as @timeout_msec in the g_dbus_proxy_call() and
- * g_dbus_proxy_call_sync() functions.
+ * Creates an association to map between @dbus_error_name and
+ * #GErrors specified by @error_domain and @error_code.
  *
- * See the #GDBusProxy:g-default-timeout property for more details.
+ * This is typically done in the routine that returns the #GQuark for
+ * an error domain.
  *
- * Returns: Timeout to use for @proxy.
+ * Returns: %TRUE if the association was created, %FALSE if it already
+ * exists.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_flags:
- * @proxy: A #GDBusProxy.
+ * g_dbus_error_register_error_domain:
+ * @error_domain_quark_name: The error domain name.
+ * @quark_volatile: A pointer where to store the #GQuark.
+ * @entries: (array length=num_entries): A pointer to @num_entries #GDBusErrorEntry struct items.
+ * @num_entries: Number of items to register.
  *
- * Gets the flags that @proxy was constructed with.
+ * Helper function for associating a #GError error domain with D-Bus error names.
  *
- * Returns: Flags from the #GDBusProxyFlags enumeration.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_interface_info:
- * @proxy: A #GDBusProxy
+ * g_dbus_error_set_dbus_error:
+ * @error: A pointer to a #GError or %NULL.
+ * @dbus_error_name: D-Bus error name.
+ * @dbus_error_message: D-Bus error message.
+ * @format: (nullable): printf()-style format to prepend to @dbus_error_message or %NULL.
+ * @...: Arguments for @format.
  *
- * Returns the #GDBusInterfaceInfo, if any, specifying the interface
- * that @proxy conforms to. See the #GDBusProxy:g-interface-info
- * property for more details.
+ * Does nothing if @error is %NULL. Otherwise sets *@error to
+ * a new #GError created with g_dbus_error_new_for_dbus_error()
+ * with @dbus_error_message prepend with @format (unless %NULL).
  *
- * Returns: (transfer none) (nullable): A #GDBusInterfaceInfo or %NULL.
- *    Do not unref the returned object, it is owned by @proxy.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_interface_name:
- * @proxy: A #GDBusProxy.
+ * g_dbus_error_set_dbus_error_valist:
+ * @error: A pointer to a #GError or %NULL.
+ * @dbus_error_name: D-Bus error name.
+ * @dbus_error_message: D-Bus error message.
+ * @format: (nullable): printf()-style format to prepend to @dbus_error_message or %NULL.
+ * @var_args: Arguments for @format.
  *
- * Gets the D-Bus interface name @proxy is for.
+ * Like g_dbus_error_set_dbus_error() but intended for language bindings.
  *
- * Returns: A string owned by @proxy. Do not free.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_name:
- * @proxy: A #GDBusProxy.
+ * g_dbus_error_strip_remote_error:
+ * @error: A #GError.
  *
- * Gets the name that @proxy was constructed for.
+ * Looks for extra information in the error message used to recover
+ * the D-Bus error name and strips it if found. If stripped, the
+ * message field in @error will correspond exactly to what was
+ * received on the wire.
  *
- * Returns: A string owned by @proxy. Do not free.
+ * This is typically used when presenting errors to the end user.
+ *
+ * Returns: %TRUE if information was stripped, %FALSE otherwise.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_name_owner:
- * @proxy: A #GDBusProxy.
+ * g_dbus_error_unregister_error:
+ * @error_domain: A #GQuark for a error domain.
+ * @error_code: An error code.
+ * @dbus_error_name: A D-Bus error name.
  *
- * The unique name that owns the name that @proxy is for or %NULL if
- * no-one currently owns that name. You may connect to the
- * #GObject::notify signal to track changes to the
- * #GDBusProxy:g-name-owner property.
+ * Destroys an association previously set up with g_dbus_error_register_error().
  *
- * Returns: (transfer full) (nullable): The name owner or %NULL if no name
- *    owner exists. Free with g_free().
+ * Returns: %TRUE if the association was destroyed, %FALSE if it wasn't found.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_get_object_path:
- * @proxy: A #GDBusProxy.
+ * g_dbus_generate_guid:
  *
- * Gets the object path @proxy is for.
+ * Generate a D-Bus GUID that can be used with
+ * e.g. g_dbus_connection_new().
  *
- * Returns: A string owned by @proxy. Do not free.
+ * See the D-Bus specification regarding what strings are valid D-Bus
+ * GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).
+ *
+ * Returns: A valid D-Bus GUID. Free with g_free().
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_new:
- * @connection: A #GDBusConnection.
- * @flags: Flags used when constructing the proxy.
- * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.
- * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @interface_name: A D-Bus interface name.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: Callback function to invoke when the proxy is ready.
- * @user_data: User data to pass to @callback.
+ * g_dbus_gvalue_to_gvariant:
+ * @gvalue: A #GValue to convert to a #GVariant
+ * @type: A #GVariantType
  *
- * Creates a proxy for accessing @interface_name on the remote object
- * at @object_path owned by @name at @connection and asynchronously
- * loads D-Bus properties unless the
- * %G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used. Connect to
- * the #GDBusProxy::g-properties-changed signal to get notified about
- * property changes.
+ * Converts a #GValue to a #GVariant of the type indicated by the @type
+ * parameter.
  *
- * If the %G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up
- * match rules for signals. Connect to the #GDBusProxy::g-signal signal
- * to handle signals from the remote object.
+ * The conversion is using the following rules:
  *
- * If @name is a well-known name and the
- * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION
- * flags aren't set and no name owner currently exists, the message bus
- * will be requested to launch a name owner for the name.
+ * - #G_TYPE_STRING: 's', 'o', 'g' or 'ay'
+ * - #G_TYPE_STRV: 'as', 'ao' or 'aay'
+ * - #G_TYPE_BOOLEAN: 'b'
+ * - #G_TYPE_UCHAR: 'y'
+ * - #G_TYPE_INT: 'i', 'n'
+ * - #G_TYPE_UINT: 'u', 'q'
+ * - #G_TYPE_INT64 'x'
+ * - #G_TYPE_UINT64: 't'
+ * - #G_TYPE_DOUBLE: 'd'
+ * - #G_TYPE_VARIANT: Any #GVariantType
  *
- * This is a failable asynchronous constructor - when the proxy is
- * ready, @callback will be invoked and you can use
- * g_dbus_proxy_new_finish() to get the result.
+ * This can fail if e.g. @gvalue is of type #G_TYPE_STRING and @type
+ * is ['i'][G-VARIANT-TYPE-INT32:CAPS]. It will also fail for any #GType
+ * (including e.g. #G_TYPE_OBJECT and #G_TYPE_BOXED derived-types) not
+ * in the table above.
  *
- * See g_dbus_proxy_new_sync() and for a synchronous version of this constructor.
+ * Note that if @gvalue is of type #G_TYPE_VARIANT and its value is
+ * %NULL, the empty #GVariant instance (never %NULL) for @type is
+ * returned (e.g. 0 for scalar types, the empty string for string types,
+ * '/' for object path types, the empty array for any array type and so on).
  *
- * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
+ * See the g_dbus_gvariant_to_gvalue() function for how to convert a
+ * #GVariant to a #GValue.
  *
- * Since: 2.26
+ * Returns: A #GVariant (never floating) of #GVariantType @type holding
+ *     the data from @gvalue or %NULL in case of failure. Free with
+ *     g_variant_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_proxy_new_finish:
- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to g_dbus_proxy_new().
- * @error: Return location for error or %NULL.
+ * g_dbus_gvariant_to_gvalue:
+ * @value: A #GVariant.
+ * @out_gvalue: (out): Return location pointing to a zero-filled (uninitialized) #GValue.
  *
- * Finishes creating a #GDBusProxy.
+ * Converts a #GVariant to a #GValue. If @value is floating, it is consumed.
  *
- * Returns: (transfer full): A #GDBusProxy or %NULL if @error is set.
- *    Free with g_object_unref().
- * Since: 2.26
+ * The rules specified in the g_dbus_gvalue_to_gvariant() function are
+ * used - this function is essentially its reverse form. So, a #GVariant
+ * containing any basic or string array type will be converted to a #GValue
+ * containing a basic value or string array. Any other #GVariant (handle,
+ * variant, tuple, dict entry) will be converted to a #GValue containing that
+ * #GVariant.
+ *
+ * The conversion never fails - a valid #GValue is always returned in
+ * @out_gvalue.
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_proxy_new_for_bus:
- * @bus_type: A #GBusType.
- * @flags: Flags used when constructing the proxy.
- * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @interface_name: A D-Bus interface name.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @callback: Callback function to invoke when the proxy is ready.
- * @user_data: User data to pass to @callback.
- *
- * Like g_dbus_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ * g_dbus_interface_dup_object: (rename-to g_dbus_interface_get_object)
+ * @interface_: An exported D-Bus interface.
  *
- * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
+ * Gets the #GDBusObject that @interface_ belongs to, if any.
  *
- * Since: 2.26
+ * Returns: (transfer full): A #GDBusObject or %NULL. The returned
+ * reference should be freed with g_object_unref().
+ * Since: 2.32
  */
 
 
 /**
- * g_dbus_proxy_new_for_bus_finish:
- * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to g_dbus_proxy_new_for_bus().
- * @error: Return location for error or %NULL.
+ * g_dbus_interface_get_info:
+ * @interface_: An exported D-Bus interface.
  *
- * Finishes creating a #GDBusProxy.
+ * Gets D-Bus introspection information for the D-Bus interface
+ * implemented by @interface_.
  *
- * Returns: (transfer full): A #GDBusProxy or %NULL if @error is set.
- *    Free with g_object_unref().
- * Since: 2.26
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_proxy_new_for_bus_sync:
- * @bus_type: A #GBusType.
- * @flags: Flags used when constructing the proxy.
- * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface
- *        that @proxy conforms to or %NULL.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @interface_name: A D-Bus interface name.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_dbus_interface_get_object: (skip)
+ * @interface_: An exported D-Bus interface
  *
- * Like g_dbus_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ * Gets the #GDBusObject that @interface_ belongs to, if any.
  *
- * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
+ * It is not safe to use the returned object if @interface_ or
+ * the returned object is being used from other threads. See
+ * g_dbus_interface_dup_object() for a thread-safe alternative.
  *
- * Returns: (transfer full): A #GDBusProxy or %NULL if error is set.
- *    Free with g_object_unref().
- * Since: 2.26
+ * Returns: (transfer none): A #GDBusObject or %NULL. The returned
+ *     reference belongs to @interface_ and should not be freed.
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_proxy_new_sync:
- * @connection: A #GDBusConnection.
- * @flags: Flags used when constructing the proxy.
- * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.
- * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @interface_name: A D-Bus interface name.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: (nullable): Return location for error or %NULL.
- *
- * Creates a proxy for accessing @interface_name on the remote object
- * at @object_path owned by @name at @connection and synchronously
- * loads D-Bus properties unless the
- * %G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used.
- *
- * If the %G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up
- * match rules for signals. Connect to the #GDBusProxy::g-signal signal
- * to handle signals from the remote object.
+ * g_dbus_interface_info_cache_build:
+ * @info: A #GDBusInterfaceInfo.
  *
- * If @name is a well-known name and the
- * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION
- * flags aren't set and no name owner currently exists, the message bus
- * will be requested to launch a name owner for the name.
+ * Builds a lookup-cache to speed up
+ * g_dbus_interface_info_lookup_method(),
+ * g_dbus_interface_info_lookup_signal() and
+ * g_dbus_interface_info_lookup_property().
  *
- * This is a synchronous failable constructor. See g_dbus_proxy_new()
- * and g_dbus_proxy_new_finish() for the asynchronous version.
+ * If this has already been called with @info, the existing cache is
+ * used and its use count is increased.
  *
- * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
+ * Note that @info cannot be modified until
+ * g_dbus_interface_info_cache_release() is called.
  *
- * Returns: (transfer full): A #GDBusProxy or %NULL if error is set.
- *    Free with g_object_unref().
- * Since: 2.26
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_proxy_set_cached_property:
- * @proxy: A #GDBusProxy
- * @property_name: Property name.
- * @value: (nullable): Value for the property or %NULL to remove it from the cache.
- *
- * If @value is not %NULL, sets the cached value for the property with
- * name @property_name to the value in @value.
- *
- * If @value is %NULL, then the cached value is removed from the
- * property cache.
+ * g_dbus_interface_info_cache_release:
+ * @info: A GDBusInterfaceInfo
  *
- * If @proxy has an expected interface (see
- * #GDBusProxy:g-interface-info) and @property_name is referenced by
- * it, then @value is checked against the type of the property.
+ * Decrements the usage count for the cache for @info built by
+ * g_dbus_interface_info_cache_build() (if any) and frees the
+ * resources used by the cache if the usage count drops to zero.
  *
- * If the @value #GVariant is floating, it is consumed. This allows
- * convenient 'inline' use of g_variant_new(), e.g.
- * |[<!-- language="C" -->
- *  g_dbus_proxy_set_cached_property (proxy,
- *                                    "SomeProperty",
- *                                    g_variant_new ("(si)",
- *                                                  "A String",
- *                                                  42));
- * ]|
+ * Since: 2.30
+ */
+
+
+/**
+ * g_dbus_interface_info_generate_xml:
+ * @info: A #GDBusNodeInfo
+ * @indent: Indentation level.
+ * @string_builder: A #GString to to append XML data to.
  *
- * Normally you will not need to use this method since @proxy
- * is tracking changes using the
- * `org.freedesktop.DBus.Properties.PropertiesChanged`
- * D-Bus signal. However, for performance reasons an object may
- * decide to not use this signal for some properties and instead
- * use a proprietary out-of-band mechanism to transmit changes.
+ * Appends an XML representation of @info (and its children) to @string_builder.
  *
- * As a concrete example, consider an object with a property
- * `ChatroomParticipants` which is an array of strings. Instead of
- * transmitting the same (long) array every time the property changes,
- * it is more efficient to only transmit the delta using e.g. signals
- * `ChatroomParticipantJoined(String name)` and
- * `ChatroomParticipantParted(String name)`.
+ * This function is typically used for generating introspection XML
+ * documents at run-time for handling the
+ * `org.freedesktop.DBus.Introspectable.Introspect`
+ * method.
  *
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_set_default_timeout:
- * @proxy: A #GDBusProxy.
- * @timeout_msec: Timeout in milliseconds.
+ * g_dbus_interface_info_lookup_method:
+ * @info: A #GDBusInterfaceInfo.
+ * @name: A D-Bus method name (typically in CamelCase)
  *
- * Sets the timeout to use if -1 (specifying default timeout) is
- * passed as @timeout_msec in the g_dbus_proxy_call() and
- * g_dbus_proxy_call_sync() functions.
+ * Looks up information about a method.
  *
- * See the #GDBusProxy:g-default-timeout property for more details.
+ * The cost of this function is O(n) in number of methods unless
+ * g_dbus_interface_info_cache_build() has been used on @info.
  *
+ * Returns: (transfer none): A #GDBusMethodInfo or %NULL if not found. Do not free, it is owned by @info.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_proxy_set_interface_info:
- * @proxy: A #GDBusProxy
- * @info: (transfer none) (nullable): Minimum interface this proxy conforms to
- *    or %NULL to unset.
+ * g_dbus_interface_info_lookup_property:
+ * @info: A #GDBusInterfaceInfo.
+ * @name: A D-Bus property name (typically in CamelCase).
  *
- * Ensure that interactions with @proxy conform to the given
- * interface. See the #GDBusProxy:g-interface-info property for more
- * details.
+ * Looks up information about a property.
+ *
+ * The cost of this function is O(n) in number of properties unless
+ * g_dbus_interface_info_cache_build() has been used on @info.
  *
+ * Returns: (transfer none): A #GDBusPropertyInfo or %NULL if not found. Do not free, it is owned by @info.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_server_get_client_address:
- * @server: A #GDBusServer.
+ * g_dbus_interface_info_lookup_signal:
+ * @info: A #GDBusInterfaceInfo.
+ * @name: A D-Bus signal name (typically in CamelCase)
  *
- * Gets a
- * [D-Bus address](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses)
- * string that can be used by clients to connect to @server.
+ * Looks up information about a signal.
  *
- * Returns: A D-Bus address string. Do not free, the string is owned
- * by @server.
+ * The cost of this function is O(n) in number of signals unless
+ * g_dbus_interface_info_cache_build() has been used on @info.
+ *
+ * Returns: (transfer none): A #GDBusSignalInfo or %NULL if not found. Do not free, it is owned by @info.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_server_get_flags:
- * @server: A #GDBusServer.
+ * g_dbus_interface_info_ref:
+ * @info: A #GDBusInterfaceInfo
  *
- * Gets the flags for @server.
+ * If @info is statically allocated does nothing. Otherwise increases
+ * the reference count.
  *
- * Returns: A set of flags from the #GDBusServerFlags enumeration.
+ * Returns: The same @info.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_server_get_guid:
- * @server: A #GDBusServer.
+ * g_dbus_interface_info_unref:
+ * @info: A #GDBusInterfaceInfo.
  *
- * Gets the GUID for @server.
+ * If @info is statically allocated, does nothing. Otherwise decreases
+ * the reference count of @info. When its reference count drops to 0,
+ * the memory used is freed.
  *
- * Returns: A D-Bus GUID. Do not free this string, it is owned by @server.
  * Since: 2.26
  */
 
 
 /**
- * g_dbus_server_is_active:
- * @server: A #GDBusServer.
+ * g_dbus_interface_set_object:
+ * @interface_: An exported D-Bus interface.
+ * @object: (nullable): A #GDBusObject or %NULL.
  *
- * Gets whether @server is active.
+ * Sets the #GDBusObject for @interface_ to @object.
  *
- * Returns: %TRUE if server is active, %FALSE otherwise.
- * Since: 2.26
+ * Note that @interface_ will hold a weak reference to @object.
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_server_new_sync:
- * @address: A D-Bus address.
- * @flags: Flags from the #GDBusServerFlags enumeration.
- * @guid: A D-Bus GUID.
- * @observer: (nullable): A #GDBusAuthObserver or %NULL.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for server or %NULL.
+ * g_dbus_interface_skeleton_export:
+ * @interface_: The D-Bus interface to export.
+ * @connection: A #GDBusConnection to export @interface_ on.
+ * @object_path: The path to export the interface at.
+ * @error: Return location for error or %NULL.
  *
- * Creates a new D-Bus server that listens on the first address in
- * @address that works.
+ * Exports @interface_ at @object_path on @connection.
  *
- * Once constructed, you can use g_dbus_server_get_client_address() to
- * get a D-Bus address string that clients can use to connect.
+ * This can be called multiple times to export the same @interface_
+ * onto multiple connections however the @object_path provided must be
+ * the same for all connections.
  *
- * Connect to the #GDBusServer::new-connection signal to handle
- * incoming connections.
+ * Use g_dbus_interface_skeleton_unexport() to unexport the object.
  *
- * The returned #GDBusServer isn't active - you have to start it with
- * g_dbus_server_start().
+ * Returns: %TRUE if the interface was exported on @connection, otherwise %FALSE with
+ * @error set.
+ * Since: 2.30
+ */
+
+
+/**
+ * g_dbus_interface_skeleton_flush:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * #GDBusServer is used in this [example][gdbus-peer-to-peer].
+ * If @interface_ has outstanding changes, request for these changes to be
+ * emitted immediately.
  *
- * This is a synchronous failable constructor. See
- * g_dbus_server_new() for the asynchronous version.
+ * For example, an exported D-Bus interface may queue up property
+ * changes and emit the
+ * `org.freedesktop.DBus.Properties.PropertiesChanged`
+ * signal later (e.g. in an idle handler). This technique is useful
+ * for collapsing multiple property changes into one.
  *
- * Returns: A #GDBusServer or %NULL if @error is set. Free with
- * g_object_unref().
- * Since: 2.26
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_server_start:
- * @server: A #GDBusServer.
+ * g_dbus_interface_skeleton_get_connection:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * Starts @server.
+ * Gets the first connection that @interface_ is exported on, if any.
  *
- * Since: 2.26
+ * Returns: (transfer none): A #GDBusConnection or %NULL if @interface_ is
+ * not exported anywhere. Do not free, the object belongs to @interface_.
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_server_stop:
- * @server: A #GDBusServer.
+ * g_dbus_interface_skeleton_get_connections:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * Stops @server.
+ * Gets a list of the connections that @interface_ is exported on.
  *
- * Since: 2.26
+ * Returns: (element-type GDBusConnection) (transfer full): A list of
+ *   all the connections that @interface_ is exported on. The returned
+ *   list should be freed with g_list_free() after each element has
+ *   been freed with g_object_unref().
+ * Since: 2.32
  */
 
 
 /**
- * g_dbus_signal_info_ref:
- * @info: A #GDBusSignalInfo
+ * g_dbus_interface_skeleton_get_flags:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * If @info is statically allocated does nothing. Otherwise increases
- * the reference count.
+ * Gets the #GDBusInterfaceSkeletonFlags that describes what the behavior
+ * of @interface_
  *
- * Returns: The same @info.
- * Since: 2.26
+ * Returns: One or more flags from the #GDBusInterfaceSkeletonFlags enumeration.
+ * Since: 2.30
  */
 
 
 /**
- * g_dbus_signal_info_unref:
- * @info: A #GDBusSignalInfo.
+ * g_dbus_interface_skeleton_get_info:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * If @info is statically allocated, does nothing. Otherwise decreases
- * the reference count of @info. When its reference count drops to 0,
- * the memory used is freed.
+ * Gets D-Bus introspection information for the D-Bus interface
+ * implemented by @interface_.
  *
- * Since: 2.26
+ * Returns: (transfer none): A #GDBusInterfaceInfo (never %NULL). Do not free.
+ * Since: 2.30
  */
 
 
 /**
- * g_desktop_app_info_get_action_name:
- * @info: a #GDesktopAppInfo
- * @action_name: the name of the action as from
- *   g_desktop_app_info_list_actions()
- *
- * Gets the user-visible display name of the "additional application
- * action" specified by @action_name.
+ * g_dbus_interface_skeleton_get_object_path:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * This corresponds to the "Name" key within the keyfile group for the
- * action.
+ * Gets the object path that @interface_ is exported on, if any.
  *
- * Returns: (transfer full): the locale-specific action name
- * Since: 2.38
+ * Returns: A string owned by @interface_ or %NULL if @interface_ is not exported
+ * anywhere. Do not free, the string belongs to @interface_.
+ * Since: 2.30
  */
 
 
 /**
- * g_desktop_app_info_get_boolean:
- * @info: a #GDesktopAppInfo
- * @key: the key to look up
- *
- * Looks up a boolean value in the keyfile backing @info.
+ * g_dbus_interface_skeleton_get_properties:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * The @key is looked up in the "Desktop Entry" group.
+ * Gets all D-Bus properties for @interface_.
  *
- * Returns: the boolean value, or %FALSE if the key
- *     is not found
- * Since: 2.36
+ * Returns: (transfer full): A #GVariant of type
+ * ['a{sv}'][G-VARIANT-TYPE-VARDICT:CAPS].
+ * Free with g_variant_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_desktop_app_info_get_categories:
- * @info: a #GDesktopAppInfo
+ * g_dbus_interface_skeleton_get_vtable: (skip)
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * Gets the categories from the desktop file.
+ * Gets the interface vtable for the D-Bus interface implemented by
+ * @interface_. The returned function pointers should expect @interface_
+ * itself to be passed as @user_data.
  *
- * Returns: The unparsed Categories key from the desktop file;
- *     i.e. no attempt is made to split it by ';' or validate it.
+ * Returns: A #GDBusInterfaceVTable (never %NULL).
+ * Since: 2.30
  */
 
 
 /**
- * g_desktop_app_info_get_filename:
- * @info: a #GDesktopAppInfo
+ * g_dbus_interface_skeleton_has_connection:
+ * @interface_: A #GDBusInterfaceSkeleton.
+ * @connection: A #GDBusConnection.
  *
- * When @info was created from a known filename, return it.  In some
- * situations such as the #GDesktopAppInfo returned from
- * g_desktop_app_info_new_from_keyfile(), this function will return %NULL.
+ * Checks if @interface_ is exported on @connection.
  *
- * Returns: (type filename): The full path to the file for @info,
- *     or %NULL if not known.
- * Since: 2.24
+ * Returns: %TRUE if @interface_ is exported on @connection, %FALSE otherwise.
+ * Since: 2.32
  */
 
 
 /**
- * g_desktop_app_info_get_generic_name:
- * @info: a #GDesktopAppInfo
+ * g_dbus_interface_skeleton_set_flags:
+ * @interface_: A #GDBusInterfaceSkeleton.
+ * @flags: Flags from the #GDBusInterfaceSkeletonFlags enumeration.
  *
- * Gets the generic name from the destkop file.
+ * Sets flags describing what the behavior of @skeleton should be.
  *
- * Returns: The value of the GenericName key
+ * Since: 2.30
  */
 
 
 /**
- * g_desktop_app_info_get_implementations:
- * @interface: the name of the interface
+ * g_dbus_interface_skeleton_unexport:
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * Gets all applications that implement @interface.
+ * Stops exporting @interface_ on all connections it is exported on.
  *
- * An application implements an interface if that interface is listed in
- * the Implements= line of the desktop file of the application.
+ * To unexport @interface_ from only a single connection, use
+ * g_dbus_interface_skeleton_unexport_from_connection()
  *
- * Returns: (element-type GDesktopAppInfo) (transfer full): a list of #GDesktopAppInfo
- * objects.
- * Since: 2.42
+ * Since: 2.30
  */
 
 
 /**
- * g_desktop_app_info_get_is_hidden:
- * @info: a #GDesktopAppInfo.
+ * g_dbus_interface_skeleton_unexport_from_connection:
+ * @interface_: A #GDBusInterfaceSkeleton.
+ * @connection: A #GDBusConnection.
  *
- * A desktop file is hidden if the Hidden key in it is
- * set to True.
+ * Stops exporting @interface_ on @connection.
  *
- * Returns: %TRUE if hidden, %FALSE otherwise.
+ * To stop exporting on all connections the interface is exported on,
+ * use g_dbus_interface_skeleton_unexport().
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_desktop_app_info_get_keywords:
- * @info: a #GDesktopAppInfo
+ * g_dbus_is_address:
+ * @string: A string.
  *
- * Gets the keywords from the desktop file.
+ * Checks if @string is a
+ * [D-Bus address](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
  *
- * Returns: (transfer none): The value of the Keywords key
- * Since: 2.32
+ * This doesn't check if @string is actually supported by #GDBusServer
+ * or #GDBusConnection - use g_dbus_is_supported_address() to do more
+ * checks.
+ *
+ * Returns: %TRUE if @string is a valid D-Bus address, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_get_locale_string:
- * @info: a #GDesktopAppInfo
- * @key: the key to look up
+ * g_dbus_is_guid:
+ * @string: The string to check.
  *
- * Looks up a localized string value in the keyfile backing @info
- * translated to the current locale.
+ * Checks if @string is a D-Bus GUID.
  *
- * The @key is looked up in the "Desktop Entry" group.
+ * See the D-Bus specification regarding what strings are valid D-Bus
+ * GUID (for example, D-Bus GUIDs are not RFC-4122 compliant).
  *
- * Returns: (nullable): a newly allocated string, or %NULL if the key
- *     is not found
- * Since: 2.56
+ * Returns: %TRUE if @string is a guid, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_get_nodisplay:
- * @info: a #GDesktopAppInfo
+ * g_dbus_is_interface_name:
+ * @string: The string to check.
  *
- * Gets the value of the NoDisplay key, which helps determine if the
- * application info should be shown in menus. See
- * #G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY and g_app_info_should_show().
+ * Checks if @string is a valid D-Bus interface name.
  *
- * Returns: The value of the NoDisplay key
- * Since: 2.30
+ * Returns: %TRUE if valid, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_get_show_in:
- * @info: a #GDesktopAppInfo
- * @desktop_env: (nullable): a string specifying a desktop name
+ * g_dbus_is_member_name:
+ * @string: The string to check.
  *
- * Checks if the application info should be shown in menus that list available
- * applications for a specific name of the desktop, based on the
- * `OnlyShowIn` and `NotShowIn` keys.
+ * Checks if @string is a valid D-Bus member (e.g. signal or method) name.
  *
- * @desktop_env should typically be given as %NULL, in which case the
- * `XDG_CURRENT_DESKTOP` environment variable is consulted.  If you want
- * to override the default mechanism then you may specify @desktop_env,
- * but this is not recommended.
+ * Returns: %TRUE if valid, %FALSE otherwise.
+ * Since: 2.26
+ */
+
+
+/**
+ * g_dbus_is_name:
+ * @string: The string to check.
  *
- * Note that g_app_info_should_show() for @info will include this check (with
- * %NULL for @desktop_env) as well as additional checks.
+ * Checks if @string is a valid D-Bus bus name (either unique or well-known).
  *
- * Returns: %TRUE if the @info should be shown in @desktop_env according to the
- * `OnlyShowIn` and `NotShowIn` keys, %FALSE
- * otherwise.
- * Since: 2.30
+ * Returns: %TRUE if valid, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_get_startup_wm_class:
- * @info: a #GDesktopAppInfo that supports startup notify
+ * g_dbus_is_supported_address:
+ * @string: A string.
+ * @error: Return location for error or %NULL.
  *
- * Retrieves the StartupWMClass field from @info. This represents the
- * WM_CLASS property of the main window of the application, if launched
- * through @info.
+ * Like g_dbus_is_address() but also checks if the library supports the
+ * transports in @string and that key/value pairs for each transport
+ * are valid. See the specification of the
+ * [D-Bus address format](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses).
  *
- * Returns: (transfer none): the startup WM class, or %NULL if none is set
- * in the desktop file.
- * Since: 2.34
+ * Returns: %TRUE if @string is a valid D-Bus address that is
+ * supported by this library, %FALSE if @error is set.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_get_string:
- * @info: a #GDesktopAppInfo
- * @key: the key to look up
+ * g_dbus_is_unique_name:
+ * @string: The string to check.
  *
- * Looks up a string value in the keyfile backing @info.
+ * Checks if @string is a valid D-Bus unique bus name.
  *
- * The @key is looked up in the "Desktop Entry" group.
+ * Returns: %TRUE if valid, %FALSE otherwise.
+ * Since: 2.26
+ */
+
+
+/**
+ * g_dbus_menu_model_get:
+ * @connection: a #GDBusConnection
+ * @bus_name: (nullable): the bus name which exports the menu model
+ *     or %NULL if @connection is not a message bus connection
+ * @object_path: the object path at which the menu model is exported
  *
- * Returns: a newly allocated string, or %NULL if the key
- *     is not found
- * Since: 2.36
+ * Obtains a #GDBusMenuModel for the menu model which is exported
+ * at the given @bus_name and @object_path.
+ *
+ * The thread default main context is taken at the time of this call.
+ * All signals on the menu model (and any linked models) are reported
+ * with respect to this context.  All calls on the returned menu model
+ * (and linked models) must also originate from this same context, with
+ * the thread default main context unchanged.
+ *
+ * Returns: (transfer full): a #GDBusMenuModel object. Free with
+ *     g_object_unref().
+ * Since: 2.32
  */
 
 
 /**
- * g_desktop_app_info_has_key:
- * @info: a #GDesktopAppInfo
- * @key: the key to look up
+ * g_dbus_message_bytes_needed:
+ * @blob: (array length=blob_len) (element-type guint8): A blob represent a binary D-Bus message.
+ * @blob_len: The length of @blob (must be at least 16).
+ * @error: Return location for error or %NULL.
  *
- * Returns whether @key exists in the "Desktop Entry" group
- * of the keyfile backing @info.
+ * Utility function to calculate how many bytes are needed to
+ * completely deserialize the D-Bus message stored at @blob.
  *
- * Returns: %TRUE if the @key exists
- * Since: 2.36
+ * Returns: Number of bytes needed or -1 if @error is set (e.g. if
+ * @blob contains invalid data or not enough data is available to
+ * determine the size).
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_launch_action:
- * @info: a #GDesktopAppInfo
- * @action_name: the name of the action as from
- *   g_desktop_app_info_list_actions()
- * @launch_context: (nullable): a #GAppLaunchContext
+ * g_dbus_message_copy:
+ * @message: A #GDBusMessage.
+ * @error: Return location for error or %NULL.
  *
- * Activates the named application action.
+ * Copies @message. The copy is a deep copy and the returned
+ * #GDBusMessage is completely identical except that it is guaranteed
+ * to not be locked.
  *
- * You may only call this function on action names that were
- * returned from g_desktop_app_info_list_actions().
+ * This operation can fail if e.g. @message contains file descriptors
+ * and the per-process or system-wide open files limit is reached.
  *
- * Note that if the main entry of the desktop file indicates that the
- * application supports startup notification, and @launch_context is
- * non-%NULL, then startup notification will be used when activating the
- * action (and as such, invocation of the action on the receiving side
- * must signal the end of startup notification when it is completed).
- * This is the expected behaviour of applications declaring additional
- * actions, as per the desktop file specification.
+ * Returns: (transfer full): A new #GDBusMessage or %NULL if @error is set.
+ *     Free with g_object_unref().
+ * Since: 2.26
+ */
+
+
+/**
+ * g_dbus_message_get_arg0:
+ * @message: A #GDBusMessage.
+ *
+ * Convenience to get the first item in the body of @message.
+ *
+ * Returns: The string item or %NULL if the first item in the body of
+ * @message is not a string.
+ * Since: 2.26
+ */
+
+
+/**
+ * g_dbus_message_get_body:
+ * @message: A #GDBusMessage.
  *
- * As with g_app_info_launch() there is no way to detect failures that
- * occur while using this function.
+ * Gets the body of a message.
  *
- * Since: 2.38
+ * Returns: (transfer none): A #GVariant or %NULL if the body is
+ * empty. Do not free, it is owned by @message.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_launch_uris_as_manager:
- * @appinfo: a #GDesktopAppInfo
- * @uris: (element-type utf8): List of URIs
- * @launch_context: (nullable): a #GAppLaunchContext
- * @spawn_flags: #GSpawnFlags, used for each process
- * @user_setup: (scope async) (nullable): a #GSpawnChildSetupFunc, used once
- *     for each process.
- * @user_setup_data: (closure user_setup) (nullable): User data for @user_setup
- * @pid_callback: (scope call) (nullable): Callback for child processes
- * @pid_callback_data: (closure pid_callback) (nullable): User data for @callback
- * @error: return location for a #GError, or %NULL
+ * g_dbus_message_get_byte_order:
+ * @message: A #GDBusMessage.
  *
- * This function performs the equivalent of g_app_info_launch_uris(),
- * but is intended primarily for operating system components that
- * launch applications.  Ordinary applications should use
- * g_app_info_launch_uris().
+ * Gets the byte order of @message.
  *
- * If the application is launched via GSpawn, then @spawn_flags, @user_setup
- * and @user_setup_data are used for the call to g_spawn_async().
- * Additionally, @pid_callback (with @pid_callback_data) will be called to
- * inform about the PID of the created process. See g_spawn_async_with_pipes()
- * for information on certain parameter conditions that can enable an
- * optimized posix_spawn() codepath to be used.
+ * Returns: The byte order.
+ */
+
+
+/**
+ * g_dbus_message_get_destination:
+ * @message: A #GDBusMessage.
  *
- * If application launching occurs via some other mechanism (eg: D-Bus
- * activation) then @spawn_flags, @user_setup, @user_setup_data,
- * @pid_callback and @pid_callback_data are ignored.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.
  *
- * Returns: %TRUE on successful launch, %FALSE otherwise.
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_launch_uris_as_manager_with_fds:
- * @appinfo: a #GDesktopAppInfo
- * @uris: (element-type utf8): List of URIs
- * @launch_context: (nullable): a #GAppLaunchContext
- * @spawn_flags: #GSpawnFlags, used for each process
- * @user_setup: (scope async) (nullable): a #GSpawnChildSetupFunc, used once
- *     for each process.
- * @user_setup_data: (closure user_setup) (nullable): User data for @user_setup
- * @pid_callback: (scope call) (nullable): Callback for child processes
- * @pid_callback_data: (closure pid_callback) (nullable): User data for @callback
- * @stdin_fd: file descriptor to use for child's stdin, or -1
- * @stdout_fd: file descriptor to use for child's stdout, or -1
- * @stderr_fd: file descriptor to use for child's stderr, or -1
- * @error: return location for a #GError, or %NULL
- *
- * Equivalent to g_desktop_app_info_launch_uris_as_manager() but allows
- * you to pass in file descriptors for the stdin, stdout and stderr streams
- * of the launched process.
+ * g_dbus_message_get_error_name:
+ * @message: A #GDBusMessage.
  *
- * If application launching occurs via some non-spawn mechanism (e.g. D-Bus
- * activation) then @stdin_fd, @stdout_fd and @stderr_fd are ignored.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.
  *
- * Returns: %TRUE on successful launch, %FALSE otherwise.
- * Since: 2.58
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_list_actions:
- * @info: a #GDesktopAppInfo
- *
- * Returns the list of "additional application actions" supported on the
- * desktop file, as per the desktop file specification.
+ * g_dbus_message_get_flags:
+ * @message: A #GDBusMessage.
  *
- * As per the specification, this is the list of actions that are
- * explicitly listed in the "Actions" key of the [Desktop Entry] group.
+ * Gets the flags for @message.
  *
- * Returns: (array zero-terminated=1) (element-type utf8) (transfer none): a list of strings, always non-%NULL
- * Since: 2.38
+ * Returns: Flags that are set (typically values from the #GDBusMessageFlags enumeration bitwise ORed together).
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_lookup_get_default_for_uri_scheme:
- * @lookup: a #GDesktopAppInfoLookup
- * @uri_scheme: a string containing a URI scheme.
- *
- * Gets the default application for launching applications
- * using this URI scheme for a particular GDesktopAppInfoLookup
- * implementation.
+ * g_dbus_message_get_header:
+ * @message: A #GDBusMessage.
+ * @header_field: A 8-bit unsigned integer (typically a value from the #GDBusMessageHeaderField enumeration)
  *
- * The GDesktopAppInfoLookup interface and this function is used
- * to implement g_app_info_get_default_for_uri_scheme() backends
- * in a GIO module. There is no reason for applications to use it
- * directly. Applications should use g_app_info_get_default_for_uri_scheme().
+ * Gets a header field on @message.
  *
- * Returns: (transfer full): #GAppInfo for given @uri_scheme or %NULL on error.
- * Deprecated: The #GDesktopAppInfoLookup interface is deprecated and unused by gio.
+ * Returns: A #GVariant with the value if the header was found, %NULL
+ * otherwise. Do not free, it is owned by @message.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_new:
- * @desktop_id: the desktop file id
- *
- * Creates a new #GDesktopAppInfo based on a desktop file id.
+ * g_dbus_message_get_header_fields:
+ * @message: A #GDBusMessage.
  *
- * A desktop file id is the basename of the desktop file, including the
- * .desktop extension. GIO is looking for a desktop file with this name
- * in the `applications` subdirectories of the XDG
- * data directories (i.e. the directories specified in the `XDG_DATA_HOME`
- * and `XDG_DATA_DIRS` environment variables). GIO also supports the
- * prefix-to-subdirectory mapping that is described in the
- * [Menu Spec](http://standards.freedesktop.org/menu-spec/latest/)
- * (i.e. a desktop id of kde-foo.desktop will match
- * `/usr/share/applications/kde/foo.desktop`).
+ * Gets an array of all header fields on @message that are set.
  *
- * Returns: (nullable): a new #GDesktopAppInfo, or %NULL if no desktop
- *     file with that id exists.
+ * Returns: (array zero-terminated=1): An array of header fields
+ * terminated by %G_DBUS_MESSAGE_HEADER_FIELD_INVALID.  Each element
+ * is a #guchar. Free with g_free().
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_new_from_filename:
- * @filename: (type filename): the path of a desktop file, in the GLib
- *      filename encoding
+ * g_dbus_message_get_interface:
+ * @message: A #GDBusMessage.
  *
- * Creates a new #GDesktopAppInfo.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.
  *
- * Returns: (nullable): a new #GDesktopAppInfo or %NULL on error.
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_new_from_keyfile:
- * @key_file: an opened #GKeyFile
+ * g_dbus_message_get_locked:
+ * @message: A #GDBusMessage.
  *
- * Creates a new #GDesktopAppInfo.
+ * Checks whether @message is locked. To monitor changes to this
+ * value, conncet to the #GObject::notify signal to listen for changes
+ * on the #GDBusMessage:locked property.
  *
- * Returns: (nullable): a new #GDesktopAppInfo or %NULL on error.
- * Since: 2.18
+ * Returns: %TRUE if @message is locked, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_search:
- * @search_string: the search string to use
- *
- * Searches desktop files for ones that match @search_string.
+ * g_dbus_message_get_member:
+ * @message: A #GDBusMessage.
  *
- * The return value is an array of strvs.  Each strv contains a list of
- * applications that matched @search_string with an equal score.  The
- * outer list is sorted by score so that the first strv contains the
- * best-matching applications, and so on.
- * The algorithm for determining matches is undefined and may change at
- * any time.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.
  *
- * Returns: (array zero-terminated=1) (element-type GStrv) (transfer full): a
- *   list of strvs.  Free each item with g_strfreev() and free the outer
- *   list with g_free().
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_desktop_app_info_set_desktop_env:
- * @desktop_env: a string specifying what desktop this is
- *
- * Sets the name of the desktop that the application is running in.
- * This is used by g_app_info_should_show() and
- * g_desktop_app_info_get_show_in() to evaluate the
- * `OnlyShowIn` and `NotShowIn`
- * desktop entry fields.
+ * g_dbus_message_get_message_type:
+ * @message: A #GDBusMessage.
  *
- * Should be called only once; subsequent calls are ignored.
+ * Gets the type of @message.
  *
- * Deprecated: 2.42: do not use this API.  Since 2.42 the value of the
- * `XDG_CURRENT_DESKTOP` environment variable will be used.
+ * Returns: A 8-bit unsigned integer (typically a value from the #GDBusMessageType enumeration).
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_can_eject:
- * @drive: a #GDrive.
+ * g_dbus_message_get_num_unix_fds:
+ * @message: A #GDBusMessage.
  *
- * Checks if a drive can be ejected.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.
  *
- * Returns: %TRUE if the @drive can be ejected, %FALSE otherwise.
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_can_poll_for_media:
- * @drive: a #GDrive.
+ * g_dbus_message_get_path:
+ * @message: A #GDBusMessage.
  *
- * Checks if a drive can be polled for media changes.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.
  *
- * Returns: %TRUE if the @drive can be polled for media changes,
- *     %FALSE otherwise.
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_can_start:
- * @drive: a #GDrive.
+ * g_dbus_message_get_reply_serial:
+ * @message: A #GDBusMessage.
  *
- * Checks if a drive can be started.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.
  *
- * Returns: %TRUE if the @drive can be started, %FALSE otherwise.
- * Since: 2.22
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_can_start_degraded:
- * @drive: a #GDrive.
+ * g_dbus_message_get_sender:
+ * @message: A #GDBusMessage.
  *
- * Checks if a drive can be started degraded.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.
  *
- * Returns: %TRUE if the @drive can be started degraded, %FALSE otherwise.
- * Since: 2.22
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_can_stop:
- * @drive: a #GDrive.
+ * g_dbus_message_get_serial:
+ * @message: A #GDBusMessage.
  *
- * Checks if a drive can be stopped.
+ * Gets the serial for @message.
  *
- * Returns: %TRUE if the @drive can be stopped, %FALSE otherwise.
- * Since: 2.22
+ * Returns: A #guint32.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_eject:
- * @drive: a #GDrive.
- * @flags: flags affecting the unmount if required for eject
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data to pass to @callback
- *
- * Asynchronously ejects a drive.
+ * g_dbus_message_get_signature:
+ * @message: A #GDBusMessage.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_drive_eject_finish() to obtain the
- * result of the operation.
+ * Convenience getter for the %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.
  *
- * Deprecated: 2.22: Use g_drive_eject_with_operation() instead.
+ * Returns: The value.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_eject_finish:
- * @drive: a #GDrive.
- * @result: a #GAsyncResult.
- * @error: a #GError, or %NULL
+ * g_dbus_message_get_unix_fd_list:
+ * @message: A #GDBusMessage.
  *
- * Finishes ejecting a drive.
+ * Gets the UNIX file descriptors associated with @message, if any.
  *
- * Returns: %TRUE if the drive has been ejected successfully,
- *     %FALSE otherwise.
- * Deprecated: 2.22: Use g_drive_eject_with_operation_finish() instead.
+ * This method is only available on UNIX.
+ *
+ * Returns: (transfer none): A #GUnixFDList or %NULL if no file descriptors are
+ * associated. Do not free, this object is owned by @message.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_eject_with_operation:
- * @drive: a #GDrive.
- * @flags: flags affecting the unmount if required for eject
- * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
- *     user interaction.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data passed to @callback.
+ * g_dbus_message_lock:
+ * @message: A #GDBusMessage.
  *
- * Ejects a drive. This is an asynchronous operation, and is
- * finished by calling g_drive_eject_with_operation_finish() with the @drive
- * and #GAsyncResult data returned in the @callback.
+ * If @message is locked, does nothing. Otherwise locks the message.
  *
- * Since: 2.22
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_eject_with_operation_finish:
- * @drive: a #GDrive.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ * g_dbus_message_new:
  *
- * Finishes ejecting a drive. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Creates a new empty #GDBusMessage.
  *
- * Returns: %TRUE if the drive was successfully ejected. %FALSE otherwise.
- * Since: 2.22
+ * Returns: A #GDBusMessage. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_enumerate_identifiers:
- * @drive: a #GDrive
+ * g_dbus_message_new_from_blob:
+ * @blob: (array length=blob_len) (element-type guint8): A blob representing a binary D-Bus message.
+ * @blob_len: The length of @blob.
+ * @capabilities: A #GDBusCapabilityFlags describing what protocol features are supported.
+ * @error: Return location for error or %NULL.
  *
- * Gets the kinds of identifiers that @drive has.
- * Use g_drive_get_identifier() to obtain the identifiers
- * themselves.
+ * Creates a new #GDBusMessage from the data stored at @blob. The byte
+ * order that the message was in can be retrieved using
+ * g_dbus_message_get_byte_order().
  *
- * Returns: (transfer full) (array zero-terminated=1): a %NULL-terminated
- *     array of strings containing kinds of identifiers. Use g_strfreev()
- *     to free.
+ * Returns: A new #GDBusMessage or %NULL if @error is set. Free with
+ * g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_get_icon:
- * @drive: a #GDrive.
+ * g_dbus_message_new_method_call:
+ * @name: (nullable): A valid D-Bus name or %NULL.
+ * @path: A valid object path.
+ * @interface_: (nullable): A valid D-Bus interface name or %NULL.
+ * @method: A valid method name.
  *
- * Gets the icon for @drive.
+ * Creates a new #GDBusMessage for a method call.
  *
- * Returns: (transfer full): #GIcon for the @drive.
- *    Free the returned object with g_object_unref().
+ * Returns: A #GDBusMessage. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_get_identifier:
- * @drive: a #GDrive
- * @kind: the kind of identifier to return
+ * g_dbus_message_new_method_error:
+ * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
+ * create a reply message to.
+ * @error_name: A valid D-Bus error name.
+ * @error_message_format: The D-Bus error message in a printf() format.
+ * @...: Arguments for @error_message_format.
  *
- * Gets the identifier of the given kind for @drive. The only
- * identifier currently available is
- * #G_DRIVE_IDENTIFIER_KIND_UNIX_DEVICE.
+ * Creates a new #GDBusMessage that is an error reply to @method_call_message.
  *
- * Returns: (nullable) (transfer full): a newly allocated string containing the
- *     requested identifier, or %NULL if the #GDrive
- *     doesn't have this kind of identifier.
+ * Returns: (transfer full): A #GDBusMessage. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_get_name:
- * @drive: a #GDrive.
+ * g_dbus_message_new_method_error_literal:
+ * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
+ * create a reply message to.
+ * @error_name: A valid D-Bus error name.
+ * @error_message: The D-Bus error message.
  *
- * Gets the name of @drive.
+ * Creates a new #GDBusMessage that is an error reply to @method_call_message.
  *
- * Returns: a string containing @drive's name. The returned
- *     string should be freed when no longer needed.
+ * Returns: (transfer full): A #GDBusMessage. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_get_sort_key:
- * @drive: A #GDrive.
+ * g_dbus_message_new_method_error_valist:
+ * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
+ * create a reply message to.
+ * @error_name: A valid D-Bus error name.
+ * @error_message_format: The D-Bus error message in a printf() format.
+ * @var_args: Arguments for @error_message_format.
  *
- * Gets the sort key for @drive, if any.
+ * Like g_dbus_message_new_method_error() but intended for language bindings.
  *
- * Returns: (nullable): Sorting key for @drive or %NULL if no such key is available.
- * Since: 2.32
+ * Returns: (transfer full): A #GDBusMessage. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_get_start_stop_type:
- * @drive: a #GDrive.
+ * g_dbus_message_new_method_reply:
+ * @method_call_message: A message of type %G_DBUS_MESSAGE_TYPE_METHOD_CALL to
+ * create a reply message to.
  *
- * Gets a hint about how a drive can be started/stopped.
+ * Creates a new #GDBusMessage that is a reply to @method_call_message.
  *
- * Returns: A value from the #GDriveStartStopType enumeration.
- * Since: 2.22
+ * Returns: (transfer full): #GDBusMessage. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_get_symbolic_icon:
- * @drive: a #GDrive.
+ * g_dbus_message_new_signal:
+ * @path: A valid object path.
+ * @interface_: A valid D-Bus interface name.
+ * @signal: A valid signal name.
  *
- * Gets the icon for @drive.
+ * Creates a new #GDBusMessage for a signal emission.
  *
- * Returns: (transfer full): symbolic #GIcon for the @drive.
- *    Free the returned object with g_object_unref().
- * Since: 2.34
+ * Returns: A #GDBusMessage. Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_get_volumes:
- * @drive: a #GDrive.
+ * g_dbus_message_print: (type method-return)
+ * @message: A #GDBusMessage.
+ * @indent: Indentation level.
  *
- * Get a list of mountable volumes for @drive.
+ * Produces a human-readable multi-line description of @message.
  *
- * The returned list should be freed with g_list_free(), after
- * its elements have been unreffed with g_object_unref().
+ * The contents of the description has no ABI guarantees, the contents
+ * and formatting is subject to change at any time. Typical output
+ * looks something like this:
+ * |[
+ * Flags:   none
+ * Version: 0
+ * Serial:  4
+ * Headers:
+ *   path -> objectpath '/org/gtk/GDBus/TestObject'
+ *   interface -> 'org.gtk.GDBus.TestInterface'
+ *   member -> 'GimmeStdout'
+ *   destination -> ':1.146'
+ * Body: ()
+ * UNIX File Descriptors:
+ *   (none)
+ * ]|
+ * or
+ * |[
+ * Flags:   no-reply-expected
+ * Version: 0
+ * Serial:  477
+ * Headers:
+ *   reply-serial -> uint32 4
+ *   destination -> ':1.159'
+ *   sender -> ':1.146'
+ *   num-unix-fds -> uint32 1
+ * Body: ()
+ * UNIX File Descriptors:
+ *   fd 12: dev=0:10,mode=020620,ino=5,uid=500,gid=5,rdev=136:2,size=0,atime=1273085037,mtime=1273085851,ctime=1272982635
+ * ]|
  *
- * Returns: (element-type GVolume) (transfer full): #GList containing any #GVolume objects on the given @drive.
+ * Returns: A string that should be freed with g_free().
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_has_media:
- * @drive: a #GDrive.
+ * g_dbus_message_set_body:
+ * @message: A #GDBusMessage.
+ * @body: Either %NULL or a #GVariant that is a tuple.
  *
- * Checks if the @drive has media. Note that the OS may not be polling
- * the drive for media changes; see g_drive_is_media_check_automatic()
- * for more details.
+ * Sets the body @message. As a side-effect the
+ * %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field is set to the
+ * type string of @body (or cleared if @body is %NULL).
  *
- * Returns: %TRUE if @drive has media, %FALSE otherwise.
+ * If @body is floating, @message assumes ownership of @body.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_has_volumes:
- * @drive: a #GDrive.
- *
- * Check if @drive has any mountable volumes.
+ * g_dbus_message_set_byte_order:
+ * @message: A #GDBusMessage.
+ * @byte_order: The byte order.
  *
- * Returns: %TRUE if the @drive contains volumes, %FALSE otherwise.
+ * Sets the byte order of @message.
  */
 
 
 /**
- * g_drive_is_media_check_automatic:
- * @drive: a #GDrive.
+ * g_dbus_message_set_destination:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * Checks if @drive is capabable of automatically detecting media changes.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_DESTINATION header field.
  *
- * Returns: %TRUE if the @drive is capabable of automatically detecting
- *     media changes, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_is_media_removable:
- * @drive: a #GDrive.
+ * g_dbus_message_set_error_name:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * Checks if the @drive supports removable media.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field.
  *
- * Returns: %TRUE if @drive supports removable media, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_is_removable:
- * @drive: a #GDrive.
+ * g_dbus_message_set_flags:
+ * @message: A #GDBusMessage.
+ * @flags: Flags for @message that are set (typically values from the #GDBusMessageFlags
+ * enumeration bitwise ORed together).
  *
- * Checks if the #GDrive and/or its media is considered removable by the user.
- * See g_drive_is_media_removable().
+ * Sets the flags to set on @message.
  *
- * Returns: %TRUE if @drive and/or its media is considered removable, %FALSE otherwise.
- * Since: 2.50
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_poll_for_media:
- * @drive: a #GDrive.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data to pass to @callback
+ * g_dbus_message_set_header:
+ * @message: A #GDBusMessage.
+ * @header_field: A 8-bit unsigned integer (typically a value from the #GDBusMessageHeaderField enumeration)
+ * @value: (nullable): A #GVariant to set the header field or %NULL to clear the header field.
  *
- * Asynchronously polls @drive to see if media has been inserted or removed.
+ * Sets a header field on @message.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_drive_poll_for_media_finish() to obtain the
- * result of the operation.
+ * If @value is floating, @message assumes ownership of @value.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_poll_for_media_finish:
- * @drive: a #GDrive.
- * @result: a #GAsyncResult.
- * @error: a #GError, or %NULL
+ * g_dbus_message_set_interface:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * Finishes an operation started with g_drive_poll_for_media() on a drive.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_INTERFACE header field.
  *
- * Returns: %TRUE if the drive has been poll_for_mediaed successfully,
- *     %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_start:
- * @drive: a #GDrive.
- * @flags: flags affecting the start operation.
- * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
- *     user interaction.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data to pass to @callback
- *
- * Asynchronously starts a drive.
+ * g_dbus_message_set_member:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_drive_start_finish() to obtain the
- * result of the operation.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_MEMBER header field.
  *
- * Since: 2.22
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_start_finish:
- * @drive: a #GDrive.
- * @result: a #GAsyncResult.
- * @error: a #GError, or %NULL
+ * g_dbus_message_set_message_type:
+ * @message: A #GDBusMessage.
+ * @type: A 8-bit unsigned integer (typically a value from the #GDBusMessageType enumeration).
  *
- * Finishes starting a drive.
+ * Sets @message to be of @type.
  *
- * Returns: %TRUE if the drive has been started successfully,
- *     %FALSE otherwise.
- * Since: 2.22
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_stop:
- * @drive: a #GDrive.
- * @flags: flags affecting the unmount if required for stopping.
- * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
- *     user interaction.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data to pass to @callback
- *
- * Asynchronously stops a drive.
+ * g_dbus_message_set_num_unix_fds:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_drive_stop_finish() to obtain the
- * result of the operation.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header field.
  *
- * Since: 2.22
+ * Since: 2.26
  */
 
 
 /**
- * g_drive_stop_finish:
- * @drive: a #GDrive.
- * @result: a #GAsyncResult.
- * @error: a #GError, or %NULL
+ * g_dbus_message_set_path:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * Finishes stopping a drive.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_PATH header field.
  *
- * Returns: %TRUE if the drive has been stopped successfully,
- *     %FALSE otherwise.
- * Since: 2.22
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_client_connection_get_accepted_cas:
- * @conn: the #GDtlsClientConnection
- *
- * Gets the list of distinguished names of the Certificate Authorities
- * that the server will accept certificates from. This will be set
- * during the TLS handshake if the server requests a certificate.
- * Otherwise, it will be %NULL.
+ * g_dbus_message_set_reply_serial:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * Each item in the list is a #GByteArray which contains the complete
- * subject DN of the certificate authority.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_REPLY_SERIAL header field.
  *
- * Returns: (element-type GByteArray) (transfer full): the list of
- * CA DNs. You should unref each element with g_byte_array_unref() and then
- * the free the list with g_list_free().
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_client_connection_get_server_identity:
- * @conn: the #GDtlsClientConnection
+ * g_dbus_message_set_sender:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * Gets @conn's expected server identity
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_SENDER header field.
  *
- * Returns: (transfer none): a #GSocketConnectable describing the
- * expected server identity, or %NULL if the expected identity is not
- * known.
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_client_connection_get_validation_flags:
- * @conn: the #GDtlsClientConnection
+ * g_dbus_message_set_serial:
+ * @message: A #GDBusMessage.
+ * @serial: A #guint32.
  *
- * Gets @conn's validation flags
+ * Sets the serial for @message.
  *
- * Returns: the validation flags
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_client_connection_new:
- * @base_socket: the #GDatagramBased to wrap
- * @server_identity: (nullable): the expected identity of the server
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_dbus_message_set_signature:
+ * @message: A #GDBusMessage.
+ * @value: The value to set.
  *
- * Creates a new #GDtlsClientConnection wrapping @base_socket which is
- * assumed to communicate with the server identified by @server_identity.
+ * Convenience setter for the %G_DBUS_MESSAGE_HEADER_FIELD_SIGNATURE header field.
  *
- * Returns: (transfer full) (type GDtlsClientConnection): the new
- *   #GDtlsClientConnection, or %NULL on error
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_client_connection_set_server_identity:
- * @conn: the #GDtlsClientConnection
- * @identity: a #GSocketConnectable describing the expected server identity
+ * g_dbus_message_set_unix_fd_list:
+ * @message: A #GDBusMessage.
+ * @fd_list: (nullable): A #GUnixFDList or %NULL.
  *
- * Sets @conn's expected server identity, which is used both to tell
- * servers on virtual hosts which certificate to present, and also
- * to let @conn know what name to look for in the certificate when
- * performing %G_TLS_CERTIFICATE_BAD_IDENTITY validation, if enabled.
+ * Sets the UNIX file descriptors associated with @message. As a
+ * side-effect the %G_DBUS_MESSAGE_HEADER_FIELD_NUM_UNIX_FDS header
+ * field is set to the number of fds in @fd_list (or cleared if
+ * @fd_list is %NULL).
  *
- * Since: 2.48
+ * This method is only available on UNIX.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_client_connection_set_validation_flags:
- * @conn: the #GDtlsClientConnection
- * @flags: the #GTlsCertificateFlags to use
+ * g_dbus_message_to_blob:
+ * @message: A #GDBusMessage.
+ * @out_size: Return location for size of generated blob.
+ * @capabilities: A #GDBusCapabilityFlags describing what protocol features are supported.
+ * @error: Return location for error.
  *
- * Sets @conn's validation flags, to override the default set of
- * checks performed when validating a server certificate. By default,
- * %G_TLS_CERTIFICATE_VALIDATE_ALL is used.
+ * Serializes @message to a blob. The byte order returned by
+ * g_dbus_message_get_byte_order() will be used.
  *
- * Since: 2.48
+ * Returns: (array length=out_size) (transfer full): A pointer to a
+ * valid binary D-Bus message of @out_size bytes generated by @message
+ * or %NULL if @error is set. Free with g_free().
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_close:
- * @conn: a #GDtlsConnection
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a #GError, or %NULL
- *
- * Close the DTLS connection. This is equivalent to calling
- * g_dtls_connection_shutdown() to shut down both sides of the connection.
- *
- * Closing a #GDtlsConnection waits for all buffered but untransmitted data to
- * be sent before it completes. It then sends a `close_notify` DTLS alert to the
- * peer and may wait for a `close_notify` to be received from the peer. It does
- * not close the underlying #GDtlsConnection:base-socket; that must be closed
- * separately.
- *
- * Once @conn is closed, all other operations will return %G_IO_ERROR_CLOSED.
- * Closing a #GDtlsConnection multiple times will not return an error.
+ * g_dbus_message_to_gerror:
+ * @message: A #GDBusMessage.
+ * @error: The #GError to set.
  *
- * #GDtlsConnections will be automatically closed when the last reference is
- * dropped, but you might want to call this function to make sure resources are
- * released as early as possible.
+ * If @message is not of type %G_DBUS_MESSAGE_TYPE_ERROR does
+ * nothing and returns %FALSE.
  *
- * If @cancellable is cancelled, the #GDtlsConnection may be left
- * partially-closed and any pending untransmitted data may be lost. Call
- * g_dtls_connection_close() again to complete closing the #GDtlsConnection.
+ * Otherwise this method encodes the error in @message as a #GError
+ * using g_dbus_error_set_dbus_error() using the information in the
+ * %G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME header field of @message as
+ * well as the first string item in @message's body.
  *
- * Returns: %TRUE on success, %FALSE otherwise
- * Since: 2.48
+ * Returns: %TRUE if @error was set, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_close_async:
- * @conn: a #GDtlsConnection
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the close operation is complete
- * @user_data: the data to pass to the callback function
+ * g_dbus_method_info_ref:
+ * @info: A #GDBusMethodInfo
  *
- * Asynchronously close the DTLS connection. See g_dtls_connection_close() for
- * more information.
+ * If @info is statically allocated does nothing. Otherwise increases
+ * the reference count.
  *
- * Since: 2.48
+ * Returns: The same @info.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_close_finish:
- * @conn: a #GDtlsConnection
- * @result: a #GAsyncResult
- * @error: a #GError pointer, or %NULL
+ * g_dbus_method_info_unref:
+ * @info: A #GDBusMethodInfo.
  *
- * Finish an asynchronous TLS close operation. See g_dtls_connection_close()
- * for more information.
+ * If @info is statically allocated, does nothing. Otherwise decreases
+ * the reference count of @info. When its reference count drops to 0,
+ * the memory used is freed.
  *
- * Returns: %TRUE on success, %FALSE on failure, in which
- * case @error will be set
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_emit_accept_certificate:
- * @conn: a #GDtlsConnection
- * @peer_cert: the peer's #GTlsCertificate
- * @errors: the problems with @peer_cert
+ * g_dbus_method_invocation_get_connection:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * Used by #GDtlsConnection implementations to emit the
- * #GDtlsConnection::accept-certificate signal.
+ * Gets the #GDBusConnection the method was invoked on.
  *
- * Returns: %TRUE if one of the signal handlers has returned
- *     %TRUE to accept @peer_cert
- * Since: 2.48
+ * Returns: (transfer none): A #GDBusConnection. Do not free, it is owned by @invocation.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_get_certificate:
- * @conn: a #GDtlsConnection
+ * g_dbus_method_invocation_get_interface_name:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * Gets @conn's certificate, as set by
- * g_dtls_connection_set_certificate().
+ * Gets the name of the D-Bus interface the method was invoked on.
  *
- * Returns: (transfer none): @conn's certificate, or %NULL
- * Since: 2.48
+ * If this method call is a property Get, Set or GetAll call that has
+ * been redirected to the method call handler then
+ * "org.freedesktop.DBus.Properties" will be returned.  See
+ * #GDBusInterfaceVTable for more information.
+ *
+ * Returns: A string. Do not free, it is owned by @invocation.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_get_database:
- * @conn: a #GDtlsConnection
+ * g_dbus_method_invocation_get_message:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * Gets the certificate database that @conn uses to verify
- * peer certificates. See g_dtls_connection_set_database().
+ * Gets the #GDBusMessage for the method invocation. This is useful if
+ * you need to use low-level protocol features, such as UNIX file
+ * descriptor passing, that cannot be properly expressed in the
+ * #GVariant API.
  *
- * Returns: (transfer none): the certificate database that @conn uses or %NULL
- * Since: 2.48
+ * See this [server][gdbus-server] and [client][gdbus-unix-fd-client]
+ * for an example of how to use this low-level API to send and receive
+ * UNIX file descriptors.
+ *
+ * Returns: (transfer none): #GDBusMessage. Do not free, it is owned by @invocation.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_get_interaction:
- * @conn: a connection
+ * g_dbus_method_invocation_get_method_info:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * Get the object that will be used to interact with the user. It will be used
- * for things like prompting the user for passwords. If %NULL is returned, then
- * no user interaction will occur for this connection.
+ * Gets information about the method call, if any.
  *
- * Returns: (transfer none): The interaction object.
- * Since: 2.48
+ * If this method invocation is a property Get, Set or GetAll call that
+ * has been redirected to the method call handler then %NULL will be
+ * returned.  See g_dbus_method_invocation_get_property_info() and
+ * #GDBusInterfaceVTable for more information.
+ *
+ * Returns: A #GDBusMethodInfo or %NULL. Do not free, it is owned by @invocation.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_get_peer_certificate:
- * @conn: a #GDtlsConnection
+ * g_dbus_method_invocation_get_method_name:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * Gets @conn's peer's certificate after the handshake has completed.
- * (It is not set during the emission of
- * #GDtlsConnection::accept-certificate.)
+ * Gets the name of the method that was invoked.
  *
- * Returns: (transfer none): @conn's peer's certificate, or %NULL
- * Since: 2.48
+ * Returns: A string. Do not free, it is owned by @invocation.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_get_peer_certificate_errors:
- * @conn: a #GDtlsConnection
+ * g_dbus_method_invocation_get_object_path:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * Gets the errors associated with validating @conn's peer's
- * certificate, after the handshake has completed. (It is not set
- * during the emission of #GDtlsConnection::accept-certificate.)
+ * Gets the object path the method was invoked on.
  *
- * Returns: @conn's peer's certificate errors
- * Since: 2.48
+ * Returns: A string. Do not free, it is owned by @invocation.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_get_rehandshake_mode:
- * @conn: a #GDtlsConnection
+ * g_dbus_method_invocation_get_parameters:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * Gets @conn rehandshaking mode. See
- * g_dtls_connection_set_rehandshake_mode() for details.
+ * Gets the parameters of the method invocation. If there are no input
+ * parameters then this will return a GVariant with 0 children rather than NULL.
  *
- * Returns: @conn's rehandshaking mode
- * Since: 2.48
+ * Returns: (transfer none): A #GVariant tuple. Do not unref this because it is owned by @invocation.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_get_require_close_notify:
- * @conn: a #GDtlsConnection
+ * g_dbus_method_invocation_get_property_info:
+ * @invocation: A #GDBusMethodInvocation
  *
- * Tests whether or not @conn expects a proper TLS close notification
- * when the connection is closed. See
- * g_dtls_connection_set_require_close_notify() for details.
+ * Gets information about the property that this method call is for, if
+ * any.
  *
- * Returns: %TRUE if @conn requires a proper TLS close notification.
- * Since: 2.48
+ * This will only be set in the case of an invocation in response to a
+ * property Get or Set call that has been directed to the method call
+ * handler for an object on account of its property_get() or
+ * property_set() vtable pointers being unset.
+ *
+ * See #GDBusInterfaceVTable for more information.
+ *
+ * If the call was GetAll, %NULL will be returned.
+ *
+ * Returns: (transfer none): a #GDBusPropertyInfo or %NULL
+ * Since: 2.38
  */
 
 
 /**
- * g_dtls_connection_handshake:
- * @conn: a #GDtlsConnection
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a #GError, or %NULL
- *
- * Attempts a TLS handshake on @conn.
+ * g_dbus_method_invocation_get_sender:
+ * @invocation: A #GDBusMethodInvocation.
  *
- * On the client side, it is never necessary to call this method;
- * although the connection needs to perform a handshake after
- * connecting (or after sending a "STARTTLS"-type command) and may
- * need to rehandshake later if the server requests it,
- * #GDtlsConnection will handle this for you automatically when you try
- * to send or receive data on the connection. However, you can call
- * g_dtls_connection_handshake() manually if you want to know for sure
- * whether the initial handshake succeeded or failed (as opposed to
- * just immediately trying to write to @conn, in which
- * case if it fails, it may not be possible to tell if it failed
- * before or after completing the handshake).
+ * Gets the bus name that invoked the method.
  *
- * Likewise, on the server side, although a handshake is necessary at
- * the beginning of the communication, you do not need to call this
- * function explicitly unless you want clearer error reporting.
- * However, you may call g_dtls_connection_handshake() later on to
- * renegotiate parameters (encryption methods, etc) with the client.
+ * Returns: A string. Do not free, it is owned by @invocation.
+ * Since: 2.26
+ */
+
+
+/**
+ * g_dbus_method_invocation_get_user_data: (skip)
+ * @invocation: A #GDBusMethodInvocation.
  *
- * #GDtlsConnection::accept_certificate may be emitted during the
- * handshake.
+ * Gets the @user_data #gpointer passed to g_dbus_connection_register_object().
  *
- * Returns: success or failure
- * Since: 2.48
+ * Returns: A #gpointer.
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_handshake_async:
- * @conn: a #GDtlsConnection
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the handshake is complete
- * @user_data: the data to pass to the callback function
+ * g_dbus_method_invocation_return_dbus_error:
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @error_name: A valid D-Bus error name.
+ * @error_message: A valid D-Bus error message.
  *
- * Asynchronously performs a TLS handshake on @conn. See
- * g_dtls_connection_handshake() for more information.
+ * Finishes handling a D-Bus method call by returning an error.
  *
- * Since: 2.48
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_handshake_finish:
- * @conn: a #GDtlsConnection
- * @result: a #GAsyncResult.
- * @error: a #GError pointer, or %NULL
+ * g_dbus_method_invocation_return_error:
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @domain: A #GQuark for the #GError error domain.
+ * @code: The error code.
+ * @format: printf()-style format.
+ * @...: Parameters for @format.
  *
- * Finish an asynchronous TLS handshake operation. See
- * g_dtls_connection_handshake() for more information.
+ * Finishes handling a D-Bus method call by returning an error.
  *
- * Returns: %TRUE on success, %FALSE on failure, in which
- * case @error will be set.
- * Since: 2.48
+ * See g_dbus_error_encode_gerror() for details about what error name
+ * will be returned on the wire. In a nutshell, if the given error is
+ * registered using g_dbus_error_register_error() the name given
+ * during registration is used. Otherwise, a name of the form
+ * `org.gtk.GDBus.UnmappedGError.Quark...` is used. This provides
+ * transparent mapping of #GError between applications using GDBus.
+ *
+ * If you are writing an application intended to be portable,
+ * always register errors with g_dbus_error_register_error()
+ * or use g_dbus_method_invocation_return_dbus_error().
+ *
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
+ *
+ * Since 2.48, if the method call requested for a reply not to be sent
+ * then this call will free @invocation but otherwise do nothing (as per
+ * the recommendations of the D-Bus specification).
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_set_certificate:
- * @conn: a #GDtlsConnection
- * @certificate: the certificate to use for @conn
- *
- * This sets the certificate that @conn will present to its peer
- * during the TLS handshake. For a #GDtlsServerConnection, it is
- * mandatory to set this, and that will normally be done at construct
- * time.
+ * g_dbus_method_invocation_return_error_literal:
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @domain: A #GQuark for the #GError error domain.
+ * @code: The error code.
+ * @message: The error message.
  *
- * For a #GDtlsClientConnection, this is optional. If a handshake fails
- * with %G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server
- * requires a certificate, and if you try connecting again, you should
- * call this method first. You can call
- * g_dtls_client_connection_get_accepted_cas() on the failed connection
- * to get a list of Certificate Authorities that the server will
- * accept certificates from.
+ * Like g_dbus_method_invocation_return_error() but without printf()-style formatting.
  *
- * (It is also possible that a server will allow the connection with
- * or without a certificate; in that case, if you don't provide a
- * certificate, you can tell that the server requested one by the fact
- * that g_dtls_client_connection_get_accepted_cas() will return
- * non-%NULL.)
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
  *
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_set_database:
- * @conn: a #GDtlsConnection
- * @database: a #GTlsDatabase
+ * g_dbus_method_invocation_return_error_valist:
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @domain: A #GQuark for the #GError error domain.
+ * @code: The error code.
+ * @format: printf()-style format.
+ * @var_args: #va_list of parameters for @format.
  *
- * Sets the certificate database that is used to verify peer certificates.
- * This is set to the default database by default. See
- * g_tls_backend_get_default_database(). If set to %NULL, then
- * peer certificate validation will always set the
- * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning
- * #GDtlsConnection::accept-certificate will always be emitted on
- * client-side connections, unless that bit is not set in
- * #GDtlsClientConnection:validation-flags).
+ * Like g_dbus_method_invocation_return_error() but intended for
+ * language bindings.
  *
- * Since: 2.48
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_set_interaction:
- * @conn: a connection
- * @interaction: (nullable): an interaction object, or %NULL
+ * g_dbus_method_invocation_return_gerror:
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @error: A #GError.
  *
- * Set the object that will be used to interact with the user. It will be used
- * for things like prompting the user for passwords.
+ * Like g_dbus_method_invocation_return_error() but takes a #GError
+ * instead of the error domain, error code and message.
  *
- * The @interaction argument will normally be a derived subclass of
- * #GTlsInteraction. %NULL can also be provided if no user interaction
- * should occur for this connection.
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
  *
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_set_rehandshake_mode:
- * @conn: a #GDtlsConnection
- * @mode: the rehandshaking mode
+ * g_dbus_method_invocation_return_value:
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @parameters: (nullable): A #GVariant tuple with out parameters for the method or %NULL if not passing any parameters.
  *
- * Sets how @conn behaves with respect to rehandshaking requests.
+ * Finishes handling a D-Bus method call by returning @parameters.
+ * If the @parameters GVariant is floating, it is consumed.
  *
- * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to
- * rehandshake after the initial handshake is complete. (For a client,
- * this means it will refuse rehandshake requests from the server, and
- * for a server, this means it will close the connection with an error
- * if the client attempts to rehandshake.)
+ * It is an error if @parameters is not of the right format: it must be a tuple
+ * containing the out-parameters of the D-Bus method. Even if the method has a
+ * single out-parameter, it must be contained in a tuple. If the method has no
+ * out-parameters, @parameters may be %NULL or an empty tuple.
  *
- * %G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a
- * rehandshake only if the other end of the connection supports the
- * TLS `renegotiation_info` extension. This is the default behavior,
- * but means that rehandshaking will not work against older
- * implementations that do not support that extension.
+ * |[<!-- language="C" -->
+ * GDBusMethodInvocation *invocation = some_invocation;
+ * g_autofree gchar *result_string = NULL;
+ * g_autoptr (GError) error = NULL;
  *
- * %G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow
- * rehandshaking even without the `renegotiation_info` extension. On
- * the server side in particular, this is not recommended, since it
- * leaves the server open to certain attacks. However, this mode is
- * necessary if you need to allow renegotiation with older client
- * software.
+ * result_string = calculate_result (&error);
  *
- * Since: 2.48
- */
-
-
-/**
- * g_dtls_connection_set_require_close_notify:
- * @conn: a #GDtlsConnection
- * @require_close_notify: whether or not to require close notification
+ * if (error != NULL)
+ *   g_dbus_method_invocation_return_gerror (invocation, error);
+ * else
+ *   g_dbus_method_invocation_return_value (invocation,
+ *                                          g_variant_new ("(s)", result_string));
  *
- * Sets whether or not @conn expects a proper TLS close notification
- * before the connection is closed. If this is %TRUE (the default),
- * then @conn will expect to receive a TLS close notification from its
- * peer before the connection is closed, and will return a
- * %G_TLS_ERROR_EOF error if the connection is closed without proper
- * notification (since this may indicate a network error, or
- * man-in-the-middle attack).
+ * // Do not free @invocation here; returning a value does that
+ * ]|
  *
- * In some protocols, the application will know whether or not the
- * connection was closed cleanly based on application-level data
- * (because the application-level data includes a length field, or is
- * somehow self-delimiting); in this case, the close notify is
- * redundant and may be omitted. You
- * can use g_dtls_connection_set_require_close_notify() to tell @conn
- * to allow an "unannounced" connection close, in which case the close
- * will show up as a 0-length read, as in a non-TLS
- * #GDatagramBased, and it is up to the application to check that
- * the data has been fully received.
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
  *
- * Note that this only affects the behavior when the peer closes the
- * connection; when the application calls g_dtls_connection_close_async() on
- * @conn itself, this will send a close notification regardless of the
- * setting of this property. If you explicitly want to do an unclean
- * close, you can close @conn's #GDtlsConnection:base-socket rather
- * than closing @conn itself.
+ * Since 2.48, if the method call requested for a reply not to be sent
+ * then this call will sink @parameters and free @invocation, but
+ * otherwise do nothing (as per the recommendations of the D-Bus
+ * specification).
  *
- * Since: 2.48
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_connection_shutdown:
- * @conn: a #GDtlsConnection
- * @shutdown_read: %TRUE to stop reception of incoming datagrams
- * @shutdown_write: %TRUE to stop sending outgoing datagrams
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a #GError, or %NULL
- *
- * Shut down part or all of a DTLS connection.
- *
- * If @shutdown_read is %TRUE then the receiving side of the connection is shut
- * down, and further reading is disallowed. Subsequent calls to
- * g_datagram_based_receive_messages() will return %G_IO_ERROR_CLOSED.
+ * g_dbus_method_invocation_return_value_with_unix_fd_list:
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @parameters: (nullable): A #GVariant tuple with out parameters for the method or %NULL if not passing any parameters.
+ * @fd_list: (nullable): A #GUnixFDList or %NULL.
  *
- * If @shutdown_write is %TRUE then the sending side of the connection is shut
- * down, and further writing is disallowed. Subsequent calls to
- * g_datagram_based_send_messages() will return %G_IO_ERROR_CLOSED.
+ * Like g_dbus_method_invocation_return_value() but also takes a #GUnixFDList.
  *
- * It is allowed for both @shutdown_read and @shutdown_write to be TRUE â€” this
- * is equivalent to calling g_dtls_connection_close().
+ * This method is only available on UNIX.
  *
- * If @cancellable is cancelled, the #GDtlsConnection may be left
- * partially-closed and any pending untransmitted data may be lost. Call
- * g_dtls_connection_shutdown() again to complete closing the #GDtlsConnection.
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
  *
- * Returns: %TRUE on success, %FALSE otherwise
- * Since: 2.48
+ * Since: 2.30
  */
 
 
 /**
- * g_dtls_connection_shutdown_async:
- * @conn: a #GDtlsConnection
- * @shutdown_read: %TRUE to stop reception of incoming datagrams
- * @shutdown_write: %TRUE to stop sending outgoing datagrams
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the shutdown operation is complete
- * @user_data: the data to pass to the callback function
+ * g_dbus_method_invocation_take_error: (skip)
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @error: (transfer full): A #GError.
  *
- * Asynchronously shut down part or all of the DTLS connection. See
- * g_dtls_connection_shutdown() for more information.
+ * Like g_dbus_method_invocation_return_gerror() but takes ownership
+ * of @error so the caller does not need to free it.
  *
- * Since: 2.48
+ * This method will take ownership of @invocation. See
+ * #GDBusInterfaceVTable for more information about the ownership of
+ * @invocation.
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_dtls_connection_shutdown_finish:
- * @conn: a #GDtlsConnection
- * @result: a #GAsyncResult
- * @error: a #GError pointer, or %NULL
+ * g_dbus_node_info_generate_xml:
+ * @info: A #GDBusNodeInfo.
+ * @indent: Indentation level.
+ * @string_builder: A #GString to to append XML data to.
  *
- * Finish an asynchronous TLS shutdown operation. See
- * g_dtls_connection_shutdown() for more information.
+ * Appends an XML representation of @info (and its children) to @string_builder.
  *
- * Returns: %TRUE on success, %FALSE on failure, in which
- * case @error will be set
- * Since: 2.48
+ * This function is typically used for generating introspection XML documents at run-time for
+ * handling the `org.freedesktop.DBus.Introspectable.Introspect`  method.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_dtls_server_connection_new:
- * @base_socket: the #GDatagramBased to wrap
- * @certificate: (nullable): the default server certificate, or %NULL
- * @error: #GError for error reporting, or %NULL to ignore
+ * g_dbus_node_info_lookup_interface:
+ * @info: A #GDBusNodeInfo.
+ * @name: A D-Bus interface name.
  *
- * Creates a new #GDtlsServerConnection wrapping @base_socket.
+ * Looks up information about an interface.
  *
- * Returns: (transfer full) (type GDtlsServerConnection): the new
- *   #GDtlsServerConnection, or %NULL on error
- * Since: 2.48
+ * The cost of this function is O(n) in number of interfaces.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo or %NULL if not found. Do not free, it is owned by @info.
+ * Since: 2.26
  */
 
 
 /**
- * g_emblem_get_icon:
- * @emblem: a #GEmblem from which the icon should be extracted.
+ * g_dbus_node_info_new_for_xml:
+ * @xml_data: Valid D-Bus introspection XML.
+ * @error: Return location for error.
  *
- * Gives back the icon from @emblem.
+ * Parses @xml_data and returns a #GDBusNodeInfo representing the data.
  *
- * Returns: (transfer none): a #GIcon. The returned object belongs to
- *          the emblem and should not be modified or freed.
- * Since: 2.18
+ * The introspection XML must contain exactly one top-level
+ * <node> element.
+ *
+ * Note that this routine is using a
+ * [GMarkup][glib-Simple-XML-Subset-Parser.description]-based
+ * parser that only accepts a subset of valid XML documents.
+ *
+ * Returns: A #GDBusNodeInfo structure or %NULL if @error is set. Free
+ * with g_dbus_node_info_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_emblem_get_origin:
- * @emblem: a #GEmblem
+ * g_dbus_node_info_ref:
+ * @info: A #GDBusNodeInfo
  *
- * Gets the origin of the emblem.
+ * If @info is statically allocated does nothing. Otherwise increases
+ * the reference count.
  *
- * Returns: (transfer none): the origin of the emblem
- * Since: 2.18
+ * Returns: The same @info.
+ * Since: 2.26
  */
 
 
 /**
- * g_emblem_new:
- * @icon: a GIcon containing the icon.
+ * g_dbus_node_info_unref:
+ * @info: A #GDBusNodeInfo.
  *
- * Creates a new emblem for @icon.
+ * If @info is statically allocated, does nothing. Otherwise decreases
+ * the reference count of @info. When its reference count drops to 0,
+ * the memory used is freed.
  *
- * Returns: a new #GEmblem.
- * Since: 2.18
+ * Since: 2.26
  */
 
 
 /**
- * g_emblem_new_with_origin:
- * @icon: a GIcon containing the icon.
- * @origin: a GEmblemOrigin enum defining the emblem's origin
+ * g_dbus_object_get_interface:
+ * @object: A #GDBusObject.
+ * @interface_name: A D-Bus interface name.
  *
- * Creates a new emblem for @icon.
+ * Gets the D-Bus interface with name @interface_name associated with
+ * @object, if any.
  *
- * Returns: a new #GEmblem.
- * Since: 2.18
+ * Returns: (transfer full): %NULL if not found, otherwise a
+ *   #GDBusInterface that must be freed with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_emblemed_icon_add_emblem:
- * @emblemed: a #GEmblemedIcon
- * @emblem: a #GEmblem
+ * g_dbus_object_get_interfaces:
+ * @object: A #GDBusObject.
  *
- * Adds @emblem to the #GList of #GEmblems.
+ * Gets the D-Bus interfaces associated with @object.
  *
- * Since: 2.18
+ * Returns: (element-type GDBusInterface) (transfer full): A list of #GDBusInterface instances.
+ *   The returned list must be freed by g_list_free() after each element has been freed
+ *   with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_emblemed_icon_clear_emblems:
- * @emblemed: a #GEmblemedIcon
+ * g_dbus_object_get_object_path:
+ * @object: A #GDBusObject.
  *
- * Removes all the emblems from @icon.
+ * Gets the object path for @object.
  *
- * Since: 2.28
+ * Returns: A string owned by @object. Do not free.
+ * Since: 2.30
  */
 
 
 /**
- * g_emblemed_icon_get_emblems:
- * @emblemed: a #GEmblemedIcon
+ * g_dbus_object_manager_client_get_connection:
+ * @manager: A #GDBusObjectManagerClient
  *
- * Gets the list of emblems for the @icon.
+ * Gets the #GDBusConnection used by @manager.
  *
- * Returns: (element-type Gio.Emblem) (transfer none): a #GList of
- *     #GEmblems that is owned by @emblemed
- * Since: 2.18
+ * Returns: (transfer none): A #GDBusConnection object. Do not free,
+ *   the object belongs to @manager.
+ * Since: 2.30
  */
 
 
 /**
- * g_emblemed_icon_get_icon:
- * @emblemed: a #GEmblemedIcon
+ * g_dbus_object_manager_client_get_flags:
+ * @manager: A #GDBusObjectManagerClient
  *
- * Gets the main icon for @emblemed.
+ * Gets the flags that @manager was constructed with.
  *
- * Returns: (transfer none): a #GIcon that is owned by @emblemed
- * Since: 2.18
+ * Returns: Zero of more flags from the #GDBusObjectManagerClientFlags
+ * enumeration.
+ * Since: 2.30
  */
 
 
 /**
- * g_emblemed_icon_new:
- * @icon: a #GIcon
- * @emblem: (nullable): a #GEmblem, or %NULL
+ * g_dbus_object_manager_client_get_name:
+ * @manager: A #GDBusObjectManagerClient
  *
- * Creates a new emblemed icon for @icon with the emblem @emblem.
+ * Gets the name that @manager is for, or %NULL if not a message bus
+ * connection.
  *
- * Returns: (transfer full) (type GEmblemedIcon): a new #GIcon
- * Since: 2.18
+ * Returns: A unique or well-known name. Do not free, the string
+ * belongs to @manager.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_append_to:
- * @file: input #GFile
- * @flags: a set of #GFileCreateFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * 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 #G_FILE_CREATE_PRIVATE in @flags the file
- * will be made readable only to the current user, to the level that
- * is supported on the target filesystem.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled
- * by triggering the cancellable object from another thread. If the
- * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
- * returned.
+ * g_dbus_object_manager_client_get_name_owner:
+ * @manager: A #GDBusObjectManagerClient.
  *
- * Some file systems don't allow all file names, and may return an
- * %G_IO_ERROR_INVALID_FILENAME error. If the file is a directory the
- * %G_IO_ERROR_IS_DIRECTORY error will be returned. Other errors are
- * possible too, and depend on what kind of filesystem the file is on.
+ * The unique name that owns the name that @manager is for or %NULL if
+ * no-one currently owns that name. You can connect to the
+ * #GObject::notify signal to track changes to the
+ * #GDBusObjectManagerClient:name-owner property.
  *
- * Returns: (transfer full): a #GFileOutputStream, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Returns: (nullable): The name owner or %NULL if no name owner
+ * exists. Free with g_free().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_append_to_async:
- * @file: input #GFile
- * @flags: a set of #GFileCreateFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_dbus_object_manager_client_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: The owner of the control object (unique or well-known name).
+ * @object_path: The object path of the control object.
+ * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
+ * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
+ * @cancellable: (nullable): A #GCancellable or %NULL
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: The data to pass to @callback.
  *
- * Asynchronously opens @file for appending.
+ * Asynchronously creates a new #GDBusObjectManagerClient object.
  *
- * For more details, see g_file_append_to() which is
- * the synchronous version of this call.
+ * This is an asynchronous failable constructor. When the result is
+ * ready, @callback will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from. You can
+ * then call g_dbus_object_manager_client_new_finish() to get the result. See
+ * g_dbus_object_manager_client_new_sync() for the synchronous version.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_append_to_finish() to get the result
- * of the operation.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_append_to_finish:
- * @file: input #GFile
- * @res: #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_dbus_object_manager_client_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_object_manager_client_new().
+ * @error: Return location for error or %NULL.
  *
- * Finishes an asynchronous file append operation started with
- * g_file_append_to_async().
+ * Finishes an operation started with g_dbus_object_manager_client_new().
  *
- * Returns: (transfer full): a valid #GFileOutputStream
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Returns: (transfer full) (type GDBusObjectManagerClient): A
+ *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
+ *   with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_info_list_add:
- * @list: a #GFileAttributeInfoList.
- * @name: the name of the attribute to add.
- * @type: the #GFileAttributeType for the attribute.
- * @flags: #GFileAttributeInfoFlags for the attribute.
+ * g_dbus_object_manager_client_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: The owner of the control object (unique or well-known name).
+ * @object_path: The object path of the control object.
+ * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
+ * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
+ * @cancellable: (nullable): A #GCancellable or %NULL
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: The data to pass to @callback.
  *
- * Adds a new attribute with @name to the @list, setting
- * its @type and @flags.
- */
-
-
-/**
- * g_file_attribute_info_list_dup:
- * @list: a #GFileAttributeInfoList to duplicate.
+ * Like g_dbus_object_manager_client_new() but takes a #GBusType instead of a
+ * #GDBusConnection.
  *
- * Makes a duplicate of a file attribute info list.
+ * This is an asynchronous failable constructor. When the result is
+ * ready, @callback will be invoked in the
+ * [thread-default main loop][g-main-context-push-thread-default]
+ * of the thread you are calling this method from. You can
+ * then call g_dbus_object_manager_client_new_for_bus_finish() to get the result. See
+ * g_dbus_object_manager_client_new_for_bus_sync() for the synchronous version.
  *
- * Returns: a copy of the given @list.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_info_list_lookup:
- * @list: a #GFileAttributeInfoList.
- * @name: the name of the attribute to lookup.
+ * g_dbus_object_manager_client_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_object_manager_client_new_for_bus().
+ * @error: Return location for error or %NULL.
  *
- * Gets the file attribute with the name @name from @list.
+ * Finishes an operation started with g_dbus_object_manager_client_new_for_bus().
  *
- * Returns: a #GFileAttributeInfo for the @name, or %NULL if an
- * attribute isn't found.
+ * Returns: (transfer full) (type GDBusObjectManagerClient): A
+ *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
+ *   with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_info_list_new:
+ * g_dbus_object_manager_client_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: The owner of the control object (unique or well-known name).
+ * @object_path: The object path of the control object.
+ * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
+ * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
+ * @cancellable: (nullable): A #GCancellable or %NULL
+ * @error: Return location for error or %NULL.
  *
- * Creates a new file attribute info list.
+ * Like g_dbus_object_manager_client_new_sync() but takes a #GBusType instead
+ * of a #GDBusConnection.
  *
- * Returns: a #GFileAttributeInfoList.
+ * This is a synchronous failable constructor - the calling thread is
+ * blocked until a reply is received. See g_dbus_object_manager_client_new_for_bus()
+ * for the asynchronous version.
+ *
+ * Returns: (transfer full) (type GDBusObjectManagerClient): A
+ *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
+ *   with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_info_list_ref:
- * @list: a #GFileAttributeInfoList to reference.
+ * g_dbus_object_manager_client_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (nullable): The owner of the control object (unique or well-known name), or %NULL when not using a message bus connection.
+ * @object_path: The object path of the control object.
+ * @get_proxy_type_func: (nullable): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
+ * @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
+ * @get_proxy_type_destroy_notify: (nullable): Free function for @get_proxy_type_user_data or %NULL.
+ * @cancellable: (nullable): A #GCancellable or %NULL
+ * @error: Return location for error or %NULL.
  *
- * References a file attribute info list.
+ * Creates a new #GDBusObjectManagerClient object.
  *
- * Returns: #GFileAttributeInfoList or %NULL on error.
- */
-
-
-/**
- * g_file_attribute_info_list_unref:
- * @list: The #GFileAttributeInfoList to unreference.
+ * This is a synchronous failable constructor - the calling thread is
+ * blocked until a reply is received. See g_dbus_object_manager_client_new()
+ * for the asynchronous version.
  *
- * Removes a reference from the given @list. If the reference count
- * falls to zero, the @list is deleted.
+ * Returns: (transfer full) (type GDBusObjectManagerClient): A
+ *   #GDBusObjectManagerClient object or %NULL if @error is set. Free
+ *   with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_enumerate_namespace:
- * @matcher: a #GFileAttributeMatcher.
- * @ns: a string containing a file attribute namespace.
- *
- * Checks if the matcher will match all of the keys in a given namespace.
- * This will always return %TRUE if a wildcard character is in use (e.g. if
- * matcher was created with "standard::*" and @ns is "standard", or if matcher was created
- * using "*" and namespace is anything.)
+ * g_dbus_object_manager_get_interface:
+ * @manager: A #GDBusObjectManager.
+ * @object_path: Object path to lookup.
+ * @interface_name: D-Bus interface name to lookup.
  *
- * TODO: this is awkwardly worded.
+ * Gets the interface proxy for @interface_name at @object_path, if
+ * any.
  *
- * Returns: %TRUE if the matcher matches all of the entries
- * in the given @ns, %FALSE otherwise.
+ * Returns: (transfer full): A #GDBusInterface instance or %NULL. Free
+ *   with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_enumerate_next:
- * @matcher: a #GFileAttributeMatcher.
+ * g_dbus_object_manager_get_object:
+ * @manager: A #GDBusObjectManager.
+ * @object_path: Object path to lookup.
  *
- * Gets the next matched attribute from a #GFileAttributeMatcher.
+ * Gets the #GDBusObjectProxy at @object_path, if any.
  *
- * Returns: a string containing the next attribute or %NULL if
- * no more attribute exist.
+ * Returns: (transfer full): A #GDBusObject or %NULL. Free with
+ *   g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_matches:
- * @matcher: a #GFileAttributeMatcher.
- * @attribute: a file attribute key.
+ * g_dbus_object_manager_get_object_path:
+ * @manager: A #GDBusObjectManager.
  *
- * Checks if an attribute will be matched by an attribute matcher. If
- * the matcher was created with the "*" matching string, this function
- * will always return %TRUE.
+ * Gets the object path that @manager is for.
  *
- * Returns: %TRUE if @attribute matches @matcher. %FALSE otherwise.
+ * Returns: A string owned by @manager. Do not free.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_matches_only:
- * @matcher: a #GFileAttributeMatcher.
- * @attribute: a file attribute key.
+ * g_dbus_object_manager_get_objects:
+ * @manager: A #GDBusObjectManager.
  *
- * Checks if a attribute matcher only matches a given attribute. Always
- * returns %FALSE if "*" was used when creating the matcher.
+ * Gets all #GDBusObject objects known to @manager.
  *
- * Returns: %TRUE if the matcher only matches @attribute. %FALSE otherwise.
+ * Returns: (transfer full) (element-type GDBusObject): A list of
+ *   #GDBusObject objects. The returned list should be freed with
+ *   g_list_free() after each element has been freed with
+ *   g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_new:
- * @attributes: an attribute string to match.
+ * g_dbus_object_manager_server_export:
+ * @manager: A #GDBusObjectManagerServer.
+ * @object: A #GDBusObjectSkeleton.
  *
- * Creates a new file attribute matcher, which matches attributes
- * against a given string. #GFileAttributeMatchers are reference
- * counted structures, and are created with a reference count of 1. If
- * the number of references falls to 0, the #GFileAttributeMatcher is
- * automatically destroyed.
+ * Exports @object on @manager.
  *
- * The @attribute string should be formatted with specific keys separated
- * from namespaces with a double colon. Several "namespace::key" strings may be
- * concatenated with a single comma (e.g. "standard::type,standard::is-hidden").
- * The wildcard "*" may be used to match all keys and namespaces, or
- * "namespace::*" will match all keys in a given namespace.
+ * If there is already a #GDBusObject exported at the object path,
+ * then the old object is removed.
  *
- * ## Examples of file attribute matcher strings and results
+ * The object path for @object must be in the hierarchy rooted by the
+ * object path for @manager.
  *
- * - `"*"`: matches all attributes.
- * - `"standard::is-hidden"`: matches only the key is-hidden in the
- *   standard namespace.
- * - `"standard::type,unix::*"`: matches the type key in the standard
- *   namespace and all keys in the unix namespace.
+ * Note that @manager will take a reference on @object for as long as
+ * it is exported.
  *
- * Returns: a #GFileAttributeMatcher
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_ref:
- * @matcher: a #GFileAttributeMatcher.
+ * g_dbus_object_manager_server_export_uniquely:
+ * @manager: A #GDBusObjectManagerServer.
+ * @object: An object.
  *
- * References a file attribute matcher.
+ * Like g_dbus_object_manager_server_export() but appends a string of
+ * the form _N (with N being a natural number) to @object's object path
+ * if an object with the given path already exists. As such, the
+ * #GDBusObjectProxy:g-object-path property of @object may be modified.
  *
- * Returns: a #GFileAttributeMatcher.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_subtract:
- * @matcher: Matcher to subtract from
- * @subtract: The matcher to subtract
- *
- * Subtracts all attributes of @subtract from @matcher and returns
- * a matcher that supports those attributes.
+ * g_dbus_object_manager_server_get_connection:
+ * @manager: A #GDBusObjectManagerServer
  *
- * Note that currently it is not possible to remove a single
- * attribute when the @matcher matches the whole namespace - or remove
- * a namespace or attribute when the matcher matches everything. This
- * is a limitation of the current implementation, but may be fixed
- * in the future.
+ * Gets the #GDBusConnection used by @manager.
  *
- * Returns: A file attribute matcher matching all attributes of
- *     @matcher that are not matched by @subtract
+ * Returns: (transfer full): A #GDBusConnection object or %NULL if
+ *   @manager isn't exported on a connection. The returned object should
+ *   be freed with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_matcher_to_string:
- * @matcher: (nullable): a #GFileAttributeMatcher.
+ * g_dbus_object_manager_server_is_exported:
+ * @manager: A #GDBusObjectManagerServer.
+ * @object: An object.
  *
- * Prints what the matcher is matching against. The format will be
- * equal to the format passed to g_file_attribute_matcher_new().
- * The output however, might not be identical, as the matcher may
- * decide to use a different order or omit needless parts.
+ * Returns whether @object is currently exported on @manager.
  *
- * Returns: a string describing the attributes the matcher matches
- *   against or %NULL if @matcher was %NULL.
- * Since: 2.32
+ * Returns: %TRUE if @object is exported
+ * Since: 2.34
  */
 
 
 /**
- * g_file_attribute_matcher_unref:
- * @matcher: a #GFileAttributeMatcher.
+ * g_dbus_object_manager_server_new:
+ * @object_path: The object path to export the manager object at.
  *
- * Unreferences @matcher. If the reference count falls below 1,
- * the @matcher is automatically freed.
- */
-
-
-/**
- * g_file_attribute_value_dup:
- * @other: a #GFileAttributeValue to duplicate.
+ * Creates a new #GDBusObjectManagerServer object.
  *
- * Duplicates a file attribute.
+ * The returned server isn't yet exported on any connection. To do so,
+ * use g_dbus_object_manager_server_set_connection(). Normally you
+ * want to export all of your objects before doing so to avoid
+ * [InterfacesAdded](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager)
+ * signals being emitted.
  *
- * Returns: a duplicate of the @other.
+ * Returns: A #GDBusObjectManagerServer object. Free with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_attribute_value_set:
- * @attr: a #GFileAttributeValue to set the value in.
- * @new_value: a #GFileAttributeValue to get the value from.
+ * g_dbus_object_manager_server_set_connection:
+ * @manager: A #GDBusObjectManagerServer.
+ * @connection: (nullable): A #GDBusConnection or %NULL.
  *
- * Sets an attribute's value from another attribute.
+ * Exports all objects managed by @manager on @connection. If
+ * @connection is %NULL, stops exporting objects.
  */
 
 
 /**
- * g_file_copy:
- * @source: input #GFile
- * @destination: destination #GFile
- * @flags: set of #GFileCopyFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @progress_callback: (nullable) (scope call): function to callback with
- *     progress information, or %NULL if progress information is not needed
- * @progress_callback_data: (closure): user data to pass to @progress_callback
- * @error: #GError to set on error, or %NULL
- *
- * Copies the file @source to the location specified by @destination.
- * Can not handle recursive copies of directories.
+ * g_dbus_object_manager_server_unexport:
+ * @manager: A #GDBusObjectManagerServer.
+ * @object_path: An object path.
  *
- * If the flag #G_FILE_COPY_OVERWRITE is specified an already
- * existing @destination file is overwritten.
+ * If @manager has an object at @path, removes the object. Otherwise
+ * does nothing.
  *
- * If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
- * will be copied as symlinks, otherwise the target of the
- * @source symlink will be copied.
+ * Note that @object_path must be in the hierarchy rooted by the
+ * object path for @manager.
  *
- * If the flag #G_FILE_COPY_ALL_METADATA is specified then all the metadata
- * that is possible to copy is copied, not just the default subset (which,
- * for instance, does not include the owner, see #GFileInfo).
+ * Returns: %TRUE if object at @object_path was removed, %FALSE otherwise.
+ * Since: 2.30
+ */
+
+
+/**
+ * g_dbus_object_proxy_get_connection:
+ * @proxy: a #GDBusObjectProxy
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets the connection that @proxy is for.
  *
- * If @progress_callback is not %NULL, then the operation can be monitored
- * by setting this to a #GFileProgressCallback function.
- * @progress_callback_data will be passed to this function. It is guaranteed
- * that this callback will be called after all data has been transferred with
- * the total number of bytes copied during the operation.
+ * Returns: (transfer none): A #GDBusConnection. Do not free, the
+ *   object is owned by @proxy.
+ * Since: 2.30
+ */
+
+
+/**
+ * g_dbus_object_proxy_new:
+ * @connection: a #GDBusConnection
+ * @object_path: the object path
  *
- * If the @source file does not exist, then the %G_IO_ERROR_NOT_FOUND error
- * is returned, independent on the status of the @destination.
+ * Creates a new #GDBusObjectProxy for the given connection and
+ * object path.
  *
- * If #G_FILE_COPY_OVERWRITE is not specified and the target exists, then
- * the error %G_IO_ERROR_EXISTS is returned.
+ * Returns: a new #GDBusObjectProxy
+ * Since: 2.30
+ */
+
+
+/**
+ * g_dbus_object_skeleton_add_interface:
+ * @object: A #GDBusObjectSkeleton.
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * If trying to overwrite a file over a directory, the %G_IO_ERROR_IS_DIRECTORY
- * error is returned. If trying to overwrite a directory with a directory the
- * %G_IO_ERROR_WOULD_MERGE error is returned.
+ * Adds @interface_ to @object.
  *
- * If the source is a directory and the target does not exist, or
- * #G_FILE_COPY_OVERWRITE is specified and the target is a file, then the
- * %G_IO_ERROR_WOULD_RECURSE error is returned.
+ * If @object already contains a #GDBusInterfaceSkeleton with the same
+ * interface name, it is removed before @interface_ is added.
  *
- * If you are interested in copying the #GFile object itself (not the on-disk
- * file), see g_file_dup().
+ * Note that @object takes its own reference on @interface_ and holds
+ * it until removed.
  *
- * Returns: %TRUE on success, %FALSE otherwise.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_copy_async:
- * @source: input #GFile
- * @destination: destination #GFile
- * @flags: set of #GFileCopyFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @progress_callback: (nullable) (scope notified): function to callback with progress
- *     information, or %NULL if progress information is not needed
- * @progress_callback_data: (closure progress_callback) (nullable): user data to pass to @progress_callback
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: (closure callback): the data to pass to callback function
- *
- * Copies the file @source to the location specified by @destination
- * asynchronously. For details of the behaviour, see g_file_copy().
+ * g_dbus_object_skeleton_flush:
+ * @object: A #GDBusObjectSkeleton.
  *
- * If @progress_callback is not %NULL, then that function that will be called
- * just like in g_file_copy(). The callback will run in the default main context
- * of the thread calling g_file_copy_async() â€” the same context as @callback is
- * run in.
+ * This method simply calls g_dbus_interface_skeleton_flush() on all
+ * interfaces belonging to @object. See that method for when flushing
+ * is useful.
  *
- * When the operation is finished, @callback will be called. You can then call
- * g_file_copy_finish() to get the result of the operation.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_copy_attributes:
- * @source: a #GFile with attributes
- * @destination: a #GFile to copy attributes to
- * @flags: a set of #GFileCopyFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, %NULL to ignore
- *
- * Copies the file attributes from @source to @destination.
+ * g_dbus_object_skeleton_new:
+ * @object_path: An object path.
  *
- * Normally only a subset of the file attributes are copied,
- * those that are copies in a normal file copy operation
- * (which for instance does not include e.g. owner). However
- * if #G_FILE_COPY_ALL_METADATA is specified in @flags, then
- * all the metadata that is possible to copy is copied. This
- * is useful when implementing move by copy + delete source.
+ * Creates a new #GDBusObjectSkeleton.
  *
- * Returns: %TRUE if the attributes were copied successfully,
- *     %FALSE otherwise.
+ * Returns: A #GDBusObjectSkeleton. Free with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_copy_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_dbus_object_skeleton_remove_interface:
+ * @object: A #GDBusObjectSkeleton.
+ * @interface_: A #GDBusInterfaceSkeleton.
  *
- * Finishes copying the file started with g_file_copy_async().
+ * Removes @interface_ from @object.
  *
- * Returns: a %TRUE on success, %FALSE on error.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_create:
- * @file: input #GFile
- * @flags: a set of #GFileCreateFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * 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 #G_FILE_CREATE_PRIVATE in @flags the file
- * will be made readable only to the current user, to the level
- * that is supported on the target filesystem.
+ * g_dbus_object_skeleton_remove_interface_by_name:
+ * @object: A #GDBusObjectSkeleton.
+ * @interface_name: A D-Bus interface name.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled
- * by triggering the cancellable object from another thread. If the
- * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
- * returned.
+ * Removes the #GDBusInterface with @interface_name from @object.
  *
- * If a file or directory with this name already exists the
- * %G_IO_ERROR_EXISTS error will be returned. Some file systems don't
- * allow all file names, and may return an %G_IO_ERROR_INVALID_FILENAME
- * error, and if the name is to long %G_IO_ERROR_FILENAME_TOO_LONG will
- * be returned. Other errors are possible too, and depend on what kind
- * of filesystem the file is on.
+ * If no D-Bus interface of the given interface exists, this function
+ * does nothing.
  *
- * Returns: (transfer full): a #GFileOutputStream for the newly created
- *     file, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_create_async:
- * @file: input #GFile
- * @flags: a set of #GFileCreateFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Asynchronously creates a new file and returns an output stream
- * for writing to it. The file must not already exist.
+ * g_dbus_object_skeleton_set_object_path:
+ * @object: A #GDBusObjectSkeleton.
+ * @object_path: A valid D-Bus object path.
  *
- * For more details, see g_file_create() which is
- * the synchronous version of this call.
+ * Sets the object path for @object.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_create_finish() to get the result
- * of the operation.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_create_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_dbus_property_info_ref:
+ * @info: A #GDBusPropertyInfo
  *
- * Finishes an asynchronous file create operation started with
- * g_file_create_async().
+ * If @info is statically allocated does nothing. Otherwise increases
+ * the reference count.
  *
- * Returns: (transfer full): a #GFileOutputStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Returns: The same @info.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_create_readwrite:
- * @file: a #GFile
- * @flags: a set of #GFileCreateFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: return location for a #GError, or %NULL
- *
- * 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 #G_FILE_CREATE_PRIVATE in @flags the file
- * will be made readable only to the current user, to the level
- * that is supported on the target filesystem.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled
- * by triggering the cancellable object from another thread. If the
- * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
- * returned.
- *
- * If a file or directory with this name already exists, the
- * %G_IO_ERROR_EXISTS error will be returned. Some file systems don't
- * allow all file names, and may return an %G_IO_ERROR_INVALID_FILENAME
- * error, and if the name is too long, %G_IO_ERROR_FILENAME_TOO_LONG
- * will be returned. Other errors are possible too, and depend on what
- * kind of filesystem the file is on.
+ * g_dbus_property_info_unref:
+ * @info: A #GDBusPropertyInfo.
  *
- * 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.
+ * If @info is statically allocated, does nothing. Otherwise decreases
+ * the reference count of @info. When its reference count drops to 0,
+ * the memory used is freed.
  *
- * Returns: (transfer full): a #GFileIOStream for the newly created
- *     file, or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Since: 2.26
  */
 
 
 /**
- * g_file_create_readwrite_async:
- * @file: input #GFile
- * @flags: a set of #GFileCreateFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_dbus_proxy_call:
+ * @proxy: A #GDBusProxy.
+ * @method_name: Name of method to invoke.
+ * @parameters: (nullable): A #GVariant tuple with parameters for the signal or %NULL if not passing parameters.
+ * @flags: Flags from the #GDBusCallFlags enumeration.
+ * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
+ *                "infinite") or -1 to use the proxy default timeout.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: (nullable): A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't
+ * care about the result of the method invocation.
+ * @user_data: The data to pass to @callback.
  *
- * Asynchronously creates a new file and returns a stream
- * for reading and writing to it. The file must not already exist.
+ * Asynchronously invokes the @method_name method on @proxy.
  *
- * For more details, see g_file_create_readwrite() which is
- * the synchronous version of this call.
+ * If @method_name contains any dots, then @name is split into interface and
+ * method name parts. This allows using @proxy for invoking methods on
+ * other interfaces.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_create_readwrite_finish() to get
- * the result of the operation.
+ * If the #GDBusConnection associated with @proxy is closed then
+ * the operation will fail with %G_IO_ERROR_CLOSED. If
+ * @cancellable is canceled, the operation will fail with
+ * %G_IO_ERROR_CANCELLED. If @parameters contains a value not
+ * compatible with the D-Bus protocol, the operation fails with
+ * %G_IO_ERROR_INVALID_ARGUMENT.
  *
- * Since: 2.22
+ * If the @parameters #GVariant is floating, it is consumed. This allows
+ * convenient 'inline' use of g_variant_new(), e.g.:
+ * |[<!-- language="C" -->
+ *  g_dbus_proxy_call (proxy,
+ *                     "TwoStrings",
+ *                     g_variant_new ("(ss)",
+ *                                    "Thing One",
+ *                                    "Thing Two"),
+ *                     G_DBUS_CALL_FLAGS_NONE,
+ *                     -1,
+ *                     NULL,
+ *                     (GAsyncReadyCallback) two_strings_done,
+ *                     &data);
+ * ]|
+ *
+ * If @proxy has an expected interface (see
+ * #GDBusProxy:g-interface-info) and @method_name is referenced by it,
+ * then the return value is checked against the return type.
+ *
+ * This is an asynchronous method. When the operation is finished,
+ * @callback will be invoked in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread you are calling this method from.
+ * You can then call g_dbus_proxy_call_finish() to get the result of
+ * the operation. See g_dbus_proxy_call_sync() for the synchronous
+ * version of this method.
+ *
+ * If @callback is %NULL then the D-Bus method call message will be sent with
+ * the %G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED flag set.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_file_create_readwrite_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_dbus_proxy_call_finish:
+ * @proxy: A #GDBusProxy.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_proxy_call().
+ * @error: Return location for error or %NULL.
  *
- * Finishes an asynchronous file create operation started with
- * g_file_create_readwrite_async().
+ * Finishes an operation started with g_dbus_proxy_call().
  *
- * Returns: (transfer full): a #GFileIOStream or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ * return values. Free with g_variant_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_delete: (virtual delete_file)
- * @file: input #GFile
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
+ * g_dbus_proxy_call_sync:
+ * @proxy: A #GDBusProxy.
+ * @method_name: Name of method to invoke.
+ * @parameters: (nullable): A #GVariant tuple with parameters for the signal
+ *              or %NULL if not passing parameters.
+ * @flags: Flags from the #GDBusCallFlags enumeration.
+ * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
+ *                "infinite") or -1 to use the proxy default timeout.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the @method_name method on @proxy.
+ *
+ * If @method_name contains any dots, then @name is split into interface and
+ * method name parts. This allows using @proxy for invoking methods on
+ * other interfaces.
+ *
+ * If the #GDBusConnection associated with @proxy is disconnected then
+ * the operation will fail with %G_IO_ERROR_CLOSED. If
+ * @cancellable is canceled, the operation will fail with
+ * %G_IO_ERROR_CANCELLED. If @parameters contains a value not
+ * compatible with the D-Bus protocol, the operation fails with
+ * %G_IO_ERROR_INVALID_ARGUMENT.
+ *
+ * If the @parameters #GVariant is floating, it is consumed. This allows
+ * convenient 'inline' use of g_variant_new(), e.g.:
+ * |[<!-- language="C" -->
+ *  g_dbus_proxy_call_sync (proxy,
+ *                          "TwoStrings",
+ *                          g_variant_new ("(ss)",
+ *                                         "Thing One",
+ *                                         "Thing Two"),
+ *                          G_DBUS_CALL_FLAGS_NONE,
+ *                          -1,
+ *                          NULL,
+ *                          &error);
+ * ]|
  *
- * Deletes a file. If the @file is a directory, it will only be
- * deleted if it is empty. This has the same semantics as g_unlink().
+ * The calling thread is blocked until a reply is received. See
+ * g_dbus_proxy_call() for the asynchronous version of this
+ * method.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * If @proxy has an expected interface (see
+ * #GDBusProxy:g-interface-info) and @method_name is referenced by it,
+ * then the return value is checked against the return type.
  *
- * Returns: %TRUE if the file was deleted. %FALSE otherwise.
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ * return values. Free with g_variant_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_delete_async: (virtual delete_file_async)
- * @file: input #GFile
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: the data to pass to callback function
+ * g_dbus_proxy_call_with_unix_fd_list:
+ * @proxy: A #GDBusProxy.
+ * @method_name: Name of method to invoke.
+ * @parameters: (nullable): A #GVariant tuple with parameters for the signal or %NULL if not passing parameters.
+ * @flags: Flags from the #GDBusCallFlags enumeration.
+ * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
+ *                "infinite") or -1 to use the proxy default timeout.
+ * @fd_list: (nullable): A #GUnixFDList or %NULL.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: (nullable): A #GAsyncReadyCallback to call when the request is satisfied or %NULL if you don't
+ * care about the result of the method invocation.
+ * @user_data: The data to pass to @callback.
  *
- * Asynchronously delete a file. If the @file is a directory, it will
- * only be deleted if it is empty.  This has the same semantics as
- * g_unlink().
+ * Like g_dbus_proxy_call() but also takes a #GUnixFDList object.
  *
- * Since: 2.34
+ * This method is only available on UNIX.
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_file_delete_finish: (virtual delete_file_finish)
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_dbus_proxy_call_with_unix_fd_list_finish:
+ * @proxy: A #GDBusProxy.
+ * @out_fd_list: (out) (optional): Return location for a #GUnixFDList or %NULL.
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_proxy_call_with_unix_fd_list().
+ * @error: Return location for error or %NULL.
  *
- * Finishes deleting a file started with g_file_delete_async().
+ * Finishes an operation started with g_dbus_proxy_call_with_unix_fd_list().
  *
- * Returns: %TRUE if the file was deleted. %FALSE otherwise.
- * Since: 2.34
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ * return values. Free with g_variant_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_descriptor_based_get_fd:
- * @fd_based: a #GFileDescriptorBased.
+ * g_dbus_proxy_call_with_unix_fd_list_sync:
+ * @proxy: A #GDBusProxy.
+ * @method_name: Name of method to invoke.
+ * @parameters: (nullable): A #GVariant tuple with parameters for the signal
+ *              or %NULL if not passing parameters.
+ * @flags: Flags from the #GDBusCallFlags enumeration.
+ * @timeout_msec: The timeout in milliseconds (with %G_MAXINT meaning
+ *                "infinite") or -1 to use the proxy default timeout.
+ * @fd_list: (nullable): A #GUnixFDList or %NULL.
+ * @out_fd_list: (out) (optional): Return location for a #GUnixFDList or %NULL.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
  *
- * Gets the underlying file descriptor.
+ * Like g_dbus_proxy_call_sync() but also takes and returns #GUnixFDList objects.
  *
- * Returns: The file descriptor
- * Since: 2.24
+ * This method is only available on UNIX.
+ *
+ * Returns: %NULL if @error is set. Otherwise a #GVariant tuple with
+ * return values. Free with g_variant_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_file_dup:
- * @file: input #GFile
- *
- * Duplicates a #GFile handle. This operation does not duplicate
- * the actual file or directory represented by the #GFile; see
- * g_file_copy() if attempting to copy a file.
+ * g_dbus_proxy_get_cached_property:
+ * @proxy: A #GDBusProxy.
+ * @property_name: Property name.
  *
- * g_file_dup() is useful when a second handle is needed to the same underlying
- * file, for use in a separate thread (#GFile is not thread-safe). For use
- * within the same thread, use g_object_ref() to increment the existing object’s
- * reference count.
+ * Looks up the value for a property from the cache. This call does no
+ * blocking IO.
  *
- * This call does no blocking I/O.
+ * If @proxy has an expected interface (see
+ * #GDBusProxy:g-interface-info) and @property_name is referenced by
+ * it, then @value is checked against the type of the property.
  *
- * Returns: (transfer full): a new #GFile that is a duplicate
- *     of the given #GFile.
+ * Returns: (transfer full) (nullable): A reference to the #GVariant instance
+ *    that holds the value for @property_name or %NULL if the value is not in
+ *    the cache. The returned reference must be freed with g_variant_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_eject_mountable:
- * @file: input #GFile
- * @flags: flags affecting the operation
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
- * @user_data: (closure): the data to pass to callback function
- *
- * Starts an asynchronous eject on a mountable.
- * When this operation has completed, @callback will be called with
- * @user_user data, and the operation can be finalized with
- * g_file_eject_mountable_finish().
+ * g_dbus_proxy_get_cached_property_names:
+ * @proxy: A #GDBusProxy.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets the names of all cached properties on @proxy.
  *
- * Deprecated: 2.22: Use g_file_eject_mountable_with_operation() instead.
+ * Returns: (transfer full) (nullable) (array zero-terminated=1): A
+ *          %NULL-terminated array of strings or %NULL if
+ *          @proxy has no cached properties. Free the returned array with
+ *          g_strfreev().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_eject_mountable_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_dbus_proxy_get_connection:
+ * @proxy: A #GDBusProxy.
  *
- * Finishes an asynchronous eject operation started by
- * g_file_eject_mountable().
+ * Gets the connection @proxy is for.
  *
- * Returns: %TRUE if the @file was ejected successfully.
- *     %FALSE otherwise.
- * Deprecated: 2.22: Use g_file_eject_mountable_with_operation_finish()
- *     instead.
+ * Returns: (transfer none): A #GDBusConnection owned by @proxy. Do not free.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_eject_mountable_with_operation:
- * @file: input #GFile
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
- * @user_data: (closure): the data to pass to callback function
+ * g_dbus_proxy_get_default_timeout:
+ * @proxy: A #GDBusProxy.
  *
- * Starts an asynchronous eject on a mountable.
- * When this operation has completed, @callback will be called with
- * @user_user data, and the operation can be finalized with
- * g_file_eject_mountable_with_operation_finish().
+ * Gets the timeout to use if -1 (specifying default timeout) is
+ * passed as @timeout_msec in the g_dbus_proxy_call() and
+ * g_dbus_proxy_call_sync() functions.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * See the #GDBusProxy:g-default-timeout property for more details.
  *
- * Since: 2.22
+ * Returns: Timeout to use for @proxy.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_eject_mountable_with_operation_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_dbus_proxy_get_flags:
+ * @proxy: A #GDBusProxy.
  *
- * Finishes an asynchronous eject operation started by
- * g_file_eject_mountable_with_operation().
+ * Gets the flags that @proxy was constructed with.
  *
- * Returns: %TRUE if the @file was ejected successfully.
- *     %FALSE otherwise.
- * Since: 2.22
+ * Returns: Flags from the #GDBusProxyFlags enumeration.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerate_children:
- * @file: input #GFile
- * @attributes: an attribute query string
- * @flags: a set of #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: #GError for error reporting
- *
- * Gets the requested information about the files in a directory.
- * The result is a #GFileEnumerator object that will give out
- * #GFileInfo objects for all the files in the directory.
- *
- * The @attributes value is a string that specifies the file
- * attributes that should be gathered. It is not an error if
- * it's not possible to read a particular requested attribute
- * from a file - it just won't be set. @attributes should
- * be a comma-separated list of attributes or attribute wildcards.
- * The wildcard "*" 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.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled
- * by triggering the cancellable object from another thread. If the
- * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
- * returned.
+ * g_dbus_proxy_get_interface_info:
+ * @proxy: A #GDBusProxy
  *
- * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will
- * be returned. If the file is not a directory, the %G_IO_ERROR_NOT_DIRECTORY
- * error will be returned. Other errors are possible too.
+ * Returns the #GDBusInterfaceInfo, if any, specifying the interface
+ * that @proxy conforms to. See the #GDBusProxy:g-interface-info
+ * property for more details.
  *
- * Returns: (transfer full): A #GFileEnumerator if successful,
- *     %NULL on error. Free the returned object with g_object_unref().
+ * Returns: (transfer none) (nullable): A #GDBusInterfaceInfo or %NULL.
+ *    Do not unref the returned object, it is owned by @proxy.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerate_children_async:
- * @file: input #GFile
- * @attributes: an attribute query string
- * @flags: a set of #GFileQueryInfoFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *     request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Asynchronously gets the requested information about the files
- * in a directory. The result is a #GFileEnumerator object that will
- * give out #GFileInfo objects for all the files in the directory.
+ * g_dbus_proxy_get_interface_name:
+ * @proxy: A #GDBusProxy.
  *
- * For more details, see g_file_enumerate_children() which is
- * the synchronous version of this call.
+ * Gets the D-Bus interface name @proxy is for.
  *
- * When the operation is finished, @callback will be called. You can
- * then call g_file_enumerate_children_finish() to get the result of
- * the operation.
+ * Returns: A string owned by @proxy. Do not free.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerate_children_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError
+ * g_dbus_proxy_get_name:
+ * @proxy: A #GDBusProxy.
  *
- * Finishes an async enumerate children operation.
- * See g_file_enumerate_children_async().
+ * Gets the name that @proxy was constructed for.
  *
- * Returns: (transfer full): a #GFileEnumerator or %NULL
- *     if an error occurred.
- *     Free the returned object with g_object_unref().
+ * Returns: A string owned by @proxy. Do not free.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_close:
- * @enumerator: a #GFileEnumerator.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Releases all resources used by this enumerator, making the
- * enumerator return %G_IO_ERROR_CLOSED on all calls.
+ * g_dbus_proxy_get_name_owner:
+ * @proxy: A #GDBusProxy.
  *
- * This will be automatically called when the last reference
- * is dropped, but you might want to call this function to make
- * sure resources are released as early as possible.
+ * The unique name that owns the name that @proxy is for or %NULL if
+ * no-one currently owns that name. You may connect to the
+ * #GObject::notify signal to track changes to the
+ * #GDBusProxy:g-name-owner property.
  *
- * Returns: #TRUE on success or #FALSE on error.
+ * Returns: (transfer full) (nullable): The name owner or %NULL if no name
+ *    owner exists. Free with g_free().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_close_async:
- * @enumerator: a #GFileEnumerator.
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_dbus_proxy_get_object_path:
+ * @proxy: A #GDBusProxy.
  *
- * Asynchronously closes the file enumerator.
+ * Gets the object path @proxy is for.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned in
- * g_file_enumerator_close_finish().
+ * Returns: A string owned by @proxy. Do not free.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_close_finish:
- * @enumerator: a #GFileEnumerator.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_dbus_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.
+ * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @interface_name: A D-Bus interface name.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
  *
- * Finishes closing a file enumerator, started from g_file_enumerator_close_async().
+ * Creates a proxy for accessing @interface_name on the remote object
+ * at @object_path owned by @name at @connection and asynchronously
+ * loads D-Bus properties unless the
+ * %G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used. Connect to
+ * the #GDBusProxy::g-properties-changed signal to get notified about
+ * property changes.
  *
- * If the file enumerator was already closed when g_file_enumerator_close_async()
- * was called, then this function will report %G_IO_ERROR_CLOSED in @error, and
- * return %FALSE. If the file enumerator had pending operation when the close
- * operation was started, then this function will report %G_IO_ERROR_PENDING, and
- * return %FALSE.  If @cancellable was not %NULL, then the operation may have been
- * cancelled by triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %FALSE will be
- * returned.
+ * If the %G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up
+ * match rules for signals. Connect to the #GDBusProxy::g-signal signal
+ * to handle signals from the remote object.
  *
- * Returns: %TRUE if the close operation has finished successfully.
- */
-
-
-/**
- * g_file_enumerator_get_child:
- * @enumerator: a #GFileEnumerator
- * @info: a #GFileInfo gotten from g_file_enumerator_next_file()
- *   or the async equivalents.
+ * If @name is a well-known name and the
+ * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION
+ * flags aren't set and no name owner currently exists, the message bus
+ * will be requested to launch a name owner for the name.
  *
- * Return a new #GFile which refers to the file named by @info in the source
- * directory of @enumerator.  This function is primarily intended to be used
- * inside loops with g_file_enumerator_next_file().
+ * This is a failable asynchronous constructor - when the proxy is
+ * ready, @callback will be invoked and you can use
+ * g_dbus_proxy_new_finish() to get the result.
  *
- * This is a convenience method that's equivalent to:
- * |[<!-- language="C" -->
- *   gchar *name = g_file_info_get_name (info);
- *   GFile *child = g_file_get_child (g_file_enumerator_get_container (enumr),
- *                                    name);
- * ]|
+ * See g_dbus_proxy_new_sync() and for a synchronous version of this constructor.
  *
- * Returns: (transfer full): a #GFile for the #GFileInfo passed it.
- * Since: 2.36
+ * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_get_container:
- * @enumerator: a #GFileEnumerator
+ * g_dbus_proxy_new_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to g_dbus_proxy_new().
+ * @error: Return location for error or %NULL.
  *
- * Get the #GFile container which is being enumerated.
+ * Finishes creating a #GDBusProxy.
  *
- * Returns: (transfer none): the #GFile which is being enumerated.
- * Since: 2.18
+ * Returns: (transfer full): A #GDBusProxy or %NULL if @error is set.
+ *    Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_has_pending:
- * @enumerator: a #GFileEnumerator.
+ * g_dbus_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @interface_name: A D-Bus interface name.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: Callback function to invoke when the proxy is ready.
+ * @user_data: User data to pass to @callback.
  *
- * Checks if the file enumerator has pending operations.
+ * Like g_dbus_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
  *
- * Returns: %TRUE if the @enumerator has pending operations.
+ * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_is_closed:
- * @enumerator: a #GFileEnumerator.
+ * g_dbus_proxy_new_for_bus_finish:
+ * @res: A #GAsyncResult obtained from the #GAsyncReadyCallback function passed to g_dbus_proxy_new_for_bus().
+ * @error: Return location for error or %NULL.
  *
- * Checks if the file enumerator has been closed.
+ * Finishes creating a #GDBusProxy.
  *
- * Returns: %TRUE if the @enumerator is closed.
+ * Returns: (transfer full): A #GDBusProxy or %NULL if @error is set.
+ *    Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_iterate:
- * @direnum: an open #GFileEnumerator
- * @out_info: (out) (transfer none) (optional): Output location for the next #GFileInfo, or %NULL
- * @out_child: (out) (transfer none) (optional): Output location for the next #GFile, or %NULL
- * @cancellable: a #GCancellable
- * @error: a #GError
- *
- * This is a version of g_file_enumerator_next_file() that's easier to
- * use correctly from C programs.  With g_file_enumerator_next_file(),
- * the gboolean return value signifies "end of iteration or error", which
- * requires allocation of a temporary #GError.
- *
- * In contrast, with this function, a %FALSE return from
- * g_file_enumerator_iterate() *always* means
- * "error".  End of iteration is signaled by @out_info or @out_child being %NULL.
- *
- * Another crucial difference is that the references for @out_info and
- * @out_child are owned by @direnum (they are cached as hidden
- * properties).  You must not unref them in your own code.  This makes
- * memory management significantly easier for C code in combination
- * with loops.
- *
- * Finally, this function optionally allows retrieving a #GFile as
- * well.
- *
- * You must specify at least one of @out_info or @out_child.
- *
- * The code pattern for correctly using g_file_enumerator_iterate() from C
- * is:
+ * g_dbus_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags used when constructing the proxy.
+ * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface
+ *        that @proxy conforms to or %NULL.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @interface_name: A D-Bus interface name.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
  *
- * |[
- * direnum = g_file_enumerate_children (file, ...);
- * while (TRUE)
- *   {
- *     GFileInfo *info;
- *     if (!g_file_enumerator_iterate (direnum, &info, NULL, cancellable, error))
- *       goto out;
- *     if (!info)
- *       break;
- *     ... do stuff with "info"; do not unref it! ...
- *   }
+ * Like g_dbus_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
  *
- * out:
- *   g_object_unref (direnum); // Note: frees the last @info
- * ]|
+ * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
  *
- * Since: 2.44
+ * Returns: (transfer full): A #GDBusProxy or %NULL if error is set.
+ *    Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_next_file:
- * @enumerator: a #GFileEnumerator.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
+ * g_dbus_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags used when constructing the proxy.
+ * @info: (nullable): A #GDBusInterfaceInfo specifying the minimal interface that @proxy conforms to or %NULL.
+ * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @interface_name: A D-Bus interface name.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: (nullable): Return location for error or %NULL.
  *
- * Returns information for the next file in the enumerated object.
- * Will block until the information is available. The #GFileInfo
- * returned from this function will contain attributes that match the
- * attribute string that was passed when the #GFileEnumerator was created.
+ * Creates a proxy for accessing @interface_name on the remote object
+ * at @object_path owned by @name at @connection and synchronously
+ * loads D-Bus properties unless the
+ * %G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES flag is used.
  *
- * See the documentation of #GFileEnumerator for information about the
- * order of returned files.
+ * If the %G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS flag is not set, also sets up
+ * match rules for signals. Connect to the #GDBusProxy::g-signal signal
+ * to handle signals from the remote object.
  *
- * On error, returns %NULL and sets @error to the error. If the
- * enumerator is at the end, %NULL will be returned and @error will
- * be unset.
+ * If @name is a well-known name and the
+ * %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START and %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION
+ * flags aren't set and no name owner currently exists, the message bus
+ * will be requested to launch a name owner for the name.
  *
- * Returns: (nullable) (transfer full): A #GFileInfo or %NULL on error
- *    or end of enumerator.  Free the returned object with
- *    g_object_unref() when no longer needed.
+ * This is a synchronous failable constructor. See g_dbus_proxy_new()
+ * and g_dbus_proxy_new_finish() for the asynchronous version.
+ *
+ * #GDBusProxy is used in this [example][gdbus-wellknown-proxy].
+ *
+ * Returns: (transfer full): A #GDBusProxy or %NULL if error is set.
+ *    Free with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_next_files_async:
- * @enumerator: a #GFileEnumerator.
- * @num_files: the number of file info objects to request
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_dbus_proxy_set_cached_property:
+ * @proxy: A #GDBusProxy
+ * @property_name: Property name.
+ * @value: (nullable): Value for the property or %NULL to remove it from the cache.
  *
- * Request information for a number of files from the enumerator asynchronously.
- * When all i/o for the operation is finished the @callback will be called with
- * the requested information.
+ * If @value is not %NULL, sets the cached value for the property with
+ * name @property_name to the value in @value.
  *
- * See the documentation of #GFileEnumerator for information about the
- * order of returned files.
+ * If @value is %NULL, then the cached value is removed from the
+ * property cache.
  *
- * The callback can 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 %G_IO_ERROR_CANCELLED.
+ * If @proxy has an expected interface (see
+ * #GDBusProxy:g-interface-info) and @property_name is referenced by
+ * it, then @value is checked against the type of the property.
  *
- * During an async request no other sync and async calls are allowed, and will
- * result in %G_IO_ERROR_PENDING errors.
+ * If the @value #GVariant is floating, it is consumed. This allows
+ * convenient 'inline' use of g_variant_new(), e.g.
+ * |[<!-- language="C" -->
+ *  g_dbus_proxy_set_cached_property (proxy,
+ *                                    "SomeProperty",
+ *                                    g_variant_new ("(si)",
+ *                                                  "A String",
+ *                                                  42));
+ * ]|
  *
- * Any outstanding i/o request with higher priority (lower numerical value) will
- * be executed before an outstanding request with lower priority. Default
- * priority is %G_PRIORITY_DEFAULT.
+ * Normally you will not need to use this method since @proxy
+ * is tracking changes using the
+ * `org.freedesktop.DBus.Properties.PropertiesChanged`
+ * D-Bus signal. However, for performance reasons an object may
+ * decide to not use this signal for some properties and instead
+ * use a proprietary out-of-band mechanism to transmit changes.
+ *
+ * As a concrete example, consider an object with a property
+ * `ChatroomParticipants` which is an array of strings. Instead of
+ * transmitting the same (long) array every time the property changes,
+ * it is more efficient to only transmit the delta using e.g. signals
+ * `ChatroomParticipantJoined(String name)` and
+ * `ChatroomParticipantParted(String name)`.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_next_files_finish:
- * @enumerator: a #GFileEnumerator.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_dbus_proxy_set_default_timeout:
+ * @proxy: A #GDBusProxy.
+ * @timeout_msec: Timeout in milliseconds.
  *
- * Finishes the asynchronous operation started with g_file_enumerator_next_files_async().
+ * Sets the timeout to use if -1 (specifying default timeout) is
+ * passed as @timeout_msec in the g_dbus_proxy_call() and
+ * g_dbus_proxy_call_sync() functions.
  *
- * Returns: (transfer full) (element-type Gio.FileInfo): a #GList of #GFileInfos. You must free the list with
- *     g_list_free() and unref the infos with g_object_unref() when you're
- *     done with them.
+ * See the #GDBusProxy:g-default-timeout property for more details.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_file_enumerator_set_pending:
- * @enumerator: a #GFileEnumerator.
- * @pending: a boolean value.
+ * g_dbus_proxy_set_interface_info:
+ * @proxy: A #GDBusProxy
+ * @info: (transfer none) (nullable): Minimum interface this proxy conforms to
+ *    or %NULL to unset.
  *
- * Sets the file enumerator as having pending operations.
+ * Ensure that interactions with @proxy conform to the given
+ * interface. See the #GDBusProxy:g-interface-info property for more
+ * details.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_file_equal:
- * @file1: the first #GFile
- * @file2: the second #GFile
- *
- * Checks if the two given #GFiles refer to the same file.
- *
- * Note that two #GFiles that differ can still refer to the same
- * file on the filesystem due to various forms of filename
- * aliasing.
+ * g_dbus_server_get_client_address:
+ * @server: A #GDBusServer.
  *
- * This call does no blocking I/O.
+ * Gets a
+ * [D-Bus address](https://dbus.freedesktop.org/doc/dbus-specification.html#addresses)
+ * string that can be used by clients to connect to @server.
  *
- * Returns: %TRUE if @file1 and @file2 are equal.
+ * Returns: A D-Bus address string. Do not free, the string is owned
+ * by @server.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_find_enclosing_mount:
- * @file: input #GFile
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError
- *
- * Gets a #GMount for the #GFile.
- *
- * If the #GFileIface for @file does not have a mount (e.g.
- * possibly a remote share), @error will be set to %G_IO_ERROR_NOT_FOUND
- * and %NULL will be returned.
+ * g_dbus_server_get_flags:
+ * @server: A #GDBusServer.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets the flags for @server.
  *
- * Returns: (transfer full): a #GMount where the @file is located
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Returns: A set of flags from the #GDBusServerFlags enumeration.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_find_enclosing_mount_async:
- * @file: a #GFile
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Asynchronously gets the mount for the file.
+ * g_dbus_server_get_guid:
+ * @server: A #GDBusServer.
  *
- * For more details, see g_file_find_enclosing_mount() which is
- * the synchronous version of this call.
+ * Gets the GUID for @server.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_find_enclosing_mount_finish() to
- * get the result of the operation.
+ * Returns: A D-Bus GUID. Do not free this string, it is owned by @server.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_find_enclosing_mount_finish:
- * @file: a #GFile
- * @res: a #GAsyncResult
- * @error: a #GError
+ * g_dbus_server_is_active:
+ * @server: A #GDBusServer.
  *
- * Finishes an asynchronous find mount request.
- * See g_file_find_enclosing_mount_async().
+ * Gets whether @server is active.
  *
- * Returns: (transfer full): #GMount for given @file or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Returns: %TRUE if server is active, %FALSE otherwise.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_get_basename:
- * @file: input #GFile
- *
- * Gets the base name (the last component of the path) for a given #GFile.
- *
- * If called for the top level of a system (such as the filesystem root
- * or a uri like sftp://host/) it will return a single directory separator
- * (and on Windows, possibly a drive letter).
+ * g_dbus_server_new_sync:
+ * @address: A D-Bus address.
+ * @flags: Flags from the #GDBusServerFlags enumeration.
+ * @guid: A D-Bus GUID.
+ * @observer: (nullable): A #GDBusAuthObserver or %NULL.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for server or %NULL.
  *
- * The base name is a byte string (not UTF-8). It has no defined encoding
- * or rules other than it may not contain zero bytes.  If you want to use
- * filenames in a user interface you should use the display name that you
- * can get by requesting the %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME
- * attribute with g_file_query_info().
+ * Creates a new D-Bus server that listens on the first address in
+ * @address that works.
  *
- * This call does no blocking I/O.
+ * Once constructed, you can use g_dbus_server_get_client_address() to
+ * get a D-Bus address string that clients can use to connect.
  *
- * Returns: (type filename) (nullable): string containing the #GFile's
- *     base name, or %NULL if given #GFile is invalid. The returned string
- *     should be freed with g_free() when no longer needed.
- */
-
-
-/**
- * g_file_get_child:
- * @file: input #GFile
- * @name: (type filename): string containing the child's basename
+ * Connect to the #GDBusServer::new-connection signal to handle
+ * incoming connections.
  *
- * Gets a child of @file with basename equal to @name.
+ * The returned #GDBusServer isn't active - you have to start it with
+ * g_dbus_server_start().
  *
- * Note that the file with that specific name might not exist, but
- * you can still have a #GFile that points to it. You can use this
- * for instance to create that file.
+ * #GDBusServer is used in this [example][gdbus-peer-to-peer].
  *
- * This call does no blocking I/O.
+ * This is a synchronous failable constructor. See
+ * g_dbus_server_new() for the asynchronous version.
  *
- * Returns: (transfer full): a #GFile to a child specified by @name.
- *     Free the returned object with g_object_unref().
+ * Returns: A #GDBusServer or %NULL if @error is set. Free with
+ * g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_get_child_for_display_name:
- * @file: input #GFile
- * @display_name: string to a possible child
- * @error: return location for an error
- *
- * Gets the child of @file for a given @display_name (i.e. a UTF-8
- * version of the name). If this function fails, it returns %NULL
- * and @error will be set. This is very useful when constructing a
- * #GFile for a new file and the user entered the filename in the
- * user interface, for instance when you select a directory and
- * type a filename in the file selector.
+ * g_dbus_server_start:
+ * @server: A #GDBusServer.
  *
- * This call does no blocking I/O.
+ * Starts @server.
  *
- * Returns: (transfer full): a #GFile to the specified child, or
- *     %NULL if the display name couldn't be converted.
- *     Free the returned object with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_get_parent:
- * @file: input #GFile
- *
- * Gets the parent directory for the @file.
- * If the @file represents the root directory of the
- * file system, then %NULL will be returned.
+ * g_dbus_server_stop:
+ * @server: A #GDBusServer.
  *
- * This call does no blocking I/O.
+ * Stops @server.
  *
- * Returns: (nullable) (transfer full): a #GFile structure to the
- *     parent of the given #GFile or %NULL if there is no parent. Free
- *     the returned object with g_object_unref().
+ * Since: 2.26
  */
 
 
 /**
- * g_file_get_parse_name:
- * @file: input #GFile
- *
- * Gets the parse name of the @file.
- * A parse name is a UTF-8 string that describes the
- * file such that one can get the #GFile back using
- * g_file_parse_name().
- *
- * This is generally used to show the #GFile as a nice
- * full-pathname kind of string in a user interface,
- * like in a location entry.
- *
- * For local files with names that can safely be converted
- * to UTF-8 the pathname is used, otherwise the IRI is used
- * (a form of URI that allows UTF-8 characters unescaped).
+ * g_dbus_signal_info_ref:
+ * @info: A #GDBusSignalInfo
  *
- * This call does no blocking I/O.
+ * If @info is statically allocated does nothing. Otherwise increases
+ * the reference count.
  *
- * Returns: a string containing the #GFile's parse name.
- *     The returned string should be freed with g_free()
- *     when no longer needed.
+ * Returns: The same @info.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_get_path:
- * @file: input #GFile
- *
- * Gets the local pathname for #GFile, if one exists. If non-%NULL, this is
- * guaranteed to be an absolute, canonical path. It might contain symlinks.
+ * g_dbus_signal_info_unref:
+ * @info: A #GDBusSignalInfo.
  *
- * This call does no blocking I/O.
+ * If @info is statically allocated, does nothing. Otherwise decreases
+ * the reference count of @info. When its reference count drops to 0,
+ * the memory used is freed.
  *
- * Returns: (type filename) (nullable): string containing the #GFile's path,
- *     or %NULL if no such path exists. The returned string should be freed
- *     with g_free() when no longer needed.
+ * Since: 2.26
  */
 
 
 /**
- * g_file_get_relative_path:
- * @parent: input #GFile
- * @descendant: input #GFile
+ * g_desktop_app_info_get_action_name:
+ * @info: a #GDesktopAppInfo
+ * @action_name: the name of the action as from
+ *   g_desktop_app_info_list_actions()
  *
- * Gets the path for @descendant relative to @parent.
+ * Gets the user-visible display name of the "additional application
+ * action" specified by @action_name.
  *
- * This call does no blocking I/O.
+ * This corresponds to the "Name" key within the keyfile group for the
+ * action.
  *
- * Returns: (type filename) (nullable): string with the relative path from
- *     @descendant to @parent, or %NULL if @descendant doesn't have @parent as
- *     prefix. The returned string should be freed with g_free() when
- *     no longer needed.
+ * Returns: (transfer full): the locale-specific action name
+ * Since: 2.38
  */
 
 
 /**
- * g_file_get_uri:
- * @file: input #GFile
+ * g_desktop_app_info_get_boolean:
+ * @info: a #GDesktopAppInfo
+ * @key: the key to look up
  *
- * Gets the URI for the @file.
+ * Looks up a boolean value in the keyfile backing @info.
  *
- * This call does no blocking I/O.
+ * The @key is looked up in the "Desktop Entry" group.
  *
- * Returns: a string containing the #GFile's URI.
- *     The returned string should be freed with g_free()
- *     when no longer needed.
+ * Returns: the boolean value, or %FALSE if the key
+ *     is not found
+ * Since: 2.36
  */
 
 
 /**
- * g_file_get_uri_scheme:
- * @file: input #GFile
- *
- * Gets the URI scheme for a #GFile.
- * RFC 3986 decodes the scheme as:
- * |[
- * URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
- * ]|
- * Common schemes include "file", "http", "ftp", etc.
+ * g_desktop_app_info_get_categories:
+ * @info: a #GDesktopAppInfo
  *
- * This call does no blocking I/O.
+ * Gets the categories from the desktop file.
  *
- * Returns: a string containing the URI scheme for the given
- *     #GFile. The returned string should be freed with g_free()
- *     when no longer needed.
+ * Returns: The unparsed Categories key from the desktop file;
+ *     i.e. no attempt is made to split it by ';' or validate it.
  */
 
 
 /**
- * g_file_has_parent:
- * @file: input #GFile
- * @parent: (nullable): the parent to check for, or %NULL
- *
- * Checks if @file has a parent, and optionally, if it is @parent.
+ * g_desktop_app_info_get_filename:
+ * @info: a #GDesktopAppInfo
  *
- * If @parent is %NULL then this function returns %TRUE if @file has any
- * parent at all.  If @parent is non-%NULL then %TRUE is only returned
- * if @file is an immediate child of @parent.
+ * When @info was created from a known filename, return it.  In some
+ * situations such as the #GDesktopAppInfo returned from
+ * g_desktop_app_info_new_from_keyfile(), this function will return %NULL.
  *
- * Returns: %TRUE if @file is an immediate child of @parent (or any parent in
- *          the case that @parent is %NULL).
+ * Returns: (type filename): The full path to the file for @info,
+ *     or %NULL if not known.
  * Since: 2.24
  */
 
 
 /**
- * g_file_has_prefix: (virtual prefix_matches)
- * @file: input #GFile
- * @prefix: input #GFile
- *
- * Checks whether @file has the prefix specified by @prefix.
- *
- * In other words, if the names of initial elements of @file's
- * pathname match @prefix. Only full pathname elements are matched,
- * so a path like /foo is not considered a prefix of /foobar, only
- * of /foo/bar.
- *
- * A #GFile is not a prefix of itself. If you want to check for
- * equality, use g_file_equal().
+ * g_desktop_app_info_get_generic_name:
+ * @info: a #GDesktopAppInfo
  *
- * This call does no I/O, as it works purely on names. As such it can
- * sometimes return %FALSE even if @file is inside a @prefix (from a
- * filesystem point of view), because the prefix of @file is an alias
- * of @prefix.
+ * Gets the generic name from the destkop file.
  *
- * Returns: %TRUE if the @files's parent, grandparent, etc is @prefix,
- *     %FALSE otherwise.
+ * Returns: The value of the GenericName key
  */
 
 
 /**
- * g_file_has_uri_scheme:
- * @file: input #GFile
- * @uri_scheme: a string containing a URI scheme
+ * g_desktop_app_info_get_implementations:
+ * @interface: the name of the interface
  *
- * Checks to see if a #GFile has a given URI scheme.
+ * Gets all applications that implement @interface.
  *
- * This call does no blocking I/O.
+ * An application implements an interface if that interface is listed in
+ * the Implements= line of the desktop file of the application.
  *
- * Returns: %TRUE if #GFile's backend supports the
- *     given URI scheme, %FALSE if URI scheme is %NULL,
- *     not supported, or #GFile is invalid.
+ * Returns: (element-type GDesktopAppInfo) (transfer full): a list of #GDesktopAppInfo
+ * objects.
+ * Since: 2.42
  */
 
 
 /**
- * g_file_hash: (virtual hash)
- * @file: (type GFile): #gconstpointer to a #GFile
- *
- * Creates a hash value for a #GFile.
+ * g_desktop_app_info_get_is_hidden:
+ * @info: a #GDesktopAppInfo.
  *
- * This call does no blocking I/O.
+ * A desktop file is hidden if the Hidden key in it is
+ * set to True.
  *
- * Returns: 0 if @file is not a valid #GFile, otherwise an
- *     integer that can be used as hash value for the #GFile.
- *     This function is intended for easily hashing a #GFile to
- *     add to a #GHashTable or similar data structure.
+ * Returns: %TRUE if hidden, %FALSE otherwise.
  */
 
 
 /**
- * g_file_icon_get_file:
- * @icon: a #GIcon.
+ * g_desktop_app_info_get_keywords:
+ * @info: a #GDesktopAppInfo
  *
- * Gets the #GFile associated with the given @icon.
+ * Gets the keywords from the desktop file.
  *
- * Returns: (transfer none): a #GFile, or %NULL.
+ * Returns: (transfer none): The value of the Keywords key
+ * Since: 2.32
  */
 
 
 /**
- * g_file_icon_new:
- * @file: a #GFile.
+ * g_desktop_app_info_get_locale_string:
+ * @info: a #GDesktopAppInfo
+ * @key: the key to look up
  *
- * Creates a new icon for a file.
+ * Looks up a localized string value in the keyfile backing @info
+ * translated to the current locale.
  *
- * Returns: (transfer full) (type GFileIcon): a #GIcon for the given
- *   @file, or %NULL on error.
+ * The @key is looked up in the "Desktop Entry" group.
+ *
+ * Returns: (nullable): a newly allocated string, or %NULL if the key
+ *     is not found
+ * Since: 2.56
  */
 
 
 /**
- * g_file_info_clear_status:
- * @info: a #GFileInfo.
+ * g_desktop_app_info_get_nodisplay:
+ * @info: a #GDesktopAppInfo
  *
- * Clears the status information from @info.
+ * Gets the value of the NoDisplay key, which helps determine if the
+ * application info should be shown in menus. See
+ * #G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY and g_app_info_should_show().
+ *
+ * Returns: The value of the NoDisplay key
+ * Since: 2.30
  */
 
 
 /**
- * g_file_info_copy_into:
- * @src_info: source to copy attributes from.
- * @dest_info: destination to copy attributes to.
+ * g_desktop_app_info_get_show_in:
+ * @info: a #GDesktopAppInfo
+ * @desktop_env: (nullable): a string specifying a desktop name
  *
- * First clears all of the [GFileAttribute][gio-GFileAttribute] of @dest_info,
- * and then copies all of the file attributes from @src_info to @dest_info.
+ * Checks if the application info should be shown in menus that list available
+ * applications for a specific name of the desktop, based on the
+ * `OnlyShowIn` and `NotShowIn` keys.
+ *
+ * @desktop_env should typically be given as %NULL, in which case the
+ * `XDG_CURRENT_DESKTOP` environment variable is consulted.  If you want
+ * to override the default mechanism then you may specify @desktop_env,
+ * but this is not recommended.
+ *
+ * Note that g_app_info_should_show() for @info will include this check (with
+ * %NULL for @desktop_env) as well as additional checks.
+ *
+ * Returns: %TRUE if the @info should be shown in @desktop_env according to the
+ * `OnlyShowIn` and `NotShowIn` keys, %FALSE
+ * otherwise.
+ * Since: 2.30
  */
 
 
 /**
- * g_file_info_dup:
- * @other: a #GFileInfo.
+ * g_desktop_app_info_get_startup_wm_class:
+ * @info: a #GDesktopAppInfo that supports startup notify
  *
- * Duplicates a file info structure.
+ * Retrieves the StartupWMClass field from @info. This represents the
+ * WM_CLASS property of the main window of the application, if launched
+ * through @info.
  *
- * Returns: (transfer full): a duplicate #GFileInfo of @other.
+ * Returns: (transfer none): the startup WM class, or %NULL if none is set
+ * in the desktop file.
+ * Since: 2.34
  */
 
 
 /**
- * g_file_info_get_attribute_as_string:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_get_string:
+ * @info: a #GDesktopAppInfo
+ * @key: the key to look up
  *
- * Gets the value of a attribute, formated as a string.
- * This escapes things as needed to make the string valid
- * utf8.
+ * Looks up a string value in the keyfile backing @info.
  *
- * Returns: a UTF-8 string associated with the given @attribute.
- *    When you're done with the string it must be freed with g_free().
+ * The @key is looked up in the "Desktop Entry" group.
+ *
+ * Returns: a newly allocated string, or %NULL if the key
+ *     is not found
+ * Since: 2.36
  */
 
 
 /**
- * g_file_info_get_attribute_boolean:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_has_key:
+ * @info: a #GDesktopAppInfo
+ * @key: the key to look up
  *
- * Gets the value of a boolean attribute. If the attribute does not
- * contain a boolean value, %FALSE will be returned.
+ * Returns whether @key exists in the "Desktop Entry" group
+ * of the keyfile backing @info.
  *
- * Returns: the boolean value contained within the attribute.
+ * Returns: %TRUE if the @key exists
+ * Since: 2.36
  */
 
 
 /**
- * g_file_info_get_attribute_byte_string:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_launch_action:
+ * @info: a #GDesktopAppInfo
+ * @action_name: the name of the action as from
+ *   g_desktop_app_info_list_actions()
+ * @launch_context: (nullable): a #GAppLaunchContext
  *
- * Gets the value of a byte string attribute. If the attribute does
- * not contain a byte string, %NULL will be returned.
+ * Activates the named application action.
  *
- * Returns: the contents of the @attribute value as a byte string, or
- * %NULL otherwise.
+ * You may only call this function on action names that were
+ * returned from g_desktop_app_info_list_actions().
+ *
+ * Note that if the main entry of the desktop file indicates that the
+ * application supports startup notification, and @launch_context is
+ * non-%NULL, then startup notification will be used when activating the
+ * action (and as such, invocation of the action on the receiving side
+ * must signal the end of startup notification when it is completed).
+ * This is the expected behaviour of applications declaring additional
+ * actions, as per the desktop file specification.
+ *
+ * As with g_app_info_launch() there is no way to detect failures that
+ * occur while using this function.
+ *
+ * Since: 2.38
  */
 
 
 /**
- * g_file_info_get_attribute_data:
- * @info: a #GFileInfo
- * @attribute: a file attribute key
- * @type: (out) (optional): return location for the attribute type, or %NULL
- * @value_pp: (out) (optional) (not nullable): return location for the
- *    attribute value, or %NULL; the attribute value will not be %NULL
- * @status: (out) (optional): return location for the attribute status, or %NULL
+ * g_desktop_app_info_launch_uris_as_manager:
+ * @appinfo: a #GDesktopAppInfo
+ * @uris: (element-type utf8): List of URIs
+ * @launch_context: (nullable): a #GAppLaunchContext
+ * @spawn_flags: #GSpawnFlags, used for each process
+ * @user_setup: (scope async) (nullable): a #GSpawnChildSetupFunc, used once
+ *     for each process.
+ * @user_setup_data: (closure user_setup) (nullable): User data for @user_setup
+ * @pid_callback: (scope call) (nullable): Callback for child processes
+ * @pid_callback_data: (closure pid_callback) (nullable): User data for @callback
+ * @error: return location for a #GError, or %NULL
  *
- * Gets the attribute type, value and status for an attribute key.
+ * This function performs the equivalent of g_app_info_launch_uris(),
+ * but is intended primarily for operating system components that
+ * launch applications.  Ordinary applications should use
+ * g_app_info_launch_uris().
  *
- * Returns: (transfer none): %TRUE if @info has an attribute named @attribute,
- *      %FALSE otherwise.
+ * If the application is launched via GSpawn, then @spawn_flags, @user_setup
+ * and @user_setup_data are used for the call to g_spawn_async().
+ * Additionally, @pid_callback (with @pid_callback_data) will be called to
+ * inform about the PID of the created process. See g_spawn_async_with_pipes()
+ * for information on certain parameter conditions that can enable an
+ * optimized posix_spawn() codepath to be used.
+ *
+ * If application launching occurs via some other mechanism (eg: D-Bus
+ * activation) then @spawn_flags, @user_setup, @user_setup_data,
+ * @pid_callback and @pid_callback_data are ignored.
+ *
+ * Returns: %TRUE on successful launch, %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_get_attribute_int32:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_launch_uris_as_manager_with_fds:
+ * @appinfo: a #GDesktopAppInfo
+ * @uris: (element-type utf8): List of URIs
+ * @launch_context: (nullable): a #GAppLaunchContext
+ * @spawn_flags: #GSpawnFlags, used for each process
+ * @user_setup: (scope async) (nullable): a #GSpawnChildSetupFunc, used once
+ *     for each process.
+ * @user_setup_data: (closure user_setup) (nullable): User data for @user_setup
+ * @pid_callback: (scope call) (nullable): Callback for child processes
+ * @pid_callback_data: (closure pid_callback) (nullable): User data for @callback
+ * @stdin_fd: file descriptor to use for child's stdin, or -1
+ * @stdout_fd: file descriptor to use for child's stdout, or -1
+ * @stderr_fd: file descriptor to use for child's stderr, or -1
+ * @error: return location for a #GError, or %NULL
  *
- * Gets a signed 32-bit integer contained within the attribute. If the
- * attribute does not contain a signed 32-bit integer, or is invalid,
- * 0 will be returned.
+ * Equivalent to g_desktop_app_info_launch_uris_as_manager() but allows
+ * you to pass in file descriptors for the stdin, stdout and stderr streams
+ * of the launched process.
  *
- * Returns: a signed 32-bit integer from the attribute.
+ * If application launching occurs via some non-spawn mechanism (e.g. D-Bus
+ * activation) then @stdin_fd, @stdout_fd and @stderr_fd are ignored.
+ *
+ * Returns: %TRUE on successful launch, %FALSE otherwise.
+ * Since: 2.58
  */
 
 
 /**
- * g_file_info_get_attribute_int64:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_list_actions:
+ * @info: a #GDesktopAppInfo
  *
- * Gets a signed 64-bit integer contained within the attribute. If the
- * attribute does not contain an signed 64-bit integer, or is invalid,
- * 0 will be returned.
+ * Returns the list of "additional application actions" supported on the
+ * desktop file, as per the desktop file specification.
  *
- * Returns: a signed 64-bit integer from the attribute.
+ * As per the specification, this is the list of actions that are
+ * explicitly listed in the "Actions" key of the [Desktop Entry] group.
+ *
+ * Returns: (array zero-terminated=1) (element-type utf8) (transfer none): a list of strings, always non-%NULL
+ * Since: 2.38
  */
 
 
 /**
- * g_file_info_get_attribute_object:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_lookup_get_default_for_uri_scheme:
+ * @lookup: a #GDesktopAppInfoLookup
+ * @uri_scheme: a string containing a URI scheme.
  *
- * Gets the value of a #GObject attribute. If the attribute does
- * not contain a #GObject, %NULL will be returned.
+ * Gets the default application for launching applications
+ * using this URI scheme for a particular GDesktopAppInfoLookup
+ * implementation.
  *
- * Returns: (transfer none): a #GObject associated with the given @attribute, or
- * %NULL otherwise.
+ * The GDesktopAppInfoLookup interface and this function is used
+ * to implement g_app_info_get_default_for_uri_scheme() backends
+ * in a GIO module. There is no reason for applications to use it
+ * directly. Applications should use g_app_info_get_default_for_uri_scheme().
+ *
+ * Returns: (transfer full): #GAppInfo for given @uri_scheme or %NULL on error.
+ * Deprecated: The #GDesktopAppInfoLookup interface is deprecated and unused by gio.
  */
 
 
 /**
- * g_file_info_get_attribute_status:
- * @info: a #GFileInfo
- * @attribute: a file attribute key
+ * g_desktop_app_info_new:
+ * @desktop_id: the desktop file id
  *
- * Gets the attribute status for an attribute key.
+ * Creates a new #GDesktopAppInfo based on a desktop file id.
  *
- * Returns: a #GFileAttributeStatus for the given @attribute, or
- *    %G_FILE_ATTRIBUTE_STATUS_UNSET if the key is invalid.
+ * A desktop file id is the basename of the desktop file, including the
+ * .desktop extension. GIO is looking for a desktop file with this name
+ * in the `applications` subdirectories of the XDG
+ * data directories (i.e. the directories specified in the `XDG_DATA_HOME`
+ * and `XDG_DATA_DIRS` environment variables). GIO also supports the
+ * prefix-to-subdirectory mapping that is described in the
+ * [Menu Spec](http://standards.freedesktop.org/menu-spec/latest/)
+ * (i.e. a desktop id of kde-foo.desktop will match
+ * `/usr/share/applications/kde/foo.desktop`).
+ *
+ * Returns: (nullable): a new #GDesktopAppInfo, or %NULL if no desktop
+ *     file with that id exists.
  */
 
 
 /**
- * g_file_info_get_attribute_string:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_new_from_filename:
+ * @filename: (type filename): the path of a desktop file, in the GLib
+ *      filename encoding
  *
- * Gets the value of a string attribute. If the attribute does
- * not contain a string, %NULL will be returned.
+ * Creates a new #GDesktopAppInfo.
  *
- * Returns: the contents of the @attribute value as a UTF-8 string, or
- * %NULL otherwise.
+ * Returns: (nullable): a new #GDesktopAppInfo or %NULL on error.
  */
 
 
 /**
- * g_file_info_get_attribute_stringv:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_new_from_keyfile:
+ * @key_file: an opened #GKeyFile
  *
- * Gets the value of a stringv attribute. If the attribute does
- * not contain a stringv, %NULL will be returned.
+ * Creates a new #GDesktopAppInfo.
  *
- * Returns: (transfer none): the contents of the @attribute value as a stringv, or
- * %NULL otherwise. Do not free. These returned strings are UTF-8.
- * Since: 2.22
+ * Returns: (nullable): a new #GDesktopAppInfo or %NULL on error.
+ * Since: 2.18
  */
 
 
 /**
- * g_file_info_get_attribute_type:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_search:
+ * @search_string: the search string to use
  *
- * Gets the attribute type for an attribute key.
+ * Searches desktop files for ones that match @search_string.
  *
- * Returns: a #GFileAttributeType for the given @attribute, or
- * %G_FILE_ATTRIBUTE_TYPE_INVALID if the key is not set.
+ * The return value is an array of strvs.  Each strv contains a list of
+ * applications that matched @search_string with an equal score.  The
+ * outer list is sorted by score so that the first strv contains the
+ * best-matching applications, and so on.
+ * The algorithm for determining matches is undefined and may change at
+ * any time.
+ *
+ * Returns: (array zero-terminated=1) (element-type GStrv) (transfer full): a
+ *   list of strvs.  Free each item with g_strfreev() and free the outer
+ *   list with g_free().
  */
 
 
 /**
- * g_file_info_get_attribute_uint32:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_desktop_app_info_set_desktop_env:
+ * @desktop_env: a string specifying what desktop this is
  *
- * Gets an unsigned 32-bit integer contained within the attribute. If the
- * attribute does not contain an unsigned 32-bit integer, or is invalid,
- * 0 will be returned.
+ * Sets the name of the desktop that the application is running in.
+ * This is used by g_app_info_should_show() and
+ * g_desktop_app_info_get_show_in() to evaluate the
+ * `OnlyShowIn` and `NotShowIn`
+ * desktop entry fields.
  *
- * Returns: an unsigned 32-bit integer from the attribute.
+ * Should be called only once; subsequent calls are ignored.
+ *
+ * Deprecated: 2.42: do not use this API.  Since 2.42 the value of the
+ * `XDG_CURRENT_DESKTOP` environment variable will be used.
  */
 
 
 /**
- * g_file_info_get_attribute_uint64:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_drive_can_eject:
+ * @drive: a #GDrive.
  *
- * Gets a unsigned 64-bit integer contained within the attribute. If the
- * attribute does not contain an unsigned 64-bit integer, or is invalid,
- * 0 will be returned.
+ * Checks if a drive can be ejected.
  *
- * Returns: a unsigned 64-bit integer from the attribute.
+ * Returns: %TRUE if the @drive can be ejected, %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_get_content_type:
- * @info: a #GFileInfo.
+ * g_drive_can_poll_for_media:
+ * @drive: a #GDrive.
  *
- * Gets the file's content type.
+ * Checks if a drive can be polled for media changes.
  *
- * Returns: a string containing the file's content type.
+ * Returns: %TRUE if the @drive can be polled for media changes,
+ *     %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_get_deletion_date:
- * @info: a #GFileInfo.
+ * g_drive_can_start:
+ * @drive: a #GDrive.
  *
- * Returns the #GDateTime representing the deletion date of the file, as
- * available in G_FILE_ATTRIBUTE_TRASH_DELETION_DATE. If the
- * G_FILE_ATTRIBUTE_TRASH_DELETION_DATE attribute is unset, %NULL is returned.
+ * Checks if a drive can be started.
  *
- * Returns: a #GDateTime, or %NULL.
- * Since: 2.36
+ * Returns: %TRUE if the @drive can be started, %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_get_display_name:
- * @info: a #GFileInfo.
+ * g_drive_can_start_degraded:
+ * @drive: a #GDrive.
  *
- * Gets a display name for a file.
+ * Checks if a drive can be started degraded.
  *
- * Returns: a string containing the display name.
+ * Returns: %TRUE if the @drive can be started degraded, %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_get_edit_name:
- * @info: a #GFileInfo.
+ * g_drive_can_stop:
+ * @drive: a #GDrive.
  *
- * Gets the edit name for a file.
+ * Checks if a drive can be stopped.
  *
- * Returns: a string containing the edit name.
+ * Returns: %TRUE if the @drive can be stopped, %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_get_etag:
- * @info: a #GFileInfo.
+ * g_drive_eject:
+ * @drive: a #GDrive.
+ * @flags: flags affecting the unmount if required for eject
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data to pass to @callback
  *
- * Gets the [entity tag][gfile-etag] for a given
- * #GFileInfo. See %G_FILE_ATTRIBUTE_ETAG_VALUE.
+ * Asynchronously ejects a drive.
  *
- * Returns: a string containing the value of the "etag:value" attribute.
+ * When the operation is finished, @callback will be called.
+ * You can then call g_drive_eject_finish() to obtain the
+ * result of the operation.
+ *
+ * Deprecated: 2.22: Use g_drive_eject_with_operation() instead.
  */
 
 
 /**
- * g_file_info_get_file_type:
- * @info: a #GFileInfo.
+ * g_drive_eject_finish:
+ * @drive: a #GDrive.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, or %NULL
  *
- * Gets a file's type (whether it is a regular file, symlink, etc).
- * This is different from the file's content type, see g_file_info_get_content_type().
+ * Finishes ejecting a drive.
  *
- * Returns: a #GFileType for the given file.
+ * Returns: %TRUE if the drive has been ejected successfully,
+ *     %FALSE otherwise.
+ * Deprecated: 2.22: Use g_drive_eject_with_operation_finish() instead.
  */
 
 
 /**
- * g_file_info_get_icon:
- * @info: a #GFileInfo.
+ * g_drive_eject_with_operation:
+ * @drive: a #GDrive.
+ * @flags: flags affecting the unmount if required for eject
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data passed to @callback.
  *
- * Gets the icon for a file.
+ * Ejects a drive. This is an asynchronous operation, and is
+ * finished by calling g_drive_eject_with_operation_finish() with the @drive
+ * and #GAsyncResult data returned in the @callback.
  *
- * Returns: (transfer none): #GIcon for the given @info.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_get_is_backup:
- * @info: a #GFileInfo.
+ * g_drive_eject_with_operation_finish:
+ * @drive: a #GDrive.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * Checks if a file is a backup file.
+ * Finishes ejecting a drive. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * Returns: %TRUE if file is a backup file, %FALSE otherwise.
+ * Returns: %TRUE if the drive was successfully ejected. %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_get_is_hidden:
- * @info: a #GFileInfo.
+ * g_drive_enumerate_identifiers:
+ * @drive: a #GDrive
  *
- * Checks if a file is hidden.
+ * Gets the kinds of identifiers that @drive has.
+ * Use g_drive_get_identifier() to obtain the identifiers
+ * themselves.
  *
- * Returns: %TRUE if the file is a hidden file, %FALSE otherwise.
+ * Returns: (transfer full) (array zero-terminated=1): a %NULL-terminated
+ *     array of strings containing kinds of identifiers. Use g_strfreev()
+ *     to free.
  */
 
 
 /**
- * g_file_info_get_is_symlink:
- * @info: a #GFileInfo.
+ * g_drive_get_icon:
+ * @drive: a #GDrive.
  *
- * Checks if a file is a symlink.
+ * Gets the icon for @drive.
  *
- * Returns: %TRUE if the given @info is a symlink.
+ * Returns: (transfer full): #GIcon for the @drive.
+ *    Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_info_get_modification_time:
- * @info: a #GFileInfo.
- * @result: (out caller-allocates): a #GTimeVal.
+ * g_drive_get_identifier:
+ * @drive: a #GDrive
+ * @kind: the kind of identifier to return
  *
- * Gets the modification time of the current @info and sets it
- * in @result.
+ * Gets the identifier of the given kind for @drive. The only
+ * identifier currently available is
+ * #G_DRIVE_IDENTIFIER_KIND_UNIX_DEVICE.
+ *
+ * Returns: (nullable) (transfer full): a newly allocated string containing the
+ *     requested identifier, or %NULL if the #GDrive
+ *     doesn't have this kind of identifier.
  */
 
 
 /**
- * g_file_info_get_name:
- * @info: a #GFileInfo.
+ * g_drive_get_name:
+ * @drive: a #GDrive.
  *
- * Gets the name for a file.
+ * Gets the name of @drive.
  *
- * Returns: (type filename): a string containing the file name.
+ * Returns: a string containing @drive's name. The returned
+ *     string should be freed when no longer needed.
  */
 
 
 /**
- * g_file_info_get_size:
- * @info: a #GFileInfo.
+ * g_drive_get_sort_key:
+ * @drive: A #GDrive.
  *
- * Gets the file's size.
+ * Gets the sort key for @drive, if any.
  *
- * Returns: a #goffset containing the file's size.
+ * Returns: (nullable): Sorting key for @drive or %NULL if no such key is available.
+ * Since: 2.32
  */
 
 
 /**
- * g_file_info_get_sort_order:
- * @info: a #GFileInfo.
+ * g_drive_get_start_stop_type:
+ * @drive: a #GDrive.
  *
- * Gets the value of the sort_order attribute from the #GFileInfo.
- * See %G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.
+ * Gets a hint about how a drive can be started/stopped.
  *
- * Returns: a #gint32 containing the value of the "standard::sort_order" attribute.
+ * Returns: A value from the #GDriveStartStopType enumeration.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_get_symbolic_icon:
- * @info: a #GFileInfo.
+ * g_drive_get_symbolic_icon:
+ * @drive: a #GDrive.
  *
- * Gets the symbolic icon for a file.
+ * Gets the icon for @drive.
  *
- * Returns: (transfer none): #GIcon for the given @info.
+ * Returns: (transfer full): symbolic #GIcon for the @drive.
+ *    Free the returned object with g_object_unref().
  * Since: 2.34
  */
 
 
 /**
- * g_file_info_get_symlink_target:
- * @info: a #GFileInfo.
+ * g_drive_get_volumes:
+ * @drive: a #GDrive.
  *
- * Gets the symlink target for a given #GFileInfo.
+ * Get a list of mountable volumes for @drive.
  *
- * Returns: a string containing the symlink target.
+ * The returned list should be freed with g_list_free(), after
+ * its elements have been unreffed with g_object_unref().
+ *
+ * Returns: (element-type GVolume) (transfer full): #GList containing any #GVolume objects on the given @drive.
  */
 
 
 /**
- * g_file_info_has_attribute:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_drive_has_media:
+ * @drive: a #GDrive.
  *
- * Checks if a file info structure has an attribute named @attribute.
+ * Checks if the @drive has media. Note that the OS may not be polling
+ * the drive for media changes; see g_drive_is_media_check_automatic()
+ * for more details.
  *
- * Returns: %TRUE if @Ginfo has an attribute named @attribute,
- *     %FALSE otherwise.
+ * Returns: %TRUE if @drive has media, %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_has_namespace:
- * @info: a #GFileInfo.
- * @name_space: a file attribute namespace.
+ * g_drive_has_volumes:
+ * @drive: a #GDrive.
  *
- * Checks if a file info structure has an attribute in the
- * specified @name_space.
+ * Check if @drive has any mountable volumes.
  *
- * Returns: %TRUE if @Ginfo has an attribute in @name_space,
- *     %FALSE otherwise.
- * Since: 2.22
+ * Returns: %TRUE if the @drive contains volumes, %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_list_attributes:
- * @info: a #GFileInfo.
- * @name_space: (nullable): a file attribute key's namespace, or %NULL to list
- *   all attributes.
+ * g_drive_is_media_check_automatic:
+ * @drive: a #GDrive.
  *
- * Lists the file info structure's attributes.
+ * Checks if @drive is capabable of automatically detecting media changes.
  *
- * Returns: (nullable) (array zero-terminated=1) (transfer full): a
- * null-terminated array of strings of all of the possible attribute
- * types for the given @name_space, or %NULL on error.
+ * Returns: %TRUE if the @drive is capabable of automatically detecting
+ *     media changes, %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_new:
+ * g_drive_is_media_removable:
+ * @drive: a #GDrive.
  *
- * Creates a new file info structure.
+ * Checks if the @drive supports removable media.
  *
- * Returns: a #GFileInfo.
+ * Returns: %TRUE if @drive supports removable media, %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_remove_attribute:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
+ * g_drive_is_removable:
+ * @drive: a #GDrive.
  *
- * Removes all cases of @attribute from @info if it exists.
+ * Checks if the #GDrive and/or its media is considered removable by the user.
+ * See g_drive_is_media_removable().
+ *
+ * Returns: %TRUE if @drive and/or its media is considered removable, %FALSE otherwise.
+ * Since: 2.50
  */
 
 
 /**
- * g_file_info_set_attribute:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @type: a #GFileAttributeType
- * @value_p: (not nullable): pointer to the value
+ * g_drive_poll_for_media:
+ * @drive: a #GDrive.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data to pass to @callback
  *
- * Sets the @attribute to contain the given value, if possible. To unset the
- * attribute, use %G_FILE_ATTRIBUTE_TYPE_INVALID for @type.
+ * Asynchronously polls @drive to see if media has been inserted or removed.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_drive_poll_for_media_finish() to obtain the
+ * result of the operation.
  */
 
 
 /**
- * g_file_info_set_attribute_boolean:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @attr_value: a boolean value.
+ * g_drive_poll_for_media_finish:
+ * @drive: a #GDrive.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, or %NULL
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Finishes an operation started with g_drive_poll_for_media() on a drive.
+ *
+ * Returns: %TRUE if the drive has been poll_for_mediaed successfully,
+ *     %FALSE otherwise.
  */
 
 
 /**
- * g_file_info_set_attribute_byte_string:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @attr_value: a byte string.
+ * g_drive_start:
+ * @drive: a #GDrive.
+ * @flags: flags affecting the start operation.
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data to pass to @callback
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Asynchronously starts a drive.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_drive_start_finish() to obtain the
+ * result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_set_attribute_int32:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @attr_value: a signed 32-bit integer
+ * g_drive_start_finish:
+ * @drive: a #GDrive.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, or %NULL
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Finishes starting a drive.
+ *
+ * Returns: %TRUE if the drive has been started successfully,
+ *     %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_set_attribute_int64:
- * @info: a #GFileInfo.
- * @attribute: attribute name to set.
- * @attr_value: int64 value to set attribute to.
+ * g_drive_stop:
+ * @drive: a #GDrive.
+ * @flags: flags affecting the unmount if required for stopping.
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data to pass to @callback
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Asynchronously stops a drive.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_drive_stop_finish() to obtain the
+ * result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_set_attribute_mask:
- * @info: a #GFileInfo.
- * @mask: a #GFileAttributeMatcher.
+ * g_drive_stop_finish:
+ * @drive: a #GDrive.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, or %NULL
  *
- * Sets @mask on @info to match specific attribute types.
+ * Finishes stopping a drive.
+ *
+ * Returns: %TRUE if the drive has been stopped successfully,
+ *     %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_info_set_attribute_object:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @attr_value: a #GObject.
+ * g_dtls_client_connection_get_accepted_cas:
+ * @conn: the #GDtlsClientConnection
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Gets the list of distinguished names of the Certificate Authorities
+ * that the server will accept certificates from. This will be set
+ * during the TLS handshake if the server requests a certificate.
+ * Otherwise, it will be %NULL.
+ *
+ * Each item in the list is a #GByteArray which contains the complete
+ * subject DN of the certificate authority.
+ *
+ * Returns: (element-type GByteArray) (transfer full): the list of
+ * CA DNs. You should unref each element with g_byte_array_unref() and then
+ * the free the list with g_list_free().
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_attribute_status:
- * @info: a #GFileInfo
- * @attribute: a file attribute key
- * @status: a #GFileAttributeStatus
+ * g_dtls_client_connection_get_server_identity:
+ * @conn: the #GDtlsClientConnection
  *
- * Sets the attribute status for an attribute key. This is only
- * needed by external code that implement g_file_set_attributes_from_info()
- * or similar functions.
+ * Gets @conn's expected server identity
  *
- * The attribute must exist in @info for this to work. Otherwise %FALSE
- * is returned and @info is unchanged.
+ * Returns: (transfer none): a #GSocketConnectable describing the
+ * expected server identity, or %NULL if the expected identity is not
+ * known.
+ * Since: 2.48
+ */
+
+
+/**
+ * g_dtls_client_connection_get_validation_flags:
+ * @conn: the #GDtlsClientConnection
  *
- * Returns: %TRUE if the status was changed, %FALSE if the key was not set.
- * Since: 2.22
+ * Gets @conn's validation flags
+ *
+ * Returns: the validation flags
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_attribute_string:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @attr_value: a UTF-8 string.
+ * g_dtls_client_connection_new:
+ * @base_socket: the #GDatagramBased to wrap
+ * @server_identity: (nullable): the expected identity of the server
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Creates a new #GDtlsClientConnection wrapping @base_socket which is
+ * assumed to communicate with the server identified by @server_identity.
+ *
+ * Returns: (transfer full) (type GDtlsClientConnection): the new
+ *   #GDtlsClientConnection, or %NULL on error
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_attribute_stringv:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key
- * @attr_value: (array) (element-type utf8): a %NULL terminated array of UTF-8 strings.
+ * g_dtls_client_connection_set_server_identity:
+ * @conn: the #GDtlsClientConnection
+ * @identity: a #GSocketConnectable describing the expected server identity
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Sets @conn's expected server identity, which is used both to tell
+ * servers on virtual hosts which certificate to present, and also
+ * to let @conn know what name to look for in the certificate when
+ * performing %G_TLS_CERTIFICATE_BAD_IDENTITY validation, if enabled.
  *
- * Sinze: 2.22
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_attribute_uint32:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @attr_value: an unsigned 32-bit integer.
+ * g_dtls_client_connection_set_validation_flags:
+ * @conn: the #GDtlsClientConnection
+ * @flags: the #GTlsCertificateFlags to use
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Sets @conn's validation flags, to override the default set of
+ * checks performed when validating a server certificate. By default,
+ * %G_TLS_CERTIFICATE_VALIDATE_ALL is used.
+ *
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_attribute_uint64:
- * @info: a #GFileInfo.
- * @attribute: a file attribute key.
- * @attr_value: an unsigned 64-bit integer.
+ * g_dtls_connection_close:
+ * @conn: a #GDtlsConnection
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a #GError, or %NULL
  *
- * Sets the @attribute to contain the given @attr_value,
- * if possible.
+ * Close the DTLS connection. This is equivalent to calling
+ * g_dtls_connection_shutdown() to shut down both sides of the connection.
+ *
+ * Closing a #GDtlsConnection waits for all buffered but untransmitted data to
+ * be sent before it completes. It then sends a `close_notify` DTLS alert to the
+ * peer and may wait for a `close_notify` to be received from the peer. It does
+ * not close the underlying #GDtlsConnection:base-socket; that must be closed
+ * separately.
+ *
+ * Once @conn is closed, all other operations will return %G_IO_ERROR_CLOSED.
+ * Closing a #GDtlsConnection multiple times will not return an error.
+ *
+ * #GDtlsConnections will be automatically closed when the last reference is
+ * dropped, but you might want to call this function to make sure resources are
+ * released as early as possible.
+ *
+ * If @cancellable is cancelled, the #GDtlsConnection may be left
+ * partially-closed and any pending untransmitted data may be lost. Call
+ * g_dtls_connection_close() again to complete closing the #GDtlsConnection.
+ *
+ * Returns: %TRUE on success, %FALSE otherwise
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_content_type:
- * @info: a #GFileInfo.
- * @content_type: a content type. See [GContentType][gio-GContentType]
+ * g_dtls_connection_close_async:
+ * @conn: a #GDtlsConnection
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the close operation is complete
+ * @user_data: the data to pass to the callback function
  *
- * Sets the content type attribute for a given #GFileInfo.
- * See %G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE.
+ * Asynchronously close the DTLS connection. See g_dtls_connection_close() for
+ * more information.
+ *
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_display_name:
- * @info: a #GFileInfo.
- * @display_name: a string containing a display name.
+ * g_dtls_connection_close_finish:
+ * @conn: a #GDtlsConnection
+ * @result: a #GAsyncResult
+ * @error: a #GError pointer, or %NULL
  *
- * Sets the display name for the current #GFileInfo.
- * See %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME.
+ * Finish an asynchronous TLS close operation. See g_dtls_connection_close()
+ * for more information.
+ *
+ * Returns: %TRUE on success, %FALSE on failure, in which
+ * case @error will be set
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_edit_name:
- * @info: a #GFileInfo.
- * @edit_name: a string containing an edit name.
+ * g_dtls_connection_emit_accept_certificate:
+ * @conn: a #GDtlsConnection
+ * @peer_cert: the peer's #GTlsCertificate
+ * @errors: the problems with @peer_cert
  *
- * Sets the edit name for the current file.
- * See %G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME.
+ * Used by #GDtlsConnection implementations to emit the
+ * #GDtlsConnection::accept-certificate signal.
+ *
+ * Returns: %TRUE if one of the signal handlers has returned
+ *     %TRUE to accept @peer_cert
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_file_type:
- * @info: a #GFileInfo.
- * @type: a #GFileType.
+ * g_dtls_connection_get_certificate:
+ * @conn: a #GDtlsConnection
  *
- * Sets the file type in a #GFileInfo to @type.
- * See %G_FILE_ATTRIBUTE_STANDARD_TYPE.
+ * Gets @conn's certificate, as set by
+ * g_dtls_connection_set_certificate().
+ *
+ * Returns: (transfer none): @conn's certificate, or %NULL
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_icon:
- * @info: a #GFileInfo.
- * @icon: a #GIcon.
+ * g_dtls_connection_get_database:
+ * @conn: a #GDtlsConnection
  *
- * Sets the icon for a given #GFileInfo.
- * See %G_FILE_ATTRIBUTE_STANDARD_ICON.
+ * Gets the certificate database that @conn uses to verify
+ * peer certificates. See g_dtls_connection_set_database().
+ *
+ * Returns: (transfer none): the certificate database that @conn uses or %NULL
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_is_hidden:
- * @info: a #GFileInfo.
- * @is_hidden: a #gboolean.
+ * g_dtls_connection_get_interaction:
+ * @conn: a connection
  *
- * Sets the "is_hidden" attribute in a #GFileInfo according to @is_hidden.
- * See %G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN.
+ * Get the object that will be used to interact with the user. It will be used
+ * for things like prompting the user for passwords. If %NULL is returned, then
+ * no user interaction will occur for this connection.
+ *
+ * Returns: (transfer none): The interaction object.
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_is_symlink:
- * @info: a #GFileInfo.
- * @is_symlink: a #gboolean.
+ * g_dtls_connection_get_peer_certificate:
+ * @conn: a #GDtlsConnection
  *
- * Sets the "is_symlink" attribute in a #GFileInfo according to @is_symlink.
- * See %G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK.
+ * Gets @conn's peer's certificate after the handshake has completed.
+ * (It is not set during the emission of
+ * #GDtlsConnection::accept-certificate.)
+ *
+ * Returns: (transfer none): @conn's peer's certificate, or %NULL
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_modification_time:
- * @info: a #GFileInfo.
- * @mtime: a #GTimeVal.
+ * g_dtls_connection_get_peer_certificate_errors:
+ * @conn: a #GDtlsConnection
  *
- * Sets the %G_FILE_ATTRIBUTE_TIME_MODIFIED attribute in the file
- * info to the given time value.
+ * Gets the errors associated with validating @conn's peer's
+ * certificate, after the handshake has completed. (It is not set
+ * during the emission of #GDtlsConnection::accept-certificate.)
+ *
+ * Returns: @conn's peer's certificate errors
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_name:
- * @info: a #GFileInfo.
- * @name: (type filename): a string containing a name.
+ * g_dtls_connection_get_rehandshake_mode:
+ * @conn: a #GDtlsConnection
  *
- * Sets the name attribute for the current #GFileInfo.
- * See %G_FILE_ATTRIBUTE_STANDARD_NAME.
+ * Gets @conn rehandshaking mode. See
+ * g_dtls_connection_set_rehandshake_mode() for details.
+ *
+ * Returns: @conn's rehandshaking mode
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_size:
- * @info: a #GFileInfo.
- * @size: a #goffset containing the file's size.
+ * g_dtls_connection_get_require_close_notify:
+ * @conn: a #GDtlsConnection
  *
- * Sets the %G_FILE_ATTRIBUTE_STANDARD_SIZE attribute in the file info
- * to the given size.
+ * Tests whether or not @conn expects a proper TLS close notification
+ * when the connection is closed. See
+ * g_dtls_connection_set_require_close_notify() for details.
+ *
+ * Returns: %TRUE if @conn requires a proper TLS close notification.
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_sort_order:
- * @info: a #GFileInfo.
- * @sort_order: a sort order integer.
+ * g_dtls_connection_handshake:
+ * @conn: a #GDtlsConnection
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a #GError, or %NULL
  *
- * Sets the sort order attribute in the file info structure. See
- * %G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.
+ * Attempts a TLS handshake on @conn.
+ *
+ * On the client side, it is never necessary to call this method;
+ * although the connection needs to perform a handshake after
+ * connecting (or after sending a "STARTTLS"-type command) and may
+ * need to rehandshake later if the server requests it,
+ * #GDtlsConnection will handle this for you automatically when you try
+ * to send or receive data on the connection. However, you can call
+ * g_dtls_connection_handshake() manually if you want to know for sure
+ * whether the initial handshake succeeded or failed (as opposed to
+ * just immediately trying to write to @conn, in which
+ * case if it fails, it may not be possible to tell if it failed
+ * before or after completing the handshake).
+ *
+ * Likewise, on the server side, although a handshake is necessary at
+ * the beginning of the communication, you do not need to call this
+ * function explicitly unless you want clearer error reporting.
+ * However, you may call g_dtls_connection_handshake() later on to
+ * renegotiate parameters (encryption methods, etc) with the client.
+ *
+ * #GDtlsConnection::accept_certificate may be emitted during the
+ * handshake.
+ *
+ * Returns: success or failure
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_symbolic_icon:
- * @info: a #GFileInfo.
- * @icon: a #GIcon.
+ * g_dtls_connection_handshake_async:
+ * @conn: a #GDtlsConnection
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the handshake is complete
+ * @user_data: the data to pass to the callback function
  *
- * Sets the symbolic icon for a given #GFileInfo.
- * See %G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON.
+ * Asynchronously performs a TLS handshake on @conn. See
+ * g_dtls_connection_handshake() for more information.
  *
- * Since: 2.34
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_set_symlink_target:
- * @info: a #GFileInfo.
- * @symlink_target: a static string containing a path to a symlink target.
+ * g_dtls_connection_handshake_finish:
+ * @conn: a #GDtlsConnection
+ * @result: a #GAsyncResult.
+ * @error: a #GError pointer, or %NULL
  *
- * Sets the %G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET attribute in the file info
- * to the given symlink target.
+ * Finish an asynchronous TLS handshake operation. See
+ * g_dtls_connection_handshake() for more information.
+ *
+ * Returns: %TRUE on success, %FALSE on failure, in which
+ * case @error will be set.
+ * Since: 2.48
  */
 
 
 /**
- * g_file_info_unset_attribute_mask:
- * @info: #GFileInfo.
+ * g_dtls_connection_set_certificate:
+ * @conn: a #GDtlsConnection
+ * @certificate: the certificate to use for @conn
  *
- * Unsets a mask set by g_file_info_set_attribute_mask(), if one
- * is set.
+ * This sets the certificate that @conn will present to its peer
+ * during the TLS handshake. For a #GDtlsServerConnection, it is
+ * mandatory to set this, and that will normally be done at construct
+ * time.
+ *
+ * For a #GDtlsClientConnection, this is optional. If a handshake fails
+ * with %G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server
+ * requires a certificate, and if you try connecting again, you should
+ * call this method first. You can call
+ * g_dtls_client_connection_get_accepted_cas() on the failed connection
+ * to get a list of Certificate Authorities that the server will
+ * accept certificates from.
+ *
+ * (It is also possible that a server will allow the connection with
+ * or without a certificate; in that case, if you don't provide a
+ * certificate, you can tell that the server requested one by the fact
+ * that g_dtls_client_connection_get_accepted_cas() will return
+ * non-%NULL.)
+ *
+ * Since: 2.48
  */
 
 
 /**
- * g_file_input_stream_query_info:
- * @stream: a #GFileInputStream.
- * @attributes: a file attribute query string.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_dtls_connection_set_database:
+ * @conn: a #GDtlsConnection
+ * @database: a #GTlsDatabase
  *
- * Queries a file input stream the given @attributes. This function blocks
- * while querying the stream. For the asynchronous (non-blocking) version
- * of this function, see g_file_input_stream_query_info_async(). While the
- * stream is blocked, the stream will set the pending flag internally, and
- * any other operations on the stream will fail with %G_IO_ERROR_PENDING.
+ * Sets the certificate database that is used to verify peer certificates.
+ * This is set to the default database by default. See
+ * g_tls_backend_get_default_database(). If set to %NULL, then
+ * peer certificate validation will always set the
+ * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning
+ * #GDtlsConnection::accept-certificate will always be emitted on
+ * client-side connections, unless that bit is not set in
+ * #GDtlsClientConnection:validation-flags).
  *
- * Returns: (transfer full): a #GFileInfo, or %NULL on error.
+ * Since: 2.48
  */
 
 
 /**
- * g_file_input_stream_query_info_async:
- * @stream: a #GFileInputStream.
- * @attributes: a file attribute query string.
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_dtls_connection_set_interaction:
+ * @conn: a connection
+ * @interaction: (nullable): an interaction object, or %NULL
  *
- * Queries the stream information asynchronously.
- * When the operation is finished @callback will be called.
- * You can then call g_file_input_stream_query_info_finish()
- * to get the result of the operation.
+ * Set the object that will be used to interact with the user. It will be used
+ * for things like prompting the user for passwords.
  *
- * For the synchronous version of this function,
- * see g_file_input_stream_query_info().
+ * The @interaction argument will normally be a derived subclass of
+ * #GTlsInteraction. %NULL can also be provided if no user interaction
+ * should occur for this connection.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be set
+ * Since: 2.48
  */
 
 
 /**
- * g_file_input_stream_query_info_finish:
- * @stream: a #GFileInputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring,
- *     or %NULL to ignore.
+ * g_dtls_connection_set_rehandshake_mode:
+ * @conn: a #GDtlsConnection
+ * @mode: the rehandshaking mode
  *
- * Finishes an asynchronous info query operation.
+ * Sets how @conn behaves with respect to rehandshaking requests.
  *
- * Returns: (transfer full): #GFileInfo.
+ * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to
+ * rehandshake after the initial handshake is complete. (For a client,
+ * this means it will refuse rehandshake requests from the server, and
+ * for a server, this means it will close the connection with an error
+ * if the client attempts to rehandshake.)
+ *
+ * %G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a
+ * rehandshake only if the other end of the connection supports the
+ * TLS `renegotiation_info` extension. This is the default behavior,
+ * but means that rehandshaking will not work against older
+ * implementations that do not support that extension.
+ *
+ * %G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow
+ * rehandshaking even without the `renegotiation_info` extension. On
+ * the server side in particular, this is not recommended, since it
+ * leaves the server open to certain attacks. However, this mode is
+ * necessary if you need to allow renegotiation with older client
+ * software.
+ *
+ * Since: 2.48
  */
 
 
 /**
- * g_file_io_stream_get_etag:
- * @stream: a #GFileIOStream.
+ * g_dtls_connection_set_require_close_notify:
+ * @conn: a #GDtlsConnection
+ * @require_close_notify: whether or not to require close notification
  *
- * Gets the entity tag for the file when it has been written.
- * This must be called after the stream has been written
- * and closed, as the etag can change while writing.
+ * Sets whether or not @conn expects a proper TLS close notification
+ * before the connection is closed. If this is %TRUE (the default),
+ * then @conn will expect to receive a TLS close notification from its
+ * peer before the connection is closed, and will return a
+ * %G_TLS_ERROR_EOF error if the connection is closed without proper
+ * notification (since this may indicate a network error, or
+ * man-in-the-middle attack).
+ *
+ * In some protocols, the application will know whether or not the
+ * connection was closed cleanly based on application-level data
+ * (because the application-level data includes a length field, or is
+ * somehow self-delimiting); in this case, the close notify is
+ * redundant and may be omitted. You
+ * can use g_dtls_connection_set_require_close_notify() to tell @conn
+ * to allow an "unannounced" connection close, in which case the close
+ * will show up as a 0-length read, as in a non-TLS
+ * #GDatagramBased, and it is up to the application to check that
+ * the data has been fully received.
+ *
+ * Note that this only affects the behavior when the peer closes the
+ * connection; when the application calls g_dtls_connection_close_async() on
+ * @conn itself, this will send a close notification regardless of the
+ * setting of this property. If you explicitly want to do an unclean
+ * close, you can close @conn's #GDtlsConnection:base-socket rather
+ * than closing @conn itself.
  *
- * Returns: the entity tag for the stream.
- * Since: 2.22
+ * Since: 2.48
  */
 
 
 /**
- * g_file_io_stream_query_info:
- * @stream: a #GFileIOStream.
- * @attributes: a file attribute query string.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
+ * g_dtls_connection_shutdown:
+ * @conn: a #GDtlsConnection
+ * @shutdown_read: %TRUE to stop reception of incoming datagrams
+ * @shutdown_write: %TRUE to stop sending outgoing datagrams
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a #GError, or %NULL
  *
- * Queries a file io stream for the given @attributes.
- * This function blocks while querying the stream. For the asynchronous
- * version of this function, see g_file_io_stream_query_info_async().
- * While the stream is blocked, the stream will set the pending flag
- * internally, and any other operations on the stream will fail with
- * %G_IO_ERROR_PENDING.
+ * Shut down part or all of a DTLS connection.
  *
- * Can fail if the stream was already closed (with @error being set to
- * %G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
- * set to %G_IO_ERROR_PENDING), or if querying info is not supported for
- * the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). I
- * all cases of failure, %NULL will be returned.
+ * If @shutdown_read is %TRUE then the receiving side of the connection is shut
+ * down, and further reading is disallowed. Subsequent calls to
+ * g_datagram_based_receive_messages() will return %G_IO_ERROR_CLOSED.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
- * be returned.
+ * If @shutdown_write is %TRUE then the sending side of the connection is shut
+ * down, and further writing is disallowed. Subsequent calls to
+ * g_datagram_based_send_messages() will return %G_IO_ERROR_CLOSED.
  *
- * Returns: (transfer full): a #GFileInfo for the @stream, or %NULL on error.
- * Since: 2.22
+ * It is allowed for both @shutdown_read and @shutdown_write to be TRUE â€” this
+ * is equivalent to calling g_dtls_connection_close().
+ *
+ * If @cancellable is cancelled, the #GDtlsConnection may be left
+ * partially-closed and any pending untransmitted data may be lost. Call
+ * g_dtls_connection_shutdown() again to complete closing the #GDtlsConnection.
+ *
+ * Returns: %TRUE on success, %FALSE otherwise
+ * Since: 2.48
  */
 
 
 /**
- * g_file_io_stream_query_info_async:
- * @stream: a #GFileIOStream.
- * @attributes: a file attribute query string.
- * @io_priority: the [I/O priority][gio-GIOScheduler] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Asynchronously queries the @stream for a #GFileInfo. When completed,
- * @callback will be called with a #GAsyncResult which can be used to
- * finish the operation with g_file_io_stream_query_info_finish().
+ * g_dtls_connection_shutdown_async:
+ * @conn: a #GDtlsConnection
+ * @shutdown_read: %TRUE to stop reception of incoming datagrams
+ * @shutdown_write: %TRUE to stop sending outgoing datagrams
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the shutdown operation is complete
+ * @user_data: the data to pass to the callback function
  *
- * For the synchronous version of this function, see
- * g_file_io_stream_query_info().
+ * Asynchronously shut down part or all of the DTLS connection. See
+ * g_dtls_connection_shutdown() for more information.
  *
- * Since: 2.22
+ * Since: 2.48
  */
 
 
 /**
- * g_file_io_stream_query_info_finish:
- * @stream: a #GFileIOStream.
- * @result: a #GAsyncResult.
- * @error: a #GError, %NULL to ignore.
+ * g_dtls_connection_shutdown_finish:
+ * @conn: a #GDtlsConnection
+ * @result: a #GAsyncResult
+ * @error: a #GError pointer, or %NULL
  *
- * Finalizes the asynchronous query started
- * by g_file_io_stream_query_info_async().
+ * Finish an asynchronous TLS shutdown operation. See
+ * g_dtls_connection_shutdown() for more information.
  *
- * Returns: (transfer full): A #GFileInfo for the finished query.
- * Since: 2.22
+ * Returns: %TRUE on success, %FALSE on failure, in which
+ * case @error will be set
+ * Since: 2.48
  */
 
 
 /**
- * g_file_is_native:
- * @file: input #GFile
- *
- * Checks to see if a file is native to the platform.
- *
- * A native file is one expressed in the platform-native filename format,
- * e.g. "C:\Windows" or "/usr/bin/". This does not mean the file is local,
- * as it might be on a locally mounted remote filesystem.
- *
- * On some systems non-native files may be available using the native
- * filesystem via a userspace filesystem (FUSE), in these cases this call
- * will return %FALSE, but g_file_get_path() will still return a native path.
+ * g_dtls_server_connection_new:
+ * @base_socket: the #GDatagramBased to wrap
+ * @certificate: (nullable): the default server certificate, or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore
  *
- * This call does no blocking I/O.
+ * Creates a new #GDtlsServerConnection wrapping @base_socket.
  *
- * Returns: %TRUE if @file is native
+ * Returns: (transfer full) (type GDtlsServerConnection): the new
+ *   #GDtlsServerConnection, or %NULL on error
+ * Since: 2.48
  */
 
 
 /**
- * g_file_load_bytes:
- * @file: a #GFile
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @etag_out: (out) (nullable) (optional): a location to place the current
- *     entity tag for the file, or %NULL if the entity tag is not needed
- * @error: a location for a #GError or %NULL
- *
- * Loads the contents of @file and returns it as #GBytes.
- *
- * If @file is a resource:// based URI, the resulting bytes will reference the
- * embedded resource instead of a copy. Otherwise, this is equivalent to calling
- * g_file_load_contents() and g_bytes_new_take().
- *
- * For resources, @etag_out will be set to %NULL.
+ * g_emblem_get_icon:
+ * @emblem: a #GEmblem from which the icon should be extracted.
  *
- * The data contained in the resulting #GBytes is always zero-terminated, but
- * this is not included in the #GBytes length. The resulting #GBytes should be
- * freed with g_bytes_unref() when no longer in use.
+ * Gives back the icon from @emblem.
  *
- * Returns: (transfer full): a #GBytes or %NULL and @error is set
- * Since: 2.56
+ * Returns: (transfer none): a #GIcon. The returned object belongs to
+ *          the emblem and should not be modified or freed.
+ * Since: 2.18
  */
 
 
 /**
- * g_file_load_bytes_async:
- * @file: a #GFile
- * @cancellable: (nullable): a #GCancellable or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *     request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Asynchronously loads the contents of @file as #GBytes.
- *
- * If @file is a resource:// based URI, the resulting bytes will reference the
- * embedded resource instead of a copy. Otherwise, this is equivalent to calling
- * g_file_load_contents_async() and g_bytes_new_take().
- *
- * @callback should call g_file_load_bytes_finish() to get the result of this
- * asynchronous operation.
+ * g_emblem_get_origin:
+ * @emblem: a #GEmblem
  *
- * See g_file_load_bytes() for more information.
+ * Gets the origin of the emblem.
  *
- * Since: 2.56
+ * Returns: (transfer none): the origin of the emblem
+ * Since: 2.18
  */
 
 
 /**
- * g_file_load_bytes_finish:
- * @file: a #GFile
- * @result: a #GAsyncResult provided to the callback
- * @etag_out: (out) (nullable) (optional): a location to place the current
- *     entity tag for the file, or %NULL if the entity tag is not needed
- * @error: a location for a #GError, or %NULL
- *
- * Completes an asynchronous request to g_file_load_bytes_async().
- *
- * For resources, @etag_out will be set to %NULL.
- *
- * The data contained in the resulting #GBytes is always zero-terminated, but
- * this is not included in the #GBytes length. The resulting #GBytes should be
- * freed with g_bytes_unref() when no longer in use.
+ * g_emblem_new:
+ * @icon: a GIcon containing the icon.
  *
- * See g_file_load_bytes() for more information.
+ * Creates a new emblem for @icon.
  *
- * Returns: (transfer full): a #GBytes or %NULL and @error is set
- * Since: 2.56
+ * Returns: a new #GEmblem.
+ * Since: 2.18
  */
 
 
 /**
- * g_file_load_contents:
- * @file: input #GFile
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
- * @length: (out) (optional): a location to place the length of the contents of the file,
- *    or %NULL if the length is not needed
- * @etag_out: (out) (optional): a location to place the current entity tag for the file,
- *    or %NULL if the entity tag is not needed
- * @error: a #GError, or %NULL
- *
- * Loads the content of the file into memory. The data is always
- * zero-terminated, but this is not included in the resultant @length.
- * The returned @content should be freed with g_free() when no longer
- * needed.
+ * g_emblem_new_with_origin:
+ * @icon: a GIcon containing the icon.
+ * @origin: a GEmblemOrigin enum defining the emblem's origin
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Creates a new emblem for @icon.
  *
- * Returns: %TRUE if the @file's contents were successfully loaded.
- *     %FALSE if there were errors.
+ * Returns: a new #GEmblem.
+ * Since: 2.18
  */
 
 
 /**
- * g_file_load_contents_async:
- * @file: input #GFile
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
+ * g_emblemed_icon_add_emblem:
+ * @emblemed: a #GEmblemedIcon
+ * @emblem: a #GEmblem
  *
- * Starts an asynchronous load of the @file's contents.
+ * Adds @emblem to the #GList of #GEmblems.
  *
- * For more details, see g_file_load_contents() which is
- * the synchronous version of this call.
+ * Since: 2.18
+ */
+
+
+/**
+ * g_emblemed_icon_clear_emblems:
+ * @emblemed: a #GEmblemedIcon
  *
- * When the load operation has completed, @callback will be called
- * with @user data. To finish the operation, call
- * g_file_load_contents_finish() with the #GAsyncResult returned by
- * the @callback.
+ * Removes all the emblems from @icon.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Since: 2.28
  */
 
 
 /**
- * g_file_load_contents_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
- * @length: (out) (optional): a location to place the length of the contents of the file,
- *     or %NULL if the length is not needed
- * @etag_out: (out) (optional): a location to place the current entity tag for the file,
- *     or %NULL if the entity tag is not needed
- * @error: a #GError, or %NULL
+ * g_emblemed_icon_get_emblems:
+ * @emblemed: a #GEmblemedIcon
  *
- * Finishes an asynchronous load of the @file's contents.
- * The contents are placed in @contents, and @length is set to the
- * size of the @contents string. The @content should be freed with
- * g_free() when no longer needed. If @etag_out is present, it will be
- * set to the new entity tag for the @file.
+ * Gets the list of emblems for the @icon.
  *
- * Returns: %TRUE if the load was successful. If %FALSE and @error is
- *     present, it will be set appropriately.
+ * Returns: (element-type Gio.Emblem) (transfer none): a #GList of
+ *     #GEmblems that is owned by @emblemed
+ * Since: 2.18
  */
 
 
 /**
- * g_file_load_partial_contents_async: (skip)
- * @file: input #GFile
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @read_more_callback: (scope call) (closure user_data): a
- *     #GFileReadMoreCallback to receive partial data
- *     and to specify whether further data should be read
- * @callback: (scope async) (closure user_data): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: the data to pass to the callback functions
- *
- * Reads the partial contents of a file. A #GFileReadMoreCallback should
- * be used to stop reading from the file when appropriate, else this
- * function will behave exactly as g_file_load_contents_async(). This
- * operation can be finished by g_file_load_partial_contents_finish().
+ * g_emblemed_icon_get_icon:
+ * @emblemed: a #GEmblemedIcon
  *
- * Users of this function should be aware that @user_data is passed to
- * both the @read_more_callback and the @callback.
+ * Gets the main icon for @emblemed.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Returns: (transfer none): a #GIcon that is owned by @emblemed
+ * Since: 2.18
  */
 
 
 /**
- * g_file_load_partial_contents_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
- * @length: (out) (optional): a location to place the length of the contents of the file,
- *     or %NULL if the length is not needed
- * @etag_out: (out) (optional): a location to place the current entity tag for the file,
- *     or %NULL if the entity tag is not needed
- * @error: a #GError, or %NULL
+ * g_emblemed_icon_new:
+ * @icon: a #GIcon
+ * @emblem: (nullable): a #GEmblem, or %NULL
  *
- * Finishes an asynchronous partial load operation that was started
- * with g_file_load_partial_contents_async(). The data is always
- * zero-terminated, but this is not included in the resultant @length.
- * The returned @content should be freed with g_free() when no longer
- * needed.
+ * Creates a new emblemed icon for @icon with the emblem @emblem.
  *
- * Returns: %TRUE if the load was successful. If %FALSE and @error is
- *     present, it will be set appropriately.
+ * Returns: (transfer full) (type GEmblemedIcon): a new #GIcon
+ * Since: 2.18
  */
 
 
 /**
- * g_file_make_directory:
+ * g_file_append_to:
  * @file: input #GFile
+ * @flags: a set of #GFileCreateFlags
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
  * @error: a #GError, or %NULL
  *
- * Creates a directory. Note that this will only create a child directory
- * of the immediate parent directory of the path or URI given by the #GFile.
- * To recursively create directories, see g_file_make_directory_with_parents().
- * This function will fail if the parent directory does not exist, setting
- * @error to %G_IO_ERROR_NOT_FOUND. If the file system doesn't support
- * creating directories, this function will fail, setting @error to
- * %G_IO_ERROR_NOT_SUPPORTED.
+ * Gets an output stream for appending data to the file.
+ * If the file doesn't already exist it is created.
  *
- * For a local #GFile the newly created directory will have the default
- * (current) ownership and permissions of the current process.
+ * By default files created are generally readable by everyone,
+ * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+ * will be made readable only to the current user, to the level that
+ * is supported on the target filesystem.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * If @cancellable is not %NULL, then the operation can be cancelled
+ * by triggering the cancellable object from another thread. If the
+ * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
+ * returned.
  *
- * Returns: %TRUE on successful creation, %FALSE otherwise.
+ * Some file systems don't allow all file names, and may return an
+ * %G_IO_ERROR_INVALID_FILENAME error. If the file is a directory the
+ * %G_IO_ERROR_IS_DIRECTORY error will be returned. Other errors are
+ * possible too, and depend on what kind of filesystem the file is on.
+ *
+ * Returns: (transfer full): a #GFileOutputStream, or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_make_directory_async: (virtual make_directory_async)
+ * g_file_append_to_async:
  * @file: input #GFile
+ * @flags: a set of #GFileCreateFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
- * @callback: a #GAsyncReadyCallback to call
+ * @callback: (scope async): a #GAsyncReadyCallback to call
  *     when the request is satisfied
- * @user_data: the data to pass to callback function
+ * @user_data: (closure): the data to pass to callback function
  *
- * Asynchronously creates a directory.
+ * Asynchronously opens @file for appending.
  *
- * Since: 2.38
+ * For more details, see g_file_append_to() which is
+ * the synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_append_to_finish() to get the result
+ * of the operation.
  */
 
 
 /**
- * g_file_make_directory_finish: (virtual make_directory_finish)
+ * g_file_append_to_finish:
  * @file: input #GFile
- * @result: a #GAsyncResult
+ * @res: #GAsyncResult
  * @error: a #GError, or %NULL
  *
- * Finishes an asynchronous directory creation, started with
- * g_file_make_directory_async().
+ * Finishes an asynchronous file append operation started with
+ * g_file_append_to_async().
  *
- * Returns: %TRUE on successful directory creation, %FALSE otherwise.
- * Since: 2.38
+ * Returns: (transfer full): a valid #GFileOutputStream
+ *     or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_make_directory_with_parents:
- * @file: input #GFile
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Creates a directory and any parent directories that may not
- * exist similar to 'mkdir -p'. If the file system does not support
- * creating directories, this function will fail, setting @error to
- * %G_IO_ERROR_NOT_SUPPORTED. If the directory itself already exists,
- * this function will fail setting @error to %G_IO_ERROR_EXISTS, unlike
- * the similar g_mkdir_with_parents().
- *
- * For a local #GFile the newly created directories will have the default
- * (current) ownership and permissions of the current process.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * g_file_attribute_info_list_add:
+ * @list: a #GFileAttributeInfoList.
+ * @name: the name of the attribute to add.
+ * @type: the #GFileAttributeType for the attribute.
+ * @flags: #GFileAttributeInfoFlags for the attribute.
  *
- * Returns: %TRUE if all directories have been successfully created, %FALSE
- * otherwise.
- * Since: 2.18
+ * Adds a new attribute with @name to the @list, setting
+ * its @type and @flags.
  */
 
 
 /**
- * g_file_make_symbolic_link:
- * @file: a #GFile with the name of the symlink to create
- * @symlink_value: (type filename): a string with the path for the target
- *     of the new symlink
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError
- *
- * Creates a symbolic link named @file which contains the string
- * @symlink_value.
+ * g_file_attribute_info_list_dup:
+ * @list: a #GFileAttributeInfoList to duplicate.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Makes a duplicate of a file attribute info list.
  *
- * Returns: %TRUE on the creation of a new symlink, %FALSE otherwise.
+ * Returns: a copy of the given @list.
  */
 
 
 /**
- * g_file_measure_disk_usage:
- * @file: a #GFile
- * @flags: #GFileMeasureFlags
- * @cancellable: (nullable): optional #GCancellable
- * @progress_callback: (nullable): a #GFileMeasureProgressCallback
- * @progress_data: user_data for @progress_callback
- * @disk_usage: (out) (optional): the number of bytes of disk space used
- * @num_dirs: (out) (optional): the number of directories encountered
- * @num_files: (out) (optional): the number of non-directories encountered
- * @error: (nullable): %NULL, or a pointer to a %NULL #GError pointer
- *
- * Recursively measures the disk usage of @file.
- *
- * This is essentially an analog of the 'du' command, but it also
- * reports the number of directories and non-directory files encountered
- * (including things like symbolic links).
- *
- * By default, errors are only reported against the toplevel file
- * itself.  Errors found while recursing are silently ignored, unless
- * %G_FILE_DISK_USAGE_REPORT_ALL_ERRORS is given in @flags.
- *
- * The returned size, @disk_usage, is in bytes and should be formatted
- * with g_format_size() in order to get something reasonable for showing
- * in a user interface.
+ * g_file_attribute_info_list_lookup:
+ * @list: a #GFileAttributeInfoList.
+ * @name: the name of the attribute to lookup.
  *
- * @progress_callback and @progress_data can be given to request
- * periodic progress updates while scanning.  See the documentation for
- * #GFileMeasureProgressCallback for information about when and how the
- * callback will be invoked.
+ * Gets the file attribute with the name @name from @list.
  *
- * Returns: %TRUE if successful, with the out parameters set.
- *          %FALSE otherwise, with @error set.
- * Since: 2.38
+ * Returns: a #GFileAttributeInfo for the @name, or %NULL if an
+ * attribute isn't found.
  */
 
 
 /**
- * g_file_measure_disk_usage_async:
- * @file: a #GFile
- * @flags: #GFileMeasureFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable
- * @progress_callback: (nullable): a #GFileMeasureProgressCallback
- * @progress_data: user_data for @progress_callback
- * @callback: (nullable): a #GAsyncReadyCallback to call when complete
- * @user_data: the data to pass to callback function
- *
- * Recursively measures the disk usage of @file.
+ * g_file_attribute_info_list_new:
  *
- * This is the asynchronous version of g_file_measure_disk_usage().  See
- * there for more information.
+ * Creates a new file attribute info list.
  *
- * Since: 2.38
+ * Returns: a #GFileAttributeInfoList.
  */
 
 
 /**
- * g_file_measure_disk_usage_finish:
- * @file: a #GFile
- * @result: the #GAsyncResult passed to your #GAsyncReadyCallback
- * @disk_usage: (out) (optional): the number of bytes of disk space used
- * @num_dirs: (out) (optional): the number of directories encountered
- * @num_files: (out) (optional): the number of non-directories encountered
- * @error: (nullable): %NULL, or a pointer to a %NULL #GError pointer
+ * g_file_attribute_info_list_ref:
+ * @list: a #GFileAttributeInfoList to reference.
  *
- * Collects the results from an earlier call to
- * g_file_measure_disk_usage_async().  See g_file_measure_disk_usage() for
- * more information.
+ * References a file attribute info list.
  *
- * Returns: %TRUE if successful, with the out parameters set.
- *          %FALSE otherwise, with @error set.
- * Since: 2.38
+ * Returns: #GFileAttributeInfoList or %NULL on error.
  */
 
 
 /**
- * g_file_monitor:
- * @file: input #GFile
- * @flags: a set of #GFileMonitorFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
+ * g_file_attribute_info_list_unref:
+ * @list: The #GFileAttributeInfoList to unreference.
  *
- * Obtains a file or directory monitor for the given file,
- * depending on the type of the file.
+ * Removes a reference from the given @list. If the reference count
+ * falls to zero, the @list is deleted.
+ */
+
+
+/**
+ * g_file_attribute_matcher_enumerate_namespace:
+ * @matcher: a #GFileAttributeMatcher.
+ * @ns: a string containing a file attribute namespace.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Checks if the matcher will match all of the keys in a given namespace.
+ * This will always return %TRUE if a wildcard character is in use (e.g. if
+ * matcher was created with "standard::*" and @ns is "standard", or if matcher was created
+ * using "*" and namespace is anything.)
  *
- * Returns: (transfer full): a #GFileMonitor for the given @file,
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.18
+ * TODO: this is awkwardly worded.
+ *
+ * Returns: %TRUE if the matcher matches all of the entries
+ * in the given @ns, %FALSE otherwise.
  */
 
 
 /**
- * g_file_monitor_cancel:
- * @monitor: a #GFileMonitor.
+ * g_file_attribute_matcher_enumerate_next:
+ * @matcher: a #GFileAttributeMatcher.
  *
- * Cancels a file monitor.
+ * Gets the next matched attribute from a #GFileAttributeMatcher.
  *
- * Returns: always %TRUE
+ * Returns: a string containing the next attribute or %NULL if
+ * no more attribute exist.
  */
 
 
 /**
- * g_file_monitor_directory: (virtual monitor_dir)
- * @file: input #GFile
- * @flags: a set of #GFileMonitorFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Obtains a directory monitor for the given file.
- * This may fail if directory monitoring is not supported.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * g_file_attribute_matcher_matches:
+ * @matcher: a #GFileAttributeMatcher.
+ * @attribute: a file attribute key.
  *
- * It does not make sense for @flags to contain
- * %G_FILE_MONITOR_WATCH_HARD_LINKS, since hard links can not be made to
- * directories.  It is not possible to monitor all the files in a
- * directory for changes made via hard links; if you want to do this then
- * you must register individual watches with g_file_monitor().
+ * Checks if an attribute will be matched by an attribute matcher. If
+ * the matcher was created with the "*" matching string, this function
+ * will always return %TRUE.
  *
- * Returns: (transfer full): a #GFileMonitor for the given @file,
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Returns: %TRUE if @attribute matches @matcher. %FALSE otherwise.
  */
 
 
 /**
- * g_file_monitor_emit_event:
- * @monitor: a #GFileMonitor.
- * @child: a #GFile.
- * @other_file: a #GFile.
- * @event_type: a set of #GFileMonitorEvent flags.
+ * g_file_attribute_matcher_matches_only:
+ * @matcher: a #GFileAttributeMatcher.
+ * @attribute: a file attribute key.
  *
- * Emits the #GFileMonitor::changed signal if a change
- * has taken place. Should be called from file monitor
- * implementations only.
+ * Checks if a attribute matcher only matches a given attribute. Always
+ * returns %FALSE if "*" was used when creating the matcher.
  *
- * Implementations are responsible to call this method from the
- * [thread-default main context][g-main-context-push-thread-default] of the
- * thread that the monitor was created in.
+ * Returns: %TRUE if the matcher only matches @attribute. %FALSE otherwise.
  */
 
 
 /**
- * g_file_monitor_file:
- * @file: input #GFile
- * @flags: a set of #GFileMonitorFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
+ * g_file_attribute_matcher_new:
+ * @attributes: an attribute string to match.
  *
- * Obtains a file monitor for the given file. If no file notification
- * mechanism exists, then regular polling of the file is used.
+ * Creates a new file attribute matcher, which matches attributes
+ * against a given string. #GFileAttributeMatchers are reference
+ * counted structures, and are created with a reference count of 1. If
+ * the number of references falls to 0, the #GFileAttributeMatcher is
+ * automatically destroyed.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * The @attribute string should be formatted with specific keys separated
+ * from namespaces with a double colon. Several "namespace::key" strings may be
+ * concatenated with a single comma (e.g. "standard::type,standard::is-hidden").
+ * The wildcard "*" may be used to match all keys and namespaces, or
+ * "namespace::*" will match all keys in a given namespace.
  *
- * If @flags contains %G_FILE_MONITOR_WATCH_HARD_LINKS then the monitor
- * will also attempt to report changes made to the file via another
- * filename (ie, a hard link). Without this flag, you can only rely on
- * changes made through the filename contained in @file to be
- * reported. Using this flag may result in an increase in resource
- * usage, and may not have any effect depending on the #GFileMonitor
- * backend and/or filesystem type.
+ * ## Examples of file attribute matcher strings and results
  *
- * Returns: (transfer full): a #GFileMonitor for the given @file,
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * - `"*"`: matches all attributes.
+ * - `"standard::is-hidden"`: matches only the key is-hidden in the
+ *   standard namespace.
+ * - `"standard::type,unix::*"`: matches the type key in the standard
+ *   namespace and all keys in the unix namespace.
+ *
+ * Returns: a #GFileAttributeMatcher
  */
 
 
 /**
- * g_file_monitor_is_cancelled:
- * @monitor: a #GFileMonitor
+ * g_file_attribute_matcher_ref:
+ * @matcher: a #GFileAttributeMatcher.
  *
- * Returns whether the monitor is canceled.
+ * References a file attribute matcher.
  *
- * Returns: %TRUE if monitor is canceled. %FALSE otherwise.
+ * Returns: a #GFileAttributeMatcher.
  */
 
 
 /**
- * g_file_monitor_set_rate_limit:
- * @monitor: a #GFileMonitor.
- * @limit_msecs: a non-negative integer with the limit in milliseconds
- *     to poll for changes
+ * g_file_attribute_matcher_subtract:
+ * @matcher: Matcher to subtract from
+ * @subtract: The matcher to subtract
  *
- * Sets the rate limit to which the @monitor will report
- * consecutive change events to the same file.
+ * Subtracts all attributes of @subtract from @matcher and returns
+ * a matcher that supports those attributes.
+ *
+ * Note that currently it is not possible to remove a single
+ * attribute when the @matcher matches the whole namespace - or remove
+ * a namespace or attribute when the matcher matches everything. This
+ * is a limitation of the current implementation, but may be fixed
+ * in the future.
+ *
+ * Returns: A file attribute matcher matching all attributes of
+ *     @matcher that are not matched by @subtract
  */
 
 
 /**
- * g_file_mount_enclosing_volume:
- * @location: input #GFile
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation
- *     or %NULL to avoid user interaction
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
- * @user_data: the data to pass to callback function
- *
- * Starts a @mount_operation, mounting the volume that contains
- * the file @location.
+ * g_file_attribute_matcher_to_string:
+ * @matcher: (nullable): a #GFileAttributeMatcher.
  *
- * When this operation has completed, @callback will be called with
- * @user_user data, and the operation can be finalized with
- * g_file_mount_enclosing_volume_finish().
+ * Prints what the matcher is matching against. The format will be
+ * equal to the format passed to g_file_attribute_matcher_new().
+ * The output however, might not be identical, as the matcher may
+ * decide to use a different order or omit needless parts.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Returns: a string describing the attributes the matcher matches
+ *   against or %NULL if @matcher was %NULL.
+ * Since: 2.32
  */
 
 
 /**
- * g_file_mount_enclosing_volume_finish:
- * @location: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
- *
- * Finishes a mount operation started by g_file_mount_enclosing_volume().
+ * g_file_attribute_matcher_unref:
+ * @matcher: a #GFileAttributeMatcher.
  *
- * Returns: %TRUE if successful. If an error has occurred,
- *     this function will return %FALSE and set @error
- *     appropriately if present.
+ * Unreferences @matcher. If the reference count falls below 1,
+ * the @matcher is automatically freed.
  */
 
 
 /**
- * g_file_mount_mountable:
- * @file: input #GFile
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
- * @user_data: (closure): the data to pass to callback function
- *
- * Mounts a file of type G_FILE_TYPE_MOUNTABLE.
- * Using @mount_operation, you can request callbacks when, for instance,
- * passwords are needed during authentication.
+ * g_file_attribute_value_dup:
+ * @other: a #GFileAttributeValue to duplicate.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Duplicates a file attribute.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_mount_mountable_finish() to get
- * the result of the operation.
+ * Returns: a duplicate of the @other.
  */
 
 
 /**
- * g_file_mount_mountable_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
- *
- * Finishes a mount operation. See g_file_mount_mountable() for details.
- *
- * Finish an asynchronous mount operation that was started
- * with g_file_mount_mountable().
+ * g_file_attribute_value_set:
+ * @attr: a #GFileAttributeValue to set the value in.
+ * @new_value: a #GFileAttributeValue to get the value from.
  *
- * Returns: (transfer full): a #GFile or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Sets an attribute's value from another attribute.
  */
 
 
 /**
- * g_file_move:
- * @source: #GFile pointing to the source location
- * @destination: #GFile pointing to the destination location
+ * g_file_copy:
+ * @source: input #GFile
+ * @destination: destination #GFile
  * @flags: set of #GFileCopyFlags
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
- * @progress_callback: (nullable) (scope call): #GFileProgressCallback
- *     function for updates
- * @progress_callback_data: (closure): gpointer to user data for
- *     the callback function
- * @error: #GError for returning error conditions, or %NULL
+ * @progress_callback: (nullable) (scope call): function to callback with
+ *     progress information, or %NULL if progress information is not needed
+ * @progress_callback_data: (closure): user data to pass to @progress_callback
+ * @error: #GError to set on error, or %NULL
  *
- * 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 + 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.
+ * Copies the file @source to the location specified by @destination.
+ * Can not handle recursive copies of directories.
  *
  * If the flag #G_FILE_COPY_OVERWRITE is specified an already
  * existing @destination file is overwritten.
  * will be copied as symlinks, otherwise the target of the
  * @source symlink will be copied.
  *
+ * If the flag #G_FILE_COPY_ALL_METADATA is specified then all the metadata
+ * that is possible to copy is copied, not just the default subset (which,
+ * for instance, does not include the owner, see #GFileInfo).
+ *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * If @progress_callback is not %NULL, then the operation can be monitored
  * by setting this to a #GFileProgressCallback function.
- * @progress_callback_data will be passed to this function. It is
- * guaranteed that this callback will be called after all data has been
- * transferred with the total number of bytes copied during the operation.
+ * @progress_callback_data will be passed to this function. It is guaranteed
+ * that this callback will be called after all data has been transferred with
+ * the total number of bytes copied during the operation.
  *
- * If the @source file does not exist, then the %G_IO_ERROR_NOT_FOUND
- * error is returned, independent on the status of the @destination.
+ * If the @source file does not exist, then the %G_IO_ERROR_NOT_FOUND error
+ * is returned, independent on the status of the @destination.
  *
- * If #G_FILE_COPY_OVERWRITE is not specified and the target exists,
- * then the error %G_IO_ERROR_EXISTS is returned.
+ * If #G_FILE_COPY_OVERWRITE is not specified and the target exists, then
+ * the error %G_IO_ERROR_EXISTS is returned.
  *
  * If trying to overwrite a file over a directory, the %G_IO_ERROR_IS_DIRECTORY
  * error is returned. If trying to overwrite a directory with a directory the
  * %G_IO_ERROR_WOULD_MERGE error is returned.
  *
  * If the source is a directory and the target does not exist, or
- * #G_FILE_COPY_OVERWRITE is specified and the target is a file, then
- * the %G_IO_ERROR_WOULD_RECURSE error may be returned (if the native
- * move operation isn't available).
+ * #G_FILE_COPY_OVERWRITE is specified and the target is a file, then the
+ * %G_IO_ERROR_WOULD_RECURSE error is returned.
  *
- * Returns: %TRUE on successful move, %FALSE otherwise.
+ * If you are interested in copying the #GFile object itself (not the on-disk
+ * file), see g_file_dup().
+ *
+ * Returns: %TRUE on success, %FALSE otherwise.
  */
 
 
 /**
- * g_file_new_build_filename:
- * @first_element: (type filename): the first element in the path
- * @...: remaining elements in path, terminated by %NULL
+ * g_file_copy_async:
+ * @source: input #GFile
+ * @destination: destination #GFile
+ * @flags: set of #GFileCopyFlags
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @progress_callback: (nullable) (scope notified): function to callback with progress
+ *     information, or %NULL if progress information is not needed
+ * @progress_callback_data: (closure progress_callback) (nullable): user data to pass to @progress_callback
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure callback): the data to pass to callback function
  *
- * Constructs a #GFile from a series of elements using the correct
- * separator for filenames.
+ * Copies the file @source to the location specified by @destination
+ * asynchronously. For details of the behaviour, see g_file_copy().
  *
- * Using this function is equivalent to calling g_build_filename(),
- * followed by g_file_new_for_path() on the result.
+ * If @progress_callback is not %NULL, then that function that will be called
+ * just like in g_file_copy(). The callback will run in the default main context
+ * of the thread calling g_file_copy_async() â€” the same context as @callback is
+ * run in.
  *
- * Returns: (transfer full): a new #GFile
- * Since: 2.56
+ * When the operation is finished, @callback will be called. You can then call
+ * g_file_copy_finish() to get the result of the operation.
  */
 
 
 /**
- * g_file_new_for_commandline_arg:
- * @arg: (type filename): a command line string
+ * g_file_copy_attributes:
+ * @source: a #GFile with attributes
+ * @destination: a #GFile to copy attributes to
+ * @flags: a set of #GFileCopyFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, %NULL to ignore
  *
- * Creates a #GFile with the given argument from the command line.
- * The value of @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.
+ * Copies the file attributes from @source to @destination.
  *
- * Note that on Windows, this function expects its argument to be in
- * UTF-8 -- not the system code page.  This means that you
- * should not use this function with string from argv as it is passed
- * to main().  g_win32_get_command_line() will return a UTF-8 version of
- * the commandline.  #GApplication also uses UTF-8 but
- * g_application_command_line_create_file_for_arg() may be more useful
- * for you there.  It is also always possible to use this function with
- * #GOptionContext arguments of type %G_OPTION_ARG_FILENAME.
+ * Normally only a subset of the file attributes are copied,
+ * those that are copies in a normal file copy operation
+ * (which for instance does not include e.g. owner). However
+ * if #G_FILE_COPY_ALL_METADATA is specified in @flags, then
+ * all the metadata that is possible to copy is copied. This
+ * is useful when implementing move by copy + delete source.
  *
- * Returns: (transfer full): a new #GFile.
- *    Free the returned object with g_object_unref().
+ * Returns: %TRUE if the attributes were copied successfully,
+ *     %FALSE otherwise.
  */
 
 
 /**
- * g_file_new_for_commandline_arg_and_cwd:
- * @arg: (type filename): a command line string
- * @cwd: (type filename): the current working directory of the commandline
- *
- * Creates a #GFile with the given argument from the command line.
- *
- * This function is similar to g_file_new_for_commandline_arg() except
- * that it allows for passing the current working directory as an
- * argument instead of using the current working directory of the
- * process.
- *
- * This is useful if the commandline argument was given in a context
- * other than the invocation of the current process.
+ * g_file_copy_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * See also g_application_command_line_create_file_for_arg().
+ * Finishes copying the file started with g_file_copy_async().
  *
- * Returns: (transfer full): a new #GFile
- * Since: 2.36
+ * Returns: a %TRUE on success, %FALSE on error.
  */
 
 
 /**
- * g_file_new_for_path:
- * @path: (type filename): a string containing a relative or absolute path.
- *     The string must be encoded in the glib filename encoding.
+ * g_file_create:
+ * @file: input #GFile
+ * @flags: a set of #GFileCreateFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Constructs a #GFile for a given path. This operation never
- * fails, but the returned object might not support any I/O
- * operation if @path is malformed.
+ * Creates a new file and returns an output stream for writing to it.
+ * The file must not already exist.
  *
- * Returns: (transfer full): a new #GFile for the given @path.
- *   Free the returned object with g_object_unref().
+ * By default files created are generally readable by everyone,
+ * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+ * will be made readable only to the current user, to the level
+ * that is supported on the target filesystem.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled
+ * by triggering the cancellable object from another thread. If the
+ * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
+ * returned.
+ *
+ * If a file or directory with this name already exists the
+ * %G_IO_ERROR_EXISTS error will be returned. Some file systems don't
+ * allow all file names, and may return an %G_IO_ERROR_INVALID_FILENAME
+ * error, and if the name is to long %G_IO_ERROR_FILENAME_TOO_LONG will
+ * be returned. Other errors are possible too, and depend on what kind
+ * of filesystem the file is on.
+ *
+ * Returns: (transfer full): a #GFileOutputStream for the newly created
+ *     file, or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_new_for_uri:
- * @uri: a UTF-8 string containing a URI
+ * g_file_create_async:
+ * @file: input #GFile
+ * @flags: a set of #GFileCreateFlags
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Constructs a #GFile for a given URI. This operation never
- * fails, but the returned object might not support any I/O
- * operation if @uri is malformed or if the uri type is
- * not supported.
+ * Asynchronously creates a new file and returns an output stream
+ * for writing to it. The file must not already exist.
  *
- * Returns: (transfer full): a new #GFile for the given @uri.
- *     Free the returned object with g_object_unref().
+ * For more details, see g_file_create() which is
+ * the synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_create_finish() to get the result
+ * of the operation.
  */
 
 
 /**
- * g_file_new_tmp:
- * @tmpl: (type filename) (nullable): Template for the file
- *   name, as in g_file_open_tmp(), or %NULL for a default template
- * @iostream: (out): on return, a #GFileIOStream for the created file
+ * g_file_create_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
  * @error: a #GError, or %NULL
  *
- * Opens a file in the preferred directory for temporary files (as
- * returned by g_get_tmp_dir()) and returns a #GFile and
- * #GFileIOStream pointing to it.
- *
- * @tmpl should be a string in the GLib file name encoding
- * containing a sequence of six 'X' characters, and containing no
- * directory components. If it is %NULL, a default template is used.
- *
- * Unlike the other #GFile constructors, this will return %NULL if
- * a temporary file could not be created.
+ * Finishes an asynchronous file create operation started with
+ * g_file_create_async().
  *
- * Returns: (transfer full): a new #GFile.
+ * Returns: (transfer full): a #GFileOutputStream or %NULL on error.
  *     Free the returned object with g_object_unref().
- * Since: 2.32
  */
 
 
 /**
- * g_file_open_readwrite:
- * @file: #GFile to open
- * @cancellable: (nullable): a #GCancellable
- * @error: a #GError, or %NULL
+ * g_file_create_readwrite:
+ * @file: a #GFile
+ * @flags: a set of #GFileCreateFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: return location for a #GError, or %NULL
  *
- * Opens an existing file for reading and writing. The result is
- * a #GFileIOStream that can be used to read and write the contents
- * of the file.
+ * 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 #G_FILE_CREATE_PRIVATE in @flags the file
+ * will be made readable only to the current user, to the level
+ * that is supported on the target filesystem.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled
  * by triggering the cancellable object from another thread. If the
  * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
  * returned.
  *
- * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will
- * be returned. If the file is a directory, the %G_IO_ERROR_IS_DIRECTORY
- * error will be returned. Other errors are possible too, and depend on
- * what kind of filesystem the file is on. 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.
+ * If a file or directory with this name already exists, the
+ * %G_IO_ERROR_EXISTS error will be returned. Some file systems don't
+ * allow all file names, and may return an %G_IO_ERROR_INVALID_FILENAME
+ * error, and if the name is too long, %G_IO_ERROR_FILENAME_TOO_LONG
+ * will be returned. Other errors are possible too, and depend on what
+ * kind of filesystem the file is on.
  *
- * Returns: (transfer full): #GFileIOStream or %NULL on error.
+ * 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.
+ *
+ * Returns: (transfer full): a #GFileIOStream for the newly created
+ *     file, or %NULL on error.
  *     Free the returned object with g_object_unref().
  * Since: 2.22
  */
 
 
 /**
- * g_file_open_readwrite_async:
+ * g_file_create_readwrite_async:
  * @file: input #GFile
+ * @flags: a set of #GFileCreateFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
  *     when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
- * Asynchronously opens @file for reading and writing.
+ * Asynchronously creates a new file and returns a stream
+ * for reading and writing to it. The file must not already exist.
  *
- * For more details, see g_file_open_readwrite() which is
+ * For more details, see g_file_create_readwrite() which is
  * the synchronous version of this call.
  *
  * When the operation is finished, @callback will be called.
- * You can then call g_file_open_readwrite_finish() to get
+ * You can then call g_file_create_readwrite_finish() to get
  * the result of the operation.
  *
  * Since: 2.22
 
 
 /**
- * g_file_open_readwrite_finish:
+ * g_file_create_readwrite_finish:
  * @file: input #GFile
  * @res: a #GAsyncResult
  * @error: a #GError, or %NULL
  *
- * Finishes an asynchronous file read operation started with
- * g_file_open_readwrite_async().
+ * Finishes an asynchronous file create operation started with
+ * g_file_create_readwrite_async().
  *
  * Returns: (transfer full): a #GFileIOStream or %NULL on error.
  *     Free the returned object with g_object_unref().
 
 
 /**
- * g_file_output_stream_get_etag:
- * @stream: a #GFileOutputStream.
- *
- * Gets the entity tag for the file when it has been written.
- * This must be called after the stream has been written
- * and closed, as the etag can change while writing.
- *
- * Returns: the entity tag for the stream.
- */
-
-
-/**
- * g_file_output_stream_query_info:
- * @stream: a #GFileOutputStream.
- * @attributes: a file attribute query string.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @error: a #GError, %NULL to ignore.
- *
- * Queries a file output stream for the given @attributes.
- * This function blocks while querying the stream. For the asynchronous
- * version of this function, see g_file_output_stream_query_info_async().
- * While the stream is blocked, the stream will set the pending flag
- * internally, and any other operations on the stream will fail with
- * %G_IO_ERROR_PENDING.
- *
- * Can fail if the stream was already closed (with @error being set to
- * %G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
- * set to %G_IO_ERROR_PENDING), or if querying info is not supported for
- * the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). In
- * all cases of failure, %NULL will be returned.
+ * g_file_delete: (virtual delete_file)
+ * @file: input #GFile
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
+ *
+ * Deletes a file. If the @file is a directory, it will only be
+ * deleted if it is empty. This has the same semantics as g_unlink().
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
- * be returned.
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: (transfer full): a #GFileInfo for the @stream, or %NULL on error.
+ * Returns: %TRUE if the file was deleted. %FALSE otherwise.
  */
 
 
 /**
- * g_file_output_stream_query_info_async:
- * @stream: a #GFileOutputStream.
- * @attributes: a file attribute query string.
- * @io_priority: the [I/O priority][gio-GIOScheduler] of the request
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @callback: callback to call when the request is satisfied
+ * g_file_delete_async: (virtual delete_file_async)
+ * @file: input #GFile
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: a #GAsyncReadyCallback to call
+ *     when the request is satisfied
  * @user_data: the data to pass to callback function
  *
- * Asynchronously queries the @stream for a #GFileInfo. When completed,
- * @callback will be called with a #GAsyncResult which can be used to
- * finish the operation with g_file_output_stream_query_info_finish().
+ * Asynchronously delete a file. If the @file is a directory, it will
+ * only be deleted if it is empty.  This has the same semantics as
+ * g_unlink().
  *
- * For the synchronous version of this function, see
- * g_file_output_stream_query_info().
+ * Since: 2.34
  */
 
 
 /**
- * g_file_output_stream_query_info_finish:
- * @stream: a #GFileOutputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError, %NULL to ignore.
+ * g_file_delete_finish: (virtual delete_file_finish)
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Finalizes the asynchronous query started
- * by g_file_output_stream_query_info_async().
+ * Finishes deleting a file started with g_file_delete_async().
  *
- * Returns: (transfer full): A #GFileInfo for the finished query.
+ * Returns: %TRUE if the file was deleted. %FALSE otherwise.
+ * Since: 2.34
  */
 
 
 /**
- * g_file_parse_name:
- * @parse_name: a file name or path to be parsed
+ * g_file_descriptor_based_get_fd:
+ * @fd_based: a #GFileDescriptorBased.
  *
- * Constructs a #GFile with the given @parse_name (i.e. something
- * given by g_file_get_parse_name()). This operation never fails,
- * but the returned object might not support any I/O operation if
- * the @parse_name cannot be parsed.
+ * Gets the underlying file descriptor.
  *
- * Returns: (transfer full): a new #GFile.
+ * Returns: The file descriptor
+ * Since: 2.24
  */
 
 
 /**
- * g_file_peek_path:
+ * g_file_dup:
  * @file: input #GFile
  *
- * Exactly like g_file_get_path(), but caches the result via
- * g_object_set_qdata_full().  This is useful for example in C
- * applications which mix `g_file_*` APIs with native ones.  It
- * also avoids an extra duplicated string when possible, so will be
- * generally more efficient.
+ * Duplicates a #GFile handle. This operation does not duplicate
+ * the actual file or directory represented by the #GFile; see
+ * g_file_copy() if attempting to copy a file.
+ *
+ * g_file_dup() is useful when a second handle is needed to the same underlying
+ * file, for use in a separate thread (#GFile is not thread-safe). For use
+ * within the same thread, use g_object_ref() to increment the existing object’s
+ * reference count.
  *
  * This call does no blocking I/O.
  *
- * Returns: (type filename) (nullable): string containing the #GFile's path,
- *     or %NULL if no such path exists. The returned string is owned by @file.
- * Since: 2.56
+ * Returns: (transfer full): a new #GFile that is a duplicate
+ *     of the given #GFile.
  */
 
 
 /**
- * g_file_poll_mountable:
+ * g_file_eject_mountable:
  * @file: input #GFile
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @callback: (nullable): a #GAsyncReadyCallback to call
+ * @flags: flags affecting the operation
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
  *     when the request is satisfied, or %NULL
- * @user_data: the data to pass to callback function
+ * @user_data: (closure): the data to pass to callback function
  *
- * Polls a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Starts an asynchronous eject on a mountable.
+ * When this operation has completed, @callback will be called with
+ * @user_user data, and the operation can be finalized with
+ * g_file_eject_mountable_finish().
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_mount_mountable_finish() to get
- * the result of the operation.
- *
- * Since: 2.22
+ * Deprecated: 2.22: Use g_file_eject_mountable_with_operation() instead.
  */
 
 
 /**
- * g_file_poll_mountable_finish:
+ * g_file_eject_mountable_finish:
  * @file: input #GFile
  * @result: a #GAsyncResult
  * @error: a #GError, or %NULL
  *
- * Finishes a poll operation. See g_file_poll_mountable() for details.
- *
- * Finish an asynchronous poll operation that was polled
- * with g_file_poll_mountable().
- *
- * Returns: %TRUE if the operation finished successfully. %FALSE
- * otherwise.
- * Since: 2.22
- */
-
-
-/**
- * g_file_query_default_handler:
- * @file: a #GFile to open
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Returns the #GAppInfo that is registered as the default
- * application to handle the file specified by @file.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Finishes an asynchronous eject operation started by
+ * g_file_eject_mountable().
  *
- * Returns: (transfer full): a #GAppInfo if the handle was found,
- *     %NULL if there were errors.
- *     When you are done with it, release it with g_object_unref()
+ * Returns: %TRUE if the @file was ejected successfully.
+ *     %FALSE otherwise.
+ * Deprecated: 2.22: Use g_file_eject_mountable_with_operation_finish()
+ *     instead.
  */
 
 
 /**
- * g_file_query_exists:
+ * g_file_eject_mountable_with_operation:
  * @file: input #GFile
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation,
+ *     or %NULL to avoid user interaction
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
+ * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
+ *     when the request is satisfied, or %NULL
+ * @user_data: (closure): the data to pass to callback function
  *
- * Utility function to check if a particular file exists. This is
- * implemented using g_file_query_info() and as such does blocking I/O.
- *
- * Note that in many cases it is [racy to first check for file existence](https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use)
- * and then execute something based on the outcome of that, because the
- * file might have been created or removed in between the operations. The
- * general approach to handling that is to not check, but just do the
- * operation and handle the errors as they come.
- *
- * As an example of race-free checking, take the case of reading a file,
- * and if it doesn't exist, creating it. There are two racy versions: read
- * it, and on error create it; and: check if it exists, if not create it.
- * These can both result in two processes creating the file (with perhaps
- * a partially written file as the result). The correct approach is to
- * always try to create the file with g_file_create() which will either
- * atomically create the file or fail with a %G_IO_ERROR_EXISTS error.
+ * Starts an asynchronous eject on a mountable.
+ * When this operation has completed, @callback will be called with
+ * @user_user data, and the operation can be finalized with
+ * g_file_eject_mountable_with_operation_finish().
  *
- * However, in many cases an existence check is useful in a user interface,
- * for instance to make a menu item sensitive/insensitive, so that you don't
- * have to fool users that something is possible and then just show an error
- * dialog. If you do this, you should make sure to also handle the errors
- * that can happen due to races when you execute the operation.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: %TRUE if the file exists (and can be detected without error),
- *     %FALSE otherwise (or if cancelled).
+ * Since: 2.22
  */
 
 
 /**
- * g_file_query_file_type:
+ * g_file_eject_mountable_with_operation_finish:
  * @file: input #GFile
- * @flags: a set of #GFileQueryInfoFlags passed to g_file_query_info()
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- *
- * Utility function to inspect the #GFileType of a file. This is
- * implemented using g_file_query_info() and as such does blocking I/O.
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * The primary use case of this method is to check if a file is
- * a regular file, directory, or symlink.
+ * Finishes an asynchronous eject operation started by
+ * g_file_eject_mountable_with_operation().
  *
- * Returns: The #GFileType of the file and #G_FILE_TYPE_UNKNOWN
- *     if the file does not exist
- * Since: 2.18
+ * Returns: %TRUE if the @file was ejected successfully.
+ *     %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_file_query_filesystem_info:
+ * g_file_enumerate_children:
  * @file: input #GFile
  * @attributes: an attribute query string
+ * @flags: a set of #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
- * @error: a #GError
+ * @error: #GError for error reporting
  *
- * Similar to g_file_query_info(), but obtains information
- * about the filesystem the @file is on, rather than the file itself.
- * For instance the amount of space available and the type of
- * the filesystem.
+ * Gets the requested information about the files in a directory.
+ * The result is a #GFileEnumerator object that will give out
+ * #GFileInfo objects for all the files in the directory.
  *
- * The @attributes value is a string that specifies the attributes
- * that should be gathered. It is not an error if it's not possible
- * to read a particular requested attribute from a file - it just
- * won't be set. @attributes should be a comma-separated list of
- * attributes or attribute wildcards. The wildcard "*" means all
- * attributes, and a wildcard like "filesystem::*" means all attributes
- * in the filesystem namespace. The standard namespace for filesystem
- * attributes is "filesystem". Common attributes of interest are
- * #G_FILE_ATTRIBUTE_FILESYSTEM_SIZE (the total size of the filesystem
- * in bytes), #G_FILE_ATTRIBUTE_FILESYSTEM_FREE (number of bytes available),
- * and #G_FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
+ * The @attributes value is a string that specifies the file
+ * attributes that should be gathered. It is not an error if
+ * it's not possible to read a particular requested attribute
+ * from a file - it just won't be set. @attributes should
+ * be a comma-separated list of attributes or attribute wildcards.
+ * The wildcard "*" 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.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled
  * by triggering the cancellable object from another thread. If the
  * returned.
  *
  * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will
- * be returned. Other errors are possible too, and depend on what
- * kind of filesystem the file is on.
+ * be returned. If the file is not a directory, the %G_IO_ERROR_NOT_DIRECTORY
+ * error will be returned. Other errors are possible too.
  *
- * Returns: (transfer full): a #GFileInfo or %NULL if there was an error.
- *     Free the returned object with g_object_unref().
+ * Returns: (transfer full): A #GFileEnumerator if successful,
+ *     %NULL on error. Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_query_filesystem_info_async:
+ * g_file_enumerate_children_async:
  * @file: input #GFile
  * @attributes: an attribute query string
+ * @flags: a set of #GFileQueryInfoFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ *     request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
- * Asynchronously gets the requested information about the filesystem
- * that the specified @file is on. The result is a #GFileInfo object
- * that contains key-value attributes (such as type or size for the
- * file).
+ * Asynchronously gets the requested information about the files
+ * in a directory. The result is a #GFileEnumerator object that will
+ * give out #GFileInfo objects for all the files in the directory.
  *
- * For more details, see g_file_query_filesystem_info() which is the
- * synchronous version of this call.
+ * For more details, see g_file_enumerate_children() which is
+ * the synchronous version of this call.
  *
  * When the operation is finished, @callback will be called. You can
- * then call g_file_query_info_finish() to get the result of the
- * operation.
+ * then call g_file_enumerate_children_finish() to get the result of
+ * the operation.
  */
 
 
 /**
- * g_file_query_filesystem_info_finish:
+ * g_file_enumerate_children_finish:
  * @file: input #GFile
  * @res: a #GAsyncResult
  * @error: a #GError
  *
- * Finishes an asynchronous filesystem info query.
- * See g_file_query_filesystem_info_async().
+ * Finishes an async enumerate children operation.
+ * See g_file_enumerate_children_async().
  *
- * Returns: (transfer full): #GFileInfo for given @file
- *     or %NULL on error.
+ * Returns: (transfer full): a #GFileEnumerator or %NULL
+ *     if an error occurred.
  *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_query_info:
- * @file: input #GFile
- * @attributes: an attribute query string
- * @flags: a set of #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError
+ * g_file_enumerator_close:
+ * @enumerator: a #GFileEnumerator.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Gets the requested information about specified @file.
- * The result is a #GFileInfo object that contains key-value
- * attributes (such as the type or size of the file).
+ * Releases all resources used by this enumerator, making the
+ * enumerator return %G_IO_ERROR_CLOSED on all calls.
  *
- * The @attributes value is a string that specifies the file
- * attributes that should be gathered. It is not an error if
- * it's not possible to read a particular requested attribute
- * from a file - it just won't be set. @attributes should be a
- * comma-separated list of attributes or attribute wildcards.
- * The wildcard "*" 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.
+ * This will be automatically called when the last reference
+ * is dropped, but you might want to call this function to make
+ * sure resources are released as early as possible.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled
- * by triggering the cancellable object from another thread. If the
- * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
+ * Returns: #TRUE on success or #FALSE on error.
+ */
+
+
+/**
+ * g_file_enumerator_close_async:
+ * @enumerator: a #GFileEnumerator.
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
+ *
+ * Asynchronously closes the file enumerator.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned in
+ * g_file_enumerator_close_finish().
+ */
+
+
+/**
+ * g_file_enumerator_close_finish:
+ * @enumerator: a #GFileEnumerator.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
+ *
+ * Finishes closing a file enumerator, started from g_file_enumerator_close_async().
+ *
+ * If the file enumerator was already closed when g_file_enumerator_close_async()
+ * was called, then this function will report %G_IO_ERROR_CLOSED in @error, and
+ * return %FALSE. If the file enumerator had pending operation when the close
+ * operation was started, then this function will report %G_IO_ERROR_PENDING, and
+ * return %FALSE.  If @cancellable was not %NULL, then the operation may have been
+ * cancelled by triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %FALSE will be
  * returned.
  *
- * For symlinks, normally the information about the target of the
- * symlink is returned, rather than information about the symlink
- * itself. However if you pass #G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS
- * in @flags the information about the symlink itself will be returned.
- * Also, for symlinks that point to non-existing files the information
- * about the symlink itself will be returned.
+ * Returns: %TRUE if the close operation has finished successfully.
+ */
+
+
+/**
+ * g_file_enumerator_get_child:
+ * @enumerator: a #GFileEnumerator
+ * @info: a #GFileInfo gotten from g_file_enumerator_next_file()
+ *   or the async equivalents.
  *
- * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will be
- * returned. Other errors are possible too, and depend on what kind of
- * filesystem the file is on.
+ * Return a new #GFile which refers to the file named by @info in the source
+ * directory of @enumerator.  This function is primarily intended to be used
+ * inside loops with g_file_enumerator_next_file().
  *
- * Returns: (transfer full): a #GFileInfo for the given @file, or %NULL
- *     on error. Free the returned object with g_object_unref().
+ * This is a convenience method that's equivalent to:
+ * |[<!-- language="C" -->
+ *   gchar *name = g_file_info_get_name (info);
+ *   GFile *child = g_file_get_child (g_file_enumerator_get_container (enumr),
+ *                                    name);
+ * ]|
+ *
+ * Returns: (transfer full): a #GFile for the #GFileInfo passed it.
+ * Since: 2.36
  */
 
 
 /**
- * g_file_query_info_async:
- * @file: input #GFile
- * @attributes: an attribute query string
- * @flags: a set of #GFileQueryInfoFlags
+ * g_file_enumerator_get_container:
+ * @enumerator: a #GFileEnumerator
+ *
+ * Get the #GFile container which is being enumerated.
+ *
+ * Returns: (transfer none): the #GFile which is being enumerated.
+ * Since: 2.18
+ */
+
+
+/**
+ * g_file_enumerator_has_pending:
+ * @enumerator: a #GFileEnumerator.
+ *
+ * Checks if the file enumerator has pending operations.
+ *
+ * Returns: %TRUE if the @enumerator has pending operations.
+ */
+
+
+/**
+ * g_file_enumerator_is_closed:
+ * @enumerator: a #GFileEnumerator.
+ *
+ * Checks if the file enumerator has been closed.
+ *
+ * Returns: %TRUE if the @enumerator is closed.
+ */
+
+
+/**
+ * g_file_enumerator_iterate:
+ * @direnum: an open #GFileEnumerator
+ * @out_info: (out) (transfer none) (optional): Output location for the next #GFileInfo, or %NULL
+ * @out_child: (out) (transfer none) (optional): Output location for the next #GFile, or %NULL
+ * @cancellable: a #GCancellable
+ * @error: a #GError
+ *
+ * This is a version of g_file_enumerator_next_file() that's easier to
+ * use correctly from C programs.  With g_file_enumerator_next_file(),
+ * the gboolean return value signifies "end of iteration or error", which
+ * requires allocation of a temporary #GError.
+ *
+ * In contrast, with this function, a %FALSE return from
+ * g_file_enumerator_iterate() *always* means
+ * "error".  End of iteration is signaled by @out_info or @out_child being %NULL.
+ *
+ * Another crucial difference is that the references for @out_info and
+ * @out_child are owned by @direnum (they are cached as hidden
+ * properties).  You must not unref them in your own code.  This makes
+ * memory management significantly easier for C code in combination
+ * with loops.
+ *
+ * Finally, this function optionally allows retrieving a #GFile as
+ * well.
+ *
+ * You must specify at least one of @out_info or @out_child.
+ *
+ * The code pattern for correctly using g_file_enumerator_iterate() from C
+ * is:
+ *
+ * |[
+ * direnum = g_file_enumerate_children (file, ...);
+ * while (TRUE)
+ *   {
+ *     GFileInfo *info;
+ *     if (!g_file_enumerator_iterate (direnum, &info, NULL, cancellable, error))
+ *       goto out;
+ *     if (!info)
+ *       break;
+ *     ... do stuff with "info"; do not unref it! ...
+ *   }
+ *
+ * out:
+ *   g_object_unref (direnum); // Note: frees the last @info
+ * ]|
+ *
+ * Since: 2.44
+ */
+
+
+/**
+ * g_file_enumerator_next_file:
+ * @enumerator: a #GFileEnumerator.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
+ *
+ * Returns information for the next file in the enumerated object.
+ * Will block until the information is available. The #GFileInfo
+ * returned from this function will contain attributes that match the
+ * attribute string that was passed when the #GFileEnumerator was created.
+ *
+ * See the documentation of #GFileEnumerator for information about the
+ * order of returned files.
+ *
+ * On error, returns %NULL and sets @error to the error. If the
+ * enumerator is at the end, %NULL will be returned and @error will
+ * be unset.
+ *
+ * Returns: (nullable) (transfer full): A #GFileInfo or %NULL on error
+ *    or end of enumerator.  Free the returned object with
+ *    g_object_unref() when no longer needed.
+ */
+
+
+/**
+ * g_file_enumerator_next_files_async:
+ * @enumerator: a #GFileEnumerator.
+ * @num_files: the number of file info objects to request
  * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *     request is satisfied
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
- * Asynchronously gets the requested information about specified @file.
- * The result is a #GFileInfo object that contains key-value attributes
- * (such as type or size for the file).
+ * Request information for a number of files from the enumerator asynchronously.
+ * When all i/o for the operation is finished the @callback will be called with
+ * the requested information.
+ *
+ * See the documentation of #GFileEnumerator for information about the
+ * order of returned files.
+ *
+ * The callback can 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 %G_IO_ERROR_CANCELLED.
+ *
+ * During an async request no other sync and async calls are allowed, and will
+ * result in %G_IO_ERROR_PENDING errors.
+ *
+ * Any outstanding i/o request with higher priority (lower numerical value) will
+ * be executed before an outstanding request with lower priority. Default
+ * priority is %G_PRIORITY_DEFAULT.
+ */
+
+
+/**
+ * g_file_enumerator_next_files_finish:
+ * @enumerator: a #GFileEnumerator.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * For more details, see g_file_query_info() which is the synchronous
- * version of this call.
+ * Finishes the asynchronous operation started with g_file_enumerator_next_files_async().
  *
- * When the operation is finished, @callback will be called. You can
- * then call g_file_query_info_finish() to get the result of the operation.
+ * Returns: (transfer full) (element-type Gio.FileInfo): a #GList of #GFileInfos. You must free the list with
+ *     g_list_free() and unref the infos with g_object_unref() when you're
+ *     done with them.
  */
 
 
 /**
- * g_file_query_info_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError
- *
- * Finishes an asynchronous file info query.
- * See g_file_query_info_async().
+ * g_file_enumerator_set_pending:
+ * @enumerator: a #GFileEnumerator.
+ * @pending: a boolean value.
  *
- * Returns: (transfer full): #GFileInfo for given @file
- *     or %NULL on error. Free the returned object with
- *     g_object_unref().
+ * Sets the file enumerator as having pending operations.
  */
 
 
 /**
- * g_file_query_settable_attributes:
- * @file: input #GFile
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
+ * g_file_equal:
+ * @file1: the first #GFile
+ * @file2: the second #GFile
  *
- * Obtain the list of settable attributes for the file.
+ * Checks if the two given #GFiles refer to the same file.
  *
- * Returns the type and full attribute name of all the attributes
- * that can be set on this file. This doesn't mean setting it will
- * always succeed though, you might get an access failure, or some
- * specific file may not support a specific attribute.
+ * Note that two #GFiles that differ can still refer to the same
+ * file on the filesystem due to various forms of filename
+ * aliasing.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * This call does no blocking I/O.
  *
- * Returns: a #GFileAttributeInfoList describing the settable attributes.
- *     When you are done with it, release it with
- *     g_file_attribute_info_list_unref()
+ * Returns: %TRUE if @file1 and @file2 are equal.
  */
 
 
 /**
- * g_file_query_writable_namespaces:
+ * g_file_find_enclosing_mount:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Obtain the list of attribute namespaces where new attributes
- * can be created by a user. An example of this is extended
- * attributes (in the "xattr" namespace).
- *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * @error: a #GError
  *
- * Returns: a #GFileAttributeInfoList describing the writable namespaces.
- *     When you are done with it, release it with
- *     g_file_attribute_info_list_unref()
- */
-
-
-/**
- * g_file_read: (virtual read_fn)
- * @file: #GFile to read
- * @cancellable: (nullable): a #GCancellable
- * @error: a #GError, or %NULL
+ * Gets a #GMount for the #GFile.
  *
- * Opens a file for reading. The result is a #GFileInputStream that
- * can be used to read the contents of the file.
+ * If the #GFileIface for @file does not have a mount (e.g.
+ * possibly a remote share), @error will be set to %G_IO_ERROR_NOT_FOUND
+ * and %NULL will be returned.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will be
- * returned. If the file is a directory, the %G_IO_ERROR_IS_DIRECTORY
- * error will be returned. Other errors are possible too, and depend
- * on what kind of filesystem the file is on.
- *
- * Returns: (transfer full): #GFileInputStream or %NULL on error.
+ * Returns: (transfer full): a #GMount where the @file is located
+ *     or %NULL on error.
  *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_read_async:
- * @file: input #GFile
+ * g_file_find_enclosing_mount_async:
+ * @file: a #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
  *     %NULL to ignore
  *     when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
- * Asynchronously opens @file for reading.
+ * Asynchronously gets the mount for the file.
  *
- * For more details, see g_file_read() which is
+ * For more details, see g_file_find_enclosing_mount() which is
  * the synchronous version of this call.
  *
  * When the operation is finished, @callback will be called.
- * You can then call g_file_read_finish() to get the result
- * of the operation.
+ * You can then call g_file_find_enclosing_mount_finish() to
+ * get the result of the operation.
  */
 
 
 /**
- * g_file_read_finish:
- * @file: input #GFile
+ * g_file_find_enclosing_mount_finish:
+ * @file: a #GFile
  * @res: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * @error: a #GError
  *
- * Finishes an asynchronous file read operation started with
- * g_file_read_async().
+ * Finishes an asynchronous find mount request.
+ * See g_file_find_enclosing_mount_async().
  *
- * Returns: (transfer full): a #GFileInputStream or %NULL on error.
+ * Returns: (transfer full): #GMount for given @file or %NULL on error.
  *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_replace:
+ * g_file_get_basename:
  * @file: input #GFile
- * @etag: (nullable): an optional [entity tag][gfile-etag]
- *     for the current #GFile, or #NULL to ignore
- * @make_backup: %TRUE if a backup should be created
- * @flags: a set of #GFileCreateFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
  *
- * Returns an output stream for overwriting the file, possibly
- * creating a backup copy of the file first. If the file doesn't exist,
- * it will be created.
+ * Gets the base name (the last component of the path) for a given #GFile.
  *
- * 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.
+ * If called for the top level of a system (such as the filesystem root
+ * or a uri like sftp://host/) it will return a single directory separator
+ * (and on Windows, possibly a drive letter).
  *
- * By default files created are generally readable by everyone,
- * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
- * will be made readable only to the current user, to the level that
- * is supported on the target filesystem.
+ * The base name is a byte string (not UTF-8). It has no defined encoding
+ * or rules other than it may not contain zero bytes.  If you want to use
+ * filenames in a user interface you should use the display name that you
+ * can get by requesting the %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME
+ * attribute with g_file_query_info().
  *
- * If @cancellable is not %NULL, then the operation can be cancelled
- * by triggering the cancellable object from another thread. If the
- * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
- * returned.
+ * This call does no blocking I/O.
  *
- * If you pass in a non-%NULL @etag value and @file already exists, then
- * this value is compared to the current entity tag of the file, and if
- * they differ an %G_IO_ERROR_WRONG_ETAG error is returned. This
- * generally means that the file has been changed since you last read
- * it. You can get the new etag from g_file_output_stream_get_etag()
- * after you've finished writing and closed the #GFileOutputStream. When
- * you load a new file you can use g_file_input_stream_query_info() to
- * get the etag of the file.
+ * Returns: (type filename) (nullable): string containing the #GFile's
+ *     base name, or %NULL if given #GFile is invalid. The returned string
+ *     should be freed with g_free() when no longer needed.
+ */
+
+
+/**
+ * g_file_get_child:
+ * @file: input #GFile
+ * @name: (type filename): string containing the child's basename
  *
- * If @make_backup is %TRUE, this function will attempt to make a
- * backup of the current file before overwriting it. If this fails
- * a %G_IO_ERROR_CANT_CREATE_BACKUP error will be returned. If you
- * want to replace anyway, try again with @make_backup set to %FALSE.
+ * Gets a child of @file with basename equal to @name.
  *
- * If the file is a directory the %G_IO_ERROR_IS_DIRECTORY error will
- * be returned, and if the file is some other form of non-regular file
- * then a %G_IO_ERROR_NOT_REGULAR_FILE error will be returned. Some
- * file systems don't allow all file names, and may return an
- * %G_IO_ERROR_INVALID_FILENAME error, and if the name is to long
- * %G_IO_ERROR_FILENAME_TOO_LONG will be returned. Other errors are
- * possible too, and depend on what kind of filesystem the file is on.
+ * Note that the file with that specific name might not exist, but
+ * you can still have a #GFile that points to it. You can use this
+ * for instance to create that file.
  *
- * Returns: (transfer full): a #GFileOutputStream or %NULL on error.
+ * This call does no blocking I/O.
+ *
+ * Returns: (transfer full): a #GFile to a child specified by @name.
  *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_replace_async:
+ * g_file_get_child_for_display_name:
  * @file: input #GFile
- * @etag: (nullable): an [entity tag][gfile-etag] for the current #GFile,
- *     or %NULL to ignore
- * @make_backup: %TRUE if a backup should be created
- * @flags: a set of #GFileCreateFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * @display_name: string to a possible child
+ * @error: return location for an error
  *
- * Asynchronously overwrites the file, replacing the contents,
- * possibly creating a backup copy of the file first.
+ * Gets the child of @file for a given @display_name (i.e. a UTF-8
+ * version of the name). If this function fails, it returns %NULL
+ * and @error will be set. This is very useful when constructing a
+ * #GFile for a new file and the user entered the filename in the
+ * user interface, for instance when you select a directory and
+ * type a filename in the file selector.
  *
- * For more details, see g_file_replace() which is
- * the synchronous version of this call.
+ * This call does no blocking I/O.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_replace_finish() to get the result
- * of the operation.
+ * Returns: (transfer full): a #GFile to the specified child, or
+ *     %NULL if the display name couldn't be converted.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_replace_contents:
+ * g_file_get_parent:
  * @file: input #GFile
- * @contents: (element-type guint8) (array length=length): a string containing the new contents for @file
- * @length: the length of @contents in bytes
- * @etag: (nullable): the old [entity-tag][gfile-etag] for the document,
- *     or %NULL
- * @make_backup: %TRUE if a backup should be created
- * @flags: a set of #GFileCreateFlags
- * @new_etag: (out) (optional): a location to a new [entity tag][gfile-etag]
- *      for the document. This should be freed with g_free() when no longer
- *      needed, or %NULL
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Replaces the contents of @file with @contents of @length bytes.
- *
- * If @etag is specified (not %NULL), any existing file must have that etag,
- * or the error %G_IO_ERROR_WRONG_ETAG will be returned.
- *
- * If @make_backup is %TRUE, this function will attempt to make a backup
- * of @file. Internally, it uses g_file_replace(), so will try to replace the
- * file contents in the safest way possible. For example, atomic renames are
- * used when replacing local files’ contents.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets the parent directory for the @file.
+ * If the @file represents the root directory of the
+ * file system, then %NULL will be returned.
  *
- * The returned @new_etag can be used to verify that the file hasn't
- * changed the next time it is saved over.
+ * This call does no blocking I/O.
  *
- * Returns: %TRUE if successful. If an error has occurred, this function
- *     will return %FALSE and set @error appropriately if present.
+ * Returns: (nullable) (transfer full): a #GFile structure to the
+ *     parent of the given #GFile or %NULL if there is no parent. Free
+ *     the returned object with g_object_unref().
  */
 
 
 /**
- * g_file_replace_contents_async:
+ * g_file_get_parse_name:
  * @file: input #GFile
- * @contents: (element-type guint8) (array length=length): string of contents to replace the file with
- * @length: the length of @contents in bytes
- * @etag: (nullable): a new [entity tag][gfile-etag] for the @file, or %NULL
- * @make_backup: %TRUE if a backup should be created
- * @flags: a set of #GFileCreateFlags
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
  *
- * Starts an asynchronous replacement of @file with the given
- * @contents of @length bytes. @etag will replace the document's
- * current entity tag.
+ * Gets the parse name of the @file.
+ * A parse name is a UTF-8 string that describes the
+ * file such that one can get the #GFile back using
+ * g_file_parse_name().
  *
- * When this operation has completed, @callback will be called with
- * @user_user data, and the operation can be finalized with
- * g_file_replace_contents_finish().
+ * This is generally used to show the #GFile as a nice
+ * full-pathname kind of string in a user interface,
+ * like in a location entry.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * For local files with names that can safely be converted
+ * to UTF-8 the pathname is used, otherwise the IRI is used
+ * (a form of URI that allows UTF-8 characters unescaped).
  *
- * If @make_backup is %TRUE, this function will attempt to
- * make a backup of @file.
+ * This call does no blocking I/O.
  *
- * Note that no copy of @content will be made, so it must stay valid
- * until @callback is called. See g_file_replace_contents_bytes_async()
- * for a #GBytes version that will automatically hold a reference to the
- * contents (without copying) for the duration of the call.
+ * Returns: a string containing the #GFile's parse name.
+ *     The returned string should be freed with g_free()
+ *     when no longer needed.
  */
 
 
 /**
- * g_file_replace_contents_bytes_async:
+ * g_file_get_path:
  * @file: input #GFile
- * @contents: a #GBytes
- * @etag: (nullable): a new [entity tag][gfile-etag] for the @file, or %NULL
- * @make_backup: %TRUE if a backup should be created
- * @flags: a set of #GFileCreateFlags
- * @cancellable: optional #GCancellable object, %NULL to ignore
- * @callback: a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: the data to pass to callback function
  *
- * Same as g_file_replace_contents_async() but takes a #GBytes input instead.
- * This function will keep a ref on @contents until the operation is done.
- * Unlike g_file_replace_contents_async() this allows forgetting about the
- * content without waiting for the callback.
+ * Gets the local pathname for #GFile, if one exists. If non-%NULL, this is
+ * guaranteed to be an absolute, canonical path. It might contain symlinks.
  *
- * When this operation has completed, @callback will be called with
- * @user_user data, and the operation can be finalized with
- * g_file_replace_contents_finish().
+ * This call does no blocking I/O.
  *
- * Since: 2.40
+ * Returns: (type filename) (nullable): string containing the #GFile's path,
+ *     or %NULL if no such path exists. The returned string should be freed
+ *     with g_free() when no longer needed.
  */
 
 
 /**
- * g_file_replace_contents_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @new_etag: (out) (optional): a location of a new [entity tag][gfile-etag]
- *     for the document. This should be freed with g_free() when it is no
- *     longer needed, or %NULL
- * @error: a #GError, or %NULL
+ * g_file_get_relative_path:
+ * @parent: input #GFile
+ * @descendant: input #GFile
  *
- * Finishes an asynchronous replace of the given @file. See
- * g_file_replace_contents_async(). Sets @new_etag to the new entity
- * tag for the document, if present.
+ * Gets the path for @descendant relative to @parent.
  *
- * Returns: %TRUE on success, %FALSE on failure.
+ * This call does no blocking I/O.
+ *
+ * Returns: (type filename) (nullable): string with the relative path from
+ *     @descendant to @parent, or %NULL if @descendant doesn't have @parent as
+ *     prefix. The returned string should be freed with g_free() when
+ *     no longer needed.
  */
 
 
 /**
- * g_file_replace_finish:
+ * g_file_get_uri:
  * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError, or %NULL
  *
- * Finishes an asynchronous file replace operation started with
- * g_file_replace_async().
+ * Gets the URI for the @file.
  *
- * Returns: (transfer full): a #GFileOutputStream, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * This call does no blocking I/O.
+ *
+ * Returns: a string containing the #GFile's URI.
+ *     The returned string should be freed with g_free()
+ *     when no longer needed.
  */
 
 
 /**
- * g_file_replace_readwrite:
- * @file: a #GFile
- * @etag: (nullable): an optional [entity tag][gfile-etag]
- *     for the current #GFile, or #NULL to ignore
- * @make_backup: %TRUE if a backup should be created
- * @flags: a set of #GFileCreateFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: return location for a #GError, or %NULL
- *
- * 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.
+ * g_file_get_uri_scheme:
+ * @file: input #GFile
  *
- * For details about the behaviour, see g_file_replace() which does the
- * same thing but returns an output stream only.
+ * Gets the URI scheme for a #GFile.
+ * RFC 3986 decodes the scheme as:
+ * |[
+ * URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
+ * ]|
+ * Common schemes include "file", "http", "ftp", etc.
  *
- * 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.
+ * This call does no blocking I/O.
  *
- * Returns: (transfer full): a #GFileIOStream or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Returns: a string containing the URI scheme for the given
+ *     #GFile. The returned string should be freed with g_free()
+ *     when no longer needed.
  */
 
 
 /**
- * g_file_replace_readwrite_async:
+ * g_file_has_parent:
  * @file: input #GFile
- * @etag: (nullable): an [entity tag][gfile-etag] for the current #GFile,
- *     or %NULL to ignore
- * @make_backup: %TRUE if a backup should be created
- * @flags: a set of #GFileCreateFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Asynchronously overwrites the file in read-write mode,
- * replacing the contents, possibly creating a backup copy
- * of the file first.
+ * @parent: (nullable): the parent to check for, or %NULL
  *
- * For more details, see g_file_replace_readwrite() which is
- * the synchronous version of this call.
+ * Checks if @file has a parent, and optionally, if it is @parent.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_replace_readwrite_finish() to get
- * the result of the operation.
+ * If @parent is %NULL then this function returns %TRUE if @file has any
+ * parent at all.  If @parent is non-%NULL then %TRUE is only returned
+ * if @file is an immediate child of @parent.
  *
- * Since: 2.22
+ * Returns: %TRUE if @file is an immediate child of @parent (or any parent in
+ *          the case that @parent is %NULL).
+ * Since: 2.24
  */
 
 
 /**
- * g_file_replace_readwrite_finish:
+ * g_file_has_prefix: (virtual prefix_matches)
  * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * @prefix: input #GFile
  *
- * Finishes an asynchronous file replace operation started with
- * g_file_replace_readwrite_async().
+ * Checks whether @file has the prefix specified by @prefix.
  *
- * Returns: (transfer full): a #GFileIOStream, or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
- */
-
-
-/**
- * g_file_resolve_relative_path:
- * @file: input #GFile
- * @relative_path: (type filename): a given relative path string
+ * In other words, if the names of initial elements of @file's
+ * pathname match @prefix. Only full pathname elements are matched,
+ * so a path like /foo is not considered a prefix of /foobar, only
+ * of /foo/bar.
  *
- * Resolves a relative path for @file to an absolute path.
+ * A #GFile is not a prefix of itself. If you want to check for
+ * equality, use g_file_equal().
  *
- * This call does no blocking I/O.
+ * This call does no I/O, as it works purely on names. As such it can
+ * sometimes return %FALSE even if @file is inside a @prefix (from a
+ * filesystem point of view), because the prefix of @file is an alias
+ * of @prefix.
  *
- * Returns: (transfer full): #GFile to the resolved path.
- *     %NULL if @relative_path is %NULL or if @file is invalid.
- *     Free the returned object with g_object_unref().
+ * Returns: %TRUE if the @files's parent, grandparent, etc is @prefix,
+ *     %FALSE otherwise.
  */
 
 
 /**
- * g_file_set_attribute:
+ * g_file_has_uri_scheme:
  * @file: input #GFile
- * @attribute: a string containing the attribute's name
- * @type: The type of the attribute
- * @value_p: (nullable): a pointer to the value (or the pointer
- *     itself if the type is a pointer type)
- * @flags: a set of #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Sets an attribute in the file with attribute name @attribute to @value.
+ * @uri_scheme: a string containing a URI scheme
  *
- * Some attributes can be unset by setting @type to
- * %G_FILE_ATTRIBUTE_TYPE_INVALID and @value_p to %NULL.
+ * Checks to see if a #GFile has a given URI scheme.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * This call does no blocking I/O.
  *
- * Returns: %TRUE if the attribute was set, %FALSE otherwise.
+ * Returns: %TRUE if #GFile's backend supports the
+ *     given URI scheme, %FALSE if URI scheme is %NULL,
+ *     not supported, or #GFile is invalid.
  */
 
 
 /**
- * g_file_set_attribute_byte_string:
- * @file: input #GFile
- * @attribute: a string containing the attribute's name
- * @value: a string containing the attribute's new value
- * @flags: a #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
+ * g_file_hash: (virtual hash)
+ * @file: (type GFile): #gconstpointer to a #GFile
  *
- * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING to @value.
- * If @attribute is of a different type, this operation will fail,
- * returning %FALSE.
+ * Creates a hash value for a #GFile.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * This call does no blocking I/O.
  *
- * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ * Returns: 0 if @file is not a valid #GFile, otherwise an
+ *     integer that can be used as hash value for the #GFile.
+ *     This function is intended for easily hashing a #GFile to
+ *     add to a #GHashTable or similar data structure.
  */
 
 
 /**
- * g_file_set_attribute_int32:
- * @file: input #GFile
- * @attribute: a string containing the attribute's name
- * @value: a #gint32 containing the attribute's new value
- * @flags: a #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT32 to @value.
- * If @attribute is of a different type, this operation will fail.
+ * g_file_icon_get_file:
+ * @icon: a #GIcon.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets the #GFile associated with the given @icon.
  *
- * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ * Returns: (transfer none): a #GFile, or %NULL.
  */
 
 
 /**
- * g_file_set_attribute_int64:
- * @file: input #GFile
- * @attribute: a string containing the attribute's name
- * @value: a #guint64 containing the attribute's new value
- * @flags: a #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT64 to @value.
- * If @attribute is of a different type, this operation will fail.
+ * g_file_icon_new:
+ * @file: a #GFile.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Creates a new icon for a file.
  *
- * Returns: %TRUE if the @attribute was successfully set, %FALSE otherwise.
+ * Returns: (transfer full) (type GFileIcon): a #GIcon for the given
+ *   @file, or %NULL on error.
  */
 
 
 /**
- * g_file_set_attribute_string:
- * @file: input #GFile
- * @attribute: a string containing the attribute's name
- * @value: a string containing the attribute's value
- * @flags: #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_STRING to @value.
- * If @attribute is of a different type, this operation will fail.
- *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * g_file_info_clear_status:
+ * @info: a #GFileInfo.
  *
- * Returns: %TRUE if the @attribute was successfully set, %FALSE otherwise.
+ * Clears the status information from @info.
  */
 
 
 /**
- * g_file_set_attribute_uint32:
- * @file: input #GFile
- * @attribute: a string containing the attribute's name
- * @value: a #guint32 containing the attribute's new value
- * @flags: a #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
+ * g_file_info_copy_into:
+ * @src_info: source to copy attributes from.
+ * @dest_info: destination to copy attributes to.
  *
- * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT32 to @value.
- * If @attribute is of a different type, this operation will fail.
+ * First clears all of the [GFileAttribute][gio-GFileAttribute] of @dest_info,
+ * and then copies all of the file attributes from @src_info to @dest_info.
+ */
+
+
+/**
+ * g_file_info_dup:
+ * @other: a #GFileInfo.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Duplicates a file info structure.
  *
- * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ * Returns: (transfer full): a duplicate #GFileInfo of @other.
  */
 
 
 /**
- * g_file_set_attribute_uint64:
- * @file: input #GFile
- * @attribute: a string containing the attribute's name
- * @value: a #guint64 containing the attribute's new value
- * @flags: a #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT64 to @value.
- * If @attribute is of a different type, this operation will fail.
+ * g_file_info_get_attribute_as_string:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets the value of a attribute, formated as a string.
+ * This escapes things as needed to make the string valid
+ * utf8.
  *
- * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ * Returns: a UTF-8 string associated with the given @attribute.
+ *    When you're done with the string it must be freed with g_free().
  */
 
 
 /**
- * g_file_set_attributes_async:
- * @file: input #GFile
- * @info: a #GFileInfo
- * @flags: a #GFileQueryInfoFlags
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): a #gpointer
- *
- * Asynchronously sets the attributes of @file with @info.
+ * g_file_info_get_attribute_boolean:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * For more details, see g_file_set_attributes_from_info(),
- * which is the synchronous version of this call.
+ * Gets the value of a boolean attribute. If the attribute does not
+ * contain a boolean value, %FALSE will be returned.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_set_attributes_finish() to get
- * the result of the operation.
+ * Returns: the boolean value contained within the attribute.
  */
 
 
 /**
- * g_file_set_attributes_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @info: (out) (transfer full): a #GFileInfo
- * @error: a #GError, or %NULL
+ * g_file_info_get_attribute_byte_string:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * Finishes setting an attribute started in g_file_set_attributes_async().
+ * Gets the value of a byte string attribute. If the attribute does
+ * not contain a byte string, %NULL will be returned.
  *
- * Returns: %TRUE if the attributes were set correctly, %FALSE otherwise.
+ * Returns: the contents of the @attribute value as a byte string, or
+ * %NULL otherwise.
  */
 
 
 /**
- * g_file_set_attributes_from_info:
- * @file: input #GFile
+ * g_file_info_get_attribute_data:
  * @info: a #GFileInfo
- * @flags: #GFileQueryInfoFlags
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Tries to set all attributes in the #GFileInfo on the target
- * values, not stopping on the first error.
- *
- * If there is any error during this operation then @error will
- * be set to the first error. Error on particular fields are flagged
- * by setting the "status" field in the attribute value to
- * %G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING, which means you can
- * also detect further errors.
+ * @attribute: a file attribute key
+ * @type: (out) (optional): return location for the attribute type, or %NULL
+ * @value_pp: (out) (optional) (not nullable): return location for the
+ *    attribute value, or %NULL; the attribute value will not be %NULL
+ * @status: (out) (optional): return location for the attribute status, or %NULL
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets the attribute type, value and status for an attribute key.
  *
- * Returns: %FALSE if there was any error, %TRUE otherwise.
+ * Returns: (transfer none): %TRUE if @info has an attribute named @attribute,
+ *      %FALSE otherwise.
  */
 
 
 /**
- * g_file_set_display_name:
- * @file: input #GFile
- * @display_name: a string
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Renames @file to the specified display name.
- *
- * The display name is converted from UTF-8 to the correct encoding
- * for the target filesystem if possible and the @file is renamed to this.
- *
- * If you want to implement a rename operation in the user interface the
- * edit name (#G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the
- * initial value in the rename widget, and then the result after editing
- * should be passed to g_file_set_display_name().
- *
- * On success the resulting converted filename is returned.
+ * g_file_info_get_attribute_int32:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Gets a signed 32-bit integer contained within the attribute. If the
+ * attribute does not contain a signed 32-bit integer, or is invalid,
+ * 0 will be returned.
  *
- * Returns: (transfer full): a #GFile specifying what @file was renamed to,
- *     or %NULL if there was an error.
- *     Free the returned object with g_object_unref().
+ * Returns: a signed 32-bit integer from the attribute.
  */
 
 
 /**
- * g_file_set_display_name_async:
- * @file: input #GFile
- * @display_name: a string
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Asynchronously sets the display name for a given #GFile.
+ * g_file_info_get_attribute_int64:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * For more details, see g_file_set_display_name() which is
- * the synchronous version of this call.
+ * Gets a signed 64-bit integer contained within the attribute. If the
+ * attribute does not contain an signed 64-bit integer, or is invalid,
+ * 0 will be returned.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_set_display_name_finish() to get
- * the result of the operation.
+ * Returns: a signed 64-bit integer from the attribute.
  */
 
 
 /**
- * g_file_set_display_name_finish:
- * @file: input #GFile
- * @res: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_file_info_get_attribute_object:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * Finishes setting a display name started with
- * g_file_set_display_name_async().
+ * Gets the value of a #GObject attribute. If the attribute does
+ * not contain a #GObject, %NULL will be returned.
  *
- * Returns: (transfer full): a #GFile or %NULL on error.
- *     Free the returned object with g_object_unref().
+ * Returns: (transfer none): a #GObject associated with the given @attribute, or
+ * %NULL otherwise.
  */
 
 
 /**
- * g_file_start_mountable:
- * @file: input #GFile
- * @flags: flags affecting the operation
- * @start_operation: (nullable): a #GMountOperation, or %NULL to avoid user interaction
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (nullable): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL
- * @user_data: the data to pass to callback function
+ * g_file_info_get_attribute_status:
+ * @info: a #GFileInfo
+ * @attribute: a file attribute key
  *
- * Starts a file of type #G_FILE_TYPE_MOUNTABLE.
- * Using @start_operation, you can request callbacks when, for instance,
- * passwords are needed during authentication.
+ * Gets the attribute status for an attribute key.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Returns: a #GFileAttributeStatus for the given @attribute, or
+ *    %G_FILE_ATTRIBUTE_STATUS_UNSET if the key is invalid.
+ */
+
+
+/**
+ * g_file_info_get_attribute_string:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_mount_mountable_finish() to get
- * the result of the operation.
+ * Gets the value of a string attribute. If the attribute does
+ * not contain a string, %NULL will be returned.
  *
- * Since: 2.22
+ * Returns: the contents of the @attribute value as a UTF-8 string, or
+ * %NULL otherwise.
  */
 
 
 /**
- * g_file_start_mountable_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
- *
- * Finishes a start operation. See g_file_start_mountable() for details.
+ * g_file_info_get_attribute_stringv:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * Finish an asynchronous start operation that was started
- * with g_file_start_mountable().
+ * Gets the value of a stringv attribute. If the attribute does
+ * not contain a stringv, %NULL will be returned.
  *
- * Returns: %TRUE if the operation finished successfully. %FALSE
- * otherwise.
+ * Returns: (transfer none): the contents of the @attribute value as a stringv, or
+ * %NULL otherwise. Do not free. These returned strings are UTF-8.
  * Since: 2.22
  */
 
 
 /**
- * g_file_stop_mountable:
- * @file: input #GFile
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction.
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
- * @user_data: the data to pass to callback function
+ * g_file_info_get_attribute_type:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * Stops a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Gets the attribute type for an attribute key.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Returns: a #GFileAttributeType for the given @attribute, or
+ * %G_FILE_ATTRIBUTE_TYPE_INVALID if the key is not set.
+ */
+
+
+/**
+ * g_file_info_get_attribute_uint32:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_stop_mountable_finish() to get
- * the result of the operation.
+ * Gets an unsigned 32-bit integer contained within the attribute. If the
+ * attribute does not contain an unsigned 32-bit integer, or is invalid,
+ * 0 will be returned.
  *
- * Since: 2.22
+ * Returns: an unsigned 32-bit integer from the attribute.
  */
 
 
 /**
- * g_file_stop_mountable_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
- *
- * Finishes an stop operation, see g_file_stop_mountable() for details.
+ * g_file_info_get_attribute_uint64:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * Finish an asynchronous stop operation that was started
- * with g_file_stop_mountable().
+ * Gets a unsigned 64-bit integer contained within the attribute. If the
+ * attribute does not contain an unsigned 64-bit integer, or is invalid,
+ * 0 will be returned.
  *
- * Returns: %TRUE if the operation finished successfully.
- *     %FALSE otherwise.
- * Since: 2.22
+ * Returns: a unsigned 64-bit integer from the attribute.
  */
 
 
 /**
- * g_file_supports_thread_contexts:
- * @file: a #GFile
+ * g_file_info_get_content_type:
+ * @info: a #GFileInfo.
  *
- * Checks if @file supports
- * [thread-default contexts][g-main-context-push-thread-default-context].
- * If this returns %FALSE, you cannot perform asynchronous operations on
- * @file in a thread that has a thread-default context.
+ * Gets the file's content type.
  *
- * Returns: Whether or not @file supports thread-default contexts.
- * Since: 2.22
+ * Returns: a string containing the file's content type.
  */
 
 
 /**
- * g_file_trash: (virtual trash)
- * @file: #GFile to send to trash
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @error: a #GError, or %NULL
- *
- * Sends @file to the "Trashcan", if possible. This is similar to
- * deleting it, but the user can recover it before emptying the trashcan.
- * Not all file systems support trashing, so this call can return the
- * %G_IO_ERROR_NOT_SUPPORTED error.
+ * g_file_info_get_deletion_date:
+ * @info: a #GFileInfo.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Returns the #GDateTime representing the deletion date of the file, as
+ * available in G_FILE_ATTRIBUTE_TRASH_DELETION_DATE. If the
+ * G_FILE_ATTRIBUTE_TRASH_DELETION_DATE attribute is unset, %NULL is returned.
  *
- * Returns: %TRUE on successful trash, %FALSE otherwise.
+ * Returns: a #GDateTime, or %NULL.
+ * Since: 2.36
  */
 
 
 /**
- * g_file_trash_async: (virtual trash_async)
- * @file: input #GFile
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: a #GAsyncReadyCallback to call
- *     when the request is satisfied
- * @user_data: the data to pass to callback function
+ * g_file_info_get_display_name:
+ * @info: a #GFileInfo.
  *
- * Asynchronously sends @file to the Trash location, if possible.
+ * Gets a display name for a file.
  *
- * Since: 2.38
+ * Returns: a string containing the display name.
  */
 
 
 /**
- * g_file_trash_finish: (virtual trash_finish)
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_file_info_get_edit_name:
+ * @info: a #GFileInfo.
  *
- * Finishes an asynchronous file trashing operation, started with
- * g_file_trash_async().
+ * Gets the edit name for a file.
  *
- * Returns: %TRUE on successful trash, %FALSE otherwise.
- * Since: 2.38
+ * Returns: a string containing the edit name.
  */
 
 
 /**
- * g_file_unmount_mountable:
- * @file: input #GFile
- * @flags: flags affecting the operation
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
- * @user_data: (closure): the data to pass to callback function
+ * g_file_info_get_etag:
+ * @info: a #GFileInfo.
  *
- * Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
+ * Gets the [entity tag][gfile-etag] for a given
+ * #GFileInfo. See %G_FILE_ATTRIBUTE_ETAG_VALUE.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Returns: a string containing the value of the "etag:value" attribute.
+ */
+
+
+/**
+ * g_file_info_get_file_type:
+ * @info: a #GFileInfo.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_unmount_mountable_finish() to get
- * the result of the operation.
+ * Gets a file's type (whether it is a regular file, symlink, etc).
+ * This is different from the file's content type, see g_file_info_get_content_type().
  *
- * Deprecated: 2.22: Use g_file_unmount_mountable_with_operation() instead.
+ * Returns: a #GFileType for the given file.
  */
 
 
 /**
- * g_file_unmount_mountable_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
- *
- * Finishes an unmount operation, see g_file_unmount_mountable() for details.
+ * g_file_info_get_icon:
+ * @info: a #GFileInfo.
  *
- * Finish an asynchronous unmount operation that was started
- * with g_file_unmount_mountable().
+ * Gets the icon for a file.
  *
- * Returns: %TRUE if the operation finished successfully.
- *     %FALSE otherwise.
- * Deprecated: 2.22: Use g_file_unmount_mountable_with_operation_finish()
- *     instead.
+ * Returns: (transfer none): #GIcon for the given @info.
  */
 
 
 /**
- * g_file_unmount_mountable_with_operation:
- * @file: input #GFile
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction
- * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
- * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
- * @user_data: (closure): the data to pass to callback function
+ * g_file_info_get_is_backup:
+ * @info: a #GFileInfo.
  *
- * Unmounts a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Checks if a file is a backup file.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Returns: %TRUE if file is a backup file, %FALSE otherwise.
+ */
+
+
+/**
+ * g_file_info_get_is_hidden:
+ * @info: a #GFileInfo.
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_file_unmount_mountable_finish() to get
- * the result of the operation.
+ * Checks if a file is hidden.
  *
- * Since: 2.22
+ * Returns: %TRUE if the file is a hidden file, %FALSE otherwise.
  */
 
 
 /**
- * g_file_unmount_mountable_with_operation_finish:
- * @file: input #GFile
- * @result: a #GAsyncResult
- * @error: a #GError, or %NULL
+ * g_file_info_get_is_symlink:
+ * @info: a #GFileInfo.
  *
- * Finishes an unmount operation,
- * see g_file_unmount_mountable_with_operation() for details.
+ * Checks if a file is a symlink.
  *
- * Finish an asynchronous unmount operation that was started
- * with g_file_unmount_mountable_with_operation().
+ * Returns: %TRUE if the given @info is a symlink.
+ */
+
+
+/**
+ * g_file_info_get_modification_time:
+ * @info: a #GFileInfo.
+ * @result: (out caller-allocates): a #GTimeVal.
  *
- * Returns: %TRUE if the operation finished successfully.
- *     %FALSE otherwise.
- * Since: 2.22
+ * Gets the modification time of the current @info and sets it
+ * in @result.
  */
 
 
 /**
- * g_filename_completer_get_completion_suffix:
- * @completer: the filename completer.
- * @initial_text: text to be completed.
+ * g_file_info_get_name:
+ * @info: a #GFileInfo.
  *
- * Obtains a completion for @initial_text from @completer.
+ * Gets the name for a file.
  *
- * Returns: a completed string, or %NULL if no completion exists.
- *     This string is not owned by GIO, so remember to g_free() it
- *     when finished.
+ * Returns: (type filename): a string containing the file name.
  */
 
 
 /**
- * g_filename_completer_get_completions:
- * @completer: the filename completer.
- * @initial_text: text to be completed.
+ * g_file_info_get_size:
+ * @info: a #GFileInfo.
  *
- * Gets an array of completion strings for a given initial text.
+ * Gets the file's size.
  *
- * Returns: (array zero-terminated=1) (transfer full): array of strings with possible completions for @initial_text.
- * This array must be freed by g_strfreev() when finished.
+ * Returns: a #goffset containing the file's size.
  */
 
 
 /**
- * g_filename_completer_new:
+ * g_file_info_get_sort_order:
+ * @info: a #GFileInfo.
  *
- * Creates a new filename completer.
+ * Gets the value of the sort_order attribute from the #GFileInfo.
+ * See %G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.
  *
- * Returns: a #GFilenameCompleter.
+ * Returns: a #gint32 containing the value of the "standard::sort_order" attribute.
  */
 
 
 /**
- * g_filename_completer_set_dirs_only:
- * @completer: the filename completer.
- * @dirs_only: a #gboolean.
+ * g_file_info_get_symbolic_icon:
+ * @info: a #GFileInfo.
  *
- * If @dirs_only is %TRUE, @completer will only
- * complete directory names, and not file names.
+ * Gets the symbolic icon for a file.
+ *
+ * Returns: (transfer none): #GIcon for the given @info.
+ * Since: 2.34
  */
 
 
 /**
- * g_filter_input_stream_get_base_stream:
- * @stream: a #GFilterInputStream.
+ * g_file_info_get_symlink_target:
+ * @info: a #GFileInfo.
  *
- * Gets the base stream for the filter stream.
+ * Gets the symlink target for a given #GFileInfo.
  *
- * Returns: (transfer none): a #GInputStream.
+ * Returns: a string containing the symlink target.
  */
 
 
 /**
- * g_filter_input_stream_get_close_base_stream:
- * @stream: a #GFilterInputStream.
+ * g_file_info_has_attribute:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * Returns whether the base stream will be closed when @stream is
- * closed.
+ * Checks if a file info structure has an attribute named @attribute.
  *
- * Returns: %TRUE if the base stream will be closed.
+ * Returns: %TRUE if @Ginfo has an attribute named @attribute,
+ *     %FALSE otherwise.
  */
 
 
 /**
- * g_filter_input_stream_set_close_base_stream:
- * @stream: a #GFilterInputStream.
- * @close_base: %TRUE to close the base stream.
+ * g_file_info_has_namespace:
+ * @info: a #GFileInfo.
+ * @name_space: a file attribute namespace.
  *
- * Sets whether the base stream will be closed when @stream is closed.
+ * Checks if a file info structure has an attribute in the
+ * specified @name_space.
+ *
+ * Returns: %TRUE if @Ginfo has an attribute in @name_space,
+ *     %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_filter_output_stream_get_base_stream:
- * @stream: a #GFilterOutputStream.
+ * g_file_info_list_attributes:
+ * @info: a #GFileInfo.
+ * @name_space: (nullable): a file attribute key's namespace, or %NULL to list
+ *   all attributes.
  *
- * Gets the base stream for the filter stream.
+ * Lists the file info structure's attributes.
  *
- * Returns: (transfer none): a #GOutputStream.
+ * Returns: (nullable) (array zero-terminated=1) (transfer full): a
+ * null-terminated array of strings of all of the possible attribute
+ * types for the given @name_space, or %NULL on error.
  */
 
 
 /**
- * g_filter_output_stream_get_close_base_stream:
- * @stream: a #GFilterOutputStream.
+ * g_file_info_new:
  *
- * Returns whether the base stream will be closed when @stream is
- * closed.
+ * Creates a new file info structure.
  *
- * Returns: %TRUE if the base stream will be closed.
+ * Returns: a #GFileInfo.
  */
 
 
 /**
- * g_filter_output_stream_set_close_base_stream:
- * @stream: a #GFilterOutputStream.
- * @close_base: %TRUE to close the base stream.
+ * g_file_info_remove_attribute:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
  *
- * Sets whether the base stream will be closed when @stream is closed.
+ * Removes all cases of @attribute from @info if it exists.
  */
 
 
 /**
- * g_icon_deserialize:
- * @value: a #GVariant created with g_icon_serialize()
- *
- * Deserializes a #GIcon previously serialized using g_icon_serialize().
+ * g_file_info_set_attribute:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @type: a #GFileAttributeType
+ * @value_p: (not nullable): pointer to the value
  *
- * Returns: (transfer full): a #GIcon, or %NULL when deserialization fails.
- * Since: 2.38
+ * Sets the @attribute to contain the given value, if possible. To unset the
+ * attribute, use %G_FILE_ATTRIBUTE_TYPE_INVALID for @type.
  */
 
 
 /**
- * g_icon_equal:
- * @icon1: (nullable): pointer to the first #GIcon.
- * @icon2: (nullable): pointer to the second #GIcon.
- *
- * Checks if two icons are equal.
+ * g_file_info_set_attribute_boolean:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @attr_value: a boolean value.
  *
- * Returns: %TRUE if @icon1 is equal to @icon2. %FALSE otherwise.
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_icon_hash: (virtual hash)
- * @icon: (not nullable): #gconstpointer to an icon object.
- *
- * Gets a hash for an icon.
+ * g_file_info_set_attribute_byte_string:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @attr_value: a byte string.
  *
- * Returns: a #guint containing a hash for the @icon, suitable for
- * use in a #GHashTable or similar data structure.
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_icon_new_for_string:
- * @str: A string obtained via g_icon_to_string().
- * @error: Return location for error.
- *
- * Generate a #GIcon instance from @str. This function can fail if
- * @str is not valid - see g_icon_to_string() for discussion.
- *
- * If your application or library provides one or more #GIcon
- * implementations you need to ensure that each #GType is registered
- * with the type system prior to calling g_icon_new_for_string().
+ * g_file_info_set_attribute_int32:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @attr_value: a signed 32-bit integer
  *
- * Returns: (transfer full): An object implementing the #GIcon
- *          interface or %NULL if @error is set.
- * Since: 2.20
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_icon_serialize:
- * @icon: a #GIcon
- *
- * Serializes a #GIcon into a #GVariant. An equivalent #GIcon can be retrieved
- * back by calling g_icon_deserialize() on the returned value.
- * As serialization will avoid using raw icon data when possible, it only
- * makes sense to transfer the #GVariant between processes on the same machine,
- * (as opposed to over the network), and within the same file system namespace.
+ * g_file_info_set_attribute_int64:
+ * @info: a #GFileInfo.
+ * @attribute: attribute name to set.
+ * @attr_value: int64 value to set attribute to.
  *
- * Returns: (transfer full): a #GVariant, or %NULL when serialization fails.
- * Since: 2.38
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_icon_to_string: (virtual to_tokens)
- * @icon: a #GIcon.
- *
- * Generates a textual representation of @icon that can be used for
- * serialization such as when passing @icon to a different process or
- * saving it to persistent storage. Use g_icon_new_for_string() to
- * get @icon back from the returned string.
- *
- * The encoding of the returned string is proprietary to #GIcon except
- * in the following two cases
- *
- * - If @icon is a #GFileIcon, the returned string is a native path
- *   (such as `/path/to/my icon.png`) without escaping
- *   if the #GFile for @icon is a native file.  If the file is not
- *   native, the returned string is the result of g_file_get_uri()
- *   (such as `sftp://path/to/my%20icon.png`).
- *
- * - If @icon is a #GThemedIcon with exactly one name, the encoding is
- *    simply the name (such as `network-server`).
+ * g_file_info_set_attribute_mask:
+ * @info: a #GFileInfo.
+ * @mask: a #GFileAttributeMatcher.
  *
- * Returns: (nullable): An allocated NUL-terminated UTF8 string or
- * %NULL if @icon can't be serialized. Use g_free() to free.
- * Since: 2.20
+ * Sets @mask on @info to match specific attribute types.
  */
 
 
 /**
- * g_inet_address_equal:
- * @address: A #GInetAddress.
- * @other_address: Another #GInetAddress.
- *
- * Checks if two #GInetAddress instances are equal, e.g. the same address.
+ * g_file_info_set_attribute_object:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @attr_value: a #GObject.
  *
- * Returns: %TRUE if @address and @other_address are equal, %FALSE otherwise.
- * Since: 2.30
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_inet_address_get_family:
- * @address: a #GInetAddress
+ * g_file_info_set_attribute_status:
+ * @info: a #GFileInfo
+ * @attribute: a file attribute key
+ * @status: a #GFileAttributeStatus
  *
- * Gets @address's family
+ * Sets the attribute status for an attribute key. This is only
+ * needed by external code that implement g_file_set_attributes_from_info()
+ * or similar functions.
  *
- * Returns: @address's family
+ * The attribute must exist in @info for this to work. Otherwise %FALSE
+ * is returned and @info is unchanged.
+ *
+ * Returns: %TRUE if the status was changed, %FALSE if the key was not set.
  * Since: 2.22
  */
 
 
 /**
- * g_inet_address_get_is_any:
- * @address: a #GInetAddress
- *
- * Tests whether @address is the "any" address for its family.
+ * g_file_info_set_attribute_string:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @attr_value: a UTF-8 string.
  *
- * Returns: %TRUE if @address is the "any" address for its family.
- * Since: 2.22
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_inet_address_get_is_link_local:
- * @address: a #GInetAddress
+ * g_file_info_set_attribute_stringv:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key
+ * @attr_value: (array) (element-type utf8): a %NULL terminated array of UTF-8 strings.
  *
- * Tests whether @address is a link-local address (that is, if it
- * identifies a host on a local network that is not connected to the
- * Internet).
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  *
- * Returns: %TRUE if @address is a link-local address.
- * Since: 2.22
+ * Sinze: 2.22
  */
 
 
 /**
- * g_inet_address_get_is_loopback:
- * @address: a #GInetAddress
- *
- * Tests whether @address is the loopback address for its family.
+ * g_file_info_set_attribute_uint32:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @attr_value: an unsigned 32-bit integer.
  *
- * Returns: %TRUE if @address is the loopback address for its family.
- * Since: 2.22
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_inet_address_get_is_mc_global:
- * @address: a #GInetAddress
- *
- * Tests whether @address is a global multicast address.
+ * g_file_info_set_attribute_uint64:
+ * @info: a #GFileInfo.
+ * @attribute: a file attribute key.
+ * @attr_value: an unsigned 64-bit integer.
  *
- * Returns: %TRUE if @address is a global multicast address.
- * Since: 2.22
+ * Sets the @attribute to contain the given @attr_value,
+ * if possible.
  */
 
 
 /**
- * g_inet_address_get_is_mc_link_local:
- * @address: a #GInetAddress
- *
- * Tests whether @address is a link-local multicast address.
+ * g_file_info_set_content_type:
+ * @info: a #GFileInfo.
+ * @content_type: a content type. See [GContentType][gio-GContentType]
  *
- * Returns: %TRUE if @address is a link-local multicast address.
- * Since: 2.22
+ * Sets the content type attribute for a given #GFileInfo.
+ * See %G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE.
  */
 
 
 /**
- * g_inet_address_get_is_mc_node_local:
- * @address: a #GInetAddress
- *
- * Tests whether @address is a node-local multicast address.
+ * g_file_info_set_display_name:
+ * @info: a #GFileInfo.
+ * @display_name: a string containing a display name.
  *
- * Returns: %TRUE if @address is a node-local multicast address.
- * Since: 2.22
+ * Sets the display name for the current #GFileInfo.
+ * See %G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME.
  */
 
 
 /**
- * g_inet_address_get_is_mc_org_local:
- * @address: a #GInetAddress
- *
- * Tests whether @address is an organization-local multicast address.
+ * g_file_info_set_edit_name:
+ * @info: a #GFileInfo.
+ * @edit_name: a string containing an edit name.
  *
- * Returns: %TRUE if @address is an organization-local multicast address.
- * Since: 2.22
+ * Sets the edit name for the current file.
+ * See %G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME.
  */
 
 
 /**
- * g_inet_address_get_is_mc_site_local:
- * @address: a #GInetAddress
- *
- * Tests whether @address is a site-local multicast address.
+ * g_file_info_set_file_type:
+ * @info: a #GFileInfo.
+ * @type: a #GFileType.
  *
- * Returns: %TRUE if @address is a site-local multicast address.
- * Since: 2.22
+ * Sets the file type in a #GFileInfo to @type.
+ * See %G_FILE_ATTRIBUTE_STANDARD_TYPE.
  */
 
 
 /**
- * g_inet_address_get_is_multicast:
- * @address: a #GInetAddress
- *
- * Tests whether @address is a multicast address.
+ * g_file_info_set_icon:
+ * @info: a #GFileInfo.
+ * @icon: a #GIcon.
  *
- * Returns: %TRUE if @address is a multicast address.
- * Since: 2.22
+ * Sets the icon for a given #GFileInfo.
+ * See %G_FILE_ATTRIBUTE_STANDARD_ICON.
  */
 
 
 /**
- * g_inet_address_get_is_site_local:
- * @address: a #GInetAddress
- *
- * Tests whether @address is a site-local address such as 10.0.0.1
- * (that is, the address identifies a host on a local network that can
- * not be reached directly from the Internet, but which may have
- * outgoing Internet connectivity via a NAT or firewall).
+ * g_file_info_set_is_hidden:
+ * @info: a #GFileInfo.
+ * @is_hidden: a #gboolean.
  *
- * Returns: %TRUE if @address is a site-local address.
- * Since: 2.22
+ * Sets the "is_hidden" attribute in a #GFileInfo according to @is_hidden.
+ * See %G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN.
  */
 
 
 /**
- * g_inet_address_get_native_size:
- * @address: a #GInetAddress
- *
- * Gets the size of the native raw binary address for @address. This
- * is the size of the data that you get from g_inet_address_to_bytes().
+ * g_file_info_set_is_symlink:
+ * @info: a #GFileInfo.
+ * @is_symlink: a #gboolean.
  *
- * Returns: the number of bytes used for the native version of @address.
- * Since: 2.22
+ * Sets the "is_symlink" attribute in a #GFileInfo according to @is_symlink.
+ * See %G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK.
  */
 
 
 /**
- * g_inet_address_mask_equal:
- * @mask: a #GInetAddressMask
- * @mask2: another #GInetAddressMask
- *
- * Tests if @mask and @mask2 are the same mask.
+ * g_file_info_set_modification_time:
+ * @info: a #GFileInfo.
+ * @mtime: a #GTimeVal.
  *
- * Returns: whether @mask and @mask2 are the same mask
- * Since: 2.32
+ * Sets the %G_FILE_ATTRIBUTE_TIME_MODIFIED attribute in the file
+ * info to the given time value.
  */
 
 
 /**
- * g_inet_address_mask_get_address:
- * @mask: a #GInetAddressMask
- *
- * Gets @mask's base address
+ * g_file_info_set_name:
+ * @info: a #GFileInfo.
+ * @name: (type filename): a string containing a name.
  *
- * Returns: (transfer none): @mask's base address
- * Since: 2.32
+ * Sets the name attribute for the current #GFileInfo.
+ * See %G_FILE_ATTRIBUTE_STANDARD_NAME.
  */
 
 
 /**
- * g_inet_address_mask_get_family:
- * @mask: a #GInetAddressMask
- *
- * Gets the #GSocketFamily of @mask's address
+ * g_file_info_set_size:
+ * @info: a #GFileInfo.
+ * @size: a #goffset containing the file's size.
  *
- * Returns: the #GSocketFamily of @mask's address
- * Since: 2.32
+ * Sets the %G_FILE_ATTRIBUTE_STANDARD_SIZE attribute in the file info
+ * to the given size.
  */
 
 
 /**
- * g_inet_address_mask_get_length:
- * @mask: a #GInetAddressMask
- *
- * Gets @mask's length
+ * g_file_info_set_sort_order:
+ * @info: a #GFileInfo.
+ * @sort_order: a sort order integer.
  *
- * Returns: @mask's length
- * Since: 2.32
+ * Sets the sort order attribute in the file info structure. See
+ * %G_FILE_ATTRIBUTE_STANDARD_SORT_ORDER.
  */
 
 
 /**
- * g_inet_address_mask_matches:
- * @mask: a #GInetAddressMask
- * @address: a #GInetAddress
+ * g_file_info_set_symbolic_icon:
+ * @info: a #GFileInfo.
+ * @icon: a #GIcon.
  *
- * Tests if @address falls within the range described by @mask.
+ * Sets the symbolic icon for a given #GFileInfo.
+ * See %G_FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON.
  *
- * Returns: whether @address falls within the range described by
- * @mask.
- * Since: 2.32
+ * Since: 2.34
  */
 
 
 /**
- * g_inet_address_mask_new:
- * @addr: a #GInetAddress
- * @length: number of bits of @addr to use
- * @error: return location for #GError, or %NULL
- *
- * Creates a new #GInetAddressMask representing all addresses whose
- * first @length bits match @addr.
+ * g_file_info_set_symlink_target:
+ * @info: a #GFileInfo.
+ * @symlink_target: a static string containing a path to a symlink target.
  *
- * Returns: a new #GInetAddressMask, or %NULL on error
- * Since: 2.32
+ * Sets the %G_FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET attribute in the file info
+ * to the given symlink target.
  */
 
 
 /**
- * g_inet_address_mask_new_from_string:
- * @mask_string: an IP address or address/length string
- * @error: return location for #GError, or %NULL
- *
- * Parses @mask_string as an IP address and (optional) length, and
- * creates a new #GInetAddressMask. The length, if present, is
- * delimited by a "/". If it is not present, then the length is
- * assumed to be the full length of the address.
+ * g_file_info_unset_attribute_mask:
+ * @info: #GFileInfo.
  *
- * Returns: a new #GInetAddressMask corresponding to @string, or %NULL
- * on error.
- * Since: 2.32
+ * Unsets a mask set by g_file_info_set_attribute_mask(), if one
+ * is set.
  */
 
 
 /**
- * g_inet_address_mask_to_string:
- * @mask: a #GInetAddressMask
+ * g_file_input_stream_query_info:
+ * @stream: a #GFileInputStream.
+ * @attributes: a file attribute query string.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Converts @mask back to its corresponding string form.
+ * Queries a file input stream the given @attributes. This function blocks
+ * while querying the stream. For the asynchronous (non-blocking) version
+ * of this function, see g_file_input_stream_query_info_async(). While the
+ * stream is blocked, the stream will set the pending flag internally, and
+ * any other operations on the stream will fail with %G_IO_ERROR_PENDING.
  *
- * Returns: a string corresponding to @mask.
- * Since: 2.32
+ * Returns: (transfer full): a #GFileInfo, or %NULL on error.
  */
 
 
 /**
- * g_inet_address_new_any:
- * @family: the address family
+ * g_file_input_stream_query_info_async:
+ * @stream: a #GFileInputStream.
+ * @attributes: a file attribute query string.
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Creates a #GInetAddress for the "any" address (unassigned/"don't
- * care") for @family.
+ * Queries the stream information asynchronously.
+ * When the operation is finished @callback will be called.
+ * You can then call g_file_input_stream_query_info_finish()
+ * to get the result of the operation.
  *
- * Returns: a new #GInetAddress corresponding to the "any" address
- * for @family.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * For the synchronous version of this function,
+ * see g_file_input_stream_query_info().
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be set
  */
 
 
 /**
- * g_inet_address_new_from_bytes:
- * @bytes: (array) (element-type guint8): raw address data
- * @family: the address family of @bytes
+ * g_file_input_stream_query_info_finish:
+ * @stream: a #GFileInputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring,
+ *     or %NULL to ignore.
  *
- * Creates a new #GInetAddress from the given @family and @bytes.
- * @bytes should be 4 bytes for %G_SOCKET_FAMILY_IPV4 and 16 bytes for
- * %G_SOCKET_FAMILY_IPV6.
+ * Finishes an asynchronous info query operation.
  *
- * Returns: a new #GInetAddress corresponding to @family and @bytes.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Returns: (transfer full): #GFileInfo.
  */
 
 
 /**
- * g_inet_address_new_from_string:
- * @string: a string representation of an IP address
+ * g_file_io_stream_get_etag:
+ * @stream: a #GFileIOStream.
  *
- * Parses @string as an IP address and creates a new #GInetAddress.
+ * Gets the entity tag for the file when it has been written.
+ * This must be called after the stream has been written
+ * and closed, as the etag can change while writing.
  *
- * Returns: a new #GInetAddress corresponding to @string, or %NULL if
- * @string could not be parsed.
- *     Free the returned object with g_object_unref().
+ * Returns: the entity tag for the stream.
  * Since: 2.22
  */
 
 
 /**
- * g_inet_address_new_loopback:
- * @family: the address family
+ * g_file_io_stream_query_info:
+ * @stream: a #GFileIOStream.
+ * @attributes: a file attribute query string.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
+ *
+ * Queries a file io stream for the given @attributes.
+ * This function blocks while querying the stream. For the asynchronous
+ * version of this function, see g_file_io_stream_query_info_async().
+ * While the stream is blocked, the stream will set the pending flag
+ * internally, and any other operations on the stream will fail with
+ * %G_IO_ERROR_PENDING.
+ *
+ * Can fail if the stream was already closed (with @error being set to
+ * %G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
+ * set to %G_IO_ERROR_PENDING), or if querying info is not supported for
+ * the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). I
+ * all cases of failure, %NULL will be returned.
  *
- * Creates a #GInetAddress for the loopback address for @family.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
+ * be returned.
  *
- * Returns: a new #GInetAddress corresponding to the loopback address
- * for @family.
- *     Free the returned object with g_object_unref().
+ * Returns: (transfer full): a #GFileInfo for the @stream, or %NULL on error.
  * Since: 2.22
  */
 
 
 /**
- * g_inet_address_to_bytes: (skip)
- * @address: a #GInetAddress
+ * g_file_io_stream_query_info_async:
+ * @stream: a #GFileIOStream.
+ * @attributes: a file attribute query string.
+ * @io_priority: the [I/O priority][gio-GIOScheduler] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Gets the raw binary address data from @address.
+ * Asynchronously queries the @stream for a #GFileInfo. When completed,
+ * @callback will be called with a #GAsyncResult which can be used to
+ * finish the operation with g_file_io_stream_query_info_finish().
+ *
+ * For the synchronous version of this function, see
+ * g_file_io_stream_query_info().
  *
- * Returns: a pointer to an internal array of the bytes in @address,
- * which should not be modified, stored, or freed. The size of this
- * array can be gotten with g_inet_address_get_native_size().
  * Since: 2.22
  */
 
 
 /**
- * g_inet_address_to_string:
- * @address: a #GInetAddress
+ * g_file_io_stream_query_info_finish:
+ * @stream: a #GFileIOStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, %NULL to ignore.
  *
- * Converts @address to string form.
+ * Finalizes the asynchronous query started
+ * by g_file_io_stream_query_info_async().
  *
- * Returns: a representation of @address as a string, which should be
- * freed after use.
+ * Returns: (transfer full): A #GFileInfo for the finished query.
  * Since: 2.22
  */
 
 
 /**
- * g_inet_socket_address_get_address:
- * @address: a #GInetSocketAddress
+ * g_file_is_native:
+ * @file: input #GFile
  *
- * Gets @address's #GInetAddress.
+ * Checks to see if a file is native to the platform.
  *
- * Returns: (transfer none): the #GInetAddress for @address, which must be
- * g_object_ref()'d if it will be stored
- * Since: 2.22
- */
-
-
-/**
- * g_inet_socket_address_get_flowinfo:
- * @address: a %G_SOCKET_FAMILY_IPV6 #GInetSocketAddress
+ * A native file is one expressed in the platform-native filename format,
+ * e.g. "C:\Windows" or "/usr/bin/". This does not mean the file is local,
+ * as it might be on a locally mounted remote filesystem.
  *
- * Gets the `sin6_flowinfo` field from @address,
- * which must be an IPv6 address.
+ * On some systems non-native files may be available using the native
+ * filesystem via a userspace filesystem (FUSE), in these cases this call
+ * will return %FALSE, but g_file_get_path() will still return a native path.
  *
- * Returns: the flowinfo field
- * Since: 2.32
+ * This call does no blocking I/O.
+ *
+ * Returns: %TRUE if @file is native
  */
 
 
 /**
- * g_inet_socket_address_get_port:
- * @address: a #GInetSocketAddress
+ * g_file_load_bytes:
+ * @file: a #GFile
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @etag_out: (out) (nullable) (optional): a location to place the current
+ *     entity tag for the file, or %NULL if the entity tag is not needed
+ * @error: a location for a #GError or %NULL
  *
- * Gets @address's port.
+ * Loads the contents of @file and returns it as #GBytes.
  *
- * Returns: the port for @address
- * Since: 2.22
- */
-
-
-/**
- * g_inet_socket_address_get_scope_id:
- * @address: a %G_SOCKET_FAMILY_IPV6 #GInetAddress
+ * If @file is a resource:// based URI, the resulting bytes will reference the
+ * embedded resource instead of a copy. Otherwise, this is equivalent to calling
+ * g_file_load_contents() and g_bytes_new_take().
  *
- * Gets the `sin6_scope_id` field from @address,
- * which must be an IPv6 address.
+ * For resources, @etag_out will be set to %NULL.
  *
- * Returns: the scope id field
- * Since: 2.32
+ * The data contained in the resulting #GBytes is always zero-terminated, but
+ * this is not included in the #GBytes length. The resulting #GBytes should be
+ * freed with g_bytes_unref() when no longer in use.
+ *
+ * Returns: (transfer full): a #GBytes or %NULL and @error is set
+ * Since: 2.56
  */
 
 
 /**
- * g_inet_socket_address_new:
- * @address: a #GInetAddress
- * @port: a port number
+ * g_file_load_bytes_async:
+ * @file: a #GFile
+ * @cancellable: (nullable): a #GCancellable or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ *     request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Creates a new #GInetSocketAddress for @address and @port.
+ * Asynchronously loads the contents of @file as #GBytes.
  *
- * Returns: a new #GInetSocketAddress
- * Since: 2.22
- */
-
-
-/**
- * g_inet_socket_address_new_from_string:
- * @address: the string form of an IP address
- * @port: a port number
+ * If @file is a resource:// based URI, the resulting bytes will reference the
+ * embedded resource instead of a copy. Otherwise, this is equivalent to calling
+ * g_file_load_contents_async() and g_bytes_new_take().
  *
- * Creates a new #GInetSocketAddress for @address and @port.
+ * @callback should call g_file_load_bytes_finish() to get the result of this
+ * asynchronous operation.
  *
- * If @address is an IPv6 address, it can also contain a scope ID
- * (separated from the address by a `%`).
+ * See g_file_load_bytes() for more information.
  *
- * Returns: a new #GInetSocketAddress, or %NULL if @address cannot be
- * parsed.
- * Since: 2.40
+ * Since: 2.56
  */
 
 
 /**
- * g_initable_init:
- * @initable: a #GInitable.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
- *
- * Initializes the object implementing the interface.
+ * g_file_load_bytes_finish:
+ * @file: a #GFile
+ * @result: a #GAsyncResult provided to the callback
+ * @etag_out: (out) (nullable) (optional): a location to place the current
+ *     entity tag for the file, or %NULL if the entity tag is not needed
+ * @error: a location for a #GError, or %NULL
  *
- * This method is intended for language bindings. If writing in C,
- * g_initable_new() should typically be used instead.
+ * Completes an asynchronous request to g_file_load_bytes_async().
  *
- * The object must be initialized before any real use after initial
- * construction, either with this function or g_async_initable_init_async().
+ * For resources, @etag_out will be set to %NULL.
  *
- * Implementations may also support cancellation. If @cancellable is not %NULL,
- * then initialization can be cancelled by triggering the cancellable object
- * from another thread. If the operation was cancelled, the error
- * %G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL and
- * the object doesn't support cancellable initialization the error
- * %G_IO_ERROR_NOT_SUPPORTED will be returned.
+ * The data contained in the resulting #GBytes is always zero-terminated, but
+ * this is not included in the #GBytes length. The resulting #GBytes should be
+ * freed with g_bytes_unref() when no longer in use.
  *
- * If the object is not initialized, or initialization returns with an
- * error, then all operations on the object except g_object_ref() and
- * g_object_unref() are considered to be invalid, and have undefined
- * behaviour. See the [introduction][ginitable] for more details.
+ * See g_file_load_bytes() for more information.
  *
- * Callers should not assume that a class which implements #GInitable can be
- * initialized multiple times, unless the class explicitly documents itself as
- * supporting this. Generally, a class’ implementation of init() can assume
- * (and assert) that it will only be called once. Previously, this documentation
- * recommended all #GInitable implementations should be idempotent; that
- * recommendation was relaxed in GLib 2.54.
+ * Returns: (transfer full): a #GBytes or %NULL and @error is set
+ * Since: 2.56
+ */
+
+
+/**
+ * g_file_load_contents:
+ * @file: input #GFile
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
+ * @length: (out) (optional): a location to place the length of the contents of the file,
+ *    or %NULL if the length is not needed
+ * @etag_out: (out) (optional): a location to place the current entity tag for the file,
+ *    or %NULL if the entity tag is not needed
+ * @error: a #GError, or %NULL
  *
- * If a class explicitly supports being initialized multiple times, it is
- * recommended that the method is idempotent: multiple calls with the same
- * arguments should return the same results. Only the first call initializes
- * the object; further calls return the result of the first call.
+ * Loads the content of the file into memory. The data is always
+ * zero-terminated, but this is not included in the resultant @length.
+ * The returned @content should be freed with g_free() when no longer
+ * needed.
  *
- * One reason why a class might need to support idempotent initialization is if
- * it is designed to be used via the singleton pattern, with a
- * #GObjectClass.constructor that sometimes returns an existing instance.
- * In this pattern, a caller would expect to be able to call g_initable_init()
- * on the result of g_object_new(), regardless of whether it is in fact a new
- * instance.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: %TRUE if successful. If an error has occurred, this function will
- *     return %FALSE and set @error appropriately if present.
- * Since: 2.22
+ * Returns: %TRUE if the @file's contents were successfully loaded.
+ *     %FALSE if there were errors.
  */
 
 
 /**
- * g_initable_new:
- * @object_type: a #GType supporting #GInitable.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- *    ignore.
- * @first_property_name: (nullable): the name of the first property, or %NULL if no
- *     properties
- * @...: the value if the first property, followed by and other property
- *    value pairs, and ended by %NULL.
+ * g_file_load_contents_async:
+ * @file: input #GFile
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to callback function
  *
- * Helper function for constructing #GInitable object. This is
- * similar to g_object_new() but also initializes the object
- * and returns %NULL, setting an error on failure.
+ * Starts an asynchronous load of the @file's contents.
  *
- * Returns: (type GObject.Object) (transfer full): a newly allocated
- *      #GObject, or %NULL on error
- * Since: 2.22
+ * For more details, see g_file_load_contents() which is
+ * the synchronous version of this call.
+ *
+ * When the load operation has completed, @callback will be called
+ * with @user data. To finish the operation, call
+ * g_file_load_contents_finish() with the #GAsyncResult returned by
+ * the @callback.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  */
 
 
 /**
- * g_initable_new_valist:
- * @object_type: a #GType supporting #GInitable.
- * @first_property_name: the name of the first property, followed by
- * the value, and other property value pairs, and ended by %NULL.
- * @var_args: The var args list generated from @first_property_name.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ * g_file_load_contents_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
+ * @length: (out) (optional): a location to place the length of the contents of the file,
+ *     or %NULL if the length is not needed
+ * @etag_out: (out) (optional): a location to place the current entity tag for the file,
+ *     or %NULL if the entity tag is not needed
+ * @error: a #GError, or %NULL
  *
- * Helper function for constructing #GInitable object. This is
- * similar to g_object_new_valist() but also initializes the object
- * and returns %NULL, setting an error on failure.
+ * Finishes an asynchronous load of the @file's contents.
+ * The contents are placed in @contents, and @length is set to the
+ * size of the @contents string. The @content should be freed with
+ * g_free() when no longer needed. If @etag_out is present, it will be
+ * set to the new entity tag for the @file.
  *
- * Returns: (type GObject.Object) (transfer full): a newly allocated
- *      #GObject, or %NULL on error
- * Since: 2.22
+ * Returns: %TRUE if the load was successful. If %FALSE and @error is
+ *     present, it will be set appropriately.
  */
 
 
 /**
- * g_initable_newv:
- * @object_type: a #GType supporting #GInitable.
- * @n_parameters: the number of parameters in @parameters
- * @parameters: (array length=n_parameters): the parameters to use to construct the object
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ * g_file_load_partial_contents_async: (skip)
+ * @file: input #GFile
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @read_more_callback: (scope call) (closure user_data): a
+ *     #GFileReadMoreCallback to receive partial data
+ *     and to specify whether further data should be read
+ * @callback: (scope async) (closure user_data): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: the data to pass to the callback functions
  *
- * Helper function for constructing #GInitable object. This is
- * similar to g_object_newv() but also initializes the object
- * and returns %NULL, setting an error on failure.
+ * Reads the partial contents of a file. A #GFileReadMoreCallback should
+ * be used to stop reading from the file when appropriate, else this
+ * function will behave exactly as g_file_load_contents_async(). This
+ * operation can be finished by g_file_load_partial_contents_finish().
  *
- * Returns: (type GObject.Object) (transfer full): a newly allocated
- *      #GObject, or %NULL on error
- * Since: 2.22
- * Deprecated: 2.54: Use g_object_new_with_properties() and
- * g_initable_init() instead. See #GParameter for more information.
+ * Users of this function should be aware that @user_data is passed to
+ * both the @read_more_callback and the @callback.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  */
 
 
 /**
- * g_input_stream_clear_pending:
- * @stream: input stream
+ * g_file_load_partial_contents_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
+ * @length: (out) (optional): a location to place the length of the contents of the file,
+ *     or %NULL if the length is not needed
+ * @etag_out: (out) (optional): a location to place the current entity tag for the file,
+ *     or %NULL if the entity tag is not needed
+ * @error: a #GError, or %NULL
  *
- * Clears the pending flag on @stream.
+ * Finishes an asynchronous partial load operation that was started
+ * with g_file_load_partial_contents_async(). The data is always
+ * zero-terminated, but this is not included in the resultant @length.
+ * The returned @content should be freed with g_free() when no longer
+ * needed.
+ *
+ * Returns: %TRUE if the load was successful. If %FALSE and @error is
+ *     present, it will be set appropriately.
  */
 
 
 /**
- * g_input_stream_close:
- * @stream: A #GInputStream.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Closes the stream, releasing resources related to it.
- *
- * Once the stream is closed, all other operations will return %G_IO_ERROR_CLOSED.
- * Closing a stream multiple times will not return an error.
- *
- * Streams will be automatically closed when the last reference
- * is dropped, but you might want to call this function to make sure
- * resources are released as early as possible.
+ * g_file_make_directory:
+ * @file: input #GFile
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Some streams might keep the backing store of the stream (e.g. a file descriptor)
- * open after the stream is closed. See the documentation for the individual
- * stream for details.
+ * Creates a directory. Note that this will only create a child directory
+ * of the immediate parent directory of the path or URI given by the #GFile.
+ * To recursively create directories, see g_file_make_directory_with_parents().
+ * This function will fail if the parent directory does not exist, setting
+ * @error to %G_IO_ERROR_NOT_FOUND. If the file system doesn't support
+ * creating directories, this function will fail, setting @error to
+ * %G_IO_ERROR_NOT_SUPPORTED.
  *
- * On failure the first error that happened will be reported, but the close
- * operation will finish as much as possible. A stream that failed to
- * close will still return %G_IO_ERROR_CLOSED for all operations. Still, it
- * is important to check and report the error to the user.
+ * For a local #GFile the newly created directory will have the default
+ * (current) ownership and permissions of the current process.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
- * Cancelling a close will still leave the stream closed, but some streams
- * can use a faster close that doesn't block to e.g. check errors.
  *
- * Returns: %TRUE on success, %FALSE on failure
+ * Returns: %TRUE on successful creation, %FALSE otherwise.
  */
 
 
 /**
- * g_input_stream_close_async:
- * @stream: A #GInputStream.
+ * g_file_make_directory_async: (virtual make_directory_async)
+ * @file: input #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional cancellable object
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Requests an asynchronous closes of the stream, releasing resources related to it.
- * When the operation is finished @callback will be called.
- * You can then call g_input_stream_close_finish() to get the result of the
- * operation.
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: the data to pass to callback function
  *
- * For behaviour details see g_input_stream_close().
+ * Asynchronously creates a directory.
  *
- * The asynchronous 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.
+ * Since: 2.38
  */
 
 
 /**
- * g_input_stream_close_finish:
- * @stream: a #GInputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_file_make_directory_finish: (virtual make_directory_finish)
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Finishes closing a stream asynchronously, started from g_input_stream_close_async().
+ * Finishes an asynchronous directory creation, started with
+ * g_file_make_directory_async().
  *
- * Returns: %TRUE if the stream was closed successfully.
+ * Returns: %TRUE on successful directory creation, %FALSE otherwise.
+ * Since: 2.38
  */
 
 
 /**
- * g_input_stream_has_pending:
- * @stream: input stream.
+ * g_file_make_directory_with_parents:
+ * @file: input #GFile
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Checks if an input stream has pending actions.
+ * Creates a directory and any parent directories that may not
+ * exist similar to 'mkdir -p'. If the file system does not support
+ * creating directories, this function will fail, setting @error to
+ * %G_IO_ERROR_NOT_SUPPORTED. If the directory itself already exists,
+ * this function will fail setting @error to %G_IO_ERROR_EXISTS, unlike
+ * the similar g_mkdir_with_parents().
  *
- * Returns: %TRUE if @stream has pending actions.
- */
-
-
-/**
- * g_input_stream_is_closed:
- * @stream: input stream.
+ * For a local #GFile the newly created directories will have the default
+ * (current) ownership and permissions of the current process.
  *
- * Checks if an input stream is closed.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: %TRUE if the stream is closed.
+ * Returns: %TRUE if all directories have been successfully created, %FALSE
+ * otherwise.
+ * Since: 2.18
  */
 
 
 /**
- * g_input_stream_read:
- * @stream: a #GInputStream.
- * @buffer: (array length=count) (element-type guint8): a buffer to
- *     read data into (which should be at least count bytes long).
- * @count: the number of bytes that will be read from the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Tries to read @count bytes from the stream into the buffer starting at
- * @buffer. Will block during this read.
- *
- * If count is zero returns zero and does nothing. A value of @count
- * larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
- *
- * On success, the number of bytes read into the buffer is returned.
- * It is not an error if this is not the same as the requested size, as it
- * can happen e.g. near the end of a file. Zero is returned on end of file
- * (or if @count is zero),  but never otherwise.
+ * g_file_make_symbolic_link:
+ * @file: a #GFile with the name of the symlink to create
+ * @symlink_value: (type filename): a string with the path for the target
+ *     of the new symlink
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError
  *
- * The returned @buffer is not a nul-terminated string, it can contain nul bytes
- * at any position, and this function doesn't nul-terminate the @buffer.
+ * Creates a symbolic link named @file which contains the string
+ * @symlink_value.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
- * operation was partially finished when the operation was cancelled the
- * partial result will be returned, without an error.
- *
- * On error -1 is returned and @error is set accordingly.
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: Number of bytes read, or -1 on error, or 0 on end of file.
+ * Returns: %TRUE on the creation of a new symlink, %FALSE otherwise.
  */
 
 
 /**
- * g_input_stream_read_all:
- * @stream: a #GInputStream.
- * @buffer: (array length=count) (element-type guint8): a buffer to
- *     read data into (which should be at least count bytes long).
- * @count: the number of bytes that will be read from the stream
- * @bytes_read: (out): location to store the number of bytes that was read from the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Tries to read @count bytes from the stream into the buffer starting at
- * @buffer. Will block during this read.
+ * g_file_measure_disk_usage:
+ * @file: a #GFile
+ * @flags: #GFileMeasureFlags
+ * @cancellable: (nullable): optional #GCancellable
+ * @progress_callback: (nullable): a #GFileMeasureProgressCallback
+ * @progress_data: user_data for @progress_callback
+ * @disk_usage: (out) (optional): the number of bytes of disk space used
+ * @num_dirs: (out) (optional): the number of directories encountered
+ * @num_files: (out) (optional): the number of non-directories encountered
+ * @error: (nullable): %NULL, or a pointer to a %NULL #GError pointer
  *
- * This function is similar to g_input_stream_read(), except it tries to
- * read as many bytes as requested, only stopping on an error or end of stream.
+ * Recursively measures the disk usage of @file.
  *
- * On a successful read of @count bytes, or if we reached the end of the
- * stream,  %TRUE is returned, and @bytes_read is set to the number of bytes
- * read into @buffer.
+ * This is essentially an analog of the 'du' command, but it also
+ * reports the number of directories and non-directory files encountered
+ * (including things like symbolic links).
  *
- * If there is an error during the operation %FALSE is returned and @error
- * is set to indicate the error status.
+ * By default, errors are only reported against the toplevel file
+ * itself.  Errors found while recursing are silently ignored, unless
+ * %G_FILE_DISK_USAGE_REPORT_ALL_ERRORS is given in @flags.
  *
- * As a special exception to the normal conventions for functions that
- * use #GError, if this function returns %FALSE (and sets @error) then
- * @bytes_read will be set to the number of bytes that were successfully
- * read before the error was encountered.  This functionality is only
- * available from C.  If you need it from another language then you must
- * write your own loop around g_input_stream_read().
+ * The returned size, @disk_usage, is in bytes and should be formatted
+ * with g_format_size() in order to get something reasonable for showing
+ * in a user interface.
  *
- * Returns: %TRUE on success, %FALSE if there was an error
+ * @progress_callback and @progress_data can be given to request
+ * periodic progress updates while scanning.  See the documentation for
+ * #GFileMeasureProgressCallback for information about when and how the
+ * callback will be invoked.
+ *
+ * Returns: %TRUE if successful, with the out parameters set.
+ *          %FALSE otherwise, with @error set.
+ * Since: 2.38
  */
 
 
 /**
- * g_input_stream_read_all_async:
- * @stream: A #GInputStream
- * @buffer: (array length=count) (element-type guint8): a buffer to
- *     read data into (which should be at least count bytes long)
- * @count: the number of bytes that will be read from the stream
+ * g_file_measure_disk_usage_async:
+ * @file: a #GFile
+ * @flags: #GFileMeasureFlags
  * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Request an asynchronous read of @count bytes from the stream into the
- * buffer starting at @buffer.
- *
- * This is the asynchronous equivalent of g_input_stream_read_all().
+ * @cancellable: (nullable): optional #GCancellable
+ * @progress_callback: (nullable): a #GFileMeasureProgressCallback
+ * @progress_data: user_data for @progress_callback
+ * @callback: (nullable): a #GAsyncReadyCallback to call when complete
+ * @user_data: the data to pass to callback function
  *
- * Call g_input_stream_read_all_finish() to collect the result.
+ * Recursively measures the disk usage of @file.
  *
- * Any outstanding I/O request with higher priority (lower numerical
- * value) will be executed before an outstanding request with lower
- * priority. Default priority is %G_PRIORITY_DEFAULT.
+ * This is the asynchronous version of g_file_measure_disk_usage().  See
+ * there for more information.
  *
- * Since: 2.44
+ * Since: 2.38
  */
 
 
 /**
- * g_input_stream_read_all_finish:
- * @stream: a #GInputStream
- * @result: a #GAsyncResult
- * @bytes_read: (out): location to store the number of bytes that was read from the stream
- * @error: a #GError location to store the error occurring, or %NULL to ignore
- *
- * Finishes an asynchronous stream read operation started with
- * g_input_stream_read_all_async().
+ * g_file_measure_disk_usage_finish:
+ * @file: a #GFile
+ * @result: the #GAsyncResult passed to your #GAsyncReadyCallback
+ * @disk_usage: (out) (optional): the number of bytes of disk space used
+ * @num_dirs: (out) (optional): the number of directories encountered
+ * @num_files: (out) (optional): the number of non-directories encountered
+ * @error: (nullable): %NULL, or a pointer to a %NULL #GError pointer
  *
- * As a special exception to the normal conventions for functions that
- * use #GError, if this function returns %FALSE (and sets @error) then
- * @bytes_read will be set to the number of bytes that were successfully
- * read before the error was encountered.  This functionality is only
- * available from C.  If you need it from another language then you must
- * write your own loop around g_input_stream_read_async().
+ * Collects the results from an earlier call to
+ * g_file_measure_disk_usage_async().  See g_file_measure_disk_usage() for
+ * more information.
  *
- * Returns: %TRUE on success, %FALSE if there was an error
- * Since: 2.44
+ * Returns: %TRUE if successful, with the out parameters set.
+ *          %FALSE otherwise, with @error set.
+ * Since: 2.38
  */
 
 
 /**
- * g_input_stream_read_async:
- * @stream: A #GInputStream.
- * @buffer: (array length=count) (element-type guint8): a buffer to
- *     read data into (which should be at least count bytes long).
- * @count: the number of bytes that will be read from the stream
- * @io_priority: the [I/O priority][io-priority]
- * of the request.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Request an asynchronous read of @count bytes from the stream into the buffer
- * starting at @buffer. When the operation is finished @callback will be called.
- * You can then call g_input_stream_read_finish() to get the result of the
- * operation.
- *
- * During an async request no other sync and async calls are allowed on @stream, and will
- * result in %G_IO_ERROR_PENDING errors.
- *
- * A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+ * g_file_monitor:
+ * @file: input #GFile
+ * @flags: a set of #GFileMonitorFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * On success, the number of bytes read into the buffer will be passed to the
- * callback. It is not an error if this is not the same as the requested size, as it
- * can happen e.g. near the end of a file, but generally we try to read
- * as many bytes as requested. Zero is returned on end of file
- * (or if @count is zero),  but never otherwise.
+ * Obtains a file or directory monitor for the given file,
+ * depending on the type of the file.
  *
- * Any outstanding i/o request with higher priority (lower numerical value) will
- * be executed before an outstanding request with lower priority. Default
- * priority is %G_PRIORITY_DEFAULT.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * The asynchronous 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.
+ * Returns: (transfer full): a #GFileMonitor for the given @file,
+ *     or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.18
  */
 
 
 /**
- * g_input_stream_read_bytes:
- * @stream: a #GInputStream.
- * @count: maximum number of bytes that will be read from the stream. Common
- * values include 4096 and 8192.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
+ * g_file_monitor_cancel:
+ * @monitor: a #GFileMonitor.
  *
- * Like g_input_stream_read(), this tries to read @count bytes from
- * the stream in a blocking fashion. However, rather than reading into
- * a user-supplied buffer, this will create a new #GBytes containing
- * the data that was read. This may be easier to use from language
- * bindings.
+ * Cancels a file monitor.
  *
- * If count is zero, returns a zero-length #GBytes and does nothing. A
- * value of @count larger than %G_MAXSSIZE will cause a
- * %G_IO_ERROR_INVALID_ARGUMENT error.
+ * Returns: always %TRUE
+ */
+
+
+/**
+ * g_file_monitor_directory: (virtual monitor_dir)
+ * @file: input #GFile
+ * @flags: a set of #GFileMonitorFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * On success, a new #GBytes is returned. It is not an error if the
- * size of this object is not the same as the requested size, as it
- * can happen e.g. near the end of a file. A zero-length #GBytes is
- * returned on end of file (or if @count is zero), but never
- * otherwise.
+ * Obtains a directory monitor for the given file.
+ * This may fail if directory monitoring is not supported.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
- * operation was partially finished when the operation was cancelled the
- * partial result will be returned, without an error.
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * On error %NULL is returned and @error is set accordingly.
+ * It does not make sense for @flags to contain
+ * %G_FILE_MONITOR_WATCH_HARD_LINKS, since hard links can not be made to
+ * directories.  It is not possible to monitor all the files in a
+ * directory for changes made via hard links; if you want to do this then
+ * you must register individual watches with g_file_monitor().
  *
- * Returns: (transfer full): a new #GBytes, or %NULL on error
- * Since: 2.34
+ * Returns: (transfer full): a #GFileMonitor for the given @file,
+ *     or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_input_stream_read_bytes_async:
- * @stream: A #GInputStream.
- * @count: the number of bytes that will be read from the stream
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Request an asynchronous read of @count bytes from the stream into a
- * new #GBytes. When the operation is finished @callback will be
- * called. You can then call g_input_stream_read_bytes_finish() to get the
- * result of the operation.
- *
- * During an async request no other sync and async calls are allowed
- * on @stream, and will result in %G_IO_ERROR_PENDING errors.
- *
- * A value of @count larger than %G_MAXSSIZE will cause a
- * %G_IO_ERROR_INVALID_ARGUMENT error.
- *
- * On success, the new #GBytes will be passed to the callback. It is
- * not an error if this is smaller than the requested size, as it can
- * happen e.g. near the end of a file, but generally we try to read as
- * many bytes as requested. Zero is returned on end of file (or if
- * @count is zero), but never otherwise.
+ * g_file_monitor_emit_event:
+ * @monitor: a #GFileMonitor.
+ * @child: a #GFile.
+ * @other_file: a #GFile.
+ * @event_type: a set of #GFileMonitorEvent flags.
  *
- * Any outstanding I/O request with higher priority (lower numerical
- * value) will be executed before an outstanding request with lower
- * priority. Default priority is %G_PRIORITY_DEFAULT.
+ * Emits the #GFileMonitor::changed signal if a change
+ * has taken place. Should be called from file monitor
+ * implementations only.
  *
- * Since: 2.34
+ * Implementations are responsible to call this method from the
+ * [thread-default main context][g-main-context-push-thread-default] of the
+ * thread that the monitor was created in.
  */
 
 
 /**
- * g_input_stream_read_bytes_finish:
- * @stream: a #GInputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- *   ignore.
+ * g_file_monitor_file:
+ * @file: input #GFile
+ * @flags: a set of #GFileMonitorFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Finishes an asynchronous stream read-into-#GBytes operation.
+ * Obtains a file monitor for the given file. If no file notification
+ * mechanism exists, then regular polling of the file is used.
  *
- * Returns: (transfer full): the newly-allocated #GBytes, or %NULL on error
- * Since: 2.34
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * If @flags contains %G_FILE_MONITOR_WATCH_HARD_LINKS then the monitor
+ * will also attempt to report changes made to the file via another
+ * filename (ie, a hard link). Without this flag, you can only rely on
+ * changes made through the filename contained in @file to be
+ * reported. Using this flag may result in an increase in resource
+ * usage, and may not have any effect depending on the #GFileMonitor
+ * backend and/or filesystem type.
+ *
+ * Returns: (transfer full): a #GFileMonitor for the given @file,
+ *     or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_input_stream_read_finish:
- * @stream: a #GInputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_file_monitor_is_cancelled:
+ * @monitor: a #GFileMonitor
  *
- * Finishes an asynchronous stream read operation.
+ * Returns whether the monitor is canceled.
  *
- * Returns: number of bytes read in, or -1 on error, or 0 on end of file.
+ * Returns: %TRUE if monitor is canceled. %FALSE otherwise.
  */
 
 
 /**
- * g_input_stream_set_pending:
- * @stream: input stream
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
- *
- * Sets @stream to have actions pending. If the pending flag is
- * already set or @stream is closed, it will return %FALSE and set
- * @error.
+ * g_file_monitor_set_rate_limit:
+ * @monitor: a #GFileMonitor.
+ * @limit_msecs: a non-negative integer with the limit in milliseconds
+ *     to poll for changes
  *
- * Returns: %TRUE if pending was previously unset and is now set.
+ * Sets the rate limit to which the @monitor will report
+ * consecutive change events to the same file.
  */
 
 
 /**
- * g_input_stream_skip:
- * @stream: a #GInputStream.
- * @count: the number of bytes that will be skipped from the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Tries to skip @count bytes from the stream. Will block during the operation.
+ * g_file_mount_enclosing_volume:
+ * @location: input #GFile
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation
+ *     or %NULL to avoid user interaction
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (nullable): a #GAsyncReadyCallback to call
+ *     when the request is satisfied, or %NULL
+ * @user_data: the data to pass to callback function
  *
- * This is identical to g_input_stream_read(), from a behaviour standpoint,
- * but the bytes that are skipped are not returned to the user. Some
- * streams have an implementation that is more efficient than reading the data.
+ * Starts a @mount_operation, mounting the volume that contains
+ * the file @location.
  *
- * This function is optional for inherited classes, as the default implementation
- * emulates it using read.
+ * When this operation has completed, @callback will be called with
+ * @user_user data, and the operation can be finalized with
+ * g_file_mount_enclosing_volume_finish().
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
- * operation was partially finished when the operation was cancelled the
- * partial result will be returned, without an error.
- *
- * Returns: Number of bytes skipped, or -1 on error
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  */
 
 
 /**
- * g_input_stream_skip_async:
- * @stream: A #GInputStream.
- * @count: the number of bytes that will be skipped from the stream
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Request an asynchronous skip of @count bytes from the stream.
- * When the operation is finished @callback will be called.
- * You can then call g_input_stream_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 %G_IO_ERROR_PENDING errors.
- *
- * A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
- *
- * On success, the number of bytes skipped will be passed to the callback.
- * It is not an error if this is not the same as the requested size, as it
- * can happen e.g. near the end of a file, but generally we try to skip
- * as many bytes as requested. Zero is returned on end of file
- * (or if @count is zero), but never otherwise.
+ * g_file_mount_enclosing_volume_finish:
+ * @location: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Any outstanding i/o request with higher priority (lower numerical value)
- * will be executed before an outstanding request with lower priority.
- * Default priority is %G_PRIORITY_DEFAULT.
+ * Finishes a mount operation started by g_file_mount_enclosing_volume().
  *
- * The asynchronous 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.
+ * Returns: %TRUE if successful. If an error has occurred,
+ *     this function will return %FALSE and set @error
+ *     appropriately if present.
  */
 
 
 /**
- * g_input_stream_skip_finish:
- * @stream: a #GInputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_file_mount_mountable:
+ * @file: input #GFile
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation,
+ *     or %NULL to avoid user interaction
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
+ *     when the request is satisfied, or %NULL
+ * @user_data: (closure): the data to pass to callback function
  *
- * Finishes a stream skip operation.
+ * Mounts a file of type G_FILE_TYPE_MOUNTABLE.
+ * Using @mount_operation, you can request callbacks when, for instance,
+ * passwords are needed during authentication.
  *
- * Returns: the size of the bytes skipped, or %-1 on error.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_mount_mountable_finish() to get
+ * the result of the operation.
  */
 
 
 /**
- * g_io_error_from_errno:
- * @err_no: Error number as defined in errno.h.
+ * g_file_mount_mountable_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Converts errno.h error codes into GIO error codes. The fallback
- * value %G_IO_ERROR_FAILED is returned for error codes not currently
- * handled (but note that future GLib releases may return a more
- * specific value instead).
+ * Finishes a mount operation. See g_file_mount_mountable() for details.
  *
- * As %errno is global and may be modified by intermediate function
- * calls, you should save its value as soon as the call which sets it
+ * Finish an asynchronous mount operation that was started
+ * with g_file_mount_mountable().
  *
- * Returns: #GIOErrorEnum value for the given errno.h error number.
+ * Returns: (transfer full): a #GFile or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_error_from_win32_error:
- * @error_code: Windows error number.
+ * g_file_move:
+ * @source: #GFile pointing to the source location
+ * @destination: #GFile pointing to the destination location
+ * @flags: set of #GFileCopyFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @progress_callback: (nullable) (scope call): #GFileProgressCallback
+ *     function for updates
+ * @progress_callback_data: (closure): gpointer to user data for
+ *     the callback function
+ * @error: #GError for returning error conditions, or %NULL
  *
- * Converts some common error codes (as returned from GetLastError()
- * or WSAGetLastError()) into GIO error codes. The fallback value
- * %G_IO_ERROR_FAILED is returned for error codes not currently
- * handled (but note that future GLib releases may return a more
- * specific value instead).
+ * 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 + 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.
  *
- * You can use g_win32_error_message() to get a localized string
- * corresponding to @error_code. (But note that unlike g_strerror(),
- * g_win32_error_message() returns a string that must be freed.)
+ * If the flag #G_FILE_COPY_OVERWRITE is specified an already
+ * existing @destination file is overwritten.
  *
- * Returns: #GIOErrorEnum value for the given error number.
- * Since: 2.26
- */
-
-
-/**
- * g_io_error_quark:
+ * If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
+ * will be copied as symlinks, otherwise the target of the
+ * @source symlink will be copied.
  *
- * Gets the GIO Error Quark.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: a #GQuark.
+ * If @progress_callback is not %NULL, then the operation can be monitored
+ * by setting this to a #GFileProgressCallback function.
+ * @progress_callback_data will be passed to this function. It is
+ * guaranteed that this callback will be called after all data has been
+ * transferred with the total number of bytes copied during the operation.
+ *
+ * If the @source file does not exist, then the %G_IO_ERROR_NOT_FOUND
+ * error is returned, independent on the status of the @destination.
+ *
+ * If #G_FILE_COPY_OVERWRITE is not specified and the target exists,
+ * then the error %G_IO_ERROR_EXISTS is returned.
+ *
+ * If trying to overwrite a file over a directory, the %G_IO_ERROR_IS_DIRECTORY
+ * error is returned. If trying to overwrite a directory with a directory the
+ * %G_IO_ERROR_WOULD_MERGE error is returned.
+ *
+ * If the source is a directory and the target does not exist, or
+ * #G_FILE_COPY_OVERWRITE is specified and the target is a file, then
+ * the %G_IO_ERROR_WOULD_RECURSE error may be returned (if the native
+ * move operation isn't available).
+ *
+ * Returns: %TRUE on successful move, %FALSE otherwise.
  */
 
 
 /**
- * g_io_extension_get_name:
- * @extension: a #GIOExtension
+ * g_file_new_build_filename:
+ * @first_element: (type filename): the first element in the path
+ * @...: remaining elements in path, terminated by %NULL
  *
- * Gets the name under which @extension was registered.
+ * Constructs a #GFile from a series of elements using the correct
+ * separator for filenames.
  *
- * Note that the same type may be registered as extension
- * for multiple extension points, under different names.
+ * Using this function is equivalent to calling g_build_filename(),
+ * followed by g_file_new_for_path() on the result.
  *
- * Returns: the name of @extension.
+ * Returns: (transfer full): a new #GFile
+ * Since: 2.56
  */
 
 
 /**
- * g_io_extension_get_priority:
- * @extension: a #GIOExtension
+ * g_file_new_for_commandline_arg:
+ * @arg: (type filename): a command line string
  *
- * Gets the priority with which @extension was registered.
+ * Creates a #GFile with the given argument from the command line.
+ * The value of @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.
  *
- * Returns: the priority of @extension
+ * Note that on Windows, this function expects its argument to be in
+ * UTF-8 -- not the system code page.  This means that you
+ * should not use this function with string from argv as it is passed
+ * to main().  g_win32_get_command_line() will return a UTF-8 version of
+ * the commandline.  #GApplication also uses UTF-8 but
+ * g_application_command_line_create_file_for_arg() may be more useful
+ * for you there.  It is also always possible to use this function with
+ * #GOptionContext arguments of type %G_OPTION_ARG_FILENAME.
+ *
+ * Returns: (transfer full): a new #GFile.
+ *    Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_extension_get_type:
- * @extension: a #GIOExtension
+ * g_file_new_for_commandline_arg_and_cwd:
+ * @arg: (type filename): a command line string
+ * @cwd: (type filename): the current working directory of the commandline
  *
- * Gets the type associated with @extension.
+ * Creates a #GFile with the given argument from the command line.
  *
- * Returns: the type of @extension
+ * This function is similar to g_file_new_for_commandline_arg() except
+ * that it allows for passing the current working directory as an
+ * argument instead of using the current working directory of the
+ * process.
+ *
+ * This is useful if the commandline argument was given in a context
+ * other than the invocation of the current process.
+ *
+ * See also g_application_command_line_create_file_for_arg().
+ *
+ * Returns: (transfer full): a new #GFile
+ * Since: 2.36
  */
 
 
 /**
- * g_io_extension_point_get_extension_by_name:
- * @extension_point: a #GIOExtensionPoint
- * @name: the name of the extension to get
+ * g_file_new_for_path:
+ * @path: (type filename): a string containing a relative or absolute path.
+ *     The string must be encoded in the glib filename encoding.
  *
- * Finds a #GIOExtension for an extension point by name.
+ * Constructs a #GFile for a given path. This operation never
+ * fails, but the returned object might not support any I/O
+ * operation if @path is malformed.
  *
- * Returns: (transfer none): the #GIOExtension for @extension_point that has the
- *    given name, or %NULL if there is no extension with that name
+ * Returns: (transfer full): a new #GFile for the given @path.
+ *   Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_extension_point_get_extensions:
- * @extension_point: a #GIOExtensionPoint
+ * g_file_new_for_uri:
+ * @uri: a UTF-8 string containing a URI
  *
- * Gets a list of all extensions that implement this extension point.
- * The list is sorted by priority, beginning with the highest priority.
+ * Constructs a #GFile for a given URI. This operation never
+ * fails, but the returned object might not support any I/O
+ * operation if @uri is malformed or if the uri type is
+ * not supported.
  *
- * Returns: (element-type GIOExtension) (transfer none): a #GList of
- *     #GIOExtensions. The list is owned by GIO and should not be
- *     modified.
+ * Returns: (transfer full): a new #GFile for the given @uri.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_extension_point_get_required_type:
- * @extension_point: a #GIOExtensionPoint
+ * g_file_new_tmp:
+ * @tmpl: (type filename) (nullable): Template for the file
+ *   name, as in g_file_open_tmp(), or %NULL for a default template
+ * @iostream: (out): on return, a #GFileIOStream for the created file
+ * @error: a #GError, or %NULL
  *
- * Gets the required type for @extension_point.
+ * Opens a file in the preferred directory for temporary files (as
+ * returned by g_get_tmp_dir()) and returns a #GFile and
+ * #GFileIOStream pointing to it.
  *
- * Returns: the #GType that all implementations must have,
- *     or #G_TYPE_INVALID if the extension point has no required type
+ * @tmpl should be a string in the GLib file name encoding
+ * containing a sequence of six 'X' characters, and containing no
+ * directory components. If it is %NULL, a default template is used.
+ *
+ * Unlike the other #GFile constructors, this will return %NULL if
+ * a temporary file could not be created.
+ *
+ * Returns: (transfer full): a new #GFile.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.32
  */
 
 
 /**
- * g_io_extension_point_implement:
- * @extension_point_name: the name of the extension point
- * @type: the #GType to register as extension
- * @extension_name: the name for the extension
- * @priority: the priority for the extension
+ * g_file_open_readwrite:
+ * @file: #GFile to open
+ * @cancellable: (nullable): a #GCancellable
+ * @error: a #GError, or %NULL
  *
- * Registers @type as extension for the extension point with name
- * @extension_point_name.
+ * Opens an existing file for reading and writing. The result is
+ * a #GFileIOStream that can be used to read and write the contents
+ * of the file.
  *
- * If @type has already been registered as an extension for this
- * extension point, the existing #GIOExtension object is returned.
+ * If @cancellable is not %NULL, then the operation can be cancelled
+ * by triggering the cancellable object from another thread. If the
+ * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
+ * returned.
  *
- * Returns: (transfer none): a #GIOExtension object for #GType
+ * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will
+ * be returned. If the file is a directory, the %G_IO_ERROR_IS_DIRECTORY
+ * error will be returned. Other errors are possible too, and depend on
+ * what kind of filesystem the file is on. 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.
+ *
+ * Returns: (transfer full): #GFileIOStream or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_io_extension_point_lookup:
- * @name: the name of the extension point
+ * g_file_open_readwrite_async:
+ * @file: input #GFile
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Looks up an existing extension point.
+ * Asynchronously opens @file for reading and writing.
  *
- * Returns: (transfer none): the #GIOExtensionPoint, or %NULL if there
- *    is no registered extension point with the given name.
+ * For more details, see g_file_open_readwrite() which is
+ * the synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_open_readwrite_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_io_extension_point_register:
- * @name: The name of the extension point
+ * g_file_open_readwrite_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Registers an extension point.
+ * Finishes an asynchronous file read operation started with
+ * g_file_open_readwrite_async().
  *
- * Returns: (transfer none): the new #GIOExtensionPoint. This object is
- *    owned by GIO and should not be freed.
+ * Returns: (transfer full): a #GFileIOStream or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_io_extension_point_set_required_type:
- * @extension_point: a #GIOExtensionPoint
- * @type: the #GType to require
+ * g_file_output_stream_get_etag:
+ * @stream: a #GFileOutputStream.
  *
- * Sets the required type for @extension_point to @type.
- * All implementations must henceforth have this type.
+ * Gets the entity tag for the file when it has been written.
+ * This must be called after the stream has been written
+ * and closed, as the etag can change while writing.
+ *
+ * Returns: the entity tag for the stream.
  */
 
 
 /**
- * g_io_extension_ref_class:
- * @extension: a #GIOExtension
+ * g_file_output_stream_query_info:
+ * @stream: a #GFileOutputStream.
+ * @attributes: a file attribute query string.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError, %NULL to ignore.
  *
- * Gets a reference to the class for the type that is
- * associated with @extension.
+ * Queries a file output stream for the given @attributes.
+ * This function blocks while querying the stream. For the asynchronous
+ * version of this function, see g_file_output_stream_query_info_async().
+ * While the stream is blocked, the stream will set the pending flag
+ * internally, and any other operations on the stream will fail with
+ * %G_IO_ERROR_PENDING.
  *
- * Returns: (transfer full): the #GTypeClass for the type of @extension
+ * Can fail if the stream was already closed (with @error being set to
+ * %G_IO_ERROR_CLOSED), the stream has pending operations (with @error being
+ * set to %G_IO_ERROR_PENDING), or if querying info is not supported for
+ * the stream's interface (with @error being set to %G_IO_ERROR_NOT_SUPPORTED). In
+ * all cases of failure, %NULL will be returned.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be set, and %NULL will
+ * be returned.
+ *
+ * Returns: (transfer full): a #GFileInfo for the @stream, or %NULL on error.
  */
 
 
 /**
- * g_io_module_new:
- * @filename: (type filename): filename of the shared library module.
+ * g_file_output_stream_query_info_async:
+ * @stream: a #GFileOutputStream.
+ * @attributes: a file attribute query string.
+ * @io_priority: the [I/O priority][gio-GIOScheduler] of the request
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @callback: callback to call when the request is satisfied
+ * @user_data: the data to pass to callback function
  *
- * Creates a new GIOModule that will load the specific
- * shared library when in use.
+ * Asynchronously queries the @stream for a #GFileInfo. When completed,
+ * @callback will be called with a #GAsyncResult which can be used to
+ * finish the operation with g_file_output_stream_query_info_finish().
  *
- * Returns: a #GIOModule from given @filename,
- * or %NULL on error.
+ * For the synchronous version of this function, see
+ * g_file_output_stream_query_info().
  */
 
 
 /**
- * g_io_module_scope_block:
- * @scope: a module loading scope
- * @basename: the basename to block
+ * g_file_output_stream_query_info_finish:
+ * @stream: a #GFileOutputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, %NULL to ignore.
  *
- * Block modules with the given @basename from being loaded when
- * this scope is used with g_io_modules_scan_all_in_directory_with_scope()
- * or g_io_modules_load_all_in_directory_with_scope().
+ * Finalizes the asynchronous query started
+ * by g_file_output_stream_query_info_async().
  *
- * Since: 2.30
+ * Returns: (transfer full): A #GFileInfo for the finished query.
  */
 
 
 /**
- * g_io_module_scope_free:
- * @scope: a module loading scope
+ * g_file_parse_name:
+ * @parse_name: a file name or path to be parsed
  *
- * Free a module scope.
+ * Constructs a #GFile with the given @parse_name (i.e. something
+ * given by g_file_get_parse_name()). This operation never fails,
+ * but the returned object might not support any I/O operation if
+ * the @parse_name cannot be parsed.
  *
- * Since: 2.30
+ * Returns: (transfer full): a new #GFile.
  */
 
 
 /**
- * g_io_module_scope_new:
- * @flags: flags for the new scope
+ * g_file_peek_path:
+ * @file: input #GFile
  *
- * Create a new scope for loading of IO modules. A scope can be used for
- * blocking duplicate modules, or blocking a module you don't want to load.
+ * Exactly like g_file_get_path(), but caches the result via
+ * g_object_set_qdata_full().  This is useful for example in C
+ * applications which mix `g_file_*` APIs with native ones.  It
+ * also avoids an extra duplicated string when possible, so will be
+ * generally more efficient.
  *
- * Specify the %G_IO_MODULE_SCOPE_BLOCK_DUPLICATES flag to block modules
- * which have the same base name as a module that has already been seen
- * in this scope.
+ * This call does no blocking I/O.
  *
- * Returns: (transfer full): the new module scope
- * Since: 2.30
+ * Returns: (type filename) (nullable): string containing the #GFile's path,
+ *     or %NULL if no such path exists. The returned string is owned by @file.
+ * Since: 2.56
  */
 
 
 /**
- * g_io_modules_load_all_in_directory:
- * @dirname: (type filename): pathname for a directory containing modules
- *     to load.
+ * g_file_poll_mountable:
+ * @file: input #GFile
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @callback: (nullable): a #GAsyncReadyCallback to call
+ *     when the request is satisfied, or %NULL
+ * @user_data: the data to pass to callback function
  *
- * Loads all the modules in the specified directory.
+ * Polls a file of type #G_FILE_TYPE_MOUNTABLE.
  *
- * If don't require all modules to be initialized (and thus registering
- * all gtypes) then you can use g_io_modules_scan_all_in_directory()
- * which allows delayed/lazy loading of modules.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: (element-type GIOModule) (transfer full): a list of #GIOModules loaded
- *      from the directory,
- *      All the modules are loaded into memory, if you want to
- *      unload them (enabling on-demand loading) you must call
- *      g_type_module_unuse() on all the modules. Free the list
- *      with g_list_free().
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_mount_mountable_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_io_modules_load_all_in_directory_with_scope:
- * @dirname: (type filename): pathname for a directory containing modules
- *     to load.
- * @scope: a scope to use when scanning the modules.
+ * g_file_poll_mountable_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Loads all the modules in the specified directory.
+ * Finishes a poll operation. See g_file_poll_mountable() for details.
  *
- * If don't require all modules to be initialized (and thus registering
- * all gtypes) then you can use g_io_modules_scan_all_in_directory()
- * which allows delayed/lazy loading of modules.
+ * Finish an asynchronous poll operation that was polled
+ * with g_file_poll_mountable().
  *
- * Returns: (element-type GIOModule) (transfer full): a list of #GIOModules loaded
- *      from the directory,
- *      All the modules are loaded into memory, if you want to
- *      unload them (enabling on-demand loading) you must call
- *      g_type_module_unuse() on all the modules. Free the list
- *      with g_list_free().
- * Since: 2.30
+ * Returns: %TRUE if the operation finished successfully. %FALSE
+ * otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_io_modules_scan_all_in_directory:
- * @dirname: (type filename): pathname for a directory containing modules
- *     to scan.
- *
- * Scans all the modules in the specified directory, ensuring that
- * any extension point implemented by a module is registered.
+ * g_file_query_default_handler:
+ * @file: a #GFile to open
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * This may not actually load and initialize all the types in each
- * module, some modules may be lazily loaded and initialized when
- * an extension point it implementes is used with e.g.
- * g_io_extension_point_get_extensions() or
- * g_io_extension_point_get_extension_by_name().
+ * Returns the #GAppInfo that is registered as the default
+ * application to handle the file specified by @file.
  *
- * If you need to guarantee that all types are loaded in all the modules,
- * use g_io_modules_load_all_in_directory().
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Since: 2.24
+ * Returns: (transfer full): a #GAppInfo if the handle was found,
+ *     %NULL if there were errors.
+ *     When you are done with it, release it with g_object_unref()
  */
 
 
 /**
- * g_io_modules_scan_all_in_directory_with_scope:
- * @dirname: (type filename): pathname for a directory containing modules
- *     to scan.
- * @scope: a scope to use when scanning the modules
+ * g_file_query_exists:
+ * @file: input #GFile
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
  *
- * Scans all the modules in the specified directory, ensuring that
- * any extension point implemented by a module is registered.
+ * Utility function to check if a particular file exists. This is
+ * implemented using g_file_query_info() and as such does blocking I/O.
  *
- * This may not actually load and initialize all the types in each
- * module, some modules may be lazily loaded and initialized when
- * an extension point it implementes is used with e.g.
- * g_io_extension_point_get_extensions() or
- * g_io_extension_point_get_extension_by_name().
+ * Note that in many cases it is [racy to first check for file existence](https://en.wikipedia.org/wiki/Time_of_check_to_time_of_use)
+ * and then execute something based on the outcome of that, because the
+ * file might have been created or removed in between the operations. The
+ * general approach to handling that is to not check, but just do the
+ * operation and handle the errors as they come.
  *
- * If you need to guarantee that all types are loaded in all the modules,
- * use g_io_modules_load_all_in_directory().
+ * As an example of race-free checking, take the case of reading a file,
+ * and if it doesn't exist, creating it. There are two racy versions: read
+ * it, and on error create it; and: check if it exists, if not create it.
+ * These can both result in two processes creating the file (with perhaps
+ * a partially written file as the result). The correct approach is to
+ * always try to create the file with g_file_create() which will either
+ * atomically create the file or fail with a %G_IO_ERROR_EXISTS error.
  *
- * Since: 2.30
+ * However, in many cases an existence check is useful in a user interface,
+ * for instance to make a menu item sensitive/insensitive, so that you don't
+ * have to fool users that something is possible and then just show an error
+ * dialog. If you do this, you should make sure to also handle the errors
+ * that can happen due to races when you execute the operation.
+ *
+ * Returns: %TRUE if the file exists (and can be detected without error),
+ *     %FALSE otherwise (or if cancelled).
  */
 
 
 /**
- * g_io_scheduler_cancel_all_jobs:
+ * g_file_query_file_type:
+ * @file: input #GFile
+ * @flags: a set of #GFileQueryInfoFlags passed to g_file_query_info()
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
  *
- * Cancels all cancellable I/O jobs.
+ * Utility function to inspect the #GFileType of a file. This is
+ * implemented using g_file_query_info() and as such does blocking I/O.
  *
- * A job is cancellable if a #GCancellable was passed into
- * g_io_scheduler_push_job().
+ * The primary use case of this method is to check if a file is
+ * a regular file, directory, or symlink.
  *
- * Deprecated: You should never call this function, since you don't
- * know how other libraries in your program might be making use of
- * gioscheduler.
+ * Returns: The #GFileType of the file and #G_FILE_TYPE_UNKNOWN
+ *     if the file does not exist
+ * Since: 2.18
  */
 
 
 /**
- * g_io_scheduler_job_send_to_mainloop:
- * @job: a #GIOSchedulerJob
- * @func: a #GSourceFunc callback that will be called in the original thread
- * @user_data: data to pass to @func
- * @notify: (nullable): a #GDestroyNotify for @user_data, or %NULL
+ * g_file_query_filesystem_info:
+ * @file: input #GFile
+ * @attributes: an attribute query string
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError
  *
- * 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).
+ * Similar to g_file_query_info(), but obtains information
+ * about the filesystem the @file is on, rather than the file itself.
+ * For instance the amount of space available and the type of
+ * the filesystem.
  *
- * Returns: The return value of @func
- * Deprecated: Use g_main_context_invoke().
- */
-
-
-/**
- * g_io_scheduler_job_send_to_mainloop_async:
- * @job: a #GIOSchedulerJob
- * @func: a #GSourceFunc callback that will be called in the original thread
- * @user_data: data to pass to @func
- * @notify: (nullable): a #GDestroyNotify for @user_data, or %NULL
+ * The @attributes value is a string that specifies the attributes
+ * that should be gathered. It is not an error if it's not possible
+ * to read a particular requested attribute from a file - it just
+ * won't be set. @attributes should be a comma-separated list of
+ * attributes or attribute wildcards. The wildcard "*" means all
+ * attributes, and a wildcard like "filesystem::*" means all attributes
+ * in the filesystem namespace. The standard namespace for filesystem
+ * attributes is "filesystem". Common attributes of interest are
+ * #G_FILE_ATTRIBUTE_FILESYSTEM_SIZE (the total size of the filesystem
+ * in bytes), #G_FILE_ATTRIBUTE_FILESYSTEM_FREE (number of bytes available),
+ * and #G_FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
  *
- * Used from an I/O job to send a callback to be run asynchronously in
- * the thread that the job was started from. The callback will be run
- * when the main loop is available, but at that time the I/O job might
- * have finished. The return value from the callback is ignored.
+ * If @cancellable is not %NULL, then the operation can be cancelled
+ * by triggering the cancellable object from another thread. If the
+ * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
+ * returned.
  *
- * Note that if you are passing the @user_data from g_io_scheduler_push_job()
- * 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.
+ * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will
+ * be returned. Other errors are possible too, and depend on what
+ * kind of filesystem the file is on.
  *
- * Deprecated: Use g_main_context_invoke().
+ * Returns: (transfer full): a #GFileInfo or %NULL if there was an error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_scheduler_push_job:
- * @job_func: a #GIOSchedulerJobFunc.
- * @user_data: data to pass to @job_func
- * @notify: (nullable): a #GDestroyNotify for @user_data, or %NULL
- * @io_priority: the [I/O priority][io-priority]
- * of the request.
- * @cancellable: optional #GCancellable object, %NULL to ignore.
- *
- * Schedules the I/O job to run in another thread.
+ * g_file_query_filesystem_info_async:
+ * @file: input #GFile
+ * @attributes: an attribute query string
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * @notify will be called on @user_data after @job_func has returned,
- * regardless whether the job was cancelled or has run to completion.
+ * Asynchronously gets the requested information about the filesystem
+ * that the specified @file is on. The result is a #GFileInfo object
+ * that contains key-value attributes (such as type or size for the
+ * file).
  *
- * 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().
+ * For more details, see g_file_query_filesystem_info() which is the
+ * synchronous version of this call.
  *
- * Deprecated: use #GThreadPool or g_task_run_in_thread()
+ * When the operation is finished, @callback will be called. You can
+ * then call g_file_query_info_finish() to get the result of the
+ * operation.
  */
 
 
 /**
- * g_io_stream_clear_pending:
- * @stream: a #GIOStream
+ * g_file_query_filesystem_info_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError
  *
- * Clears the pending flag on @stream.
+ * Finishes an asynchronous filesystem info query.
+ * See g_file_query_filesystem_info_async().
  *
- * Since: 2.22
+ * Returns: (transfer full): #GFileInfo for given @file
+ *     or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_stream_close:
- * @stream: a #GIOStream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Closes the stream, releasing resources related to it. This will also
- * close the individual input and output streams, if they are not already
- * closed.
- *
- * Once the stream is closed, all other operations will return
- * %G_IO_ERROR_CLOSED. Closing a stream multiple times will not
- * return an error.
- *
- * Closing a stream will automatically flush any outstanding buffers
- * in the stream.
+ * g_file_query_info:
+ * @file: input #GFile
+ * @attributes: an attribute query string
+ * @flags: a set of #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError
  *
- * Streams will be automatically closed when the last reference
- * is dropped, but you might want to call this function to make sure
- * resources are released as early as possible.
+ * Gets the requested information about specified @file.
+ * The result is a #GFileInfo object that contains key-value
+ * attributes (such as the type or size of the file).
  *
- * Some streams might keep the backing store of the stream (e.g. a file
- * descriptor) open after the stream is closed. See the documentation for
- * the individual stream for details.
+ * The @attributes value is a string that specifies the file
+ * attributes that should be gathered. It is not an error if
+ * it's not possible to read a particular requested attribute
+ * from a file - it just won't be set. @attributes should be a
+ * comma-separated list of attributes or attribute wildcards.
+ * The wildcard "*" 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.
  *
- * On failure the first error that happened will be reported, but the
- * close operation will finish as much as possible. A stream that failed
- * to close will still return %G_IO_ERROR_CLOSED for all operations.
- * Still, it is important to check and report the error to the user,
- * otherwise there might be a loss of data as all data might not be written.
+ * If @cancellable is not %NULL, then the operation can be cancelled
+ * by triggering the cancellable object from another thread. If the
+ * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
+ * returned.
  *
- * If @cancellable is not NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
- * Cancelling a close will still leave the stream closed, but some streams
- * can use a faster close that doesn't block to e.g. check errors.
+ * For symlinks, normally the information about the target of the
+ * symlink is returned, rather than information about the symlink
+ * itself. However if you pass #G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS
+ * in @flags the information about the symlink itself will be returned.
+ * Also, for symlinks that point to non-existing files the information
+ * about the symlink itself will be returned.
  *
- * The default implementation of this method just calls close on the
- * individual input/output streams.
+ * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will be
+ * returned. Other errors are possible too, and depend on what kind of
+ * filesystem the file is on.
  *
- * Returns: %TRUE on success, %FALSE on failure
- * Since: 2.22
+ * Returns: (transfer full): a #GFileInfo for the given @file, or %NULL
+ *     on error. Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_stream_close_async:
- * @stream: a #GIOStream
- * @io_priority: the io priority of the request
- * @cancellable: (nullable): optional cancellable object
- * @callback: (scope async): callback to call when the request is satisfied
+ * g_file_query_info_async:
+ * @file: input #GFile
+ * @attributes: an attribute query string
+ * @flags: a set of #GFileQueryInfoFlags
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ *     request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
- * Requests an asynchronous close of the stream, releasing resources
- * related to it. When the operation is finished @callback will be
- * called. You can then call g_io_stream_close_finish() to get
- * the result of the operation.
- *
- * For behaviour details see g_io_stream_close().
+ * Asynchronously gets the requested information about specified @file.
+ * The result is a #GFileInfo object that contains key-value attributes
+ * (such as type or size for the file).
  *
- * The asynchronous 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 more details, see g_file_query_info() which is the synchronous
+ * version of this call.
  *
- * Since: 2.22
+ * When the operation is finished, @callback will be called. You can
+ * then call g_file_query_info_finish() to get the result of the operation.
  */
 
 
 /**
- * g_io_stream_close_finish:
- * @stream: a #GIOStream
- * @result: a #GAsyncResult
- * @error: a #GError location to store the error occurring, or %NULL to
- *    ignore
+ * g_file_query_info_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError
  *
- * Closes a stream.
+ * Finishes an asynchronous file info query.
+ * See g_file_query_info_async().
  *
- * Returns: %TRUE if stream was successfully closed, %FALSE otherwise.
- * Since: 2.22
+ * Returns: (transfer full): #GFileInfo for given @file
+ *     or %NULL on error. Free the returned object with
+ *     g_object_unref().
  */
 
 
 /**
- * g_io_stream_get_input_stream:
- * @stream: a #GIOStream
+ * g_file_query_settable_attributes:
+ * @file: input #GFile
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Gets the input stream for this object. This is used
- * for reading.
+ * Obtain the list of settable attributes for the file.
  *
- * Returns: (transfer none): a #GInputStream, owned by the #GIOStream.
- * Do not free.
- * Since: 2.22
+ * Returns the type and full attribute name of all the attributes
+ * that can be set on this file. This doesn't mean setting it will
+ * always succeed though, you might get an access failure, or some
+ * specific file may not support a specific attribute.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: a #GFileAttributeInfoList describing the settable attributes.
+ *     When you are done with it, release it with
+ *     g_file_attribute_info_list_unref()
  */
 
 
 /**
- * g_io_stream_get_output_stream:
- * @stream: a #GIOStream
+ * g_file_query_writable_namespaces:
+ * @file: input #GFile
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Gets the output stream for this object. This is used for
- * writing.
+ * Obtain the list of attribute namespaces where new attributes
+ * can be created by a user. An example of this is extended
+ * attributes (in the "xattr" namespace).
  *
- * Returns: (transfer none): a #GOutputStream, owned by the #GIOStream.
- * Do not free.
- * Since: 2.22
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: a #GFileAttributeInfoList describing the writable namespaces.
+ *     When you are done with it, release it with
+ *     g_file_attribute_info_list_unref()
  */
 
 
 /**
- * g_io_stream_has_pending:
- * @stream: a #GIOStream
+ * g_file_read: (virtual read_fn)
+ * @file: #GFile to read
+ * @cancellable: (nullable): a #GCancellable
+ * @error: a #GError, or %NULL
  *
- * Checks if a stream has pending actions.
+ * Opens a file for reading. The result is a #GFileInputStream that
+ * can be used to read the contents of the file.
  *
- * Returns: %TRUE if @stream has pending actions.
- * Since: 2.22
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * If the file does not exist, the %G_IO_ERROR_NOT_FOUND error will be
+ * returned. If the file is a directory, the %G_IO_ERROR_IS_DIRECTORY
+ * error will be returned. Other errors are possible too, and depend
+ * on what kind of filesystem the file is on.
+ *
+ * Returns: (transfer full): #GFileInputStream or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_stream_is_closed:
- * @stream: a #GIOStream
+ * g_file_read_async:
+ * @file: input #GFile
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Checks if a stream is closed.
+ * Asynchronously opens @file for reading.
  *
- * Returns: %TRUE if the stream is closed.
- * Since: 2.22
+ * For more details, see g_file_read() which is
+ * the synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_read_finish() to get the result
+ * of the operation.
  */
 
 
 /**
- * g_io_stream_set_pending:
- * @stream: a #GIOStream
- * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore
+ * g_file_read_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Sets @stream to have actions pending. If the pending flag is
- * already set or @stream is closed, it will return %FALSE and set
- * @error.
+ * Finishes an asynchronous file read operation started with
+ * g_file_read_async().
  *
- * Returns: %TRUE if pending was previously unset and is now set.
- * Since: 2.22
+ * Returns: (transfer full): a #GFileInputStream or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_stream_splice_async:
- * @stream1: a #GIOStream.
- * @stream2: a #GIOStream.
- * @flags: a set of #GIOStreamSpliceFlags.
- * @io_priority: the io priority of the request.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @user_data: (closure): user data passed to @callback.
+ * g_file_replace:
+ * @file: input #GFile
+ * @etag: (nullable): an optional [entity tag][gfile-etag]
+ *     for the current #GFile, or #NULL to ignore
+ * @make_backup: %TRUE if a backup should be created
+ * @flags: a set of #GFileCreateFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Asyncronously splice the output stream of @stream1 to the input stream of
- * @stream2, and splice the output stream of @stream2 to the input stream of
- * @stream1.
+ * Returns an output stream for overwriting the file, possibly
+ * creating a backup copy of the file first. If the file doesn't exist,
+ * it will be created.
  *
- * When the operation is finished @callback will be called.
- * You can then call g_io_stream_splice_finish() to get the
- * result of the operation.
+ * 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.
  *
- * Since: 2.28
+ * By default files created are generally readable by everyone,
+ * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+ * will be made readable only to the current user, to the level that
+ * is supported on the target filesystem.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled
+ * by triggering the cancellable object from another thread. If the
+ * operation was cancelled, the error %G_IO_ERROR_CANCELLED will be
+ * returned.
+ *
+ * If you pass in a non-%NULL @etag value and @file already exists, then
+ * this value is compared to the current entity tag of the file, and if
+ * they differ an %G_IO_ERROR_WRONG_ETAG error is returned. This
+ * generally means that the file has been changed since you last read
+ * it. You can get the new etag from g_file_output_stream_get_etag()
+ * after you've finished writing and closed the #GFileOutputStream. When
+ * you load a new file you can use g_file_input_stream_query_info() to
+ * get the etag of the file.
+ *
+ * If @make_backup is %TRUE, this function will attempt to make a
+ * backup of the current file before overwriting it. If this fails
+ * a %G_IO_ERROR_CANT_CREATE_BACKUP error will be returned. If you
+ * want to replace anyway, try again with @make_backup set to %FALSE.
+ *
+ * If the file is a directory the %G_IO_ERROR_IS_DIRECTORY error will
+ * be returned, and if the file is some other form of non-regular file
+ * then a %G_IO_ERROR_NOT_REGULAR_FILE error will be returned. Some
+ * file systems don't allow all file names, and may return an
+ * %G_IO_ERROR_INVALID_FILENAME error, and if the name is to long
+ * %G_IO_ERROR_FILENAME_TOO_LONG will be returned. Other errors are
+ * possible too, and depend on what kind of filesystem the file is on.
+ *
+ * Returns: (transfer full): a #GFileOutputStream or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_io_stream_splice_finish:
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_file_replace_async:
+ * @file: input #GFile
+ * @etag: (nullable): an [entity tag][gfile-etag] for the current #GFile,
+ *     or %NULL to ignore
+ * @make_backup: %TRUE if a backup should be created
+ * @flags: a set of #GFileCreateFlags
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Finishes an asynchronous io stream splice operation.
+ * Asynchronously overwrites the file, replacing the contents,
+ * possibly creating a backup copy of the file first.
  *
- * Returns: %TRUE on success, %FALSE otherwise.
- * Since: 2.28
+ * For more details, see g_file_replace() which is
+ * the synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_replace_finish() to get the result
+ * of the operation.
  */
 
 
 /**
- * g_keyfile_settings_backend_new:
- * @filename: the filename of the keyfile
- * @root_path: the path under which all settings keys appear
- * @root_group: (nullable): the group name corresponding to
- *              @root_path, or %NULL
+ * g_file_replace_contents:
+ * @file: input #GFile
+ * @contents: (element-type guint8) (array length=length): a string containing the new contents for @file
+ * @length: the length of @contents in bytes
+ * @etag: (nullable): the old [entity-tag][gfile-etag] for the document,
+ *     or %NULL
+ * @make_backup: %TRUE if a backup should be created
+ * @flags: a set of #GFileCreateFlags
+ * @new_etag: (out) (optional): a location to a new [entity tag][gfile-etag]
+ *      for the document. This should be freed with g_free() when no longer
+ *      needed, or %NULL
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Creates a keyfile-backed #GSettingsBackend.
+ * Replaces the contents of @file with @contents of @length bytes.
  *
- * The filename of the keyfile to use is given by @filename.
+ * If @etag is specified (not %NULL), any existing file must have that etag,
+ * or the error %G_IO_ERROR_WRONG_ETAG will be returned.
  *
- * All settings read to or written from the backend must fall under the
- * path given in @root_path (which must start and end with a slash and
- * not contain two consecutive slashes).  @root_path may be "/".
+ * If @make_backup is %TRUE, this function will attempt to make a backup
+ * of @file. Internally, it uses g_file_replace(), so will try to replace the
+ * file contents in the safest way possible. For example, atomic renames are
+ * used when replacing local files’ contents.
  *
- * If @root_group is non-%NULL then it specifies the name of the keyfile
- * group used for keys that are written directly below @root_path.  For
- * example, if @root_path is "/apps/example/" and @root_group is
- * "toplevel", then settings the key "/apps/example/enabled" to a value
- * of %TRUE will cause the following to appear in the keyfile:
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * |[
- *   [toplevel]
- *   enabled=true
- * ]|
+ * The returned @new_etag can be used to verify that the file hasn't
+ * changed the next time it is saved over.
  *
- * If @root_group is %NULL then it is not permitted to store keys
- * directly below the @root_path.
+ * Returns: %TRUE if successful. If an error has occurred, this function
+ *     will return %FALSE and set @error appropriately if present.
+ */
+
+
+/**
+ * g_file_replace_contents_async:
+ * @file: input #GFile
+ * @contents: (element-type guint8) (array length=length): string of contents to replace the file with
+ * @length: the length of @contents in bytes
+ * @etag: (nullable): a new [entity tag][gfile-etag] for the @file, or %NULL
+ * @make_backup: %TRUE if a backup should be created
+ * @flags: a set of #GFileCreateFlags
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to callback function
  *
- * For keys not stored directly below @root_path (ie: in a sub-path),
- * the name of the subpath (with the final slash stripped) is used as
- * the name of the keyfile group.  To continue the example, if
- * "/apps/example/profiles/default/font-size" were set to
- * 12 then the following would appear in the keyfile:
+ * Starts an asynchronous replacement of @file with the given
+ * @contents of @length bytes. @etag will replace the document's
+ * current entity tag.
  *
- * |[
- *   [profiles/default]
- *   font-size=12
- * ]|
+ * When this operation has completed, @callback will be called with
+ * @user_user data, and the operation can be finalized with
+ * g_file_replace_contents_finish().
  *
- * The backend will refuse writes (and return writability as being
- * %FALSE) for keys outside of @root_path and, in the event that
- * @root_group is %NULL, also for keys directly under @root_path.
- * Writes will also be refused if the backend detects that it has the
- * inability to rewrite the keyfile (ie: the containing directory is not
- * writable).
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * There is no checking done for your key namespace clashing with the
- * syntax of the key file format.  For example, if you have '[' or ']'
- * characters in your path names or '=' in your key names you may be in
- * trouble.
+ * If @make_backup is %TRUE, this function will attempt to
+ * make a backup of @file.
  *
- * Returns: (transfer full): a keyfile-backed #GSettingsBackend
+ * Note that no copy of @content will be made, so it must stay valid
+ * until @callback is called. See g_file_replace_contents_bytes_async()
+ * for a #GBytes version that will automatically hold a reference to the
+ * contents (without copying) for the duration of the call.
  */
 
 
 /**
- * g_list_model_get_item: (skip)
- * @list: a #GListModel
- * @position: the position of the item to fetch
+ * g_file_replace_contents_bytes_async:
+ * @file: input #GFile
+ * @contents: a #GBytes
+ * @etag: (nullable): a new [entity tag][gfile-etag] for the @file, or %NULL
+ * @make_backup: %TRUE if a backup should be created
+ * @flags: a set of #GFileCreateFlags
+ * @cancellable: optional #GCancellable object, %NULL to ignore
+ * @callback: a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: the data to pass to callback function
  *
- * Get the item at @position. If @position is greater than the number of
- * items in @list, %NULL is returned.
+ * Same as g_file_replace_contents_async() but takes a #GBytes input instead.
+ * This function will keep a ref on @contents until the operation is done.
+ * Unlike g_file_replace_contents_async() this allows forgetting about the
+ * content without waiting for the callback.
  *
- * %NULL is never returned for an index that is smaller than the length
- * of the list.  See g_list_model_get_n_items().
+ * When this operation has completed, @callback will be called with
+ * @user_user data, and the operation can be finalized with
+ * g_file_replace_contents_finish().
  *
- * Returns: (transfer full) (nullable): the item at @position.
- * Since: 2.44
+ * Since: 2.40
  */
 
 
 /**
- * g_list_model_get_item_type:
- * @list: a #GListModel
+ * g_file_replace_contents_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @new_etag: (out) (optional): a location of a new [entity tag][gfile-etag]
+ *     for the document. This should be freed with g_free() when it is no
+ *     longer needed, or %NULL
+ * @error: a #GError, or %NULL
  *
- * Gets the type of the items in @list. All items returned from
- * g_list_model_get_type() are of that type or a subtype, or are an
- * implementation of that interface.
+ * Finishes an asynchronous replace of the given @file. See
+ * g_file_replace_contents_async(). Sets @new_etag to the new entity
+ * tag for the document, if present.
  *
- * The item type of a #GListModel can not change during the life of the
- * model.
+ * Returns: %TRUE on success, %FALSE on failure.
+ */
+
+
+/**
+ * g_file_replace_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Returns: the #GType of the items contained in @list.
- * Since: 2.44
+ * Finishes an asynchronous file replace operation started with
+ * g_file_replace_async().
+ *
+ * Returns: (transfer full): a #GFileOutputStream, or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_list_model_get_n_items:
- * @list: a #GListModel
+ * g_file_replace_readwrite:
+ * @file: a #GFile
+ * @etag: (nullable): an optional [entity tag][gfile-etag]
+ *     for the current #GFile, or #NULL to ignore
+ * @make_backup: %TRUE if a backup should be created
+ * @flags: a set of #GFileCreateFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: return location for a #GError, or %NULL
  *
- * Gets the number of items in @list.
+ * 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.
  *
- * Depending on the model implementation, calling this function may be
- * less efficient than iterating the list with increasing values for
- * @position until g_list_model_get_item() returns %NULL.
+ * For details about the behaviour, see g_file_replace() which does the
+ * same thing but returns an output stream only.
  *
- * Returns: the number of items in @list.
- * Since: 2.44
+ * 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.
+ *
+ * Returns: (transfer full): a #GFileIOStream or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_list_model_get_object: (rename-to g_list_model_get_item)
- * @list: a #GListModel
- * @position: the position of the item to fetch
+ * g_file_replace_readwrite_async:
+ * @file: input #GFile
+ * @etag: (nullable): an [entity tag][gfile-etag] for the current #GFile,
+ *     or %NULL to ignore
+ * @make_backup: %TRUE if a backup should be created
+ * @flags: a set of #GFileCreateFlags
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Get the item at @position. If @position is greater than the number of
- * items in @list, %NULL is returned.
+ * Asynchronously overwrites the file in read-write mode,
+ * replacing the contents, possibly creating a backup copy
+ * of the file first.
  *
- * %NULL is never returned for an index that is smaller than the length
- * of the list.  See g_list_model_get_n_items().
+ * For more details, see g_file_replace_readwrite() which is
+ * the synchronous version of this call.
  *
- * Returns: (transfer full) (nullable): the object at @position.
- * Since: 2.44
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_replace_readwrite_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_list_model_items_changed:
- * @list: a #GListModel
- * @position: the position at which @list changed
- * @removed: the number of items removed
- * @added: the number of items added
- *
- * Emits the #GListModel::items-changed signal on @list.
+ * g_file_replace_readwrite_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * This function should only be called by classes implementing
- * #GListModel. It has to be called after the internal representation
- * of @list has been updated, because handlers connected to this signal
- * might query the new state of the list.
+ * Finishes an asynchronous file replace operation started with
+ * g_file_replace_readwrite_async().
  *
- * Implementations must only make changes to the model (as visible to
- * its consumer) in places that will not cause problems for that
- * consumer.  For models that are driven directly by a write API (such
- * as #GListStore), changes can be reported in response to uses of that
- * API.  For models that represent remote data, changes should only be
- * made from a fresh mainloop dispatch.  It is particularly not
- * permitted to make changes in response to a call to the #GListModel
- * consumer API.
+ * Returns: (transfer full): a #GFileIOStream, or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
+ */
+
+
+/**
+ * g_file_resolve_relative_path:
+ * @file: input #GFile
+ * @relative_path: (type filename): a given relative path string
  *
- * Stated another way: in general, it is assumed that code making a
- * series of accesses to the model via the API, without returning to the
- * mainloop, and without calling other code, will continue to view the
- * same contents of the model.
+ * Resolves a relative path for @file to an absolute path.
  *
- * Since: 2.44
+ * This call does no blocking I/O.
+ *
+ * Returns: (transfer full): #GFile to the resolved path.
+ *     %NULL if @relative_path is %NULL or if @file is invalid.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_list_store_append:
- * @store: a #GListStore
- * @item: (type GObject): the new item
+ * g_file_set_attribute:
+ * @file: input #GFile
+ * @attribute: a string containing the attribute's name
+ * @type: The type of the attribute
+ * @value_p: (nullable): a pointer to the value (or the pointer
+ *     itself if the type is a pointer type)
+ * @flags: a set of #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Appends @item to @store. @item must be of type #GListStore:item-type.
+ * Sets an attribute in the file with attribute name @attribute to @value.
  *
- * This function takes a ref on @item.
+ * Some attributes can be unset by setting @type to
+ * %G_FILE_ATTRIBUTE_TYPE_INVALID and @value_p to %NULL.
  *
- * Use g_list_store_splice() to append multiple items at the same time
- * efficiently.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Since: 2.44
+ * Returns: %TRUE if the attribute was set, %FALSE otherwise.
  */
 
 
 /**
- * g_list_store_insert:
- * @store: a #GListStore
- * @position: the position at which to insert the new item
- * @item: (type GObject): the new item
- *
- * Inserts @item into @store at @position. @item must be of type
- * #GListStore:item-type or derived from it. @position must be smaller
- * than the length of the list, or equal to it to append.
+ * g_file_set_attribute_byte_string:
+ * @file: input #GFile
+ * @attribute: a string containing the attribute's name
+ * @value: a string containing the attribute's new value
+ * @flags: a #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * This function takes a ref on @item.
+ * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING to @value.
+ * If @attribute is of a different type, this operation will fail,
+ * returning %FALSE.
  *
- * Use g_list_store_splice() to insert multiple items at the same time
- * efficiently.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Since: 2.44
+ * Returns: %TRUE if the @attribute was successfully set to @value
+ *     in the @file, %FALSE otherwise.
  */
 
 
 /**
- * g_list_store_insert_sorted:
- * @store: a #GListStore
- * @item: (type GObject): the new item
- * @compare_func: (scope call): pairwise comparison function for sorting
- * @user_data: (closure): user data for @compare_func
- *
- * Inserts @item into @store at a position to be determined by the
- * @compare_func.
+ * g_file_set_attribute_int32:
+ * @file: input #GFile
+ * @attribute: a string containing the attribute's name
+ * @value: a #gint32 containing the attribute's new value
+ * @flags: a #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * The list must already be sorted before calling this function or the
- * result is undefined.  Usually you would approach this by only ever
- * inserting items by way of this function.
+ * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT32 to @value.
+ * If @attribute is of a different type, this operation will fail.
  *
- * This function takes a ref on @item.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: the position at which @item was inserted
- * Since: 2.44
+ * Returns: %TRUE if the @attribute was successfully set to @value
+ *     in the @file, %FALSE otherwise.
  */
 
 
 /**
- * g_list_store_new:
- * @item_type: the #GType of items in the list
+ * g_file_set_attribute_int64:
+ * @file: input #GFile
+ * @attribute: a string containing the attribute's name
+ * @value: a #guint64 containing the attribute's new value
+ * @flags: a #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Creates a new #GListStore with items of type @item_type. @item_type
- * must be a subclass of #GObject.
+ * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT64 to @value.
+ * If @attribute is of a different type, this operation will fail.
  *
- * Returns: a new #GListStore
- * Since: 2.44
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: %TRUE if the @attribute was successfully set, %FALSE otherwise.
  */
 
 
 /**
- * g_list_store_remove:
- * @store: a #GListStore
- * @position: the position of the item that is to be removed
+ * g_file_set_attribute_string:
+ * @file: input #GFile
+ * @attribute: a string containing the attribute's name
+ * @value: a string containing the attribute's value
+ * @flags: #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Removes the item from @store that is at @position. @position must be
- * smaller than the current length of the list.
+ * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_STRING to @value.
+ * If @attribute is of a different type, this operation will fail.
  *
- * Use g_list_store_splice() to remove multiple items at the same time
- * efficiently.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Since: 2.44
+ * Returns: %TRUE if the @attribute was successfully set, %FALSE otherwise.
  */
 
 
 /**
- * g_list_store_remove_all:
- * @store: a #GListStore
+ * g_file_set_attribute_uint32:
+ * @file: input #GFile
+ * @attribute: a string containing the attribute's name
+ * @value: a #guint32 containing the attribute's new value
+ * @flags: a #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Removes all items from @store.
+ * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT32 to @value.
+ * If @attribute is of a different type, this operation will fail.
  *
- * Since: 2.44
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: %TRUE if the @attribute was successfully set to @value
+ *     in the @file, %FALSE otherwise.
  */
 
 
 /**
- * g_list_store_sort:
- * @store: a #GListStore
- * @compare_func: (scope call): pairwise comparison function for sorting
- * @user_data: (closure): user data for @compare_func
+ * g_file_set_attribute_uint64:
+ * @file: input #GFile
+ * @attribute: a string containing the attribute's name
+ * @value: a #guint64 containing the attribute's new value
+ * @flags: a #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Sort the items in @store according to @compare_func.
+ * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT64 to @value.
+ * If @attribute is of a different type, this operation will fail.
  *
- * Since: 2.46
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: %TRUE if the @attribute was successfully set to @value
+ *     in the @file, %FALSE otherwise.
  */
 
 
 /**
- * g_list_store_splice:
- * @store: a #GListStore
- * @position: the position at which to make the change
- * @n_removals: the number of items to remove
- * @additions: (array length=n_additions) (element-type GObject): the items to add
- * @n_additions: the number of items to add
- *
- * Changes @store by removing @n_removals items and adding @n_additions
- * items to it. @additions must contain @n_additions items of type
- * #GListStore:item-type.  %NULL is not permitted.
- *
- * This function is more efficient than g_list_store_insert() and
- * g_list_store_remove(), because it only emits
- * #GListModel::items-changed once for the change.
+ * g_file_set_attributes_async:
+ * @file: input #GFile
+ * @info: a #GFileInfo
+ * @flags: a #GFileQueryInfoFlags
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): a #gpointer
  *
- * This function takes a ref on each item in @additions.
+ * Asynchronously sets the attributes of @file with @info.
  *
- * The parameters @position and @n_removals must be correct (ie:
- * @position + @n_removals must be less than or equal to the length of
- * the list at the time this function is called).
+ * For more details, see g_file_set_attributes_from_info(),
+ * which is the synchronous version of this call.
  *
- * Since: 2.44
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_set_attributes_finish() to get
+ * the result of the operation.
  */
 
 
 /**
- * g_loadable_icon_load:
- * @icon: a #GLoadableIcon.
- * @size: an integer.
- * @type: (out) (optional): a location to store the type of the loaded
- * icon, %NULL to ignore.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to
- * ignore.
- * @error: a #GError location to store the error occurring, or %NULL
- * to ignore.
+ * g_file_set_attributes_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @info: (out) (transfer full): a #GFileInfo
+ * @error: a #GError, or %NULL
  *
- * Loads a loadable icon. For the asynchronous version of this function,
- * see g_loadable_icon_load_async().
+ * Finishes setting an attribute started in g_file_set_attributes_async().
  *
- * Returns: (transfer full): a #GInputStream to read the icon from.
+ * Returns: %TRUE if the attributes were set correctly, %FALSE otherwise.
  */
 
 
 /**
- * g_loadable_icon_load_async:
- * @icon: a #GLoadableIcon.
- * @size: an integer.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *            request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_file_set_attributes_from_info:
+ * @file: input #GFile
+ * @info: a #GFileInfo
+ * @flags: #GFileQueryInfoFlags
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Loads an icon asynchronously. To finish this function, see
- * g_loadable_icon_load_finish(). For the synchronous, blocking
- * version of this function, see g_loadable_icon_load().
- */
-
-
-/**
- * g_loadable_icon_load_finish:
- * @icon: a #GLoadableIcon.
- * @res: a #GAsyncResult.
- * @type: (out) (optional): a location to store the type of the loaded
- *        icon, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * Tries to set all attributes in the #GFileInfo on the target
+ * values, not stopping on the first error.
  *
- * Finishes an asynchronous icon load started in g_loadable_icon_load_async().
+ * If there is any error during this operation then @error will
+ * be set to the first error. Error on particular fields are flagged
+ * by setting the "status" field in the attribute value to
+ * %G_FILE_ATTRIBUTE_STATUS_ERROR_SETTING, which means you can
+ * also detect further errors.
  *
- * Returns: (transfer full): a #GInputStream to read the icon from.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: %FALSE if there was any error, %TRUE otherwise.
  */
 
 
 /**
- * g_local_vfs_new:
+ * g_file_set_display_name:
+ * @file: input #GFile
+ * @display_name: a string
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * Returns a new #GVfs handle for a local vfs.
+ * Renames @file to the specified display name.
  *
- * Returns: a new #GVfs handle.
+ * The display name is converted from UTF-8 to the correct encoding
+ * for the target filesystem if possible and the @file is renamed to this.
+ *
+ * If you want to implement a rename operation in the user interface the
+ * edit name (#G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the
+ * initial value in the rename widget, and then the result after editing
+ * should be passed to g_file_set_display_name().
+ *
+ * On success the resulting converted filename is returned.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: (transfer full): a #GFile specifying what @file was renamed to,
+ *     or %NULL if there was an error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_memory_input_stream_add_bytes:
- * @stream: a #GMemoryInputStream
- * @bytes: input data
+ * g_file_set_display_name_async:
+ * @file: input #GFile
+ * @display_name: a string
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async): a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Appends @bytes to data that can be read from the input stream.
+ * Asynchronously sets the display name for a given #GFile.
  *
- * Since: 2.34
+ * For more details, see g_file_set_display_name() which is
+ * the synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_set_display_name_finish() to get
+ * the result of the operation.
  */
 
 
 /**
- * g_memory_input_stream_add_data:
- * @stream: a #GMemoryInputStream
- * @data: (array length=len) (element-type guint8) (transfer full): input data
- * @len: length of the data, may be -1 if @data is a nul-terminated string
- * @destroy: (nullable): function that is called to free @data, or %NULL
+ * g_file_set_display_name_finish:
+ * @file: input #GFile
+ * @res: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Appends @data to data that can be read from the input stream
+ * Finishes setting a display name started with
+ * g_file_set_display_name_async().
+ *
+ * Returns: (transfer full): a #GFile or %NULL on error.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * g_memory_input_stream_new:
+ * g_file_start_mountable:
+ * @file: input #GFile
+ * @flags: flags affecting the operation
+ * @start_operation: (nullable): a #GMountOperation, or %NULL to avoid user interaction
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: (nullable): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL
+ * @user_data: the data to pass to callback function
  *
- * Creates a new empty #GMemoryInputStream.
+ * Starts a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Using @start_operation, you can request callbacks when, for instance,
+ * passwords are needed during authentication.
  *
- * Returns: a new #GInputStream
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_mount_mountable_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_memory_input_stream_new_from_bytes:
- * @bytes: a #GBytes
+ * g_file_start_mountable_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Creates a new #GMemoryInputStream with data from the given @bytes.
+ * Finishes a start operation. See g_file_start_mountable() for details.
  *
- * Returns: new #GInputStream read from @bytes
- * Since: 2.34
+ * Finish an asynchronous start operation that was started
+ * with g_file_start_mountable().
+ *
+ * Returns: %TRUE if the operation finished successfully. %FALSE
+ * otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_memory_input_stream_new_from_data:
- * @data: (array length=len) (element-type guint8) (transfer full): input data
- * @len: length of the data, may be -1 if @data is a nul-terminated string
- * @destroy: (nullable): function that is called to free @data, or %NULL
+ * g_file_stop_mountable:
+ * @file: input #GFile
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation,
+ *     or %NULL to avoid user interaction.
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (nullable): a #GAsyncReadyCallback to call
+ *     when the request is satisfied, or %NULL
+ * @user_data: the data to pass to callback function
  *
- * Creates a new #GMemoryInputStream with data in memory of a given size.
+ * Stops a file of type #G_FILE_TYPE_MOUNTABLE.
  *
- * Returns: new #GInputStream read from @data of @len bytes.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_stop_mountable_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_memory_output_stream_get_data:
- * @ostream: a #GMemoryOutputStream
+ * g_file_stop_mountable_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Gets any loaded data from the @ostream.
+ * Finishes an stop operation, see g_file_stop_mountable() for details.
  *
- * Note that the returned pointer may become invalid on the next
- * write or truncate operation on the stream.
+ * Finish an asynchronous stop operation that was started
+ * with g_file_stop_mountable().
  *
- * Returns: (transfer none): pointer to the stream's data, or %NULL if the data
- *    has been stolen
+ * Returns: %TRUE if the operation finished successfully.
+ *     %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_memory_output_stream_get_data_size:
- * @ostream: a #GMemoryOutputStream
+ * g_file_supports_thread_contexts:
+ * @file: a #GFile
  *
- * Returns the number of bytes from the start up to including the last
- * byte written in the stream that has not been truncated away.
+ * Checks if @file supports
+ * [thread-default contexts][g-main-context-push-thread-default-context].
+ * If this returns %FALSE, you cannot perform asynchronous operations on
+ * @file in a thread that has a thread-default context.
  *
- * Returns: the number of bytes written to the stream
- * Since: 2.18
+ * Returns: Whether or not @file supports thread-default contexts.
+ * Since: 2.22
  */
 
 
 /**
- * g_memory_output_stream_get_size:
- * @ostream: a #GMemoryOutputStream
- *
- * Gets the size of the currently allocated data area (available from
- * g_memory_output_stream_get_data()).
- *
- * You probably don't want to use this function on resizable streams.
- * See g_memory_output_stream_get_data_size() instead.  For resizable
- * streams the size returned by this function is an implementation
- * detail and may be change at any time in response to operations on the
- * stream.
+ * g_file_trash: (virtual trash)
+ * @file: #GFile to send to trash
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @error: a #GError, or %NULL
  *
- * If the stream is fixed-sized (ie: no realloc was passed to
- * g_memory_output_stream_new()) then this is the maximum size of the
- * stream and further writes will return %G_IO_ERROR_NO_SPACE.
+ * Sends @file to the "Trashcan", if possible. This is similar to
+ * deleting it, but the user can recover it before emptying the trashcan.
+ * Not all file systems support trashing, so this call can return the
+ * %G_IO_ERROR_NOT_SUPPORTED error.
  *
- * In any case, if you want the number of bytes currently written to the
- * stream, use g_memory_output_stream_get_data_size().
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: the number of bytes allocated for the data buffer
+ * Returns: %TRUE on successful trash, %FALSE otherwise.
  */
 
 
 /**
- * g_memory_output_stream_new: (skip)
- * @data: (nullable): pointer to a chunk of memory to use, or %NULL
- * @size: the size of @data
- * @realloc_function: (nullable): a function with realloc() semantics (like g_realloc())
- *     to be called when @data needs to be grown, or %NULL
- * @destroy_function: (nullable): a function to be called on @data when the stream is
- *     finalized, or %NULL
- *
- * Creates a new #GMemoryOutputStream.
- *
- * In most cases this is not the function you want.  See
- * g_memory_output_stream_new_resizable() instead.
- *
- * If @data is non-%NULL, the stream will use that for its internal storage.
- *
- * If @realloc_fn is non-%NULL, it will be used for resizing the internal
- * storage when necessary and the stream will be considered resizable.
- * In that case, the stream will start out being (conceptually) empty.
- * @size is used only as a hint for how big @data is.  Specifically,
- * seeking to the end of a newly-created stream will seek to zero, not
- * @size.  Seeking past the end of the stream and then writing will
- * introduce a zero-filled gap.
- *
- * If @realloc_fn is %NULL then the stream is fixed-sized.  Seeking to
- * the end will seek to @size exactly.  Writing past the end will give
- * an 'out of space' error.  Attempting to seek past the end will fail.
- * Unlike the resizable case, seeking to an offset within the stream and
- * writing will preserve the bytes passed in as @data before that point
- * and will return them as part of g_memory_output_stream_steal_data().
- * If you intend to seek you should probably therefore ensure that @data
- * is properly initialised.
- *
- * It is probably only meaningful to provide @data and @size in the case
- * that you want a fixed-sized stream.  Put another way: if @realloc_fn
- * is non-%NULL then it makes most sense to give @data as %NULL and
- * @size as 0 (allowing #GMemoryOutputStream to do the initial
- * allocation for itself).
- *
- * |[<!-- language="C" -->
- * // a stream that can grow
- * stream = g_memory_output_stream_new (NULL, 0, realloc, free);
- *
- * // another stream that can grow
- * stream2 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
+ * g_file_trash_async: (virtual trash_async)
+ * @file: input #GFile
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: a #GAsyncReadyCallback to call
+ *     when the request is satisfied
+ * @user_data: the data to pass to callback function
  *
- * // a fixed-size stream
- * data = malloc (200);
- * stream3 = g_memory_output_stream_new (data, 200, NULL, free);
- * ]|
+ * Asynchronously sends @file to the Trash location, if possible.
  *
- * Returns: A newly created #GMemoryOutputStream object.
+ * Since: 2.38
  */
 
 
 /**
- * g_memory_output_stream_new_resizable:
+ * g_file_trash_finish: (virtual trash_finish)
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Creates a new #GMemoryOutputStream, using g_realloc() and g_free()
- * for memory allocation.
+ * Finishes an asynchronous file trashing operation, started with
+ * g_file_trash_async().
  *
- * Since: 2.36
+ * Returns: %TRUE on successful trash, %FALSE otherwise.
+ * Since: 2.38
  */
 
 
 /**
- * g_memory_output_stream_steal_as_bytes:
- * @ostream: a #GMemoryOutputStream
+ * g_file_unmount_mountable:
+ * @file: input #GFile
+ * @flags: flags affecting the operation
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
+ *     when the request is satisfied, or %NULL
+ * @user_data: (closure): the data to pass to callback function
  *
- * Returns data from the @ostream as a #GBytes. @ostream must be
- * closed before calling this function.
+ * Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
  *
- * Returns: (transfer full): the stream's data
- * Since: 2.34
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_unmount_mountable_finish() to get
+ * the result of the operation.
+ *
+ * Deprecated: 2.22: Use g_file_unmount_mountable_with_operation() instead.
  */
 
 
 /**
- * g_memory_output_stream_steal_data:
- * @ostream: a #GMemoryOutputStream
+ * g_file_unmount_mountable_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Gets any loaded data from the @ostream. Ownership of the data
- * is transferred to the caller; when no longer needed it must be
- * freed using the free function set in @ostream's
- * #GMemoryOutputStream:destroy-function property.
+ * Finishes an unmount operation, see g_file_unmount_mountable() for details.
  *
- * @ostream must be closed before calling this function.
+ * Finish an asynchronous unmount operation that was started
+ * with g_file_unmount_mountable().
  *
- * Returns: (transfer full): the stream's data, or %NULL if it has previously
- *    been stolen
- * Since: 2.26
+ * Returns: %TRUE if the operation finished successfully.
+ *     %FALSE otherwise.
+ * Deprecated: 2.22: Use g_file_unmount_mountable_with_operation_finish()
+ *     instead.
  */
 
 
 /**
- * g_memory_settings_backend_new:
+ * g_file_unmount_mountable_with_operation:
+ * @file: input #GFile
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation,
+ *     or %NULL to avoid user interaction
+ * @cancellable: (nullable): optional #GCancellable object,
+ *     %NULL to ignore
+ * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
+ *     when the request is satisfied, or %NULL
+ * @user_data: (closure): the data to pass to callback function
  *
- * Creates a memory-backed #GSettingsBackend.
+ * Unmounts a file of type #G_FILE_TYPE_MOUNTABLE.
  *
- * This backend allows changes to settings, but does not write them
- * to any backing storage, so the next time you run your application,
- * the memory backend will start out with the default values again.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: (transfer full): a newly created #GSettingsBackend
- * Since: 2.28
+ * When the operation is finished, @callback will be called.
+ * You can then call g_file_unmount_mountable_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_append:
- * @menu: a #GMenu
- * @label: (nullable): the section label, or %NULL
- * @detailed_action: (nullable): the detailed action string, or %NULL
+ * g_file_unmount_mountable_with_operation_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
  *
- * Convenience function for appending a normal menu item to the end of
- * @menu.  Combine g_menu_item_new() and g_menu_insert_item() for a more
- * flexible alternative.
+ * Finishes an unmount operation,
+ * see g_file_unmount_mountable_with_operation() for details.
  *
- * Since: 2.32
+ * Finish an asynchronous unmount operation that was started
+ * with g_file_unmount_mountable_with_operation().
+ *
+ * Returns: %TRUE if the operation finished successfully.
+ *     %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_append_item:
- * @menu: a #GMenu
- * @item: a #GMenuItem to append
- *
- * Appends @item to the end of @menu.
+ * g_filename_completer_get_completion_suffix:
+ * @completer: the filename completer.
+ * @initial_text: text to be completed.
  *
- * See g_menu_insert_item() for more information.
+ * Obtains a completion for @initial_text from @completer.
  *
- * Since: 2.32
+ * Returns: a completed string, or %NULL if no completion exists.
+ *     This string is not owned by GIO, so remember to g_free() it
+ *     when finished.
  */
 
 
 /**
- * g_menu_append_section:
- * @menu: a #GMenu
- * @label: (nullable): the section label, or %NULL
- * @section: a #GMenuModel with the items of the section
+ * g_filename_completer_get_completions:
+ * @completer: the filename completer.
+ * @initial_text: text to be completed.
  *
- * Convenience function for appending a section menu item to the end of
- * @menu.  Combine g_menu_item_new_section() and g_menu_insert_item() for a
- * more flexible alternative.
+ * Gets an array of completion strings for a given initial text.
  *
- * Since: 2.32
+ * Returns: (array zero-terminated=1) (transfer full): array of strings with possible completions for @initial_text.
+ * This array must be freed by g_strfreev() when finished.
  */
 
 
 /**
- * g_menu_append_submenu:
- * @menu: a #GMenu
- * @label: (nullable): the section label, or %NULL
- * @submenu: a #GMenuModel with the items of the submenu
+ * g_filename_completer_new:
  *
- * Convenience function for appending a submenu menu item to the end of
- * @menu.  Combine g_menu_item_new_submenu() and g_menu_insert_item() for a
- * more flexible alternative.
+ * Creates a new filename completer.
  *
- * Since: 2.32
+ * Returns: a #GFilenameCompleter.
  */
 
 
 /**
- * g_menu_attribute_iter_get_name:
- * @iter: a #GMenuAttributeIter
- *
- * Gets the name of the attribute at the current iterator position, as
- * a string.
- *
- * The iterator is not advanced.
+ * g_filename_completer_set_dirs_only:
+ * @completer: the filename completer.
+ * @dirs_only: a #gboolean.
  *
- * Returns: the name of the attribute
- * Since: 2.32
+ * If @dirs_only is %TRUE, @completer will only
+ * complete directory names, and not file names.
  */
 
 
 /**
- * g_menu_attribute_iter_get_next:
- * @iter: a #GMenuAttributeIter
- * @out_name: (out) (optional) (transfer none): the type of the attribute
- * @value: (out) (optional) (transfer full): the attribute value
- *
- * This function combines g_menu_attribute_iter_next() with
- * g_menu_attribute_iter_get_name() and g_menu_attribute_iter_get_value().
- *
- * First the iterator is advanced to the next (possibly first) attribute.
- * If that fails, then %FALSE is returned and there are no other
- * effects.
- *
- * If successful, @name and @value are set to the name and value of the
- * attribute that has just been advanced to.  At this point,
- * g_menu_attribute_iter_get_name() and g_menu_attribute_iter_get_value() will
- * return the same values again.
+ * g_filter_input_stream_get_base_stream:
+ * @stream: a #GFilterInputStream.
  *
- * The value returned in @name remains valid for as long as the iterator
- * remains at the current position.  The value returned in @value must
- * be unreffed using g_variant_unref() when it is no longer in use.
+ * Gets the base stream for the filter stream.
  *
- * Returns: %TRUE on success, or %FALSE if there is no additional
- *     attribute
- * Since: 2.32
+ * Returns: (transfer none): a #GInputStream.
  */
 
 
 /**
- * g_menu_attribute_iter_get_value:
- * @iter: a #GMenuAttributeIter
- *
- * Gets the value of the attribute at the current iterator position.
+ * g_filter_input_stream_get_close_base_stream:
+ * @stream: a #GFilterInputStream.
  *
- * The iterator is not advanced.
+ * Returns whether the base stream will be closed when @stream is
+ * closed.
  *
- * Returns: (transfer full): the value of the current attribute
- * Since: 2.32
+ * Returns: %TRUE if the base stream will be closed.
  */
 
 
 /**
- * g_menu_attribute_iter_next:
- * @iter: a #GMenuAttributeIter
- *
- * Attempts to advance the iterator to the next (possibly first)
- * attribute.
- *
- * %TRUE is returned on success, or %FALSE if there are no more
- * attributes.
- *
- * You must call this function when you first acquire the iterator
- * to advance it to the first attribute (and determine if the first
- * attribute exists at all).
+ * g_filter_input_stream_set_close_base_stream:
+ * @stream: a #GFilterInputStream.
+ * @close_base: %TRUE to close the base stream.
  *
- * Returns: %TRUE on success, or %FALSE when there are no more attributes
- * Since: 2.32
+ * Sets whether the base stream will be closed when @stream is closed.
  */
 
 
 /**
- * g_menu_freeze:
- * @menu: a #GMenu
+ * g_filter_output_stream_get_base_stream:
+ * @stream: a #GFilterOutputStream.
  *
- * Marks @menu as frozen.
+ * Gets the base stream for the filter stream.
  *
- * After the menu is frozen, it is an error to attempt to make any
- * changes to it.  In effect this means that the #GMenu API must no
- * longer be used.
+ * Returns: (transfer none): a #GOutputStream.
+ */
+
+
+/**
+ * g_filter_output_stream_get_close_base_stream:
+ * @stream: a #GFilterOutputStream.
  *
- * This function causes g_menu_model_is_mutable() to begin returning
- * %FALSE, which has some positive performance implications.
+ * Returns whether the base stream will be closed when @stream is
+ * closed.
  *
- * Since: 2.32
+ * Returns: %TRUE if the base stream will be closed.
  */
 
 
 /**
- * g_menu_insert:
- * @menu: a #GMenu
- * @position: the position at which to insert the item
- * @label: (nullable): the section label, or %NULL
- * @detailed_action: (nullable): the detailed action string, or %NULL
- *
- * Convenience function for inserting a normal menu item into @menu.
- * Combine g_menu_item_new() and g_menu_insert_item() for a more flexible
- * alternative.
+ * g_filter_output_stream_set_close_base_stream:
+ * @stream: a #GFilterOutputStream.
+ * @close_base: %TRUE to close the base stream.
  *
- * Since: 2.32
+ * Sets whether the base stream will be closed when @stream is closed.
  */
 
 
 /**
- * g_menu_insert_item:
- * @menu: a #GMenu
- * @position: the position at which to insert the item
- * @item: the #GMenuItem to insert
+ * g_icon_deserialize:
+ * @value: a #GVariant created with g_icon_serialize()
  *
- * Inserts @item into @menu.
+ * Deserializes a #GIcon previously serialized using g_icon_serialize().
  *
- * The "insertion" is actually done by copying all of the attribute and
- * link values of @item and using them to form a new item within @menu.
- * As such, @item itself is not really inserted, but rather, a menu item
- * that is exactly the same as the one presently described by @item.
+ * Returns: (transfer full): a #GIcon, or %NULL when deserialization fails.
+ * Since: 2.38
+ */
+
+
+/**
+ * g_icon_equal:
+ * @icon1: (nullable): pointer to the first #GIcon.
+ * @icon2: (nullable): pointer to the second #GIcon.
  *
- * This means that @item is essentially useless after the insertion
- * occurs.  Any changes you make to it are ignored unless it is inserted
- * again (at which point its updated values will be copied).
+ * Checks if two icons are equal.
  *
- * You should probably just free @item once you're done.
+ * Returns: %TRUE if @icon1 is equal to @icon2. %FALSE otherwise.
+ */
+
+
+/**
+ * g_icon_hash: (virtual hash)
+ * @icon: (not nullable): #gconstpointer to an icon object.
  *
- * There are many convenience functions to take care of common cases.
- * See g_menu_insert(), g_menu_insert_section() and
- * g_menu_insert_submenu() as well as "prepend" and "append" variants of
- * each of these functions.
+ * Gets a hash for an icon.
  *
- * Since: 2.32
+ * Returns: a #guint containing a hash for the @icon, suitable for
+ * use in a #GHashTable or similar data structure.
  */
 
 
 /**
- * g_menu_insert_section:
- * @menu: a #GMenu
- * @position: the position at which to insert the item
- * @label: (nullable): the section label, or %NULL
- * @section: a #GMenuModel with the items of the section
+ * g_icon_new_for_string:
+ * @str: A string obtained via g_icon_to_string().
+ * @error: Return location for error.
  *
- * Convenience function for inserting a section menu item into @menu.
- * Combine g_menu_item_new_section() and g_menu_insert_item() for a more
- * flexible alternative.
+ * Generate a #GIcon instance from @str. This function can fail if
+ * @str is not valid - see g_icon_to_string() for discussion.
  *
- * Since: 2.32
+ * If your application or library provides one or more #GIcon
+ * implementations you need to ensure that each #GType is registered
+ * with the type system prior to calling g_icon_new_for_string().
+ *
+ * Returns: (transfer full): An object implementing the #GIcon
+ *          interface or %NULL if @error is set.
+ * Since: 2.20
  */
 
 
 /**
- * g_menu_insert_submenu:
- * @menu: a #GMenu
- * @position: the position at which to insert the item
- * @label: (nullable): the section label, or %NULL
- * @submenu: a #GMenuModel with the items of the submenu
+ * g_icon_serialize:
+ * @icon: a #GIcon
  *
- * Convenience function for inserting a submenu menu item into @menu.
- * Combine g_menu_item_new_submenu() and g_menu_insert_item() for a more
- * flexible alternative.
+ * Serializes a #GIcon into a #GVariant. An equivalent #GIcon can be retrieved
+ * back by calling g_icon_deserialize() on the returned value.
+ * As serialization will avoid using raw icon data when possible, it only
+ * makes sense to transfer the #GVariant between processes on the same machine,
+ * (as opposed to over the network), and within the same file system namespace.
  *
- * Since: 2.32
+ * Returns: (transfer full): a #GVariant, or %NULL when serialization fails.
+ * Since: 2.38
  */
 
 
 /**
- * g_menu_item_get_attribute:
- * @menu_item: a #GMenuItem
- * @attribute: the attribute name to query
- * @format_string: a #GVariant format string
- * @...: positional parameters, as per @format_string
+ * g_icon_to_string: (virtual to_tokens)
+ * @icon: a #GIcon.
  *
- * Queries the named @attribute on @menu_item.
+ * Generates a textual representation of @icon that can be used for
+ * serialization such as when passing @icon to a different process or
+ * saving it to persistent storage. Use g_icon_new_for_string() to
+ * get @icon back from the returned string.
  *
- * If the attribute exists and matches the #GVariantType corresponding
- * to @format_string then @format_string is used to deconstruct the
- * value into the positional parameters and %TRUE is returned.
+ * The encoding of the returned string is proprietary to #GIcon except
+ * in the following two cases
  *
- * If the attribute does not exist, or it does exist but has the wrong
- * type, then the positional parameters are ignored and %FALSE is
- * returned.
+ * - If @icon is a #GFileIcon, the returned string is a native path
+ *   (such as `/path/to/my icon.png`) without escaping
+ *   if the #GFile for @icon is a native file.  If the file is not
+ *   native, the returned string is the result of g_file_get_uri()
+ *   (such as `sftp://path/to/my%20icon.png`).
  *
- * Returns: %TRUE if the named attribute was found with the expected
- *     type
- * Since: 2.34
+ * - If @icon is a #GThemedIcon with exactly one name, the encoding is
+ *    simply the name (such as `network-server`).
+ *
+ * Returns: (nullable): An allocated NUL-terminated UTF8 string or
+ * %NULL if @icon can't be serialized. Use g_free() to free.
+ * Since: 2.20
  */
 
 
 /**
- * g_menu_item_get_attribute_value:
- * @menu_item: a #GMenuItem
- * @attribute: the attribute name to query
- * @expected_type: (nullable): the expected type of the attribute
- *
- * Queries the named @attribute on @menu_item.
+ * g_inet_address_equal:
+ * @address: A #GInetAddress.
+ * @other_address: Another #GInetAddress.
  *
- * If @expected_type is specified and the attribute does not have this
- * type, %NULL is returned.  %NULL is also returned if the attribute
- * simply does not exist.
+ * Checks if two #GInetAddress instances are equal, e.g. the same address.
  *
- * Returns: (transfer full): the attribute value, or %NULL
- * Since: 2.34
+ * Returns: %TRUE if @address and @other_address are equal, %FALSE otherwise.
+ * Since: 2.30
  */
 
 
 /**
- * g_menu_item_get_link:
- * @menu_item: a #GMenuItem
- * @link: the link name to query
+ * g_inet_address_get_family:
+ * @address: a #GInetAddress
  *
- * Queries the named @link on @menu_item.
+ * Gets @address's family
  *
- * Returns: (transfer full): the link, or %NULL
- * Since: 2.34
+ * Returns: @address's family
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_item_new:
- * @label: (nullable): the section label, or %NULL
- * @detailed_action: (nullable): the detailed action string, or %NULL
- *
- * Creates a new #GMenuItem.
- *
- * If @label is non-%NULL it is used to set the "label" attribute of the
- * new item.
+ * g_inet_address_get_is_any:
+ * @address: a #GInetAddress
  *
- * If @detailed_action is non-%NULL it is used to set the "action" and
- * possibly the "target" attribute of the new item.  See
- * g_menu_item_set_detailed_action() for more information.
+ * Tests whether @address is the "any" address for its family.
  *
- * Returns: a new #GMenuItem
- * Since: 2.32
+ * Returns: %TRUE if @address is the "any" address for its family.
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_item_new_from_model:
- * @model: a #GMenuModel
- * @item_index: the index of an item in @model
- *
- * Creates a #GMenuItem as an exact copy of an existing menu item in a
- * #GMenuModel.
+ * g_inet_address_get_is_link_local:
+ * @address: a #GInetAddress
  *
- * @item_index must be valid (ie: be sure to call
- * g_menu_model_get_n_items() first).
+ * Tests whether @address is a link-local address (that is, if it
+ * identifies a host on a local network that is not connected to the
+ * Internet).
  *
- * Returns: a new #GMenuItem.
- * Since: 2.34
+ * Returns: %TRUE if @address is a link-local address.
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_item_new_section:
- * @label: (nullable): the section label, or %NULL
- * @section: a #GMenuModel with the items of the section
- *
- * Creates a new #GMenuItem representing a section.
- *
- * This is a convenience API around g_menu_item_new() and
- * g_menu_item_set_section().
+ * g_inet_address_get_is_loopback:
+ * @address: a #GInetAddress
  *
- * The effect of having one menu appear as a section of another is
- * exactly as it sounds: the items from @section become a direct part of
- * the menu that @menu_item is added to.
+ * Tests whether @address is the loopback address for its family.
  *
- * Visual separation is typically displayed between two non-empty
- * sections.  If @label is non-%NULL then it will be encorporated into
- * this visual indication.  This allows for labeled subsections of a
- * menu.
+ * Returns: %TRUE if @address is the loopback address for its family.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_get_is_mc_global:
+ * @address: a #GInetAddress
  *
- * As a simple example, consider a typical "Edit" menu from a simple
- * program.  It probably contains an "Undo" and "Redo" item, followed by
- * a separator, followed by "Cut", "Copy" and "Paste".
+ * Tests whether @address is a global multicast address.
  *
- * This would be accomplished by creating three #GMenu instances.  The
- * first would be populated with the "Undo" and "Redo" items, and the
- * second with the "Cut", "Copy" and "Paste" items.  The first and
- * second menus would then be added as submenus of the third.  In XML
- * format, this would look something like the following:
- * |[
- * <menu id='edit-menu'>
- *   <section>
- *     <item label='Undo'/>
- *     <item label='Redo'/>
- *   </section>
- *   <section>
- *     <item label='Cut'/>
- *     <item label='Copy'/>
- *     <item label='Paste'/>
- *   </section>
- * </menu>
- * ]|
+ * Returns: %TRUE if @address is a global multicast address.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_get_is_mc_link_local:
+ * @address: a #GInetAddress
  *
- * The following example is exactly equivalent.  It is more illustrative
- * of the exact relationship between the menus and items (keeping in
- * mind that the 'link' element defines a new menu that is linked to the
- * containing one).  The style of the second example is more verbose and
- * difficult to read (and therefore not recommended except for the
- * purpose of understanding what is really going on).
- * |[
- * <menu id='edit-menu'>
- *   <item>
- *     <link name='section'>
- *       <item label='Undo'/>
- *       <item label='Redo'/>
- *     </link>
- *   </item>
- *   <item>
- *     <link name='section'>
- *       <item label='Cut'/>
- *       <item label='Copy'/>
- *       <item label='Paste'/>
- *     </link>
- *   </item>
- * </menu>
- * ]|
+ * Tests whether @address is a link-local multicast address.
  *
- * Returns: a new #GMenuItem
- * Since: 2.32
+ * Returns: %TRUE if @address is a link-local multicast address.
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_item_new_submenu:
- * @label: (nullable): the section label, or %NULL
- * @submenu: a #GMenuModel with the items of the submenu
- *
- * Creates a new #GMenuItem representing a submenu.
+ * g_inet_address_get_is_mc_node_local:
+ * @address: a #GInetAddress
  *
- * This is a convenience API around g_menu_item_new() and
- * g_menu_item_set_submenu().
+ * Tests whether @address is a node-local multicast address.
  *
- * Returns: a new #GMenuItem
- * Since: 2.32
+ * Returns: %TRUE if @address is a node-local multicast address.
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_item_set_action_and_target:
- * @menu_item: a #GMenuItem
- * @action: (nullable): the name of the action for this item
- * @format_string: (nullable): a GVariant format string
- * @...: positional parameters, as per @format_string
- *
- * Sets or unsets the "action" and "target" attributes of @menu_item.
- *
- * If @action is %NULL then both the "action" and "target" attributes
- * are unset (and @format_string is ignored along with the positional
- * parameters).
- *
- * If @action is non-%NULL then the "action" attribute is set.
- * @format_string is then inspected.  If it is non-%NULL then the proper
- * position parameters are collected to create a #GVariant instance to
- * use as the target value.  If it is %NULL then the positional
- * parameters are ignored and the "target" attribute is unset.
- *
- * See also g_menu_item_set_action_and_target_value() for an equivalent
- * call that directly accepts a #GVariant.  See
- * g_menu_item_set_detailed_action() for a more convenient version that
- * works with string-typed targets.
+ * g_inet_address_get_is_mc_org_local:
+ * @address: a #GInetAddress
  *
- * See also g_menu_item_set_action_and_target_value() for a
- * description of the semantics of the action and target attributes.
+ * Tests whether @address is an organization-local multicast address.
  *
- * Since: 2.32
+ * Returns: %TRUE if @address is an organization-local multicast address.
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_item_set_action_and_target_value:
- * @menu_item: a #GMenuItem
- * @action: (nullable): the name of the action for this item
- * @target_value: (nullable): a #GVariant to use as the action target
+ * g_inet_address_get_is_mc_site_local:
+ * @address: a #GInetAddress
  *
- * Sets or unsets the "action" and "target" attributes of @menu_item.
+ * Tests whether @address is a site-local multicast address.
  *
- * If @action is %NULL then both the "action" and "target" attributes
- * are unset (and @target_value is ignored).
+ * Returns: %TRUE if @address is a site-local multicast address.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_get_is_multicast:
+ * @address: a #GInetAddress
  *
- * If @action is non-%NULL then the "action" attribute is set.  The
- * "target" attribute is then set to the value of @target_value if it is
- * non-%NULL or unset otherwise.
+ * Tests whether @address is a multicast address.
  *
- * Normal menu items (ie: not submenu, section or other custom item
- * types) are expected to have the "action" attribute set to identify
- * the action that they are associated with.  The state type of the
- * action help to determine the disposition of the menu item.  See
- * #GAction and #GActionGroup for an overview of actions.
+ * Returns: %TRUE if @address is a multicast address.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_get_is_site_local:
+ * @address: a #GInetAddress
  *
- * In general, clicking on the menu item will result in activation of
- * the named action with the "target" attribute given as the parameter
- * to the action invocation.  If the "target" attribute is not set then
- * the action is invoked with no parameter.
+ * Tests whether @address is a site-local address such as 10.0.0.1
+ * (that is, the address identifies a host on a local network that can
+ * not be reached directly from the Internet, but which may have
+ * outgoing Internet connectivity via a NAT or firewall).
  *
- * If the action has no state then the menu item is usually drawn as a
- * plain menu item (ie: with no additional decoration).
+ * Returns: %TRUE if @address is a site-local address.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_get_native_size:
+ * @address: a #GInetAddress
  *
- * If the action has a boolean state then the menu item is usually drawn
- * as a toggle menu item (ie: with a checkmark or equivalent
- * indication).  The item should be marked as 'toggled' or 'checked'
- * when the boolean state is %TRUE.
+ * Gets the size of the native raw binary address for @address. This
+ * is the size of the data that you get from g_inet_address_to_bytes().
  *
- * If the action has a string state then the menu item is usually drawn
- * as a radio menu item (ie: with a radio bullet or equivalent
- * indication).  The item should be marked as 'selected' when the string
- * state is equal to the value of the @target property.
+ * Returns: the number of bytes used for the native version of @address.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_mask_equal:
+ * @mask: a #GInetAddressMask
+ * @mask2: another #GInetAddressMask
  *
- * See g_menu_item_set_action_and_target() or
- * g_menu_item_set_detailed_action() for two equivalent calls that are
- * probably more convenient for most uses.
+ * Tests if @mask and @mask2 are the same mask.
  *
+ * Returns: whether @mask and @mask2 are the same mask
  * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_attribute:
- * @menu_item: a #GMenuItem
- * @attribute: the attribute to set
- * @format_string: (nullable): a #GVariant format string, or %NULL
- * @...: positional parameters, as per @format_string
- *
- * Sets or unsets an attribute on @menu_item.
- *
- * The attribute to set or unset is specified by @attribute. This
- * can be one of the standard attribute names %G_MENU_ATTRIBUTE_LABEL,
- * %G_MENU_ATTRIBUTE_ACTION, %G_MENU_ATTRIBUTE_TARGET, or a custom
- * attribute name.
- * Attribute names are restricted to lowercase characters, numbers
- * and '-'. Furthermore, the names must begin with a lowercase character,
- * must not end with a '-', and must not contain consecutive dashes.
- *
- * If @format_string is non-%NULL then the proper position parameters
- * are collected to create a #GVariant instance to use as the attribute
- * value.  If it is %NULL then the positional parameterrs are ignored
- * and the named attribute is unset.
+ * g_inet_address_mask_get_address:
+ * @mask: a #GInetAddressMask
  *
- * See also g_menu_item_set_attribute_value() for an equivalent call
- * that directly accepts a #GVariant.
+ * Gets @mask's base address
  *
+ * Returns: (transfer none): @mask's base address
  * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_attribute_value:
- * @menu_item: a #GMenuItem
- * @attribute: the attribute to set
- * @value: (nullable): a #GVariant to use as the value, or %NULL
- *
- * Sets or unsets an attribute on @menu_item.
- *
- * The attribute to set or unset is specified by @attribute. This
- * can be one of the standard attribute names %G_MENU_ATTRIBUTE_LABEL,
- * %G_MENU_ATTRIBUTE_ACTION, %G_MENU_ATTRIBUTE_TARGET, or a custom
- * attribute name.
- * Attribute names are restricted to lowercase characters, numbers
- * and '-'. Furthermore, the names must begin with a lowercase character,
- * must not end with a '-', and must not contain consecutive dashes.
- *
- * must consist only of lowercase
- * ASCII characters, digits and '-'.
- *
- * If @value is non-%NULL then it is used as the new value for the
- * attribute.  If @value is %NULL then the attribute is unset. If
- * the @value #GVariant is floating, it is consumed.
+ * g_inet_address_mask_get_family:
+ * @mask: a #GInetAddressMask
  *
- * See also g_menu_item_set_attribute() for a more convenient way to do
- * the same.
+ * Gets the #GSocketFamily of @mask's address
  *
+ * Returns: the #GSocketFamily of @mask's address
  * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_detailed_action:
- * @menu_item: a #GMenuItem
- * @detailed_action: the "detailed" action string
- *
- * Sets the "action" and possibly the "target" attribute of @menu_item.
- *
- * The format of @detailed_action is the same format parsed by
- * g_action_parse_detailed_name().
- *
- * See g_menu_item_set_action_and_target() or
- * g_menu_item_set_action_and_target_value() for more flexible (but
- * slightly less convenient) alternatives.
+ * g_inet_address_mask_get_length:
+ * @mask: a #GInetAddressMask
  *
- * See also g_menu_item_set_action_and_target_value() for a description of
- * the semantics of the action and target attributes.
+ * Gets @mask's length
  *
+ * Returns: @mask's length
  * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_icon:
- * @menu_item: a #GMenuItem
- * @icon: a #GIcon, or %NULL
- *
- * Sets (or unsets) the icon on @menu_item.
- *
- * This call is the same as calling g_icon_serialize() and using the
- * result as the value to g_menu_item_set_attribute_value() for
- * %G_MENU_ATTRIBUTE_ICON.
- *
- * This API is only intended for use with "noun" menu items; things like
- * bookmarks or applications in an "Open With" menu.  Don't use it on
- * menu items corresponding to verbs (eg: stock icons for 'Save' or
- * 'Quit').
+ * g_inet_address_mask_matches:
+ * @mask: a #GInetAddressMask
+ * @address: a #GInetAddress
  *
- * If @icon is %NULL then the icon is unset.
+ * Tests if @address falls within the range described by @mask.
  *
- * Since: 2.38
+ * Returns: whether @address falls within the range described by
+ * @mask.
+ * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_label:
- * @menu_item: a #GMenuItem
- * @label: (nullable): the label to set, or %NULL to unset
- *
- * Sets or unsets the "label" attribute of @menu_item.
+ * g_inet_address_mask_new:
+ * @addr: a #GInetAddress
+ * @length: number of bits of @addr to use
+ * @error: return location for #GError, or %NULL
  *
- * If @label is non-%NULL it is used as the label for the menu item.  If
- * it is %NULL then the label attribute is unset.
+ * Creates a new #GInetAddressMask representing all addresses whose
+ * first @length bits match @addr.
  *
+ * Returns: a new #GInetAddressMask, or %NULL on error
  * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_link:
- * @menu_item: a #GMenuItem
- * @link: type of link to establish or unset
- * @model: (nullable): the #GMenuModel to link to (or %NULL to unset)
- *
- * Creates a link from @menu_item to @model if non-%NULL, or unsets it.
+ * g_inet_address_mask_new_from_string:
+ * @mask_string: an IP address or address/length string
+ * @error: return location for #GError, or %NULL
  *
- * Links are used to establish a relationship between a particular menu
- * item and another menu.  For example, %G_MENU_LINK_SUBMENU is used to
- * associate a submenu with a particular menu item, and %G_MENU_LINK_SECTION
- * is used to create a section. Other types of link can be used, but there
- * is no guarantee that clients will be able to make sense of them.
- * Link types are restricted to lowercase characters, numbers
- * and '-'. Furthermore, the names must begin with a lowercase character,
- * must not end with a '-', and must not contain consecutive dashes.
+ * Parses @mask_string as an IP address and (optional) length, and
+ * creates a new #GInetAddressMask. The length, if present, is
+ * delimited by a "/". If it is not present, then the length is
+ * assumed to be the full length of the address.
  *
+ * Returns: a new #GInetAddressMask corresponding to @string, or %NULL
+ * on error.
  * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_section:
- * @menu_item: a #GMenuItem
- * @section: (nullable): a #GMenuModel, or %NULL
- *
- * Sets or unsets the "section" link of @menu_item to @section.
+ * g_inet_address_mask_to_string:
+ * @mask: a #GInetAddressMask
  *
- * The effect of having one menu appear as a section of another is
- * exactly as it sounds: the items from @section become a direct part of
- * the menu that @menu_item is added to.  See g_menu_item_new_section()
- * for more information about what it means for a menu item to be a
- * section.
+ * Converts @mask back to its corresponding string form.
  *
+ * Returns: a string corresponding to @mask.
  * Since: 2.32
  */
 
 
 /**
- * g_menu_item_set_submenu:
- * @menu_item: a #GMenuItem
- * @submenu: (nullable): a #GMenuModel, or %NULL
+ * g_inet_address_new_any:
+ * @family: the address family
  *
- * Sets or unsets the "submenu" link of @menu_item to @submenu.
+ * Creates a #GInetAddress for the "any" address (unassigned/"don't
+ * care") for @family.
  *
- * If @submenu is non-%NULL, it is linked to.  If it is %NULL then the
- * link is unset.
+ * Returns: a new #GInetAddress corresponding to the "any" address
+ * for @family.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_new_from_bytes:
+ * @bytes: (array) (element-type guint8): raw address data
+ * @family: the address family of @bytes
  *
- * The effect of having one menu appear as a submenu of another is
- * exactly as it sounds.
+ * Creates a new #GInetAddress from the given @family and @bytes.
+ * @bytes should be 4 bytes for %G_SOCKET_FAMILY_IPV4 and 16 bytes for
+ * %G_SOCKET_FAMILY_IPV6.
  *
- * Since: 2.32
+ * Returns: a new #GInetAddress corresponding to @family and @bytes.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_link_iter_get_name:
- * @iter: a #GMenuLinkIter
- *
- * Gets the name of the link at the current iterator position.
+ * g_inet_address_new_from_string:
+ * @string: a string representation of an IP address
  *
- * The iterator is not advanced.
+ * Parses @string as an IP address and creates a new #GInetAddress.
  *
- * Returns: the type of the link
- * Since: 2.32
+ * Returns: a new #GInetAddress corresponding to @string, or %NULL if
+ * @string could not be parsed.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_link_iter_get_next:
- * @iter: a #GMenuLinkIter
- * @out_link: (out) (optional) (transfer none): the name of the link
- * @value: (out) (optional) (transfer full): the linked #GMenuModel
+ * g_inet_address_new_loopback:
+ * @family: the address family
  *
- * This function combines g_menu_link_iter_next() with
- * g_menu_link_iter_get_name() and g_menu_link_iter_get_value().
+ * Creates a #GInetAddress for the loopback address for @family.
  *
- * First the iterator is advanced to the next (possibly first) link.
- * If that fails, then %FALSE is returned and there are no other effects.
+ * Returns: a new #GInetAddress corresponding to the loopback address
+ * for @family.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_to_bytes: (skip)
+ * @address: a #GInetAddress
  *
- * If successful, @out_link and @value are set to the name and #GMenuModel
- * of the link that has just been advanced to.  At this point,
- * g_menu_link_iter_get_name() and g_menu_link_iter_get_value() will return the
- * same values again.
+ * Gets the raw binary address data from @address.
  *
- * The value returned in @out_link remains valid for as long as the iterator
- * remains at the current position.  The value returned in @value must
- * be unreffed using g_object_unref() when it is no longer in use.
+ * Returns: a pointer to an internal array of the bytes in @address,
+ * which should not be modified, stored, or freed. The size of this
+ * array can be gotten with g_inet_address_get_native_size().
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_address_to_string:
+ * @address: a #GInetAddress
  *
- * Returns: %TRUE on success, or %FALSE if there is no additional link
- * Since: 2.32
+ * Converts @address to string form.
+ *
+ * Returns: a representation of @address as a string, which should be
+ * freed after use.
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_link_iter_get_value:
- * @iter: a #GMenuLinkIter
+ * g_inet_socket_address_get_address:
+ * @address: a #GInetSocketAddress
  *
- * Gets the linked #GMenuModel at the current iterator position.
+ * Gets @address's #GInetAddress.
  *
- * The iterator is not advanced.
+ * Returns: (transfer none): the #GInetAddress for @address, which must be
+ * g_object_ref()'d if it will be stored
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_socket_address_get_flowinfo:
+ * @address: a %G_SOCKET_FAMILY_IPV6 #GInetSocketAddress
  *
- * Returns: (transfer full): the #GMenuModel that is linked to
+ * Gets the `sin6_flowinfo` field from @address,
+ * which must be an IPv6 address.
+ *
+ * Returns: the flowinfo field
  * Since: 2.32
  */
 
 
 /**
- * g_menu_link_iter_next:
- * @iter: a #GMenuLinkIter
+ * g_inet_socket_address_get_port:
+ * @address: a #GInetSocketAddress
  *
- * Attempts to advance the iterator to the next (possibly first)
- * link.
+ * Gets @address's port.
  *
- * %TRUE is returned on success, or %FALSE if there are no more links.
+ * Returns: the port for @address
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_socket_address_get_scope_id:
+ * @address: a %G_SOCKET_FAMILY_IPV6 #GInetAddress
  *
- * You must call this function when you first acquire the iterator to
- * advance it to the first link (and determine if the first link exists
- * at all).
+ * Gets the `sin6_scope_id` field from @address,
+ * which must be an IPv6 address.
  *
- * Returns: %TRUE on success, or %FALSE when there are no more links
+ * Returns: the scope id field
  * Since: 2.32
  */
 
 
 /**
- * g_menu_model_get_item_attribute:
- * @model: a #GMenuModel
- * @item_index: the index of the item
- * @attribute: the attribute to query
- * @format_string: a #GVariant format string
- * @...: positional parameters, as per @format_string
+ * g_inet_socket_address_new:
+ * @address: a #GInetAddress
+ * @port: a port number
  *
- * Queries item at position @item_index in @model for the attribute
- * specified by @attribute.
+ * Creates a new #GInetSocketAddress for @address and @port.
  *
- * If the attribute exists and matches the #GVariantType corresponding
- * to @format_string then @format_string is used to deconstruct the
- * value into the positional parameters and %TRUE is returned.
+ * Returns: a new #GInetSocketAddress
+ * Since: 2.22
+ */
+
+
+/**
+ * g_inet_socket_address_new_from_string:
+ * @address: the string form of an IP address
+ * @port: a port number
  *
- * If the attribute does not exist, or it does exist but has the wrong
- * type, then the positional parameters are ignored and %FALSE is
- * returned.
+ * Creates a new #GInetSocketAddress for @address and @port.
  *
- * This function is a mix of g_menu_model_get_item_attribute_value() and
- * g_variant_get(), followed by a g_variant_unref().  As such,
- * @format_string must make a complete copy of the data (since the
- * #GVariant may go away after the call to g_variant_unref()).  In
- * particular, no '&' characters are allowed in @format_string.
+ * If @address is an IPv6 address, it can also contain a scope ID
+ * (separated from the address by a `%`).
  *
- * Returns: %TRUE if the named attribute was found with the expected
- *     type
- * Since: 2.32
+ * Returns: a new #GInetSocketAddress, or %NULL if @address cannot be
+ * parsed.
+ * Since: 2.40
  */
 
 
 /**
- * g_menu_model_get_item_attribute_value:
- * @model: a #GMenuModel
- * @item_index: the index of the item
- * @attribute: the attribute to query
- * @expected_type: (nullable): the expected type of the attribute, or
- *     %NULL
+ * g_initable_init:
+ * @initable: a #GInitable.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Queries the item at position @item_index in @model for the attribute
- * specified by @attribute.
+ * Initializes the object implementing the interface.
  *
- * If @expected_type is non-%NULL then it specifies the expected type of
- * the attribute.  If it is %NULL then any type will be accepted.
+ * This method is intended for language bindings. If writing in C,
+ * g_initable_new() should typically be used instead.
  *
- * If the attribute exists and matches @expected_type (or if the
- * expected type is unspecified) then the value is returned.
+ * The object must be initialized before any real use after initial
+ * construction, either with this function or g_async_initable_init_async().
  *
- * If the attribute does not exist, or does not match the expected type
- * then %NULL is returned.
+ * Implementations may also support cancellation. If @cancellable is not %NULL,
+ * then initialization can be cancelled by triggering the cancellable object
+ * from another thread. If the operation was cancelled, the error
+ * %G_IO_ERROR_CANCELLED will be returned. If @cancellable is not %NULL and
+ * the object doesn't support cancellable initialization the error
+ * %G_IO_ERROR_NOT_SUPPORTED will be returned.
+ *
+ * If the object is not initialized, or initialization returns with an
+ * error, then all operations on the object except g_object_ref() and
+ * g_object_unref() are considered to be invalid, and have undefined
+ * behaviour. See the [introduction][ginitable] for more details.
+ *
+ * Callers should not assume that a class which implements #GInitable can be
+ * initialized multiple times, unless the class explicitly documents itself as
+ * supporting this. Generally, a class’ implementation of init() can assume
+ * (and assert) that it will only be called once. Previously, this documentation
+ * recommended all #GInitable implementations should be idempotent; that
+ * recommendation was relaxed in GLib 2.54.
+ *
+ * If a class explicitly supports being initialized multiple times, it is
+ * recommended that the method is idempotent: multiple calls with the same
+ * arguments should return the same results. Only the first call initializes
+ * the object; further calls return the result of the first call.
+ *
+ * One reason why a class might need to support idempotent initialization is if
+ * it is designed to be used via the singleton pattern, with a
+ * #GObjectClass.constructor that sometimes returns an existing instance.
+ * In this pattern, a caller would expect to be able to call g_initable_init()
+ * on the result of g_object_new(), regardless of whether it is in fact a new
+ * instance.
+ *
+ * Returns: %TRUE if successful. If an error has occurred, this function will
+ *     return %FALSE and set @error appropriately if present.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_initable_new:
+ * @object_type: a #GType supporting #GInitable.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *    ignore.
+ * @first_property_name: (nullable): the name of the first property, or %NULL if no
+ *     properties
+ * @...: the value if the first property, followed by and other property
+ *    value pairs, and ended by %NULL.
  *
- * Returns: (transfer full): the value of the attribute
- * Since: 2.32
+ * Helper function for constructing #GInitable object. This is
+ * similar to g_object_new() but also initializes the object
+ * and returns %NULL, setting an error on failure.
+ *
+ * Returns: (type GObject.Object) (transfer full): a newly allocated
+ *      #GObject, or %NULL on error
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_model_get_item_link:
- * @model: a #GMenuModel
- * @item_index: the index of the item
- * @link: the link to query
- *
- * Queries the item at position @item_index in @model for the link
- * specified by @link.
+ * g_initable_new_valist:
+ * @object_type: a #GType supporting #GInitable.
+ * @first_property_name: the name of the first property, followed by
+ * the value, and other property value pairs, and ended by %NULL.
+ * @var_args: The var args list generated from @first_property_name.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * If the link exists, the linked #GMenuModel is returned.  If the link
- * does not exist, %NULL is returned.
+ * Helper function for constructing #GInitable object. This is
+ * similar to g_object_new_valist() but also initializes the object
+ * and returns %NULL, setting an error on failure.
  *
- * Returns: (transfer full): the linked #GMenuModel, or %NULL
- * Since: 2.32
+ * Returns: (type GObject.Object) (transfer full): a newly allocated
+ *      #GObject, or %NULL on error
+ * Since: 2.22
  */
 
 
 /**
- * g_menu_model_get_n_items:
- * @model: a #GMenuModel
+ * g_initable_newv:
+ * @object_type: a #GType supporting #GInitable.
+ * @n_parameters: the number of parameters in @parameters
+ * @parameters: (array length=n_parameters): the parameters to use to construct the object
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * Query the number of items in @model.
+ * Helper function for constructing #GInitable object. This is
+ * similar to g_object_newv() but also initializes the object
+ * and returns %NULL, setting an error on failure.
  *
- * Returns: the number of items
- * Since: 2.32
+ * Returns: (type GObject.Object) (transfer full): a newly allocated
+ *      #GObject, or %NULL on error
+ * Since: 2.22
+ * Deprecated: 2.54: Use g_object_new_with_properties() and
+ * g_initable_init() instead. See #GParameter for more information.
  */
 
 
 /**
- * g_menu_model_is_mutable:
- * @model: a #GMenuModel
- *
- * Queries if @model is mutable.
- *
- * An immutable #GMenuModel will never emit the #GMenuModel::items-changed
- * signal. Consumers of the model may make optimisations accordingly.
+ * g_input_stream_clear_pending:
+ * @stream: input stream
  *
- * Returns: %TRUE if the model is mutable (ie: "items-changed" may be
- *     emitted).
- * Since: 2.32
+ * Clears the pending flag on @stream.
  */
 
 
 /**
- * g_menu_model_items_changed:
- * @model: a #GMenuModel
- * @position: the position of the change
- * @removed: the number of items removed
- * @added: the number of items added
+ * g_input_stream_close:
+ * @stream: A #GInputStream.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Requests emission of the #GMenuModel::items-changed signal on @model.
+ * Closes the stream, releasing resources related to it.
  *
- * This function should never be called except by #GMenuModel
- * subclasses.  Any other calls to this function will very likely lead
- * to a violation of the interface of the model.
+ * Once the stream is closed, all other operations will return %G_IO_ERROR_CLOSED.
+ * Closing a stream multiple times will not return an error.
  *
- * The implementation should update its internal representation of the
- * menu before emitting the signal.  The implementation should further
- * expect to receive queries about the new state of the menu (and
- * particularly added menu items) while signal handlers are running.
+ * Streams will be automatically closed when the last reference
+ * is dropped, but you might want to call this function to make sure
+ * resources are released as early as possible.
  *
- * The implementation must dispatch this call directly from a mainloop
- * entry and not in response to calls -- particularly those from the
- * #GMenuModel API.  Said another way: the menu must not change while
- * user code is running without returning to the mainloop.
+ * Some streams might keep the backing store of the stream (e.g. a file descriptor)
+ * open after the stream is closed. See the documentation for the individual
+ * stream for details.
  *
- * Since: 2.32
+ * On failure the first error that happened will be reported, but the close
+ * operation will finish as much as possible. A stream that failed to
+ * close will still return %G_IO_ERROR_CLOSED for all operations. Still, it
+ * is important to check and report the error to the user.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Cancelling a close will still leave the stream closed, but some streams
+ * can use a faster close that doesn't block to e.g. check errors.
+ *
+ * Returns: %TRUE on success, %FALSE on failure
  */
 
 
 /**
- * g_menu_model_iterate_item_attributes:
- * @model: a #GMenuModel
- * @item_index: the index of the item
+ * g_input_stream_close_async:
+ * @stream: A #GInputStream.
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional cancellable object
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Creates a #GMenuAttributeIter to iterate over the attributes of
- * the item at position @item_index in @model.
+ * Requests an asynchronous closes of the stream, releasing resources related to it.
+ * When the operation is finished @callback will be called.
+ * You can then call g_input_stream_close_finish() to get the result of the
+ * operation.
  *
- * You must free the iterator with g_object_unref() when you are done.
+ * For behaviour details see g_input_stream_close().
  *
- * Returns: (transfer full): a new #GMenuAttributeIter
- * Since: 2.32
+ * The asynchronous 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.
  */
 
 
 /**
- * g_menu_model_iterate_item_links:
- * @model: a #GMenuModel
- * @item_index: the index of the item
- *
- * Creates a #GMenuLinkIter to iterate over the links of the item at
- * position @item_index in @model.
+ * g_input_stream_close_finish:
+ * @stream: a #GInputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * You must free the iterator with g_object_unref() when you are done.
+ * Finishes closing a stream asynchronously, started from g_input_stream_close_async().
  *
- * Returns: (transfer full): a new #GMenuLinkIter
- * Since: 2.32
+ * Returns: %TRUE if the stream was closed successfully.
  */
 
 
 /**
- * g_menu_new:
- *
- * Creates a new #GMenu.
+ * g_input_stream_has_pending:
+ * @stream: input stream.
  *
- * The new menu has no items.
+ * Checks if an input stream has pending actions.
  *
- * Returns: a new #GMenu
- * Since: 2.32
+ * Returns: %TRUE if @stream has pending actions.
  */
 
 
 /**
- * g_menu_prepend:
- * @menu: a #GMenu
- * @label: (nullable): the section label, or %NULL
- * @detailed_action: (nullable): the detailed action string, or %NULL
+ * g_input_stream_is_closed:
+ * @stream: input stream.
  *
- * Convenience function for prepending a normal menu item to the start
- * of @menu.  Combine g_menu_item_new() and g_menu_insert_item() for a more
- * flexible alternative.
+ * Checks if an input stream is closed.
  *
- * Since: 2.32
+ * Returns: %TRUE if the stream is closed.
  */
 
 
 /**
- * g_menu_prepend_item:
- * @menu: a #GMenu
- * @item: a #GMenuItem to prepend
+ * g_input_stream_read:
+ * @stream: a #GInputStream.
+ * @buffer: (array length=count) (element-type guint8): a buffer to
+ *     read data into (which should be at least count bytes long).
+ * @count: the number of bytes that will be read from the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Prepends @item to the start of @menu.
+ * Tries to read @count bytes from the stream into the buffer starting at
+ * @buffer. Will block during this read.
  *
- * See g_menu_insert_item() for more information.
+ * If count is zero returns zero and does nothing. A value of @count
+ * larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
  *
- * Since: 2.32
- */
-
-
-/**
- * g_menu_prepend_section:
- * @menu: a #GMenu
- * @label: (nullable): the section label, or %NULL
- * @section: a #GMenuModel with the items of the section
+ * On success, the number of bytes read into the buffer is returned.
+ * It is not an error if this is not the same as the requested size, as it
+ * can happen e.g. near the end of a file. Zero is returned on end of file
+ * (or if @count is zero),  but never otherwise.
  *
- * Convenience function for prepending a section menu item to the start
- * of @menu.  Combine g_menu_item_new_section() and g_menu_insert_item() for
- * a more flexible alternative.
+ * The returned @buffer is not a nul-terminated string, it can contain nul bytes
+ * at any position, and this function doesn't nul-terminate the @buffer.
  *
- * Since: 2.32
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+ * operation was partially finished when the operation was cancelled the
+ * partial result will be returned, without an error.
+ *
+ * On error -1 is returned and @error is set accordingly.
+ *
+ * Returns: Number of bytes read, or -1 on error, or 0 on end of file.
  */
 
 
 /**
- * g_menu_prepend_submenu:
- * @menu: a #GMenu
- * @label: (nullable): the section label, or %NULL
- * @submenu: a #GMenuModel with the items of the submenu
+ * g_input_stream_read_all:
+ * @stream: a #GInputStream.
+ * @buffer: (array length=count) (element-type guint8): a buffer to
+ *     read data into (which should be at least count bytes long).
+ * @count: the number of bytes that will be read from the stream
+ * @bytes_read: (out): location to store the number of bytes that was read from the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Convenience function for prepending a submenu menu item to the start
- * of @menu.  Combine g_menu_item_new_submenu() and g_menu_insert_item() for
- * a more flexible alternative.
+ * Tries to read @count bytes from the stream into the buffer starting at
+ * @buffer. Will block during this read.
  *
- * Since: 2.32
+ * This function is similar to g_input_stream_read(), except it tries to
+ * read as many bytes as requested, only stopping on an error or end of stream.
+ *
+ * On a successful read of @count bytes, or if we reached the end of the
+ * stream,  %TRUE is returned, and @bytes_read is set to the number of bytes
+ * read into @buffer.
+ *
+ * If there is an error during the operation %FALSE is returned and @error
+ * is set to indicate the error status.
+ *
+ * As a special exception to the normal conventions for functions that
+ * use #GError, if this function returns %FALSE (and sets @error) then
+ * @bytes_read will be set to the number of bytes that were successfully
+ * read before the error was encountered.  This functionality is only
+ * available from C.  If you need it from another language then you must
+ * write your own loop around g_input_stream_read().
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error
  */
 
 
 /**
- * g_menu_remove:
- * @menu: a #GMenu
- * @position: the position of the item to remove
+ * g_input_stream_read_all_async:
+ * @stream: A #GInputStream
+ * @buffer: (array length=count) (element-type guint8): a buffer to
+ *     read data into (which should be at least count bytes long)
+ * @count: the number of bytes that will be read from the stream
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Removes an item from the menu.
+ * Request an asynchronous read of @count bytes from the stream into the
+ * buffer starting at @buffer.
  *
- * @position gives the index of the item to remove.
+ * This is the asynchronous equivalent of g_input_stream_read_all().
  *
- * It is an error if position is not in range the range from 0 to one
- * less than the number of items in the menu.
+ * Call g_input_stream_read_all_finish() to collect the result.
  *
- * It is not possible to remove items by identity since items are added
- * to the menu simply by copying their links and attributes (ie:
- * identity of the item itself is not preserved).
+ * Any outstanding I/O request with higher priority (lower numerical
+ * value) will be executed before an outstanding request with lower
+ * priority. Default priority is %G_PRIORITY_DEFAULT.
  *
- * Since: 2.32
+ * Since: 2.44
  */
 
 
 /**
- * g_menu_remove_all:
- * @menu: a #GMenu
+ * g_input_stream_read_all_finish:
+ * @stream: a #GInputStream
+ * @result: a #GAsyncResult
+ * @bytes_read: (out): location to store the number of bytes that was read from the stream
+ * @error: a #GError location to store the error occurring, or %NULL to ignore
  *
- * Removes all items in the menu.
+ * Finishes an asynchronous stream read operation started with
+ * g_input_stream_read_all_async().
  *
- * Since: 2.38
+ * As a special exception to the normal conventions for functions that
+ * use #GError, if this function returns %FALSE (and sets @error) then
+ * @bytes_read will be set to the number of bytes that were successfully
+ * read before the error was encountered.  This functionality is only
+ * available from C.  If you need it from another language then you must
+ * write your own loop around g_input_stream_read_async().
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error
+ * Since: 2.44
  */
 
 
 /**
- * g_mount_can_eject:
- * @mount: a #GMount.
+ * g_input_stream_read_async:
+ * @stream: A #GInputStream.
+ * @buffer: (array length=count) (element-type guint8): a buffer to
+ *     read data into (which should be at least count bytes long).
+ * @count: the number of bytes that will be read from the stream
+ * @io_priority: the [I/O priority][io-priority]
+ * of the request.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Checks if @mount can be ejected.
+ * Request an asynchronous read of @count bytes from the stream into the buffer
+ * starting at @buffer. When the operation is finished @callback will be called.
+ * You can then call g_input_stream_read_finish() to get the result of the
+ * operation.
  *
- * Returns: %TRUE if the @mount can be ejected.
+ * During an async request no other sync and async calls are allowed on @stream, and will
+ * result in %G_IO_ERROR_PENDING errors.
+ *
+ * A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+ *
+ * On success, the number of bytes read into the buffer will be passed to the
+ * callback. It is not an error if this is not the same as the requested size, as it
+ * can happen e.g. near the end of a file, but generally we try to read
+ * as many bytes as requested. Zero is returned on end of file
+ * (or if @count is zero),  but never otherwise.
+ *
+ * Any outstanding i/o request with higher priority (lower numerical value) will
+ * be executed before an outstanding request with lower priority. Default
+ * priority is %G_PRIORITY_DEFAULT.
+ *
+ * The asynchronous 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.
  */
 
 
 /**
- * g_mount_can_unmount:
- * @mount: a #GMount.
+ * g_input_stream_read_bytes:
+ * @stream: a #GInputStream.
+ * @count: maximum number of bytes that will be read from the stream. Common
+ * values include 4096 and 8192.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Checks if @mount can be unmounted.
+ * Like g_input_stream_read(), this tries to read @count bytes from
+ * the stream in a blocking fashion. However, rather than reading into
+ * a user-supplied buffer, this will create a new #GBytes containing
+ * the data that was read. This may be easier to use from language
+ * bindings.
  *
- * Returns: %TRUE if the @mount can be unmounted.
+ * If count is zero, returns a zero-length #GBytes and does nothing. A
+ * value of @count larger than %G_MAXSSIZE will cause a
+ * %G_IO_ERROR_INVALID_ARGUMENT error.
+ *
+ * On success, a new #GBytes is returned. It is not an error if the
+ * size of this object is not the same as the requested size, as it
+ * can happen e.g. near the end of a file. A zero-length #GBytes is
+ * returned on end of file (or if @count is zero), but never
+ * otherwise.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+ * operation was partially finished when the operation was cancelled the
+ * partial result will be returned, without an error.
+ *
+ * On error %NULL is returned and @error is set accordingly.
+ *
+ * Returns: (transfer full): a new #GBytes, or %NULL on error
+ * Since: 2.34
  */
 
 
 /**
- * g_mount_eject:
- * @mount: a #GMount.
- * @flags: flags affecting the unmount if required for eject
+ * g_input_stream_read_bytes_async:
+ * @stream: A #GInputStream.
+ * @count: the number of bytes that will be read from the stream
+ * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data passed to @callback.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Ejects a mount. This is an asynchronous operation, and is
- * finished by calling g_mount_eject_finish() with the @mount
- * and #GAsyncResult data returned in the @callback.
+ * Request an asynchronous read of @count bytes from the stream into a
+ * new #GBytes. When the operation is finished @callback will be
+ * called. You can then call g_input_stream_read_bytes_finish() to get the
+ * result of the operation.
  *
- * Deprecated: 2.22: Use g_mount_eject_with_operation() instead.
+ * During an async request no other sync and async calls are allowed
+ * on @stream, and will result in %G_IO_ERROR_PENDING errors.
+ *
+ * A value of @count larger than %G_MAXSSIZE will cause a
+ * %G_IO_ERROR_INVALID_ARGUMENT error.
+ *
+ * On success, the new #GBytes will be passed to the callback. It is
+ * not an error if this is smaller than the requested size, as it can
+ * happen e.g. near the end of a file, but generally we try to read as
+ * many bytes as requested. Zero is returned on end of file (or if
+ * @count is zero), but never otherwise.
+ *
+ * Any outstanding I/O request with higher priority (lower numerical
+ * value) will be executed before an outstanding request with lower
+ * priority. Default priority is %G_PRIORITY_DEFAULT.
+ *
+ * Since: 2.34
  */
 
 
 /**
- * g_mount_eject_finish:
- * @mount: a #GMount.
+ * g_input_stream_read_bytes_finish:
+ * @stream: a #GInputStream.
  * @result: a #GAsyncResult.
  * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ *   ignore.
  *
- * Finishes ejecting a mount. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Finishes an asynchronous stream read-into-#GBytes operation.
  *
- * Returns: %TRUE if the mount was successfully ejected. %FALSE otherwise.
- * Deprecated: 2.22: Use g_mount_eject_with_operation_finish() instead.
+ * Returns: (transfer full): the newly-allocated #GBytes, or %NULL on error
+ * Since: 2.34
  */
 
 
 /**
- * g_mount_eject_with_operation:
- * @mount: a #GMount.
- * @flags: flags affecting the unmount if required for eject
- * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
- *     user interaction.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data passed to @callback.
+ * g_input_stream_read_finish:
+ * @stream: a #GInputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Ejects a mount. This is an asynchronous operation, and is
- * finished by calling g_mount_eject_with_operation_finish() with the @mount
- * and #GAsyncResult data returned in the @callback.
+ * Finishes an asynchronous stream read operation.
  *
- * Since: 2.22
+ * Returns: number of bytes read in, or -1 on error, or 0 on end of file.
  */
 
 
 /**
- * g_mount_eject_with_operation_finish:
- * @mount: a #GMount.
- * @result: a #GAsyncResult.
+ * g_input_stream_set_pending:
+ * @stream: input stream
  * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ * ignore.
  *
- * Finishes ejecting a mount. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Sets @stream to have actions pending. If the pending flag is
+ * already set or @stream is closed, it will return %FALSE and set
+ * @error.
  *
- * Returns: %TRUE if the mount was successfully ejected. %FALSE otherwise.
- * Since: 2.22
+ * Returns: %TRUE if pending was previously unset and is now set.
  */
 
 
 /**
- * g_mount_get_default_location:
- * @mount: a #GMount.
+ * g_input_stream_skip:
+ * @stream: a #GInputStream.
+ * @count: the number of bytes that will be skipped from the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Gets the default location of @mount. The default location of the given
- * @mount is a path that reflects the main entry point for the user (e.g.
- * the home directory, or the root of the volume).
+ * Tries to skip @count bytes from the stream. Will block during the operation.
  *
- * Returns: (transfer full): a #GFile.
- *      The returned object should be unreffed with
- *      g_object_unref() when no longer needed.
+ * This is identical to g_input_stream_read(), from a behaviour standpoint,
+ * but the bytes that are skipped are not returned to the user. Some
+ * streams have an implementation that is more efficient than reading the data.
+ *
+ * This function is optional for inherited classes, as the default implementation
+ * emulates it using read.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+ * operation was partially finished when the operation was cancelled the
+ * partial result will be returned, without an error.
+ *
+ * Returns: Number of bytes skipped, or -1 on error
  */
 
 
 /**
- * g_mount_get_drive:
- * @mount: a #GMount.
+ * g_input_stream_skip_async:
+ * @stream: A #GInputStream.
+ * @count: the number of bytes that will be skipped from the stream
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Gets the drive for the @mount.
+ * Request an asynchronous skip of @count bytes from the stream.
+ * When the operation is finished @callback will be called.
+ * You can then call g_input_stream_skip_finish() to get the result
+ * of the operation.
  *
- * This is a convenience method for getting the #GVolume and then
- * using that object to get the #GDrive.
+ * During an async request no other sync and async calls are allowed,
+ * and will result in %G_IO_ERROR_PENDING errors.
  *
- * Returns: (transfer full) (nullable): a #GDrive or %NULL if @mount is not
- *      associated with a volume or a drive.
- *      The returned object should be unreffed with
- *      g_object_unref() when no longer needed.
+ * A value of @count larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
+ *
+ * On success, the number of bytes skipped will be passed to the callback.
+ * It is not an error if this is not the same as the requested size, as it
+ * can happen e.g. near the end of a file, but generally we try to skip
+ * as many bytes as requested. Zero is returned on end of file
+ * (or if @count is zero), but never otherwise.
+ *
+ * Any outstanding i/o request with higher priority (lower numerical value)
+ * will be executed before an outstanding request with lower priority.
+ * Default priority is %G_PRIORITY_DEFAULT.
+ *
+ * The asynchronous 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.
  */
 
 
 /**
- * g_mount_get_icon:
- * @mount: a #GMount.
+ * g_input_stream_skip_finish:
+ * @stream: a #GInputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Gets the icon for @mount.
+ * Finishes a stream skip operation.
  *
- * Returns: (transfer full): a #GIcon.
- *      The returned object should be unreffed with
- *      g_object_unref() when no longer needed.
+ * Returns: the size of the bytes skipped, or %-1 on error.
  */
 
 
 /**
- * g_mount_get_name:
- * @mount: a #GMount.
+ * g_io_error_from_errno:
+ * @err_no: Error number as defined in errno.h.
  *
- * Gets the name of @mount.
+ * Converts errno.h error codes into GIO error codes. The fallback
+ * value %G_IO_ERROR_FAILED is returned for error codes not currently
+ * handled (but note that future GLib releases may return a more
+ * specific value instead).
  *
- * Returns: the name for the given @mount.
- *     The returned string should be freed with g_free()
- *     when no longer needed.
+ * As %errno is global and may be modified by intermediate function
+ * calls, you should save its value as soon as the call which sets it
+ *
+ * Returns: #GIOErrorEnum value for the given errno.h error number.
  */
 
 
 /**
- * g_mount_get_root:
- * @mount: a #GMount.
+ * g_io_error_from_win32_error:
+ * @error_code: Windows error number.
  *
- * Gets the root directory on @mount.
+ * Converts some common error codes (as returned from GetLastError()
+ * or WSAGetLastError()) into GIO error codes. The fallback value
+ * %G_IO_ERROR_FAILED is returned for error codes not currently
+ * handled (but note that future GLib releases may return a more
+ * specific value instead).
  *
- * Returns: (transfer full): a #GFile.
- *      The returned object should be unreffed with
- *      g_object_unref() when no longer needed.
+ * You can use g_win32_error_message() to get a localized string
+ * corresponding to @error_code. (But note that unlike g_strerror(),
+ * g_win32_error_message() returns a string that must be freed.)
+ *
+ * Returns: #GIOErrorEnum value for the given error number.
+ * Since: 2.26
  */
 
 
 /**
- * g_mount_get_sort_key:
- * @mount: A #GMount.
+ * g_io_error_quark:
  *
- * Gets the sort key for @mount, if any.
+ * Gets the GIO Error Quark.
  *
- * Returns: (nullable): Sorting key for @mount or %NULL if no such key is available.
- * Since: 2.32
+ * Returns: a #GQuark.
  */
 
 
 /**
- * g_mount_get_symbolic_icon:
- * @mount: a #GMount.
+ * g_io_extension_get_name:
+ * @extension: a #GIOExtension
  *
- * Gets the symbolic icon for @mount.
+ * Gets the name under which @extension was registered.
  *
- * Returns: (transfer full): a #GIcon.
- *      The returned object should be unreffed with
- *      g_object_unref() when no longer needed.
- * Since: 2.34
+ * Note that the same type may be registered as extension
+ * for multiple extension points, under different names.
+ *
+ * Returns: the name of @extension.
  */
 
 
 /**
- * g_mount_get_uuid:
- * @mount: a #GMount.
+ * g_io_extension_get_priority:
+ * @extension: a #GIOExtension
  *
- * Gets the UUID for the @mount. The reference is typically based on
- * the file system UUID for the mount in question and should be
- * considered an opaque string. Returns %NULL if there is no UUID
- * available.
+ * Gets the priority with which @extension was registered.
  *
- * Returns: (nullable) (transfer full): the UUID for @mount or %NULL if no UUID
- *     can be computed.
- *     The returned string should be freed with g_free()
- *     when no longer needed.
+ * Returns: the priority of @extension
  */
 
 
 /**
- * g_mount_get_volume:
- * @mount: a #GMount.
+ * g_io_extension_get_type:
+ * @extension: a #GIOExtension
  *
- * Gets the volume for the @mount.
+ * Gets the type associated with @extension.
  *
- * Returns: (transfer full) (nullable): a #GVolume or %NULL if @mount is not
- *      associated with a volume.
- *      The returned object should be unreffed with
- *      g_object_unref() when no longer needed.
+ * Returns: the type of @extension
  */
 
 
 /**
- * g_mount_guess_content_type:
- * @mount: a #GMount
- * @force_rescan: Whether to force a rescan of the content.
- *     Otherwise a cached result will be used if available
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: a #GAsyncReadyCallback
- * @user_data: user data passed to @callback
- *
- * Tries to guess the type of content stored on @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
- * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
- * specification for more on x-content types.
+ * g_io_extension_point_get_extension_by_name:
+ * @extension_point: a #GIOExtensionPoint
+ * @name: the name of the extension to get
  *
- * This is an asynchronous operation (see
- * g_mount_guess_content_type_sync() for the synchronous version), and
- * is finished by calling g_mount_guess_content_type_finish() with the
- * @mount and #GAsyncResult data returned in the @callback.
+ * Finds a #GIOExtension for an extension point by name.
  *
- * Since: 2.18
+ * Returns: (transfer none): the #GIOExtension for @extension_point that has the
+ *    given name, or %NULL if there is no extension with that name
  */
 
 
 /**
- * g_mount_guess_content_type_finish:
- * @mount: a #GMount
- * @result: a #GAsyncResult
- * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore
+ * g_io_extension_point_get_extensions:
+ * @extension_point: a #GIOExtensionPoint
  *
- * Finishes guessing content types of @mount. If any errors occurred
- * during the operation, @error will be set to contain the errors and
- * %FALSE will be returned. In particular, you may get an
- * %G_IO_ERROR_NOT_SUPPORTED if the mount does not support content
- * guessing.
+ * Gets a list of all extensions that implement this extension point.
+ * The list is sorted by priority, beginning with the highest priority.
  *
- * Returns: (transfer full) (element-type utf8): a %NULL-terminated array of content types or %NULL on error.
- *     Caller should free this array with g_strfreev() when done with it.
- * Since: 2.18
+ * Returns: (element-type GIOExtension) (transfer none): a #GList of
+ *     #GIOExtensions. The list is owned by GIO and should not be
+ *     modified.
  */
 
 
 /**
- * g_mount_guess_content_type_sync:
- * @mount: a #GMount
- * @force_rescan: Whether to force a rescan of the content.
- *     Otherwise a cached result will be used if available
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore
- *
- * Tries to guess the type of content stored on @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
- * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
- * specification for more on x-content types.
+ * g_io_extension_point_get_required_type:
+ * @extension_point: a #GIOExtensionPoint
  *
- * This is an synchronous operation and as such may block doing IO;
- * see g_mount_guess_content_type() for the asynchronous version.
+ * Gets the required type for @extension_point.
  *
- * Returns: (transfer full) (element-type utf8): a %NULL-terminated array of content types or %NULL on error.
- *     Caller should free this array with g_strfreev() when done with it.
- * Since: 2.18
+ * Returns: the #GType that all implementations must have,
+ *     or #G_TYPE_INVALID if the extension point has no required type
  */
 
 
 /**
- * g_mount_is_shadowed:
- * @mount: A #GMount.
- *
- * Determines if @mount is shadowed. Applications or libraries should
- * avoid displaying @mount in the user interface if it is shadowed.
- *
- * A mount is said to be shadowed if there exists one or more user
- * visible objects (currently #GMount objects) with a root that is
- * inside the root of @mount.
+ * g_io_extension_point_implement:
+ * @extension_point_name: the name of the extension point
+ * @type: the #GType to register as extension
+ * @extension_name: the name for the extension
+ * @priority: the priority for the extension
  *
- * One application of shadow mounts is when exposing a single file
- * system that is used to address several logical volumes. In this
- * situation, a #GVolumeMonitor implementation would create two
- * #GVolume objects (for example, one for the camera functionality of
- * the device and one for a SD card reader on the device) with
- * activation URIs `gphoto2://[usb:001,002]/store1/`
- * and `gphoto2://[usb:001,002]/store2/`. When the
- * underlying mount (with root
- * `gphoto2://[usb:001,002]/`) is mounted, said
- * #GVolumeMonitor implementation would create two #GMount objects
- * (each with their root matching the corresponding volume activation
- * root) that would shadow the original mount.
+ * Registers @type as extension for the extension point with name
+ * @extension_point_name.
  *
- * The proxy monitor in GVfs 2.26 and later, automatically creates and
- * manage shadow mounts (and shadows the underlying mount) if the
- * activation root on a #GVolume is set.
+ * If @type has already been registered as an extension for this
+ * extension point, the existing #GIOExtension object is returned.
  *
- * Returns: %TRUE if @mount is shadowed.
- * Since: 2.20
+ * Returns: (transfer none): a #GIOExtension object for #GType
  */
 
 
 /**
- * g_mount_operation_get_anonymous:
- * @op: a #GMountOperation.
+ * g_io_extension_point_lookup:
+ * @name: the name of the extension point
  *
- * Check to see whether the mount operation is being used
- * for an anonymous user.
+ * Looks up an existing extension point.
  *
- * Returns: %TRUE if mount operation is anonymous.
+ * Returns: (transfer none): the #GIOExtensionPoint, or %NULL if there
+ *    is no registered extension point with the given name.
  */
 
 
 /**
- * g_mount_operation_get_choice:
- * @op: a #GMountOperation.
+ * g_io_extension_point_register:
+ * @name: The name of the extension point
  *
- * Gets a choice from the mount operation.
+ * Registers an extension point.
  *
- * Returns: an integer containing an index of the user's choice from
- * the choice's list, or %0.
+ * Returns: (transfer none): the new #GIOExtensionPoint. This object is
+ *    owned by GIO and should not be freed.
  */
 
 
 /**
- * g_mount_operation_get_domain:
- * @op: a #GMountOperation.
- *
- * Gets the domain of the mount operation.
+ * g_io_extension_point_set_required_type:
+ * @extension_point: a #GIOExtensionPoint
+ * @type: the #GType to require
  *
- * Returns: a string set to the domain.
+ * Sets the required type for @extension_point to @type.
+ * All implementations must henceforth have this type.
  */
 
 
 /**
- * g_mount_operation_get_is_tcrypt_hidden_volume:
- * @op: a #GMountOperation.
+ * g_io_extension_ref_class:
+ * @extension: a #GIOExtension
  *
- * Check to see whether the mount operation is being used
- * for a TCRYPT hidden volume.
+ * Gets a reference to the class for the type that is
+ * associated with @extension.
  *
- * Returns: %TRUE if mount operation is for hidden volume.
- * Since: 2.58
+ * Returns: (transfer full): the #GTypeClass for the type of @extension
  */
 
 
 /**
- * g_mount_operation_get_is_tcrypt_system_volume:
- * @op: a #GMountOperation.
+ * g_io_module_new:
+ * @filename: (type filename): filename of the shared library module.
  *
- * Check to see whether the mount operation is being used
- * for a TCRYPT system volume.
+ * Creates a new GIOModule that will load the specific
+ * shared library when in use.
  *
- * Returns: %TRUE if mount operation is for system volume.
- * Since: 2.58
+ * Returns: a #GIOModule from given @filename,
+ * or %NULL on error.
  */
 
 
 /**
- * g_mount_operation_get_password:
- * @op: a #GMountOperation.
+ * g_io_module_scope_block:
+ * @scope: a module loading scope
+ * @basename: the basename to block
  *
- * Gets a password from the mount operation.
+ * Block modules with the given @basename from being loaded when
+ * this scope is used with g_io_modules_scan_all_in_directory_with_scope()
+ * or g_io_modules_load_all_in_directory_with_scope().
  *
- * Returns: a string containing the password within @op.
+ * Since: 2.30
  */
 
 
 /**
- * g_mount_operation_get_password_save:
- * @op: a #GMountOperation.
+ * g_io_module_scope_free:
+ * @scope: a module loading scope
  *
- * Gets the state of saving passwords for the mount operation.
+ * Free a module scope.
  *
- * Returns: a #GPasswordSave flag.
+ * Since: 2.30
  */
 
 
 /**
- * g_mount_operation_get_pim:
- * @op: a #GMountOperation.
+ * g_io_module_scope_new:
+ * @flags: flags for the new scope
  *
- * Gets a PIM from the mount operation.
+ * Create a new scope for loading of IO modules. A scope can be used for
+ * blocking duplicate modules, or blocking a module you don't want to load.
  *
- * Returns: The VeraCrypt PIM within @op.
- * Since: 2.58
+ * Specify the %G_IO_MODULE_SCOPE_BLOCK_DUPLICATES flag to block modules
+ * which have the same base name as a module that has already been seen
+ * in this scope.
+ *
+ * Returns: (transfer full): the new module scope
+ * Since: 2.30
  */
 
 
 /**
- * g_mount_operation_get_username:
- * @op: a #GMountOperation.
+ * g_io_modules_load_all_in_directory:
+ * @dirname: (type filename): pathname for a directory containing modules
+ *     to load.
  *
- * Get the user name from the mount operation.
+ * Loads all the modules in the specified directory.
  *
- * Returns: a string containing the user name.
+ * If don't require all modules to be initialized (and thus registering
+ * all gtypes) then you can use g_io_modules_scan_all_in_directory()
+ * which allows delayed/lazy loading of modules.
+ *
+ * Returns: (element-type GIOModule) (transfer full): a list of #GIOModules loaded
+ *      from the directory,
+ *      All the modules are loaded into memory, if you want to
+ *      unload them (enabling on-demand loading) you must call
+ *      g_type_module_unuse() on all the modules. Free the list
+ *      with g_list_free().
  */
 
 
 /**
- * g_mount_operation_new:
+ * g_io_modules_load_all_in_directory_with_scope:
+ * @dirname: (type filename): pathname for a directory containing modules
+ *     to load.
+ * @scope: a scope to use when scanning the modules.
  *
- * Creates a new mount operation.
+ * Loads all the modules in the specified directory.
  *
- * Returns: a #GMountOperation.
+ * If don't require all modules to be initialized (and thus registering
+ * all gtypes) then you can use g_io_modules_scan_all_in_directory()
+ * which allows delayed/lazy loading of modules.
+ *
+ * Returns: (element-type GIOModule) (transfer full): a list of #GIOModules loaded
+ *      from the directory,
+ *      All the modules are loaded into memory, if you want to
+ *      unload them (enabling on-demand loading) you must call
+ *      g_type_module_unuse() on all the modules. Free the list
+ *      with g_list_free().
+ * Since: 2.30
  */
 
 
 /**
- * g_mount_operation_reply:
- * @op: a #GMountOperation
- * @result: a #GMountOperationResult
+ * g_io_modules_scan_all_in_directory:
+ * @dirname: (type filename): pathname for a directory containing modules
+ *     to scan.
  *
- * Emits the #GMountOperation::reply signal.
+ * Scans all the modules in the specified directory, ensuring that
+ * any extension point implemented by a module is registered.
+ *
+ * This may not actually load and initialize all the types in each
+ * module, some modules may be lazily loaded and initialized when
+ * an extension point it implementes is used with e.g.
+ * g_io_extension_point_get_extensions() or
+ * g_io_extension_point_get_extension_by_name().
+ *
+ * If you need to guarantee that all types are loaded in all the modules,
+ * use g_io_modules_load_all_in_directory().
+ *
+ * Since: 2.24
  */
 
 
 /**
- * g_mount_operation_set_anonymous:
- * @op: a #GMountOperation.
- * @anonymous: boolean value.
+ * g_io_modules_scan_all_in_directory_with_scope:
+ * @dirname: (type filename): pathname for a directory containing modules
+ *     to scan.
+ * @scope: a scope to use when scanning the modules
  *
- * Sets the mount operation to use an anonymous user if @anonymous is %TRUE.
+ * Scans all the modules in the specified directory, ensuring that
+ * any extension point implemented by a module is registered.
+ *
+ * This may not actually load and initialize all the types in each
+ * module, some modules may be lazily loaded and initialized when
+ * an extension point it implementes is used with e.g.
+ * g_io_extension_point_get_extensions() or
+ * g_io_extension_point_get_extension_by_name().
+ *
+ * If you need to guarantee that all types are loaded in all the modules,
+ * use g_io_modules_load_all_in_directory().
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_mount_operation_set_choice:
- * @op: a #GMountOperation.
- * @choice: an integer.
+ * g_io_scheduler_cancel_all_jobs:
  *
- * Sets a default choice for the mount operation.
+ * 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.
  */
 
 
 /**
- * g_mount_operation_set_domain:
- * @op: a #GMountOperation.
- * @domain: the domain to set.
+ * g_io_scheduler_job_send_to_mainloop:
+ * @job: a #GIOSchedulerJob
+ * @func: a #GSourceFunc callback that will be called in the original thread
+ * @user_data: data to pass to @func
+ * @notify: (nullable): a #GDestroyNotify for @user_data, or %NULL
  *
- * Sets the mount operation's domain.
+ * 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).
+ *
+ * Returns: The return value of @func
+ * Deprecated: Use g_main_context_invoke().
  */
 
 
 /**
- * g_mount_operation_set_is_tcrypt_hidden_volume:
- * @op: a #GMountOperation.
- * @hidden_volume: boolean value.
+ * g_io_scheduler_job_send_to_mainloop_async:
+ * @job: a #GIOSchedulerJob
+ * @func: a #GSourceFunc callback that will be called in the original thread
+ * @user_data: data to pass to @func
+ * @notify: (nullable): a #GDestroyNotify for @user_data, or %NULL
  *
- * Sets the mount operation to use a hidden volume if @hidden_volume is %TRUE.
+ * Used from an I/O job to send a callback to be run asynchronously in
+ * the thread that the job was started from. The callback will be run
+ * when the main loop is available, but at that time the I/O job might
+ * have finished. The return value from the callback is ignored.
  *
- * Since: 2.58
+ * Note that if you are passing the @user_data from g_io_scheduler_push_job()
+ * 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().
  */
 
 
 /**
- * g_mount_operation_set_is_tcrypt_system_volume:
- * @op: a #GMountOperation.
- * @system_volume: boolean value.
+ * g_io_scheduler_push_job:
+ * @job_func: a #GIOSchedulerJobFunc.
+ * @user_data: data to pass to @job_func
+ * @notify: (nullable): a #GDestroyNotify for @user_data, or %NULL
+ * @io_priority: the [I/O priority][io-priority]
+ * of the request.
+ * @cancellable: optional #GCancellable object, %NULL to ignore.
  *
- * Sets the mount operation to use a system volume if @system_volume is %TRUE.
+ * Schedules the I/O job to run in another thread.
  *
- * Since: 2.58
+ * @notify will be called on @user_data after @job_func has returned,
+ * regardless whether the job was cancelled or has run to completion.
+ *
+ * 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()
  */
 
 
 /**
- * g_mount_operation_set_password:
- * @op: a #GMountOperation.
- * @password: password to set.
+ * g_io_stream_clear_pending:
+ * @stream: a #GIOStream
  *
- * Sets the mount operation's password to @password.
+ * Clears the pending flag on @stream.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_operation_set_password_save:
- * @op: a #GMountOperation.
- * @save: a set of #GPasswordSave flags.
+ * g_io_stream_close:
+ * @stream: a #GIOStream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Sets the state of saving passwords for the mount operation.
+ * Closes the stream, releasing resources related to it. This will also
+ * close the individual input and output streams, if they are not already
+ * closed.
+ *
+ * Once the stream is closed, all other operations will return
+ * %G_IO_ERROR_CLOSED. Closing a stream multiple times will not
+ * return an error.
+ *
+ * Closing a stream will automatically flush any outstanding buffers
+ * in the stream.
+ *
+ * Streams will be automatically closed when the last reference
+ * is dropped, but you might want to call this function to make sure
+ * resources are released as early as possible.
+ *
+ * Some streams might keep the backing store of the stream (e.g. a file
+ * descriptor) open after the stream is closed. See the documentation for
+ * the individual stream for details.
+ *
+ * On failure the first error that happened will be reported, but the
+ * close operation will finish as much as possible. A stream that failed
+ * to close will still return %G_IO_ERROR_CLOSED for all operations.
+ * Still, it is important to check and report the error to the user,
+ * otherwise there might be a loss of data as all data might not be written.
+ *
+ * If @cancellable is not NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Cancelling a close will still leave the stream closed, but some streams
+ * can use a faster close that doesn't block to e.g. check errors.
+ *
+ * The default implementation of this method just calls close on the
+ * individual input/output streams.
+ *
+ * Returns: %TRUE on success, %FALSE on failure
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_operation_set_pim:
- * @op: a #GMountOperation.
- * @pim: an unsigned integer.
+ * g_io_stream_close_async:
+ * @stream: a #GIOStream
+ * @io_priority: the io priority of the request
+ * @cancellable: (nullable): optional cancellable object
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Sets the mount operation's PIM to @pim.
+ * Requests an asynchronous close of the stream, releasing resources
+ * related to it. When the operation is finished @callback will be
+ * called. You can then call g_io_stream_close_finish() to get
+ * the result of the operation.
+ *
+ * For behaviour details see g_io_stream_close().
+ *
+ * The asynchronous 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.
  *
- * Since: 2.58
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_operation_set_username:
- * @op: a #GMountOperation.
- * @username: input username.
+ * g_io_stream_close_finish:
+ * @stream: a #GIOStream
+ * @result: a #GAsyncResult
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *    ignore
  *
- * Sets the user name within @op to @username.
+ * Closes a stream.
+ *
+ * Returns: %TRUE if stream was successfully closed, %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_remount:
- * @mount: a #GMount.
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
- *     user interaction.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data passed to @callback.
+ * g_io_stream_get_input_stream:
+ * @stream: a #GIOStream
  *
- * Remounts a mount. This is an asynchronous operation, and is
- * finished by calling g_mount_remount_finish() with the @mount
- * and #GAsyncResults data returned in the @callback.
+ * Gets the input stream for this object. This is used
+ * for reading.
  *
- * Remounting is useful when some setting affecting the operation
- * of the volume has been changed, as these 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.
+ * Returns: (transfer none): a #GInputStream, owned by the #GIOStream.
+ * Do not free.
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_remount_finish:
- * @mount: a #GMount.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ * g_io_stream_get_output_stream:
+ * @stream: a #GIOStream
  *
- * Finishes remounting a mount. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Gets the output stream for this object. This is used for
+ * writing.
  *
- * Returns: %TRUE if the mount was successfully remounted. %FALSE otherwise.
+ * Returns: (transfer none): a #GOutputStream, owned by the #GIOStream.
+ * Do not free.
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_shadow:
- * @mount: A #GMount.
+ * g_io_stream_has_pending:
+ * @stream: a #GIOStream
  *
- * Increments the shadow count on @mount. Usually used by
- * #GVolumeMonitor implementations when creating a shadow mount for
- * @mount, see g_mount_is_shadowed() for more information. The caller
- * will need to emit the #GMount::changed signal on @mount manually.
+ * Checks if a stream has pending actions.
  *
- * Since: 2.20
+ * Returns: %TRUE if @stream has pending actions.
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_unmount:
- * @mount: a #GMount.
- * @flags: flags affecting the operation
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data passed to @callback.
+ * g_io_stream_is_closed:
+ * @stream: a #GIOStream
  *
- * Unmounts a mount. This is an asynchronous operation, and is
- * finished by calling g_mount_unmount_finish() with the @mount
- * and #GAsyncResult data returned in the @callback.
+ * Checks if a stream is closed.
  *
- * Deprecated: 2.22: Use g_mount_unmount_with_operation() instead.
+ * Returns: %TRUE if the stream is closed.
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_unmount_finish:
- * @mount: a #GMount.
- * @result: a #GAsyncResult.
+ * g_io_stream_set_pending:
+ * @stream: a #GIOStream
  * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ *     ignore
  *
- * Finishes unmounting a mount. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Sets @stream to have actions pending. If the pending flag is
+ * already set or @stream is closed, it will return %FALSE and set
+ * @error.
  *
- * Returns: %TRUE if the mount was successfully unmounted. %FALSE otherwise.
- * Deprecated: 2.22: Use g_mount_unmount_with_operation_finish() instead.
+ * Returns: %TRUE if pending was previously unset and is now set.
+ * Since: 2.22
  */
 
 
 /**
- * g_mount_unmount_with_operation:
- * @mount: a #GMount.
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
- *     user interaction.
+ * g_io_stream_splice_async:
+ * @stream1: a #GIOStream.
+ * @stream2: a #GIOStream.
+ * @flags: a set of #GIOStreamSpliceFlags.
+ * @io_priority: the io priority of the request.
  * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
- * @user_data: user data passed to @callback.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
  *
- * Unmounts a mount. This is an asynchronous operation, and is
- * finished by calling g_mount_unmount_with_operation_finish() with the @mount
- * and #GAsyncResult data returned in the @callback.
+ * Asyncronously splice the output stream of @stream1 to the input stream of
+ * @stream2, and splice the output stream of @stream2 to the input stream of
+ * @stream1.
  *
- * Since: 2.22
+ * When the operation is finished @callback will be called.
+ * You can then call g_io_stream_splice_finish() to get the
+ * result of the operation.
+ *
+ * Since: 2.28
  */
 
 
 /**
- * g_mount_unmount_with_operation_finish:
- * @mount: a #GMount.
+ * g_io_stream_splice_finish:
  * @result: a #GAsyncResult.
  * @error: a #GError location to store the error occurring, or %NULL to
- *     ignore.
+ * ignore.
  *
- * Finishes unmounting a mount. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Finishes an asynchronous io stream splice operation.
  *
- * Returns: %TRUE if the mount was successfully unmounted. %FALSE otherwise.
- * Since: 2.22
+ * Returns: %TRUE on success, %FALSE otherwise.
+ * Since: 2.28
  */
 
 
 /**
- * g_mount_unshadow:
- * @mount: A #GMount.
+ * g_keyfile_settings_backend_new:
+ * @filename: the filename of the keyfile
+ * @root_path: the path under which all settings keys appear
+ * @root_group: (nullable): the group name corresponding to
+ *              @root_path, or %NULL
  *
- * Decrements the shadow count on @mount. Usually used by
- * #GVolumeMonitor implementations when destroying a shadow mount for
- * @mount, see g_mount_is_shadowed() for more information. The caller
- * will need to emit the #GMount::changed signal on @mount manually.
+ * Creates a keyfile-backed #GSettingsBackend.
  *
- * Since: 2.20
+ * The filename of the keyfile to use is given by @filename.
+ *
+ * All settings read to or written from the backend must fall under the
+ * path given in @root_path (which must start and end with a slash and
+ * not contain two consecutive slashes).  @root_path may be "/".
+ *
+ * If @root_group is non-%NULL then it specifies the name of the keyfile
+ * group used for keys that are written directly below @root_path.  For
+ * example, if @root_path is "/apps/example/" and @root_group is
+ * "toplevel", then settings the key "/apps/example/enabled" to a value
+ * of %TRUE will cause the following to appear in the keyfile:
+ *
+ * |[
+ *   [toplevel]
+ *   enabled=true
+ * ]|
+ *
+ * If @root_group is %NULL then it is not permitted to store keys
+ * directly below the @root_path.
+ *
+ * For keys not stored directly below @root_path (ie: in a sub-path),
+ * the name of the subpath (with the final slash stripped) is used as
+ * the name of the keyfile group.  To continue the example, if
+ * "/apps/example/profiles/default/font-size" were set to
+ * 12 then the following would appear in the keyfile:
+ *
+ * |[
+ *   [profiles/default]
+ *   font-size=12
+ * ]|
+ *
+ * The backend will refuse writes (and return writability as being
+ * %FALSE) for keys outside of @root_path and, in the event that
+ * @root_group is %NULL, also for keys directly under @root_path.
+ * Writes will also be refused if the backend detects that it has the
+ * inability to rewrite the keyfile (ie: the containing directory is not
+ * writable).
+ *
+ * There is no checking done for your key namespace clashing with the
+ * syntax of the key file format.  For example, if you have '[' or ']'
+ * characters in your path names or '=' in your key names you may be in
+ * trouble.
+ *
+ * Returns: (transfer full): a keyfile-backed #GSettingsBackend
  */
 
 
 /**
- * g_native_socket_address_new:
- * @native: a native address object
- * @len: the length of @native, in bytes
+ * g_list_model_get_item: (skip)
+ * @list: a #GListModel
+ * @position: the position of the item to fetch
  *
- * Creates a new #GNativeSocketAddress for @native and @len.
+ * Get the item at @position. If @position is greater than the number of
+ * items in @list, %NULL is returned.
  *
- * Returns: a new #GNativeSocketAddress
- * Since: 2.46
+ * %NULL is never returned for an index that is smaller than the length
+ * of the list.  See g_list_model_get_n_items().
+ *
+ * Returns: (transfer full) (nullable): the item at @position.
+ * Since: 2.44
  */
 
 
 /**
- * g_network_address_get_hostname:
- * @addr: a #GNetworkAddress
+ * g_list_model_get_item_type:
+ * @list: a #GListModel
  *
- * Gets @addr's hostname. This might be either UTF-8 or ASCII-encoded,
- * depending on what @addr was created with.
+ * Gets the type of the items in @list. All items returned from
+ * g_list_model_get_type() are of that type or a subtype, or are an
+ * implementation of that interface.
  *
- * Returns: @addr's hostname
- * Since: 2.22
+ * The item type of a #GListModel can not change during the life of the
+ * model.
+ *
+ * Returns: the #GType of the items contained in @list.
+ * Since: 2.44
  */
 
 
 /**
- * g_network_address_get_port:
- * @addr: a #GNetworkAddress
+ * g_list_model_get_n_items:
+ * @list: a #GListModel
  *
- * Gets @addr's port number
+ * Gets the number of items in @list.
  *
- * Returns: @addr's port (which may be 0)
- * Since: 2.22
+ * Depending on the model implementation, calling this function may be
+ * less efficient than iterating the list with increasing values for
+ * @position until g_list_model_get_item() returns %NULL.
+ *
+ * Returns: the number of items in @list.
+ * Since: 2.44
  */
 
 
 /**
- * g_network_address_get_scheme:
- * @addr: a #GNetworkAddress
+ * g_list_model_get_object: (rename-to g_list_model_get_item)
+ * @list: a #GListModel
+ * @position: the position of the item to fetch
  *
- * Gets @addr's scheme
+ * Get the item at @position. If @position is greater than the number of
+ * items in @list, %NULL is returned.
  *
- * Returns: @addr's scheme (%NULL if not built from URI)
- * Since: 2.26
+ * %NULL is never returned for an index that is smaller than the length
+ * of the list.  See g_list_model_get_n_items().
+ *
+ * Returns: (transfer full) (nullable): the object at @position.
+ * Since: 2.44
  */
 
 
 /**
- * g_network_address_new:
- * @hostname: the hostname
- * @port: the port
+ * g_list_model_items_changed:
+ * @list: a #GListModel
+ * @position: the position at which @list changed
+ * @removed: the number of items removed
+ * @added: the number of items added
  *
- * Creates a new #GSocketConnectable for connecting to the given
- * @hostname and @port.
+ * Emits the #GListModel::items-changed signal on @list.
  *
- * Note that depending on the configuration of the machine, a
- * @hostname of `localhost` may refer to the IPv4 loopback address
- * only, or to both IPv4 and IPv6; use
- * g_network_address_new_loopback() to create a #GNetworkAddress that
- * is guaranteed to resolve to both addresses.
+ * This function should only be called by classes implementing
+ * #GListModel. It has to be called after the internal representation
+ * of @list has been updated, because handlers connected to this signal
+ * might query the new state of the list.
  *
- * Returns: (transfer full) (type GNetworkAddress): the new #GNetworkAddress
- * Since: 2.22
+ * Implementations must only make changes to the model (as visible to
+ * its consumer) in places that will not cause problems for that
+ * consumer.  For models that are driven directly by a write API (such
+ * as #GListStore), changes can be reported in response to uses of that
+ * API.  For models that represent remote data, changes should only be
+ * made from a fresh mainloop dispatch.  It is particularly not
+ * permitted to make changes in response to a call to the #GListModel
+ * consumer API.
+ *
+ * Stated another way: in general, it is assumed that code making a
+ * series of accesses to the model via the API, without returning to the
+ * mainloop, and without calling other code, will continue to view the
+ * same contents of the model.
+ *
+ * Since: 2.44
  */
 
 
 /**
- * g_network_address_new_loopback:
- * @port: the port
+ * g_list_store_append:
+ * @store: a #GListStore
+ * @item: (type GObject): the new item
  *
- * Creates a new #GSocketConnectable for connecting to the local host
- * over a loopback connection to the given @port. This is intended for
- * use in connecting to local services which may be running on IPv4 or
- * IPv6.
+ * Appends @item to @store. @item must be of type #GListStore:item-type.
  *
- * The connectable will return IPv4 and IPv6 loopback addresses,
- * regardless of how the host resolves `localhost`. By contrast,
- * g_network_address_new() will often only return an IPv4 address when
- * resolving `localhost`, and an IPv6 address for `localhost6`.
+ * This function takes a ref on @item.
  *
- * g_network_address_get_hostname() will always return `localhost` for
- * #GNetworkAddresses created with this constructor.
+ * Use g_list_store_splice() to append multiple items at the same time
+ * efficiently.
  *
- * Returns: (transfer full) (type GNetworkAddress): the new #GNetworkAddress
  * Since: 2.44
  */
 
 
 /**
- * g_network_address_parse:
- * @host_and_port: the hostname and optionally a port
- * @default_port: the default port if not in @host_and_port
- * @error: a pointer to a #GError, or %NULL
+ * g_list_store_insert:
+ * @store: a #GListStore
+ * @position: the position at which to insert the new item
+ * @item: (type GObject): the new item
  *
- * Creates a new #GSocketConnectable for connecting to the given
- * @hostname and @port. May fail and return %NULL in case
- * parsing @host_and_port fails.
+ * Inserts @item into @store at @position. @item must be of type
+ * #GListStore:item-type or derived from it. @position must be smaller
+ * than the length of the list, or equal to it to append.
  *
- * @host_and_port may be in any of a number of recognised formats; an IPv6
- * address, an IPv4 address, or a domain name (in which case a DNS
- * lookup is performed). Quoting with [] is supported for all address
- * types. A port override may be specified in the usual way with a
- * colon.
+ * This function takes a ref on @item.
  *
- * If no port is specified in @host_and_port then @default_port will be
- * used as the port number to connect to.
+ * Use g_list_store_splice() to insert multiple items at the same time
+ * efficiently.
  *
- * In general, @host_and_port is expected to be provided by the user
- * (allowing them to give the hostname, and a port override if necessary)
- * and @default_port is expected to be provided by the application.
+ * Since: 2.44
+ */
+
+
+/**
+ * g_list_store_insert_sorted:
+ * @store: a #GListStore
+ * @item: (type GObject): the new item
+ * @compare_func: (scope call): pairwise comparison function for sorting
+ * @user_data: (closure): user data for @compare_func
  *
- * (The port component of @host_and_port can also be specified as a
- * service name rather than as a numeric port, but this functionality
- * is deprecated, because it depends on the contents of /etc/services,
- * which is generally quite sparse on platforms other than Linux.)
+ * Inserts @item into @store at a position to be determined by the
+ * @compare_func.
  *
- * Returns: (transfer full) (type GNetworkAddress): the new
- *   #GNetworkAddress, or %NULL on error
- * Since: 2.22
+ * The list must already be sorted before calling this function or the
+ * result is undefined.  Usually you would approach this by only ever
+ * inserting items by way of this function.
+ *
+ * This function takes a ref on @item.
+ *
+ * Returns: the position at which @item was inserted
+ * Since: 2.44
  */
 
 
 /**
- * g_network_address_parse_uri:
- * @uri: the hostname and optionally a port
- * @default_port: The default port if none is found in the URI
- * @error: a pointer to a #GError, or %NULL
- *
- * Creates a new #GSocketConnectable for connecting to the given
- * @uri. May fail and return %NULL in case parsing @uri fails.
+ * g_list_store_new:
+ * @item_type: the #GType of items in the list
  *
- * Using this rather than g_network_address_new() or
- * g_network_address_parse() allows #GSocketClient to determine
- * when to use application-specific proxy protocols.
+ * Creates a new #GListStore with items of type @item_type. @item_type
+ * must be a subclass of #GObject.
  *
- * Returns: (transfer full) (type GNetworkAddress): the new
- *   #GNetworkAddress, or %NULL on error
- * Since: 2.26
+ * Returns: a new #GListStore
+ * Since: 2.44
  */
 
 
 /**
- * g_network_monitor_base_add_network:
- * @monitor: the #GNetworkMonitorBase
- * @network: a #GInetAddressMask
+ * g_list_store_remove:
+ * @store: a #GListStore
+ * @position: the position of the item that is to be removed
  *
- * Adds @network to @monitor's list of available networks.
+ * Removes the item from @store that is at @position. @position must be
+ * smaller than the current length of the list.
  *
- * Since: 2.32
+ * Use g_list_store_splice() to remove multiple items at the same time
+ * efficiently.
+ *
+ * Since: 2.44
  */
 
 
 /**
- * g_network_monitor_base_remove_network:
- * @monitor: the #GNetworkMonitorBase
- * @network: a #GInetAddressMask
+ * g_list_store_remove_all:
+ * @store: a #GListStore
  *
- * Removes @network from @monitor's list of available networks.
+ * Removes all items from @store.
  *
- * Since: 2.32
+ * Since: 2.44
  */
 
 
 /**
- * g_network_monitor_base_set_networks:
- * @monitor: the #GNetworkMonitorBase
- * @networks: (array length=length): an array of #GInetAddressMask
- * @length: length of @networks
+ * g_list_store_sort:
+ * @store: a #GListStore
+ * @compare_func: (scope call): pairwise comparison function for sorting
+ * @user_data: (closure): user data for @compare_func
  *
- * Drops @monitor's current list of available networks and replaces
- * it with @networks.
+ * Sort the items in @store according to @compare_func.
+ *
+ * Since: 2.46
  */
 
 
 /**
- * g_network_monitor_can_reach:
- * @monitor: a #GNetworkMonitor
- * @connectable: a #GSocketConnectable
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: return location for a #GError, or %NULL
+ * g_list_store_splice:
+ * @store: a #GListStore
+ * @position: the position at which to make the change
+ * @n_removals: the number of items to remove
+ * @additions: (array length=n_additions) (element-type GObject): the items to add
+ * @n_additions: the number of items to add
  *
- * Attempts to determine whether or not the host pointed to by
- * @connectable can be reached, without actually trying to connect to
- * it.
+ * Changes @store by removing @n_removals items and adding @n_additions
+ * items to it. @additions must contain @n_additions items of type
+ * #GListStore:item-type.  %NULL is not permitted.
  *
- * This may return %TRUE even when #GNetworkMonitor:network-available
- * is %FALSE, if, for example, @monitor can determine that
- * @connectable refers to a host on a local network.
+ * This function is more efficient than g_list_store_insert() and
+ * g_list_store_remove(), because it only emits
+ * #GListModel::items-changed once for the change.
  *
- * If @monitor believes that an attempt to connect to @connectable
- * will succeed, it will return %TRUE. Otherwise, it will return
- * %FALSE and set @error to an appropriate error (such as
- * %G_IO_ERROR_HOST_UNREACHABLE).
+ * This function takes a ref on each item in @additions.
  *
- * Note that although this does not attempt to connect to
- * @connectable, it may still block for a brief period of time (eg,
- * trying to do multicast DNS on the local network), so if you do not
- * want to block, you should use g_network_monitor_can_reach_async().
+ * The parameters @position and @n_removals must be correct (ie:
+ * @position + @n_removals must be less than or equal to the length of
+ * the list at the time this function is called).
  *
- * Returns: %TRUE if @connectable is reachable, %FALSE if not.
- * Since: 2.32
+ * Since: 2.44
  */
 
 
 /**
- * g_network_monitor_can_reach_async:
- * @monitor: a #GNetworkMonitor
- * @connectable: a #GSocketConnectable
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *     request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_loadable_icon_load:
+ * @icon: a #GLoadableIcon.
+ * @size: an integer.
+ * @type: (out) (optional): a location to store the type of the loaded
+ * icon, %NULL to ignore.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to
+ * ignore.
+ * @error: a #GError location to store the error occurring, or %NULL
+ * to ignore.
  *
- * Asynchronously attempts to determine whether or not the host
- * pointed to by @connectable can be reached, without actually
- * trying to connect to it.
+ * Loads a loadable icon. For the asynchronous version of this function,
+ * see g_loadable_icon_load_async().
  *
- * For more details, see g_network_monitor_can_reach().
+ * Returns: (transfer full): a #GInputStream to read the icon from.
+ */
+
+
+/**
+ * g_loadable_icon_load_async:
+ * @icon: a #GLoadableIcon.
+ * @size: an integer.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ *            request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * When the operation is finished, @callback will be called.
- * You can then call g_network_monitor_can_reach_finish()
- * to get the result of the operation.
+ * Loads an icon asynchronously. To finish this function, see
+ * g_loadable_icon_load_finish(). For the synchronous, blocking
+ * version of this function, see g_loadable_icon_load().
  */
 
 
 /**
- * g_network_monitor_can_reach_finish:
- * @monitor: a #GNetworkMonitor
- * @result: a #GAsyncResult
- * @error: return location for errors, or %NULL
+ * g_loadable_icon_load_finish:
+ * @icon: a #GLoadableIcon.
+ * @res: a #GAsyncResult.
+ * @type: (out) (optional): a location to store the type of the loaded
+ *        icon, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Finishes an async network connectivity test.
- * See g_network_monitor_can_reach_async().
+ * Finishes an asynchronous icon load started in g_loadable_icon_load_async().
  *
- * Returns: %TRUE if network is reachable, %FALSE if not.
+ * Returns: (transfer full): a #GInputStream to read the icon from.
  */
 
 
 /**
- * g_network_monitor_get_connectivity:
- * @monitor: the #GNetworkMonitor
- *
- * Gets a more detailed networking state than
- * g_network_monitor_get_network_available().
- *
- * If #GNetworkMonitor:network-available is %FALSE, then the
- * connectivity state will be %G_NETWORK_CONNECTIVITY_LOCAL.
- *
- * If #GNetworkMonitor:network-available is %TRUE, then the
- * connectivity state will be %G_NETWORK_CONNECTIVITY_FULL (if there
- * is full Internet connectivity), %G_NETWORK_CONNECTIVITY_LIMITED (if
- * the host has a default route, but appears to be unable to actually
- * reach the full Internet), or %G_NETWORK_CONNECTIVITY_PORTAL (if the
- * host is trapped behind a "captive portal" that requires some sort
- * of login or acknowledgement before allowing full Internet access).
+ * g_local_vfs_new:
  *
- * Note that in the case of %G_NETWORK_CONNECTIVITY_LIMITED and
- * %G_NETWORK_CONNECTIVITY_PORTAL, it is possible that some sites are
- * reachable but others are not. In this case, applications can
- * attempt to connect to remote servers, but should gracefully fall
- * back to their "offline" behavior if the connection attempt fails.
+ * Returns a new #GVfs handle for a local vfs.
  *
- * Returns: the network connectivity state
- * Since: 2.44
+ * Returns: a new #GVfs handle.
  */
 
 
 /**
- * g_network_monitor_get_default:
+ * g_memory_input_stream_add_bytes:
+ * @stream: a #GMemoryInputStream
+ * @bytes: input data
  *
- * Gets the default #GNetworkMonitor for the system.
+ * Appends @bytes to data that can be read from the input stream.
  *
- * Returns: (transfer none): a #GNetworkMonitor
- * Since: 2.32
+ * Since: 2.34
  */
 
 
 /**
- * g_network_monitor_get_network_available:
- * @monitor: the #GNetworkMonitor
- *
- * Checks if the network is available. "Available" here means that the
- * system has a default route available for at least one of IPv4 or
- * IPv6. It does not necessarily imply that the public Internet is
- * reachable. See #GNetworkMonitor:network-available for more details.
+ * g_memory_input_stream_add_data:
+ * @stream: a #GMemoryInputStream
+ * @data: (array length=len) (element-type guint8) (transfer full): input data
+ * @len: length of the data, may be -1 if @data is a nul-terminated string
+ * @destroy: (nullable): function that is called to free @data, or %NULL
  *
- * Returns: whether the network is available
- * Since: 2.32
+ * Appends @data to data that can be read from the input stream
  */
 
 
 /**
- * g_network_monitor_get_network_metered:
- * @monitor: the #GNetworkMonitor
+ * g_memory_input_stream_new:
  *
- * Checks if the network is metered.
- * See #GNetworkMonitor:network-metered for more details.
+ * Creates a new empty #GMemoryInputStream.
  *
- * Returns: whether the connection is metered
- * Since: 2.46
+ * Returns: a new #GInputStream
  */
 
 
 /**
- * g_network_service_get_domain:
- * @srv: a #GNetworkService
+ * g_memory_input_stream_new_from_bytes:
+ * @bytes: a #GBytes
  *
- * Gets the domain that @srv serves. This might be either UTF-8 or
- * ASCII-encoded, depending on what @srv was created with.
+ * Creates a new #GMemoryInputStream with data from the given @bytes.
  *
- * Returns: @srv's domain name
- * Since: 2.22
+ * Returns: new #GInputStream read from @bytes
+ * Since: 2.34
  */
 
 
 /**
- * g_network_service_get_protocol:
- * @srv: a #GNetworkService
+ * g_memory_input_stream_new_from_data:
+ * @data: (array length=len) (element-type guint8) (transfer full): input data
+ * @len: length of the data, may be -1 if @data is a nul-terminated string
+ * @destroy: (nullable): function that is called to free @data, or %NULL
  *
- * Gets @srv's protocol name (eg, "tcp").
+ * Creates a new #GMemoryInputStream with data in memory of a given size.
  *
- * Returns: @srv's protocol name
- * Since: 2.22
+ * Returns: new #GInputStream read from @data of @len bytes.
  */
 
 
 /**
- * g_network_service_get_scheme:
- * @srv: a #GNetworkService
+ * g_memory_output_stream_get_data:
+ * @ostream: a #GMemoryOutputStream
  *
- * Get's the URI scheme used to resolve proxies. By default, the service name
- * is used as scheme.
+ * Gets any loaded data from the @ostream.
  *
- * Returns: @srv's scheme name
- * Since: 2.26
+ * Note that the returned pointer may become invalid on the next
+ * write or truncate operation on the stream.
+ *
+ * Returns: (transfer none): pointer to the stream's data, or %NULL if the data
+ *    has been stolen
  */
 
 
 /**
- * g_network_service_get_service:
- * @srv: a #GNetworkService
+ * g_memory_output_stream_get_data_size:
+ * @ostream: a #GMemoryOutputStream
  *
- * Gets @srv's service name (eg, "ldap").
+ * Returns the number of bytes from the start up to including the last
+ * byte written in the stream that has not been truncated away.
  *
- * Returns: @srv's service name
- * Since: 2.22
+ * Returns: the number of bytes written to the stream
+ * Since: 2.18
  */
 
 
 /**
- * g_network_service_new:
- * @service: the service type to look up (eg, "ldap")
- * @protocol: the networking protocol to use for @service (eg, "tcp")
- * @domain: the DNS domain to look up the service in
+ * g_memory_output_stream_get_size:
+ * @ostream: a #GMemoryOutputStream
  *
- * Creates a new #GNetworkService representing the given @service,
- * @protocol, and @domain. This will initially be unresolved; use the
- * #GSocketConnectable interface to resolve it.
+ * Gets the size of the currently allocated data area (available from
+ * g_memory_output_stream_get_data()).
  *
- * Returns: (transfer full) (type GNetworkService): a new #GNetworkService
- * Since: 2.22
+ * You probably don't want to use this function on resizable streams.
+ * See g_memory_output_stream_get_data_size() instead.  For resizable
+ * streams the size returned by this function is an implementation
+ * detail and may be change at any time in response to operations on the
+ * stream.
+ *
+ * If the stream is fixed-sized (ie: no realloc was passed to
+ * g_memory_output_stream_new()) then this is the maximum size of the
+ * stream and further writes will return %G_IO_ERROR_NO_SPACE.
+ *
+ * In any case, if you want the number of bytes currently written to the
+ * stream, use g_memory_output_stream_get_data_size().
+ *
+ * Returns: the number of bytes allocated for the data buffer
  */
 
 
 /**
- * g_network_service_set_scheme:
- * @srv: a #GNetworkService
- * @scheme: a URI scheme
+ * g_memory_output_stream_new: (skip)
+ * @data: (nullable): pointer to a chunk of memory to use, or %NULL
+ * @size: the size of @data
+ * @realloc_function: (nullable): a function with realloc() semantics (like g_realloc())
+ *     to be called when @data needs to be grown, or %NULL
+ * @destroy_function: (nullable): a function to be called on @data when the stream is
+ *     finalized, or %NULL
  *
- * Set's the URI scheme used to resolve proxies. By default, the service name
- * is used as scheme.
+ * Creates a new #GMemoryOutputStream.
  *
- * Since: 2.26
+ * In most cases this is not the function you want.  See
+ * g_memory_output_stream_new_resizable() instead.
+ *
+ * If @data is non-%NULL, the stream will use that for its internal storage.
+ *
+ * If @realloc_fn is non-%NULL, it will be used for resizing the internal
+ * storage when necessary and the stream will be considered resizable.
+ * In that case, the stream will start out being (conceptually) empty.
+ * @size is used only as a hint for how big @data is.  Specifically,
+ * seeking to the end of a newly-created stream will seek to zero, not
+ * @size.  Seeking past the end of the stream and then writing will
+ * introduce a zero-filled gap.
+ *
+ * If @realloc_fn is %NULL then the stream is fixed-sized.  Seeking to
+ * the end will seek to @size exactly.  Writing past the end will give
+ * an 'out of space' error.  Attempting to seek past the end will fail.
+ * Unlike the resizable case, seeking to an offset within the stream and
+ * writing will preserve the bytes passed in as @data before that point
+ * and will return them as part of g_memory_output_stream_steal_data().
+ * If you intend to seek you should probably therefore ensure that @data
+ * is properly initialised.
+ *
+ * It is probably only meaningful to provide @data and @size in the case
+ * that you want a fixed-sized stream.  Put another way: if @realloc_fn
+ * is non-%NULL then it makes most sense to give @data as %NULL and
+ * @size as 0 (allowing #GMemoryOutputStream to do the initial
+ * allocation for itself).
+ *
+ * |[<!-- language="C" -->
+ * // a stream that can grow
+ * stream = g_memory_output_stream_new (NULL, 0, realloc, free);
+ *
+ * // another stream that can grow
+ * stream2 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
+ *
+ * // a fixed-size stream
+ * data = malloc (200);
+ * stream3 = g_memory_output_stream_new (data, 200, NULL, free);
+ * ]|
+ *
+ * Returns: A newly created #GMemoryOutputStream object.
  */
 
 
 /**
- * g_networking_init:
+ * g_memory_output_stream_new_resizable:
  *
- * Initializes the platform networking libraries (eg, on Windows, this
- * calls WSAStartup()). GLib will call this itself if it is needed, so
- * you only need to call it if you directly call system networking
- * functions (without calling any GLib networking functions first).
+ * Creates a new #GMemoryOutputStream, using g_realloc() and g_free()
+ * for memory allocation.
  *
  * Since: 2.36
  */
 
 
 /**
- * g_notification_add_button:
- * @notification: a #GNotification
- * @label: label of the button
- * @detailed_action: a detailed action name
- *
- * Adds a button to @notification that activates the action in
- * @detailed_action when clicked. That action must be an
- * application-wide action (starting with "app."). If @detailed_action
- * contains a target, the action will be activated with that target as
- * its parameter.
+ * g_memory_output_stream_steal_as_bytes:
+ * @ostream: a #GMemoryOutputStream
  *
- * See g_action_parse_detailed_name() for a description of the format
- * for @detailed_action.
+ * Returns data from the @ostream as a #GBytes. @ostream must be
+ * closed before calling this function.
  *
- * Since: 2.40
+ * Returns: (transfer full): the stream's data
+ * Since: 2.34
  */
 
 
 /**
- * g_notification_add_button_with_target: (skip)
- * @notification: a #GNotification
- * @label: label of the button
- * @action: an action name
- * @target_format: (nullable): a #GVariant format string, or %NULL
- * @...: positional parameters, as determined by @target_format
+ * g_memory_output_stream_steal_data:
+ * @ostream: a #GMemoryOutputStream
  *
- * Adds a button to @notification that activates @action when clicked.
- * @action must be an application-wide action (it must start with "app.").
+ * Gets any loaded data from the @ostream. Ownership of the data
+ * is transferred to the caller; when no longer needed it must be
+ * freed using the free function set in @ostream's
+ * #GMemoryOutputStream:destroy-function property.
  *
- * If @target_format is given, it is used to collect remaining
- * positional parameters into a #GVariant instance, similar to
- * g_variant_new(). @action will be activated with that #GVariant as its
- * parameter.
+ * @ostream must be closed before calling this function.
  *
- * Since: 2.40
+ * Returns: (transfer full): the stream's data, or %NULL if it has previously
+ *    been stolen
+ * Since: 2.26
  */
 
 
 /**
- * g_notification_add_button_with_target_value: (rename-to g_notification_add_button_with_target)
- * @notification: a #GNotification
- * @label: label of the button
- * @action: an action name
- * @target: (nullable): a #GVariant to use as @action's parameter, or %NULL
+ * g_memory_settings_backend_new:
  *
- * Adds a button to @notification that activates @action when clicked.
- * @action must be an application-wide action (it must start with "app.").
+ * Creates a memory-backed #GSettingsBackend.
  *
- * If @target is non-%NULL, @action will be activated with @target as
- * its parameter.
+ * This backend allows changes to settings, but does not write them
+ * to any backing storage, so the next time you run your application,
+ * the memory backend will start out with the default values again.
  *
- * Since: 2.40
+ * Returns: (transfer full): a newly created #GSettingsBackend
+ * Since: 2.28
  */
 
 
 /**
- * g_notification_new:
- * @title: the title of the notification
- *
- * Creates a new #GNotification with @title as its title.
+ * g_menu_append:
+ * @menu: a #GMenu
+ * @label: (nullable): the section label, or %NULL
+ * @detailed_action: (nullable): the detailed action string, or %NULL
  *
- * After populating @notification with more details, it can be sent to
- * the desktop shell with g_application_send_notification(). Changing
- * any properties after this call will not have any effect until
- * resending @notification.
+ * Convenience function for appending a normal menu item to the end of
+ * @menu.  Combine g_menu_item_new() and g_menu_insert_item() for a more
+ * flexible alternative.
  *
- * Returns: a new #GNotification instance
- * Since: 2.40
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_body:
- * @notification: a #GNotification
- * @body: (nullable): the new body for @notification, or %NULL
+ * g_menu_append_item:
+ * @menu: a #GMenu
+ * @item: a #GMenuItem to append
  *
- * Sets the body of @notification to @body.
+ * Appends @item to the end of @menu.
  *
- * Since: 2.40
+ * See g_menu_insert_item() for more information.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_default_action:
- * @notification: a #GNotification
- * @detailed_action: a detailed action name
+ * g_menu_append_section:
+ * @menu: a #GMenu
+ * @label: (nullable): the section label, or %NULL
+ * @section: a #GMenuModel with the items of the section
  *
- * Sets the default action of @notification to @detailed_action. This
- * action is activated when the notification is clicked on.
+ * Convenience function for appending a section menu item to the end of
+ * @menu.  Combine g_menu_item_new_section() and g_menu_insert_item() for a
+ * more flexible alternative.
  *
- * The action in @detailed_action must be an application-wide action (it
- * must start with "app."). If @detailed_action contains a target, the
- * given action will be activated with that target as its parameter.
- * See g_action_parse_detailed_name() for a description of the format
- * for @detailed_action.
+ * Since: 2.32
+ */
+
+
+/**
+ * g_menu_append_submenu:
+ * @menu: a #GMenu
+ * @label: (nullable): the section label, or %NULL
+ * @submenu: a #GMenuModel with the items of the submenu
  *
- * When no default action is set, the application that the notification
- * was sent on is activated.
+ * Convenience function for appending a submenu menu item to the end of
+ * @menu.  Combine g_menu_item_new_submenu() and g_menu_insert_item() for a
+ * more flexible alternative.
  *
- * Since: 2.40
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_default_action_and_target: (skip)
- * @notification: a #GNotification
- * @action: an action name
- * @target_format: (nullable): a #GVariant format string, or %NULL
- * @...: positional parameters, as determined by @target_format
- *
- * Sets the default action of @notification to @action. This action is
- * activated when the notification is clicked on. It must be an
- * application-wide action (it must start with "app.").
+ * g_menu_attribute_iter_get_name:
+ * @iter: a #GMenuAttributeIter
  *
- * If @target_format is given, it is used to collect remaining
- * positional parameters into a #GVariant instance, similar to
- * g_variant_new(). @action will be activated with that #GVariant as its
- * parameter.
+ * Gets the name of the attribute at the current iterator position, as
+ * a string.
  *
- * When no default action is set, the application that the notification
- * was sent on is activated.
+ * The iterator is not advanced.
  *
- * Since: 2.40
+ * Returns: the name of the attribute
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_default_action_and_target_value: (rename-to g_notification_set_default_action_and_target)
- * @notification: a #GNotification
- * @action: an action name
- * @target: (nullable): a #GVariant to use as @action's parameter, or %NULL
+ * g_menu_attribute_iter_get_next:
+ * @iter: a #GMenuAttributeIter
+ * @out_name: (out) (optional) (transfer none): the type of the attribute
+ * @value: (out) (optional) (transfer full): the attribute value
  *
- * Sets the default action of @notification to @action. This action is
- * activated when the notification is clicked on. It must be an
- * application-wide action (start with "app.").
+ * This function combines g_menu_attribute_iter_next() with
+ * g_menu_attribute_iter_get_name() and g_menu_attribute_iter_get_value().
  *
- * If @target is non-%NULL, @action will be activated with @target as
- * its parameter.
+ * First the iterator is advanced to the next (possibly first) attribute.
+ * If that fails, then %FALSE is returned and there are no other
+ * effects.
  *
- * When no default action is set, the application that the notification
- * was sent on is activated.
+ * If successful, @name and @value are set to the name and value of the
+ * attribute that has just been advanced to.  At this point,
+ * g_menu_attribute_iter_get_name() and g_menu_attribute_iter_get_value() will
+ * return the same values again.
  *
- * Since: 2.40
+ * The value returned in @name remains valid for as long as the iterator
+ * remains at the current position.  The value returned in @value must
+ * be unreffed using g_variant_unref() when it is no longer in use.
+ *
+ * Returns: %TRUE on success, or %FALSE if there is no additional
+ *     attribute
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_icon:
- * @notification: a #GNotification
- * @icon: the icon to be shown in @notification, as a #GIcon
+ * g_menu_attribute_iter_get_value:
+ * @iter: a #GMenuAttributeIter
  *
- * Sets the icon of @notification to @icon.
+ * Gets the value of the attribute at the current iterator position.
  *
- * Since: 2.40
+ * The iterator is not advanced.
+ *
+ * Returns: (transfer full): the value of the current attribute
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_priority:
- * @notification: a #GNotification
- * @priority: a #GNotificationPriority
+ * g_menu_attribute_iter_next:
+ * @iter: a #GMenuAttributeIter
  *
- * Sets the priority of @notification to @priority. See
- * #GNotificationPriority for possible values.
+ * Attempts to advance the iterator to the next (possibly first)
+ * attribute.
+ *
+ * %TRUE is returned on success, or %FALSE if there are no more
+ * attributes.
+ *
+ * You must call this function when you first acquire the iterator
+ * to advance it to the first attribute (and determine if the first
+ * attribute exists at all).
+ *
+ * Returns: %TRUE on success, or %FALSE when there are no more attributes
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_title:
- * @notification: a #GNotification
- * @title: the new title for @notification
+ * g_menu_freeze:
+ * @menu: a #GMenu
  *
- * Sets the title of @notification to @title.
+ * Marks @menu as frozen.
  *
- * Since: 2.40
+ * After the menu is frozen, it is an error to attempt to make any
+ * changes to it.  In effect this means that the #GMenu API must no
+ * longer be used.
+ *
+ * This function causes g_menu_model_is_mutable() to begin returning
+ * %FALSE, which has some positive performance implications.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_notification_set_urgent:
- * @notification: a #GNotification
- * @urgent: %TRUE if @notification is urgent
+ * g_menu_insert:
+ * @menu: a #GMenu
+ * @position: the position at which to insert the item
+ * @label: (nullable): the section label, or %NULL
+ * @detailed_action: (nullable): the detailed action string, or %NULL
  *
- * Deprecated in favor of g_notification_set_priority().
+ * Convenience function for inserting a normal menu item into @menu.
+ * Combine g_menu_item_new() and g_menu_insert_item() for a more flexible
+ * alternative.
  *
- * Since: 2.40
- * Deprecated: 2.42: Since 2.42, this has been deprecated in favour of
- *    g_notification_set_priority().
+ * Since: 2.32
  */
 
 
 /**
- * g_null_settings_backend_new:
+ * g_menu_insert_item:
+ * @menu: a #GMenu
+ * @position: the position at which to insert the item
+ * @item: the #GMenuItem to insert
  *
- * Creates a readonly #GSettingsBackend.
+ * Inserts @item into @menu.
  *
- * This backend does not allow changes to settings, so all settings
- * will always have their default values.
+ * The "insertion" is actually done by copying all of the attribute and
+ * link values of @item and using them to form a new item within @menu.
+ * As such, @item itself is not really inserted, but rather, a menu item
+ * that is exactly the same as the one presently described by @item.
  *
- * Returns: (transfer full): a newly created #GSettingsBackend
- * Since: 2.28
+ * This means that @item is essentially useless after the insertion
+ * occurs.  Any changes you make to it are ignored unless it is inserted
+ * again (at which point its updated values will be copied).
+ *
+ * You should probably just free @item once you're done.
+ *
+ * There are many convenience functions to take care of common cases.
+ * See g_menu_insert(), g_menu_insert_section() and
+ * g_menu_insert_submenu() as well as "prepend" and "append" variants of
+ * each of these functions.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_clear_pending:
- * @stream: output stream
+ * g_menu_insert_section:
+ * @menu: a #GMenu
+ * @position: the position at which to insert the item
+ * @label: (nullable): the section label, or %NULL
+ * @section: a #GMenuModel with the items of the section
  *
- * Clears the pending flag on @stream.
+ * Convenience function for inserting a section menu item into @menu.
+ * Combine g_menu_item_new_section() and g_menu_insert_item() for a more
+ * flexible alternative.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_close:
- * @stream: A #GOutputStream.
- * @cancellable: (nullable): optional cancellable object
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Closes the stream, releasing resources related to it.
- *
- * Once the stream is closed, all other operations will return %G_IO_ERROR_CLOSED.
- * Closing a stream multiple times will not return an error.
+ * g_menu_insert_submenu:
+ * @menu: a #GMenu
+ * @position: the position at which to insert the item
+ * @label: (nullable): the section label, or %NULL
+ * @submenu: a #GMenuModel with the items of the submenu
  *
- * Closing a stream will automatically flush any outstanding buffers in the
- * stream.
+ * Convenience function for inserting a submenu menu item into @menu.
+ * Combine g_menu_item_new_submenu() and g_menu_insert_item() for a more
+ * flexible alternative.
  *
- * Streams will be automatically closed when the last reference
- * is dropped, but you might want to call this function to make sure
- * resources are released as early as possible.
+ * Since: 2.32
+ */
+
+
+/**
+ * g_menu_item_get_attribute:
+ * @menu_item: a #GMenuItem
+ * @attribute: the attribute name to query
+ * @format_string: a #GVariant format string
+ * @...: positional parameters, as per @format_string
  *
- * Some streams might keep the backing store of the stream (e.g. a file descriptor)
- * open after the stream is closed. See the documentation for the individual
- * stream for details.
+ * Queries the named @attribute on @menu_item.
  *
- * On failure the first error that happened will be reported, but the close
- * operation will finish as much as possible. A stream that failed to
- * close will still return %G_IO_ERROR_CLOSED for all operations. Still, it
- * is important to check and report the error to the user, otherwise
- * there might be a loss of data as all data might not be written.
+ * If the attribute exists and matches the #GVariantType corresponding
+ * to @format_string then @format_string is used to deconstruct the
+ * value into the positional parameters and %TRUE is returned.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
- * Cancelling a close will still leave the stream closed, but there some streams
- * can use a faster close that doesn't block to e.g. check errors. On
- * cancellation (as with any error) there is no guarantee that all written
- * data will reach the target.
+ * If the attribute does not exist, or it does exist but has the wrong
+ * type, then the positional parameters are ignored and %FALSE is
+ * returned.
  *
- * Returns: %TRUE on success, %FALSE on failure
+ * Returns: %TRUE if the named attribute was found with the expected
+ *     type
+ * Since: 2.34
  */
 
 
 /**
- * g_output_stream_close_async:
- * @stream: A #GOutputStream.
- * @io_priority: the io priority of the request.
- * @cancellable: (nullable): optional cancellable object
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_menu_item_get_attribute_value:
+ * @menu_item: a #GMenuItem
+ * @attribute: the attribute name to query
+ * @expected_type: (nullable): the expected type of the attribute
  *
- * Requests an asynchronous close of the stream, releasing resources
- * related to it. When the operation is finished @callback will be
- * called. You can then call g_output_stream_close_finish() to get
- * the result of the operation.
+ * Queries the named @attribute on @menu_item.
  *
- * For behaviour details see g_output_stream_close().
+ * If @expected_type is specified and the attribute does not have this
+ * type, %NULL is returned.  %NULL is also returned if the attribute
+ * simply does not exist.
  *
- * The asynchronous 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.
+ * Returns: (transfer full): the attribute value, or %NULL
+ * Since: 2.34
  */
 
 
 /**
- * g_output_stream_close_finish:
- * @stream: a #GOutputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_menu_item_get_link:
+ * @menu_item: a #GMenuItem
+ * @link: the link name to query
  *
- * Closes an output stream.
+ * Queries the named @link on @menu_item.
  *
- * Returns: %TRUE if stream was successfully closed, %FALSE otherwise.
+ * Returns: (transfer full): the link, or %NULL
+ * Since: 2.34
  */
 
 
 /**
- * g_output_stream_flush:
- * @stream: a #GOutputStream.
- * @cancellable: (nullable): optional cancellable object
- * @error: location to store the error occurring, or %NULL to ignore
+ * g_menu_item_new:
+ * @label: (nullable): the section label, or %NULL
+ * @detailed_action: (nullable): the detailed action string, or %NULL
  *
- * Forces a write of all user-space buffered data for the given
- * @stream. Will block during the operation. Closing the stream will
- * implicitly cause a flush.
+ * Creates a new #GMenuItem.
  *
- * This function is optional for inherited classes.
+ * If @label is non-%NULL it is used to set the "label" attribute of the
+ * new item.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * If @detailed_action is non-%NULL it is used to set the "action" and
+ * possibly the "target" attribute of the new item.  See
+ * g_menu_item_set_detailed_action() for more information.
  *
- * Returns: %TRUE on success, %FALSE on error
+ * Returns: a new #GMenuItem
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_flush_async:
- * @stream: a #GOutputStream.
- * @io_priority: the io priority of the request.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_menu_item_new_from_model:
+ * @model: a #GMenuModel
+ * @item_index: the index of an item in @model
  *
- * Forces an asynchronous write of all user-space buffered data for
- * the given @stream.
- * For behaviour details see g_output_stream_flush().
+ * Creates a #GMenuItem as an exact copy of an existing menu item in a
+ * #GMenuModel.
  *
- * When the operation is finished @callback will be
- * called. You can then call g_output_stream_flush_finish() to get the
- * result of the operation.
+ * @item_index must be valid (ie: be sure to call
+ * g_menu_model_get_n_items() first).
+ *
+ * Returns: a new #GMenuItem.
+ * Since: 2.34
  */
 
 
 /**
- * g_output_stream_flush_finish:
- * @stream: a #GOutputStream.
- * @result: a GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_menu_item_new_section:
+ * @label: (nullable): the section label, or %NULL
+ * @section: a #GMenuModel with the items of the section
  *
- * Finishes flushing an output stream.
+ * Creates a new #GMenuItem representing a section.
  *
- * Returns: %TRUE if flush operation succeeded, %FALSE otherwise.
+ * This is a convenience API around g_menu_item_new() and
+ * g_menu_item_set_section().
+ *
+ * The effect of having one menu appear as a section of another is
+ * exactly as it sounds: the items from @section become a direct part of
+ * the menu that @menu_item is added to.
+ *
+ * Visual separation is typically displayed between two non-empty
+ * sections.  If @label is non-%NULL then it will be encorporated into
+ * this visual indication.  This allows for labeled subsections of a
+ * menu.
+ *
+ * As a simple example, consider a typical "Edit" menu from a simple
+ * program.  It probably contains an "Undo" and "Redo" item, followed by
+ * a separator, followed by "Cut", "Copy" and "Paste".
+ *
+ * This would be accomplished by creating three #GMenu instances.  The
+ * first would be populated with the "Undo" and "Redo" items, and the
+ * second with the "Cut", "Copy" and "Paste" items.  The first and
+ * second menus would then be added as submenus of the third.  In XML
+ * format, this would look something like the following:
+ * |[
+ * <menu id='edit-menu'>
+ *   <section>
+ *     <item label='Undo'/>
+ *     <item label='Redo'/>
+ *   </section>
+ *   <section>
+ *     <item label='Cut'/>
+ *     <item label='Copy'/>
+ *     <item label='Paste'/>
+ *   </section>
+ * </menu>
+ * ]|
+ *
+ * The following example is exactly equivalent.  It is more illustrative
+ * of the exact relationship between the menus and items (keeping in
+ * mind that the 'link' element defines a new menu that is linked to the
+ * containing one).  The style of the second example is more verbose and
+ * difficult to read (and therefore not recommended except for the
+ * purpose of understanding what is really going on).
+ * |[
+ * <menu id='edit-menu'>
+ *   <item>
+ *     <link name='section'>
+ *       <item label='Undo'/>
+ *       <item label='Redo'/>
+ *     </link>
+ *   </item>
+ *   <item>
+ *     <link name='section'>
+ *       <item label='Cut'/>
+ *       <item label='Copy'/>
+ *       <item label='Paste'/>
+ *     </link>
+ *   </item>
+ * </menu>
+ * ]|
+ *
+ * Returns: a new #GMenuItem
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_has_pending:
- * @stream: a #GOutputStream.
+ * g_menu_item_new_submenu:
+ * @label: (nullable): the section label, or %NULL
+ * @submenu: a #GMenuModel with the items of the submenu
  *
- * Checks if an output stream has pending actions.
+ * Creates a new #GMenuItem representing a submenu.
  *
- * Returns: %TRUE if @stream has pending actions.
+ * This is a convenience API around g_menu_item_new() and
+ * g_menu_item_set_submenu().
+ *
+ * Returns: a new #GMenuItem
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_is_closed:
- * @stream: a #GOutputStream.
+ * g_menu_item_set_action_and_target:
+ * @menu_item: a #GMenuItem
+ * @action: (nullable): the name of the action for this item
+ * @format_string: (nullable): a GVariant format string
+ * @...: positional parameters, as per @format_string
  *
- * Checks if an output stream has already been closed.
+ * Sets or unsets the "action" and "target" attributes of @menu_item.
  *
- * Returns: %TRUE if @stream is closed. %FALSE otherwise.
+ * If @action is %NULL then both the "action" and "target" attributes
+ * are unset (and @format_string is ignored along with the positional
+ * parameters).
+ *
+ * If @action is non-%NULL then the "action" attribute is set.
+ * @format_string is then inspected.  If it is non-%NULL then the proper
+ * position parameters are collected to create a #GVariant instance to
+ * use as the target value.  If it is %NULL then the positional
+ * parameters are ignored and the "target" attribute is unset.
+ *
+ * See also g_menu_item_set_action_and_target_value() for an equivalent
+ * call that directly accepts a #GVariant.  See
+ * g_menu_item_set_detailed_action() for a more convenient version that
+ * works with string-typed targets.
+ *
+ * See also g_menu_item_set_action_and_target_value() for a
+ * description of the semantics of the action and target attributes.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_is_closing:
- * @stream: a #GOutputStream.
+ * g_menu_item_set_action_and_target_value:
+ * @menu_item: a #GMenuItem
+ * @action: (nullable): the name of the action for this item
+ * @target_value: (nullable): a #GVariant to use as the action target
  *
- * Checks if an output stream is being closed. This can be
- * used inside e.g. a flush implementation to see if the
- * flush (or other i/o operation) is called from within
- * the closing operation.
+ * Sets or unsets the "action" and "target" attributes of @menu_item.
  *
- * Returns: %TRUE if @stream is being closed. %FALSE otherwise.
- * Since: 2.24
+ * If @action is %NULL then both the "action" and "target" attributes
+ * are unset (and @target_value is ignored).
+ *
+ * If @action is non-%NULL then the "action" attribute is set.  The
+ * "target" attribute is then set to the value of @target_value if it is
+ * non-%NULL or unset otherwise.
+ *
+ * Normal menu items (ie: not submenu, section or other custom item
+ * types) are expected to have the "action" attribute set to identify
+ * the action that they are associated with.  The state type of the
+ * action help to determine the disposition of the menu item.  See
+ * #GAction and #GActionGroup for an overview of actions.
+ *
+ * In general, clicking on the menu item will result in activation of
+ * the named action with the "target" attribute given as the parameter
+ * to the action invocation.  If the "target" attribute is not set then
+ * the action is invoked with no parameter.
+ *
+ * If the action has no state then the menu item is usually drawn as a
+ * plain menu item (ie: with no additional decoration).
+ *
+ * If the action has a boolean state then the menu item is usually drawn
+ * as a toggle menu item (ie: with a checkmark or equivalent
+ * indication).  The item should be marked as 'toggled' or 'checked'
+ * when the boolean state is %TRUE.
+ *
+ * If the action has a string state then the menu item is usually drawn
+ * as a radio menu item (ie: with a radio bullet or equivalent
+ * indication).  The item should be marked as 'selected' when the string
+ * state is equal to the value of the @target property.
+ *
+ * See g_menu_item_set_action_and_target() or
+ * g_menu_item_set_detailed_action() for two equivalent calls that are
+ * probably more convenient for most uses.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_printf:
- * @stream: a #GOutputStream.
- * @bytes_written: (out) (optional): location to store the number of bytes that was
- *     written to the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- * @format: the format string. See the printf() documentation
- * @...: the parameters to insert into the format string
+ * g_menu_item_set_attribute:
+ * @menu_item: a #GMenuItem
+ * @attribute: the attribute to set
+ * @format_string: (nullable): a #GVariant format string, or %NULL
+ * @...: positional parameters, as per @format_string
  *
- * This is a utility function around g_output_stream_write_all(). It
- * uses g_strdup_vprintf() to turn @format and @... into a string that
- * is then written to @stream.
+ * Sets or unsets an attribute on @menu_item.
  *
- * See the documentation of g_output_stream_write_all() about the
- * behavior of the actual write operation.
+ * The attribute to set or unset is specified by @attribute. This
+ * can be one of the standard attribute names %G_MENU_ATTRIBUTE_LABEL,
+ * %G_MENU_ATTRIBUTE_ACTION, %G_MENU_ATTRIBUTE_TARGET, or a custom
+ * attribute name.
+ * Attribute names are restricted to lowercase characters, numbers
+ * and '-'. Furthermore, the names must begin with a lowercase character,
+ * must not end with a '-', and must not contain consecutive dashes.
  *
- * Note that partial writes cannot be properly checked with this
- * function due to the variable length of the written string, if you
- * need precise control over partial write failures, you need to
- * create you own printf()-like wrapper around g_output_stream_write()
- * or g_output_stream_write_all().
+ * If @format_string is non-%NULL then the proper position parameters
+ * are collected to create a #GVariant instance to use as the attribute
+ * value.  If it is %NULL then the positional parameterrs are ignored
+ * and the named attribute is unset.
  *
- * Since: 2.40
- * Returns: %TRUE on success, %FALSE if there was an error
+ * See also g_menu_item_set_attribute_value() for an equivalent call
+ * that directly accepts a #GVariant.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_set_pending:
- * @stream: a #GOutputStream.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_menu_item_set_attribute_value:
+ * @menu_item: a #GMenuItem
+ * @attribute: the attribute to set
+ * @value: (nullable): a #GVariant to use as the value, or %NULL
  *
- * Sets @stream to have actions pending. If the pending flag is
- * already set or @stream is closed, it will return %FALSE and set
- * @error.
+ * Sets or unsets an attribute on @menu_item.
  *
- * Returns: %TRUE if pending was previously unset and is now set.
+ * The attribute to set or unset is specified by @attribute. This
+ * can be one of the standard attribute names %G_MENU_ATTRIBUTE_LABEL,
+ * %G_MENU_ATTRIBUTE_ACTION, %G_MENU_ATTRIBUTE_TARGET, or a custom
+ * attribute name.
+ * Attribute names are restricted to lowercase characters, numbers
+ * and '-'. Furthermore, the names must begin with a lowercase character,
+ * must not end with a '-', and must not contain consecutive dashes.
+ *
+ * must consist only of lowercase
+ * ASCII characters, digits and '-'.
+ *
+ * If @value is non-%NULL then it is used as the new value for the
+ * attribute.  If @value is %NULL then the attribute is unset. If
+ * the @value #GVariant is floating, it is consumed.
+ *
+ * See also g_menu_item_set_attribute() for a more convenient way to do
+ * the same.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_splice:
- * @stream: a #GOutputStream.
- * @source: a #GInputStream.
- * @flags: a set of #GOutputStreamSpliceFlags.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_menu_item_set_detailed_action:
+ * @menu_item: a #GMenuItem
+ * @detailed_action: the "detailed" action string
  *
- * Splices an input stream into an output stream.
+ * Sets the "action" and possibly the "target" attribute of @menu_item.
  *
- * Returns: a #gssize containing the size of the data spliced, or
- *     -1 if an error occurred. Note that if the number of bytes
- *     spliced is greater than %G_MAXSSIZE, then that will be
- *     returned, and there is no way to determine the actual number
- *     of bytes spliced.
+ * The format of @detailed_action is the same format parsed by
+ * g_action_parse_detailed_name().
+ *
+ * See g_menu_item_set_action_and_target() or
+ * g_menu_item_set_action_and_target_value() for more flexible (but
+ * slightly less convenient) alternatives.
+ *
+ * See also g_menu_item_set_action_and_target_value() for a description of
+ * the semantics of the action and target attributes.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_splice_async:
- * @stream: a #GOutputStream.
- * @source: a #GInputStream.
- * @flags: a set of #GOutputStreamSpliceFlags.
- * @io_priority: the io priority of the request.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @user_data: (closure): user data passed to @callback.
+ * g_menu_item_set_icon:
+ * @menu_item: a #GMenuItem
+ * @icon: a #GIcon, or %NULL
  *
- * Splices a stream asynchronously.
- * When the operation is finished @callback will be called.
- * You can then call g_output_stream_splice_finish() to get the
- * result of the operation.
+ * Sets (or unsets) the icon on @menu_item.
  *
- * For the synchronous, blocking version of this function, see
- * g_output_stream_splice().
+ * This call is the same as calling g_icon_serialize() and using the
+ * result as the value to g_menu_item_set_attribute_value() for
+ * %G_MENU_ATTRIBUTE_ICON.
+ *
+ * This API is only intended for use with "noun" menu items; things like
+ * bookmarks or applications in an "Open With" menu.  Don't use it on
+ * menu items corresponding to verbs (eg: stock icons for 'Save' or
+ * 'Quit').
+ *
+ * If @icon is %NULL then the icon is unset.
+ *
+ * Since: 2.38
  */
 
 
 /**
- * g_output_stream_splice_finish:
- * @stream: a #GOutputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_menu_item_set_label:
+ * @menu_item: a #GMenuItem
+ * @label: (nullable): the label to set, or %NULL to unset
  *
- * Finishes an asynchronous stream splice operation.
+ * Sets or unsets the "label" attribute of @menu_item.
  *
- * Returns: a #gssize of the number of bytes spliced. Note that if the
- *     number of bytes spliced is greater than %G_MAXSSIZE, then that
- *     will be returned, and there is no way to determine the actual
- *     number of bytes spliced.
+ * If @label is non-%NULL it is used as the label for the menu item.  If
+ * it is %NULL then the label attribute is unset.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_vprintf:
- * @stream: a #GOutputStream.
- * @bytes_written: (out) (optional): location to store the number of bytes that was
- *     written to the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- * @format: the format string. See the printf() documentation
- * @args: the parameters to insert into the format string
- *
- * This is a utility function around g_output_stream_write_all(). It
- * uses g_strdup_vprintf() to turn @format and @args into a string that
- * is then written to @stream.
+ * g_menu_item_set_link:
+ * @menu_item: a #GMenuItem
+ * @link: type of link to establish or unset
+ * @model: (nullable): the #GMenuModel to link to (or %NULL to unset)
  *
- * See the documentation of g_output_stream_write_all() about the
- * behavior of the actual write operation.
+ * Creates a link from @menu_item to @model if non-%NULL, or unsets it.
  *
- * Note that partial writes cannot be properly checked with this
- * function due to the variable length of the written string, if you
- * need precise control over partial write failures, you need to
- * create you own printf()-like wrapper around g_output_stream_write()
- * or g_output_stream_write_all().
+ * Links are used to establish a relationship between a particular menu
+ * item and another menu.  For example, %G_MENU_LINK_SUBMENU is used to
+ * associate a submenu with a particular menu item, and %G_MENU_LINK_SECTION
+ * is used to create a section. Other types of link can be used, but there
+ * is no guarantee that clients will be able to make sense of them.
+ * Link types are restricted to lowercase characters, numbers
+ * and '-'. Furthermore, the names must begin with a lowercase character,
+ * must not end with a '-', and must not contain consecutive dashes.
  *
- * Since: 2.40
- * Returns: %TRUE on success, %FALSE if there was an error
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write: (virtual write_fn)
- * @stream: a #GOutputStream.
- * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write.
- * @count: the number of bytes to write
- * @cancellable: (nullable): optional cancellable object
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Tries to write @count bytes from @buffer into the stream. Will block
- * during the operation.
- *
- * If count is 0, returns 0 and does nothing. A value of @count
- * larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
- *
- * 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 there is not enough
- * storage in the stream. All writes block until at least one byte
- * is written or an error occurs; 0 is never returned (unless
- * @count is 0).
+ * g_menu_item_set_section:
+ * @menu_item: a #GMenuItem
+ * @section: (nullable): a #GMenuModel, or %NULL
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
- * operation was partially finished when the operation was cancelled the
- * partial result will be returned, without an error.
+ * Sets or unsets the "section" link of @menu_item to @section.
  *
- * On error -1 is returned and @error is set accordingly.
+ * The effect of having one menu appear as a section of another is
+ * exactly as it sounds: the items from @section become a direct part of
+ * the menu that @menu_item is added to.  See g_menu_item_new_section()
+ * for more information about what it means for a menu item to be a
+ * section.
  *
- * Returns: Number of bytes written, or -1 on error
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_all:
- * @stream: a #GOutputStream.
- * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write.
- * @count: the number of bytes to write
- * @bytes_written: (out) (optional): location to store the number of bytes that was
- *     written to the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
+ * g_menu_item_set_submenu:
+ * @menu_item: a #GMenuItem
+ * @submenu: (nullable): a #GMenuModel, or %NULL
  *
- * Tries to write @count bytes from @buffer into the stream. Will block
- * during the operation.
+ * Sets or unsets the "submenu" link of @menu_item to @submenu.
  *
- * This function is similar to g_output_stream_write(), except it tries to
- * write as many bytes as requested, only stopping on an error.
+ * If @submenu is non-%NULL, it is linked to.  If it is %NULL then the
+ * link is unset.
  *
- * On a successful write of @count bytes, %TRUE is returned, and @bytes_written
- * is set to @count.
+ * The effect of having one menu appear as a submenu of another is
+ * exactly as it sounds.
+ *
+ * Since: 2.32
+ */
+
+
+/**
+ * g_menu_link_iter_get_name:
+ * @iter: a #GMenuLinkIter
  *
- * If there is an error during the operation %FALSE is returned and @error
- * is set to indicate the error status.
+ * Gets the name of the link at the current iterator position.
  *
- * As a special exception to the normal conventions for functions that
- * use #GError, if this function returns %FALSE (and sets @error) then
- * @bytes_written will be set to the number of bytes that were
- * successfully written before the error was encountered.  This
- * functionality is only available from C.  If you need it from another
- * language then you must write your own loop around
- * g_output_stream_write().
+ * The iterator is not advanced.
  *
- * Returns: %TRUE on success, %FALSE if there was an error
+ * Returns: the type of the link
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_all_async:
- * @stream: A #GOutputStream
- * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write
- * @count: the number of bytes to write
- * @io_priority: the io priority of the request
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
- *
- * Request an asynchronous write of @count bytes from @buffer into
- * the stream. When the operation is finished @callback will be called.
- * You can then call g_output_stream_write_all_finish() to get the result of the
- * operation.
+ * g_menu_link_iter_get_next:
+ * @iter: a #GMenuLinkIter
+ * @out_link: (out) (optional) (transfer none): the name of the link
+ * @value: (out) (optional) (transfer full): the linked #GMenuModel
  *
- * This is the asynchronous version of g_output_stream_write_all().
+ * This function combines g_menu_link_iter_next() with
+ * g_menu_link_iter_get_name() and g_menu_link_iter_get_value().
  *
- * Call g_output_stream_write_all_finish() to collect the result.
+ * First the iterator is advanced to the next (possibly first) link.
+ * If that fails, then %FALSE is returned and there are no other effects.
  *
- * Any outstanding I/O request with higher priority (lower numerical
- * value) will be executed before an outstanding request with lower
- * priority. Default priority is %G_PRIORITY_DEFAULT.
+ * If successful, @out_link and @value are set to the name and #GMenuModel
+ * of the link that has just been advanced to.  At this point,
+ * g_menu_link_iter_get_name() and g_menu_link_iter_get_value() will return the
+ * same values again.
  *
- * Note that no copy of @buffer will be made, so it must stay valid
- * until @callback is called.
+ * The value returned in @out_link remains valid for as long as the iterator
+ * remains at the current position.  The value returned in @value must
+ * be unreffed using g_object_unref() when it is no longer in use.
  *
- * Since: 2.44
+ * Returns: %TRUE on success, or %FALSE if there is no additional link
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_all_finish:
- * @stream: a #GOutputStream
- * @result: a #GAsyncResult
- * @bytes_written: (out) (optional): location to store the number of bytes that was written to the stream
- * @error: a #GError location to store the error occurring, or %NULL to ignore.
+ * g_menu_link_iter_get_value:
+ * @iter: a #GMenuLinkIter
  *
- * Finishes an asynchronous stream write operation started with
- * g_output_stream_write_all_async().
+ * Gets the linked #GMenuModel at the current iterator position.
  *
- * As a special exception to the normal conventions for functions that
- * use #GError, if this function returns %FALSE (and sets @error) then
- * @bytes_written will be set to the number of bytes that were
- * successfully written before the error was encountered.  This
- * functionality is only available from C.  If you need it from another
- * language then you must write your own loop around
- * g_output_stream_write_async().
+ * The iterator is not advanced.
  *
- * Returns: %TRUE on success, %FALSE if there was an error
- * Since: 2.44
+ * Returns: (transfer full): the #GMenuModel that is linked to
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_async:
- * @stream: A #GOutputStream.
- * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write.
- * @count: the number of bytes to write
- * @io_priority: the io priority of the request.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_menu_link_iter_next:
+ * @iter: a #GMenuLinkIter
  *
- * Request an asynchronous write of @count bytes from @buffer into
- * the stream. When the operation is finished @callback will be called.
- * You can then call g_output_stream_write_finish() to get the result of the
- * operation.
+ * Attempts to advance the iterator to the next (possibly first)
+ * link.
  *
- * During an async request no other sync and async calls are allowed,
- * and will result in %G_IO_ERROR_PENDING errors.
+ * %TRUE is returned on success, or %FALSE if there are no more links.
  *
- * A value of @count larger than %G_MAXSSIZE will cause a
- * %G_IO_ERROR_INVALID_ARGUMENT error.
+ * You must call this function when you first acquire the iterator to
+ * advance it to the first link (and determine if the first link exists
+ * at all).
  *
- * On success, the number of bytes written will be passed to the
- * @callback. 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.
+ * Returns: %TRUE on success, or %FALSE when there are no more links
+ * Since: 2.32
+ */
+
+
+/**
+ * g_menu_model_get_item_attribute:
+ * @model: a #GMenuModel
+ * @item_index: the index of the item
+ * @attribute: the attribute to query
+ * @format_string: a #GVariant format string
+ * @...: positional parameters, as per @format_string
  *
- * You are guaranteed that this method will never fail with
- * %G_IO_ERROR_WOULD_BLOCK - if @stream can't accept more data, the
- * method will just wait until this changes.
+ * Queries item at position @item_index in @model for the attribute
+ * specified by @attribute.
  *
- * Any outstanding I/O request with higher priority (lower numerical
- * value) will be executed before an outstanding request with lower
- * priority. Default priority is %G_PRIORITY_DEFAULT.
+ * If the attribute exists and matches the #GVariantType corresponding
+ * to @format_string then @format_string is used to deconstruct the
+ * value into the positional parameters and %TRUE is returned.
  *
- * The asynchronous 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.
+ * If the attribute does not exist, or it does exist but has the wrong
+ * type, then the positional parameters are ignored and %FALSE is
+ * returned.
  *
- * For the synchronous, blocking version of this function, see
- * g_output_stream_write().
+ * This function is a mix of g_menu_model_get_item_attribute_value() and
+ * g_variant_get(), followed by a g_variant_unref().  As such,
+ * @format_string must make a complete copy of the data (since the
+ * #GVariant may go away after the call to g_variant_unref()).  In
+ * particular, no '&' characters are allowed in @format_string.
  *
- * Note that no copy of @buffer will be made, so it must stay valid
- * until @callback is called. See g_output_stream_write_bytes_async()
- * for a #GBytes version that will automatically hold a reference to
- * the contents (without copying) for the duration of the call.
+ * Returns: %TRUE if the named attribute was found with the expected
+ *     type
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_bytes:
- * @stream: a #GOutputStream.
- * @bytes: the #GBytes to write
- * @cancellable: (nullable): optional cancellable object
- * @error: location to store the error occurring, or %NULL to ignore
+ * g_menu_model_get_item_attribute_value:
+ * @model: a #GMenuModel
+ * @item_index: the index of the item
+ * @attribute: the attribute to query
+ * @expected_type: (nullable): the expected type of the attribute, or
+ *     %NULL
  *
- * A wrapper function for g_output_stream_write() which takes a
- * #GBytes as input.  This can be more convenient for use by language
- * bindings or in other cases where the refcounted nature of #GBytes
- * is helpful over a bare pointer interface.
+ * Queries the item at position @item_index in @model for the attribute
+ * specified by @attribute.
  *
- * However, note that this function may still perform partial writes,
- * just like g_output_stream_write().  If that occurs, to continue
- * writing, you will need to create a new #GBytes containing just the
- * remaining bytes, using g_bytes_new_from_bytes(). Passing the same
- * #GBytes instance multiple times potentially can result in duplicated
- * data in the output stream.
+ * If @expected_type is non-%NULL then it specifies the expected type of
+ * the attribute.  If it is %NULL then any type will be accepted.
  *
- * Returns: Number of bytes written, or -1 on error
+ * If the attribute exists and matches @expected_type (or if the
+ * expected type is unspecified) then the value is returned.
+ *
+ * If the attribute does not exist, or does not match the expected type
+ * then %NULL is returned.
+ *
+ * Returns: (transfer full): the value of the attribute
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_bytes_async:
- * @stream: A #GOutputStream.
- * @bytes: The bytes to write
- * @io_priority: the io priority of the request.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): callback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_menu_model_get_item_link:
+ * @model: a #GMenuModel
+ * @item_index: the index of the item
+ * @link: the link to query
  *
- * This function is similar to g_output_stream_write_async(), but
- * takes a #GBytes as input.  Due to the refcounted nature of #GBytes,
- * this allows the stream to avoid taking a copy of the data.
+ * Queries the item at position @item_index in @model for the link
+ * specified by @link.
  *
- * However, note that this function may still perform partial writes,
- * just like g_output_stream_write_async(). If that occurs, to continue
- * writing, you will need to create a new #GBytes containing just the
- * remaining bytes, using g_bytes_new_from_bytes(). Passing the same
- * #GBytes instance multiple times potentially can result in duplicated
- * data in the output stream.
+ * If the link exists, the linked #GMenuModel is returned.  If the link
+ * does not exist, %NULL is returned.
  *
- * For the synchronous, blocking version of this function, see
- * g_output_stream_write_bytes().
+ * Returns: (transfer full): the linked #GMenuModel, or %NULL
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_bytes_finish:
- * @stream: a #GOutputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_menu_model_get_n_items:
+ * @model: a #GMenuModel
  *
- * Finishes a stream write-from-#GBytes operation.
+ * Query the number of items in @model.
  *
- * Returns: a #gssize containing the number of bytes written to the stream.
+ * Returns: the number of items
+ * Since: 2.32
  */
 
 
 /**
- * g_output_stream_write_finish:
- * @stream: a #GOutputStream.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_menu_model_is_mutable:
+ * @model: a #GMenuModel
  *
- * Finishes a stream write operation.
+ * Queries if @model is mutable.
  *
- * Returns: a #gssize containing the number of bytes written to the stream.
+ * An immutable #GMenuModel will never emit the #GMenuModel::items-changed
+ * signal. Consumers of the model may make optimisations accordingly.
+ *
+ * Returns: %TRUE if the model is mutable (ie: "items-changed" may be
+ *     emitted).
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_acquire:
- * @permission: a #GPermission instance
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a pointer to a %NULL #GError, or %NULL
- *
- * Attempts to acquire the permission represented by @permission.
+ * g_menu_model_items_changed:
+ * @model: a #GMenuModel
+ * @position: the position of the change
+ * @removed: the number of items removed
+ * @added: the number of items added
  *
- * The precise method by which this happens depends on the permission
- * and the underlying authentication mechanism.  A simple example is
- * that a dialog may appear asking the user to enter their password.
+ * Requests emission of the #GMenuModel::items-changed signal on @model.
  *
- * You should check with g_permission_get_can_acquire() before calling
- * this function.
+ * This function should never be called except by #GMenuModel
+ * subclasses.  Any other calls to this function will very likely lead
+ * to a violation of the interface of the model.
  *
- * If the permission is acquired then %TRUE is returned.  Otherwise,
- * %FALSE is returned and @error is set appropriately.
+ * The implementation should update its internal representation of the
+ * menu before emitting the signal.  The implementation should further
+ * expect to receive queries about the new state of the menu (and
+ * particularly added menu items) while signal handlers are running.
  *
- * This call is blocking, likely for a very long time (in the case that
- * user interaction is required).  See g_permission_acquire_async() for
- * the non-blocking version.
+ * The implementation must dispatch this call directly from a mainloop
+ * entry and not in response to calls -- particularly those from the
+ * #GMenuModel API.  Said another way: the menu must not change while
+ * user code is running without returning to the mainloop.
  *
- * Returns: %TRUE if the permission was successfully acquired
- * Since: 2.26
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_acquire_async:
- * @permission: a #GPermission instance
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: the #GAsyncReadyCallback to call when done
- * @user_data: the user data to pass to @callback
+ * g_menu_model_iterate_item_attributes:
+ * @model: a #GMenuModel
+ * @item_index: the index of the item
  *
- * Attempts to acquire the permission represented by @permission.
+ * Creates a #GMenuAttributeIter to iterate over the attributes of
+ * the item at position @item_index in @model.
  *
- * This is the first half of the asynchronous version of
- * g_permission_acquire().
+ * You must free the iterator with g_object_unref() when you are done.
  *
- * Since: 2.26
+ * Returns: (transfer full): a new #GMenuAttributeIter
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_acquire_finish:
- * @permission: a #GPermission instance
- * @result: the #GAsyncResult given to the #GAsyncReadyCallback
- * @error: a pointer to a %NULL #GError, or %NULL
+ * g_menu_model_iterate_item_links:
+ * @model: a #GMenuModel
+ * @item_index: the index of the item
  *
- * Collects the result of attempting to acquire the permission
- * represented by @permission.
+ * Creates a #GMenuLinkIter to iterate over the links of the item at
+ * position @item_index in @model.
  *
- * This is the second half of the asynchronous version of
- * g_permission_acquire().
+ * You must free the iterator with g_object_unref() when you are done.
  *
- * Returns: %TRUE if the permission was successfully acquired
- * Since: 2.26
+ * Returns: (transfer full): a new #GMenuLinkIter
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_get_allowed:
- * @permission: a #GPermission instance
+ * g_menu_new:
  *
- * Gets the value of the 'allowed' property.  This property is %TRUE if
- * the caller currently has permission to perform the action that
- * @permission represents the permission to perform.
+ * Creates a new #GMenu.
  *
- * Returns: the value of the 'allowed' property
- * Since: 2.26
+ * The new menu has no items.
+ *
+ * Returns: a new #GMenu
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_get_can_acquire:
- * @permission: a #GPermission instance
+ * g_menu_prepend:
+ * @menu: a #GMenu
+ * @label: (nullable): the section label, or %NULL
+ * @detailed_action: (nullable): the detailed action string, or %NULL
  *
- * Gets the value of the 'can-acquire' property.  This property is %TRUE
- * if it is generally possible to acquire the permission by calling
- * g_permission_acquire().
+ * Convenience function for prepending a normal menu item to the start
+ * of @menu.  Combine g_menu_item_new() and g_menu_insert_item() for a more
+ * flexible alternative.
  *
- * Returns: the value of the 'can-acquire' property
- * Since: 2.26
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_get_can_release:
- * @permission: a #GPermission instance
+ * g_menu_prepend_item:
+ * @menu: a #GMenu
+ * @item: a #GMenuItem to prepend
  *
- * Gets the value of the 'can-release' property.  This property is %TRUE
- * if it is generally possible to release the permission by calling
- * g_permission_release().
+ * Prepends @item to the start of @menu.
  *
- * Returns: the value of the 'can-release' property
- * Since: 2.26
+ * See g_menu_insert_item() for more information.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_impl_update:
- * @permission: a #GPermission instance
- * @allowed: the new value for the 'allowed' property
- * @can_acquire: the new value for the 'can-acquire' property
- * @can_release: the new value for the 'can-release' property
- *
- * This function is called by the #GPermission implementation to update
- * the properties of the permission.  You should never call this
- * function except from a #GPermission implementation.
+ * g_menu_prepend_section:
+ * @menu: a #GMenu
+ * @label: (nullable): the section label, or %NULL
+ * @section: a #GMenuModel with the items of the section
  *
- * GObject notify signals are generated, as appropriate.
+ * Convenience function for prepending a section menu item to the start
+ * of @menu.  Combine g_menu_item_new_section() and g_menu_insert_item() for
+ * a more flexible alternative.
  *
- * Since: 2.26
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_release:
- * @permission: a #GPermission instance
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a pointer to a %NULL #GError, or %NULL
+ * g_menu_prepend_submenu:
+ * @menu: a #GMenu
+ * @label: (nullable): the section label, or %NULL
+ * @submenu: a #GMenuModel with the items of the submenu
  *
- * Attempts to release the permission represented by @permission.
+ * Convenience function for prepending a submenu menu item to the start
+ * of @menu.  Combine g_menu_item_new_submenu() and g_menu_insert_item() for
+ * a more flexible alternative.
  *
- * The precise method by which this happens depends on the permission
- * and the underlying authentication mechanism.  In most cases the
- * permission will be dropped immediately without further action.
+ * Since: 2.32
+ */
+
+
+/**
+ * g_menu_remove:
+ * @menu: a #GMenu
+ * @position: the position of the item to remove
  *
- * You should check with g_permission_get_can_release() before calling
- * this function.
+ * Removes an item from the menu.
  *
- * If the permission is released then %TRUE is returned.  Otherwise,
- * %FALSE is returned and @error is set appropriately.
+ * @position gives the index of the item to remove.
  *
- * This call is blocking, likely for a very long time (in the case that
- * user interaction is required).  See g_permission_release_async() for
- * the non-blocking version.
+ * It is an error if position is not in range the range from 0 to one
+ * less than the number of items in the menu.
  *
- * Returns: %TRUE if the permission was successfully released
- * Since: 2.26
+ * It is not possible to remove items by identity since items are added
+ * to the menu simply by copying their links and attributes (ie:
+ * identity of the item itself is not preserved).
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_permission_release_async:
- * @permission: a #GPermission instance
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: the #GAsyncReadyCallback to call when done
- * @user_data: the user data to pass to @callback
- *
- * Attempts to release the permission represented by @permission.
+ * g_menu_remove_all:
+ * @menu: a #GMenu
  *
- * This is the first half of the asynchronous version of
- * g_permission_release().
+ * Removes all items in the menu.
  *
- * Since: 2.26
+ * Since: 2.38
  */
 
 
 /**
- * g_permission_release_finish:
- * @permission: a #GPermission instance
- * @result: the #GAsyncResult given to the #GAsyncReadyCallback
- * @error: a pointer to a %NULL #GError, or %NULL
+ * g_mount_can_eject:
+ * @mount: a #GMount.
  *
- * Collects the result of attempting to release the permission
- * represented by @permission.
+ * Checks if @mount can be ejected.
  *
- * This is the second half of the asynchronous version of
- * g_permission_release().
+ * Returns: %TRUE if the @mount can be ejected.
+ */
+
+
+/**
+ * g_mount_can_unmount:
+ * @mount: a #GMount.
  *
- * Returns: %TRUE if the permission was successfully released
- * Since: 2.26
+ * Checks if @mount can be unmounted.
+ *
+ * Returns: %TRUE if the @mount can be unmounted.
  */
 
 
 /**
- * g_pollable_input_stream_can_poll:
- * @stream: a #GPollableInputStream.
+ * g_mount_eject:
+ * @mount: a #GMount.
+ * @flags: flags affecting the unmount if required for eject
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data passed to @callback.
  *
- * Checks if @stream is actually pollable. Some classes may implement
- * #GPollableInputStream but have only certain instances of that class
- * be pollable. If this method returns %FALSE, then the behavior of
- * other #GPollableInputStream methods is undefined.
+ * Ejects a mount. This is an asynchronous operation, and is
+ * finished by calling g_mount_eject_finish() with the @mount
+ * and #GAsyncResult data returned in the @callback.
  *
- * For any given stream, the value returned by this method is constant;
- * a stream cannot switch from pollable to non-pollable or vice versa.
+ * Deprecated: 2.22: Use g_mount_eject_with_operation() instead.
+ */
+
+
+/**
+ * g_mount_eject_finish:
+ * @mount: a #GMount.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * Returns: %TRUE if @stream is pollable, %FALSE if not.
- * Since: 2.28
+ * Finishes ejecting a mount. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
+ *
+ * Returns: %TRUE if the mount was successfully ejected. %FALSE otherwise.
+ * Deprecated: 2.22: Use g_mount_eject_with_operation_finish() instead.
  */
 
 
 /**
- * g_pollable_input_stream_create_source:
- * @stream: a #GPollableInputStream.
- * @cancellable: (nullable): a #GCancellable, or %NULL
+ * g_mount_eject_with_operation:
+ * @mount: a #GMount.
+ * @flags: flags affecting the unmount if required for eject
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data passed to @callback.
  *
- * Creates a #GSource that triggers when @stream can be read, or
- * @cancellable is triggered or an error occurs. The callback on the
- * source is of the #GPollableSourceFunc type.
+ * Ejects a mount. This is an asynchronous operation, and is
+ * finished by calling g_mount_eject_with_operation_finish() with the @mount
+ * and #GAsyncResult data returned in the @callback.
+ *
+ * Since: 2.22
+ */
+
+
+/**
+ * g_mount_eject_with_operation_finish:
+ * @mount: a #GMount.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * As with g_pollable_input_stream_is_readable(), it is possible that
- * the stream may not actually be readable even after the source
- * triggers, so you should use g_pollable_input_stream_read_nonblocking()
- * rather than g_input_stream_read() from the callback.
+ * Finishes ejecting a mount. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * Returns: (transfer full): a new #GSource
- * Since: 2.28
+ * Returns: %TRUE if the mount was successfully ejected. %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_pollable_input_stream_is_readable:
- * @stream: a #GPollableInputStream.
- *
- * Checks if @stream can be read.
+ * g_mount_get_default_location:
+ * @mount: a #GMount.
  *
- * Note that some stream types may not be able to implement this 100%
- * reliably, and it is possible that a call to g_input_stream_read()
- * after this returns %TRUE would still block. To guarantee
- * non-blocking behavior, you should always use
- * g_pollable_input_stream_read_nonblocking(), which will return a
- * %G_IO_ERROR_WOULD_BLOCK error rather than blocking.
+ * Gets the default location of @mount. The default location of the given
+ * @mount is a path that reflects the main entry point for the user (e.g.
+ * the home directory, or the root of the volume).
  *
- * Returns: %TRUE if @stream is readable, %FALSE if not. If an error
- *   has occurred on @stream, this will result in
- *   g_pollable_input_stream_is_readable() returning %TRUE, and the
- *   next attempt to read will return the error.
- * Since: 2.28
+ * Returns: (transfer full): a #GFile.
+ *      The returned object should be unreffed with
+ *      g_object_unref() when no longer needed.
  */
 
 
 /**
- * g_pollable_input_stream_read_nonblocking: (virtual read_nonblocking)
- * @stream: a #GPollableInputStream
- * @buffer: (array length=count) (element-type guint8): a buffer to
- *     read data into (which should be at least @count bytes long).
- * @count: the number of bytes you want to read
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_mount_get_drive:
+ * @mount: a #GMount.
  *
- * Attempts to read up to @count bytes from @stream into @buffer, as
- * with g_input_stream_read(). If @stream is not currently readable,
- * this will immediately return %G_IO_ERROR_WOULD_BLOCK, and you can
- * use g_pollable_input_stream_create_source() to create a #GSource
- * that will be triggered when @stream is readable.
+ * Gets the drive for the @mount.
  *
- * Note that since this method never blocks, you cannot actually
- * use @cancellable to cancel it. However, it will return an error
- * if @cancellable has already been cancelled when you call, which
- * may happen if you call this method after a source triggers due
- * to having been cancelled.
+ * This is a convenience method for getting the #GVolume and then
+ * using that object to get the #GDrive.
  *
- * Returns: the number of bytes read, or -1 on error (including
- *   %G_IO_ERROR_WOULD_BLOCK).
+ * Returns: (transfer full) (nullable): a #GDrive or %NULL if @mount is not
+ *      associated with a volume or a drive.
+ *      The returned object should be unreffed with
+ *      g_object_unref() when no longer needed.
  */
 
 
 /**
- * g_pollable_output_stream_can_poll:
- * @stream: a #GPollableOutputStream.
- *
- * Checks if @stream is actually pollable. Some classes may implement
- * #GPollableOutputStream but have only certain instances of that
- * class be pollable. If this method returns %FALSE, then the behavior
- * of other #GPollableOutputStream methods is undefined.
+ * g_mount_get_icon:
+ * @mount: a #GMount.
  *
- * For any given stream, the value returned by this method is constant;
- * a stream cannot switch from pollable to non-pollable or vice versa.
+ * Gets the icon for @mount.
  *
- * Returns: %TRUE if @stream is pollable, %FALSE if not.
- * Since: 2.28
+ * Returns: (transfer full): a #GIcon.
+ *      The returned object should be unreffed with
+ *      g_object_unref() when no longer needed.
  */
 
 
 /**
- * g_pollable_output_stream_create_source:
- * @stream: a #GPollableOutputStream.
- * @cancellable: (nullable): a #GCancellable, or %NULL
- *
- * Creates a #GSource that triggers when @stream can be written, or
- * @cancellable is triggered or an error occurs. The callback on the
- * source is of the #GPollableSourceFunc type.
+ * g_mount_get_name:
+ * @mount: a #GMount.
  *
- * As with g_pollable_output_stream_is_writable(), it is possible that
- * the stream may not actually be writable even after the source
- * triggers, so you should use g_pollable_output_stream_write_nonblocking()
- * rather than g_output_stream_write() from the callback.
+ * Gets the name of @mount.
  *
- * Returns: (transfer full): a new #GSource
- * Since: 2.28
+ * Returns: the name for the given @mount.
+ *     The returned string should be freed with g_free()
+ *     when no longer needed.
  */
 
 
 /**
- * g_pollable_output_stream_is_writable:
- * @stream: a #GPollableOutputStream.
- *
- * Checks if @stream can be written.
+ * g_mount_get_root:
+ * @mount: a #GMount.
  *
- * Note that some stream types may not be able to implement this 100%
- * reliably, and it is possible that a call to g_output_stream_write()
- * after this returns %TRUE would still block. To guarantee
- * non-blocking behavior, you should always use
- * g_pollable_output_stream_write_nonblocking(), which will return a
- * %G_IO_ERROR_WOULD_BLOCK error rather than blocking.
+ * Gets the root directory on @mount.
  *
- * Returns: %TRUE if @stream is writable, %FALSE if not. If an error
- *   has occurred on @stream, this will result in
- *   g_pollable_output_stream_is_writable() returning %TRUE, and the
- *   next attempt to write will return the error.
- * Since: 2.28
+ * Returns: (transfer full): a #GFile.
+ *      The returned object should be unreffed with
+ *      g_object_unref() when no longer needed.
  */
 
 
 /**
- * g_pollable_output_stream_write_nonblocking: (virtual write_nonblocking)
- * @stream: a #GPollableOutputStream
- * @buffer: (array length=count) (element-type guint8): a buffer to write
- *     data from
- * @count: the number of bytes you want to write
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Attempts to write up to @count bytes from @buffer to @stream, as
- * with g_output_stream_write(). If @stream is not currently writable,
- * this will immediately return %G_IO_ERROR_WOULD_BLOCK, and you can
- * use g_pollable_output_stream_create_source() to create a #GSource
- * that will be triggered when @stream is writable.
- *
- * Note that since this method never blocks, you cannot actually
- * use @cancellable to cancel it. However, it will return an error
- * if @cancellable has already been cancelled when you call, which
- * may happen if you call this method after a source triggers due
- * to having been cancelled.
+ * g_mount_get_sort_key:
+ * @mount: A #GMount.
  *
- * Also note that if %G_IO_ERROR_WOULD_BLOCK is returned some underlying
- * transports like D/TLS require that you send the same @buffer and @count.
+ * Gets the sort key for @mount, if any.
  *
- * Returns: the number of bytes written, or -1 on error (including
- *   %G_IO_ERROR_WOULD_BLOCK).
+ * Returns: (nullable): Sorting key for @mount or %NULL if no such key is available.
+ * Since: 2.32
  */
 
 
 /**
- * g_pollable_source_new:
- * @pollable_stream: the stream associated with the new source
+ * g_mount_get_symbolic_icon:
+ * @mount: a #GMount.
  *
- * Utility method for #GPollableInputStream and #GPollableOutputStream
- * implementations. Creates a new #GSource that expects a callback of
- * type #GPollableSourceFunc. The new source does not actually do
- * anything on its own; use g_source_add_child_source() to add other
- * sources to it to cause it to trigger.
+ * Gets the symbolic icon for @mount.
  *
- * Returns: (transfer full): the new #GSource.
- * Since: 2.28
+ * Returns: (transfer full): a #GIcon.
+ *      The returned object should be unreffed with
+ *      g_object_unref() when no longer needed.
+ * Since: 2.34
  */
 
 
 /**
- * g_pollable_source_new_full:
- * @pollable_stream: (type GObject): the stream associated with the
- *   new source
- * @child_source: (nullable): optional child source to attach
- * @cancellable: (nullable): optional #GCancellable to attach
+ * g_mount_get_uuid:
+ * @mount: a #GMount.
  *
- * Utility method for #GPollableInputStream and #GPollableOutputStream
- * implementations. Creates a new #GSource, as with
- * g_pollable_source_new(), but also attaching @child_source (with a
- * dummy callback), and @cancellable, if they are non-%NULL.
+ * Gets the UUID for the @mount. The reference is typically based on
+ * the file system UUID for the mount in question and should be
+ * considered an opaque string. Returns %NULL if there is no UUID
+ * available.
  *
- * Returns: (transfer full): the new #GSource.
- * Since: 2.34
+ * Returns: (nullable) (transfer full): the UUID for @mount or %NULL if no UUID
+ *     can be computed.
+ *     The returned string should be freed with g_free()
+ *     when no longer needed.
  */
 
 
 /**
- * g_pollable_stream_read:
- * @stream: a #GInputStream
- * @buffer: (array length=count) (element-type guint8): a buffer to
- *   read data into
- * @count: the number of bytes to read
- * @blocking: whether to do blocking I/O
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
- *
- * Tries to read from @stream, as with g_input_stream_read() (if
- * @blocking is %TRUE) or g_pollable_input_stream_read_nonblocking()
- * (if @blocking is %FALSE). This can be used to more easily share
- * code between blocking and non-blocking implementations of a method.
+ * g_mount_get_volume:
+ * @mount: a #GMount.
  *
- * If @blocking is %FALSE, then @stream must be a
- * #GPollableInputStream for which g_pollable_input_stream_can_poll()
- * returns %TRUE, or else the behavior is undefined. If @blocking is
- * %TRUE, then @stream does not need to be a #GPollableInputStream.
+ * Gets the volume for the @mount.
  *
- * Returns: the number of bytes read, or -1 on error.
- * Since: 2.34
+ * Returns: (transfer full) (nullable): a #GVolume or %NULL if @mount is not
+ *      associated with a volume.
+ *      The returned object should be unreffed with
+ *      g_object_unref() when no longer needed.
  */
 
 
 /**
- * g_pollable_stream_write:
- * @stream: a #GOutputStream.
- * @buffer: (array length=count) (element-type guint8): the buffer
- *   containing the data to write.
- * @count: the number of bytes to write
- * @blocking: whether to do blocking I/O
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
+ * g_mount_guess_content_type:
+ * @mount: a #GMount
+ * @force_rescan: Whether to force a rescan of the content.
+ *     Otherwise a cached result will be used if available
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: a #GAsyncReadyCallback
+ * @user_data: user data passed to @callback
  *
- * Tries to write to @stream, as with g_output_stream_write() (if
- * @blocking is %TRUE) or g_pollable_output_stream_write_nonblocking()
- * (if @blocking is %FALSE). This can be used to more easily share
- * code between blocking and non-blocking implementations of a method.
+ * Tries to guess the type of content stored on @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
+ * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
+ * specification for more on x-content types.
  *
- * If @blocking is %FALSE, then @stream must be a
- * #GPollableOutputStream for which
- * g_pollable_output_stream_can_poll() returns %TRUE or else the
- * behavior is undefined. If @blocking is %TRUE, then @stream does not
- * need to be a #GPollableOutputStream.
+ * This is an asynchronous operation (see
+ * g_mount_guess_content_type_sync() for the synchronous version), and
+ * is finished by calling g_mount_guess_content_type_finish() with the
+ * @mount and #GAsyncResult data returned in the @callback.
  *
- * Returns: the number of bytes written, or -1 on error.
- * Since: 2.34
+ * Since: 2.18
  */
 
 
 /**
- * g_pollable_stream_write_all:
- * @stream: a #GOutputStream.
- * @buffer: (array length=count) (element-type guint8): the buffer
- *   containing the data to write.
- * @count: the number of bytes to write
- * @blocking: whether to do blocking I/O
- * @bytes_written: (out): location to store the number of bytes that was
- *   written to the stream
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: location to store the error occurring, or %NULL to ignore
+ * g_mount_guess_content_type_finish:
+ * @mount: a #GMount
+ * @result: a #GAsyncResult
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore
  *
- * Tries to write @count bytes to @stream, as with
- * g_output_stream_write_all(), but using g_pollable_stream_write()
- * rather than g_output_stream_write().
+ * Finishes guessing content types of @mount. If any errors occurred
+ * during the operation, @error will be set to contain the errors and
+ * %FALSE will be returned. In particular, you may get an
+ * %G_IO_ERROR_NOT_SUPPORTED if the mount does not support content
+ * guessing.
  *
- * On a successful write of @count bytes, %TRUE is returned, and
- * @bytes_written is set to @count.
+ * Returns: (transfer full) (element-type utf8): a %NULL-terminated array of content types or %NULL on error.
+ *     Caller should free this array with g_strfreev() when done with it.
+ * Since: 2.18
+ */
+
+
+/**
+ * g_mount_guess_content_type_sync:
+ * @mount: a #GMount
+ * @force_rescan: Whether to force a rescan of the content.
+ *     Otherwise a cached result will be used if available
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore
  *
- * If there is an error during the operation (including
- * %G_IO_ERROR_WOULD_BLOCK in the non-blocking case), %FALSE is
- * returned and @error is set to indicate the error status,
- * @bytes_written is updated to contain the number of bytes written
- * into the stream before the error occurred.
+ * Tries to guess the type of content stored on @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
+ * [shared-mime-info](http://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec)
+ * specification for more on x-content types.
  *
- * As with g_pollable_stream_write(), if @blocking is %FALSE, then
- * @stream must be a #GPollableOutputStream for which
- * g_pollable_output_stream_can_poll() returns %TRUE or else the
- * behavior is undefined. If @blocking is %TRUE, then @stream does not
- * need to be a #GPollableOutputStream.
+ * This is an synchronous operation and as such may block doing IO;
+ * see g_mount_guess_content_type() for the asynchronous version.
  *
- * Returns: %TRUE on success, %FALSE if there was an error
- * Since: 2.34
+ * Returns: (transfer full) (element-type utf8): a %NULL-terminated array of content types or %NULL on error.
+ *     Caller should free this array with g_strfreev() when done with it.
+ * Since: 2.18
  */
 
 
 /**
- * g_property_action_new:
- * @name: the name of the action to create
- * @object: (type GObject.Object): the object that has the property
- *   to wrap
- * @property_name: the name of the property
+ * g_mount_is_shadowed:
+ * @mount: A #GMount.
  *
- * Creates a #GAction corresponding to the value of property
- * @property_name on @object.
+ * Determines if @mount is shadowed. Applications or libraries should
+ * avoid displaying @mount in the user interface if it is shadowed.
  *
- * The property must be existent and readable and writable (and not
- * construct-only).
+ * A mount is said to be shadowed if there exists one or more user
+ * visible objects (currently #GMount objects) with a root that is
+ * inside the root of @mount.
  *
- * This function takes a reference on @object and doesn't release it
- * until the action is destroyed.
+ * One application of shadow mounts is when exposing a single file
+ * system that is used to address several logical volumes. In this
+ * situation, a #GVolumeMonitor implementation would create two
+ * #GVolume objects (for example, one for the camera functionality of
+ * the device and one for a SD card reader on the device) with
+ * activation URIs `gphoto2://[usb:001,002]/store1/`
+ * and `gphoto2://[usb:001,002]/store2/`. When the
+ * underlying mount (with root
+ * `gphoto2://[usb:001,002]/`) is mounted, said
+ * #GVolumeMonitor implementation would create two #GMount objects
+ * (each with their root matching the corresponding volume activation
+ * root) that would shadow the original mount.
  *
- * Returns: a new #GPropertyAction
- * Since: 2.38
+ * The proxy monitor in GVfs 2.26 and later, automatically creates and
+ * manage shadow mounts (and shadows the underlying mount) if the
+ * activation root on a #GVolume is set.
+ *
+ * Returns: %TRUE if @mount is shadowed.
+ * Since: 2.20
  */
 
 
 /**
- * g_proxy_address_get_destination_hostname:
- * @proxy: a #GProxyAddress
+ * g_mount_operation_get_anonymous:
+ * @op: a #GMountOperation.
  *
- * Gets @proxy's destination hostname; that is, the name of the host
- * that will be connected to via the proxy, not the name of the proxy
- * itself.
+ * Check to see whether the mount operation is being used
+ * for an anonymous user.
  *
- * Returns: the @proxy's destination hostname
- * Since: 2.26
+ * Returns: %TRUE if mount operation is anonymous.
  */
 
 
 /**
- * g_proxy_address_get_destination_port:
- * @proxy: a #GProxyAddress
+ * g_mount_operation_get_choice:
+ * @op: a #GMountOperation.
  *
- * Gets @proxy's destination port; that is, the port on the
- * destination host that will be connected to via the proxy, not the
- * port number of the proxy itself.
+ * Gets a choice from the mount operation.
  *
- * Returns: the @proxy's destination port
- * Since: 2.26
+ * Returns: an integer containing an index of the user's choice from
+ * the choice's list, or %0.
  */
 
 
 /**
- * g_proxy_address_get_destination_protocol:
- * @proxy: a #GProxyAddress
+ * g_mount_operation_get_domain:
+ * @op: a #GMountOperation.
  *
- * Gets the protocol that is being spoken to the destination
- * server; eg, "http" or "ftp".
+ * Gets the domain of the mount operation.
  *
- * Returns: the @proxy's destination protocol
- * Since: 2.34
+ * Returns: a string set to the domain.
  */
 
 
 /**
- * g_proxy_address_get_password:
- * @proxy: a #GProxyAddress
+ * g_mount_operation_get_is_tcrypt_hidden_volume:
+ * @op: a #GMountOperation.
  *
- * Gets @proxy's password.
+ * Check to see whether the mount operation is being used
+ * for a TCRYPT hidden volume.
  *
- * Returns: the @proxy's password
- * Since: 2.26
+ * Returns: %TRUE if mount operation is for hidden volume.
+ * Since: 2.58
  */
 
 
 /**
- * g_proxy_address_get_protocol:
- * @proxy: a #GProxyAddress
+ * g_mount_operation_get_is_tcrypt_system_volume:
+ * @op: a #GMountOperation.
  *
- * Gets @proxy's protocol. eg, "socks" or "http"
+ * Check to see whether the mount operation is being used
+ * for a TCRYPT system volume.
  *
- * Returns: the @proxy's protocol
- * Since: 2.26
+ * Returns: %TRUE if mount operation is for system volume.
+ * Since: 2.58
  */
 
 
 /**
- * g_proxy_address_get_uri:
- * @proxy: a #GProxyAddress
+ * g_mount_operation_get_password:
+ * @op: a #GMountOperation.
  *
- * Gets the proxy URI that @proxy was constructed from.
+ * Gets a password from the mount operation.
  *
- * Returns: the @proxy's URI, or %NULL if unknown
- * Since: 2.34
+ * Returns: a string containing the password within @op.
  */
 
 
 /**
- * g_proxy_address_get_username:
- * @proxy: a #GProxyAddress
+ * g_mount_operation_get_password_save:
+ * @op: a #GMountOperation.
  *
- * Gets @proxy's username.
+ * Gets the state of saving passwords for the mount operation.
  *
- * Returns: the @proxy's username
- * Since: 2.26
+ * Returns: a #GPasswordSave flag.
  */
 
 
 /**
- * g_proxy_address_new:
- * @inetaddr: The proxy server #GInetAddress.
- * @port: The proxy server port.
- * @protocol: The proxy protocol to support, in lower case (e.g. socks, http).
- * @dest_hostname: The destination hostname the proxy should tunnel to.
- * @dest_port: The destination port to tunnel to.
- * @username: (nullable): The username to authenticate to the proxy server
- *     (or %NULL).
- * @password: (nullable): The password to authenticate to the proxy server
- *     (or %NULL).
- *
- * Creates a new #GProxyAddress for @inetaddr with @protocol that should
- * tunnel through @dest_hostname and @dest_port.
+ * g_mount_operation_get_pim:
+ * @op: a #GMountOperation.
  *
- * (Note that this method doesn't set the #GProxyAddress:uri or
- * #GProxyAddress:destination-protocol fields; use g_object_new()
- * directly if you want to set those.)
+ * Gets a PIM from the mount operation.
  *
- * Returns: a new #GProxyAddress
- * Since: 2.26
+ * Returns: The VeraCrypt PIM within @op.
+ * Since: 2.58
  */
 
 
 /**
- * g_proxy_connect:
- * @proxy: a #GProxy
- * @connection: a #GIOStream
- * @proxy_address: a #GProxyAddress
- * @cancellable: (nullable): a #GCancellable
- * @error: return #GError
+ * g_mount_operation_get_username:
+ * @op: a #GMountOperation.
  *
- * Given @connection to communicate with a proxy (eg, a
- * #GSocketConnection that is connected to the proxy server), this
- * does the necessary handshake to connect to @proxy_address, and if
- * required, wraps the #GIOStream to handle proxy payload.
+ * Get the user name from the mount operation.
  *
- * Returns: (transfer full): a #GIOStream that will replace @connection. This might
- *               be the same as @connection, in which case a reference
- *               will be added.
- * Since: 2.26
+ * Returns: a string containing the user name.
  */
 
 
 /**
- * g_proxy_connect_async:
- * @proxy: a #GProxy
- * @connection: a #GIOStream
- * @proxy_address: a #GProxyAddress
- * @cancellable: (nullable): a #GCancellable
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): callback data
+ * g_mount_operation_new:
  *
- * Asynchronous version of g_proxy_connect().
+ * Creates a new mount operation.
  *
- * Since: 2.26
+ * Returns: a #GMountOperation.
  */
 
 
 /**
- * g_proxy_connect_finish:
- * @proxy: a #GProxy
- * @result: a #GAsyncResult
- * @error: return #GError
- *
- * See g_proxy_connect().
+ * g_mount_operation_reply:
+ * @op: a #GMountOperation
+ * @result: a #GMountOperationResult
  *
- * Returns: (transfer full): a #GIOStream.
- * Since: 2.26
+ * Emits the #GMountOperation::reply signal.
  */
 
 
 /**
- * g_proxy_get_default_for_protocol:
- * @protocol: the proxy protocol name (e.g. http, socks, etc)
- *
- * Lookup "gio-proxy" extension point for a proxy implementation that supports
- * specified protocol.
+ * g_mount_operation_set_anonymous:
+ * @op: a #GMountOperation.
+ * @anonymous: boolean value.
  *
- * Returns: (transfer full): return a #GProxy or NULL if protocol
- *               is not supported.
- * Since: 2.26
+ * Sets the mount operation to use an anonymous user if @anonymous is %TRUE.
  */
 
 
 /**
- * g_proxy_resolver_get_default:
- *
- * Gets the default #GProxyResolver for the system.
+ * g_mount_operation_set_choice:
+ * @op: a #GMountOperation.
+ * @choice: an integer.
  *
- * Returns: (transfer none): the default #GProxyResolver.
- * Since: 2.26
+ * Sets a default choice for the mount operation.
  */
 
 
 /**
- * g_proxy_resolver_is_supported:
- * @resolver: a #GProxyResolver
- *
- * Checks if @resolver can be used on this system. (This is used
- * internally; g_proxy_resolver_get_default() will only return a proxy
- * resolver that returns %TRUE for this method.)
+ * g_mount_operation_set_domain:
+ * @op: a #GMountOperation.
+ * @domain: the domain to set.
  *
- * Returns: %TRUE if @resolver is supported.
- * Since: 2.26
+ * Sets the mount operation's domain.
  */
 
 
 /**
- * g_proxy_resolver_lookup:
- * @resolver: a #GProxyResolver
- * @uri: a URI representing the destination to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * 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.
- *
- * 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).
+ * g_mount_operation_set_is_tcrypt_hidden_volume:
+ * @op: a #GMountOperation.
+ * @hidden_volume: boolean value.
  *
- * `direct://` is used when no proxy is needed.
- * Direct connection should not be attempted unless it is part of the
- * returned array of proxies.
+ * Sets the mount operation to use a hidden volume if @hidden_volume is %TRUE.
  *
- * Returns: (transfer full) (array zero-terminated=1): A
- *               NULL-terminated array of proxy URIs. Must be freed
- *               with g_strfreev().
- * Since: 2.26
+ * Since: 2.58
  */
 
 
 /**
- * g_proxy_resolver_lookup_async:
- * @resolver: a #GProxyResolver
- * @uri: a URI representing the destination to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): callback to call after resolution completes
- * @user_data: (closure): data for @callback
+ * g_mount_operation_set_is_tcrypt_system_volume:
+ * @op: a #GMountOperation.
+ * @system_volume: boolean value.
  *
- * Asynchronous lookup of proxy. See g_proxy_resolver_lookup() for more
- * details.
+ * Sets the mount operation to use a system volume if @system_volume is %TRUE.
  *
- * Since: 2.26
+ * Since: 2.58
  */
 
 
 /**
- * g_proxy_resolver_lookup_finish:
- * @resolver: a #GProxyResolver
- * @result: the result passed to your #GAsyncReadyCallback
- * @error: return location for a #GError, or %NULL
- *
- * Call this function to obtain the array of proxy URIs when
- * g_proxy_resolver_lookup_async() is complete. See
- * g_proxy_resolver_lookup() for more details.
+ * g_mount_operation_set_password:
+ * @op: a #GMountOperation.
+ * @password: password to set.
  *
- * Returns: (transfer full) (array zero-terminated=1): A
- *               NULL-terminated array of proxy URIs. Must be freed
- *               with g_strfreev().
- * Since: 2.26
+ * Sets the mount operation's password to @password.
  */
 
 
 /**
- * g_proxy_supports_hostname:
- * @proxy: a #GProxy
- *
- * Some proxy protocols expect to be passed a hostname, which they
- * will resolve to an IP address themselves. Others, like SOCKS4, do
- * not allow this. This function will return %FALSE if @proxy is
- * implementing such a protocol. When %FALSE is returned, the caller
- * should resolve the destination hostname first, and then pass a
- * #GProxyAddress containing the stringified IP address to
- * g_proxy_connect() or g_proxy_connect_async().
+ * g_mount_operation_set_password_save:
+ * @op: a #GMountOperation.
+ * @save: a set of #GPasswordSave flags.
  *
- * Returns: %TRUE if hostname resolution is supported.
- * Since: 2.26
+ * Sets the state of saving passwords for the mount operation.
  */
 
 
 /**
- * g_remote_action_group_activate_action_full:
- * @remote: a #GDBusActionGroup
- * @action_name: the name of the action to activate
- * @parameter: (nullable): the optional parameter to the activation
- * @platform_data: the platform data to send
- *
- * Activates the remote action.
- *
- * This is the same as g_action_group_activate_action() except that it
- * allows for provision of "platform data" to be sent along with the
- * activation request.  This typically contains details such as the user
- * interaction timestamp or startup notification information.
+ * g_mount_operation_set_pim:
+ * @op: a #GMountOperation.
+ * @pim: an unsigned integer.
  *
- * @platform_data must be non-%NULL and must have the type
- * %G_VARIANT_TYPE_VARDICT.  If it is floating, it will be consumed.
+ * Sets the mount operation's PIM to @pim.
  *
- * Since: 2.32
+ * Since: 2.58
  */
 
 
 /**
- * g_remote_action_group_change_action_state_full:
- * @remote: a #GRemoteActionGroup
- * @action_name: the name of the action to change the state of
- * @value: the new requested value for the state
- * @platform_data: the platform data to send
- *
- * Changes the state of a remote action.
- *
- * This is the same as g_action_group_change_action_state() except that
- * it allows for provision of "platform data" to be sent along with the
- * state change request.  This typically contains details such as the
- * user interaction timestamp or startup notification information.
- *
- * @platform_data must be non-%NULL and must have the type
- * %G_VARIANT_TYPE_VARDICT.  If it is floating, it will be consumed.
+ * g_mount_operation_set_username:
+ * @op: a #GMountOperation.
+ * @username: input username.
  *
- * Since: 2.32
+ * Sets the user name within @op to @username.
  */
 
 
 /**
- * g_resolver_error_quark:
+ * g_mount_remount:
+ * @mount: a #GMount.
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data passed to @callback.
  *
- * Gets the #GResolver Error Quark.
+ * Remounts a mount. This is an asynchronous operation, and is
+ * finished by calling g_mount_remount_finish() with the @mount
+ * and #GAsyncResults data returned in the @callback.
  *
- * Returns: a #GQuark.
- * Since: 2.22
+ * Remounting is useful when some setting affecting the operation
+ * of the volume has been changed, as these 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.
  */
 
 
 /**
- * g_resolver_free_addresses: (skip)
- * @addresses: a #GList of #GInetAddress
+ * g_mount_remount_finish:
+ * @mount: a #GMount.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * Frees @addresses (which should be the return value from
- * g_resolver_lookup_by_name() or g_resolver_lookup_by_name_finish()).
- * (This is a convenience method; you can also simply free the results
- * by hand.)
+ * Finishes remounting a mount. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * Since: 2.22
+ * Returns: %TRUE if the mount was successfully remounted. %FALSE otherwise.
  */
 
 
 /**
- * g_resolver_free_targets: (skip)
- * @targets: a #GList of #GSrvTarget
+ * g_mount_shadow:
+ * @mount: A #GMount.
  *
- * Frees @targets (which should be the return value from
- * g_resolver_lookup_service() or g_resolver_lookup_service_finish()).
- * (This is a convenience method; you can also simply free the
- * results by hand.)
+ * Increments the shadow count on @mount. Usually used by
+ * #GVolumeMonitor implementations when creating a shadow mount for
+ * @mount, see g_mount_is_shadowed() for more information. The caller
+ * will need to emit the #GMount::changed signal on @mount manually.
  *
- * Since: 2.22
+ * Since: 2.20
  */
 
 
 /**
- * g_resolver_get_default:
+ * g_mount_unmount:
+ * @mount: a #GMount.
+ * @flags: flags affecting the operation
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data passed to @callback.
  *
- * Gets the default #GResolver. You should unref it when you are done
- * with it. #GResolver may use its reference count as a hint about how
- * many threads it should allocate for concurrent DNS resolutions.
+ * Unmounts a mount. This is an asynchronous operation, and is
+ * finished by calling g_mount_unmount_finish() with the @mount
+ * and #GAsyncResult data returned in the @callback.
  *
- * Returns: (transfer full): the default #GResolver.
- * Since: 2.22
+ * Deprecated: 2.22: Use g_mount_unmount_with_operation() instead.
  */
 
 
 /**
- * g_resolver_lookup_by_address:
- * @resolver: a #GResolver
- * @address: the address to reverse-resolve
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * Synchronously reverse-resolves @address to determine its
- * associated hostname.
- *
- * If the DNS resolution fails, @error (if non-%NULL) will be set to
- * a value from #GResolverError.
+ * g_mount_unmount_finish:
+ * @mount: a #GMount.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * If @cancellable is non-%NULL, it can be used to cancel the
- * operation, in which case @error (if non-%NULL) will be set to
- * %G_IO_ERROR_CANCELLED.
+ * Finishes unmounting a mount. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * Returns: a hostname (either ASCII-only, or in ASCII-encoded
- *     form), or %NULL on error.
- * Since: 2.22
+ * Returns: %TRUE if the mount was successfully unmounted. %FALSE otherwise.
+ * Deprecated: 2.22: Use g_mount_unmount_with_operation_finish() instead.
  */
 
 
 /**
- * g_resolver_lookup_by_address_async:
- * @resolver: a #GResolver
- * @address: the address to reverse-resolve
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): callback to call after resolution completes
- * @user_data: (closure): data for @callback
+ * g_mount_unmount_with_operation:
+ * @mount: a #GMount.
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid
+ *     user interaction.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL.
+ * @user_data: user data passed to @callback.
  *
- * Begins asynchronously reverse-resolving @address to determine its
- * associated hostname, and eventually calls @callback, which must
- * call g_resolver_lookup_by_address_finish() to get the final result.
+ * Unmounts a mount. This is an asynchronous operation, and is
+ * finished by calling g_mount_unmount_with_operation_finish() with the @mount
+ * and #GAsyncResult data returned in the @callback.
  *
  * Since: 2.22
  */
 
 
 /**
- * g_resolver_lookup_by_address_finish:
- * @resolver: a #GResolver
- * @result: the result passed to your #GAsyncReadyCallback
- * @error: return location for a #GError, or %NULL
- *
- * Retrieves the result of a previous call to
- * g_resolver_lookup_by_address_async().
+ * g_mount_unmount_with_operation_finish:
+ * @mount: a #GMount.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ *     ignore.
  *
- * If the DNS resolution failed, @error (if non-%NULL) will be set to
- * a value from #GResolverError. If the operation was cancelled,
- * @error will be set to %G_IO_ERROR_CANCELLED.
+ * Finishes unmounting a mount. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * Returns: a hostname (either ASCII-only, or in ASCII-encoded
- * form), or %NULL on error.
+ * Returns: %TRUE if the mount was successfully unmounted. %FALSE otherwise.
  * Since: 2.22
  */
 
 
 /**
- * g_resolver_lookup_by_name:
- * @resolver: a #GResolver
- * @hostname: the hostname to look up
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * Synchronously resolves @hostname to determine its associated IP
- * address(es). @hostname may be an ASCII-only or UTF-8 hostname, or
- * the textual form of an IP address (in which case this just becomes
- * a wrapper around g_inet_address_new_from_string()).
- *
- * On success, g_resolver_lookup_by_name() will return a non-empty #GList of
- * #GInetAddress, sorted in order of preference and guaranteed to not
- * contain duplicates. That is, if using the result to connect to
- * @hostname, you should attempt to connect to the first address
- * first, then the second if the first fails, etc. If you are using
- * the result to listen on a socket, it is appropriate to add each
- * result using e.g. g_socket_listener_add_address().
- *
- * If the DNS resolution fails, @error (if non-%NULL) will be set to a
- * value from #GResolverError and %NULL will be returned.
- *
- * If @cancellable is non-%NULL, it can be used to cancel the
- * operation, in which case @error (if non-%NULL) will be set to
- * %G_IO_ERROR_CANCELLED.
+ * g_mount_unshadow:
+ * @mount: A #GMount.
  *
- * If you are planning to connect to a socket on the resolved IP
- * address, it may be easier to create a #GNetworkAddress and use its
- * #GSocketConnectable interface.
+ * Decrements the shadow count on @mount. Usually used by
+ * #GVolumeMonitor implementations when destroying a shadow mount for
+ * @mount, see g_mount_is_shadowed() for more information. The caller
+ * will need to emit the #GMount::changed signal on @mount manually.
  *
- * Returns: (element-type GInetAddress) (transfer full): a non-empty #GList
- * of #GInetAddress, or %NULL on error. You
- * must unref each of the addresses and free the list when you are
- * done with it. (You can use g_resolver_free_addresses() to do this.)
- * Since: 2.22
+ * Since: 2.20
  */
 
 
 /**
- * g_resolver_lookup_by_name_async:
- * @resolver: a #GResolver
- * @hostname: the hostname to look up the address of
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): callback to call after resolution completes
- * @user_data: (closure): data for @callback
+ * g_native_socket_address_new:
+ * @native: a native address object
+ * @len: the length of @native, in bytes
  *
- * Begins asynchronously resolving @hostname to determine its
- * associated IP address(es), and eventually calls @callback, which
- * must call g_resolver_lookup_by_name_finish() to get the result.
- * See g_resolver_lookup_by_name() for more details.
+ * Creates a new #GNativeSocketAddress for @native and @len.
  *
- * Since: 2.22
+ * Returns: a new #GNativeSocketAddress
+ * Since: 2.46
  */
 
 
 /**
- * g_resolver_lookup_by_name_finish:
- * @resolver: a #GResolver
- * @result: the result passed to your #GAsyncReadyCallback
- * @error: return location for a #GError, or %NULL
- *
- * Retrieves the result of a call to
- * g_resolver_lookup_by_name_async().
+ * g_network_address_get_hostname:
+ * @addr: a #GNetworkAddress
  *
- * If the DNS resolution failed, @error (if non-%NULL) will be set to
- * a value from #GResolverError. If the operation was cancelled,
- * @error will be set to %G_IO_ERROR_CANCELLED.
+ * Gets @addr's hostname. This might be either UTF-8 or ASCII-encoded,
+ * depending on what @addr was created with.
  *
- * Returns: (element-type GInetAddress) (transfer full): a #GList
- * of #GInetAddress, or %NULL on error. See g_resolver_lookup_by_name()
- * for more details.
+ * Returns: @addr's hostname
  * Since: 2.22
  */
 
 
 /**
- * g_resolver_lookup_records:
- * @resolver: a #GResolver
- * @rrname: the DNS name to lookup the record for
- * @record_type: the type of DNS record to lookup
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * Synchronously performs a DNS record lookup for the given @rrname and returns
- * a list of records as #GVariant tuples. See #GResolverRecordType for
- * information on what the records contain for each @record_type.
- *
- * If the DNS resolution fails, @error (if non-%NULL) will be set to
- * a value from #GResolverError and %NULL will be returned.
+ * g_network_address_get_port:
+ * @addr: a #GNetworkAddress
  *
- * If @cancellable is non-%NULL, it can be used to cancel the
- * operation, in which case @error (if non-%NULL) will be set to
- * %G_IO_ERROR_CANCELLED.
+ * Gets @addr's port number
  *
- * Returns: (element-type GVariant) (transfer full): a non-empty #GList of
- * #GVariant, or %NULL on error. You must free each of the records and the list
- * when you are done with it. (You can use g_list_free_full() with
- * g_variant_unref() to do this.)
- * Since: 2.34
+ * Returns: @addr's port (which may be 0)
+ * Since: 2.22
  */
 
 
 /**
- * g_resolver_lookup_records_async:
- * @resolver: a #GResolver
- * @rrname: the DNS name to lookup the record for
- * @record_type: the type of DNS record to lookup
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): callback to call after resolution completes
- * @user_data: (closure): data for @callback
+ * g_network_address_get_scheme:
+ * @addr: a #GNetworkAddress
  *
- * Begins asynchronously performing a DNS lookup for the given
- * @rrname, and eventually calls @callback, which must call
- * g_resolver_lookup_records_finish() to get the final result. See
- * g_resolver_lookup_records() for more details.
+ * Gets @addr's scheme
  *
- * Since: 2.34
+ * Returns: @addr's scheme (%NULL if not built from URI)
+ * Since: 2.26
  */
 
 
 /**
- * g_resolver_lookup_records_finish:
- * @resolver: a #GResolver
- * @result: the result passed to your #GAsyncReadyCallback
- * @error: return location for a #GError, or %NULL
+ * g_network_address_new:
+ * @hostname: the hostname
+ * @port: the port
  *
- * Retrieves the result of a previous call to
- * g_resolver_lookup_records_async(). Returns a non-empty list of records as
- * #GVariant tuples. See #GResolverRecordType for information on what the
- * records contain.
+ * Creates a new #GSocketConnectable for connecting to the given
+ * @hostname and @port.
  *
- * If the DNS resolution failed, @error (if non-%NULL) will be set to
- * a value from #GResolverError. If the operation was cancelled,
- * @error will be set to %G_IO_ERROR_CANCELLED.
+ * Note that depending on the configuration of the machine, a
+ * @hostname of `localhost` may refer to the IPv4 loopback address
+ * only, or to both IPv4 and IPv6; use
+ * g_network_address_new_loopback() to create a #GNetworkAddress that
+ * is guaranteed to resolve to both addresses.
  *
- * Returns: (element-type GVariant) (transfer full): a non-empty #GList of
- * #GVariant, or %NULL on error. You must free each of the records and the list
- * when you are done with it. (You can use g_list_free_full() with
- * g_variant_unref() to do this.)
- * Since: 2.34
+ * Returns: (transfer full) (type GNetworkAddress): the new #GNetworkAddress
+ * Since: 2.22
  */
 
 
 /**
- * g_resolver_lookup_service:
- * @resolver: a #GResolver
- * @service: the service type to look up (eg, "ldap")
- * @protocol: the networking protocol to use for @service (eg, "tcp")
- * @domain: the DNS domain to look up the service in
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: return location for a #GError, or %NULL
- *
- * Synchronously performs a DNS SRV lookup for the given @service and
- * @protocol in the given @domain and returns an array of #GSrvTarget.
- * @domain may be an ASCII-only or UTF-8 hostname. Note also that the
- * @service and @protocol arguments do not include the leading underscore
- * that appears in the actual DNS entry.
- *
- * On success, g_resolver_lookup_service() will return a non-empty #GList of
- * #GSrvTarget, sorted in order of preference. (That is, you should
- * attempt to connect to the first target first, then the second if
- * the first fails, etc.)
+ * g_network_address_new_loopback:
+ * @port: the port
  *
- * If the DNS resolution fails, @error (if non-%NULL) will be set to
- * a value from #GResolverError and %NULL will be returned.
+ * Creates a new #GSocketConnectable for connecting to the local host
+ * over a loopback connection to the given @port. This is intended for
+ * use in connecting to local services which may be running on IPv4 or
+ * IPv6.
  *
- * If @cancellable is non-%NULL, it can be used to cancel the
- * operation, in which case @error (if non-%NULL) will be set to
- * %G_IO_ERROR_CANCELLED.
+ * The connectable will return IPv4 and IPv6 loopback addresses,
+ * regardless of how the host resolves `localhost`. By contrast,
+ * g_network_address_new() will often only return an IPv4 address when
+ * resolving `localhost`, and an IPv6 address for `localhost6`.
  *
- * If you are planning to connect to the service, it is usually easier
- * to create a #GNetworkService and use its #GSocketConnectable
- * interface.
+ * g_network_address_get_hostname() will always return `localhost` for
+ * #GNetworkAddresses created with this constructor.
  *
- * Returns: (element-type GSrvTarget) (transfer full): a non-empty #GList of
- * #GSrvTarget, or %NULL on error. You must free each of the targets and the
- * list when you are done with it. (You can use g_resolver_free_targets() to do
- * this.)
- * Since: 2.22
+ * Returns: (transfer full) (type GNetworkAddress): the new #GNetworkAddress
+ * Since: 2.44
  */
 
 
 /**
- * g_resolver_lookup_service_async:
- * @resolver: a #GResolver
- * @service: the service type to look up (eg, "ldap")
- * @protocol: the networking protocol to use for @service (eg, "tcp")
- * @domain: the DNS domain to look up the service in
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): callback to call after resolution completes
- * @user_data: (closure): data for @callback
+ * g_network_address_parse:
+ * @host_and_port: the hostname and optionally a port
+ * @default_port: the default port if not in @host_and_port
+ * @error: a pointer to a #GError, or %NULL
  *
- * Begins asynchronously performing a DNS SRV lookup for the given
- * @service and @protocol in the given @domain, and eventually calls
- * @callback, which must call g_resolver_lookup_service_finish() to
- * get the final result. See g_resolver_lookup_service() for more
- * details.
+ * Creates a new #GSocketConnectable for connecting to the given
+ * @hostname and @port. May fail and return %NULL in case
+ * parsing @host_and_port fails.
  *
- * Since: 2.22
- */
-
-
-/**
- * g_resolver_lookup_service_finish:
- * @resolver: a #GResolver
- * @result: the result passed to your #GAsyncReadyCallback
- * @error: return location for a #GError, or %NULL
+ * @host_and_port may be in any of a number of recognised formats; an IPv6
+ * address, an IPv4 address, or a domain name (in which case a DNS
+ * lookup is performed). Quoting with [] is supported for all address
+ * types. A port override may be specified in the usual way with a
+ * colon.
  *
- * Retrieves the result of a previous call to
- * g_resolver_lookup_service_async().
+ * If no port is specified in @host_and_port then @default_port will be
+ * used as the port number to connect to.
  *
- * If the DNS resolution failed, @error (if non-%NULL) will be set to
- * a value from #GResolverError. If the operation was cancelled,
- * @error will be set to %G_IO_ERROR_CANCELLED.
+ * In general, @host_and_port is expected to be provided by the user
+ * (allowing them to give the hostname, and a port override if necessary)
+ * and @default_port is expected to be provided by the application.
  *
- * Returns: (element-type GSrvTarget) (transfer full): a non-empty #GList of
- * #GSrvTarget, or %NULL on error. See g_resolver_lookup_service() for more
- * details.
+ * (The port component of @host_and_port can also be specified as a
+ * service name rather than as a numeric port, but this functionality
+ * is deprecated, because it depends on the contents of /etc/services,
+ * which is generally quite sparse on platforms other than Linux.)
+ *
+ * Returns: (transfer full) (type GNetworkAddress): the new
+ *   #GNetworkAddress, or %NULL on error
  * Since: 2.22
  */
 
 
 /**
- * g_resolver_set_default:
- * @resolver: the new default #GResolver
- *
- * Sets @resolver to be the application's default resolver (reffing
- * @resolver, and unreffing the previous default resolver, if any).
- * Future calls to g_resolver_get_default() will return this resolver.
+ * g_network_address_parse_uri:
+ * @uri: the hostname and optionally a port
+ * @default_port: The default port if none is found in the URI
+ * @error: a pointer to a #GError, or %NULL
  *
- * This can be used if an application wants to perform any sort of DNS
- * caching or "pinning"; it can implement its own #GResolver that
- * calls the original default resolver for DNS operations, and
- * implements its own cache policies on top of that, and then set
- * itself as the default resolver for all later code to use.
+ * Creates a new #GSocketConnectable for connecting to the given
+ * @uri. May fail and return %NULL in case parsing @uri fails.
  *
- * Since: 2.22
+ * Using this rather than g_network_address_new() or
+ * g_network_address_parse() allows #GSocketClient to determine
+ * when to use application-specific proxy protocols.
+ *
+ * Returns: (transfer full) (type GNetworkAddress): the new
+ *   #GNetworkAddress, or %NULL on error
+ * Since: 2.26
  */
 
 
 /**
- * g_resource_enumerate_children:
- * @resource: A #GResource
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @error: return location for a #GError, or %NULL
- *
- * Returns all the names of children at the specified @path in the resource.
- * The return result is a %NULL terminated list of strings which should
- * be released with g_strfreev().
- *
- * If @path is invalid or does not exist in the #GResource,
- * %G_RESOURCE_ERROR_NOT_FOUND will be returned.
+ * g_network_monitor_base_add_network:
+ * @monitor: the #GNetworkMonitorBase
+ * @network: a #GInetAddressMask
  *
- * @lookup_flags controls the behaviour of the lookup.
+ * Adds @network to @monitor's list of available networks.
  *
- * Returns: (array zero-terminated=1) (transfer full): an array of constant strings
  * Since: 2.32
  */
 
 
 /**
- * g_resource_error_quark:
+ * g_network_monitor_base_remove_network:
+ * @monitor: the #GNetworkMonitorBase
+ * @network: a #GInetAddressMask
  *
- * Gets the #GResource Error Quark.
+ * Removes @network from @monitor's list of available networks.
  *
- * Returns: a #GQuark
  * Since: 2.32
  */
 
 
 /**
- * g_resource_get_info:
- * @resource: A #GResource
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @size: (out) (optional): a location to place the length of the contents of the file,
- *    or %NULL if the length is not needed
- * @flags: (out) (optional): a location to place the flags about the file,
- *    or %NULL if the length is not needed
- * @error: return location for a #GError, or %NULL
- *
- * Looks for a file at the specified @path in the resource and
- * if found returns information about it.
- *
- * @lookup_flags controls the behaviour of the lookup.
+ * g_network_monitor_base_set_networks:
+ * @monitor: the #GNetworkMonitorBase
+ * @networks: (array length=length): an array of #GInetAddressMask
+ * @length: length of @networks
  *
- * Returns: %TRUE if the file was found. %FALSE if there were errors
- * Since: 2.32
+ * Drops @monitor's current list of available networks and replaces
+ * it with @networks.
  */
 
 
 /**
- * g_resource_load:
- * @filename: (type filename): the path of a filename to load, in the GLib filename encoding
+ * g_network_monitor_can_reach:
+ * @monitor: a #GNetworkMonitor
+ * @connectable: a #GSocketConnectable
+ * @cancellable: (nullable): a #GCancellable, or %NULL
  * @error: return location for a #GError, or %NULL
  *
- * Loads a binary resource bundle and creates a #GResource representation of it, allowing
- * you to query it for data.
+ * Attempts to determine whether or not the host pointed to by
+ * @connectable can be reached, without actually trying to connect to
+ * it.
  *
- * If you want to use this resource in the global resource namespace you need
- * to register it with g_resources_register().
+ * This may return %TRUE even when #GNetworkMonitor:network-available
+ * is %FALSE, if, for example, @monitor can determine that
+ * @connectable refers to a host on a local network.
  *
- * Returns: (transfer full): a new #GResource, or %NULL on error
+ * If @monitor believes that an attempt to connect to @connectable
+ * will succeed, it will return %TRUE. Otherwise, it will return
+ * %FALSE and set @error to an appropriate error (such as
+ * %G_IO_ERROR_HOST_UNREACHABLE).
+ *
+ * Note that although this does not attempt to connect to
+ * @connectable, it may still block for a brief period of time (eg,
+ * trying to do multicast DNS on the local network), so if you do not
+ * want to block, you should use g_network_monitor_can_reach_async().
+ *
+ * Returns: %TRUE if @connectable is reachable, %FALSE if not.
  * Since: 2.32
  */
 
 
 /**
- * g_resource_lookup_data:
- * @resource: A #GResource
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @error: return location for a #GError, or %NULL
+ * g_network_monitor_can_reach_async:
+ * @monitor: a #GNetworkMonitor
+ * @connectable: a #GSocketConnectable
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ *     request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Looks for a file at the specified @path in the resource and
- * returns a #GBytes that lets you directly access the data in
- * memory.
+ * Asynchronously attempts to determine whether or not the host
+ * pointed to by @connectable can be reached, without actually
+ * trying to connect to it.
  *
- * The data is always followed by a zero byte, so you
- * can safely use the data as a C string. However, that byte
- * is not included in the size of the GBytes.
+ * For more details, see g_network_monitor_can_reach().
  *
- * For uncompressed resource files this is a pointer directly into
- * the resource bundle, which is typically in some readonly data section
- * in the program binary. For compressed files we allocate memory on
- * the heap and automatically uncompress the data.
+ * When the operation is finished, @callback will be called.
+ * You can then call g_network_monitor_can_reach_finish()
+ * to get the result of the operation.
+ */
+
+
+/**
+ * g_network_monitor_can_reach_finish:
+ * @monitor: a #GNetworkMonitor
+ * @result: a #GAsyncResult
+ * @error: return location for errors, or %NULL
  *
- * @lookup_flags controls the behaviour of the lookup.
+ * Finishes an async network connectivity test.
+ * See g_network_monitor_can_reach_async().
  *
- * Returns: (transfer full): #GBytes or %NULL on error.
- *     Free the returned object with g_bytes_unref()
- * Since: 2.32
+ * Returns: %TRUE if network is reachable, %FALSE if not.
  */
 
 
 /**
- * g_resource_new_from_data:
- * @data: A #GBytes
- * @error: return location for a #GError, or %NULL
+ * g_network_monitor_get_connectivity:
+ * @monitor: the #GNetworkMonitor
  *
- * Creates a GResource from a reference to the binary resource bundle.
- * This will keep a reference to @data while the resource lives, so
- * the data should not be modified or freed.
+ * Gets a more detailed networking state than
+ * g_network_monitor_get_network_available().
  *
- * If you want to use this resource in the global resource namespace you need
- * to register it with g_resources_register().
+ * If #GNetworkMonitor:network-available is %FALSE, then the
+ * connectivity state will be %G_NETWORK_CONNECTIVITY_LOCAL.
  *
- * Note: @data must be backed by memory that is at least pointer aligned.
- * Otherwise this function will internally create a copy of the memory since
- * GLib 2.56, or in older versions fail and exit the process.
+ * If #GNetworkMonitor:network-available is %TRUE, then the
+ * connectivity state will be %G_NETWORK_CONNECTIVITY_FULL (if there
+ * is full Internet connectivity), %G_NETWORK_CONNECTIVITY_LIMITED (if
+ * the host has a default route, but appears to be unable to actually
+ * reach the full Internet), or %G_NETWORK_CONNECTIVITY_PORTAL (if the
+ * host is trapped behind a "captive portal" that requires some sort
+ * of login or acknowledgement before allowing full Internet access).
  *
- * Returns: (transfer full): a new #GResource, or %NULL on error
- * Since: 2.32
+ * Note that in the case of %G_NETWORK_CONNECTIVITY_LIMITED and
+ * %G_NETWORK_CONNECTIVITY_PORTAL, it is possible that some sites are
+ * reachable but others are not. In this case, applications can
+ * attempt to connect to remote servers, but should gracefully fall
+ * back to their "offline" behavior if the connection attempt fails.
+ *
+ * Returns: the network connectivity state
+ * Since: 2.44
  */
 
 
 /**
- * g_resource_open_stream:
- * @resource: A #GResource
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @error: return location for a #GError, or %NULL
- *
- * Looks for a file at the specified @path in the resource and
- * returns a #GInputStream that lets you read the data.
+ * g_network_monitor_get_default:
  *
- * @lookup_flags controls the behaviour of the lookup.
+ * Gets the default #GNetworkMonitor for the system.
  *
- * Returns: (transfer full): #GInputStream or %NULL on error.
- *     Free the returned object with g_object_unref()
+ * Returns: (transfer none): a #GNetworkMonitor
  * Since: 2.32
  */
 
 
 /**
- * g_resource_ref:
- * @resource: A #GResource
+ * g_network_monitor_get_network_available:
+ * @monitor: the #GNetworkMonitor
  *
- * Atomically increments the reference count of @resource by one. This
- * function is MT-safe and may be called from any thread.
+ * Checks if the network is available. "Available" here means that the
+ * system has a default route available for at least one of IPv4 or
+ * IPv6. It does not necessarily imply that the public Internet is
+ * reachable. See #GNetworkMonitor:network-available for more details.
  *
- * Returns: The passed in #GResource
+ * Returns: whether the network is available
  * Since: 2.32
  */
 
 
 /**
- * g_resource_unref:
- * @resource: A #GResource
+ * g_network_monitor_get_network_metered:
+ * @monitor: the #GNetworkMonitor
  *
- * Atomically decrements the reference count of @resource by one. If the
- * reference count drops to 0, all memory allocated by the resource is
- * released. This function is MT-safe and may be called from any
- * thread.
+ * Checks if the network is metered.
+ * See #GNetworkMonitor:network-metered for more details.
  *
- * Since: 2.32
+ * Returns: whether the connection is metered
+ * Since: 2.46
  */
 
 
 /**
- * g_resources_enumerate_children:
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @error: return location for a #GError, or %NULL
- *
- * Returns all the names of children at the specified @path in the set of
- * globally registered resources.
- * The return result is a %NULL terminated list of strings which should
- * be released with g_strfreev().
+ * g_network_service_get_domain:
+ * @srv: a #GNetworkService
  *
- * @lookup_flags controls the behaviour of the lookup.
+ * Gets the domain that @srv serves. This might be either UTF-8 or
+ * ASCII-encoded, depending on what @srv was created with.
  *
- * Returns: (array zero-terminated=1) (transfer full): an array of constant strings
- * Since: 2.32
+ * Returns: @srv's domain name
+ * Since: 2.22
  */
 
 
 /**
- * g_resources_get_info:
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @size: (out) (optional): a location to place the length of the contents of the file,
- *    or %NULL if the length is not needed
- * @flags: (out) (optional): a location to place the #GResourceFlags about the file,
- *    or %NULL if the flags are not needed
- * @error: return location for a #GError, or %NULL
- *
- * Looks for a file at the specified @path in the set of
- * globally registered resources and if found returns information about it.
+ * g_network_service_get_protocol:
+ * @srv: a #GNetworkService
  *
- * @lookup_flags controls the behaviour of the lookup.
+ * Gets @srv's protocol name (eg, "tcp").
  *
- * Returns: %TRUE if the file was found. %FALSE if there were errors
- * Since: 2.32
+ * Returns: @srv's protocol name
+ * Since: 2.22
  */
 
 
 /**
- * g_resources_lookup_data:
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @error: return location for a #GError, or %NULL
- *
- * Looks for a file at the specified @path in the set of
- * globally registered resources and returns a #GBytes that
- * lets you directly access the data in memory.
+ * g_network_service_get_scheme:
+ * @srv: a #GNetworkService
  *
- * The data is always followed by a zero byte, so you
- * can safely use the data as a C string. However, that byte
- * is not included in the size of the GBytes.
+ * Get's the URI scheme used to resolve proxies. By default, the service name
+ * is used as scheme.
  *
- * For uncompressed resource files this is a pointer directly into
- * the resource bundle, which is typically in some readonly data section
- * in the program binary. For compressed files we allocate memory on
- * the heap and automatically uncompress the data.
+ * Returns: @srv's scheme name
+ * Since: 2.26
+ */
+
+
+/**
+ * g_network_service_get_service:
+ * @srv: a #GNetworkService
  *
- * @lookup_flags controls the behaviour of the lookup.
+ * Gets @srv's service name (eg, "ldap").
  *
- * Returns: (transfer full): #GBytes or %NULL on error.
- *     Free the returned object with g_bytes_unref()
- * Since: 2.32
+ * Returns: @srv's service name
+ * Since: 2.22
  */
 
 
 /**
- * g_resources_open_stream:
- * @path: A pathname inside the resource
- * @lookup_flags: A #GResourceLookupFlags
- * @error: return location for a #GError, or %NULL
- *
- * Looks for a file at the specified @path in the set of
- * globally registered resources and returns a #GInputStream
- * that lets you read the data.
+ * g_network_service_new:
+ * @service: the service type to look up (eg, "ldap")
+ * @protocol: the networking protocol to use for @service (eg, "tcp")
+ * @domain: the DNS domain to look up the service in
  *
- * @lookup_flags controls the behaviour of the lookup.
+ * Creates a new #GNetworkService representing the given @service,
+ * @protocol, and @domain. This will initially be unresolved; use the
+ * #GSocketConnectable interface to resolve it.
  *
- * Returns: (transfer full): #GInputStream or %NULL on error.
- *     Free the returned object with g_object_unref()
- * Since: 2.32
+ * Returns: (transfer full) (type GNetworkService): a new #GNetworkService
+ * Since: 2.22
  */
 
 
 /**
- * g_resources_register:
- * @resource: A #GResource
+ * g_network_service_set_scheme:
+ * @srv: a #GNetworkService
+ * @scheme: a URI scheme
  *
- * Registers the resource with the process-global set of resources.
- * Once a resource is registered the files in it can be accessed
- * with the global resource lookup functions like g_resources_lookup_data().
+ * Set's the URI scheme used to resolve proxies. By default, the service name
+ * is used as scheme.
  *
- * Since: 2.32
+ * Since: 2.26
  */
 
 
 /**
- * g_resources_unregister:
- * @resource: A #GResource
+ * g_networking_init:
  *
- * Unregisters the resource from the process-global set of resources.
+ * Initializes the platform networking libraries (eg, on Windows, this
+ * calls WSAStartup()). GLib will call this itself if it is needed, so
+ * you only need to call it if you directly call system networking
+ * functions (without calling any GLib networking functions first).
  *
- * Since: 2.32
+ * Since: 2.36
  */
 
 
 /**
- * g_seekable_can_seek:
- * @seekable: a #GSeekable.
+ * g_notification_add_button:
+ * @notification: a #GNotification
+ * @label: label of the button
+ * @detailed_action: a detailed action name
  *
- * Tests if the stream supports the #GSeekableIface.
+ * Adds a button to @notification that activates the action in
+ * @detailed_action when clicked. That action must be an
+ * application-wide action (starting with "app."). If @detailed_action
+ * contains a target, the action will be activated with that target as
+ * its parameter.
  *
- * Returns: %TRUE if @seekable can be seeked. %FALSE otherwise.
+ * See g_action_parse_detailed_name() for a description of the format
+ * for @detailed_action.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_seekable_can_truncate:
- * @seekable: a #GSeekable.
+ * g_notification_add_button_with_target: (skip)
+ * @notification: a #GNotification
+ * @label: label of the button
+ * @action: an action name
+ * @target_format: (nullable): a #GVariant format string, or %NULL
+ * @...: positional parameters, as determined by @target_format
  *
- * Tests if the length of the stream can be adjusted with
- * g_seekable_truncate().
+ * Adds a button to @notification that activates @action when clicked.
+ * @action must be an application-wide action (it must start with "app.").
  *
- * Returns: %TRUE if the stream can be truncated, %FALSE otherwise.
+ * If @target_format is given, it is used to collect remaining
+ * positional parameters into a #GVariant instance, similar to
+ * g_variant_new(). @action will be activated with that #GVariant as its
+ * parameter.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_seekable_seek:
- * @seekable: a #GSeekable.
- * @offset: a #goffset.
- * @type: a #GSeekType.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_notification_add_button_with_target_value: (rename-to g_notification_add_button_with_target)
+ * @notification: a #GNotification
+ * @label: label of the button
+ * @action: an action name
+ * @target: (nullable): a #GVariant to use as @action's parameter, or %NULL
  *
- * Seeks in the stream by the given @offset, modified by @type.
+ * Adds a button to @notification that activates @action when clicked.
+ * @action must be an application-wide action (it must start with "app.").
  *
- * Attempting to seek past the end of the stream will have different
- * results depending on if the stream is fixed-sized or resizable.  If
- * the stream is resizable then seeking past the end and then writing
- * will result in zeros filling the empty space.  Seeking past the end
- * of a resizable stream and reading will result in EOF.  Seeking past
- * the end of a fixed-sized stream will fail.
+ * If @target is non-%NULL, @action will be activated with @target as
+ * its parameter.
  *
- * Any operation that would result in a negative offset will fail.
+ * Since: 2.40
+ */
+
+
+/**
+ * g_notification_new:
+ * @title: the title of the notification
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Creates a new #GNotification with @title as its title.
  *
- * Returns: %TRUE if successful. If an error
- *     has occurred, this function will return %FALSE and set @error
- *     appropriately if present.
+ * After populating @notification with more details, it can be sent to
+ * the desktop shell with g_application_send_notification(). Changing
+ * any properties after this call will not have any effect until
+ * resending @notification.
+ *
+ * Returns: a new #GNotification instance
+ * Since: 2.40
  */
 
 
 /**
- * g_seekable_tell:
- * @seekable: a #GSeekable.
+ * g_notification_set_body:
+ * @notification: a #GNotification
+ * @body: (nullable): the new body for @notification, or %NULL
  *
- * Tells the current position within the stream.
+ * Sets the body of @notification to @body.
  *
- * Returns: the offset from the beginning of the buffer.
+ * Since: 2.40
  */
 
 
 /**
- * g_seekable_truncate: (virtual truncate_fn)
- * @seekable: a #GSeekable.
- * @offset: new length for @seekable, in bytes.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_notification_set_default_action:
+ * @notification: a #GNotification
+ * @detailed_action: a detailed action name
  *
- * Sets the length of the stream to @offset. If the stream was previously
- * larger than @offset, the extra data is discarded. If the stream was
- * previouly shorter than @offset, it is extended with NUL ('\0') bytes.
+ * Sets the default action of @notification to @detailed_action. This
+ * action is activated when the notification is clicked on.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
- * operation was partially finished when the operation was cancelled the
- * partial result will be returned, without an error.
+ * The action in @detailed_action must be an application-wide action (it
+ * must start with "app."). If @detailed_action contains a target, the
+ * given action will be activated with that target as its parameter.
+ * See g_action_parse_detailed_name() for a description of the format
+ * for @detailed_action.
  *
- * Returns: %TRUE if successful. If an error
- *     has occurred, this function will return %FALSE and set @error
- *     appropriately if present.
+ * When no default action is set, the application that the notification
+ * was sent on is activated.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_settings_apply:
- * @settings: a #GSettings instance
+ * g_notification_set_default_action_and_target: (skip)
+ * @notification: a #GNotification
+ * @action: an action name
+ * @target_format: (nullable): a #GVariant format string, or %NULL
+ * @...: positional parameters, as determined by @target_format
  *
- * Applies any changes that have been made to the settings.  This
- * function does nothing unless @settings is in 'delay-apply' mode;
- * see g_settings_delay().  In the normal case settings are always
- * applied immediately.
+ * Sets the default action of @notification to @action. This action is
+ * activated when the notification is clicked on. It must be an
+ * application-wide action (it must start with "app.").
+ *
+ * If @target_format is given, it is used to collect remaining
+ * positional parameters into a #GVariant instance, similar to
+ * g_variant_new(). @action will be activated with that #GVariant as its
+ * parameter.
+ *
+ * When no default action is set, the application that the notification
+ * was sent on is activated.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_settings_backend_changed:
- * @backend: a #GSettingsBackend implementation
- * @key: the name of the key
- * @origin_tag: the origin tag
+ * g_notification_set_default_action_and_target_value: (rename-to g_notification_set_default_action_and_target)
+ * @notification: a #GNotification
+ * @action: an action name
+ * @target: (nullable): a #GVariant to use as @action's parameter, or %NULL
  *
- * Signals that a single key has possibly changed.  Backend
- * implementations should call this if a key has possibly changed its
- * value.
+ * Sets the default action of @notification to @action. This action is
+ * activated when the notification is clicked on. It must be an
+ * application-wide action (start with "app.").
  *
- * @key must be a valid key (ie starting with a slash, not containing
- * '//', and not ending with a slash).
+ * If @target is non-%NULL, @action will be activated with @target as
+ * its parameter.
  *
- * The implementation must call this function during any call to
- * g_settings_backend_write(), before the call returns (except in the
- * case that no keys are actually changed and it cares to detect this
- * fact).  It may not rely on the existence of a mainloop for
- * dispatching the signal later.
+ * When no default action is set, the application that the notification
+ * was sent on is activated.
  *
- * The implementation may call this function at any other time it likes
- * in response to other events (such as changes occurring outside of the
- * program).  These calls may originate from a mainloop or may originate
- * in response to any other action (including from calls to
- * g_settings_backend_write()).
+ * Since: 2.40
+ */
+
+
+/**
+ * g_notification_set_icon:
+ * @notification: a #GNotification
+ * @icon: the icon to be shown in @notification, as a #GIcon
  *
- * In the case that this call is in response to a call to
- * g_settings_backend_write() then @origin_tag must be set to the same
- * value that was passed to that call.
+ * Sets the icon of @notification to @icon.
+ *
+ * Since: 2.40
+ */
+
+
+/**
+ * g_notification_set_priority:
+ * @notification: a #GNotification
+ * @priority: a #GNotificationPriority
  *
- * Since: 2.26
+ * Sets the priority of @notification to @priority. See
+ * #GNotificationPriority for possible values.
  */
 
 
 /**
- * g_settings_backend_changed_tree:
- * @backend: a #GSettingsBackend implementation
- * @tree: a #GTree containing the changes
- * @origin_tag: the origin tag
+ * g_notification_set_title:
+ * @notification: a #GNotification
+ * @title: the new title for @notification
  *
- * This call is a convenience wrapper.  It gets the list of changes from
- * @tree, computes the longest common prefix and calls
- * g_settings_backend_changed().
+ * Sets the title of @notification to @title.
  *
- * Since: 2.26
+ * Since: 2.40
  */
 
 
 /**
- * g_settings_backend_flatten_tree:
- * @tree: a #GTree containing the changes
- * @path: (out): the location to save the path
- * @keys: (out) (transfer container) (array zero-terminated=1): the
- *        location to save the relative keys
- * @values: (out) (optional) (transfer container) (array zero-terminated=1):
- *          the location to save the values, or %NULL
- *
- * Calculate the longest common prefix of all keys in a tree and write
- * out an array of the key names relative to that prefix and,
- * optionally, the value to store at each of those keys.
+ * g_notification_set_urgent:
+ * @notification: a #GNotification
+ * @urgent: %TRUE if @notification is urgent
  *
- * You must free the value returned in @path, @keys and @values using
- * g_free().  You should not attempt to free or unref the contents of
- * @keys or @values.
+ * Deprecated in favor of g_notification_set_priority().
  *
- * Since: 2.26
+ * Since: 2.40
+ * Deprecated: 2.42: Since 2.42, this has been deprecated in favour of
+ *    g_notification_set_priority().
  */
 
 
 /**
- * g_settings_backend_get_default:
+ * g_null_settings_backend_new:
  *
- * Returns the default #GSettingsBackend. It is possible to override
- * the default by setting the `GSETTINGS_BACKEND` environment variable
- * to the name of a settings backend.
+ * Creates a readonly #GSettingsBackend.
  *
- * The user gets a reference to the backend.
+ * This backend does not allow changes to settings, so all settings
+ * will always have their default values.
  *
- * Returns: (transfer full): the default #GSettingsBackend
+ * Returns: (transfer full): a newly created #GSettingsBackend
  * Since: 2.28
  */
 
 
 /**
- * g_settings_backend_keys_changed:
- * @backend: a #GSettingsBackend implementation
- * @path: the path containing the changes
- * @items: (array zero-terminated=1): the %NULL-terminated list of changed keys
- * @origin_tag: the origin tag
- *
- * Signals that a list of keys have possibly changed.  Backend
- * implementations should call this if keys have possibly changed their
- * values.
- *
- * @path must be a valid path (ie starting and ending with a slash and
- * not containing '//').  Each string in @items must form a valid key
- * name when @path is prefixed to it (ie: each item must not start or
- * end with '/' and must not contain '//').
- *
- * The meaning of this signal is that any of the key names resulting
- * from the contatenation of @path with each item in @items may have
- * changed.
- *
- * The same rules for when notifications must occur apply as per
- * g_settings_backend_changed().  These two calls can be used
- * interchangeably if exactly one item has changed (although in that
- * case g_settings_backend_changed() is definitely preferred).
- *
- * For efficiency reasons, the implementation should strive for @path to
- * be as long as possible (ie: the longest common prefix of all of the
- * keys that were changed) but this is not strictly required.
+ * g_output_stream_clear_pending:
+ * @stream: output stream
  *
- * Since: 2.26
+ * Clears the pending flag on @stream.
  */
 
 
 /**
- * g_settings_backend_path_changed:
- * @backend: a #GSettingsBackend implementation
- * @path: the path containing the changes
- * @origin_tag: the origin tag
+ * g_output_stream_close:
+ * @stream: A #GOutputStream.
+ * @cancellable: (nullable): optional cancellable object
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Signals that all keys below a given path may have possibly changed.
- * Backend implementations should call this if an entire path of keys
- * have possibly changed their values.
+ * Closes the stream, releasing resources related to it.
  *
- * @path must be a valid path (ie starting and ending with a slash and
- * not containing '//').
+ * Once the stream is closed, all other operations will return %G_IO_ERROR_CLOSED.
+ * Closing a stream multiple times will not return an error.
  *
- * The meaning of this signal is that any of the key which has a name
- * starting with @path may have changed.
+ * Closing a stream will automatically flush any outstanding buffers in the
+ * stream.
  *
- * The same rules for when notifications must occur apply as per
- * g_settings_backend_changed().  This call might be an appropriate
- * reasponse to a 'reset' call but implementations are also free to
- * explicitly list the keys that were affected by that call if they can
- * easily do so.
+ * Streams will be automatically closed when the last reference
+ * is dropped, but you might want to call this function to make sure
+ * resources are released as early as possible.
  *
- * For efficiency reasons, the implementation should strive for @path to
- * be as long as possible (ie: the longest common prefix of all of the
- * keys that were changed) but this is not strictly required.  As an
- * example, if this function is called with the path of "/" then every
- * single key in the application will be notified of a possible change.
+ * Some streams might keep the backing store of the stream (e.g. a file descriptor)
+ * open after the stream is closed. See the documentation for the individual
+ * stream for details.
  *
- * Since: 2.26
+ * On failure the first error that happened will be reported, but the close
+ * operation will finish as much as possible. A stream that failed to
+ * close will still return %G_IO_ERROR_CLOSED for all operations. Still, it
+ * is important to check and report the error to the user, otherwise
+ * there might be a loss of data as all data might not be written.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Cancelling a close will still leave the stream closed, but there some streams
+ * can use a faster close that doesn't block to e.g. check errors. On
+ * cancellation (as with any error) there is no guarantee that all written
+ * data will reach the target.
+ *
+ * Returns: %TRUE on success, %FALSE on failure
  */
 
 
 /**
- * g_settings_backend_path_writable_changed:
- * @backend: a #GSettingsBackend implementation
- * @path: the name of the path
+ * g_output_stream_close_async:
+ * @stream: A #GOutputStream.
+ * @io_priority: the io priority of the request.
+ * @cancellable: (nullable): optional cancellable object
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Signals that the writability of all keys below a given path may have
- * changed.
+ * Requests an asynchronous close of the stream, releasing resources
+ * related to it. When the operation is finished @callback will be
+ * called. You can then call g_output_stream_close_finish() to get
+ * the result of the operation.
  *
- * Since GSettings performs no locking operations for itself, this call
- * will always be made in response to external events.
+ * For behaviour details see g_output_stream_close().
  *
- * Since: 2.26
+ * The asynchronous 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.
  */
 
 
 /**
- * g_settings_backend_writable_changed:
- * @backend: a #GSettingsBackend implementation
- * @key: the name of the key
- *
- * Signals that the writability of a single key has possibly changed.
+ * g_output_stream_close_finish:
+ * @stream: a #GOutputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Since GSettings performs no locking operations for itself, this call
- * will always be made in response to external events.
+ * Closes an output stream.
  *
- * Since: 2.26
+ * Returns: %TRUE if stream was successfully closed, %FALSE otherwise.
  */
 
 
 /**
- * g_settings_bind:
- * @settings: a #GSettings object
- * @key: the key to bind
- * @object: (type GObject.Object): a #GObject
- * @property: the name of the property to bind
- * @flags: flags for the binding
- *
- * Create a binding between the @key in the @settings object
- * and the property @property of @object.
+ * g_output_stream_flush:
+ * @stream: a #GOutputStream.
+ * @cancellable: (nullable): optional cancellable object
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * The binding uses the default GIO mapping functions to map
- * between the settings and property values. These functions
- * handle booleans, numeric types and string types in a
- * straightforward way. Use g_settings_bind_with_mapping() if
- * you need a custom mapping, or map between types that are not
- * supported by the default mapping functions.
+ * Forces a write of all user-space buffered data for the given
+ * @stream. Will block during the operation. Closing the stream will
+ * implicitly cause a flush.
  *
- * Unless the @flags include %G_SETTINGS_BIND_NO_SENSITIVITY, this
- * function also establishes a binding between the writability of
- * @key and the "sensitive" property of @object (if @object has
- * a boolean property by that name). See g_settings_bind_writable()
- * for more details about writable bindings.
+ * This function is optional for inherited classes.
  *
- * Note that the lifecycle of the binding is tied to @object,
- * and that you can have only one binding per object property.
- * If you bind the same property twice on the same object, the second
- * binding overrides the first one.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Since: 2.26
+ * Returns: %TRUE on success, %FALSE on error
  */
 
 
 /**
- * g_settings_bind_with_mapping: (skip)
- * @settings: a #GSettings object
- * @key: the key to bind
- * @object: (type GObject.Object): a #GObject
- * @property: the name of the property to bind
- * @flags: flags for the binding
- * @get_mapping: a function that gets called to convert values
- *     from @settings to @object, or %NULL to use the default GIO mapping
- * @set_mapping: a function that gets called to convert values
- *     from @object to @settings, or %NULL to use the default GIO mapping
- * @user_data: data that gets passed to @get_mapping and @set_mapping
- * @destroy: #GDestroyNotify function for @user_data
+ * g_output_stream_flush_async:
+ * @stream: a #GOutputStream.
+ * @io_priority: the io priority of the request.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Create a binding between the @key in the @settings object
- * and the property @property of @object.
+ * Forces an asynchronous write of all user-space buffered data for
+ * the given @stream.
+ * For behaviour details see g_output_stream_flush().
  *
- * The binding uses the provided mapping functions to map between
- * settings and property values.
+ * When the operation is finished @callback will be
+ * called. You can then call g_output_stream_flush_finish() to get the
+ * result of the operation.
+ */
+
+
+/**
+ * g_output_stream_flush_finish:
+ * @stream: a #GOutputStream.
+ * @result: a GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Note that the lifecycle of the binding is tied to @object,
- * and that you can have only one binding per object property.
- * If you bind the same property twice on the same object, the second
- * binding overrides the first one.
+ * Finishes flushing an output stream.
  *
- * Since: 2.26
+ * Returns: %TRUE if flush operation succeeded, %FALSE otherwise.
  */
 
 
 /**
- * g_settings_bind_writable:
- * @settings: a #GSettings object
- * @key: the key to bind
- * @object: (type GObject.Object): a #GObject
- * @property: the name of a boolean property to bind
- * @inverted: whether to 'invert' the value
+ * g_output_stream_has_pending:
+ * @stream: a #GOutputStream.
  *
- * Create a binding between the writability of @key in the
- * @settings object and the property @property of @object.
- * The property must be boolean; "sensitive" or "visible"
- * properties of widgets are the most likely candidates.
+ * Checks if an output stream has pending actions.
  *
- * Writable bindings are always uni-directional; changes of the
- * writability of the setting will be propagated to the object
- * property, not the other way.
+ * Returns: %TRUE if @stream has pending actions.
+ */
+
+
+/**
+ * g_output_stream_is_closed:
+ * @stream: a #GOutputStream.
  *
- * When the @inverted argument is %TRUE, the binding inverts the
- * value as it passes from the setting to the object, i.e. @property
- * will be set to %TRUE if the key is not writable.
+ * Checks if an output stream has already been closed.
  *
- * Note that the lifecycle of the binding is tied to @object,
- * and that you can have only one binding per object property.
- * If you bind the same property twice on the same object, the second
- * binding overrides the first one.
+ * Returns: %TRUE if @stream is closed. %FALSE otherwise.
+ */
+
+
+/**
+ * g_output_stream_is_closing:
+ * @stream: a #GOutputStream.
  *
- * Since: 2.26
+ * Checks if an output stream is being closed. This can be
+ * used inside e.g. a flush implementation to see if the
+ * flush (or other i/o operation) is called from within
+ * the closing operation.
+ *
+ * Returns: %TRUE if @stream is being closed. %FALSE otherwise.
+ * Since: 2.24
  */
 
 
 /**
- * g_settings_create_action:
- * @settings: a #GSettings
- * @key: the name of a key in @settings
+ * g_output_stream_printf:
+ * @stream: a #GOutputStream.
+ * @bytes_written: (out) (optional): location to store the number of bytes that was
+ *     written to the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
+ * @format: the format string. See the printf() documentation
+ * @...: the parameters to insert into the format string
  *
- * Creates a #GAction corresponding to a given #GSettings key.
+ * This is a utility function around g_output_stream_write_all(). It
+ * uses g_strdup_vprintf() to turn @format and @... into a string that
+ * is then written to @stream.
  *
- * The action has the same name as the key.
+ * See the documentation of g_output_stream_write_all() about the
+ * behavior of the actual write operation.
  *
- * The value of the key becomes the state of the action and the action
- * is enabled when the key is writable.  Changing the state of the
- * action results in the key being written to.  Changes to the value or
- * writability of the key cause appropriate change notifications to be
- * emitted for the action.
+ * Note that partial writes cannot be properly checked with this
+ * function due to the variable length of the written string, if you
+ * need precise control over partial write failures, you need to
+ * create you own printf()-like wrapper around g_output_stream_write()
+ * or g_output_stream_write_all().
  *
- * For boolean-valued keys, action activations take no parameter and
- * result in the toggling of the value.  For all other types,
- * activations take the new value for the key (which must have the
- * correct type).
+ * Since: 2.40
+ * Returns: %TRUE on success, %FALSE if there was an error
+ */
+
+
+/**
+ * g_output_stream_set_pending:
+ * @stream: a #GOutputStream.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Returns: (transfer full): a new #GAction
- * Since: 2.32
+ * Sets @stream to have actions pending. If the pending flag is
+ * already set or @stream is closed, it will return %FALSE and set
+ * @error.
+ *
+ * Returns: %TRUE if pending was previously unset and is now set.
  */
 
 
 /**
- * g_settings_delay:
- * @settings: a #GSettings object
+ * g_output_stream_splice:
+ * @stream: a #GOutputStream.
+ * @source: a #GInputStream.
+ * @flags: a set of #GOutputStreamSpliceFlags.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Changes the #GSettings object into 'delay-apply' mode. In this
- * mode, changes to @settings are not immediately propagated to the
- * backend, but kept locally until g_settings_apply() is called.
+ * Splices an input stream into an output stream.
  *
- * Since: 2.26
+ * Returns: a #gssize containing the size of the data spliced, or
+ *     -1 if an error occurred. Note that if the number of bytes
+ *     spliced is greater than %G_MAXSSIZE, then that will be
+ *     returned, and there is no way to determine the actual number
+ *     of bytes spliced.
  */
 
 
 /**
- * g_settings_get:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- * @format: a #GVariant format string
- * @...: arguments as per @format
+ * g_output_stream_splice_async:
+ * @stream: a #GOutputStream.
+ * @source: a #GInputStream.
+ * @flags: a set of #GOutputStreamSpliceFlags.
+ * @io_priority: the io priority of the request.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
  *
- * Gets the value that is stored at @key in @settings.
+ * Splices a stream asynchronously.
+ * When the operation is finished @callback will be called.
+ * You can then call g_output_stream_splice_finish() to get the
+ * result of the operation.
  *
- * A convenience function that combines g_settings_get_value() with
- * g_variant_get().
+ * For the synchronous, blocking version of this function, see
+ * g_output_stream_splice().
+ */
+
+
+/**
+ * g_output_stream_splice_finish:
+ * @stream: a #GOutputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings or for the #GVariantType of @format to mismatch
- * the type given in the schema.
+ * Finishes an asynchronous stream splice operation.
  *
- * Since: 2.26
+ * Returns: a #gssize of the number of bytes spliced. Note that if the
+ *     number of bytes spliced is greater than %G_MAXSSIZE, then that
+ *     will be returned, and there is no way to determine the actual
+ *     number of bytes spliced.
  */
 
 
 /**
- * g_settings_get_boolean:
- * @settings: a #GSettings object
- * @key: the key to get the value for
+ * g_output_stream_vprintf:
+ * @stream: a #GOutputStream.
+ * @bytes_written: (out) (optional): location to store the number of bytes that was
+ *     written to the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
+ * @format: the format string. See the printf() documentation
+ * @args: the parameters to insert into the format string
  *
- * Gets the value that is stored at @key in @settings.
+ * This is a utility function around g_output_stream_write_all(). It
+ * uses g_strdup_vprintf() to turn @format and @args into a string that
+ * is then written to @stream.
  *
- * A convenience variant of g_settings_get() for booleans.
+ * See the documentation of g_output_stream_write_all() about the
+ * behavior of the actual write operation.
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a boolean type in the schema for @settings.
+ * Note that partial writes cannot be properly checked with this
+ * function due to the variable length of the written string, if you
+ * need precise control over partial write failures, you need to
+ * create you own printf()-like wrapper around g_output_stream_write()
+ * or g_output_stream_write_all().
  *
- * Returns: a boolean
- * Since: 2.26
+ * Since: 2.40
+ * Returns: %TRUE on success, %FALSE if there was an error
  */
 
 
 /**
- * g_settings_get_child:
- * @settings: a #GSettings object
- * @name: the name of the child schema
+ * g_output_stream_write: (virtual write_fn)
+ * @stream: a #GOutputStream.
+ * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write.
+ * @count: the number of bytes to write
+ * @cancellable: (nullable): optional cancellable object
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Creates a child settings object which has a base path of
- * `base-path/@name`, where `base-path` is the base path of
- * @settings.
+ * Tries to write @count bytes from @buffer into the stream. Will block
+ * during the operation.
  *
- * The schema for the child settings object must have been declared
- * in the schema of @settings using a <child> element.
+ * If count is 0, returns 0 and does nothing. A value of @count
+ * larger than %G_MAXSSIZE will cause a %G_IO_ERROR_INVALID_ARGUMENT error.
  *
- * Returns: (transfer full): a 'child' settings object
- * Since: 2.26
+ * 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 there is not enough
+ * storage in the stream. All writes block until at least one byte
+ * is written or an error occurs; 0 is never returned (unless
+ * @count is 0).
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+ * operation was partially finished when the operation was cancelled the
+ * partial result will be returned, without an error.
+ *
+ * On error -1 is returned and @error is set accordingly.
+ *
+ * Returns: Number of bytes written, or -1 on error
  */
 
 
 /**
- * g_settings_get_default_value:
- * @settings: a #GSettings object
- * @key: the key to get the default value for
- *
- * Gets the "default value" of a key.
+ * g_output_stream_write_all:
+ * @stream: a #GOutputStream.
+ * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write.
+ * @count: the number of bytes to write
+ * @bytes_written: (out) (optional): location to store the number of bytes that was
+ *     written to the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * This is the value that would be read if g_settings_reset() were to be
- * called on the key.
+ * Tries to write @count bytes from @buffer into the stream. Will block
+ * during the operation.
  *
- * Note that this may be a different value than returned by
- * g_settings_schema_key_get_default_value() if the system administrator
- * has provided a default value.
+ * This function is similar to g_output_stream_write(), except it tries to
+ * write as many bytes as requested, only stopping on an error.
  *
- * Comparing the return values of g_settings_get_default_value() and
- * g_settings_get_value() is not sufficient for determining if a value
- * has been set because the user may have explicitly set the value to
- * something that happens to be equal to the default.  The difference
- * here is that if the default changes in the future, the user's key
- * will still be set.
+ * On a successful write of @count bytes, %TRUE is returned, and @bytes_written
+ * is set to @count.
  *
- * This function may be useful for adding an indication to a UI of what
- * the default value was before the user set it.
+ * If there is an error during the operation %FALSE is returned and @error
+ * is set to indicate the error status.
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings.
+ * As a special exception to the normal conventions for functions that
+ * use #GError, if this function returns %FALSE (and sets @error) then
+ * @bytes_written will be set to the number of bytes that were
+ * successfully written before the error was encountered.  This
+ * functionality is only available from C.  If you need it from another
+ * language then you must write your own loop around
+ * g_output_stream_write().
  *
- * Returns: (nullable) (transfer full): the default value
- * Since: 2.40
+ * Returns: %TRUE on success, %FALSE if there was an error
  */
 
 
 /**
- * g_settings_get_double:
- * @settings: a #GSettings object
- * @key: the key to get the value for
+ * g_output_stream_write_all_async:
+ * @stream: A #GOutputStream
+ * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write
+ * @count: the number of bytes to write
+ * @io_priority: the io priority of the request
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Gets the value that is stored at @key in @settings.
+ * Request an asynchronous write of @count bytes from @buffer into
+ * the stream. When the operation is finished @callback will be called.
+ * You can then call g_output_stream_write_all_finish() to get the result of the
+ * operation.
  *
- * A convenience variant of g_settings_get() for doubles.
+ * This is the asynchronous version of g_output_stream_write_all().
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a 'double' type in the schema for @settings.
+ * Call g_output_stream_write_all_finish() to collect the result.
  *
- * Returns: a double
- * Since: 2.26
+ * Any outstanding I/O request with higher priority (lower numerical
+ * value) will be executed before an outstanding request with lower
+ * priority. Default priority is %G_PRIORITY_DEFAULT.
+ *
+ * Note that no copy of @buffer will be made, so it must stay valid
+ * until @callback is called.
+ *
+ * Since: 2.44
  */
 
 
 /**
- * g_settings_get_enum:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- *
- * Gets the value that is stored in @settings for @key and converts it
- * to the enum value that it represents.
- *
- * In order to use this function the type of the value must be a string
- * and it must be marked in the schema file as an enumerated type.
+ * g_output_stream_write_all_finish:
+ * @stream: a #GOutputStream
+ * @result: a #GAsyncResult
+ * @bytes_written: (out) (optional): location to store the number of bytes that was written to the stream
+ * @error: a #GError location to store the error occurring, or %NULL to ignore.
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings or is not marked as an enumerated type.
+ * Finishes an asynchronous stream write operation started with
+ * g_output_stream_write_all_async().
  *
- * If the value stored in the configuration database is not a valid
- * value for the enumerated type then this function will return the
- * default value.
+ * As a special exception to the normal conventions for functions that
+ * use #GError, if this function returns %FALSE (and sets @error) then
+ * @bytes_written will be set to the number of bytes that were
+ * successfully written before the error was encountered.  This
+ * functionality is only available from C.  If you need it from another
+ * language then you must write your own loop around
+ * g_output_stream_write_async().
  *
- * Returns: the enum value
- * Since: 2.26
+ * Returns: %TRUE on success, %FALSE if there was an error
+ * Since: 2.44
  */
 
 
 /**
- * g_settings_get_flags:
- * @settings: a #GSettings object
- * @key: the key to get the value for
+ * g_output_stream_write_async:
+ * @stream: A #GOutputStream.
+ * @buffer: (array length=count) (element-type guint8): the buffer containing the data to write.
+ * @count: the number of bytes to write
+ * @io_priority: the io priority of the request.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Gets the value that is stored in @settings for @key and converts it
- * to the flags value that it represents.
+ * Request an asynchronous write of @count bytes from @buffer into
+ * the stream. When the operation is finished @callback will be called.
+ * You can then call g_output_stream_write_finish() to get the result of the
+ * operation.
  *
- * In order to use this function the type of the value must be an array
- * of strings and it must be marked in the schema file as an flags type.
+ * During an async request no other sync and async calls are allowed,
+ * and will result in %G_IO_ERROR_PENDING errors.
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings or is not marked as a flags type.
+ * A value of @count larger than %G_MAXSSIZE will cause a
+ * %G_IO_ERROR_INVALID_ARGUMENT error.
  *
- * If the value stored in the configuration database is not a valid
- * value for the flags type then this function will return the default
- * value.
+ * On success, the number of bytes written will be passed to the
+ * @callback. 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.
  *
- * Returns: the flags value
- * Since: 2.26
+ * You are guaranteed that this method will never fail with
+ * %G_IO_ERROR_WOULD_BLOCK - if @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
+ * priority. Default priority is %G_PRIORITY_DEFAULT.
+ *
+ * The asynchronous 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
+ * g_output_stream_write().
+ *
+ * Note that no copy of @buffer will be made, so it must stay valid
+ * until @callback is called. See g_output_stream_write_bytes_async()
+ * for a #GBytes version that will automatically hold a reference to
+ * the contents (without copying) for the duration of the call.
  */
 
 
 /**
- * g_settings_get_has_unapplied:
- * @settings: a #GSettings object
+ * g_output_stream_write_bytes:
+ * @stream: a #GOutputStream.
+ * @bytes: the #GBytes to write
+ * @cancellable: (nullable): optional cancellable object
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Returns whether the #GSettings object has any unapplied
- * changes.  This can only be the case if it is in 'delayed-apply' mode.
+ * A wrapper function for g_output_stream_write() which takes a
+ * #GBytes as input.  This can be more convenient for use by language
+ * bindings or in other cases where the refcounted nature of #GBytes
+ * is helpful over a bare pointer interface.
  *
- * Returns: %TRUE if @settings has unapplied changes
- * Since: 2.26
+ * However, note that this function may still perform partial writes,
+ * just like g_output_stream_write().  If that occurs, to continue
+ * writing, you will need to create a new #GBytes containing just the
+ * remaining bytes, using g_bytes_new_from_bytes(). Passing the same
+ * #GBytes instance multiple times potentially can result in duplicated
+ * data in the output stream.
+ *
+ * Returns: Number of bytes written, or -1 on error
  */
 
 
 /**
- * g_settings_get_int:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- *
- * Gets the value that is stored at @key in @settings.
+ * g_output_stream_write_bytes_async:
+ * @stream: A #GOutputStream.
+ * @bytes: The bytes to write
+ * @io_priority: the io priority of the request.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): callback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * A convenience variant of g_settings_get() for 32-bit integers.
+ * This function is similar to g_output_stream_write_async(), but
+ * takes a #GBytes as input.  Due to the refcounted nature of #GBytes,
+ * this allows the stream to avoid taking a copy of the data.
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a int32 type in the schema for @settings.
+ * However, note that this function may still perform partial writes,
+ * just like g_output_stream_write_async(). If that occurs, to continue
+ * writing, you will need to create a new #GBytes containing just the
+ * remaining bytes, using g_bytes_new_from_bytes(). Passing the same
+ * #GBytes instance multiple times potentially can result in duplicated
+ * data in the output stream.
  *
- * Returns: an integer
- * Since: 2.26
+ * For the synchronous, blocking version of this function, see
+ * g_output_stream_write_bytes().
  */
 
 
 /**
- * g_settings_get_int64:
- * @settings: a #GSettings object
- * @key: the key to get the value for
+ * g_output_stream_write_bytes_finish:
+ * @stream: a #GOutputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Gets the value that is stored at @key in @settings.
+ * Finishes a stream write-from-#GBytes operation.
  *
- * A convenience variant of g_settings_get() for 64-bit integers.
+ * Returns: a #gssize containing the number of bytes written to the stream.
+ */
+
+
+/**
+ * g_output_stream_write_finish:
+ * @stream: a #GOutputStream.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a int64 type in the schema for @settings.
+ * Finishes a stream write operation.
  *
- * Returns: a 64-bit integer
- * Since: 2.50
+ * Returns: a #gssize containing the number of bytes written to the stream.
  */
 
 
 /**
- * g_settings_get_mapped:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- * @mapping: (scope call): the function to map the value in the
- *           settings database to the value used by the application
- * @user_data: user data for @mapping
- *
- * Gets the value that is stored at @key in @settings, subject to
- * application-level validation/mapping.
+ * g_permission_acquire:
+ * @permission: a #GPermission instance
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a pointer to a %NULL #GError, or %NULL
  *
- * You should use this function when the application needs to perform
- * some processing on the value of the key (for example, parsing).  The
- * @mapping function performs that processing.  If the function
- * indicates that the processing was unsuccessful (due to a parse error,
- * for example) then the mapping is tried again with another value.
+ * Attempts to acquire the permission represented by @permission.
  *
- * This allows a robust 'fall back to defaults' behaviour to be
- * implemented somewhat automatically.
+ * The precise method by which this happens depends on the permission
+ * and the underlying authentication mechanism.  A simple example is
+ * that a dialog may appear asking the user to enter their password.
  *
- * The first value that is tried is the user's setting for the key.  If
- * the mapping function fails to map this value, other values may be
- * tried in an unspecified order (system or site defaults, translated
- * schema default values, untranslated schema default values, etc).
+ * You should check with g_permission_get_can_acquire() before calling
+ * this function.
  *
- * If the mapping function fails for all possible values, one additional
- * attempt is made: the mapping function is called with a %NULL value.
- * If the mapping function still indicates failure at this point then
- * the application will be aborted.
+ * If the permission is acquired then %TRUE is returned.  Otherwise,
+ * %FALSE is returned and @error is set appropriately.
  *
- * The result parameter for the @mapping function is pointed to a
- * #gpointer which is initially set to %NULL.  The same pointer is given
- * to each invocation of @mapping.  The final value of that #gpointer is
- * what is returned by this function.  %NULL is valid; it is returned
- * just as any other value would be.
+ * This call is blocking, likely for a very long time (in the case that
+ * user interaction is required).  See g_permission_acquire_async() for
+ * the non-blocking version.
  *
- * Returns: (transfer full): the result, which may be %NULL
+ * Returns: %TRUE if the permission was successfully acquired
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_get_range:
- * @settings: a #GSettings
- * @key: the key to query the range of
+ * g_permission_acquire_async:
+ * @permission: a #GPermission instance
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: the #GAsyncReadyCallback to call when done
+ * @user_data: the user data to pass to @callback
  *
- * Queries the range of a key.
+ * Attempts to acquire the permission represented by @permission.
  *
- * Since: 2.28
- * Deprecated: 2.40: Use g_settings_schema_key_get_range() instead.
+ * This is the first half of the asynchronous version of
+ * g_permission_acquire().
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_get_string:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- *
- * Gets the value that is stored at @key in @settings.
+ * g_permission_acquire_finish:
+ * @permission: a #GPermission instance
+ * @result: the #GAsyncResult given to the #GAsyncReadyCallback
+ * @error: a pointer to a %NULL #GError, or %NULL
  *
- * A convenience variant of g_settings_get() for strings.
+ * Collects the result of attempting to acquire the permission
+ * represented by @permission.
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a string type in the schema for @settings.
+ * This is the second half of the asynchronous version of
+ * g_permission_acquire().
  *
- * Returns: a newly-allocated string
+ * Returns: %TRUE if the permission was successfully acquired
  * Since: 2.26
  */
 
 
 /**
- * g_settings_get_strv:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- *
- * A convenience variant of g_settings_get() for string arrays.
+ * g_permission_get_allowed:
+ * @permission: a #GPermission instance
  *
- * It is a programmer error to give a @key that isn't specified as
- * having an array of strings type in the schema for @settings.
+ * Gets the value of the 'allowed' property.  This property is %TRUE if
+ * the caller currently has permission to perform the action that
+ * @permission represents the permission to perform.
  *
- * Returns: (array zero-terminated=1) (transfer full): a
- * newly-allocated, %NULL-terminated array of strings, the value that
- * is stored at @key in @settings.
+ * Returns: the value of the 'allowed' property
  * Since: 2.26
  */
 
 
 /**
- * g_settings_get_uint:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- *
- * Gets the value that is stored at @key in @settings.
- *
- * A convenience variant of g_settings_get() for 32-bit unsigned
- * integers.
+ * g_permission_get_can_acquire:
+ * @permission: a #GPermission instance
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a uint32 type in the schema for @settings.
+ * Gets the value of the 'can-acquire' property.  This property is %TRUE
+ * if it is generally possible to acquire the permission by calling
+ * g_permission_acquire().
  *
- * Returns: an unsigned integer
- * Since: 2.30
+ * Returns: the value of the 'can-acquire' property
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_get_uint64:
- * @settings: a #GSettings object
- * @key: the key to get the value for
- *
- * Gets the value that is stored at @key in @settings.
- *
- * A convenience variant of g_settings_get() for 64-bit unsigned
- * integers.
+ * g_permission_get_can_release:
+ * @permission: a #GPermission instance
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a uint64 type in the schema for @settings.
+ * Gets the value of the 'can-release' property.  This property is %TRUE
+ * if it is generally possible to release the permission by calling
+ * g_permission_release().
  *
- * Returns: a 64-bit unsigned integer
- * Since: 2.50
+ * Returns: the value of the 'can-release' property
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_get_user_value:
- * @settings: a #GSettings object
- * @key: the key to get the user value for
- *
- * Checks the "user value" of a key, if there is one.
- *
- * The user value of a key is the last value that was set by the user.
- *
- * After calling g_settings_reset() this function should always return
- * %NULL (assuming something is not wrong with the system
- * configuration).
- *
- * It is possible that g_settings_get_value() will return a different
- * value than this function.  This can happen in the case that the user
- * set a value for a key that was subsequently locked down by the system
- * administrator -- this function will return the user's old value.
+ * g_permission_impl_update:
+ * @permission: a #GPermission instance
+ * @allowed: the new value for the 'allowed' property
+ * @can_acquire: the new value for the 'can-acquire' property
+ * @can_release: the new value for the 'can-release' property
  *
- * This function may be useful for adding a "reset" option to a UI or
- * for providing indication that a particular value has been changed.
+ * This function is called by the #GPermission implementation to update
+ * the properties of the permission.  You should never call this
+ * function except from a #GPermission implementation.
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings.
+ * GObject notify signals are generated, as appropriate.
  *
- * Returns: (nullable) (transfer full): the user's value, if set
- * Since: 2.40
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_get_value:
- * @settings: a #GSettings object
- * @key: the key to get the value for
+ * g_permission_release:
+ * @permission: a #GPermission instance
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a pointer to a %NULL #GError, or %NULL
  *
- * Gets the value that is stored in @settings for @key.
+ * Attempts to release the permission represented by @permission.
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings.
+ * The precise method by which this happens depends on the permission
+ * and the underlying authentication mechanism.  In most cases the
+ * permission will be dropped immediately without further action.
  *
- * Returns: a new #GVariant
+ * You should check with g_permission_get_can_release() before calling
+ * this function.
+ *
+ * If the permission is released then %TRUE is returned.  Otherwise,
+ * %FALSE is returned and @error is set appropriately.
+ *
+ * This call is blocking, likely for a very long time (in the case that
+ * user interaction is required).  See g_permission_release_async() for
+ * the non-blocking version.
+ *
+ * Returns: %TRUE if the permission was successfully released
  * Since: 2.26
  */
 
 
 /**
- * g_settings_is_writable:
- * @settings: a #GSettings object
- * @name: the name of a key
+ * g_permission_release_async:
+ * @permission: a #GPermission instance
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: the #GAsyncReadyCallback to call when done
+ * @user_data: the user data to pass to @callback
  *
- * Finds out if a key can be written or not
+ * Attempts to release the permission represented by @permission.
+ *
+ * This is the first half of the asynchronous version of
+ * g_permission_release().
  *
- * Returns: %TRUE if the key @name is writable
  * Since: 2.26
  */
 
 
 /**
- * g_settings_list_children:
- * @settings: a #GSettings object
- *
- * Gets the list of children on @settings.
- *
- * The list is exactly the list of strings for which it is not an error
- * to call g_settings_get_child().
- *
- * For GSettings objects that are lists, this value can change at any
- * time. Note that there is a race condition here: you may
- * request a child after listing it only for it to have been destroyed
- * in the meantime.  For this reason, g_settings_get_child() may return
- * %NULL even for a child that was listed by this function.
+ * g_permission_release_finish:
+ * @permission: a #GPermission instance
+ * @result: the #GAsyncResult given to the #GAsyncReadyCallback
+ * @error: a pointer to a %NULL #GError, or %NULL
  *
- * For GSettings objects that are not lists, you should probably not be
- * calling this function from "normal" code (since you should already
- * know what children are in your schema).  This function may still be
- * useful there for introspection reasons, however.
+ * Collects the result of attempting to release the permission
+ * represented by @permission.
  *
- * You should free the return value with g_strfreev() when you are done
- * with it.
+ * This is the second half of the asynchronous version of
+ * g_permission_release().
  *
- * Returns: (transfer full) (element-type utf8): a list of the children on @settings
+ * Returns: %TRUE if the permission was successfully released
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_list_keys:
- * @settings: a #GSettings object
- *
- * Introspects the list of keys on @settings.
+ * g_pollable_input_stream_can_poll:
+ * @stream: a #GPollableInputStream.
  *
- * You should probably not be calling this function from "normal" code
- * (since you should already know what keys are in your schema).  This
- * function is intended for introspection reasons.
+ * Checks if @stream is actually pollable. Some classes may implement
+ * #GPollableInputStream but have only certain instances of that class
+ * be pollable. If this method returns %FALSE, then the behavior of
+ * other #GPollableInputStream methods is undefined.
  *
- * You should free the return value with g_strfreev() when you are done
- * with it.
+ * For any given stream, the value returned by this method is constant;
+ * a stream cannot switch from pollable to non-pollable or vice versa.
  *
- * Returns: (transfer full) (element-type utf8): a list of the keys on @settings
+ * Returns: %TRUE if @stream is pollable, %FALSE if not.
+ * Since: 2.28
  */
 
 
 /**
- * g_settings_list_relocatable_schemas:
+ * g_pollable_input_stream_create_source:
+ * @stream: a #GPollableInputStream.
+ * @cancellable: (nullable): a #GCancellable, or %NULL
  *
- * Deprecated.
+ * Creates a #GSource that triggers when @stream can be read, or
+ * @cancellable is triggered or an error occurs. The callback on the
+ * source is of the #GPollableSourceFunc type.
  *
- * Returns: (element-type utf8) (transfer none): a list of relocatable
- *   #GSettings schemas that are available.  The list must not be
- *   modified or freed.
+ * As with g_pollable_input_stream_is_readable(), it is possible that
+ * the stream may not actually be readable even after the source
+ * triggers, so you should use g_pollable_input_stream_read_nonblocking()
+ * rather than g_input_stream_read() from the callback.
+ *
+ * Returns: (transfer full): a new #GSource
  * Since: 2.28
- * Deprecated: 2.40: Use g_settings_schema_source_list_schemas() instead
  */
 
 
 /**
- * g_settings_list_schemas:
+ * g_pollable_input_stream_is_readable:
+ * @stream: a #GPollableInputStream.
  *
- * Deprecated.
+ * Checks if @stream can be read.
  *
- * Returns: (element-type utf8) (transfer none): a list of #GSettings
- *   schemas that are available.  The list must not be modified or
- *   freed.
- * Since: 2.26
- * Deprecated: 2.40: Use g_settings_schema_source_list_schemas() instead.
- * If you used g_settings_list_schemas() to check for the presence of
- * a particular schema, use g_settings_schema_source_lookup() instead
- * of your whole loop.
+ * Note that some stream types may not be able to implement this 100%
+ * reliably, and it is possible that a call to g_input_stream_read()
+ * after this returns %TRUE would still block. To guarantee
+ * non-blocking behavior, you should always use
+ * g_pollable_input_stream_read_nonblocking(), which will return a
+ * %G_IO_ERROR_WOULD_BLOCK error rather than blocking.
+ *
+ * Returns: %TRUE if @stream is readable, %FALSE if not. If an error
+ *   has occurred on @stream, this will result in
+ *   g_pollable_input_stream_is_readable() returning %TRUE, and the
+ *   next attempt to read will return the error.
+ * Since: 2.28
  */
 
 
 /**
- * g_settings_new:
- * @schema_id: the id of the schema
+ * g_pollable_input_stream_read_nonblocking: (virtual read_nonblocking)
+ * @stream: a #GPollableInputStream
+ * @buffer: (array length=count) (element-type guint8): a buffer to
+ *     read data into (which should be at least @count bytes long).
+ * @count: the number of bytes you want to read
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Creates a new #GSettings object with the schema specified by
- * @schema_id.
+ * Attempts to read up to @count bytes from @stream into @buffer, as
+ * with g_input_stream_read(). If @stream is not currently readable,
+ * this will immediately return %G_IO_ERROR_WOULD_BLOCK, and you can
+ * use g_pollable_input_stream_create_source() to create a #GSource
+ * that will be triggered when @stream is readable.
  *
- * Signals on the newly created #GSettings object will be dispatched
- * via the thread-default #GMainContext in effect at the time of the
- * call to g_settings_new().  The new #GSettings will hold a reference
- * on the context.  See g_main_context_push_thread_default().
+ * Note that since this method never blocks, you cannot actually
+ * use @cancellable to cancel it. However, it will return an error
+ * if @cancellable has already been cancelled when you call, which
+ * may happen if you call this method after a source triggers due
+ * to having been cancelled.
  *
- * Returns: a new #GSettings object
- * Since: 2.26
+ * Returns: the number of bytes read, or -1 on error (including
+ *   %G_IO_ERROR_WOULD_BLOCK).
  */
 
 
 /**
- * g_settings_new_full:
- * @schema: a #GSettingsSchema
- * @backend: (nullable): a #GSettingsBackend
- * @path: (nullable): the path to use
- *
- * Creates a new #GSettings object with a given schema, backend and
- * path.
- *
- * It should be extremely rare that you ever want to use this function.
- * It is made available for advanced use-cases (such as plugin systems
- * that want to provide access to schemas loaded from custom locations,
- * etc).
- *
- * At the most basic level, a #GSettings object is a pure composition of
- * 4 things: a #GSettingsSchema, a #GSettingsBackend, a path within that
- * backend, and a #GMainContext to which signals are dispatched.
- *
- * This constructor therefore gives you full control over constructing
- * #GSettings instances.  The first 3 parameters are given directly as
- * @schema, @backend and @path, and the main context is taken from the
- * thread-default (as per g_settings_new()).
+ * g_pollable_output_stream_can_poll:
+ * @stream: a #GPollableOutputStream.
  *
- * If @backend is %NULL then the default backend is used.
+ * Checks if @stream is actually pollable. Some classes may implement
+ * #GPollableOutputStream but have only certain instances of that
+ * class be pollable. If this method returns %FALSE, then the behavior
+ * of other #GPollableOutputStream methods is undefined.
  *
- * If @path is %NULL then the path from the schema is used.  It is an
- * error if @path is %NULL and the schema has no path of its own or if
- * @path is non-%NULL and not equal to the path that the schema does
- * have.
+ * For any given stream, the value returned by this method is constant;
+ * a stream cannot switch from pollable to non-pollable or vice versa.
  *
- * Returns: a new #GSettings object
- * Since: 2.32
+ * Returns: %TRUE if @stream is pollable, %FALSE if not.
+ * Since: 2.28
  */
 
 
 /**
- * g_settings_new_with_backend:
- * @schema_id: the id of the schema
- * @backend: the #GSettingsBackend to use
+ * g_pollable_output_stream_create_source:
+ * @stream: a #GPollableOutputStream.
+ * @cancellable: (nullable): a #GCancellable, or %NULL
  *
- * Creates a new #GSettings object with the schema specified by
- * @schema_id and a given #GSettingsBackend.
+ * Creates a #GSource that triggers when @stream can be written, or
+ * @cancellable is triggered or an error occurs. The callback on the
+ * source is of the #GPollableSourceFunc type.
  *
- * Creating a #GSettings object with a different backend allows accessing
- * settings from a database other than the usual one. For example, it may make
- * sense to pass a backend corresponding to the "defaults" settings database on
- * the system to get a settings object that modifies the system default
- * settings instead of the settings for this user.
+ * As with g_pollable_output_stream_is_writable(), it is possible that
+ * the stream may not actually be writable even after the source
+ * triggers, so you should use g_pollable_output_stream_write_nonblocking()
+ * rather than g_output_stream_write() from the callback.
  *
- * Returns: a new #GSettings object
- * Since: 2.26
+ * Returns: (transfer full): a new #GSource
+ * Since: 2.28
  */
 
 
 /**
- * g_settings_new_with_backend_and_path:
- * @schema_id: the id of the schema
- * @backend: the #GSettingsBackend to use
- * @path: the path to use
+ * g_pollable_output_stream_is_writable:
+ * @stream: a #GPollableOutputStream.
  *
- * Creates a new #GSettings object with the schema specified by
- * @schema_id and a given #GSettingsBackend and path.
+ * Checks if @stream can be written.
  *
- * This is a mix of g_settings_new_with_backend() and
- * g_settings_new_with_path().
+ * Note that some stream types may not be able to implement this 100%
+ * reliably, and it is possible that a call to g_output_stream_write()
+ * after this returns %TRUE would still block. To guarantee
+ * non-blocking behavior, you should always use
+ * g_pollable_output_stream_write_nonblocking(), which will return a
+ * %G_IO_ERROR_WOULD_BLOCK error rather than blocking.
  *
- * Returns: a new #GSettings object
- * Since: 2.26
+ * Returns: %TRUE if @stream is writable, %FALSE if not. If an error
+ *   has occurred on @stream, this will result in
+ *   g_pollable_output_stream_is_writable() returning %TRUE, and the
+ *   next attempt to write will return the error.
+ * Since: 2.28
  */
 
 
 /**
- * g_settings_new_with_path:
- * @schema_id: the id of the schema
- * @path: the path to use
- *
- * Creates a new #GSettings object with the relocatable schema specified
- * by @schema_id and a given path.
+ * g_pollable_output_stream_write_nonblocking: (virtual write_nonblocking)
+ * @stream: a #GPollableOutputStream
+ * @buffer: (array length=count) (element-type guint8): a buffer to write
+ *     data from
+ * @count: the number of bytes you want to write
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * You only need to do this if you want to directly create a settings
- * object with a schema that doesn't have a specified path of its own.
- * That's quite rare.
+ * Attempts to write up to @count bytes from @buffer to @stream, as
+ * with g_output_stream_write(). If @stream is not currently writable,
+ * this will immediately return %G_IO_ERROR_WOULD_BLOCK, and you can
+ * use g_pollable_output_stream_create_source() to create a #GSource
+ * that will be triggered when @stream is writable.
  *
- * It is a programmer error to call this function for a schema that
- * has an explicitly specified path.
+ * Note that since this method never blocks, you cannot actually
+ * use @cancellable to cancel it. However, it will return an error
+ * if @cancellable has already been cancelled when you call, which
+ * may happen if you call this method after a source triggers due
+ * to having been cancelled.
  *
- * It is a programmer error if @path is not a valid path.  A valid path
- * begins and ends with '/' and does not contain two consecutive '/'
- * characters.
+ * Also note that if %G_IO_ERROR_WOULD_BLOCK is returned some underlying
+ * transports like D/TLS require that you send the same @buffer and @count.
  *
- * Returns: a new #GSettings object
- * Since: 2.26
+ * Returns: the number of bytes written, or -1 on error (including
+ *   %G_IO_ERROR_WOULD_BLOCK).
  */
 
 
 /**
- * g_settings_range_check:
- * @settings: a #GSettings
- * @key: the key to check
- * @value: the value to check
+ * g_pollable_source_new:
+ * @pollable_stream: the stream associated with the new source
  *
- * Checks if the given @value is of the correct type and within the
- * permitted range for @key.
+ * Utility method for #GPollableInputStream and #GPollableOutputStream
+ * implementations. Creates a new #GSource that expects a callback of
+ * type #GPollableSourceFunc. The new source does not actually do
+ * anything on its own; use g_source_add_child_source() to add other
+ * sources to it to cause it to trigger.
  *
- * Returns: %TRUE if @value is valid for @key
+ * Returns: (transfer full): the new #GSource.
  * Since: 2.28
- * Deprecated: 2.40: Use g_settings_schema_key_range_check() instead.
  */
 
 
 /**
- * g_settings_reset:
- * @settings: a #GSettings object
- * @key: the name of a key
+ * g_pollable_source_new_full:
+ * @pollable_stream: (type GObject): the stream associated with the
+ *   new source
+ * @child_source: (nullable): optional child source to attach
+ * @cancellable: (nullable): optional #GCancellable to attach
  *
- * Resets @key to its default value.
+ * Utility method for #GPollableInputStream and #GPollableOutputStream
+ * implementations. Creates a new #GSource, as with
+ * g_pollable_source_new(), but also attaching @child_source (with a
+ * dummy callback), and @cancellable, if they are non-%NULL.
  *
- * This call resets the key, as much as possible, to its default value.
- * That might the value specified in the schema or the one set by the
- * administrator.
+ * Returns: (transfer full): the new #GSource.
+ * Since: 2.34
  */
 
 
 /**
- * g_settings_revert:
- * @settings: a #GSettings instance
+ * g_pollable_stream_read:
+ * @stream: a #GInputStream
+ * @buffer: (array length=count) (element-type guint8): a buffer to
+ *   read data into
+ * @count: the number of bytes to read
+ * @blocking: whether to do blocking I/O
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Reverts all non-applied changes to the settings.  This function
- * does nothing unless @settings is in 'delay-apply' mode; see
- * g_settings_delay().  In the normal case settings are always applied
- * immediately.
+ * Tries to read from @stream, as with g_input_stream_read() (if
+ * @blocking is %TRUE) or g_pollable_input_stream_read_nonblocking()
+ * (if @blocking is %FALSE). This can be used to more easily share
+ * code between blocking and non-blocking implementations of a method.
  *
- * Change notifications will be emitted for affected keys.
+ * If @blocking is %FALSE, then @stream must be a
+ * #GPollableInputStream for which g_pollable_input_stream_can_poll()
+ * returns %TRUE, or else the behavior is undefined. If @blocking is
+ * %TRUE, then @stream does not need to be a #GPollableInputStream.
+ *
+ * Returns: the number of bytes read, or -1 on error.
+ * Since: 2.34
  */
 
 
 /**
- * g_settings_schema_get_id:
- * @schema: a #GSettingsSchema
+ * g_pollable_stream_write:
+ * @stream: a #GOutputStream.
+ * @buffer: (array length=count) (element-type guint8): the buffer
+ *   containing the data to write.
+ * @count: the number of bytes to write
+ * @blocking: whether to do blocking I/O
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Get the ID of @schema.
+ * Tries to write to @stream, as with g_output_stream_write() (if
+ * @blocking is %TRUE) or g_pollable_output_stream_write_nonblocking()
+ * (if @blocking is %FALSE). This can be used to more easily share
+ * code between blocking and non-blocking implementations of a method.
  *
- * Returns: (transfer none): the ID
+ * If @blocking is %FALSE, then @stream must be a
+ * #GPollableOutputStream for which
+ * g_pollable_output_stream_can_poll() returns %TRUE or else the
+ * behavior is undefined. If @blocking is %TRUE, then @stream does not
+ * need to be a #GPollableOutputStream.
+ *
+ * Returns: the number of bytes written, or -1 on error.
+ * Since: 2.34
  */
 
 
 /**
- * g_settings_schema_get_key:
- * @schema: a #GSettingsSchema
- * @name: the name of a key
+ * g_pollable_stream_write_all:
+ * @stream: a #GOutputStream.
+ * @buffer: (array length=count) (element-type guint8): the buffer
+ *   containing the data to write.
+ * @count: the number of bytes to write
+ * @blocking: whether to do blocking I/O
+ * @bytes_written: (out): location to store the number of bytes that was
+ *   written to the stream
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: location to store the error occurring, or %NULL to ignore
  *
- * Gets the key named @name from @schema.
+ * Tries to write @count bytes to @stream, as with
+ * g_output_stream_write_all(), but using g_pollable_stream_write()
+ * rather than g_output_stream_write().
  *
- * It is a programmer error to request a key that does not exist.  See
- * g_settings_schema_list_keys().
+ * On a successful write of @count bytes, %TRUE is returned, and
+ * @bytes_written is set to @count.
  *
- * Returns: (transfer full): the #GSettingsSchemaKey for @name
- * Since: 2.40
+ * If there is an error during the operation (including
+ * %G_IO_ERROR_WOULD_BLOCK in the non-blocking case), %FALSE is
+ * returned and @error is set to indicate the error status,
+ * @bytes_written is updated to contain the number of bytes written
+ * into the stream before the error occurred.
+ *
+ * As with g_pollable_stream_write(), if @blocking is %FALSE, then
+ * @stream must be a #GPollableOutputStream for which
+ * g_pollable_output_stream_can_poll() returns %TRUE or else the
+ * behavior is undefined. If @blocking is %TRUE, then @stream does not
+ * need to be a #GPollableOutputStream.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error
+ * Since: 2.34
  */
 
 
 /**
- * g_settings_schema_get_path:
- * @schema: a #GSettingsSchema
+ * g_property_action_new:
+ * @name: the name of the action to create
+ * @object: (type GObject.Object): the object that has the property
+ *   to wrap
+ * @property_name: the name of the property
  *
- * Gets the path associated with @schema, or %NULL.
+ * Creates a #GAction corresponding to the value of property
+ * @property_name on @object.
  *
- * Schemas may be single-instance or relocatable.  Single-instance
- * schemas correspond to exactly one set of keys in the backend
- * database: those located at the path returned by this function.
+ * The property must be existent and readable and writable (and not
+ * construct-only).
  *
- * Relocatable schemas can be referenced by other schemas and can
- * threfore describe multiple sets of keys at different locations.  For
- * relocatable schemas, this function will return %NULL.
+ * This function takes a reference on @object and doesn't release it
+ * until the action is destroyed.
  *
- * Returns: (transfer none): the path of the schema, or %NULL
- * Since: 2.32
+ * Returns: a new #GPropertyAction
+ * Since: 2.38
  */
 
 
 /**
- * g_settings_schema_has_key:
- * @schema: a #GSettingsSchema
- * @name: the name of a key
+ * g_proxy_address_get_destination_hostname:
+ * @proxy: a #GProxyAddress
  *
- * Checks if @schema has a key named @name.
+ * Gets @proxy's destination hostname; that is, the name of the host
+ * that will be connected to via the proxy, not the name of the proxy
+ * itself.
  *
- * Returns: %TRUE if such a key exists
- * Since: 2.40
+ * Returns: the @proxy's destination hostname
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_key_get_default_value:
- * @key: a #GSettingsSchemaKey
- *
- * Gets the default value for @key.
+ * g_proxy_address_get_destination_port:
+ * @proxy: a #GProxyAddress
  *
- * Note that this is the default value according to the schema.  System
- * administrator defaults and lockdown are not visible via this API.
+ * Gets @proxy's destination port; that is, the port on the
+ * destination host that will be connected to via the proxy, not the
+ * port number of the proxy itself.
  *
- * Returns: (transfer full): the default value for the key
- * Since: 2.40
+ * Returns: the @proxy's destination port
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_key_get_description:
- * @key: a #GSettingsSchemaKey
- *
- * Gets the description for @key.
- *
- * If no description has been provided in the schema for @key, returns
- * %NULL.
- *
- * The description can be one sentence to several paragraphs in length.
- * Paragraphs are delimited with a double newline.  Descriptions can be
- * translated and the value returned from this function is is the
- * current locale.
+ * g_proxy_address_get_destination_protocol:
+ * @proxy: a #GProxyAddress
  *
- * This function is slow.  The summary and description information for
- * the schemas is not stored in the compiled schema database so this
- * function has to parse all of the source XML files in the schema
- * directory.
+ * Gets the protocol that is being spoken to the destination
+ * server; eg, "http" or "ftp".
  *
- * Returns: the description for @key, or %NULL
+ * Returns: the @proxy's destination protocol
  * Since: 2.34
  */
 
 
 /**
- * g_settings_schema_key_get_name:
- * @key: a #GSettingsSchemaKey
+ * g_proxy_address_get_password:
+ * @proxy: a #GProxyAddress
  *
- * Gets the name of @key.
+ * Gets @proxy's password.
  *
- * Returns: the name of @key.
- * Since: 2.44
+ * Returns: the @proxy's password
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_key_get_range:
- * @key: a #GSettingsSchemaKey
- *
- * Queries the range of a key.
- *
- * This function will return a #GVariant that fully describes the range
- * of values that are valid for @key.
- *
- * The type of #GVariant returned is `(sv)`. The string describes
- * the type of range restriction in effect. The type and meaning of
- * the value contained in the variant depends on the string.
- *
- * If the string is `'type'` then the variant contains an empty array.
- * The element type of that empty array is the expected type of value
- * and all values of that type are valid.
- *
- * If the string is `'enum'` then the variant contains an array
- * enumerating the possible values. Each item in the array is
- * a possible valid value and no other values are valid.
- *
- * If the string is `'flags'` then the variant contains an array. Each
- * item in the array is a value that may appear zero or one times in an
- * array to be used as the value for this key. For example, if the
- * variant contained the array `['x', 'y']` then the valid values for
- * the key would be `[]`, `['x']`, `['y']`, `['x', 'y']` and
- * `['y', 'x']`.
- *
- * Finally, if the string is `'range'` then the variant contains a pair
- * of like-typed values -- the minimum and maximum permissible values
- * for this key.
- *
- * This information should not be used by normal programs.  It is
- * considered to be a hint for introspection purposes.  Normal programs
- * should already know what is permitted by their own schema.  The
- * format may change in any way in the future -- but particularly, new
- * forms may be added to the possibilities described above.
+ * g_proxy_address_get_protocol:
+ * @proxy: a #GProxyAddress
  *
- * You should free the returned value with g_variant_unref() when it is
- * no longer needed.
+ * Gets @proxy's protocol. eg, "socks" or "http"
  *
- * Returns: (transfer full): a #GVariant describing the range
- * Since: 2.40
+ * Returns: the @proxy's protocol
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_key_get_summary:
- * @key: a #GSettingsSchemaKey
- *
- * Gets the summary for @key.
- *
- * If no summary has been provided in the schema for @key, returns
- * %NULL.
- *
- * The summary is a short description of the purpose of the key; usually
- * one short sentence.  Summaries can be translated and the value
- * returned from this function is is the current locale.
+ * g_proxy_address_get_uri:
+ * @proxy: a #GProxyAddress
  *
- * This function is slow.  The summary and description information for
- * the schemas is not stored in the compiled schema database so this
- * function has to parse all of the source XML files in the schema
- * directory.
+ * Gets the proxy URI that @proxy was constructed from.
  *
- * Returns: the summary for @key, or %NULL
+ * Returns: the @proxy's URI, or %NULL if unknown
  * Since: 2.34
  */
 
 
 /**
- * g_settings_schema_key_get_value_type:
- * @key: a #GSettingsSchemaKey
+ * g_proxy_address_get_username:
+ * @proxy: a #GProxyAddress
  *
- * Gets the #GVariantType of @key.
+ * Gets @proxy's username.
  *
- * Returns: (transfer none): the type of @key
- * Since: 2.40
+ * Returns: the @proxy's username
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_key_range_check:
- * @key: a #GSettingsSchemaKey
- * @value: the value to check
+ * g_proxy_address_new:
+ * @inetaddr: The proxy server #GInetAddress.
+ * @port: The proxy server port.
+ * @protocol: The proxy protocol to support, in lower case (e.g. socks, http).
+ * @dest_hostname: The destination hostname the proxy should tunnel to.
+ * @dest_port: The destination port to tunnel to.
+ * @username: (nullable): The username to authenticate to the proxy server
+ *     (or %NULL).
+ * @password: (nullable): The password to authenticate to the proxy server
+ *     (or %NULL).
  *
- * Checks if the given @value is of the correct type and within the
- * permitted range for @key.
+ * Creates a new #GProxyAddress for @inetaddr with @protocol that should
+ * tunnel through @dest_hostname and @dest_port.
  *
- * It is a programmer error if @value is not of the correct type -- you
- * must check for this first.
+ * (Note that this method doesn't set the #GProxyAddress:uri or
+ * #GProxyAddress:destination-protocol fields; use g_object_new()
+ * directly if you want to set those.)
  *
- * Returns: %TRUE if @value is valid for @key
- * Since: 2.40
+ * Returns: a new #GProxyAddress
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_key_ref:
- * @key: a #GSettingsSchemaKey
+ * g_proxy_connect:
+ * @proxy: a #GProxy
+ * @connection: a #GIOStream
+ * @proxy_address: a #GProxyAddress
+ * @cancellable: (nullable): a #GCancellable
+ * @error: return #GError
  *
- * Increase the reference count of @key, returning a new reference.
+ * Given @connection to communicate with a proxy (eg, a
+ * #GSocketConnection that is connected to the proxy server), this
+ * does the necessary handshake to connect to @proxy_address, and if
+ * required, wraps the #GIOStream to handle proxy payload.
  *
- * Returns: a new reference to @key
- * Since: 2.40
+ * Returns: (transfer full): a #GIOStream that will replace @connection. This might
+ *               be the same as @connection, in which case a reference
+ *               will be added.
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_key_unref:
- * @key: a #GSettingsSchemaKey
+ * g_proxy_connect_async:
+ * @proxy: a #GProxy
+ * @connection: a #GIOStream
+ * @proxy_address: a #GProxyAddress
+ * @cancellable: (nullable): a #GCancellable
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): callback data
  *
- * Decrease the reference count of @key, possibly freeing it.
+ * Asynchronous version of g_proxy_connect().
  *
- * Since: 2.40
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_list_children:
- * @schema: a #GSettingsSchema
- *
- * Gets the list of children in @schema.
+ * g_proxy_connect_finish:
+ * @proxy: a #GProxy
+ * @result: a #GAsyncResult
+ * @error: return #GError
  *
- * You should free the return value with g_strfreev() when you are done
- * with it.
+ * See g_proxy_connect().
  *
- * Returns: (transfer full) (element-type utf8): a list of the children on @settings
- * Since: 2.44
+ * Returns: (transfer full): a #GIOStream.
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_list_keys:
- * @schema: a #GSettingsSchema
+ * g_proxy_get_default_for_protocol:
+ * @protocol: the proxy protocol name (e.g. http, socks, etc)
  *
- * Introspects the list of keys on @schema.
+ * Lookup "gio-proxy" extension point for a proxy implementation that supports
+ * specified protocol.
  *
- * You should probably not be calling this function from "normal" code
- * (since you should already know what keys are in your schema).  This
- * function is intended for introspection reasons.
+ * Returns: (transfer full): return a #GProxy or NULL if protocol
+ *               is not supported.
+ * Since: 2.26
+ */
+
+
+/**
+ * g_proxy_resolver_get_default:
  *
- * Returns: (transfer full) (element-type utf8): a list of the keys on
- *   @schema
- * Since: 2.46
+ * Gets the default #GProxyResolver for the system.
+ *
+ * Returns: (transfer none): the default #GProxyResolver.
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_ref:
- * @schema: a #GSettingsSchema
+ * g_proxy_resolver_is_supported:
+ * @resolver: a #GProxyResolver
  *
- * Increase the reference count of @schema, returning a new reference.
+ * Checks if @resolver can be used on this system. (This is used
+ * internally; g_proxy_resolver_get_default() will only return a proxy
+ * resolver that returns %TRUE for this method.)
  *
- * Returns: a new reference to @schema
- * Since: 2.32
+ * Returns: %TRUE if @resolver is supported.
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_source_get_default:
- *
- * Gets the default system schema source.
+ * g_proxy_resolver_lookup:
+ * @resolver: a #GProxyResolver
+ * @uri: a URI representing the destination to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: return location for a #GError, or %NULL
  *
- * This function is not required for normal uses of #GSettings but it
- * may be useful to authors of plugin management systems or to those who
- * want to introspect the content of schemas.
+ * 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.
  *
- * If no schemas are installed, %NULL will be returned.
+ * 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).
  *
- * The returned source may actually consist of multiple schema sources
- * from different directories, depending on which directories were given
- * in `XDG_DATA_DIRS` and `GSETTINGS_SCHEMA_DIR`. For this reason, all
- * lookups performed against the default source should probably be done
- * recursively.
+ * `direct://` is used when no proxy is needed.
+ * Direct connection should not be attempted unless it is part of the
+ * returned array of proxies.
  *
- * Returns: (transfer none) (nullable): the default schema source
- * Since: 2.32
+ * Returns: (transfer full) (array zero-terminated=1): A
+ *               NULL-terminated array of proxy URIs. Must be freed
+ *               with g_strfreev().
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_source_list_schemas:
- * @source: a #GSettingsSchemaSource
- * @recursive: if we should recurse
- * @non_relocatable: (out) (transfer full) (array zero-terminated=1): the
- *   list of non-relocatable schemas
- * @relocatable: (out) (transfer full) (array zero-terminated=1): the list
- *   of relocatable schemas
- *
- * Lists the schemas in a given source.
- *
- * If @recursive is %TRUE then include parent sources.  If %FALSE then
- * only include the schemas from one source (ie: one directory).  You
- * probably want %TRUE.
- *
- * Non-relocatable schemas are those for which you can call
- * g_settings_new().  Relocatable schemas are those for which you must
- * use g_settings_new_with_path().
+ * g_proxy_resolver_lookup_async:
+ * @resolver: a #GProxyResolver
+ * @uri: a URI representing the destination to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
- * Do not call this function from normal programs.  This is designed for
- * use by database editors, commandline tools, etc.
+ * Asynchronous lookup of proxy. See g_proxy_resolver_lookup() for more
+ * details.
  *
- * Since: 2.40
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_source_lookup:
- * @source: a #GSettingsSchemaSource
- * @schema_id: a schema ID
- * @recursive: %TRUE if the lookup should be recursive
- *
- * Looks up a schema with the identifier @schema_id in @source.
- *
- * This function is not required for normal uses of #GSettings but it
- * may be useful to authors of plugin management systems or to those who
- * want to introspect the content of schemas.
- *
- * If the schema isn't found directly in @source and @recursive is %TRUE
- * then the parent sources will also be checked.
+ * g_proxy_resolver_lookup_finish:
+ * @resolver: a #GProxyResolver
+ * @result: the result passed to your #GAsyncReadyCallback
+ * @error: return location for a #GError, or %NULL
  *
- * If the schema isn't found, %NULL is returned.
+ * Call this function to obtain the array of proxy URIs when
+ * g_proxy_resolver_lookup_async() is complete. See
+ * g_proxy_resolver_lookup() for more details.
  *
- * Returns: (nullable) (transfer full): a new #GSettingsSchema
- * Since: 2.32
+ * Returns: (transfer full) (array zero-terminated=1): A
+ *               NULL-terminated array of proxy URIs. Must be freed
+ *               with g_strfreev().
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_source_new_from_directory:
- * @directory: (type filename): the filename of a directory
- * @parent: (nullable): a #GSettingsSchemaSource, or %NULL
- * @trusted: %TRUE, if the directory is trusted
- * @error: a pointer to a #GError pointer set to %NULL, or %NULL
- *
- * Attempts to create a new schema source corresponding to the contents
- * of the given directory.
- *
- * This function is not required for normal uses of #GSettings but it
- * may be useful to authors of plugin management systems.
- *
- * The directory should contain a file called `gschemas.compiled` as
- * produced by the [glib-compile-schemas][glib-compile-schemas] tool.
- *
- * If @trusted is %TRUE then `gschemas.compiled` is trusted not to be
- * corrupted. This assumption has a performance advantage, but can result
- * in crashes or inconsistent behaviour in the case of a corrupted file.
- * Generally, you should set @trusted to %TRUE for files installed by the
- * system and to %FALSE for files in the home directory.
- *
- * If @parent is non-%NULL then there are two effects.
- *
- * First, if g_settings_schema_source_lookup() is called with the
- * @recursive flag set to %TRUE and the schema can not be found in the
- * source, the lookup will recurse to the parent.
- *
- * Second, any references to other schemas specified within this
- * source (ie: `child` or `extends`) references may be resolved
- * from the @parent.
+ * g_proxy_supports_hostname:
+ * @proxy: a #GProxy
  *
- * For this second reason, except in very unusual situations, the
- * @parent should probably be given as the default schema source, as
- * returned by g_settings_schema_source_get_default().
+ * Some proxy protocols expect to be passed a hostname, which they
+ * will resolve to an IP address themselves. Others, like SOCKS4, do
+ * not allow this. This function will return %FALSE if @proxy is
+ * implementing such a protocol. When %FALSE is returned, the caller
+ * should resolve the destination hostname first, and then pass a
+ * #GProxyAddress containing the stringified IP address to
+ * g_proxy_connect() or g_proxy_connect_async().
  *
- * Since: 2.32
+ * Returns: %TRUE if hostname resolution is supported.
+ * Since: 2.26
  */
 
 
 /**
- * g_settings_schema_source_ref:
- * @source: a #GSettingsSchemaSource
+ * g_remote_action_group_activate_action_full:
+ * @remote: a #GDBusActionGroup
+ * @action_name: the name of the action to activate
+ * @parameter: (nullable): the optional parameter to the activation
+ * @platform_data: the platform data to send
  *
- * Increase the reference count of @source, returning a new reference.
+ * Activates the remote action.
+ *
+ * This is the same as g_action_group_activate_action() except that it
+ * allows for provision of "platform data" to be sent along with the
+ * activation request.  This typically contains details such as the user
+ * interaction timestamp or startup notification information.
+ *
+ * @platform_data must be non-%NULL and must have the type
+ * %G_VARIANT_TYPE_VARDICT.  If it is floating, it will be consumed.
  *
- * Returns: a new reference to @source
  * Since: 2.32
  */
 
 
 /**
- * g_settings_schema_source_unref:
- * @source: a #GSettingsSchemaSource
+ * g_remote_action_group_change_action_state_full:
+ * @remote: a #GRemoteActionGroup
+ * @action_name: the name of the action to change the state of
+ * @value: the new requested value for the state
+ * @platform_data: the platform data to send
  *
- * Decrease the reference count of @source, possibly freeing it.
+ * Changes the state of a remote action.
+ *
+ * This is the same as g_action_group_change_action_state() except that
+ * it allows for provision of "platform data" to be sent along with the
+ * state change request.  This typically contains details such as the
+ * user interaction timestamp or startup notification information.
+ *
+ * @platform_data must be non-%NULL and must have the type
+ * %G_VARIANT_TYPE_VARDICT.  If it is floating, it will be consumed.
  *
  * Since: 2.32
  */
 
 
 /**
- * g_settings_schema_unref:
- * @schema: a #GSettingsSchema
+ * g_resolver_error_quark:
  *
- * Decrease the reference count of @schema, possibly freeing it.
+ * Gets the #GResolver Error Quark.
  *
- * Since: 2.32
+ * Returns: a #GQuark.
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @format: a #GVariant format string
- * @...: arguments as per @format
- *
- * Sets @key in @settings to @value.
- *
- * A convenience function that combines g_settings_set_value() with
- * g_variant_new().
+ * g_resolver_free_addresses: (skip)
+ * @addresses: a #GList of #GInetAddress
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings or for the #GVariantType of @format to mismatch
- * the type given in the schema.
+ * Frees @addresses (which should be the return value from
+ * g_resolver_lookup_by_name() or g_resolver_lookup_by_name_finish()).
+ * (This is a convenience method; you can also simply free the results
+ * by hand.)
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.26
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_boolean:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: the value to set it to
- *
- * Sets @key in @settings to @value.
- *
- * A convenience variant of g_settings_set() for booleans.
+ * g_resolver_free_targets: (skip)
+ * @targets: a #GList of #GSrvTarget
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a boolean type in the schema for @settings.
+ * Frees @targets (which should be the return value from
+ * g_resolver_lookup_service() or g_resolver_lookup_service_finish()).
+ * (This is a convenience method; you can also simply free the
+ * results by hand.)
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.26
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_double:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: the value to set it to
- *
- * Sets @key in @settings to @value.
- *
- * A convenience variant of g_settings_set() for doubles.
+ * g_resolver_get_default:
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a 'double' type in the schema for @settings.
+ * Gets the default #GResolver. You should unref it when you are done
+ * with it. #GResolver may use its reference count as a hint about how
+ * many threads it should allocate for concurrent DNS resolutions.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.26
+ * Returns: (transfer full): the default #GResolver.
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_enum:
- * @settings: a #GSettings object
- * @key: a key, within @settings
- * @value: an enumerated value
+ * g_resolver_lookup_by_address:
+ * @resolver: a #GResolver
+ * @address: the address to reverse-resolve
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: return location for a #GError, or %NULL
  *
- * Looks up the enumerated type nick for @value and writes it to @key,
- * within @settings.
+ * Synchronously reverse-resolves @address to determine its
+ * associated hostname.
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings or is not marked as an enumerated type, or for
- * @value not to be a valid value for the named type.
+ * If the DNS resolution fails, @error (if non-%NULL) will be set to
+ * a value from #GResolverError.
  *
- * After performing the write, accessing @key directly with
- * g_settings_get_string() will return the 'nick' associated with
- * @value.
+ * If @cancellable is non-%NULL, it can be used to cancel the
+ * operation, in which case @error (if non-%NULL) will be set to
+ * %G_IO_ERROR_CANCELLED.
  *
- * Returns: %TRUE, if the set succeeds
+ * Returns: a hostname (either ASCII-only, or in ASCII-encoded
+ *     form), or %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_flags:
- * @settings: a #GSettings object
- * @key: a key, within @settings
- * @value: a flags value
- *
- * Looks up the flags type nicks for the bits specified by @value, puts
- * them in an array of strings and writes the array to @key, within
- * @settings.
- *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings or is not marked as a flags type, or for @value
- * to contain any bits that are not value for the named type.
+ * g_resolver_lookup_by_address_async:
+ * @resolver: a #GResolver
+ * @address: the address to reverse-resolve
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
- * After performing the write, accessing @key directly with
- * g_settings_get_strv() will return an array of 'nicks'; one for each
- * bit in @value.
+ * Begins asynchronously reverse-resolving @address to determine its
+ * associated hostname, and eventually calls @callback, which must
+ * call g_resolver_lookup_by_address_finish() to get the final result.
  *
- * Returns: %TRUE, if the set succeeds
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_int:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: the value to set it to
- *
- * Sets @key in @settings to @value.
+ * g_resolver_lookup_by_address_finish:
+ * @resolver: a #GResolver
+ * @result: the result passed to your #GAsyncReadyCallback
+ * @error: return location for a #GError, or %NULL
  *
- * A convenience variant of g_settings_set() for 32-bit integers.
+ * Retrieves the result of a previous call to
+ * g_resolver_lookup_by_address_async().
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a int32 type in the schema for @settings.
+ * If the DNS resolution failed, @error (if non-%NULL) will be set to
+ * a value from #GResolverError. If the operation was cancelled,
+ * @error will be set to %G_IO_ERROR_CANCELLED.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.26
+ * Returns: a hostname (either ASCII-only, or in ASCII-encoded
+ * form), or %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_int64:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: the value to set it to
+ * g_resolver_lookup_by_name:
+ * @resolver: a #GResolver
+ * @hostname: the hostname to look up
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: return location for a #GError, or %NULL
  *
- * Sets @key in @settings to @value.
+ * Synchronously resolves @hostname to determine its associated IP
+ * address(es). @hostname may be an ASCII-only or UTF-8 hostname, or
+ * the textual form of an IP address (in which case this just becomes
+ * a wrapper around g_inet_address_new_from_string()).
  *
- * A convenience variant of g_settings_set() for 64-bit integers.
+ * On success, g_resolver_lookup_by_name() will return a non-empty #GList of
+ * #GInetAddress, sorted in order of preference and guaranteed to not
+ * contain duplicates. That is, if using the result to connect to
+ * @hostname, you should attempt to connect to the first address
+ * first, then the second if the first fails, etc. If you are using
+ * the result to listen on a socket, it is appropriate to add each
+ * result using e.g. g_socket_listener_add_address().
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a int64 type in the schema for @settings.
+ * If the DNS resolution fails, @error (if non-%NULL) will be set to a
+ * value from #GResolverError and %NULL will be returned.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.50
+ * If @cancellable is non-%NULL, it can be used to cancel the
+ * operation, in which case @error (if non-%NULL) will be set to
+ * %G_IO_ERROR_CANCELLED.
+ *
+ * If you are planning to connect to a socket on the resolved IP
+ * address, it may be easier to create a #GNetworkAddress and use its
+ * #GSocketConnectable interface.
+ *
+ * Returns: (element-type GInetAddress) (transfer full): a non-empty #GList
+ * of #GInetAddress, or %NULL on error. You
+ * must unref each of the addresses and free the list when you are
+ * done with it. (You can use g_resolver_free_addresses() to do this.)
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_string:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: the value to set it to
- *
- * Sets @key in @settings to @value.
- *
- * A convenience variant of g_settings_set() for strings.
+ * g_resolver_lookup_by_name_async:
+ * @resolver: a #GResolver
+ * @hostname: the hostname to look up the address of
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a string type in the schema for @settings.
+ * Begins asynchronously resolving @hostname to determine its
+ * associated IP address(es), and eventually calls @callback, which
+ * must call g_resolver_lookup_by_name_finish() to get the result.
+ * See g_resolver_lookup_by_name() for more details.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.26
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_strv:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: (nullable) (array zero-terminated=1): the value to set it to, or %NULL
- *
- * Sets @key in @settings to @value.
+ * g_resolver_lookup_by_name_finish:
+ * @resolver: a #GResolver
+ * @result: the result passed to your #GAsyncReadyCallback
+ * @error: return location for a #GError, or %NULL
  *
- * A convenience variant of g_settings_set() for string arrays.  If
- * @value is %NULL, then @key is set to be the empty array.
+ * Retrieves the result of a call to
+ * g_resolver_lookup_by_name_async().
  *
- * It is a programmer error to give a @key that isn't specified as
- * having an array of strings type in the schema for @settings.
+ * If the DNS resolution failed, @error (if non-%NULL) will be set to
+ * a value from #GResolverError. If the operation was cancelled,
+ * @error will be set to %G_IO_ERROR_CANCELLED.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.26
+ * Returns: (element-type GInetAddress) (transfer full): a #GList
+ * of #GInetAddress, or %NULL on error. See g_resolver_lookup_by_name()
+ * for more details.
+ * Since: 2.22
  */
 
 
 /**
- * g_settings_set_uint:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: the value to set it to
+ * g_resolver_lookup_records:
+ * @resolver: a #GResolver
+ * @rrname: the DNS name to lookup the record for
+ * @record_type: the type of DNS record to lookup
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: return location for a #GError, or %NULL
  *
- * Sets @key in @settings to @value.
+ * Synchronously performs a DNS record lookup for the given @rrname and returns
+ * a list of records as #GVariant tuples. See #GResolverRecordType for
+ * information on what the records contain for each @record_type.
  *
- * A convenience variant of g_settings_set() for 32-bit unsigned
- * integers.
+ * If the DNS resolution fails, @error (if non-%NULL) will be set to
+ * a value from #GResolverError and %NULL will be returned.
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a uint32 type in the schema for @settings.
+ * If @cancellable is non-%NULL, it can be used to cancel the
+ * operation, in which case @error (if non-%NULL) will be set to
+ * %G_IO_ERROR_CANCELLED.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.30
+ * Returns: (element-type GVariant) (transfer full): a non-empty #GList of
+ * #GVariant, or %NULL on error. You must free each of the records and the list
+ * when you are done with it. (You can use g_list_free_full() with
+ * g_variant_unref() to do this.)
+ * Since: 2.34
  */
 
 
 /**
- * g_settings_set_uint64:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: the value to set it to
- *
- * Sets @key in @settings to @value.
- *
- * A convenience variant of g_settings_set() for 64-bit unsigned
- * integers.
+ * g_resolver_lookup_records_async:
+ * @resolver: a #GResolver
+ * @rrname: the DNS name to lookup the record for
+ * @record_type: the type of DNS record to lookup
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
- * It is a programmer error to give a @key that isn't specified as
- * having a uint64 type in the schema for @settings.
+ * Begins asynchronously performing a DNS lookup for the given
+ * @rrname, and eventually calls @callback, which must call
+ * g_resolver_lookup_records_finish() to get the final result. See
+ * g_resolver_lookup_records() for more details.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.50
+ * Since: 2.34
  */
 
 
 /**
- * g_settings_set_value:
- * @settings: a #GSettings object
- * @key: the name of the key to set
- * @value: a #GVariant of the correct type
- *
- * Sets @key in @settings to @value.
+ * g_resolver_lookup_records_finish:
+ * @resolver: a #GResolver
+ * @result: the result passed to your #GAsyncReadyCallback
+ * @error: return location for a #GError, or %NULL
  *
- * It is a programmer error to give a @key that isn't contained in the
- * schema for @settings or for @value to have the incorrect type, per
- * the schema.
+ * Retrieves the result of a previous call to
+ * g_resolver_lookup_records_async(). Returns a non-empty list of records as
+ * #GVariant tuples. See #GResolverRecordType for information on what the
+ * records contain.
  *
- * If @value is floating then this function consumes the reference.
+ * If the DNS resolution failed, @error (if non-%NULL) will be set to
+ * a value from #GResolverError. If the operation was cancelled,
+ * @error will be set to %G_IO_ERROR_CANCELLED.
  *
- * Returns: %TRUE if setting the key succeeded,
- *     %FALSE if the key was not writable
- * Since: 2.26
+ * Returns: (element-type GVariant) (transfer full): a non-empty #GList of
+ * #GVariant, or %NULL on error. You must free each of the records and the list
+ * when you are done with it. (You can use g_list_free_full() with
+ * g_variant_unref() to do this.)
+ * Since: 2.34
  */
 
 
 /**
- * g_settings_sync:
+ * g_resolver_lookup_service:
+ * @resolver: a #GResolver
+ * @service: the service type to look up (eg, "ldap")
+ * @protocol: the networking protocol to use for @service (eg, "tcp")
+ * @domain: the DNS domain to look up the service in
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: return location for a #GError, or %NULL
  *
- * Ensures that all pending operations are complete for the default backend.
+ * Synchronously performs a DNS SRV lookup for the given @service and
+ * @protocol in the given @domain and returns an array of #GSrvTarget.
+ * @domain may be an ASCII-only or UTF-8 hostname. Note also that the
+ * @service and @protocol arguments do not include the leading underscore
+ * that appears in the actual DNS entry.
  *
- * Writes made to a #GSettings are handled asynchronously.  For this
- * reason, it is very unlikely that the changes have it to disk by the
- * time g_settings_set() returns.
+ * On success, g_resolver_lookup_service() will return a non-empty #GList of
+ * #GSrvTarget, sorted in order of preference. (That is, you should
+ * attempt to connect to the first target first, then the second if
+ * the first fails, etc.)
  *
- * This call will block until all of the writes have made it to the
- * backend.  Since the mainloop is not running, no change notifications
- * will be dispatched during this call (but some may be queued by the
- * time the call is done).
- */
-
-
-/**
- * g_settings_unbind:
- * @object: (type GObject.Object): the object
- * @property: the property whose binding is removed
+ * If the DNS resolution fails, @error (if non-%NULL) will be set to
+ * a value from #GResolverError and %NULL will be returned.
  *
- * Removes an existing binding for @property on @object.
+ * If @cancellable is non-%NULL, it can be used to cancel the
+ * operation, in which case @error (if non-%NULL) will be set to
+ * %G_IO_ERROR_CANCELLED.
  *
- * Note that bindings are automatically removed when the
- * object is finalized, so it is rarely necessary to call this
- * function.
+ * If you are planning to connect to the service, it is usually easier
+ * to create a #GNetworkService and use its #GSocketConnectable
+ * interface.
  *
- * Since: 2.26
+ * Returns: (element-type GSrvTarget) (transfer full): a non-empty #GList of
+ * #GSrvTarget, or %NULL on error. You must free each of the targets and the
+ * list when you are done with it. (You can use g_resolver_free_targets() to do
+ * this.)
+ * Since: 2.22
  */
 
 
 /**
- * g_simple_action_group_add_entries:
- * @simple: a #GSimpleActionGroup
- * @entries: (array length=n_entries): a pointer to the first item in
- *           an array of #GActionEntry structs
- * @n_entries: the length of @entries, or -1
- * @user_data: the user data for signal connections
+ * g_resolver_lookup_service_async:
+ * @resolver: a #GResolver
+ * @service: the service type to look up (eg, "ldap")
+ * @protocol: the networking protocol to use for @service (eg, "tcp")
+ * @domain: the DNS domain to look up the service in
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): callback to call after resolution completes
+ * @user_data: (closure): data for @callback
  *
- * A convenience function for creating multiple #GSimpleAction instances
- * and adding them to the action group.
+ * Begins asynchronously performing a DNS SRV lookup for the given
+ * @service and @protocol in the given @domain, and eventually calls
+ * @callback, which must call g_resolver_lookup_service_finish() to
+ * get the final result. See g_resolver_lookup_service() for more
+ * details.
  *
- * Since: 2.30
- * Deprecated: 2.38: Use g_action_map_add_action_entries()
+ * Since: 2.22
  */
 
 
 /**
- * g_simple_action_group_insert:
- * @simple: a #GSimpleActionGroup
- * @action: a #GAction
- *
- * Adds an action to the action group.
+ * g_resolver_lookup_service_finish:
+ * @resolver: a #GResolver
+ * @result: the result passed to your #GAsyncReadyCallback
+ * @error: return location for a #GError, or %NULL
  *
- * If the action group already contains an action with the same name as
- * @action then the old action is dropped from the group.
+ * Retrieves the result of a previous call to
+ * g_resolver_lookup_service_async().
  *
- * The action group takes its own reference on @action.
+ * If the DNS resolution failed, @error (if non-%NULL) will be set to
+ * a value from #GResolverError. If the operation was cancelled,
+ * @error will be set to %G_IO_ERROR_CANCELLED.
  *
- * Since: 2.28
- * Deprecated: 2.38: Use g_action_map_add_action()
+ * Returns: (element-type GSrvTarget) (transfer full): a non-empty #GList of
+ * #GSrvTarget, or %NULL on error. See g_resolver_lookup_service() for more
+ * details.
+ * Since: 2.22
  */
 
 
 /**
- * g_simple_action_group_lookup:
- * @simple: a #GSimpleActionGroup
- * @action_name: the name of an action
+ * g_resolver_set_default:
+ * @resolver: the new default #GResolver
  *
- * Looks up the action with the name @action_name in the group.
+ * Sets @resolver to be the application's default resolver (reffing
+ * @resolver, and unreffing the previous default resolver, if any).
+ * Future calls to g_resolver_get_default() will return this resolver.
  *
- * If no such action exists, returns %NULL.
+ * This can be used if an application wants to perform any sort of DNS
+ * caching or "pinning"; it can implement its own #GResolver that
+ * calls the original default resolver for DNS operations, and
+ * implements its own cache policies on top of that, and then set
+ * itself as the default resolver for all later code to use.
  *
- * Returns: (transfer none): a #GAction, or %NULL
- * Since: 2.28
- * Deprecated: 2.38: Use g_action_map_lookup_action()
+ * Since: 2.22
  */
 
 
 /**
- * g_simple_action_group_new:
+ * g_resource_enumerate_children:
+ * @resource: A #GResource
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @error: return location for a #GError, or %NULL
  *
- * Creates a new, empty, #GSimpleActionGroup.
+ * Returns all the names of children at the specified @path in the resource.
+ * The return result is a %NULL terminated list of strings which should
+ * be released with g_strfreev().
  *
- * Returns: a new #GSimpleActionGroup
- * Since: 2.28
+ * If @path is invalid or does not exist in the #GResource,
+ * %G_RESOURCE_ERROR_NOT_FOUND will be returned.
+ *
+ * @lookup_flags controls the behaviour of the lookup.
+ *
+ * Returns: (array zero-terminated=1) (transfer full): an array of constant strings
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_action_group_remove:
- * @simple: a #GSimpleActionGroup
- * @action_name: the name of the action
- *
- * Removes the named action from the action group.
+ * g_resource_error_quark:
  *
- * If no action of this name is in the group then nothing happens.
+ * Gets the #GResource Error Quark.
  *
- * Since: 2.28
- * Deprecated: 2.38: Use g_action_map_remove_action()
+ * Returns: a #GQuark
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_action_new:
- * @name: the name of the action
- * @parameter_type: (nullable): the type of parameter that will be passed to
- *   handlers for the #GSimpleAction::activate signal, or %NULL for no parameter
+ * g_resource_get_info:
+ * @resource: A #GResource
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @size: (out) (optional): a location to place the length of the contents of the file,
+ *    or %NULL if the length is not needed
+ * @flags: (out) (optional): a location to place the flags about the file,
+ *    or %NULL if the length is not needed
+ * @error: return location for a #GError, or %NULL
  *
- * Creates a new action.
+ * Looks for a file at the specified @path in the resource and
+ * if found returns information about it.
  *
- * The created action is stateless. See g_simple_action_new_stateful() to create
- * an action that has state.
+ * @lookup_flags controls the behaviour of the lookup.
  *
- * Returns: a new #GSimpleAction
- * Since: 2.28
+ * Returns: %TRUE if the file was found. %FALSE if there were errors
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_action_new_stateful:
- * @name: the name of the action
- * @parameter_type: (nullable): the type of the parameter that will be passed to
- *   handlers for the #GSimpleAction::activate signal, or %NULL for no parameter
- * @state: the initial state of the action
+ * g_resource_load:
+ * @filename: (type filename): the path of a filename to load, in the GLib filename encoding
+ * @error: return location for a #GError, or %NULL
  *
- * Creates a new stateful action.
+ * Loads a binary resource bundle and creates a #GResource representation of it, allowing
+ * you to query it for data.
  *
- * All future state values must have the same #GVariantType as the initial
- * @state.
+ * If you want to use this resource in the global resource namespace you need
+ * to register it with g_resources_register().
  *
- * If the @state #GVariant is floating, it is consumed.
+ * If @filename is empty or the data in it is corrupt,
+ * %G_RESOURCE_ERROR_INTERNAL will be returned. If @filename doesn’t exist, or
+ * there is an error in reading it, an error from g_mapped_file_new() will be
+ * returned.
  *
- * Returns: a new #GSimpleAction
- * Since: 2.28
+ * Returns: (transfer full): a new #GResource, or %NULL on error
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_action_set_enabled:
- * @simple: a #GSimpleAction
- * @enabled: whether the action is enabled
+ * g_resource_lookup_data:
+ * @resource: A #GResource
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @error: return location for a #GError, or %NULL
  *
- * Sets the action as enabled or not.
+ * Looks for a file at the specified @path in the resource and
+ * returns a #GBytes that lets you directly access the data in
+ * memory.
  *
- * An action must be enabled in order to be activated or in order to
- * have its state changed from outside callers.
+ * The data is always followed by a zero byte, so you
+ * can safely use the data as a C string. However, that byte
+ * is not included in the size of the GBytes.
  *
- * This should only be called by the implementor of the action.  Users
- * of the action should not attempt to modify its enabled flag.
+ * For uncompressed resource files this is a pointer directly into
+ * the resource bundle, which is typically in some readonly data section
+ * in the program binary. For compressed files we allocate memory on
+ * the heap and automatically uncompress the data.
  *
- * Since: 2.28
+ * @lookup_flags controls the behaviour of the lookup.
+ *
+ * Returns: (transfer full): #GBytes or %NULL on error.
+ *     Free the returned object with g_bytes_unref()
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_action_set_state:
- * @simple: a #GSimpleAction
- * @value: the new #GVariant for the state
+ * g_resource_new_from_data:
+ * @data: A #GBytes
+ * @error: return location for a #GError, or %NULL
  *
- * Sets the state of the action.
+ * Creates a GResource from a reference to the binary resource bundle.
+ * This will keep a reference to @data while the resource lives, so
+ * the data should not be modified or freed.
  *
- * This directly updates the 'state' property to the given value.
+ * If you want to use this resource in the global resource namespace you need
+ * to register it with g_resources_register().
  *
- * This should only be called by the implementor of the action.  Users
- * of the action should not attempt to directly modify the 'state'
- * property.  Instead, they should call g_action_change_state() to
- * request the change.
+ * Note: @data must be backed by memory that is at least pointer aligned.
+ * Otherwise this function will internally create a copy of the memory since
+ * GLib 2.56, or in older versions fail and exit the process.
  *
- * If the @value GVariant is floating, it is consumed.
+ * If @data is empty or corrupt, %G_RESOURCE_ERROR_INTERNAL will be returned.
  *
- * Since: 2.30
+ * Returns: (transfer full): a new #GResource, or %NULL on error
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_action_set_state_hint:
- * @simple: a #GSimpleAction
- * @state_hint: (nullable): a #GVariant representing the state hint
+ * g_resource_open_stream:
+ * @resource: A #GResource
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @error: return location for a #GError, or %NULL
  *
- * Sets the state hint for the action.
+ * Looks for a file at the specified @path in the resource and
+ * returns a #GInputStream that lets you read the data.
  *
- * See g_action_get_state_hint() for more information about
- * action state hints.
+ * @lookup_flags controls the behaviour of the lookup.
  *
- * Since: 2.44
+ * Returns: (transfer full): #GInputStream or %NULL on error.
+ *     Free the returned object with g_object_unref()
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_report_error_in_idle: (skip)
- * @object: (nullable): a #GObject, or %NULL.
- * @callback: a #GAsyncReadyCallback.
- * @user_data: user data passed to @callback.
- * @domain: a #GQuark containing the error domain (usually #G_IO_ERROR).
- * @code: a specific error code.
- * @format: a formatted error reporting string.
- * @...: a list of variables to fill in @format.
+ * g_resource_ref:
+ * @resource: A #GResource
  *
- * Reports an error in an asynchronous function in an idle function by
- * directly setting the contents of the #GAsyncResult with the given error
- * information.
+ * Atomically increments the reference count of @resource by one. This
+ * function is MT-safe and may be called from any thread.
  *
- * Deprecated: 2.46: Use g_task_report_error().
+ * Returns: The passed in #GResource
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_report_gerror_in_idle:
- * @object: (nullable): a #GObject, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @user_data: (closure): user data passed to @callback.
- * @error: the #GError to report
+ * g_resource_unref:
+ * @resource: A #GResource
  *
- * Reports an error in an idle function. Similar to
- * g_simple_async_report_error_in_idle(), but takes a #GError rather
- * than building a new one.
+ * Atomically decrements the reference count of @resource by one. If the
+ * reference count drops to 0, all memory allocated by the resource is
+ * released. This function is MT-safe and may be called from any
+ * thread.
  *
- * Deprecated: 2.46: Use g_task_report_error().
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_report_take_gerror_in_idle: (skip)
- * @object: (nullable): a #GObject, or %NULL
- * @callback: a #GAsyncReadyCallback.
- * @user_data: user data passed to @callback.
- * @error: the #GError to report
+ * g_resources_enumerate_children:
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @error: return location for a #GError, or %NULL
  *
- * Reports an error in an idle function. Similar to
- * g_simple_async_report_gerror_in_idle(), but takes over the caller's
- * ownership of @error, so the caller does not have to free it any more.
+ * Returns all the names of children at the specified @path in the set of
+ * globally registered resources.
+ * The return result is a %NULL terminated list of strings which should
+ * be released with g_strfreev().
  *
- * Since: 2.28
- * Deprecated: 2.46: Use g_task_report_error().
+ * @lookup_flags controls the behaviour of the lookup.
+ *
+ * Returns: (array zero-terminated=1) (transfer full): an array of constant strings
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_result_complete:
- * @simple: a #GSimpleAsyncResult.
+ * g_resources_get_info:
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @size: (out) (optional): a location to place the length of the contents of the file,
+ *    or %NULL if the length is not needed
+ * @flags: (out) (optional): a location to place the #GResourceFlags about the file,
+ *    or %NULL if the flags are not needed
+ * @error: return location for a #GError, or %NULL
  *
- * Completes an asynchronous I/O job immediately. Must be called in
- * the thread where the asynchronous result was to be delivered, as it
- * invokes the callback directly. If you are in a different thread use
- * g_simple_async_result_complete_in_idle().
+ * Looks for a file at the specified @path in the set of
+ * globally registered resources and if found returns information about it.
  *
- * Calling this function takes a reference to @simple for as long as
- * is needed to complete the call.
+ * @lookup_flags controls the behaviour of the lookup.
  *
- * Deprecated: 2.46: Use #GTask instead.
+ * Returns: %TRUE if the file was found. %FALSE if there were errors
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_result_complete_in_idle:
- * @simple: a #GSimpleAsyncResult.
+ * g_resources_lookup_data:
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @error: return location for a #GError, or %NULL
  *
- * Completes an asynchronous function in an idle handler in the
- * [thread-default main context][g-main-context-push-thread-default]
- * of the thread that @simple was initially created in
- * (and re-pushes that context around the invocation of the callback).
+ * Looks for a file at the specified @path in the set of
+ * globally registered resources and returns a #GBytes that
+ * lets you directly access the data in memory.
  *
- * Calling this function takes a reference to @simple for as long as
- * is needed to complete the call.
+ * The data is always followed by a zero byte, so you
+ * can safely use the data as a C string. However, that byte
+ * is not included in the size of the GBytes.
  *
- * Deprecated: 2.46: Use #GTask instead.
- */
-
-
-/**
- * g_simple_async_result_get_op_res_gboolean:
- * @simple: a #GSimpleAsyncResult.
+ * For uncompressed resource files this is a pointer directly into
+ * the resource bundle, which is typically in some readonly data section
+ * in the program binary. For compressed files we allocate memory on
+ * the heap and automatically uncompress the data.
  *
- * Gets the operation result boolean from within the asynchronous result.
+ * @lookup_flags controls the behaviour of the lookup.
  *
- * Returns: %TRUE if the operation's result was %TRUE, %FALSE
- *     if the operation's result was %FALSE.
- * Deprecated: 2.46: Use #GTask and g_task_propagate_boolean() instead.
+ * Returns: (transfer full): #GBytes or %NULL on error.
+ *     Free the returned object with g_bytes_unref()
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_result_get_op_res_gpointer: (skip)
- * @simple: a #GSimpleAsyncResult.
- *
- * Gets a pointer result as returned by the asynchronous function.
+ * g_resources_open_stream:
+ * @path: A pathname inside the resource
+ * @lookup_flags: A #GResourceLookupFlags
+ * @error: return location for a #GError, or %NULL
  *
- * Returns: a pointer from the result.
- * Deprecated: 2.46: Use #GTask and g_task_propagate_pointer() instead.
- */
-
-
-/**
- * g_simple_async_result_get_op_res_gssize:
- * @simple: a #GSimpleAsyncResult.
+ * Looks for a file at the specified @path in the set of
+ * globally registered resources and returns a #GInputStream
+ * that lets you read the data.
  *
- * Gets a gssize from the asynchronous result.
+ * @lookup_flags controls the behaviour of the lookup.
  *
- * Returns: a gssize returned from the asynchronous function.
- * Deprecated: 2.46: Use #GTask and g_task_propagate_int() instead.
+ * Returns: (transfer full): #GInputStream or %NULL on error.
+ *     Free the returned object with g_object_unref()
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_result_get_source_tag: (skip)
- * @simple: a #GSimpleAsyncResult.
+ * g_resources_register:
+ * @resource: A #GResource
  *
- * Gets the source tag for the #GSimpleAsyncResult.
+ * Registers the resource with the process-global set of resources.
+ * Once a resource is registered the files in it can be accessed
+ * with the global resource lookup functions like g_resources_lookup_data().
  *
- * Returns: a #gpointer to the source object for the #GSimpleAsyncResult.
- * Deprecated: 2.46.: Use #GTask and g_task_get_source_tag() instead.
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_result_is_valid:
- * @result: the #GAsyncResult passed to the _finish function.
- * @source: (nullable): the #GObject passed to the _finish function.
- * @source_tag: (nullable): the asynchronous function.
- *
- * Ensures that the data passed to the _finish function of an async
- * operation is consistent.  Three checks are performed.
+ * g_resources_unregister:
+ * @resource: A #GResource
  *
- * First, @result is checked to ensure that it is really a
- * #GSimpleAsyncResult.  Second, @source is checked to ensure that it
- * matches the source object of @result.  Third, @source_tag is
- * checked to ensure that it is equal to the @source_tag argument given
- * to g_simple_async_result_new() (which, by convention, is a pointer
- * to the _async function corresponding to the _finish function from
- * which this function is called).  (Alternatively, if either
- * @source_tag or @result's source tag is %NULL, then the source tag
- * check is skipped.)
+ * Unregisters the resource from the process-global set of resources.
  *
- * Returns: #TRUE if all checks passed or #FALSE if any failed.
- * Since: 2.20
- * Deprecated: 2.46: Use #GTask and g_task_is_valid() instead.
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_async_result_new:
- * @source_object: (nullable): a #GObject, or %NULL.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @user_data: (closure): user data passed to @callback.
- * @source_tag: the asynchronous function.
- *
- * Creates a #GSimpleAsyncResult.
- *
- * The common convention is to create the #GSimpleAsyncResult in the
- * function that starts the asynchronous operation and use that same
- * function as the @source_tag.
+ * g_seekable_can_seek:
+ * @seekable: a #GSeekable.
  *
- * If your operation supports cancellation with #GCancellable (which it
- * probably should) then you should provide the user's cancellable to
- * g_simple_async_result_set_check_cancellable() immediately after
- * this function returns.
+ * Tests if the stream supports the #GSeekableIface.
  *
- * Returns: a #GSimpleAsyncResult.
- * Deprecated: 2.46: Use g_task_new() instead.
+ * Returns: %TRUE if @seekable can be seeked. %FALSE otherwise.
  */
 
 
 /**
- * g_simple_async_result_new_error:
- * @source_object: (nullable): a #GObject, or %NULL.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @user_data: (closure): user data passed to @callback.
- * @domain: a #GQuark.
- * @code: an error code.
- * @format: a string with format characters.
- * @...: a list of values to insert into @format.
+ * g_seekable_can_truncate:
+ * @seekable: a #GSeekable.
  *
- * Creates a new #GSimpleAsyncResult with a set error.
+ * Tests if the length of the stream can be adjusted with
+ * g_seekable_truncate().
  *
- * Returns: a #GSimpleAsyncResult.
- * Deprecated: 2.46: Use g_task_new() and g_task_return_new_error() instead.
+ * Returns: %TRUE if the stream can be truncated, %FALSE otherwise.
  */
 
 
 /**
- * g_simple_async_result_new_from_error:
- * @source_object: (nullable): a #GObject, or %NULL.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @user_data: (closure): user data passed to @callback.
- * @error: a #GError
+ * g_seekable_seek:
+ * @seekable: a #GSeekable.
+ * @offset: a #goffset.
+ * @type: a #GSeekType.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Creates a #GSimpleAsyncResult from an error condition.
+ * Seeks in the stream by the given @offset, modified by @type.
  *
- * Returns: a #GSimpleAsyncResult.
- * Deprecated: 2.46: Use g_task_new() and g_task_return_error() instead.
- */
-
-
-/**
- * g_simple_async_result_new_take_error: (skip)
- * @source_object: (nullable): a #GObject, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data passed to @callback
- * @error: a #GError
+ * Attempting to seek past the end of the stream will have different
+ * results depending on if the stream is fixed-sized or resizable.  If
+ * the stream is resizable then seeking past the end and then writing
+ * will result in zeros filling the empty space.  Seeking past the end
+ * of a resizable stream and reading will result in EOF.  Seeking past
+ * the end of a fixed-sized stream will fail.
  *
- * Creates a #GSimpleAsyncResult from an error condition, and takes over the
- * caller's ownership of @error, so the caller does not need to free it anymore.
+ * Any operation that would result in a negative offset will fail.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: a #GSimpleAsyncResult
- * Since: 2.28
- * Deprecated: 2.46: Use g_task_new() and g_task_return_error() instead.
+ * Returns: %TRUE if successful. If an error
+ *     has occurred, this function will return %FALSE and set @error
+ *     appropriately if present.
  */
 
 
 /**
- * g_simple_async_result_propagate_error:
- * @simple: a #GSimpleAsyncResult.
- * @dest: (out): a location to propagate the error to.
- *
- * Propagates an error from within the simple asynchronous result to
- * a given destination.
+ * g_seekable_tell:
+ * @seekable: a #GSeekable.
  *
- * If the #GCancellable given to a prior call to
- * g_simple_async_result_set_check_cancellable() is cancelled then this
- * function will return %TRUE with @dest set appropriately.
+ * Tells the current position within the stream.
  *
- * Returns: %TRUE if the error was propagated to @dest. %FALSE otherwise.
- * Deprecated: 2.46: Use #GTask instead.
+ * Returns: the offset from the beginning of the buffer.
  */
 
 
 /**
- * g_simple_async_result_run_in_thread: (skip)
- * @simple: a #GSimpleAsyncResult.
- * @func: a #GSimpleAsyncThreadFunc.
- * @io_priority: the io priority of the request.
+ * g_seekable_truncate: (virtual truncate_fn)
+ * @seekable: a #GSeekable.
+ * @offset: new length for @seekable, in bytes.
  * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Runs the asynchronous job in a separate thread and then calls
- * g_simple_async_result_complete_in_idle() on @simple to return
- * the result to the appropriate main loop.
+ * Sets the length of the stream to @offset. If the stream was previously
+ * larger than @offset, the extra data is discarded. If the stream was
+ * previouly shorter than @offset, it is extended with NUL ('\0') bytes.
  *
- * Calling this function takes a reference to @simple for as long as
- * is needed to run the job and report its completion.
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned. If an
+ * operation was partially finished when the operation was cancelled the
+ * partial result will be returned, without an error.
  *
- * Deprecated: 2.46: Use #GTask and g_task_run_in_thread() instead.
+ * Returns: %TRUE if successful. If an error
+ *     has occurred, this function will return %FALSE and set @error
+ *     appropriately if present.
  */
 
 
 /**
- * g_simple_async_result_set_check_cancellable:
- * @simple: a #GSimpleAsyncResult
- * @check_cancellable: (nullable): a #GCancellable to check, or %NULL to unset
+ * g_settings_apply:
+ * @settings: a #GSettings instance
  *
- * Sets a #GCancellable to check before dispatching results.
+ * Applies any changes that have been made to the settings.  This
+ * function does nothing unless @settings is in 'delay-apply' mode;
+ * see g_settings_delay().  In the normal case settings are always
+ * applied immediately.
+ */
+
+
+/**
+ * g_settings_backend_changed:
+ * @backend: a #GSettingsBackend implementation
+ * @key: the name of the key
+ * @origin_tag: the origin tag
  *
- * This function has one very specific purpose: the provided cancellable
- * is checked at the time of g_simple_async_result_propagate_error() If
- * it is cancelled, these functions will return an "Operation was
- * cancelled" error (%G_IO_ERROR_CANCELLED).
+ * Signals that a single key has possibly changed.  Backend
+ * implementations should call this if a key has possibly changed its
+ * value.
  *
- * Implementors of cancellable asynchronous functions should use this in
- * order to provide a guarantee to their callers that cancelling an
- * async operation will reliably result in an error being returned for
- * that operation (even if a positive result for the operation has
- * already been sent as an idle to the main context to be dispatched).
+ * @key must be a valid key (ie starting with a slash, not containing
+ * '//', and not ending with a slash).
  *
- * The checking described above is done regardless of any call to the
- * unrelated g_simple_async_result_set_handle_cancellation() function.
+ * The implementation must call this function during any call to
+ * g_settings_backend_write(), before the call returns (except in the
+ * case that no keys are actually changed and it cares to detect this
+ * fact).  It may not rely on the existence of a mainloop for
+ * dispatching the signal later.
  *
- * Since: 2.32
- * Deprecated: 2.46: Use #GTask instead.
+ * The implementation may call this function at any other time it likes
+ * in response to other events (such as changes occurring outside of the
+ * program).  These calls may originate from a mainloop or may originate
+ * in response to any other action (including from calls to
+ * g_settings_backend_write()).
+ *
+ * In the case that this call is in response to a call to
+ * g_settings_backend_write() then @origin_tag must be set to the same
+ * value that was passed to that call.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_async_result_set_error: (skip)
- * @simple: a #GSimpleAsyncResult.
- * @domain: a #GQuark (usually #G_IO_ERROR).
- * @code: an error code.
- * @format: a formatted error reporting string.
- * @...: a list of variables to fill in @format.
+ * g_settings_backend_changed_tree:
+ * @backend: a #GSettingsBackend implementation
+ * @tree: a #GTree containing the changes
+ * @origin_tag: the origin tag
  *
- * Sets an error within the asynchronous result without a #GError.
+ * This call is a convenience wrapper.  It gets the list of changes from
+ * @tree, computes the longest common prefix and calls
+ * g_settings_backend_changed().
  *
- * Deprecated: 2.46: Use #GTask and g_task_return_new_error() instead.
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_async_result_set_error_va: (skip)
- * @simple: a #GSimpleAsyncResult.
- * @domain: a #GQuark (usually #G_IO_ERROR).
- * @code: an error code.
- * @format: a formatted error reporting string.
- * @args: va_list of arguments.
+ * g_settings_backend_flatten_tree:
+ * @tree: a #GTree containing the changes
+ * @path: (out): the location to save the path
+ * @keys: (out) (transfer container) (array zero-terminated=1): the
+ *        location to save the relative keys
+ * @values: (out) (optional) (transfer container) (array zero-terminated=1):
+ *          the location to save the values, or %NULL
  *
- * Sets an error within the asynchronous result without a #GError.
- * Unless writing a binding, see g_simple_async_result_set_error().
+ * Calculate the longest common prefix of all keys in a tree and write
+ * out an array of the key names relative to that prefix and,
+ * optionally, the value to store at each of those keys.
  *
- * Deprecated: 2.46: Use #GTask and g_task_return_error() instead.
+ * You must free the value returned in @path, @keys and @values using
+ * g_free().  You should not attempt to free or unref the contents of
+ * @keys or @values.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_async_result_set_from_error:
- * @simple: a #GSimpleAsyncResult.
- * @error: #GError.
+ * g_settings_backend_get_default:
  *
- * Sets the result from a #GError.
+ * Returns the default #GSettingsBackend. It is possible to override
+ * the default by setting the `GSETTINGS_BACKEND` environment variable
+ * to the name of a settings backend.
  *
- * Deprecated: 2.46: Use #GTask and g_task_return_error() instead.
+ * The user gets a reference to the backend.
+ *
+ * Returns: (transfer full): the default #GSettingsBackend
+ * Since: 2.28
  */
 
 
 /**
- * g_simple_async_result_set_handle_cancellation:
- * @simple: a #GSimpleAsyncResult.
- * @handle_cancellation: a #gboolean.
+ * g_settings_backend_keys_changed:
+ * @backend: a #GSettingsBackend implementation
+ * @path: the path containing the changes
+ * @items: (array zero-terminated=1): the %NULL-terminated list of changed keys
+ * @origin_tag: the origin tag
  *
- * Sets whether to handle cancellation within the asynchronous operation.
+ * Signals that a list of keys have possibly changed.  Backend
+ * implementations should call this if keys have possibly changed their
+ * values.
  *
- * This function has nothing to do with
- * g_simple_async_result_set_check_cancellable().  It only refers to the
- * #GCancellable passed to g_simple_async_result_run_in_thread().
+ * @path must be a valid path (ie starting and ending with a slash and
+ * not containing '//').  Each string in @items must form a valid key
+ * name when @path is prefixed to it (ie: each item must not start or
+ * end with '/' and must not contain '//').
  *
- * Deprecated: 2.46
+ * The meaning of this signal is that any of the key names resulting
+ * from the contatenation of @path with each item in @items may have
+ * changed.
+ *
+ * The same rules for when notifications must occur apply as per
+ * g_settings_backend_changed().  These two calls can be used
+ * interchangeably if exactly one item has changed (although in that
+ * case g_settings_backend_changed() is definitely preferred).
+ *
+ * For efficiency reasons, the implementation should strive for @path to
+ * be as long as possible (ie: the longest common prefix of all of the
+ * keys that were changed) but this is not strictly required.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_async_result_set_op_res_gboolean:
- * @simple: a #GSimpleAsyncResult.
- * @op_res: a #gboolean.
+ * g_settings_backend_path_changed:
+ * @backend: a #GSettingsBackend implementation
+ * @path: the path containing the changes
+ * @origin_tag: the origin tag
  *
- * Sets the operation result to a boolean within the asynchronous result.
+ * Signals that all keys below a given path may have possibly changed.
+ * Backend implementations should call this if an entire path of keys
+ * have possibly changed their values.
  *
- * Deprecated: 2.46: Use #GTask and g_task_return_boolean() instead.
+ * @path must be a valid path (ie starting and ending with a slash and
+ * not containing '//').
+ *
+ * The meaning of this signal is that any of the key which has a name
+ * starting with @path may have changed.
+ *
+ * The same rules for when notifications must occur apply as per
+ * g_settings_backend_changed().  This call might be an appropriate
+ * reasponse to a 'reset' call but implementations are also free to
+ * explicitly list the keys that were affected by that call if they can
+ * easily do so.
+ *
+ * For efficiency reasons, the implementation should strive for @path to
+ * be as long as possible (ie: the longest common prefix of all of the
+ * keys that were changed) but this is not strictly required.  As an
+ * example, if this function is called with the path of "/" then every
+ * single key in the application will be notified of a possible change.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_async_result_set_op_res_gpointer: (skip)
- * @simple: a #GSimpleAsyncResult.
- * @op_res: a pointer result from an asynchronous function.
- * @destroy_op_res: a #GDestroyNotify function.
+ * g_settings_backend_path_writable_changed:
+ * @backend: a #GSettingsBackend implementation
+ * @path: the name of the path
  *
- * Sets the operation result within the asynchronous result to a pointer.
+ * Signals that the writability of all keys below a given path may have
+ * changed.
  *
- * Deprecated: 2.46: Use #GTask and g_task_return_pointer() instead.
+ * Since GSettings performs no locking operations for itself, this call
+ * will always be made in response to external events.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_async_result_set_op_res_gssize:
- * @simple: a #GSimpleAsyncResult.
- * @op_res: a #gssize.
+ * g_settings_backend_writable_changed:
+ * @backend: a #GSettingsBackend implementation
+ * @key: the name of the key
  *
- * Sets the operation result within the asynchronous result to
- * the given @op_res.
+ * Signals that the writability of a single key has possibly changed.
  *
- * Deprecated: 2.46: Use #GTask and g_task_return_int() instead.
+ * Since GSettings performs no locking operations for itself, this call
+ * will always be made in response to external events.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_async_result_take_error: (skip)
- * @simple: a #GSimpleAsyncResult
- * @error: a #GError
+ * g_settings_bind:
+ * @settings: a #GSettings object
+ * @key: the key to bind
+ * @object: (type GObject.Object): a #GObject
+ * @property: the name of the property to bind
+ * @flags: flags for the binding
  *
- * Sets the result from @error, and takes over the caller's ownership
- * of @error, so the caller does not need to free it any more.
+ * Create a binding between the @key in the @settings object
+ * and the property @property of @object.
  *
- * Since: 2.28
- * Deprecated: 2.46: Use #GTask and g_task_return_error() instead.
+ * The binding uses the default GIO mapping functions to map
+ * between the settings and property values. These functions
+ * handle booleans, numeric types and string types in a
+ * straightforward way. Use g_settings_bind_with_mapping() if
+ * you need a custom mapping, or map between types that are not
+ * supported by the default mapping functions.
+ *
+ * Unless the @flags include %G_SETTINGS_BIND_NO_SENSITIVITY, this
+ * function also establishes a binding between the writability of
+ * @key and the "sensitive" property of @object (if @object has
+ * a boolean property by that name). See g_settings_bind_writable()
+ * for more details about writable bindings.
+ *
+ * Note that the lifecycle of the binding is tied to @object,
+ * and that you can have only one binding per object property.
+ * If you bind the same property twice on the same object, the second
+ * binding overrides the first one.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_io_stream_new:
- * @input_stream: a #GInputStream.
- * @output_stream: a #GOutputStream.
+ * g_settings_bind_with_mapping: (skip)
+ * @settings: a #GSettings object
+ * @key: the key to bind
+ * @object: (type GObject.Object): a #GObject
+ * @property: the name of the property to bind
+ * @flags: flags for the binding
+ * @get_mapping: a function that gets called to convert values
+ *     from @settings to @object, or %NULL to use the default GIO mapping
+ * @set_mapping: a function that gets called to convert values
+ *     from @object to @settings, or %NULL to use the default GIO mapping
+ * @user_data: data that gets passed to @get_mapping and @set_mapping
+ * @destroy: #GDestroyNotify function for @user_data
  *
- * Creates a new #GSimpleIOStream wrapping @input_stream and @output_stream.
- * See also #GIOStream.
+ * Create a binding between the @key in the @settings object
+ * and the property @property of @object.
  *
- * Returns: a new #GSimpleIOStream instance.
- * Since: 2.44
+ * The binding uses the provided mapping functions to map between
+ * settings and property values.
+ *
+ * Note that the lifecycle of the binding is tied to @object,
+ * and that you can have only one binding per object property.
+ * If you bind the same property twice on the same object, the second
+ * binding overrides the first one.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_permission_new:
- * @allowed: %TRUE if the action is allowed
+ * g_settings_bind_writable:
+ * @settings: a #GSettings object
+ * @key: the key to bind
+ * @object: (type GObject.Object): a #GObject
+ * @property: the name of a boolean property to bind
+ * @inverted: whether to 'invert' the value
  *
- * Creates a new #GPermission instance that represents an action that is
- * either always or never allowed.
+ * Create a binding between the writability of @key in the
+ * @settings object and the property @property of @object.
+ * The property must be boolean; "sensitive" or "visible"
+ * properties of widgets are the most likely candidates.
+ *
+ * Writable bindings are always uni-directional; changes of the
+ * writability of the setting will be propagated to the object
+ * property, not the other way.
+ *
+ * When the @inverted argument is %TRUE, the binding inverts the
+ * value as it passes from the setting to the object, i.e. @property
+ * will be set to %TRUE if the key is not writable.
+ *
+ * Note that the lifecycle of the binding is tied to @object,
+ * and that you can have only one binding per object property.
+ * If you bind the same property twice on the same object, the second
+ * binding overrides the first one.
  *
- * Returns: the #GSimplePermission, as a #GPermission
  * Since: 2.26
  */
 
 
 /**
- * g_simple_proxy_resolver_new:
- * @default_proxy: (nullable): the default proxy to use, eg
- *     "socks://192.168.1.1"
- * @ignore_hosts: (nullable): an optional list of hosts/IP addresses
- *     to not use a proxy for.
+ * g_settings_create_action:
+ * @settings: a #GSettings
+ * @key: the name of a key in @settings
  *
- * Creates a new #GSimpleProxyResolver. See
- * #GSimpleProxyResolver:default-proxy and
- * #GSimpleProxyResolver:ignore-hosts for more details on how the
- * arguments are interpreted.
+ * Creates a #GAction corresponding to a given #GSettings key.
  *
- * Returns: (transfer full): a new #GSimpleProxyResolver
- * Since: 2.36
+ * The action has the same name as the key.
+ *
+ * The value of the key becomes the state of the action and the action
+ * is enabled when the key is writable.  Changing the state of the
+ * action results in the key being written to.  Changes to the value or
+ * writability of the key cause appropriate change notifications to be
+ * emitted for the action.
+ *
+ * For boolean-valued keys, action activations take no parameter and
+ * result in the toggling of the value.  For all other types,
+ * activations take the new value for the key (which must have the
+ * correct type).
+ *
+ * Returns: (transfer full): a new #GAction
+ * Since: 2.32
  */
 
 
 /**
- * g_simple_proxy_resolver_set_default_proxy:
- * @resolver: a #GSimpleProxyResolver
- * @default_proxy: the default proxy to use
- *
- * Sets the default proxy on @resolver, to be used for any URIs that
- * don't match #GSimpleProxyResolver:ignore-hosts or a proxy set
- * via g_simple_proxy_resolver_set_uri_proxy().
+ * g_settings_delay:
+ * @settings: a #GSettings object
  *
- * If @default_proxy starts with "socks://",
- * #GSimpleProxyResolver will treat it as referring to all three of
- * the socks5, socks4a, and socks4 proxy types.
+ * Changes the #GSettings object into 'delay-apply' mode. In this
+ * mode, changes to @settings are not immediately propagated to the
+ * backend, but kept locally until g_settings_apply() is called.
  *
- * Since: 2.36
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_proxy_resolver_set_ignore_hosts:
- * @resolver: a #GSimpleProxyResolver
- * @ignore_hosts: %NULL-terminated list of hosts/IP addresses
- *     to not use a proxy for
+ * g_settings_get:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
+ * @format: a #GVariant format string
+ * @...: arguments as per @format
  *
- * Sets the list of ignored hosts.
+ * Gets the value that is stored at @key in @settings.
  *
- * See #GSimpleProxyResolver:ignore-hosts for more details on how the
- * @ignore_hosts argument is interpreted.
+ * A convenience function that combines g_settings_get_value() with
+ * g_variant_get().
  *
- * Since: 2.36
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings or for the #GVariantType of @format to mismatch
+ * the type given in the schema.
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_simple_proxy_resolver_set_uri_proxy:
- * @resolver: a #GSimpleProxyResolver
- * @uri_scheme: the URI scheme to add a proxy for
- * @proxy: the proxy to use for @uri_scheme
+ * g_settings_get_boolean:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * Adds a URI-scheme-specific proxy to @resolver; URIs whose scheme
- * matches @uri_scheme (and which don't match
- * #GSimpleProxyResolver:ignore-hosts) will be proxied via @proxy.
+ * Gets the value that is stored at @key in @settings.
  *
- * As with #GSimpleProxyResolver:default-proxy, if @proxy starts with
- * "socks://", #GSimpleProxyResolver will treat it
- * as referring to all three of the socks5, socks4a, and socks4 proxy
- * types.
+ * A convenience variant of g_settings_get() for booleans.
  *
- * Since: 2.36
+ * It is a programmer error to give a @key that isn't specified as
+ * having a boolean type in the schema for @settings.
+ *
+ * Returns: a boolean
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_accept:
- * @socket: a #GSocket.
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Accept incoming connections on a connection-based socket. This removes
- * the first outstanding connection request from the listening socket and
- * creates a #GSocket object for it.
+ * g_settings_get_child:
+ * @settings: a #GSettings object
+ * @name: the name of the child schema
  *
- * The @socket must be bound to a local address with g_socket_bind() and
- * must be listening for incoming connections (g_socket_listen()).
+ * Creates a child settings object which has a base path of
+ * `base-path/@name`, where `base-path` is the base path of
+ * @settings.
  *
- * If there are no outstanding connections then the operation will block
- * or return %G_IO_ERROR_WOULD_BLOCK if non-blocking I/O is enabled.
- * To be notified of an incoming connection, wait for the %G_IO_IN condition.
+ * The schema for the child settings object must have been declared
+ * in the schema of @settings using a <child> element.
  *
- * Returns: (transfer full): a new #GSocket, or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Returns: (transfer full): a 'child' settings object
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_address_enumerator_next:
- * @enumerator: a #GSocketAddressEnumerator
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: a #GError.
+ * g_settings_get_default_value:
+ * @settings: a #GSettings object
+ * @key: the key to get the default value for
  *
- * Retrieves the next #GSocketAddress from @enumerator. Note that this
- * may block for some amount of time. (Eg, a #GNetworkAddress may need
- * to do a DNS lookup before it can return an address.) Use
- * g_socket_address_enumerator_next_async() if you need to avoid
- * blocking.
+ * Gets the "default value" of a key.
  *
- * If @enumerator is expected to yield addresses, but for some reason
- * is unable to (eg, because of a DNS error), then the first call to
- * g_socket_address_enumerator_next() will return an appropriate error
- * in *@error. However, if the first call to
- * g_socket_address_enumerator_next() succeeds, then any further
- * internal errors (other than @cancellable being triggered) will be
- * ignored.
+ * This is the value that would be read if g_settings_reset() were to be
+ * called on the key.
  *
- * Returns: (transfer full): a #GSocketAddress (owned by the caller), or %NULL on
- *     error (in which case *@error will be set) or if there are no
- *     more addresses.
+ * Note that this may be a different value than returned by
+ * g_settings_schema_key_get_default_value() if the system administrator
+ * has provided a default value.
+ *
+ * Comparing the return values of g_settings_get_default_value() and
+ * g_settings_get_value() is not sufficient for determining if a value
+ * has been set because the user may have explicitly set the value to
+ * something that happens to be equal to the default.  The difference
+ * here is that if the default changes in the future, the user's key
+ * will still be set.
+ *
+ * This function may be useful for adding an indication to a UI of what
+ * the default value was before the user set it.
+ *
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings.
+ *
+ * Returns: (nullable) (transfer full): the default value
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_address_enumerator_next_async:
- * @enumerator: a #GSocketAddressEnumerator
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request
- *     is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_settings_get_double:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
+ *
+ * Gets the value that is stored at @key in @settings.
+ *
+ * A convenience variant of g_settings_get() for doubles.
  *
- * Asynchronously retrieves the next #GSocketAddress from @enumerator
- * and then calls @callback, which must call
- * g_socket_address_enumerator_next_finish() to get the result.
+ * It is a programmer error to give a @key that isn't specified as
+ * having a 'double' type in the schema for @settings.
+ *
+ * Returns: a double
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_address_enumerator_next_finish:
- * @enumerator: a #GSocketAddressEnumerator
- * @result: a #GAsyncResult
- * @error: a #GError
+ * g_settings_get_enum:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * Retrieves the result of a completed call to
- * g_socket_address_enumerator_next_async(). See
- * g_socket_address_enumerator_next() for more information about
- * error handling.
+ * Gets the value that is stored in @settings for @key and converts it
+ * to the enum value that it represents.
  *
- * Returns: (transfer full): a #GSocketAddress (owned by the caller), or %NULL on
- *     error (in which case *@error will be set) or if there are no
- *     more addresses.
+ * In order to use this function the type of the value must be a string
+ * and it must be marked in the schema file as an enumerated type.
+ *
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings or is not marked as an enumerated type.
+ *
+ * If the value stored in the configuration database is not a valid
+ * value for the enumerated type then this function will return the
+ * default value.
+ *
+ * Returns: the enum value
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_address_get_family:
- * @address: a #GSocketAddress
+ * g_settings_get_flags:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * Gets the socket family type of @address.
+ * Gets the value that is stored in @settings for @key and converts it
+ * to the flags value that it represents.
  *
- * Returns: the socket family type of @address
- * Since: 2.22
+ * In order to use this function the type of the value must be an array
+ * of strings and it must be marked in the schema file as an flags type.
+ *
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings or is not marked as a flags type.
+ *
+ * If the value stored in the configuration database is not a valid
+ * value for the flags type then this function will return the default
+ * value.
+ *
+ * Returns: the flags value
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_address_get_native_size:
- * @address: a #GSocketAddress
+ * g_settings_get_has_unapplied:
+ * @settings: a #GSettings object
  *
- * Gets the size of @address's native struct sockaddr.
- * You can use this to allocate memory to pass to
- * g_socket_address_to_native().
+ * Returns whether the #GSettings object has any unapplied
+ * changes.  This can only be the case if it is in 'delayed-apply' mode.
  *
- * Returns: the size of the native struct sockaddr that
- *     @address represents
- * Since: 2.22
+ * Returns: %TRUE if @settings has unapplied changes
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_address_new_from_native:
- * @native: (not nullable): a pointer to a struct sockaddr
- * @len: the size of the memory location pointed to by @native
+ * g_settings_get_int:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * Creates a #GSocketAddress subclass corresponding to the native
- * struct sockaddr @native.
+ * Gets the value that is stored at @key in @settings.
  *
- * Returns: a new #GSocketAddress if @native could successfully
- *     be converted, otherwise %NULL
- * Since: 2.22
+ * A convenience variant of g_settings_get() for 32-bit integers.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having a int32 type in the schema for @settings.
+ *
+ * Returns: an integer
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_address_to_native:
- * @address: a #GSocketAddress
- * @dest: a pointer to a memory location that will contain the native
- * struct sockaddr
- * @destlen: the size of @dest. Must be at least as large as
- *     g_socket_address_get_native_size()
- * @error: #GError for error reporting, or %NULL to ignore
+ * g_settings_get_int64:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * Converts a #GSocketAddress to a native struct sockaddr, which can
- * be passed to low-level functions like connect() or bind().
+ * Gets the value that is stored at @key in @settings.
  *
- * If not enough space is available, a %G_IO_ERROR_NO_SPACE error
- * is returned. If the address type is not known on the system
- * then a %G_IO_ERROR_NOT_SUPPORTED error is returned.
+ * A convenience variant of g_settings_get() for 64-bit integers.
  *
- * Returns: %TRUE if @dest was filled in, %FALSE on error
- * Since: 2.22
+ * It is a programmer error to give a @key that isn't specified as
+ * having a int64 type in the schema for @settings.
+ *
+ * Returns: a 64-bit integer
+ * Since: 2.50
  */
 
 
 /**
- * g_socket_bind:
- * @socket: a #GSocket.
- * @address: a #GSocketAddress specifying the local address.
- * @allow_reuse: whether to allow reusing this address
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_settings_get_mapped:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
+ * @mapping: (scope call): the function to map the value in the
+ *           settings database to the value used by the application
+ * @user_data: user data for @mapping
  *
- * When a socket is created it is attached to an address family, but it
- * doesn't have an address in this family. g_socket_bind() assigns the
- * address (sometimes called name) of the socket.
+ * Gets the value that is stored at @key in @settings, subject to
+ * application-level validation/mapping.
  *
- * It is generally required to bind to a local address before you can
- * receive connections. (See g_socket_listen() and g_socket_accept() ).
- * In certain situations, you may also want to bind a socket that will be
- * used to initiate connections, though this is not normally required.
+ * You should use this function when the application needs to perform
+ * some processing on the value of the key (for example, parsing).  The
+ * @mapping function performs that processing.  If the function
+ * indicates that the processing was unsuccessful (due to a parse error,
+ * for example) then the mapping is tried again with another value.
  *
- * If @socket is a TCP socket, then @allow_reuse controls the setting
- * of the `SO_REUSEADDR` socket option; normally it should be %TRUE for
- * server sockets (sockets that you will eventually call
- * g_socket_accept() on), and %FALSE for client sockets. (Failing to
- * set this flag on a server socket may cause g_socket_bind() to return
- * %G_IO_ERROR_ADDRESS_IN_USE if the server program is stopped and then
- * immediately restarted.)
+ * This allows a robust 'fall back to defaults' behaviour to be
+ * implemented somewhat automatically.
  *
- * If @socket is a UDP socket, then @allow_reuse determines whether or
- * not other UDP sockets can be bound to the same address at the same
- * time. In particular, you can have several UDP sockets bound to the
- * same address, and they will all receive all of the multicast and
- * broadcast packets sent to that address. (The behavior of unicast
- * UDP packets to an address with multiple listeners is not defined.)
+ * The first value that is tried is the user's setting for the key.  If
+ * the mapping function fails to map this value, other values may be
+ * tried in an unspecified order (system or site defaults, translated
+ * schema default values, untranslated schema default values, etc).
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.22
+ * If the mapping function fails for all possible values, one additional
+ * attempt is made: the mapping function is called with a %NULL value.
+ * If the mapping function still indicates failure at this point then
+ * the application will be aborted.
+ *
+ * The result parameter for the @mapping function is pointed to a
+ * #gpointer which is initially set to %NULL.  The same pointer is given
+ * to each invocation of @mapping.  The final value of that #gpointer is
+ * what is returned by this function.  %NULL is valid; it is returned
+ * just as any other value would be.
+ *
+ * Returns: (transfer full): the result, which may be %NULL
  */
 
 
 /**
- * g_socket_check_connect_result:
- * @socket: a #GSocket
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_settings_get_range:
+ * @settings: a #GSettings
+ * @key: the key to query the range of
  *
- * Checks and resets the pending connect error for the socket.
- * This is used to check for errors when g_socket_connect() is
- * used in non-blocking mode.
+ * Queries the range of a key.
  *
- * Returns: %TRUE if no error, %FALSE otherwise, setting @error to the error
- * Since: 2.22
+ * Since: 2.28
+ * Deprecated: 2.40: Use g_settings_schema_key_get_range() instead.
  */
 
 
 /**
- * g_socket_client_add_application_proxy:
- * @client: a #GSocketClient
- * @protocol: The proxy protocol
+ * g_settings_get_string:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * Enable proxy protocols to be handled by the application. When the
- * indicated proxy protocol is returned by the #GProxyResolver,
- * #GSocketClient will consider this protocol as supported but will
- * not try to find a #GProxy instance to handle handshaking. The
- * application must check for this case by calling
- * g_socket_connection_get_remote_address() on the returned
- * #GSocketConnection, and seeing if it's a #GProxyAddress of the
- * appropriate type, to determine whether or not it needs to handle
- * the proxy handshaking itself.
+ * Gets the value that is stored at @key in @settings.
  *
- * This should be used for proxy protocols that are dialects of
- * another protocol such as HTTP proxy. It also allows cohabitation of
- * proxy protocols that are reused between protocols. A good example
- * is HTTP. It can be used to proxy HTTP, FTP and Gopher and can also
- * be use as generic socket proxy through the HTTP CONNECT method.
+ * A convenience variant of g_settings_get() for strings.
  *
- * When the proxy is detected as being an application proxy, TLS handshake
- * will be skipped. This is required to let the application do the proxy
- * specific handshake.
+ * It is a programmer error to give a @key that isn't specified as
+ * having a string type in the schema for @settings.
+ *
+ * Returns: a newly-allocated string
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_client_connect:
- * @client: a #GSocketClient.
- * @connectable: a #GSocketConnectable specifying the remote address.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Tries to resolve the @connectable and make a network connection to it.
- *
- * Upon a successful connection, a new #GSocketConnection is constructed
- * and returned.  The caller owns this new object and must drop their
- * reference to it when finished with it.
- *
- * The type of the #GSocketConnection object returned depends on the type of
- * the underlying socket that is used. For instance, for a TCP/IP connection
- * it will be a #GTcpConnection.
+ * g_settings_get_strv:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * The socket created will be the same family as the address that the
- * @connectable resolves to, unless family is set with g_socket_client_set_family()
- * or indirectly via g_socket_client_set_local_address(). The socket type
- * defaults to %G_SOCKET_TYPE_STREAM but can be set with
- * g_socket_client_set_socket_type().
+ * A convenience variant of g_settings_get() for string arrays.
  *
- * If a local address is specified with g_socket_client_set_local_address() the
- * socket will be bound to this address before connecting.
+ * It is a programmer error to give a @key that isn't specified as
+ * having an array of strings type in the schema for @settings.
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.22
+ * Returns: (array zero-terminated=1) (transfer full): a
+ * newly-allocated, %NULL-terminated array of strings, the value that
+ * is stored at @key in @settings.
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_client_connect_async:
- * @client: a #GSocketClient
- * @connectable: a #GSocketConnectable specifying the remote address.
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data for the callback
+ * g_settings_get_uint:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * This is the asynchronous version of g_socket_client_connect().
+ * Gets the value that is stored at @key in @settings.
  *
- * When the operation is finished @callback will be
- * called. You can then call g_socket_client_connect_finish() to get
- * the result of the operation.
+ * A convenience variant of g_settings_get() for 32-bit unsigned
+ * integers.
  *
- * Since: 2.22
+ * It is a programmer error to give a @key that isn't specified as
+ * having a uint32 type in the schema for @settings.
+ *
+ * Returns: an unsigned integer
+ * Since: 2.30
  */
 
 
 /**
- * g_socket_client_connect_finish:
- * @client: a #GSocketClient.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_settings_get_uint64:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * Finishes an async connect operation. See g_socket_client_connect_async()
+ * Gets the value that is stored at @key in @settings.
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.22
+ * A convenience variant of g_settings_get() for 64-bit unsigned
+ * integers.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having a uint64 type in the schema for @settings.
+ *
+ * Returns: a 64-bit unsigned integer
+ * Since: 2.50
  */
 
 
 /**
- * g_socket_client_connect_to_host:
- * @client: a #GSocketClient
- * @host_and_port: the name and optionally port of the host to connect to
- * @default_port: the default port to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a pointer to a #GError, or %NULL
+ * g_settings_get_user_value:
+ * @settings: a #GSettings object
+ * @key: the key to get the user value for
  *
- * This is a helper function for g_socket_client_connect().
+ * Checks the "user value" of a key, if there is one.
  *
- * Attempts to create a TCP connection to the named host.
+ * The user value of a key is the last value that was set by the user.
  *
- * @host_and_port may be in any of a number of recognized formats; an IPv6
- * address, an IPv4 address, or a domain name (in which case a DNS
- * lookup is performed).  Quoting with [] is supported for all address
- * types.  A port override may be specified in the usual way with a
- * colon.  Ports may be given as decimal numbers or symbolic names (in
- * which case an /etc/services lookup is performed).
+ * After calling g_settings_reset() this function should always return
+ * %NULL (assuming something is not wrong with the system
+ * configuration).
  *
- * If no port override is given in @host_and_port then @default_port will be
- * used as the port number to connect to.
+ * It is possible that g_settings_get_value() will return a different
+ * value than this function.  This can happen in the case that the user
+ * set a value for a key that was subsequently locked down by the system
+ * administrator -- this function will return the user's old value.
  *
- * In general, @host_and_port is expected to be provided by the user (allowing
- * them to give the hostname, and a port override if necessary) and
- * @default_port is expected to be provided by the application.
+ * This function may be useful for adding a "reset" option to a UI or
+ * for providing indication that a particular value has been changed.
  *
- * In the case that an IP address is given, a single connection
- * attempt is made.  In the case that a name is given, multiple
- * connection attempts may be made, in turn and according to the
- * number of address records in DNS, until a connection succeeds.
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings.
  *
- * Upon a successful connection, a new #GSocketConnection is constructed
- * and returned.  The caller owns this new object and must drop their
- * reference to it when finished with it.
+ * Returns: (nullable) (transfer full): the user's value, if set
+ * Since: 2.40
+ */
+
+
+/**
+ * g_settings_get_value:
+ * @settings: a #GSettings object
+ * @key: the key to get the value for
  *
- * In the event of any failure (DNS error, service not found, no hosts
- * connectable) %NULL is returned and @error (if non-%NULL) is set
- * accordingly.
+ * Gets the value that is stored in @settings for @key.
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.22
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings.
+ *
+ * Returns: a new #GVariant
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_client_connect_to_host_async:
- * @client: a #GSocketClient
- * @host_and_port: the name and optionally the port of the host to connect to
- * @default_port: the default port to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data for the callback
- *
- * This is the asynchronous version of g_socket_client_connect_to_host().
+ * g_settings_is_writable:
+ * @settings: a #GSettings object
+ * @name: the name of a key
  *
- * When the operation is finished @callback will be
- * called. You can then call g_socket_client_connect_to_host_finish() to get
- * the result of the operation.
+ * Finds out if a key can be written or not
  *
- * Since: 2.22
+ * Returns: %TRUE if the key @name is writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_client_connect_to_host_finish:
- * @client: a #GSocketClient.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_settings_list_children:
+ * @settings: a #GSettings object
  *
- * Finishes an async connect operation. See g_socket_client_connect_to_host_async()
+ * Gets the list of children on @settings.
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.22
+ * The list is exactly the list of strings for which it is not an error
+ * to call g_settings_get_child().
+ *
+ * For GSettings objects that are lists, this value can change at any
+ * time. Note that there is a race condition here: you may
+ * request a child after listing it only for it to have been destroyed
+ * in the meantime.  For this reason, g_settings_get_child() may return
+ * %NULL even for a child that was listed by this function.
+ *
+ * For GSettings objects that are not lists, you should probably not be
+ * calling this function from "normal" code (since you should already
+ * know what children are in your schema).  This function may still be
+ * useful there for introspection reasons, however.
+ *
+ * You should free the return value with g_strfreev() when you are done
+ * with it.
+ *
+ * Returns: (transfer full) (element-type utf8): a list of the children on @settings
  */
 
 
 /**
- * g_socket_client_connect_to_service:
- * @client: a #GSocketConnection
- * @domain: a domain name
- * @service: the name of the service to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a pointer to a #GError, or %NULL
+ * g_settings_list_keys:
+ * @settings: a #GSettings object
  *
- * Attempts to create a TCP connection to a service.
+ * Introspects the list of keys on @settings.
  *
- * This call looks up the SRV record for @service at @domain for the
- * "tcp" protocol.  It then attempts to connect, in turn, to each of
- * the hosts providing the service until either a connection succeeds
- * or there are no hosts remaining.
+ * You should probably not be calling this function from "normal" code
+ * (since you should already know what keys are in your schema).  This
+ * function is intended for introspection reasons.
  *
- * Upon a successful connection, a new #GSocketConnection is constructed
- * and returned.  The caller owns this new object and must drop their
- * reference to it when finished with it.
+ * You should free the return value with g_strfreev() when you are done
+ * with it.
  *
- * In the event of any failure (DNS error, service not found, no hosts
- * connectable) %NULL is returned and @error (if non-%NULL) is set
- * accordingly.
+ * Returns: (transfer full) (element-type utf8): a list of the keys on @settings
+ */
+
+
+/**
+ * g_settings_list_relocatable_schemas:
  *
- * Returns: (transfer full): a #GSocketConnection if successful, or %NULL on error
+ * Deprecated.
+ *
+ * Returns: (element-type utf8) (transfer none): a list of relocatable
+ *   #GSettings schemas that are available.  The list must not be
+ *   modified or freed.
+ * Since: 2.28
+ * Deprecated: 2.40: Use g_settings_schema_source_list_schemas() instead
  */
 
 
 /**
- * g_socket_client_connect_to_service_async:
- * @client: a #GSocketClient
- * @domain: a domain name
- * @service: the name of the service to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data for the callback
+ * g_settings_list_schemas:
  *
- * This is the asynchronous version of
- * g_socket_client_connect_to_service().
+ * Deprecated.
  *
- * Since: 2.22
+ * Returns: (element-type utf8) (transfer none): a list of #GSettings
+ *   schemas that are available.  The list must not be modified or
+ *   freed.
+ * Since: 2.26
+ * Deprecated: 2.40: Use g_settings_schema_source_list_schemas() instead.
+ * If you used g_settings_list_schemas() to check for the presence of
+ * a particular schema, use g_settings_schema_source_lookup() instead
+ * of your whole loop.
  */
 
 
 /**
- * g_socket_client_connect_to_service_finish:
- * @client: a #GSocketClient.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_settings_new:
+ * @schema_id: the id of the schema
  *
- * Finishes an async connect operation. See g_socket_client_connect_to_service_async()
+ * Creates a new #GSettings object with the schema specified by
+ * @schema_id.
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.22
+ * Signals on the newly created #GSettings object will be dispatched
+ * via the thread-default #GMainContext in effect at the time of the
+ * call to g_settings_new().  The new #GSettings will hold a reference
+ * on the context.  See g_main_context_push_thread_default().
+ *
+ * Returns: a new #GSettings object
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_client_connect_to_uri:
- * @client: a #GSocketClient
- * @uri: A network URI
- * @default_port: the default port to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a pointer to a #GError, or %NULL
+ * g_settings_new_full:
+ * @schema: a #GSettingsSchema
+ * @backend: (nullable): a #GSettingsBackend
+ * @path: (nullable): the path to use
  *
- * This is a helper function for g_socket_client_connect().
+ * Creates a new #GSettings object with a given schema, backend and
+ * path.
  *
- * Attempts to create a TCP connection with a network URI.
+ * It should be extremely rare that you ever want to use this function.
+ * It is made available for advanced use-cases (such as plugin systems
+ * that want to provide access to schemas loaded from custom locations,
+ * etc).
  *
- * @uri may be any valid URI containing an "authority" (hostname/port)
- * component. If a port is not specified in the URI, @default_port
- * will be used. TLS will be negotiated if #GSocketClient:tls is %TRUE.
- * (#GSocketClient does not know to automatically assume TLS for
- * certain URI schemes.)
+ * At the most basic level, a #GSettings object is a pure composition of
+ * 4 things: a #GSettingsSchema, a #GSettingsBackend, a path within that
+ * backend, and a #GMainContext to which signals are dispatched.
  *
- * Using this rather than g_socket_client_connect() or
- * g_socket_client_connect_to_host() allows #GSocketClient to
- * determine when to use application-specific proxy protocols.
+ * This constructor therefore gives you full control over constructing
+ * #GSettings instances.  The first 3 parameters are given directly as
+ * @schema, @backend and @path, and the main context is taken from the
+ * thread-default (as per g_settings_new()).
  *
- * Upon a successful connection, a new #GSocketConnection is constructed
- * and returned.  The caller owns this new object and must drop their
- * reference to it when finished with it.
+ * If @backend is %NULL then the default backend is used.
  *
- * In the event of any failure (DNS error, service not found, no hosts
- * connectable) %NULL is returned and @error (if non-%NULL) is set
- * accordingly.
+ * If @path is %NULL then the path from the schema is used.  It is an
+ * error if @path is %NULL and the schema has no path of its own or if
+ * @path is non-%NULL and not equal to the path that the schema does
+ * have.
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.26
+ * Returns: a new #GSettings object
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_client_connect_to_uri_async:
- * @client: a #GSocketClient
- * @uri: a network uri
- * @default_port: the default port to connect to
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data for the callback
+ * g_settings_new_with_backend:
+ * @schema_id: the id of the schema
+ * @backend: the #GSettingsBackend to use
  *
- * This is the asynchronous version of g_socket_client_connect_to_uri().
+ * Creates a new #GSettings object with the schema specified by
+ * @schema_id and a given #GSettingsBackend.
  *
- * When the operation is finished @callback will be
- * called. You can then call g_socket_client_connect_to_uri_finish() to get
- * the result of the operation.
+ * Creating a #GSettings object with a different backend allows accessing
+ * settings from a database other than the usual one. For example, it may make
+ * sense to pass a backend corresponding to the "defaults" settings database on
+ * the system to get a settings object that modifies the system default
+ * settings instead of the settings for this user.
  *
+ * Returns: a new #GSettings object
  * Since: 2.26
  */
 
 
 /**
- * g_socket_client_connect_to_uri_finish:
- * @client: a #GSocketClient.
- * @result: a #GAsyncResult.
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_settings_new_with_backend_and_path:
+ * @schema_id: the id of the schema
+ * @backend: the #GSettingsBackend to use
+ * @path: the path to use
  *
- * Finishes an async connect operation. See g_socket_client_connect_to_uri_async()
+ * Creates a new #GSettings object with the schema specified by
+ * @schema_id and a given #GSettingsBackend and path.
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * This is a mix of g_settings_new_with_backend() and
+ * g_settings_new_with_path().
+ *
+ * Returns: a new #GSettings object
  * Since: 2.26
  */
 
 
 /**
- * g_socket_client_get_enable_proxy:
- * @client: a #GSocketClient.
+ * g_settings_new_with_path:
+ * @schema_id: the id of the schema
+ * @path: the path to use
  *
- * Gets the proxy enable state; see g_socket_client_set_enable_proxy()
+ * Creates a new #GSettings object with the relocatable schema specified
+ * by @schema_id and a given path.
  *
- * Returns: whether proxying is enabled
+ * You only need to do this if you want to directly create a settings
+ * object with a schema that doesn't have a specified path of its own.
+ * That's quite rare.
+ *
+ * It is a programmer error to call this function for a schema that
+ * has an explicitly specified path.
+ *
+ * It is a programmer error if @path is not a valid path.  A valid path
+ * begins and ends with '/' and does not contain two consecutive '/'
+ * characters.
+ *
+ * Returns: a new #GSettings object
  * Since: 2.26
  */
 
 
 /**
- * g_socket_client_get_family:
- * @client: a #GSocketClient.
- *
- * Gets the socket family of the socket client.
+ * g_settings_range_check:
+ * @settings: a #GSettings
+ * @key: the key to check
+ * @value: the value to check
  *
- * See g_socket_client_set_family() for details.
+ * Checks if the given @value is of the correct type and within the
+ * permitted range for @key.
  *
- * Returns: a #GSocketFamily
- * Since: 2.22
+ * Returns: %TRUE if @value is valid for @key
+ * Since: 2.28
+ * Deprecated: 2.40: Use g_settings_schema_key_range_check() instead.
  */
 
 
 /**
- * g_socket_client_get_local_address:
- * @client: a #GSocketClient.
- *
- * Gets the local address of the socket client.
+ * g_settings_reset:
+ * @settings: a #GSettings object
+ * @key: the name of a key
  *
- * See g_socket_client_set_local_address() for details.
+ * Resets @key to its default value.
  *
- * Returns: (transfer none): a #GSocketAddress or %NULL. Do not free.
- * Since: 2.22
+ * This call resets the key, as much as possible, to its default value.
+ * That might the value specified in the schema or the one set by the
+ * administrator.
  */
 
 
 /**
- * g_socket_client_get_protocol:
- * @client: a #GSocketClient
- *
- * Gets the protocol name type of the socket client.
+ * g_settings_revert:
+ * @settings: a #GSettings instance
  *
- * See g_socket_client_set_protocol() for details.
+ * Reverts all non-applied changes to the settings.  This function
+ * does nothing unless @settings is in 'delay-apply' mode; see
+ * g_settings_delay().  In the normal case settings are always applied
+ * immediately.
  *
- * Returns: a #GSocketProtocol
- * Since: 2.22
+ * Change notifications will be emitted for affected keys.
  */
 
 
 /**
- * g_socket_client_get_proxy_resolver:
- * @client: a #GSocketClient.
+ * g_settings_schema_get_id:
+ * @schema: a #GSettingsSchema
  *
- * Gets the #GProxyResolver being used by @client. Normally, this will
- * be the resolver returned by g_proxy_resolver_get_default(), but you
- * can override it with g_socket_client_set_proxy_resolver().
+ * Get the ID of @schema.
  *
- * Returns: (transfer none): The #GProxyResolver being used by
- *   @client.
- * Since: 2.36
+ * Returns: (transfer none): the ID
  */
 
 
 /**
- * g_socket_client_get_socket_type:
- * @client: a #GSocketClient.
+ * g_settings_schema_get_key:
+ * @schema: a #GSettingsSchema
+ * @name: the name of a key
  *
- * Gets the socket type of the socket client.
+ * Gets the key named @name from @schema.
  *
- * See g_socket_client_set_socket_type() for details.
+ * It is a programmer error to request a key that does not exist.  See
+ * g_settings_schema_list_keys().
  *
- * Returns: a #GSocketFamily
- * Since: 2.22
+ * Returns: (transfer full): the #GSettingsSchemaKey for @name
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_get_timeout:
- * @client: a #GSocketClient
+ * g_settings_schema_get_path:
+ * @schema: a #GSettingsSchema
  *
- * Gets the I/O timeout time for sockets created by @client.
+ * Gets the path associated with @schema, or %NULL.
  *
- * See g_socket_client_set_timeout() for details.
+ * Schemas may be single-instance or relocatable.  Single-instance
+ * schemas correspond to exactly one set of keys in the backend
+ * database: those located at the path returned by this function.
  *
- * Returns: the timeout in seconds
- * Since: 2.26
+ * Relocatable schemas can be referenced by other schemas and can
+ * threfore describe multiple sets of keys at different locations.  For
+ * relocatable schemas, this function will return %NULL.
+ *
+ * Returns: (transfer none): the path of the schema, or %NULL
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_client_get_tls:
- * @client: a #GSocketClient.
+ * g_settings_schema_has_key:
+ * @schema: a #GSettingsSchema
+ * @name: the name of a key
  *
- * Gets whether @client creates TLS connections. See
- * g_socket_client_set_tls() for details.
+ * Checks if @schema has a key named @name.
  *
- * Returns: whether @client uses TLS
- * Since: 2.28
+ * Returns: %TRUE if such a key exists
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_get_tls_validation_flags:
- * @client: a #GSocketClient.
+ * g_settings_schema_key_get_default_value:
+ * @key: a #GSettingsSchemaKey
  *
- * Gets the TLS validation flags used creating TLS connections via
- * @client.
+ * Gets the default value for @key.
  *
- * Returns: the TLS validation flags
- * Since: 2.28
+ * Note that this is the default value according to the schema.  System
+ * administrator defaults and lockdown are not visible via this API.
+ *
+ * Returns: (transfer full): the default value for the key
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_new:
+ * g_settings_schema_key_get_description:
+ * @key: a #GSettingsSchemaKey
  *
- * Creates a new #GSocketClient with the default options.
+ * Gets the description for @key.
  *
- * Returns: a #GSocketClient.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * If no description has been provided in the schema for @key, returns
+ * %NULL.
+ *
+ * The description can be one sentence to several paragraphs in length.
+ * Paragraphs are delimited with a double newline.  Descriptions can be
+ * translated and the value returned from this function is is the
+ * current locale.
+ *
+ * This function is slow.  The summary and description information for
+ * the schemas is not stored in the compiled schema database so this
+ * function has to parse all of the source XML files in the schema
+ * directory.
+ *
+ * Returns: the description for @key, or %NULL
+ * Since: 2.34
  */
 
 
 /**
- * g_socket_client_set_enable_proxy:
- * @client: a #GSocketClient.
- * @enable: whether to enable proxies
- *
- * Sets whether or not @client attempts to make connections via a
- * proxy server. When enabled (the default), #GSocketClient will use a
- * #GProxyResolver to determine if a proxy protocol such as SOCKS is
- * needed, and automatically do the necessary proxy negotiation.
+ * g_settings_schema_key_get_name:
+ * @key: a #GSettingsSchemaKey
  *
- * See also g_socket_client_set_proxy_resolver().
+ * Gets the name of @key.
  *
- * Since: 2.26
+ * Returns: the name of @key.
+ * Since: 2.44
  */
 
 
 /**
- * g_socket_client_set_family:
- * @client: a #GSocketClient.
- * @family: a #GSocketFamily
+ * g_settings_schema_key_get_range:
+ * @key: a #GSettingsSchemaKey
  *
- * Sets the socket family of the socket client.
- * If this is set to something other than %G_SOCKET_FAMILY_INVALID
- * then the sockets created by this object will be of the specified
- * family.
+ * Queries the range of a key.
  *
- * This might be useful for instance if you want to force the local
- * connection to be an ipv4 socket, even though the address might
- * be an ipv6 mapped to ipv4 address.
+ * This function will return a #GVariant that fully describes the range
+ * of values that are valid for @key.
  *
- * Since: 2.22
+ * The type of #GVariant returned is `(sv)`. The string describes
+ * the type of range restriction in effect. The type and meaning of
+ * the value contained in the variant depends on the string.
+ *
+ * If the string is `'type'` then the variant contains an empty array.
+ * The element type of that empty array is the expected type of value
+ * and all values of that type are valid.
+ *
+ * If the string is `'enum'` then the variant contains an array
+ * enumerating the possible values. Each item in the array is
+ * a possible valid value and no other values are valid.
+ *
+ * If the string is `'flags'` then the variant contains an array. Each
+ * item in the array is a value that may appear zero or one times in an
+ * array to be used as the value for this key. For example, if the
+ * variant contained the array `['x', 'y']` then the valid values for
+ * the key would be `[]`, `['x']`, `['y']`, `['x', 'y']` and
+ * `['y', 'x']`.
+ *
+ * Finally, if the string is `'range'` then the variant contains a pair
+ * of like-typed values -- the minimum and maximum permissible values
+ * for this key.
+ *
+ * This information should not be used by normal programs.  It is
+ * considered to be a hint for introspection purposes.  Normal programs
+ * should already know what is permitted by their own schema.  The
+ * format may change in any way in the future -- but particularly, new
+ * forms may be added to the possibilities described above.
+ *
+ * You should free the returned value with g_variant_unref() when it is
+ * no longer needed.
+ *
+ * Returns: (transfer full): a #GVariant describing the range
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_set_local_address:
- * @client: a #GSocketClient.
- * @address: (nullable): a #GSocketAddress, or %NULL
+ * g_settings_schema_key_get_summary:
+ * @key: a #GSettingsSchemaKey
  *
- * Sets the local address of the socket client.
- * The sockets created by this object will bound to the
- * specified address (if not %NULL) before connecting.
+ * Gets the summary for @key.
  *
- * This is useful if you want to ensure that the local
- * side of the connection is on a specific port, or on
- * a specific interface.
+ * If no summary has been provided in the schema for @key, returns
+ * %NULL.
  *
- * Since: 2.22
+ * The summary is a short description of the purpose of the key; usually
+ * one short sentence.  Summaries can be translated and the value
+ * returned from this function is is the current locale.
+ *
+ * This function is slow.  The summary and description information for
+ * the schemas is not stored in the compiled schema database so this
+ * function has to parse all of the source XML files in the schema
+ * directory.
+ *
+ * Returns: the summary for @key, or %NULL
+ * Since: 2.34
  */
 
 
 /**
- * g_socket_client_set_protocol:
- * @client: a #GSocketClient.
- * @protocol: a #GSocketProtocol
- *
- * Sets the protocol of the socket client.
- * The sockets created by this object will use of the specified
- * protocol.
+ * g_settings_schema_key_get_value_type:
+ * @key: a #GSettingsSchemaKey
  *
- * If @protocol is %0 that means to use the default
- * protocol for the socket family and type.
+ * Gets the #GVariantType of @key.
  *
- * Since: 2.22
+ * Returns: (transfer none): the type of @key
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_set_proxy_resolver:
- * @client: a #GSocketClient.
- * @proxy_resolver: (nullable): a #GProxyResolver, or %NULL for the
- *   default.
+ * g_settings_schema_key_range_check:
+ * @key: a #GSettingsSchemaKey
+ * @value: the value to check
  *
- * Overrides the #GProxyResolver used by @client. You can call this if
- * you want to use specific proxies, rather than using the system
- * default proxy settings.
+ * Checks if the given @value is of the correct type and within the
+ * permitted range for @key.
  *
- * Note that whether or not the proxy resolver is actually used
- * depends on the setting of #GSocketClient:enable-proxy, which is not
- * changed by this function (but which is %TRUE by default)
+ * It is a programmer error if @value is not of the correct type -- you
+ * must check for this first.
  *
- * Since: 2.36
+ * Returns: %TRUE if @value is valid for @key
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_set_socket_type:
- * @client: a #GSocketClient.
- * @type: a #GSocketType
- *
- * Sets the socket type of the socket client.
- * The sockets created by this object will be of the specified
- * type.
+ * g_settings_schema_key_ref:
+ * @key: a #GSettingsSchemaKey
  *
- * It doesn't make sense to specify a type of %G_SOCKET_TYPE_DATAGRAM,
- * as GSocketClient is used for connection oriented services.
+ * Increase the reference count of @key, returning a new reference.
  *
- * Since: 2.22
+ * Returns: a new reference to @key
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_set_timeout:
- * @client: a #GSocketClient.
- * @timeout: the timeout
- *
- * Sets the I/O timeout for sockets created by @client. @timeout is a
- * time in seconds, or 0 for no timeout (the default).
+ * g_settings_schema_key_unref:
+ * @key: a #GSettingsSchemaKey
  *
- * The timeout value affects the initial connection attempt as well,
- * so setting this may cause calls to g_socket_client_connect(), etc,
- * to fail with %G_IO_ERROR_TIMED_OUT.
+ * Decrease the reference count of @key, possibly freeing it.
  *
- * Since: 2.26
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_client_set_tls:
- * @client: a #GSocketClient.
- * @tls: whether to use TLS
- *
- * Sets whether @client creates TLS (aka SSL) connections. If @tls is
- * %TRUE, @client will wrap its connections in a #GTlsClientConnection
- * and perform a TLS handshake when connecting.
+ * g_settings_schema_list_children:
+ * @schema: a #GSettingsSchema
  *
- * Note that since #GSocketClient must return a #GSocketConnection,
- * but #GTlsClientConnection is not a #GSocketConnection, this
- * actually wraps the resulting #GTlsClientConnection in a
- * #GTcpWrapperConnection when returning it. You can use
- * g_tcp_wrapper_connection_get_base_io_stream() on the return value
- * to extract the #GTlsClientConnection.
+ * Gets the list of children in @schema.
  *
- * If you need to modify the behavior of the TLS handshake (eg, by
- * setting a client-side certificate to use, or connecting to the
- * #GTlsConnection::accept-certificate signal), you can connect to
- * @client's #GSocketClient::event signal and wait for it to be
- * emitted with %G_SOCKET_CLIENT_TLS_HANDSHAKING, which will give you
- * a chance to see the #GTlsClientConnection before the handshake
- * starts.
+ * You should free the return value with g_strfreev() when you are done
+ * with it.
  *
- * Since: 2.28
+ * Returns: (transfer full) (element-type utf8): a list of the children on @settings
+ * Since: 2.44
  */
 
 
 /**
- * g_socket_client_set_tls_validation_flags:
- * @client: a #GSocketClient.
- * @flags: the validation flags
+ * g_settings_schema_list_keys:
+ * @schema: a #GSettingsSchema
  *
- * Sets the TLS validation flags used when creating TLS connections
- * via @client. The default value is %G_TLS_CERTIFICATE_VALIDATE_ALL.
+ * Introspects the list of keys on @schema.
  *
- * Since: 2.28
+ * You should probably not be calling this function from "normal" code
+ * (since you should already know what keys are in your schema).  This
+ * function is intended for introspection reasons.
+ *
+ * Returns: (transfer full) (element-type utf8): a list of the keys on
+ *   @schema
+ * Since: 2.46
  */
 
 
 /**
- * g_socket_close:
- * @socket: a #GSocket
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Closes the socket, shutting down any active connection.
- *
- * Closing a socket does not wait for all outstanding I/O operations
- * to finish, so the caller should not rely on them to be guaranteed
- * to complete even if the close returns with no error.
- *
- * Once the socket is closed, all other operations will return
- * %G_IO_ERROR_CLOSED. Closing a socket multiple times will not
- * return an error.
- *
- * Sockets will be automatically closed when the last reference
- * is dropped, but you might want to call this function to make sure
- * resources are released as early as possible.
+ * g_settings_schema_ref:
+ * @schema: a #GSettingsSchema
  *
- * Beware that due to the way that TCP works, it is possible for
- * recently-sent data to be lost if either you close a socket while the
- * %G_IO_IN condition is set, or else if the remote connection tries to
- * send something to you after you close the socket but before it has
- * finished reading all of the data you sent. There is no easy generic
- * way to avoid this problem; the easiest fix is to design the network
- * protocol such that the client will never send data "out of turn".
- * Another solution is for the server to half-close the connection by
- * calling g_socket_shutdown() with only the @shutdown_write flag set,
- * and then wait for the client to notice this and close its side of the
- * connection, after which the server can safely call g_socket_close().
- * (This is what #GTcpConnection does if you call
- * g_tcp_connection_set_graceful_disconnect(). But of course, this
- * only works if the client will close its connection after the server
- * does.)
+ * Increase the reference count of @schema, returning a new reference.
  *
- * Returns: %TRUE on success, %FALSE on error
- * Since: 2.22
+ * Returns: a new reference to @schema
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_condition_check:
- * @socket: a #GSocket
- * @condition: a #GIOCondition mask to check
+ * g_settings_schema_source_get_default:
  *
- * Checks on the readiness of @socket to perform operations.
- * The operations specified in @condition are checked for and masked
- * against the currently-satisfied conditions on @socket. The result
- * is returned.
+ * Gets the default system schema source.
  *
- * Note that on Windows, it is possible for an operation to return
- * %G_IO_ERROR_WOULD_BLOCK even immediately after
- * g_socket_condition_check() has claimed that the socket is ready for
- * writing. Rather than calling g_socket_condition_check() and then
- * writing to the socket if it succeeds, it is generally better to
- * simply try writing to the socket right away, and try again later if
- * the initial attempt returns %G_IO_ERROR_WOULD_BLOCK.
+ * This function is not required for normal uses of #GSettings but it
+ * may be useful to authors of plugin management systems or to those who
+ * want to introspect the content of schemas.
  *
- * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in condition;
- * these conditions will always be set in the output if they are true.
+ * If no schemas are installed, %NULL will be returned.
  *
- * This call never blocks.
+ * The returned source may actually consist of multiple schema sources
+ * from different directories, depending on which directories were given
+ * in `XDG_DATA_DIRS` and `GSETTINGS_SCHEMA_DIR`. For this reason, all
+ * lookups performed against the default source should probably be done
+ * recursively.
  *
- * Returns: the @GIOCondition mask of the current state
- * Since: 2.22
+ * Returns: (transfer none) (nullable): the default schema source
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_condition_timed_wait:
- * @socket: a #GSocket
- * @condition: a #GIOCondition mask to wait for
- * @timeout: the maximum time (in microseconds) to wait, or -1
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a #GError pointer, or %NULL
+ * g_settings_schema_source_list_schemas:
+ * @source: a #GSettingsSchemaSource
+ * @recursive: if we should recurse
+ * @non_relocatable: (out) (transfer full) (array zero-terminated=1): the
+ *   list of non-relocatable schemas
+ * @relocatable: (out) (transfer full) (array zero-terminated=1): the list
+ *   of relocatable schemas
  *
- * Waits for up to @timeout microseconds for @condition to become true
- * on @socket. If the condition is met, %TRUE is returned.
+ * Lists the schemas in a given source.
  *
- * If @cancellable is cancelled before the condition is met, or if
- * @timeout (or the socket's #GSocket:timeout) is reached before the
- * condition is met, then %FALSE is returned and @error, if non-%NULL,
- * is set to the appropriate value (%G_IO_ERROR_CANCELLED or
- * %G_IO_ERROR_TIMED_OUT).
+ * If @recursive is %TRUE then include parent sources.  If %FALSE then
+ * only include the schemas from one source (ie: one directory).  You
+ * probably want %TRUE.
  *
- * If you don't want a timeout, use g_socket_condition_wait().
- * (Alternatively, you can pass -1 for @timeout.)
+ * Non-relocatable schemas are those for which you can call
+ * g_settings_new().  Relocatable schemas are those for which you must
+ * use g_settings_new_with_path().
  *
- * Note that although @timeout is in microseconds for consistency with
- * other GLib APIs, this function actually only has millisecond
- * resolution, and the behavior is undefined if @timeout is not an
- * exact number of milliseconds.
+ * Do not call this function from normal programs.  This is designed for
+ * use by database editors, commandline tools, etc.
  *
- * Returns: %TRUE if the condition was met, %FALSE otherwise
- * Since: 2.32
+ * Since: 2.40
  */
 
 
 /**
- * g_socket_condition_wait:
- * @socket: a #GSocket
- * @condition: a #GIOCondition mask to wait for
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a #GError pointer, or %NULL
+ * g_settings_schema_source_lookup:
+ * @source: a #GSettingsSchemaSource
+ * @schema_id: a schema ID
+ * @recursive: %TRUE if the lookup should be recursive
  *
- * Waits for @condition to become true on @socket. When the condition
- * is met, %TRUE is returned.
+ * Looks up a schema with the identifier @schema_id in @source.
  *
- * If @cancellable is cancelled before the condition is met, or if the
- * socket has a timeout set and it is reached before the condition is
- * met, then %FALSE is returned and @error, if non-%NULL, is set to
- * the appropriate value (%G_IO_ERROR_CANCELLED or
- * %G_IO_ERROR_TIMED_OUT).
+ * This function is not required for normal uses of #GSettings but it
+ * may be useful to authors of plugin management systems or to those who
+ * want to introspect the content of schemas.
  *
- * See also g_socket_condition_timed_wait().
+ * If the schema isn't found directly in @source and @recursive is %TRUE
+ * then the parent sources will also be checked.
  *
- * Returns: %TRUE if the condition was met, %FALSE otherwise
- * Since: 2.22
+ * If the schema isn't found, %NULL is returned.
+ *
+ * Returns: (nullable) (transfer full): a new #GSettingsSchema
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_connect:
- * @socket: a #GSocket.
- * @address: a #GSocketAddress specifying the remote address.
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_settings_schema_source_new_from_directory:
+ * @directory: (type filename): the filename of a directory
+ * @parent: (nullable): a #GSettingsSchemaSource, or %NULL
+ * @trusted: %TRUE, if the directory is trusted
+ * @error: a pointer to a #GError pointer set to %NULL, or %NULL
  *
- * Connect the socket to the specified remote address.
+ * Attempts to create a new schema source corresponding to the contents
+ * of the given directory.
  *
- * For connection oriented socket this generally means we attempt to make
- * a connection to the @address. For a connection-less socket it sets
- * the default address for g_socket_send() and discards all incoming datagrams
- * from other sources.
+ * This function is not required for normal uses of #GSettings but it
+ * may be useful to authors of plugin management systems.
  *
- * Generally connection oriented sockets can only connect once, but
- * connection-less sockets can connect multiple times to change the
- * default address.
+ * The directory should contain a file called `gschemas.compiled` as
+ * produced by the [glib-compile-schemas][glib-compile-schemas] tool.
  *
- * If the connect call needs to do network I/O it will block, unless
- * non-blocking I/O is enabled. Then %G_IO_ERROR_PENDING is returned
- * and the user can be notified of the connection finishing by waiting
- * for the G_IO_OUT condition. The result of the connection must then be
- * checked with g_socket_check_connect_result().
+ * If @trusted is %TRUE then `gschemas.compiled` is trusted not to be
+ * corrupted. This assumption has a performance advantage, but can result
+ * in crashes or inconsistent behaviour in the case of a corrupted file.
+ * Generally, you should set @trusted to %TRUE for files installed by the
+ * system and to %FALSE for files in the home directory.
  *
- * Returns: %TRUE if connected, %FALSE on error.
- * Since: 2.22
- */
-
-
-/**
- * g_socket_connectable_enumerate:
- * @connectable: a #GSocketConnectable
+ * In either case, an empty file or some types of corruption in the file will
+ * result in %G_FILE_ERROR_INVAL being returned.
  *
- * Creates a #GSocketAddressEnumerator for @connectable.
+ * If @parent is non-%NULL then there are two effects.
  *
- * Returns: (transfer full): a new #GSocketAddressEnumerator.
- * Since: 2.22
+ * First, if g_settings_schema_source_lookup() is called with the
+ * @recursive flag set to %TRUE and the schema can not be found in the
+ * source, the lookup will recurse to the parent.
+ *
+ * Second, any references to other schemas specified within this
+ * source (ie: `child` or `extends`) references may be resolved
+ * from the @parent.
+ *
+ * For this second reason, except in very unusual situations, the
+ * @parent should probably be given as the default schema source, as
+ * returned by g_settings_schema_source_get_default().
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_connectable_proxy_enumerate:
- * @connectable: a #GSocketConnectable
- *
- * Creates a #GSocketAddressEnumerator for @connectable that will
- * return #GProxyAddresses for addresses that you must connect
- * to via a proxy.
+ * g_settings_schema_source_ref:
+ * @source: a #GSettingsSchemaSource
  *
- * If @connectable does not implement
- * g_socket_connectable_proxy_enumerate(), this will fall back to
- * calling g_socket_connectable_enumerate().
+ * Increase the reference count of @source, returning a new reference.
  *
- * Returns: (transfer full): a new #GSocketAddressEnumerator.
- * Since: 2.26
+ * Returns: a new reference to @source
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_connectable_to_string:
- * @connectable: a #GSocketConnectable
- *
- * Format a #GSocketConnectable as a string. This is a human-readable format for
- * use in debugging output, and is not a stable serialization format. It is not
- * suitable for use in user interfaces as it exposes too much information for a
- * user.
+ * g_settings_schema_source_unref:
+ * @source: a #GSettingsSchemaSource
  *
- * If the #GSocketConnectable implementation does not support string formatting,
- * the implementation’s type name will be returned as a fallback.
+ * Decrease the reference count of @source, possibly freeing it.
  *
- * Returns: (transfer full): the formatted string
- * Since: 2.48
+ * Since: 2.32
  */
 
 
 /**
- * g_socket_connection_connect:
- * @connection: a #GSocketConnection
- * @address: a #GSocketAddress specifying the remote address.
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_settings_schema_unref:
+ * @schema: a #GSettingsSchema
  *
- * Connect @connection to the specified remote address.
+ * Decrease the reference count of @schema, possibly freeing it.
  *
- * Returns: %TRUE if the connection succeeded, %FALSE on error
  * Since: 2.32
  */
 
 
 /**
- * g_socket_connection_connect_async:
- * @connection: a #GSocketConnection
- * @address: a #GSocketAddress specifying the remote address.
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data for the callback
+ * g_settings_set:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @format: a #GVariant format string
+ * @...: arguments as per @format
  *
- * Asynchronously connect @connection to the specified remote address.
+ * Sets @key in @settings to @value.
  *
- * This clears the #GSocket:blocking flag on @connection's underlying
- * socket if it is currently set.
+ * A convenience function that combines g_settings_set_value() with
+ * g_variant_new().
  *
- * Use g_socket_connection_connect_finish() to retrieve the result.
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings or for the #GVariantType of @format to mismatch
+ * the type given in the schema.
  *
- * Since: 2.32
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_connection_connect_finish:
- * @connection: a #GSocketConnection
- * @result: the #GAsyncResult
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_settings_set_boolean:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: the value to set it to
  *
- * Gets the result of a g_socket_connection_connect_async() call.
+ * Sets @key in @settings to @value.
  *
- * Returns: %TRUE if the connection succeeded, %FALSE on error
- * Since: 2.32
+ * A convenience variant of g_settings_set() for booleans.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having a boolean type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_connection_factory_create_connection:
- * @socket: a #GSocket
+ * g_settings_set_double:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: the value to set it to
  *
- * Creates a #GSocketConnection subclass of the right type for
- * @socket.
+ * Sets @key in @settings to @value.
  *
- * Returns: (transfer full): a #GSocketConnection
- * Since: 2.22
+ * A convenience variant of g_settings_set() for doubles.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having a 'double' type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_connection_factory_lookup_type:
- * @family: a #GSocketFamily
- * @type: a #GSocketType
- * @protocol_id: a protocol id
+ * g_settings_set_enum:
+ * @settings: a #GSettings object
+ * @key: a key, within @settings
+ * @value: an enumerated value
  *
- * Looks up the #GType to be used when creating socket connections on
- * sockets with the specified @family, @type and @protocol_id.
+ * Looks up the enumerated type nick for @value and writes it to @key,
+ * within @settings.
  *
- * If no type is registered, the #GSocketConnection base type is returned.
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings or is not marked as an enumerated type, or for
+ * @value not to be a valid value for the named type.
  *
- * Returns: a #GType
- * Since: 2.22
+ * After performing the write, accessing @key directly with
+ * g_settings_get_string() will return the 'nick' associated with
+ * @value.
+ *
+ * Returns: %TRUE, if the set succeeds
  */
 
 
 /**
- * g_socket_connection_factory_register_type:
- * @g_type: a #GType, inheriting from %G_TYPE_SOCKET_CONNECTION
- * @family: a #GSocketFamily
- * @type: a #GSocketType
- * @protocol: a protocol id
+ * g_settings_set_flags:
+ * @settings: a #GSettings object
+ * @key: a key, within @settings
+ * @value: a flags value
  *
- * Looks up the #GType to be used when creating socket connections on
- * sockets with the specified @family, @type and @protocol.
+ * Looks up the flags type nicks for the bits specified by @value, puts
+ * them in an array of strings and writes the array to @key, within
+ * @settings.
  *
- * If no type is registered, the #GSocketConnection base type is returned.
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings or is not marked as a flags type, or for @value
+ * to contain any bits that are not value for the named type.
  *
- * Since: 2.22
+ * After performing the write, accessing @key directly with
+ * g_settings_get_strv() will return an array of 'nicks'; one for each
+ * bit in @value.
+ *
+ * Returns: %TRUE, if the set succeeds
  */
 
 
 /**
- * g_socket_connection_get_local_address:
- * @connection: a #GSocketConnection
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_settings_set_int:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: the value to set it to
  *
- * Try to get the local address of a socket connection.
+ * Sets @key in @settings to @value.
  *
- * Returns: (transfer full): a #GSocketAddress or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * A convenience variant of g_settings_set() for 32-bit integers.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having a int32 type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_connection_get_remote_address:
- * @connection: a #GSocketConnection
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_settings_set_int64:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: the value to set it to
  *
- * Try to get the remote address of a socket connection.
+ * Sets @key in @settings to @value.
  *
- * Since GLib 2.40, when used with g_socket_client_connect() or
- * g_socket_client_connect_async(), during emission of
- * %G_SOCKET_CLIENT_CONNECTING, this function will return the remote
- * address that will be used for the connection.  This allows
- * applications to print e.g. "Connecting to example.com
- * (10.42.77.3)...".
+ * A convenience variant of g_settings_set() for 64-bit integers.
  *
- * Returns: (transfer full): a #GSocketAddress or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * It is a programmer error to give a @key that isn't specified as
+ * having a int64 type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.50
  */
 
 
 /**
- * g_socket_connection_get_socket:
- * @connection: a #GSocketConnection
+ * g_settings_set_string:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: the value to set it to
  *
- * Gets the underlying #GSocket object of the connection.
- * This can be useful if you want to do something unusual on it
- * not supported by the #GSocketConnection APIs.
+ * Sets @key in @settings to @value.
  *
- * Returns: (transfer none): a #GSocket or %NULL on error.
- * Since: 2.22
+ * A convenience variant of g_settings_set() for strings.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having a string type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_connection_is_connected:
- * @connection: a #GSocketConnection
+ * g_settings_set_strv:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: (nullable) (array zero-terminated=1): the value to set it to, or %NULL
  *
- * Checks if @connection is connected. This is equivalent to calling
- * g_socket_is_connected() on @connection's underlying #GSocket.
+ * Sets @key in @settings to @value.
  *
- * Returns: whether @connection is connected
- * Since: 2.32
+ * A convenience variant of g_settings_set() for string arrays.  If
+ * @value is %NULL, then @key is set to be the empty array.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having an array of strings type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_control_message_deserialize:
- * @level: a socket level
- * @type: a socket control message type for the given @level
- * @size: the size of the data in bytes
- * @data: (array length=size) (element-type guint8): pointer to the message data
+ * g_settings_set_uint:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: the value to set it to
  *
- * Tries to deserialize a socket control message of a given
- * @level and @type. This will ask all known (to GType) subclasses
- * of #GSocketControlMessage if they can understand this kind
- * of message and if so deserialize it into a #GSocketControlMessage.
+ * Sets @key in @settings to @value.
  *
- * If there is no implementation for this kind of control message, %NULL
- * will be returned.
+ * A convenience variant of g_settings_set() for 32-bit unsigned
+ * integers.
  *
- * Returns: (transfer full): the deserialized message or %NULL
- * Since: 2.22
+ * It is a programmer error to give a @key that isn't specified as
+ * having a uint32 type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.30
  */
 
 
 /**
- * g_socket_control_message_get_level:
- * @message: a #GSocketControlMessage
+ * g_settings_set_uint64:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: the value to set it to
  *
- * Returns the "level" (i.e. the originating protocol) of the control message.
- * This is often SOL_SOCKET.
+ * Sets @key in @settings to @value.
  *
- * Returns: an integer describing the level
- * Since: 2.22
+ * A convenience variant of g_settings_set() for 64-bit unsigned
+ * integers.
+ *
+ * It is a programmer error to give a @key that isn't specified as
+ * having a uint64 type in the schema for @settings.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.50
  */
 
 
 /**
- * g_socket_control_message_get_msg_type:
- * @message: a #GSocketControlMessage
+ * g_settings_set_value:
+ * @settings: a #GSettings object
+ * @key: the name of the key to set
+ * @value: a #GVariant of the correct type
  *
- * Returns the protocol specific type of the control message.
- * For instance, for UNIX fd passing this would be SCM_RIGHTS.
+ * Sets @key in @settings to @value.
  *
- * Returns: an integer describing the type of control message
- * Since: 2.22
+ * It is a programmer error to give a @key that isn't contained in the
+ * schema for @settings or for @value to have the incorrect type, per
+ * the schema.
+ *
+ * If @value is floating then this function consumes the reference.
+ *
+ * Returns: %TRUE if setting the key succeeded,
+ *     %FALSE if the key was not writable
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_control_message_get_size:
- * @message: a #GSocketControlMessage
+ * g_settings_sync:
  *
- * Returns the space required for the control message, not including
- * headers or alignment.
+ * Ensures that all pending operations are complete for the default backend.
  *
- * Returns: The number of bytes required.
- * Since: 2.22
+ * Writes made to a #GSettings are handled asynchronously.  For this
+ * reason, it is very unlikely that the changes have it to disk by the
+ * time g_settings_set() returns.
+ *
+ * This call will block until all of the writes have made it to the
+ * backend.  Since the mainloop is not running, no change notifications
+ * will be dispatched during this call (but some may be queued by the
+ * time the call is done).
  */
 
 
 /**
- * g_socket_control_message_serialize:
- * @message: a #GSocketControlMessage
- * @data: (not nullable): A buffer to write data to
+ * g_settings_unbind:
+ * @object: (type GObject.Object): the object
+ * @property: the property whose binding is removed
  *
- * Converts the data in the message to bytes placed in the
- * message.
+ * Removes an existing binding for @property on @object.
  *
- * @data is guaranteed to have enough space to fit the size
- * returned by g_socket_control_message_get_size() on this
- * object.
+ * Note that bindings are automatically removed when the
+ * object is finalized, so it is rarely necessary to call this
+ * function.
  *
- * Since: 2.22
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_create_source: (skip)
- * @socket: a #GSocket
- * @condition: a #GIOCondition mask to monitor
- * @cancellable: (nullable): a %GCancellable or %NULL
+ * g_simple_action_group_add_entries:
+ * @simple: a #GSimpleActionGroup
+ * @entries: (array length=n_entries): a pointer to the first item in
+ *           an array of #GActionEntry structs
+ * @n_entries: the length of @entries, or -1
+ * @user_data: the user data for signal connections
  *
- * Creates a #GSource that can be attached to a %GMainContext to monitor
- * for the availability of the specified @condition on the socket. The #GSource
- * keeps a reference to the @socket.
+ * A convenience function for creating multiple #GSimpleAction instances
+ * and adding them to the action group.
  *
- * The callback on the source is of the #GSocketSourceFunc type.
+ * Since: 2.30
+ * Deprecated: 2.38: Use g_action_map_add_action_entries()
+ */
+
+
+/**
+ * g_simple_action_group_insert:
+ * @simple: a #GSimpleActionGroup
+ * @action: a #GAction
  *
- * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition;
- * these conditions will always be reported output if they are true.
+ * Adds an action to the action group.
  *
- * @cancellable if not %NULL can be used to cancel the source, which will
- * cause the source to trigger, reporting the current condition (which
- * is likely 0 unless cancellation happened at the same time as a
- * condition change). You can check for this in the callback using
- * g_cancellable_is_cancelled().
+ * If the action group already contains an action with the same name as
+ * @action then the old action is dropped from the group.
  *
- * If @socket has a timeout set, and it is reached before @condition
- * occurs, the source will then trigger anyway, reporting %G_IO_IN or
- * %G_IO_OUT depending on @condition. However, @socket will have been
- * marked as having had a timeout, and so the next #GSocket I/O method
- * you call will then fail with a %G_IO_ERROR_TIMED_OUT.
+ * The action group takes its own reference on @action.
  *
- * Returns: (transfer full): a newly allocated %GSource, free with g_source_unref().
- * Since: 2.22
+ * Since: 2.28
+ * Deprecated: 2.38: Use g_action_map_add_action()
  */
 
 
 /**
- * g_socket_get_available_bytes:
- * @socket: a #GSocket
- *
- * Get the amount of data pending in the OS input buffer, without blocking.
+ * g_simple_action_group_lookup:
+ * @simple: a #GSimpleActionGroup
+ * @action_name: the name of an action
  *
- * If @socket is a UDP or SCTP socket, this will return the size of
- * just the next packet, even if additional packets are buffered after
- * that one.
+ * Looks up the action with the name @action_name in the group.
  *
- * Note that on Windows, this function is rather inefficient in the
- * UDP case, and so if you know any plausible upper bound on the size
- * of the incoming packet, it is better to just do a
- * g_socket_receive() with a buffer of that size, rather than calling
- * g_socket_get_available_bytes() first and then doing a receive of
- * exactly the right size.
+ * If no such action exists, returns %NULL.
  *
- * Returns: the number of bytes that can be read from the socket
- * without blocking or truncating, or -1 on error.
- * Since: 2.32
+ * Returns: (transfer none): a #GAction, or %NULL
+ * Since: 2.28
+ * Deprecated: 2.38: Use g_action_map_lookup_action()
  */
 
 
 /**
- * g_socket_get_blocking:
- * @socket: a #GSocket.
+ * g_simple_action_group_new:
  *
- * Gets the blocking mode of the socket. For details on blocking I/O,
- * see g_socket_set_blocking().
+ * Creates a new, empty, #GSimpleActionGroup.
  *
- * Returns: %TRUE if blocking I/O is used, %FALSE otherwise.
- * Since: 2.22
+ * Returns: a new #GSimpleActionGroup
+ * Since: 2.28
  */
 
 
 /**
- * g_socket_get_broadcast:
- * @socket: a #GSocket.
+ * g_simple_action_group_remove:
+ * @simple: a #GSimpleActionGroup
+ * @action_name: the name of the action
  *
- * Gets the broadcast setting on @socket; if %TRUE,
- * it is possible to send packets to broadcast
- * addresses.
+ * Removes the named action from the action group.
  *
- * Returns: the broadcast setting on @socket
- * Since: 2.32
+ * If no action of this name is in the group then nothing happens.
+ *
+ * Since: 2.28
+ * Deprecated: 2.38: Use g_action_map_remove_action()
  */
 
 
 /**
- * g_socket_get_credentials:
- * @socket: a #GSocket.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Returns the credentials of the foreign process connected to this
- * socket, if any (e.g. it is only supported for %G_SOCKET_FAMILY_UNIX
- * sockets).
+ * g_simple_action_new:
+ * @name: the name of the action
+ * @parameter_type: (nullable): the type of parameter that will be passed to
+ *   handlers for the #GSimpleAction::activate signal, or %NULL for no parameter
  *
- * If this operation isn't supported on the OS, the method fails with
- * the %G_IO_ERROR_NOT_SUPPORTED error. On Linux this is implemented
- * by reading the %SO_PEERCRED option on the underlying socket.
+ * Creates a new action.
  *
- * Other ways to obtain credentials from a foreign peer includes the
- * #GUnixCredentialsMessage type and
- * g_unix_connection_send_credentials() /
- * g_unix_connection_receive_credentials() functions.
+ * The created action is stateless. See g_simple_action_new_stateful() to create
+ * an action that has state.
  *
- * Returns: (transfer full): %NULL if @error is set, otherwise a #GCredentials object
- * that must be freed with g_object_unref().
- * Since: 2.26
+ * Returns: a new #GSimpleAction
+ * Since: 2.28
  */
 
 
 /**
- * g_socket_get_family:
- * @socket: a #GSocket.
+ * g_simple_action_new_stateful:
+ * @name: the name of the action
+ * @parameter_type: (nullable): the type of the parameter that will be passed to
+ *   handlers for the #GSimpleAction::activate signal, or %NULL for no parameter
+ * @state: the initial state of the action
  *
- * Gets the socket family of the socket.
+ * Creates a new stateful action.
  *
- * Returns: a #GSocketFamily
- * Since: 2.22
+ * All future state values must have the same #GVariantType as the initial
+ * @state.
+ *
+ * If the @state #GVariant is floating, it is consumed.
+ *
+ * Returns: a new #GSimpleAction
+ * Since: 2.28
  */
 
 
 /**
- * g_socket_get_fd:
- * @socket: a #GSocket.
+ * g_simple_action_set_enabled:
+ * @simple: a #GSimpleAction
+ * @enabled: whether the action is enabled
  *
- * Returns the underlying OS socket object. On unix this
- * is a socket file descriptor, and on Windows this is
- * a Winsock2 SOCKET handle. This may be useful for
- * doing platform specific or otherwise unusual operations
- * on the socket.
+ * Sets the action as enabled or not.
  *
- * Returns: the file descriptor of the socket.
- * Since: 2.22
+ * An action must be enabled in order to be activated or in order to
+ * have its state changed from outside callers.
+ *
+ * This should only be called by the implementor of the action.  Users
+ * of the action should not attempt to modify its enabled flag.
+ *
+ * Since: 2.28
  */
 
 
 /**
- * g_socket_get_keepalive:
- * @socket: a #GSocket.
+ * g_simple_action_set_state:
+ * @simple: a #GSimpleAction
+ * @value: the new #GVariant for the state
  *
- * Gets the keepalive mode of the socket. For details on this,
- * see g_socket_set_keepalive().
+ * Sets the state of the action.
  *
- * Returns: %TRUE if keepalive is active, %FALSE otherwise.
- * Since: 2.22
+ * This directly updates the 'state' property to the given value.
+ *
+ * This should only be called by the implementor of the action.  Users
+ * of the action should not attempt to directly modify the 'state'
+ * property.  Instead, they should call g_action_change_state() to
+ * request the change.
+ *
+ * If the @value GVariant is floating, it is consumed.
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_socket_get_listen_backlog:
- * @socket: a #GSocket.
+ * g_simple_action_set_state_hint:
+ * @simple: a #GSimpleAction
+ * @state_hint: (nullable): a #GVariant representing the state hint
  *
- * Gets the listen backlog setting of the socket. For details on this,
- * see g_socket_set_listen_backlog().
+ * Sets the state hint for the action.
  *
- * Returns: the maximum number of pending connections.
- * Since: 2.22
+ * See g_action_get_state_hint() for more information about
+ * action state hints.
+ *
+ * Since: 2.44
  */
 
 
 /**
- * g_socket_get_local_address:
- * @socket: a #GSocket.
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_simple_async_report_error_in_idle: (skip)
+ * @object: (nullable): a #GObject, or %NULL.
+ * @callback: a #GAsyncReadyCallback.
+ * @user_data: user data passed to @callback.
+ * @domain: a #GQuark containing the error domain (usually #G_IO_ERROR).
+ * @code: a specific error code.
+ * @format: a formatted error reporting string.
+ * @...: a list of variables to fill in @format.
  *
- * Try to get the local address of a bound socket. This is only
- * useful if the socket has been bound to a local address,
- * either explicitly or implicitly when connecting.
+ * Reports an error in an asynchronous function in an idle function by
+ * directly setting the contents of the #GAsyncResult with the given error
+ * information.
  *
- * Returns: (transfer full): a #GSocketAddress or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Deprecated: 2.46: Use g_task_report_error().
  */
 
 
 /**
- * g_socket_get_multicast_loopback:
- * @socket: a #GSocket.
+ * g_simple_async_report_gerror_in_idle:
+ * @object: (nullable): a #GObject, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
+ * @error: the #GError to report
  *
- * Gets the multicast loopback setting on @socket; if %TRUE (the
- * default), outgoing multicast packets will be looped back to
- * multicast listeners on the same host.
+ * Reports an error in an idle function. Similar to
+ * g_simple_async_report_error_in_idle(), but takes a #GError rather
+ * than building a new one.
  *
- * Returns: the multicast loopback setting on @socket
- * Since: 2.32
+ * Deprecated: 2.46: Use g_task_report_error().
  */
 
 
 /**
- * g_socket_get_multicast_ttl:
- * @socket: a #GSocket.
+ * g_simple_async_report_take_gerror_in_idle: (skip)
+ * @object: (nullable): a #GObject, or %NULL
+ * @callback: a #GAsyncReadyCallback.
+ * @user_data: user data passed to @callback.
+ * @error: the #GError to report
  *
- * Gets the multicast time-to-live setting on @socket; see
- * g_socket_set_multicast_ttl() for more details.
+ * Reports an error in an idle function. Similar to
+ * g_simple_async_report_gerror_in_idle(), but takes over the caller's
+ * ownership of @error, so the caller does not have to free it any more.
  *
- * Returns: the multicast time-to-live setting on @socket
- * Since: 2.32
+ * Since: 2.28
+ * Deprecated: 2.46: Use g_task_report_error().
  */
 
 
 /**
- * g_socket_get_option:
- * @socket: a #GSocket
- * @level: the "API level" of the option (eg, `SOL_SOCKET`)
- * @optname: the "name" of the option (eg, `SO_BROADCAST`)
- * @value: (out): return location for the option value
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Gets the value of an integer-valued option on @socket, as with
- * getsockopt(). (If you need to fetch a  non-integer-valued option,
- * you will need to call getsockopt() directly.)
+ * g_simple_async_result_complete:
+ * @simple: a #GSimpleAsyncResult.
  *
- * The [<gio/gnetworking.h>][gio-gnetworking.h]
- * header pulls in system headers that will define most of the
- * standard/portable socket options. For unusual socket protocols or
- * platform-dependent options, you may need to include additional
- * headers.
+ * Completes an asynchronous I/O job immediately. Must be called in
+ * the thread where the asynchronous result was to be delivered, as it
+ * invokes the callback directly. If you are in a different thread use
+ * g_simple_async_result_complete_in_idle().
  *
- * Note that even for socket options that are a single byte in size,
- * @value is still a pointer to a #gint variable, not a #guchar;
- * g_socket_get_option() will handle the conversion internally.
+ * Calling this function takes a reference to @simple for as long as
+ * is needed to complete the call.
  *
- * Returns: success or failure. On failure, @error will be set, and
- *   the system error value (`errno` or WSAGetLastError()) will still
- *   be set to the result of the getsockopt() call.
- * Since: 2.36
+ * Deprecated: 2.46: Use #GTask instead.
  */
 
 
 /**
- * g_socket_get_protocol:
- * @socket: a #GSocket.
+ * g_simple_async_result_complete_in_idle:
+ * @simple: a #GSimpleAsyncResult.
  *
- * Gets the socket protocol id the socket was created with.
- * In case the protocol is unknown, -1 is returned.
+ * Completes an asynchronous function in an idle handler in the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * of the thread that @simple was initially created in
+ * (and re-pushes that context around the invocation of the callback).
  *
- * Returns: a protocol id, or -1 if unknown
- * Since: 2.22
+ * Calling this function takes a reference to @simple for as long as
+ * is needed to complete the call.
+ *
+ * Deprecated: 2.46: Use #GTask instead.
  */
 
 
 /**
- * g_socket_get_remote_address:
- * @socket: a #GSocket.
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_simple_async_result_get_op_res_gboolean:
+ * @simple: a #GSimpleAsyncResult.
  *
- * Try to get the remote address of a connected socket. This is only
- * useful for connection oriented sockets that have been connected.
+ * Gets the operation result boolean from within the asynchronous result.
  *
- * Returns: (transfer full): a #GSocketAddress or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Returns: %TRUE if the operation's result was %TRUE, %FALSE
+ *     if the operation's result was %FALSE.
+ * Deprecated: 2.46: Use #GTask and g_task_propagate_boolean() instead.
  */
 
 
 /**
- * g_socket_get_socket_type:
- * @socket: a #GSocket.
+ * g_simple_async_result_get_op_res_gpointer: (skip)
+ * @simple: a #GSimpleAsyncResult.
  *
- * Gets the socket type of the socket.
+ * Gets a pointer result as returned by the asynchronous function.
  *
- * Returns: a #GSocketType
- * Since: 2.22
+ * Returns: a pointer from the result.
+ * Deprecated: 2.46: Use #GTask and g_task_propagate_pointer() instead.
  */
 
 
 /**
- * g_socket_get_timeout:
- * @socket: a #GSocket.
+ * g_simple_async_result_get_op_res_gssize:
+ * @simple: a #GSimpleAsyncResult.
  *
- * Gets the timeout setting of the socket. For details on this, see
- * g_socket_set_timeout().
+ * Gets a gssize from the asynchronous result.
  *
- * Returns: the timeout in seconds
- * Since: 2.26
+ * Returns: a gssize returned from the asynchronous function.
+ * Deprecated: 2.46: Use #GTask and g_task_propagate_int() instead.
  */
 
 
 /**
- * g_socket_get_ttl:
- * @socket: a #GSocket.
+ * g_simple_async_result_get_source_tag: (skip)
+ * @simple: a #GSimpleAsyncResult.
  *
- * Gets the unicast time-to-live setting on @socket; see
- * g_socket_set_ttl() for more details.
+ * Gets the source tag for the #GSimpleAsyncResult.
  *
- * Returns: the time-to-live setting on @socket
- * Since: 2.32
+ * Returns: a #gpointer to the source object for the #GSimpleAsyncResult.
+ * Deprecated: 2.46.: Use #GTask and g_task_get_source_tag() instead.
  */
 
 
 /**
- * g_socket_is_closed:
- * @socket: a #GSocket
+ * g_simple_async_result_is_valid:
+ * @result: the #GAsyncResult passed to the _finish function.
+ * @source: (nullable): the #GObject passed to the _finish function.
+ * @source_tag: (nullable): the asynchronous function.
  *
- * Checks whether a socket is closed.
+ * Ensures that the data passed to the _finish function of an async
+ * operation is consistent.  Three checks are performed.
  *
- * Returns: %TRUE if socket is closed, %FALSE otherwise
- * Since: 2.22
+ * First, @result is checked to ensure that it is really a
+ * #GSimpleAsyncResult.  Second, @source is checked to ensure that it
+ * matches the source object of @result.  Third, @source_tag is
+ * checked to ensure that it is equal to the @source_tag argument given
+ * to g_simple_async_result_new() (which, by convention, is a pointer
+ * to the _async function corresponding to the _finish function from
+ * which this function is called).  (Alternatively, if either
+ * @source_tag or @result's source tag is %NULL, then the source tag
+ * check is skipped.)
+ *
+ * Returns: #TRUE if all checks passed or #FALSE if any failed.
+ * Since: 2.20
+ * Deprecated: 2.46: Use #GTask and g_task_is_valid() instead.
  */
 
 
 /**
- * g_socket_is_connected:
- * @socket: a #GSocket.
+ * g_simple_async_result_new:
+ * @source_object: (nullable): a #GObject, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
+ * @source_tag: the asynchronous function.
  *
- * Check whether the socket is connected. This is only useful for
- * connection-oriented sockets.
+ * Creates a #GSimpleAsyncResult.
  *
- * If using g_socket_shutdown(), this function will return %TRUE until the
- * socket has been shut down for reading and writing. If you do a non-blocking
- * connect, this function will not return %TRUE until after you call
- * g_socket_check_connect_result().
+ * The common convention is to create the #GSimpleAsyncResult in the
+ * function that starts the asynchronous operation and use that same
+ * function as the @source_tag.
  *
- * Returns: %TRUE if socket is connected, %FALSE otherwise.
- * Since: 2.22
+ * If your operation supports cancellation with #GCancellable (which it
+ * probably should) then you should provide the user's cancellable to
+ * g_simple_async_result_set_check_cancellable() immediately after
+ * this function returns.
+ *
+ * Returns: a #GSimpleAsyncResult.
+ * Deprecated: 2.46: Use g_task_new() instead.
  */
 
 
 /**
- * g_socket_join_multicast_group:
- * @socket: a #GSocket.
- * @group: a #GInetAddress specifying the group address to join.
- * @iface: (nullable): Name of the interface to use, or %NULL
- * @source_specific: %TRUE if source-specific multicast should be used
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Registers @socket to receive multicast messages sent to @group.
- * @socket must be a %G_SOCKET_TYPE_DATAGRAM socket, and must have
- * been bound to an appropriate interface and port with
- * g_socket_bind().
- *
- * If @iface is %NULL, the system will automatically pick an interface
- * to bind to based on @group.
- *
- * If @source_specific is %TRUE, source-specific multicast as defined
- * in RFC 4604 is used. Note that on older platforms this may fail
- * with a %G_IO_ERROR_NOT_SUPPORTED error.
+ * g_simple_async_result_new_error:
+ * @source_object: (nullable): a #GObject, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
+ * @domain: a #GQuark.
+ * @code: an error code.
+ * @format: a string with format characters.
+ * @...: a list of values to insert into @format.
  *
- * To bind to a given source-specific multicast address, use
- * g_socket_join_multicast_group_ssm() instead.
+ * Creates a new #GSimpleAsyncResult with a set error.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.32
+ * Returns: a #GSimpleAsyncResult.
+ * Deprecated: 2.46: Use g_task_new() and g_task_return_new_error() instead.
  */
 
 
 /**
- * g_socket_join_multicast_group_ssm:
- * @socket: a #GSocket.
- * @group: a #GInetAddress specifying the group address to join.
- * @source_specific: (nullable): a #GInetAddress specifying the
- * source-specific multicast address or %NULL to ignore.
- * @iface: (nullable): Name of the interface to use, or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Registers @socket to receive multicast messages sent to @group.
- * @socket must be a %G_SOCKET_TYPE_DATAGRAM socket, and must have
- * been bound to an appropriate interface and port with
- * g_socket_bind().
- *
- * If @iface is %NULL, the system will automatically pick an interface
- * to bind to based on @group.
- *
- * If @source_specific is not %NULL, use source-specific multicast as
- * defined in RFC 4604. Note that on older platforms this may fail
- * with a %G_IO_ERROR_NOT_SUPPORTED error.
+ * g_simple_async_result_new_from_error:
+ * @source_object: (nullable): a #GObject, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @user_data: (closure): user data passed to @callback.
+ * @error: a #GError
  *
- * Note that this function can be called multiple times for the same
- * @group with different @source_specific in order to receive multicast
- * packets from more than one source.
+ * Creates a #GSimpleAsyncResult from an error condition.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.56
+ * Returns: a #GSimpleAsyncResult.
+ * Deprecated: 2.46: Use g_task_new() and g_task_return_error() instead.
  */
 
 
 /**
- * g_socket_leave_multicast_group:
- * @socket: a #GSocket.
- * @group: a #GInetAddress specifying the group address to leave.
- * @iface: (nullable): Interface used
- * @source_specific: %TRUE if source-specific multicast was used
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Removes @socket from the multicast group defined by @group, @iface,
- * and @source_specific (which must all have the same values they had
- * when you joined the group).
- *
- * @socket remains bound to its address and port, and can still receive
- * unicast messages after calling this.
+ * g_simple_async_result_new_take_error: (skip)
+ * @source_object: (nullable): a #GObject, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data passed to @callback
+ * @error: a #GError
  *
- * To unbind to a given source-specific multicast address, use
- * g_socket_leave_multicast_group_ssm() instead.
+ * Creates a #GSimpleAsyncResult from an error condition, and takes over the
+ * caller's ownership of @error, so the caller does not need to free it anymore.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.32
+ * Returns: a #GSimpleAsyncResult
+ * Since: 2.28
+ * Deprecated: 2.46: Use g_task_new() and g_task_return_error() instead.
  */
 
 
 /**
- * g_socket_leave_multicast_group_ssm:
- * @socket: a #GSocket.
- * @group: a #GInetAddress specifying the group address to leave.
- * @source_specific: (nullable): a #GInetAddress specifying the
- * source-specific multicast address or %NULL to ignore.
- * @iface: (nullable): Name of the interface to use, or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_simple_async_result_propagate_error:
+ * @simple: a #GSimpleAsyncResult.
+ * @dest: (out): a location to propagate the error to.
  *
- * Removes @socket from the multicast group defined by @group, @iface,
- * and @source_specific (which must all have the same values they had
- * when you joined the group).
+ * Propagates an error from within the simple asynchronous result to
+ * a given destination.
  *
- * @socket remains bound to its address and port, and can still receive
- * unicast messages after calling this.
+ * If the #GCancellable given to a prior call to
+ * g_simple_async_result_set_check_cancellable() is cancelled then this
+ * function will return %TRUE with @dest set appropriately.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.56
+ * Returns: %TRUE if the error was propagated to @dest. %FALSE otherwise.
+ * Deprecated: 2.46: Use #GTask instead.
  */
 
 
 /**
- * g_socket_listen:
- * @socket: a #GSocket.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Marks the socket as a server socket, i.e. a socket that is used
- * to accept incoming requests using g_socket_accept().
+ * g_simple_async_result_run_in_thread: (skip)
+ * @simple: a #GSimpleAsyncResult.
+ * @func: a #GSimpleAsyncThreadFunc.
+ * @io_priority: the io priority of the request.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
  *
- * Before calling this the socket must be bound to a local address using
- * g_socket_bind().
+ * Runs the asynchronous job in a separate thread and then calls
+ * g_simple_async_result_complete_in_idle() on @simple to return
+ * the result to the appropriate main loop.
  *
- * To set the maximum amount of outstanding clients, use
- * g_socket_set_listen_backlog().
+ * Calling this function takes a reference to @simple for as long as
+ * is needed to run the job and report its completion.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.22
+ * Deprecated: 2.46: Use #GTask and g_task_run_in_thread() instead.
  */
 
 
 /**
- * g_socket_listener_accept:
- * @listener: a #GSocketListener
- * @source_object: (out) (transfer none) (optional) (nullable): location where #GObject pointer will be stored, or %NULL
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_simple_async_result_set_check_cancellable:
+ * @simple: a #GSimpleAsyncResult
+ * @check_cancellable: (nullable): a #GCancellable to check, or %NULL to unset
  *
- * Blocks waiting for a client to connect to any of the sockets added
- * to the listener. Returns a #GSocketConnection for the socket that was
- * accepted.
+ * Sets a #GCancellable to check before dispatching results.
  *
- * If @source_object is not %NULL it will be filled out with the source
- * object specified when the corresponding socket or address was added
- * to the listener.
+ * This function has one very specific purpose: the provided cancellable
+ * is checked at the time of g_simple_async_result_propagate_error() If
+ * it is cancelled, these functions will return an "Operation was
+ * cancelled" error (%G_IO_ERROR_CANCELLED).
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Implementors of cancellable asynchronous functions should use this in
+ * order to provide a guarantee to their callers that cancelling an
+ * async operation will reliably result in an error being returned for
+ * that operation (even if a positive result for the operation has
+ * already been sent as an idle to the main context to be dispatched).
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.22
+ * The checking described above is done regardless of any call to the
+ * unrelated g_simple_async_result_set_handle_cancellation() function.
+ *
+ * Since: 2.32
+ * Deprecated: 2.46: Use #GTask instead.
  */
 
 
 /**
- * g_socket_listener_accept_async:
- * @listener: a #GSocketListener
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data for the callback
- *
- * This is the asynchronous version of g_socket_listener_accept().
+ * g_simple_async_result_set_error: (skip)
+ * @simple: a #GSimpleAsyncResult.
+ * @domain: a #GQuark (usually #G_IO_ERROR).
+ * @code: an error code.
+ * @format: a formatted error reporting string.
+ * @...: a list of variables to fill in @format.
  *
- * When the operation is finished @callback will be
- * called. You can then call g_socket_listener_accept_socket()
- * to get the result of the operation.
+ * Sets an error within the asynchronous result without a #GError.
  *
- * Since: 2.22
+ * Deprecated: 2.46: Use #GTask and g_task_return_new_error() instead.
  */
 
 
 /**
- * g_socket_listener_accept_finish:
- * @listener: a #GSocketListener
- * @result: a #GAsyncResult.
- * @source_object: (out) (transfer none) (optional) (nullable): Optional #GObject identifying this source
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_simple_async_result_set_error_va: (skip)
+ * @simple: a #GSimpleAsyncResult.
+ * @domain: a #GQuark (usually #G_IO_ERROR).
+ * @code: an error code.
+ * @format: a formatted error reporting string.
+ * @args: va_list of arguments.
  *
- * Finishes an async accept operation. See g_socket_listener_accept_async()
+ * Sets an error within the asynchronous result without a #GError.
+ * Unless writing a binding, see g_simple_async_result_set_error().
  *
- * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
- * Since: 2.22
+ * Deprecated: 2.46: Use #GTask and g_task_return_error() instead.
  */
 
 
 /**
- * g_socket_listener_accept_socket:
- * @listener: a #GSocketListener
- * @source_object: (out) (transfer none) (optional) (nullable): location where #GObject pointer will be stored, or %NULL.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Blocks waiting for a client to connect to any of the sockets added
- * to the listener. Returns the #GSocket that was accepted.
- *
- * If you want to accept the high-level #GSocketConnection, not a #GSocket,
- * which is often the case, then you should use g_socket_listener_accept()
- * instead.
- *
- * If @source_object is not %NULL it will be filled out with the source
- * object specified when the corresponding socket or address was added
- * to the listener.
+ * g_simple_async_result_set_from_error:
+ * @simple: a #GSimpleAsyncResult.
+ * @error: #GError.
  *
- * If @cancellable is not %NULL, then the operation can be cancelled by
- * triggering the cancellable object from another thread. If the operation
- * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ * Sets the result from a #GError.
  *
- * Returns: (transfer full): a #GSocket on success, %NULL on error.
- * Since: 2.22
+ * Deprecated: 2.46: Use #GTask and g_task_return_error() instead.
  */
 
 
 /**
- * g_socket_listener_accept_socket_async:
- * @listener: a #GSocketListener
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: (scope async): a #GAsyncReadyCallback
- * @user_data: (closure): user data for the callback
+ * g_simple_async_result_set_handle_cancellation:
+ * @simple: a #GSimpleAsyncResult.
+ * @handle_cancellation: a #gboolean.
  *
- * This is the asynchronous version of g_socket_listener_accept_socket().
+ * Sets whether to handle cancellation within the asynchronous operation.
  *
- * When the operation is finished @callback will be
- * called. You can then call g_socket_listener_accept_socket_finish()
- * to get the result of the operation.
+ * This function has nothing to do with
+ * g_simple_async_result_set_check_cancellable().  It only refers to the
+ * #GCancellable passed to g_simple_async_result_run_in_thread().
  *
- * Since: 2.22
+ * Deprecated: 2.46
  */
 
 
 /**
- * g_socket_listener_accept_socket_finish:
- * @listener: a #GSocketListener
- * @result: a #GAsyncResult.
- * @source_object: (out) (transfer none) (optional) (nullable): Optional #GObject identifying this source
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
+ * g_simple_async_result_set_op_res_gboolean:
+ * @simple: a #GSimpleAsyncResult.
+ * @op_res: a #gboolean.
  *
- * Finishes an async accept operation. See g_socket_listener_accept_socket_async()
+ * Sets the operation result to a boolean within the asynchronous result.
  *
- * Returns: (transfer full): a #GSocket on success, %NULL on error.
- * Since: 2.22
+ * Deprecated: 2.46: Use #GTask and g_task_return_boolean() instead.
  */
 
 
 /**
- * g_socket_listener_add_address:
- * @listener: a #GSocketListener
- * @address: a #GSocketAddress
- * @type: a #GSocketType
- * @protocol: a #GSocketProtocol
- * @source_object: (nullable): Optional #GObject identifying this source
- * @effective_address: (out) (optional): location to store the address that was bound to, or %NULL.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Creates a socket of type @type and protocol @protocol, binds
- * it to @address and adds it to the set of sockets we're accepting
- * sockets from.
- *
- * Note that adding an IPv6 address, depending on the platform,
- * may or may not result in a listener that also accepts IPv4
- * connections.  For more deterministic behavior, see
- * g_socket_listener_add_inet_port().
- *
- * @source_object will be passed out in the various calls
- * to accept to identify this particular source, which is
- * useful if you're listening on multiple addresses and do
- * different things depending on what address is connected to.
- *
- * If successful and @effective_address is non-%NULL then it will
- * be set to the address that the binding actually occurred at.  This
- * is helpful for determining the port number that was used for when
- * requesting a binding to port 0 (ie: "any port").  This address, if
- * requested, belongs to the caller and must be freed.
+ * g_simple_async_result_set_op_res_gpointer: (skip)
+ * @simple: a #GSimpleAsyncResult.
+ * @op_res: a pointer result from an asynchronous function.
+ * @destroy_op_res: a #GDestroyNotify function.
  *
- * Call g_socket_listener_close() to stop listening on @address; this will not
- * be done automatically when you drop your final reference to @listener, as
- * references may be held internally.
+ * Sets the operation result within the asynchronous result to a pointer.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.22
+ * Deprecated: 2.46: Use #GTask and g_task_return_pointer() instead.
  */
 
 
 /**
- * g_socket_listener_add_any_inet_port:
- * @listener: a #GSocketListener
- * @source_object: (nullable): Optional #GObject identifying this source
- * @error: a #GError location to store the error occurring, or %NULL to
- * ignore.
- *
- * Listens for TCP connections on any available port number for both
- * IPv6 and IPv4 (if each is available).
- *
- * This is useful if you need to have a socket for incoming connections
- * but don't care about the specific port number.
+ * g_simple_async_result_set_op_res_gssize:
+ * @simple: a #GSimpleAsyncResult.
+ * @op_res: a #gssize.
  *
- * @source_object will be passed out in the various calls
- * to accept to identify this particular source, which is
- * useful if you're listening on multiple addresses and do
- * different things depending on what address is connected to.
+ * Sets the operation result within the asynchronous result to
+ * the given @op_res.
  *
- * Returns: the port number, or 0 in case of failure.
- * Since: 2.24
+ * Deprecated: 2.46: Use #GTask and g_task_return_int() instead.
  */
 
 
 /**
- * g_socket_listener_add_inet_port:
- * @listener: a #GSocketListener
- * @port: an IP port number (non-zero)
- * @source_object: (nullable): Optional #GObject identifying this source
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Helper function for g_socket_listener_add_address() that
- * creates a TCP/IP socket listening on IPv4 and IPv6 (if
- * supported) on the specified port on all interfaces.
- *
- * @source_object will be passed out in the various calls
- * to accept to identify this particular source, which is
- * useful if you're listening on multiple addresses and do
- * different things depending on what address is connected to.
+ * g_simple_async_result_take_error: (skip)
+ * @simple: a #GSimpleAsyncResult
+ * @error: a #GError
  *
- * Call g_socket_listener_close() to stop listening on @port; this will not
- * be done automatically when you drop your final reference to @listener, as
- * references may be held internally.
+ * Sets the result from @error, and takes over the caller's ownership
+ * of @error, so the caller does not need to free it any more.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.22
+ * Since: 2.28
+ * Deprecated: 2.46: Use #GTask and g_task_return_error() instead.
  */
 
 
 /**
- * g_socket_listener_add_socket:
- * @listener: a #GSocketListener
- * @socket: a listening #GSocket
- * @source_object: (nullable): Optional #GObject identifying this source
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Adds @socket to the set of sockets that we try to accept
- * new clients from. The socket must be bound to a local
- * address and listened to.
- *
- * @source_object will be passed out in the various calls
- * to accept to identify this particular source, which is
- * useful if you're listening on multiple addresses and do
- * different things depending on what address is connected to.
+ * g_simple_io_stream_new:
+ * @input_stream: a #GInputStream.
+ * @output_stream: a #GOutputStream.
  *
- * The @socket will not be automatically closed when the @listener is finalized
- * unless the listener held the final reference to the socket. Before GLib 2.42,
- * the @socket was automatically closed on finalization of the @listener, even
- * if references to it were held elsewhere.
+ * Creates a new #GSimpleIOStream wrapping @input_stream and @output_stream.
+ * See also #GIOStream.
  *
- * Returns: %TRUE on success, %FALSE on error.
- * Since: 2.22
+ * Returns: a new #GSimpleIOStream instance.
+ * Since: 2.44
  */
 
 
 /**
- * g_socket_listener_close:
- * @listener: a #GSocketListener
+ * g_simple_permission_new:
+ * @allowed: %TRUE if the action is allowed
  *
- * Closes all the sockets in the listener.
+ * Creates a new #GPermission instance that represents an action that is
+ * either always or never allowed.
  *
- * Since: 2.22
+ * Returns: the #GSimplePermission, as a #GPermission
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_listener_new:
+ * g_simple_proxy_resolver_new:
+ * @default_proxy: (nullable): the default proxy to use, eg
+ *     "socks://192.168.1.1"
+ * @ignore_hosts: (nullable): an optional list of hosts/IP addresses
+ *     to not use a proxy for.
  *
- * Creates a new #GSocketListener with no sockets to listen for.
- * New listeners can be added with e.g. g_socket_listener_add_address()
- * or g_socket_listener_add_inet_port().
+ * Creates a new #GSimpleProxyResolver. See
+ * #GSimpleProxyResolver:default-proxy and
+ * #GSimpleProxyResolver:ignore-hosts for more details on how the
+ * arguments are interpreted.
  *
- * Returns: a new #GSocketListener.
- * Since: 2.22
+ * Returns: (transfer full): a new #GSimpleProxyResolver
+ * Since: 2.36
  */
 
 
 /**
- * g_socket_listener_set_backlog:
- * @listener: a #GSocketListener
- * @listen_backlog: an integer
+ * g_simple_proxy_resolver_set_default_proxy:
+ * @resolver: a #GSimpleProxyResolver
+ * @default_proxy: the default proxy to use
  *
- * Sets the listen backlog on the sockets in the listener.
+ * Sets the default proxy on @resolver, to be used for any URIs that
+ * don't match #GSimpleProxyResolver:ignore-hosts or a proxy set
+ * via g_simple_proxy_resolver_set_uri_proxy().
  *
- * See g_socket_set_listen_backlog() for details
+ * If @default_proxy starts with "socks://",
+ * #GSimpleProxyResolver will treat it as referring to all three of
+ * the socks5, socks4a, and socks4 proxy types.
  *
- * Since: 2.22
+ * Since: 2.36
  */
 
 
 /**
- * g_socket_new:
- * @family: the socket family to use, e.g. %G_SOCKET_FAMILY_IPV4.
- * @type: the socket type to use.
- * @protocol: the id of the protocol to use, or 0 for default.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Creates a new #GSocket with the defined family, type and protocol.
- * If @protocol is 0 (%G_SOCKET_PROTOCOL_DEFAULT) the default protocol type
- * for the family and type is used.
+ * g_simple_proxy_resolver_set_ignore_hosts:
+ * @resolver: a #GSimpleProxyResolver
+ * @ignore_hosts: %NULL-terminated list of hosts/IP addresses
+ *     to not use a proxy for
  *
- * The @protocol is a family and type specific int that specifies what
- * kind of protocol to use. #GSocketProtocol lists several common ones.
- * Many families only support one protocol, and use 0 for this, others
- * support several and using 0 means to use the default protocol for
- * the family and type.
+ * Sets the list of ignored hosts.
  *
- * The protocol id is passed directly to the operating
- * system, so you can use protocols not listed in #GSocketProtocol if you
- * know the protocol number used for it.
+ * See #GSimpleProxyResolver:ignore-hosts for more details on how the
+ * @ignore_hosts argument is interpreted.
  *
- * Returns: a #GSocket or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Since: 2.36
  */
 
 
 /**
- * g_socket_new_from_fd:
- * @fd: a native socket file descriptor.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Creates a new #GSocket from a native file descriptor
- * or winsock SOCKET handle.
- *
- * This reads all the settings from the file descriptor so that
- * all properties should work. Note that the file descriptor
- * will be set to non-blocking mode, independent on the blocking
- * mode of the #GSocket.
+ * g_simple_proxy_resolver_set_uri_proxy:
+ * @resolver: a #GSimpleProxyResolver
+ * @uri_scheme: the URI scheme to add a proxy for
+ * @proxy: the proxy to use for @uri_scheme
  *
- * On success, the returned #GSocket takes ownership of @fd. On failure, the
- * caller must close @fd themselves.
+ * Adds a URI-scheme-specific proxy to @resolver; URIs whose scheme
+ * matches @uri_scheme (and which don't match
+ * #GSimpleProxyResolver:ignore-hosts) will be proxied via @proxy.
  *
- * Since GLib 2.46, it is no longer a fatal error to call this on a non-socket
- * descriptor.  Instead, a GError will be set with code %G_IO_ERROR_FAILED
+ * As with #GSimpleProxyResolver:default-proxy, if @proxy starts with
+ * "socks://", #GSimpleProxyResolver will treat it
+ * as referring to all three of the socks5, socks4a, and socks4 proxy
+ * types.
  *
- * Returns: a #GSocket or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.22
+ * Since: 2.36
  */
 
 
 /**
- * g_socket_receive:
- * @socket: a #GSocket
- * @buffer: (array length=size) (element-type guint8): a buffer to
- *     read data into (which should be at least @size bytes long).
- * @size: the number of bytes you want to read from the socket
+ * g_socket_accept:
+ * @socket: a #GSocket.
  * @cancellable: (nullable): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Receive data (up to @size bytes) from a socket. This is mainly used by
- * connection-oriented sockets; it is identical to g_socket_receive_from()
- * with @address set to %NULL.
- *
- * For %G_SOCKET_TYPE_DATAGRAM and %G_SOCKET_TYPE_SEQPACKET sockets,
- * g_socket_receive() will always read either 0 or 1 complete messages from
- * the socket. If the received message is too large to fit in @buffer, then
- * the data beyond @size bytes will be discarded, without any explicit
- * indication that this has occurred.
- *
- * For %G_SOCKET_TYPE_STREAM sockets, g_socket_receive() can return any
- * number of bytes, up to @size. If more than @size bytes have been
- * received, the additional data will be returned in future calls to
- * g_socket_receive().
+ * Accept incoming connections on a connection-based socket. This removes
+ * the first outstanding connection request from the listening socket and
+ * creates a #GSocket object for it.
  *
- * If the socket is in blocking mode the call will block until there
- * is some data to receive, the connection is closed, or there is an
- * error. If there is no data available and the socket is in
- * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be
- * returned. To be notified when data is available, wait for the
- * %G_IO_IN condition.
+ * The @socket must be bound to a local address with g_socket_bind() and
+ * must be listening for incoming connections (g_socket_listen()).
  *
- * On error -1 is returned and @error is set accordingly.
+ * If there are no outstanding connections then the operation will block
+ * or return %G_IO_ERROR_WOULD_BLOCK if non-blocking I/O is enabled.
+ * To be notified of an incoming connection, wait for the %G_IO_IN condition.
  *
- * Returns: Number of bytes read, or 0 if the connection was closed by
- * the peer, or -1 on error
+ * Returns: (transfer full): a new #GSocket, or %NULL on error.
+ *     Free the returned object with g_object_unref().
  * Since: 2.22
  */
 
 
 /**
- * g_socket_receive_from:
- * @socket: a #GSocket
- * @address: (out) (optional): a pointer to a #GSocketAddress
- *     pointer, or %NULL
- * @buffer: (array length=size) (element-type guint8): a buffer to
- *     read data into (which should be at least @size bytes long).
- * @size: the number of bytes you want to read from the socket
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Receive data (up to @size bytes) from a socket.
+ * g_socket_address_enumerator_next:
+ * @enumerator: a #GSocketAddressEnumerator
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: a #GError.
  *
- * If @address is non-%NULL then @address will be set equal to the
- * source address of the received packet.
- * @address is owned by the caller.
+ * Retrieves the next #GSocketAddress from @enumerator. Note that this
+ * may block for some amount of time. (Eg, a #GNetworkAddress may need
+ * to do a DNS lookup before it can return an address.) Use
+ * g_socket_address_enumerator_next_async() if you need to avoid
+ * blocking.
  *
- * See g_socket_receive() for additional information.
+ * If @enumerator is expected to yield addresses, but for some reason
+ * is unable to (eg, because of a DNS error), then the first call to
+ * g_socket_address_enumerator_next() will return an appropriate error
+ * in *@error. However, if the first call to
+ * g_socket_address_enumerator_next() succeeds, then any further
+ * internal errors (other than @cancellable being triggered) will be
+ * ignored.
  *
- * Returns: Number of bytes read, or 0 if the connection was closed by
- * the peer, or -1 on error
- * Since: 2.22
+ * Returns: (transfer full): a #GSocketAddress (owned by the caller), or %NULL on
+ *     error (in which case *@error will be set) or if there are no
+ *     more addresses.
  */
 
 
 /**
- * g_socket_receive_message:
- * @socket: a #GSocket
- * @address: (out) (optional): a pointer to a #GSocketAddress
- *     pointer, or %NULL
- * @vectors: (array length=num_vectors): an array of #GInputVector structs
- * @num_vectors: the number of elements in @vectors, or -1
- * @messages: (array length=num_messages) (out) (optional) (nullable): a pointer
- *    which may be filled with an array of #GSocketControlMessages, or %NULL
- * @num_messages: (out): a pointer which will be filled with the number of
- *    elements in @messages, or %NULL
- * @flags: (inout): a pointer to an int containing #GSocketMsgFlags flags
- * @cancellable: a %GCancellable or %NULL
- * @error: a #GError pointer, or %NULL
- *
- * Receive data from a socket.  For receiving multiple messages, see
- * g_socket_receive_messages(); for easier use, see
- * g_socket_receive() and g_socket_receive_from().
- *
- * If @address is non-%NULL then @address will be set equal to the
- * source address of the received packet.
- * @address is owned by the caller.
- *
- * @vector must point to an array of #GInputVector structs and
- * @num_vectors must be the length of this array.  These structs
- * describe the buffers that received data will be scattered into.
- * If @num_vectors is -1, then @vectors is assumed to be terminated
- * by a #GInputVector with a %NULL buffer pointer.
- *
- * As a special case, if @num_vectors is 0 (in which case, @vectors
- * may of course be %NULL), then a single byte is received and
- * discarded. This is to facilitate the common practice of sending a
- * single '\0' byte for the purposes of transferring ancillary data.
- *
- * @messages, if non-%NULL, will be set to point to a newly-allocated
- * array of #GSocketControlMessage instances or %NULL if no such
- * messages was received. These correspond to the control messages
- * received from the kernel, one #GSocketControlMessage per message
- * from the kernel. This array is %NULL-terminated and must be freed
- * by the caller using g_free() after calling g_object_unref() on each
- * element. If @messages is %NULL, any control messages received will
- * be discarded.
- *
- * @num_messages, if non-%NULL, will be set to the number of control
- * messages received.
- *
- * If both @messages and @num_messages are non-%NULL, then
- * @num_messages gives the number of #GSocketControlMessage instances
- * in @messages (ie: not including the %NULL terminator).
+ * g_socket_address_enumerator_next_async:
+ * @enumerator: a #GSocketAddressEnumerator
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request
+ *     is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * @flags is an in/out parameter. The commonly available arguments
- * for this are available in the #GSocketMsgFlags enum, but the
- * values there are the same as the system values, and the flags
- * are passed in as-is, so you can pass in system-specific flags too
- * (and g_socket_receive_message() may pass system-specific flags out).
- * Flags passed in to the parameter affect the receive operation; flags returned
- * out of it are relevant to the specific returned message.
+ * Asynchronously retrieves the next #GSocketAddress from @enumerator
+ * and then calls @callback, which must call
+ * g_socket_address_enumerator_next_finish() to get the result.
+ */
+
+
+/**
+ * g_socket_address_enumerator_next_finish:
+ * @enumerator: a #GSocketAddressEnumerator
+ * @result: a #GAsyncResult
+ * @error: a #GError
  *
- * As with g_socket_receive(), data may be discarded if @socket is
- * %G_SOCKET_TYPE_DATAGRAM or %G_SOCKET_TYPE_SEQPACKET and you do not
- * provide enough buffer space to read a complete message. You can pass
- * %G_SOCKET_MSG_PEEK in @flags to peek at the current message without
- * removing it from the receive queue, but there is no portable way to find
- * out the length of the message other than by reading it into a
- * sufficiently-large buffer.
+ * Retrieves the result of a completed call to
+ * g_socket_address_enumerator_next_async(). See
+ * g_socket_address_enumerator_next() for more information about
+ * error handling.
  *
- * If the socket is in blocking mode the call will block until there
- * is some data to receive, the connection is closed, or there is an
- * error. If there is no data available and the socket is in
- * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be
- * returned. To be notified when data is available, wait for the
- * %G_IO_IN condition.
+ * Returns: (transfer full): a #GSocketAddress (owned by the caller), or %NULL on
+ *     error (in which case *@error will be set) or if there are no
+ *     more addresses.
+ */
+
+
+/**
+ * g_socket_address_get_family:
+ * @address: a #GSocketAddress
  *
- * On error -1 is returned and @error is set accordingly.
+ * Gets the socket family type of @address.
  *
- * Returns: Number of bytes read, or 0 if the connection was closed by
- * the peer, or -1 on error
+ * Returns: the socket family type of @address
  * Since: 2.22
  */
 
 
 /**
- * g_socket_receive_messages:
- * @socket: a #GSocket
- * @messages: (array length=num_messages): an array of #GInputMessage structs
- * @num_messages: the number of elements in @messages
- * @flags: an int containing #GSocketMsgFlags flags for the overall operation
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore
- *
- * Receive multiple data messages from @socket in one go.  This is the most
- * complicated and fully-featured version of this call. For easier use, see
- * g_socket_receive(), g_socket_receive_from(), and g_socket_receive_message().
- *
- * @messages must point to an array of #GInputMessage structs and
- * @num_messages must be the length of this array. Each #GInputMessage
- * contains a pointer to an array of #GInputVector structs describing the
- * buffers that the data received in each message will be written to. Using
- * multiple #GInputVectors is more memory-efficient than manually copying data
- * out of a single buffer to multiple sources, and more system-call-efficient
- * than making multiple calls to g_socket_receive(), such as in scenarios where
- * a lot of data packets need to be received (e.g. high-bandwidth video
- * streaming over RTP/UDP).
- *
- * @flags modify how all messages are received. The commonly available
- * arguments for this are available in the #GSocketMsgFlags enum, but the
- * values there are the same as the system values, and the flags
- * are passed in as-is, so you can pass in system-specific flags too. These
- * flags affect the overall receive operation. Flags affecting individual
- * messages are returned in #GInputMessage.flags.
- *
- * The other members of #GInputMessage are treated as described in its
- * documentation.
- *
- * If #GSocket:blocking is %TRUE the call will block until @num_messages have
- * been received, or the end of the stream is reached.
- *
- * If #GSocket:blocking is %FALSE the call will return up to @num_messages
- * without blocking, or %G_IO_ERROR_WOULD_BLOCK if no messages are queued in the
- * operating system to be received.
- *
- * In blocking mode, if #GSocket:timeout is positive and is reached before any
- * messages are received, %G_IO_ERROR_TIMED_OUT is returned, otherwise up to
- * @num_messages are returned. (Note: This is effectively the
- * behaviour of `MSG_WAITFORONE` with recvmmsg().)
+ * g_socket_address_get_native_size:
+ * @address: a #GSocketAddress
  *
- * To be notified when messages are available, wait for the
- * %G_IO_IN condition. Note though that you may still receive
- * %G_IO_ERROR_WOULD_BLOCK from g_socket_receive_messages() even if you were
- * previously notified of a %G_IO_IN condition.
+ * Gets the size of @address's native struct sockaddr.
+ * You can use this to allocate memory to pass to
+ * g_socket_address_to_native().
  *
- * If the remote peer closes the connection, any messages queued in the
- * operating system will be returned, and subsequent calls to
- * g_socket_receive_messages() will return 0 (with no error set).
+ * Returns: the size of the native struct sockaddr that
+ *     @address represents
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_address_new_from_native:
+ * @native: (not nullable): a pointer to a struct sockaddr
+ * @len: the size of the memory location pointed to by @native
  *
- * On error -1 is returned and @error is set accordingly. An error will only
- * be returned if zero messages could be received; otherwise the number of
- * messages successfully received before the error will be returned.
+ * Creates a #GSocketAddress subclass corresponding to the native
+ * struct sockaddr @native.
  *
- * Returns: number of messages received, or -1 on error. Note that the number
- *     of messages received may be smaller than @num_messages if in non-blocking
- *     mode, if the peer closed the connection, or if @num_messages
- *     was larger than `UIO_MAXIOV` (1024), in which case the caller may re-try
- *     to receive the remaining messages.
- * Since: 2.48
+ * Returns: a new #GSocketAddress if @native could successfully
+ *     be converted, otherwise %NULL
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_receive_with_blocking:
- * @socket: a #GSocket
- * @buffer: (array length=size) (element-type guint8): a buffer to
- *     read data into (which should be at least @size bytes long).
- * @size: the number of bytes you want to read from the socket
- * @blocking: whether to do blocking or non-blocking I/O
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_socket_address_to_native:
+ * @address: a #GSocketAddress
+ * @dest: a pointer to a memory location that will contain the native
+ * struct sockaddr
+ * @destlen: the size of @dest. Must be at least as large as
+ *     g_socket_address_get_native_size()
+ * @error: #GError for error reporting, or %NULL to ignore
  *
- * This behaves exactly the same as g_socket_receive(), except that
- * the choice of blocking or non-blocking behavior is determined by
- * the @blocking argument rather than by @socket's properties.
+ * Converts a #GSocketAddress to a native struct sockaddr, which can
+ * be passed to low-level functions like connect() or bind().
  *
- * Returns: Number of bytes read, or 0 if the connection was closed by
- * the peer, or -1 on error
- * Since: 2.26
+ * If not enough space is available, a %G_IO_ERROR_NO_SPACE error
+ * is returned. If the address type is not known on the system
+ * then a %G_IO_ERROR_NOT_SUPPORTED error is returned.
+ *
+ * Returns: %TRUE if @dest was filled in, %FALSE on error
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_send:
- * @socket: a #GSocket
- * @buffer: (array length=size) (element-type guint8): the buffer
- *     containing the data to send.
- * @size: the number of bytes to send
- * @cancellable: (nullable): a %GCancellable or %NULL
+ * g_socket_bind:
+ * @socket: a #GSocket.
+ * @address: a #GSocketAddress specifying the local address.
+ * @allow_reuse: whether to allow reusing this address
  * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Tries to send @size bytes from @buffer on the socket. This is
- * mainly used by connection-oriented sockets; it is identical to
- * g_socket_send_to() with @address set to %NULL.
+ * When a socket is created it is attached to an address family, but it
+ * doesn't have an address in this family. g_socket_bind() assigns the
+ * address (sometimes called name) of the socket.
  *
- * If the socket is in blocking mode the call will block until there is
- * space for the data in the socket queue. If there is no space available
- * and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
- * will be returned. To be notified when space is available, wait for the
- * %G_IO_OUT condition. Note though that you may still receive
- * %G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
- * notified of a %G_IO_OUT condition. (On Windows in particular, this is
- * very common due to the way the underlying APIs work.)
+ * It is generally required to bind to a local address before you can
+ * receive connections. (See g_socket_listen() and g_socket_accept() ).
+ * In certain situations, you may also want to bind a socket that will be
+ * used to initiate connections, though this is not normally required.
  *
- * On error -1 is returned and @error is set accordingly.
+ * If @socket is a TCP socket, then @allow_reuse controls the setting
+ * of the `SO_REUSEADDR` socket option; normally it should be %TRUE for
+ * server sockets (sockets that you will eventually call
+ * g_socket_accept() on), and %FALSE for client sockets. (Failing to
+ * set this flag on a server socket may cause g_socket_bind() to return
+ * %G_IO_ERROR_ADDRESS_IN_USE if the server program is stopped and then
+ * immediately restarted.)
  *
- * Returns: Number of bytes written (which may be less than @size), or -1
- * on error
+ * If @socket is a UDP socket, then @allow_reuse determines whether or
+ * not other UDP sockets can be bound to the same address at the same
+ * time. In particular, you can have several UDP sockets bound to the
+ * same address, and they will all receive all of the multicast and
+ * broadcast packets sent to that address. (The behavior of unicast
+ * UDP packets to an address with multiple listeners is not defined.)
+ *
+ * Returns: %TRUE on success, %FALSE on error.
  * Since: 2.22
  */
 
 
 /**
- * g_socket_send_message:
+ * g_socket_check_connect_result:
  * @socket: a #GSocket
- * @address: (nullable): a #GSocketAddress, or %NULL
- * @vectors: (array length=num_vectors): an array of #GOutputVector structs
- * @num_vectors: the number of elements in @vectors, or -1
- * @messages: (array length=num_messages) (nullable): a pointer to an
- *   array of #GSocketControlMessages, or %NULL.
- * @num_messages: number of elements in @messages, or -1.
- * @flags: an int containing #GSocketMsgFlags flags
- * @cancellable: (nullable): a %GCancellable or %NULL
  * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Send data to @address on @socket.  For sending multiple messages see
- * g_socket_send_messages(); for easier use, see
- * g_socket_send() and g_socket_send_to().
- *
- * If @address is %NULL then the message is sent to the default receiver
- * (set by g_socket_connect()).
- *
- * @vectors must point to an array of #GOutputVector structs and
- * @num_vectors must be the length of this array. (If @num_vectors is -1,
- * then @vectors is assumed to be terminated by a #GOutputVector with a
- * %NULL buffer pointer.) The #GOutputVector structs describe the buffers
- * that the sent data will be gathered from. Using multiple
- * #GOutputVectors is more memory-efficient than manually copying
- * data from multiple sources into a single buffer, and more
- * network-efficient than making multiple calls to g_socket_send().
- *
- * @messages, if non-%NULL, is taken to point to an array of @num_messages
- * #GSocketControlMessage instances. These correspond to the control
- * messages to be sent on the socket.
- * If @num_messages is -1 then @messages is treated as a %NULL-terminated
- * array.
+ * Checks and resets the pending connect error for the socket.
+ * This is used to check for errors when g_socket_connect() is
+ * used in non-blocking mode.
  *
- * @flags modify how the message is sent. The commonly available arguments
- * for this are available in the #GSocketMsgFlags enum, but the
- * values there are the same as the system values, and the flags
- * are passed in as-is, so you can pass in system-specific flags too.
+ * Returns: %TRUE if no error, %FALSE otherwise, setting @error to the error
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_client_add_application_proxy:
+ * @client: a #GSocketClient
+ * @protocol: The proxy protocol
  *
- * If the socket is in blocking mode the call will block until there is
- * space for the data in the socket queue. If there is no space available
- * and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
- * will be returned. To be notified when space is available, wait for the
- * %G_IO_OUT condition. Note though that you may still receive
- * %G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
- * notified of a %G_IO_OUT condition. (On Windows in particular, this is
- * very common due to the way the underlying APIs work.)
+ * Enable proxy protocols to be handled by the application. When the
+ * indicated proxy protocol is returned by the #GProxyResolver,
+ * #GSocketClient will consider this protocol as supported but will
+ * not try to find a #GProxy instance to handle handshaking. The
+ * application must check for this case by calling
+ * g_socket_connection_get_remote_address() on the returned
+ * #GSocketConnection, and seeing if it's a #GProxyAddress of the
+ * appropriate type, to determine whether or not it needs to handle
+ * the proxy handshaking itself.
  *
- * On error -1 is returned and @error is set accordingly.
+ * This should be used for proxy protocols that are dialects of
+ * another protocol such as HTTP proxy. It also allows cohabitation of
+ * proxy protocols that are reused between protocols. A good example
+ * is HTTP. It can be used to proxy HTTP, FTP and Gopher and can also
+ * be use as generic socket proxy through the HTTP CONNECT method.
  *
- * Returns: Number of bytes written (which may be less than @size), or -1
- * on error
- * Since: 2.22
+ * When the proxy is detected as being an application proxy, TLS handshake
+ * will be skipped. This is required to let the application do the proxy
+ * specific handshake.
  */
 
 
 /**
- * g_socket_send_messages:
- * @socket: a #GSocket
- * @messages: (array length=num_messages): an array of #GOutputMessage structs
- * @num_messages: the number of elements in @messages
- * @flags: an int containing #GSocketMsgFlags flags
- * @cancellable: (nullable): a %GCancellable or %NULL
+ * g_socket_client_connect:
+ * @client: a #GSocketClient.
+ * @connectable: a #GSocketConnectable specifying the remote address.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
  * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Send multiple data messages from @socket in one go.  This is the most
- * complicated and fully-featured version of this call. For easier use, see
- * g_socket_send(), g_socket_send_to(), and g_socket_send_message().
+ * Tries to resolve the @connectable and make a network connection to it.
  *
- * @messages must point to an array of #GOutputMessage structs and
- * @num_messages must be the length of this array. Each #GOutputMessage
- * contains an address to send the data to, and a pointer to an array of
- * #GOutputVector structs to describe the buffers that the data to be sent
- * for each message will be gathered from. Using multiple #GOutputVectors is
- * more memory-efficient than manually copying data from multiple sources
- * into a single buffer, and more network-efficient than making multiple
- * calls to g_socket_send(). Sending multiple messages in one go avoids the
- * overhead of making a lot of syscalls in scenarios where a lot of data
- * packets need to be sent (e.g. high-bandwidth video streaming over RTP/UDP),
- * or where the same data needs to be sent to multiple recipients.
+ * Upon a successful connection, a new #GSocketConnection is constructed
+ * and returned.  The caller owns this new object and must drop their
+ * reference to it when finished with it.
  *
- * @flags modify how the message is sent. The commonly available arguments
- * for this are available in the #GSocketMsgFlags enum, but the
- * values there are the same as the system values, and the flags
- * are passed in as-is, so you can pass in system-specific flags too.
+ * The type of the #GSocketConnection object returned depends on the type of
+ * the underlying socket that is used. For instance, for a TCP/IP connection
+ * it will be a #GTcpConnection.
  *
- * If the socket is in blocking mode the call will block until there is
- * space for all the data in the socket queue. If there is no space available
- * and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
- * will be returned if no data was written at all, otherwise the number of
- * messages sent will be returned. To be notified when space is available,
- * wait for the %G_IO_OUT condition. Note though that you may still receive
- * %G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
- * notified of a %G_IO_OUT condition. (On Windows in particular, this is
- * very common due to the way the underlying APIs work.)
+ * The socket created will be the same family as the address that the
+ * @connectable resolves to, unless family is set with g_socket_client_set_family()
+ * or indirectly via g_socket_client_set_local_address(). The socket type
+ * defaults to %G_SOCKET_TYPE_STREAM but can be set with
+ * g_socket_client_set_socket_type().
  *
- * On error -1 is returned and @error is set accordingly. An error will only
- * be returned if zero messages could be sent; otherwise the number of messages
- * successfully sent before the error will be returned.
+ * If a local address is specified with g_socket_client_set_local_address() the
+ * socket will be bound to this address before connecting.
  *
- * Returns: number of messages sent, or -1 on error. Note that the number of
- *     messages sent may be smaller than @num_messages if the socket is
- *     non-blocking or if @num_messages was larger than UIO_MAXIOV (1024),
- *     in which case the caller may re-try to send the remaining messages.
- * Since: 2.44
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_send_to:
- * @socket: a #GSocket
- * @address: (nullable): a #GSocketAddress, or %NULL
- * @buffer: (array length=size) (element-type guint8): the buffer
- *     containing the data to send.
- * @size: the number of bytes to send
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_socket_client_connect_async:
+ * @client: a #GSocketClient
+ * @connectable: a #GSocketConnectable specifying the remote address.
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
- * Tries to send @size bytes from @buffer to @address. If @address is
- * %NULL then the message is sent to the default receiver (set by
- * g_socket_connect()).
+ * This is the asynchronous version of g_socket_client_connect().
  *
- * See g_socket_send() for additional information.
+ * When the operation is finished @callback will be
+ * called. You can then call g_socket_client_connect_finish() to get
+ * the result of the operation.
  *
- * Returns: Number of bytes written (which may be less than @size), or -1
- * on error
  * Since: 2.22
  */
 
 
 /**
- * g_socket_send_with_blocking:
- * @socket: a #GSocket
- * @buffer: (array length=size) (element-type guint8): the buffer
- *     containing the data to send.
- * @size: the number of bytes to send
- * @blocking: whether to do blocking or non-blocking I/O
- * @cancellable: (nullable): a %GCancellable or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_socket_client_connect_finish:
+ * @client: a #GSocketClient.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * This behaves exactly the same as g_socket_send(), except that
- * the choice of blocking or non-blocking behavior is determined by
- * the @blocking argument rather than by @socket's properties.
+ * Finishes an async connect operation. See g_socket_client_connect_async()
  *
- * Returns: Number of bytes written (which may be less than @size), or -1
- * on error
- * Since: 2.26
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_service_is_active:
- * @service: a #GSocketService
+ * g_socket_client_connect_to_host:
+ * @client: a #GSocketClient
+ * @host_and_port: the name and optionally port of the host to connect to
+ * @default_port: the default port to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a pointer to a #GError, or %NULL
  *
- * Check whether the service is active or not. An active
- * service will accept new clients that connect, while
- * a non-active service will let connecting clients queue
- * up until the service is started.
+ * This is a helper function for g_socket_client_connect().
  *
- * Returns: %TRUE if the service is active, %FALSE otherwise
+ * Attempts to create a TCP connection to the named host.
+ *
+ * @host_and_port may be in any of a number of recognized formats; an IPv6
+ * address, an IPv4 address, or a domain name (in which case a DNS
+ * lookup is performed).  Quoting with [] is supported for all address
+ * types.  A port override may be specified in the usual way with a
+ * colon.  Ports may be given as decimal numbers or symbolic names (in
+ * which case an /etc/services lookup is performed).
+ *
+ * If no port override is given in @host_and_port then @default_port will be
+ * used as the port number to connect to.
+ *
+ * In general, @host_and_port is expected to be provided by the user (allowing
+ * them to give the hostname, and a port override if necessary) and
+ * @default_port is expected to be provided by the application.
+ *
+ * In the case that an IP address is given, a single connection
+ * attempt is made.  In the case that a name is given, multiple
+ * connection attempts may be made, in turn and according to the
+ * number of address records in DNS, until a connection succeeds.
+ *
+ * Upon a successful connection, a new #GSocketConnection is constructed
+ * and returned.  The caller owns this new object and must drop their
+ * reference to it when finished with it.
+ *
+ * In the event of any failure (DNS error, service not found, no hosts
+ * connectable) %NULL is returned and @error (if non-%NULL) is set
+ * accordingly.
+ *
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
  * Since: 2.22
  */
 
 
 /**
- * g_socket_service_new:
+ * g_socket_client_connect_to_host_async:
+ * @client: a #GSocketClient
+ * @host_and_port: the name and optionally the port of the host to connect to
+ * @default_port: the default port to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
- * Creates a new #GSocketService with no sockets to listen for.
- * New listeners can be added with e.g. g_socket_listener_add_address()
- * or g_socket_listener_add_inet_port().
+ * This is the asynchronous version of g_socket_client_connect_to_host().
  *
- * New services are created active, there is no need to call
- * g_socket_service_start(), unless g_socket_service_stop() has been
- * called before.
+ * When the operation is finished @callback will be
+ * called. You can then call g_socket_client_connect_to_host_finish() to get
+ * the result of the operation.
  *
- * Returns: a new #GSocketService.
  * Since: 2.22
  */
 
 
 /**
- * g_socket_service_start:
- * @service: a #GSocketService
- *
- * Restarts the service, i.e. start accepting connections
- * from the added sockets when the mainloop runs. This only needs
- * to be called after the service has been stopped from
- * g_socket_service_stop().
+ * g_socket_client_connect_to_host_finish:
+ * @client: a #GSocketClient.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * This call is thread-safe, so it may be called from a thread
- * handling an incoming client request.
+ * Finishes an async connect operation. See g_socket_client_connect_to_host_async()
  *
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
  * Since: 2.22
  */
 
 
 /**
- * g_socket_service_stop:
- * @service: a #GSocketService
+ * g_socket_client_connect_to_service:
+ * @client: a #GSocketConnection
+ * @domain: a domain name
+ * @service: the name of the service to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a pointer to a #GError, or %NULL
  *
- * Stops the service, i.e. stops accepting connections
- * from the added sockets when the mainloop runs.
+ * Attempts to create a TCP connection to a service.
  *
- * This call is thread-safe, so it may be called from a thread
- * handling an incoming client request.
+ * This call looks up the SRV record for @service at @domain for the
+ * "tcp" protocol.  It then attempts to connect, in turn, to each of
+ * the hosts providing the service until either a connection succeeds
+ * or there are no hosts remaining.
  *
- * Note that this only stops accepting new connections; it does not
- * close the listening sockets, and you can call
- * g_socket_service_start() again later to begin listening again. To
- * close the listening sockets, call g_socket_listener_close(). (This
- * will happen automatically when the #GSocketService is finalized.)
+ * Upon a successful connection, a new #GSocketConnection is constructed
+ * and returned.  The caller owns this new object and must drop their
+ * reference to it when finished with it.
  *
- * This must be called before calling g_socket_listener_close() as
- * the socket service will start accepting connections immediately
- * when a new socket is added.
+ * In the event of any failure (DNS error, service not found, no hosts
+ * connectable) %NULL is returned and @error (if non-%NULL) is set
+ * accordingly.
  *
- * Since: 2.22
+ * Returns: (transfer full): a #GSocketConnection if successful, or %NULL on error
  */
 
 
 /**
- * g_socket_set_blocking:
- * @socket: a #GSocket.
- * @blocking: Whether to use blocking I/O or not.
- *
- * Sets the blocking mode of the socket. In blocking mode
- * all operations (which don’t take an explicit blocking parameter) block until
- * they succeed or there is an error. In
- * non-blocking mode all functions return results immediately or
- * with a %G_IO_ERROR_WOULD_BLOCK error.
+ * g_socket_client_connect_to_service_async:
+ * @client: a #GSocketClient
+ * @domain: a domain name
+ * @service: the name of the service to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
- * All sockets are created in blocking mode. However, note that the
- * platform level socket is always non-blocking, and blocking mode
- * is a GSocket level feature.
+ * This is the asynchronous version of
+ * g_socket_client_connect_to_service().
  *
  * Since: 2.22
  */
 
 
 /**
- * g_socket_set_broadcast:
- * @socket: a #GSocket.
- * @broadcast: whether @socket should allow sending to broadcast
- *     addresses
+ * g_socket_client_connect_to_service_finish:
+ * @client: a #GSocketClient.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Sets whether @socket should allow sending to broadcast addresses.
- * This is %FALSE by default.
+ * Finishes an async connect operation. See g_socket_client_connect_to_service_async()
  *
- * Since: 2.32
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_set_keepalive:
- * @socket: a #GSocket.
- * @keepalive: Value for the keepalive flag
+ * g_socket_client_connect_to_uri:
+ * @client: a #GSocketClient
+ * @uri: A network URI
+ * @default_port: the default port to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a pointer to a #GError, or %NULL
  *
- * Sets or unsets the %SO_KEEPALIVE flag on the underlying socket. When
- * this flag is set on a socket, the system will attempt to verify that the
- * remote socket endpoint is still present if a sufficiently long period of
- * time passes with no data being exchanged. If the system is unable to
- * verify the presence of the remote endpoint, it will automatically close
- * the connection.
+ * This is a helper function for g_socket_client_connect().
  *
- * This option is only functional on certain kinds of sockets. (Notably,
- * %G_SOCKET_PROTOCOL_TCP sockets.)
+ * Attempts to create a TCP connection with a network URI.
  *
- * The exact time between pings is system- and protocol-dependent, but will
- * normally be at least two hours. Most commonly, you would set this flag
- * on a server socket if you want to allow clients to remain idle for long
- * periods of time, but also want to ensure that connections are eventually
- * garbage-collected if clients crash or become unreachable.
+ * @uri may be any valid URI containing an "authority" (hostname/port)
+ * component. If a port is not specified in the URI, @default_port
+ * will be used. TLS will be negotiated if #GSocketClient:tls is %TRUE.
+ * (#GSocketClient does not know to automatically assume TLS for
+ * certain URI schemes.)
  *
- * Since: 2.22
+ * Using this rather than g_socket_client_connect() or
+ * g_socket_client_connect_to_host() allows #GSocketClient to
+ * determine when to use application-specific proxy protocols.
+ *
+ * Upon a successful connection, a new #GSocketConnection is constructed
+ * and returned.  The caller owns this new object and must drop their
+ * reference to it when finished with it.
+ *
+ * In the event of any failure (DNS error, service not found, no hosts
+ * connectable) %NULL is returned and @error (if non-%NULL) is set
+ * accordingly.
+ *
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_set_listen_backlog:
- * @socket: a #GSocket.
- * @backlog: the maximum number of pending connections.
+ * g_socket_client_connect_to_uri_async:
+ * @client: a #GSocketClient
+ * @uri: a network uri
+ * @default_port: the default port to connect to
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
- * Sets the maximum number of outstanding connections allowed
- * when listening on this socket. If more clients than this are
- * connecting to the socket and the application is not handling them
- * on time then the new connections will be refused.
+ * This is the asynchronous version of g_socket_client_connect_to_uri().
  *
- * Note that this must be called before g_socket_listen() and has no
- * effect if called after that.
+ * When the operation is finished @callback will be
+ * called. You can then call g_socket_client_connect_to_uri_finish() to get
+ * the result of the operation.
+ *
+ * Since: 2.26
+ */
+
+
+/**
+ * g_socket_client_connect_to_uri_finish:
+ * @client: a #GSocketClient.
+ * @result: a #GAsyncResult.
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
+ *
+ * Finishes an async connect operation. See g_socket_client_connect_to_uri_async()
  *
- * Since: 2.22
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_set_multicast_loopback:
- * @socket: a #GSocket.
- * @loopback: whether @socket should receive messages sent to its
- *   multicast groups from the local host
+ * g_socket_client_get_enable_proxy:
+ * @client: a #GSocketClient.
  *
- * Sets whether outgoing multicast packets will be received by sockets
- * listening on that multicast address on the same host. This is %TRUE
- * by default.
+ * Gets the proxy enable state; see g_socket_client_set_enable_proxy()
  *
- * Since: 2.32
+ * Returns: whether proxying is enabled
+ * Since: 2.26
  */
 
 
 /**
- * g_socket_set_multicast_ttl:
- * @socket: a #GSocket.
- * @ttl: the time-to-live value for all multicast datagrams on @socket
+ * g_socket_client_get_family:
+ * @client: a #GSocketClient.
  *
- * Sets the time-to-live for outgoing multicast datagrams on @socket.
- * By default, this is 1, meaning that multicast packets will not leave
- * the local network.
+ * Gets the socket family of the socket client.
  *
- * Since: 2.32
+ * See g_socket_client_set_family() for details.
+ *
+ * Returns: a #GSocketFamily
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_set_option:
- * @socket: a #GSocket
- * @level: the "API level" of the option (eg, `SOL_SOCKET`)
- * @optname: the "name" of the option (eg, `SO_BROADCAST`)
- * @value: the value to set the option to
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_socket_client_get_local_address:
+ * @client: a #GSocketClient.
  *
- * Sets the value of an integer-valued option on @socket, as with
- * setsockopt(). (If you need to set a non-integer-valued option,
- * you will need to call setsockopt() directly.)
+ * Gets the local address of the socket client.
  *
- * The [<gio/gnetworking.h>][gio-gnetworking.h]
- * header pulls in system headers that will define most of the
- * standard/portable socket options. For unusual socket protocols or
- * platform-dependent options, you may need to include additional
- * headers.
+ * See g_socket_client_set_local_address() for details.
  *
- * Returns: success or failure. On failure, @error will be set, and
- *   the system error value (`errno` or WSAGetLastError()) will still
- *   be set to the result of the setsockopt() call.
- * Since: 2.36
+ * Returns: (transfer none): a #GSocketAddress or %NULL. Do not free.
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_set_timeout:
- * @socket: a #GSocket.
- * @timeout: the timeout for @socket, in seconds, or 0 for none
- *
- * Sets the time in seconds after which I/O operations on @socket will
- * time out if they have not yet completed.
- *
- * On a blocking socket, this means that any blocking #GSocket
- * operation will time out after @timeout seconds of inactivity,
- * returning %G_IO_ERROR_TIMED_OUT.
- *
- * On a non-blocking socket, calls to g_socket_condition_wait() will
- * also fail with %G_IO_ERROR_TIMED_OUT after the given time. Sources
- * created with g_socket_create_source() will trigger after
- * @timeout seconds of inactivity, with the requested condition
- * set, at which point calling g_socket_receive(), g_socket_send(),
- * g_socket_check_connect_result(), etc, will fail with
- * %G_IO_ERROR_TIMED_OUT.
+ * g_socket_client_get_protocol:
+ * @client: a #GSocketClient
  *
- * If @timeout is 0 (the default), operations will never time out
- * on their own.
+ * Gets the protocol name type of the socket client.
  *
- * Note that if an I/O operation is interrupted by a signal, this may
- * cause the timeout to be reset.
+ * See g_socket_client_set_protocol() for details.
  *
- * Since: 2.26
+ * Returns: a #GSocketProtocol
+ * Since: 2.22
  */
 
 
 /**
- * g_socket_set_ttl:
- * @socket: a #GSocket.
- * @ttl: the time-to-live value for all unicast packets on @socket
+ * g_socket_client_get_proxy_resolver:
+ * @client: a #GSocketClient.
  *
- * Sets the time-to-live for outgoing unicast packets on @socket.
- * By default the platform-specific default value is used.
+ * Gets the #GProxyResolver being used by @client. Normally, this will
+ * be the resolver returned by g_proxy_resolver_get_default(), but you
+ * can override it with g_socket_client_set_proxy_resolver().
  *
- * Since: 2.32
+ * Returns: (transfer none): The #GProxyResolver being used by
+ *   @client.
+ * Since: 2.36
  */
 
 
 /**
- * g_socket_shutdown:
- * @socket: a #GSocket
- * @shutdown_read: whether to shut down the read side
- * @shutdown_write: whether to shut down the write side
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Shut down part or all of a full-duplex connection.
- *
- * If @shutdown_read is %TRUE then the receiving side of the connection
- * is shut down, and further reading is disallowed.
- *
- * If @shutdown_write is %TRUE then the sending side of the connection
- * is shut down, and further writing is disallowed.
+ * g_socket_client_get_socket_type:
+ * @client: a #GSocketClient.
  *
- * It is allowed for both @shutdown_read and @shutdown_write to be %TRUE.
+ * Gets the socket type of the socket client.
  *
- * One example where it is useful to shut down only one side of a connection is
- * graceful disconnect for TCP connections where you close the sending side,
- * then wait for the other side to close the connection, thus ensuring that the
- * other side saw all sent data.
+ * See g_socket_client_set_socket_type() for details.
  *
- * Returns: %TRUE on success, %FALSE on error
+ * Returns: a #GSocketFamily
  * Since: 2.22
  */
 
 
 /**
- * g_socket_speaks_ipv4:
- * @socket: a #GSocket
- *
- * Checks if a socket is capable of speaking IPv4.
+ * g_socket_client_get_timeout:
+ * @client: a #GSocketClient
  *
- * IPv4 sockets are capable of speaking IPv4.  On some operating systems
- * and under some combinations of circumstances IPv6 sockets are also
- * capable of speaking IPv4.  See RFC 3493 section 3.7 for more
- * information.
+ * Gets the I/O timeout time for sockets created by @client.
  *
- * No other types of sockets are currently considered as being capable
- * of speaking IPv4.
+ * See g_socket_client_set_timeout() for details.
  *
- * Returns: %TRUE if this socket can be used with IPv4.
- * Since: 2.22
+ * Returns: the timeout in seconds
+ * Since: 2.26
  */
 
 
 /**
- * g_srv_target_copy:
- * @target: a #GSrvTarget
+ * g_socket_client_get_tls:
+ * @client: a #GSocketClient.
  *
- * Copies @target
+ * Gets whether @client creates TLS connections. See
+ * g_socket_client_set_tls() for details.
  *
- * Returns: a copy of @target
- * Since: 2.22
+ * Returns: whether @client uses TLS
+ * Since: 2.28
  */
 
 
 /**
- * g_srv_target_free:
- * @target: a #GSrvTarget
+ * g_socket_client_get_tls_validation_flags:
+ * @client: a #GSocketClient.
  *
- * Frees @target
+ * Gets the TLS validation flags used creating TLS connections via
+ * @client.
  *
- * Since: 2.22
+ * Returns: the TLS validation flags
+ * Since: 2.28
  */
 
 
 /**
- * g_srv_target_get_hostname:
- * @target: a #GSrvTarget
+ * g_socket_client_new:
  *
- * Gets @target's hostname (in ASCII form; if you are going to present
- * this to the user, you should use g_hostname_is_ascii_encoded() to
- * check if it contains encoded Unicode segments, and use
- * g_hostname_to_unicode() to convert it if it does.)
+ * Creates a new #GSocketClient with the default options.
  *
- * Returns: @target's hostname
+ * Returns: a #GSocketClient.
+ *     Free the returned object with g_object_unref().
  * Since: 2.22
  */
 
 
 /**
- * g_srv_target_get_port:
- * @target: a #GSrvTarget
+ * g_socket_client_set_enable_proxy:
+ * @client: a #GSocketClient.
+ * @enable: whether to enable proxies
  *
- * Gets @target's port
+ * Sets whether or not @client attempts to make connections via a
+ * proxy server. When enabled (the default), #GSocketClient will use a
+ * #GProxyResolver to determine if a proxy protocol such as SOCKS is
+ * needed, and automatically do the necessary proxy negotiation.
  *
- * Returns: @target's port
- * Since: 2.22
+ * See also g_socket_client_set_proxy_resolver().
+ *
+ * Since: 2.26
  */
 
 
 /**
- * g_srv_target_get_priority:
- * @target: a #GSrvTarget
+ * g_socket_client_set_family:
+ * @client: a #GSocketClient.
+ * @family: a #GSocketFamily
  *
- * Gets @target's priority. You should not need to look at this;
- * #GResolver already sorts the targets according to the algorithm in
- * RFC 2782.
+ * Sets the socket family of the socket client.
+ * If this is set to something other than %G_SOCKET_FAMILY_INVALID
+ * then the sockets created by this object will be of the specified
+ * family.
+ *
+ * This might be useful for instance if you want to force the local
+ * connection to be an ipv4 socket, even though the address might
+ * be an ipv6 mapped to ipv4 address.
  *
- * Returns: @target's priority
  * Since: 2.22
  */
 
 
 /**
- * g_srv_target_get_weight:
- * @target: a #GSrvTarget
+ * g_socket_client_set_local_address:
+ * @client: a #GSocketClient.
+ * @address: (nullable): a #GSocketAddress, or %NULL
  *
- * Gets @target's weight. You should not need to look at this;
- * #GResolver already sorts the targets according to the algorithm in
- * RFC 2782.
+ * Sets the local address of the socket client.
+ * The sockets created by this object will bound to the
+ * specified address (if not %NULL) before connecting.
+ *
+ * This is useful if you want to ensure that the local
+ * side of the connection is on a specific port, or on
+ * a specific interface.
  *
- * Returns: @target's weight
  * Since: 2.22
  */
 
 
 /**
- * g_srv_target_list_sort: (skip)
- * @targets: a #GList of #GSrvTarget
+ * g_socket_client_set_protocol:
+ * @client: a #GSocketClient.
+ * @protocol: a #GSocketProtocol
  *
- * Sorts @targets in place according to the algorithm in RFC 2782.
+ * Sets the protocol of the socket client.
+ * The sockets created by this object will use of the specified
+ * protocol.
+ *
+ * If @protocol is %0 that means to use the default
+ * protocol for the socket family and type.
  *
- * Returns: (transfer full): the head of the sorted list.
  * Since: 2.22
  */
 
 
 /**
- * g_srv_target_new:
- * @hostname: the host that the service is running on
- * @port: the port that the service is running on
- * @priority: the target's priority
- * @weight: the target's weight
+ * g_socket_client_set_proxy_resolver:
+ * @client: a #GSocketClient.
+ * @proxy_resolver: (nullable): a #GProxyResolver, or %NULL for the
+ *   default.
  *
- * Creates a new #GSrvTarget with the given parameters.
+ * Overrides the #GProxyResolver used by @client. You can call this if
+ * you want to use specific proxies, rather than using the system
+ * default proxy settings.
  *
- * You should not need to use this; normally #GSrvTargets are
- * created by #GResolver.
+ * Note that whether or not the proxy resolver is actually used
+ * depends on the setting of #GSocketClient:enable-proxy, which is not
+ * changed by this function (but which is %TRUE by default)
  *
- * Returns: a new #GSrvTarget.
- * Since: 2.22
+ * Since: 2.36
  */
 
 
 /**
- * g_static_resource_fini:
- * @static_resource: pointer to a static #GStaticResource
+ * g_socket_client_set_socket_type:
+ * @client: a #GSocketClient.
+ * @type: a #GSocketType
  *
- * Finalized a GResource initialized by g_static_resource_init().
+ * Sets the socket type of the socket client.
+ * The sockets created by this object will be of the specified
+ * type.
  *
- * This is normally used by code generated by
- * [glib-compile-resources][glib-compile-resources]
- * and is not typically used by other code.
+ * It doesn't make sense to specify a type of %G_SOCKET_TYPE_DATAGRAM,
+ * as GSocketClient is used for connection oriented services.
  *
- * Since: 2.32
+ * Since: 2.22
  */
 
 
 /**
- * g_static_resource_get_resource:
- * @static_resource: pointer to a static #GStaticResource
+ * g_socket_client_set_timeout:
+ * @client: a #GSocketClient.
+ * @timeout: the timeout
  *
- * Gets the GResource that was registered by a call to g_static_resource_init().
+ * Sets the I/O timeout for sockets created by @client. @timeout is a
+ * time in seconds, or 0 for no timeout (the default).
  *
- * This is normally used by code generated by
- * [glib-compile-resources][glib-compile-resources]
- * and is not typically used by other code.
+ * The timeout value affects the initial connection attempt as well,
+ * so setting this may cause calls to g_socket_client_connect(), etc,
+ * to fail with %G_IO_ERROR_TIMED_OUT.
  *
- * Returns: (transfer none): a #GResource
- * Since: 2.32
+ * Since: 2.26
  */
 
 
 /**
- * g_static_resource_init:
- * @static_resource: pointer to a static #GStaticResource
+ * g_socket_client_set_tls:
+ * @client: a #GSocketClient.
+ * @tls: whether to use TLS
  *
- * Initializes a GResource from static data using a
- * GStaticResource.
+ * Sets whether @client creates TLS (aka SSL) connections. If @tls is
+ * %TRUE, @client will wrap its connections in a #GTlsClientConnection
+ * and perform a TLS handshake when connecting.
  *
- * This is normally used by code generated by
- * [glib-compile-resources][glib-compile-resources]
- * and is not typically used by other code.
+ * Note that since #GSocketClient must return a #GSocketConnection,
+ * but #GTlsClientConnection is not a #GSocketConnection, this
+ * actually wraps the resulting #GTlsClientConnection in a
+ * #GTcpWrapperConnection when returning it. You can use
+ * g_tcp_wrapper_connection_get_base_io_stream() on the return value
+ * to extract the #GTlsClientConnection.
  *
- * Since: 2.32
+ * If you need to modify the behavior of the TLS handshake (eg, by
+ * setting a client-side certificate to use, or connecting to the
+ * #GTlsConnection::accept-certificate signal), you can connect to
+ * @client's #GSocketClient::event signal and wait for it to be
+ * emitted with %G_SOCKET_CLIENT_TLS_HANDSHAKING, which will give you
+ * a chance to see the #GTlsClientConnection before the handshake
+ * starts.
+ *
+ * Since: 2.28
  */
 
 
 /**
- * g_subprocess_communicate:
- * @subprocess: a #GSubprocess
- * @stdin_buf: (nullable): data to send to the stdin of the subprocess, or %NULL
- * @cancellable: a #GCancellable
- * @stdout_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stdout
- * @stderr_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stderr
- * @error: a pointer to a %NULL #GError pointer, or %NULL
- *
- * Communicate with the subprocess until it terminates, and all input
- * and output has been completed.
- *
- * If @stdin_buf is given, the subprocess must have been created with
- * %G_SUBPROCESS_FLAGS_STDIN_PIPE.  The given data is fed to the
- * stdin of the subprocess and the pipe is closed (ie: EOF).
+ * g_socket_client_set_tls_validation_flags:
+ * @client: a #GSocketClient.
+ * @flags: the validation flags
  *
- * At the same time (as not to cause blocking when dealing with large
- * amounts of data), if %G_SUBPROCESS_FLAGS_STDOUT_PIPE or
- * %G_SUBPROCESS_FLAGS_STDERR_PIPE were used, reads from those
- * streams.  The data that was read is returned in @stdout and/or
- * the @stderr.
+ * Sets the TLS validation flags used when creating TLS connections
+ * via @client. The default value is %G_TLS_CERTIFICATE_VALIDATE_ALL.
  *
- * If the subprocess was created with %G_SUBPROCESS_FLAGS_STDOUT_PIPE,
- * @stdout_buf will contain the data read from stdout.  Otherwise, for
- * subprocesses not created with %G_SUBPROCESS_FLAGS_STDOUT_PIPE,
- * @stdout_buf will be set to %NULL.  Similar provisions apply to
- * @stderr_buf and %G_SUBPROCESS_FLAGS_STDERR_PIPE.
+ * Since: 2.28
+ */
+
+
+/**
+ * g_socket_close:
+ * @socket: a #GSocket
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * As usual, any output variable may be given as %NULL to ignore it.
+ * Closes the socket, shutting down any active connection.
  *
- * If you desire the stdout and stderr data to be interleaved, create
- * the subprocess with %G_SUBPROCESS_FLAGS_STDOUT_PIPE and
- * %G_SUBPROCESS_FLAGS_STDERR_MERGE.  The merged result will be returned
- * in @stdout_buf and @stderr_buf will be set to %NULL.
+ * Closing a socket does not wait for all outstanding I/O operations
+ * to finish, so the caller should not rely on them to be guaranteed
+ * to complete even if the close returns with no error.
  *
- * In case of any error (including cancellation), %FALSE will be
- * returned with @error set.  Some or all of the stdin data may have
- * been written.  Any stdout or stderr data that has been read will be
- * discarded. None of the out variables (aside from @error) will have
- * been set to anything in particular and should not be inspected.
+ * Once the socket is closed, all other operations will return
+ * %G_IO_ERROR_CLOSED. Closing a socket multiple times will not
+ * return an error.
  *
- * In the case that %TRUE is returned, the subprocess has exited and the
- * exit status inspection APIs (eg: g_subprocess_get_if_exited(),
- * g_subprocess_get_exit_status()) may be used.
+ * Sockets will be automatically closed when the last reference
+ * is dropped, but you might want to call this function to make sure
+ * resources are released as early as possible.
  *
- * You should not attempt to use any of the subprocess pipes after
- * starting this function, since they may be left in strange states,
- * even if the operation was cancelled.  You should especially not
- * attempt to interact with the pipes while the operation is in progress
- * (either from another thread or if using the asynchronous version).
+ * Beware that due to the way that TCP works, it is possible for
+ * recently-sent data to be lost if either you close a socket while the
+ * %G_IO_IN condition is set, or else if the remote connection tries to
+ * send something to you after you close the socket but before it has
+ * finished reading all of the data you sent. There is no easy generic
+ * way to avoid this problem; the easiest fix is to design the network
+ * protocol such that the client will never send data "out of turn".
+ * Another solution is for the server to half-close the connection by
+ * calling g_socket_shutdown() with only the @shutdown_write flag set,
+ * and then wait for the client to notice this and close its side of the
+ * connection, after which the server can safely call g_socket_close().
+ * (This is what #GTcpConnection does if you call
+ * g_tcp_connection_set_graceful_disconnect(). But of course, this
+ * only works if the client will close its connection after the server
+ * does.)
  *
- * Returns: %TRUE if successful
- * Since: 2.40
+ * Returns: %TRUE on success, %FALSE on error
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_communicate_async:
- * @subprocess: Self
- * @stdin_buf: (nullable): Input data, or %NULL
- * @cancellable: (nullable): Cancellable
- * @callback: Callback
- * @user_data: User data
+ * g_socket_condition_check:
+ * @socket: a #GSocket
+ * @condition: a #GIOCondition mask to check
  *
- * Asynchronous version of g_subprocess_communicate().  Complete
- * invocation with g_subprocess_communicate_finish().
+ * Checks on the readiness of @socket to perform operations.
+ * The operations specified in @condition are checked for and masked
+ * against the currently-satisfied conditions on @socket. The result
+ * is returned.
+ *
+ * Note that on Windows, it is possible for an operation to return
+ * %G_IO_ERROR_WOULD_BLOCK even immediately after
+ * g_socket_condition_check() has claimed that the socket is ready for
+ * writing. Rather than calling g_socket_condition_check() and then
+ * writing to the socket if it succeeds, it is generally better to
+ * simply try writing to the socket right away, and try again later if
+ * the initial attempt returns %G_IO_ERROR_WOULD_BLOCK.
+ *
+ * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in condition;
+ * these conditions will always be set in the output if they are true.
+ *
+ * This call never blocks.
+ *
+ * Returns: the @GIOCondition mask of the current state
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_communicate_finish:
- * @subprocess: Self
- * @result: Result
- * @stdout_buf: (out) (nullable) (optional) (transfer full): Return location for stdout data
- * @stderr_buf: (out) (nullable) (optional) (transfer full): Return location for stderr data
- * @error: Error
+ * g_socket_condition_timed_wait:
+ * @socket: a #GSocket
+ * @condition: a #GIOCondition mask to wait for
+ * @timeout: the maximum time (in microseconds) to wait, or -1
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a #GError pointer, or %NULL
  *
- * Complete an invocation of g_subprocess_communicate_async().
+ * Waits for up to @timeout microseconds for @condition to become true
+ * on @socket. If the condition is met, %TRUE is returned.
+ *
+ * If @cancellable is cancelled before the condition is met, or if
+ * @timeout (or the socket's #GSocket:timeout) is reached before the
+ * condition is met, then %FALSE is returned and @error, if non-%NULL,
+ * is set to the appropriate value (%G_IO_ERROR_CANCELLED or
+ * %G_IO_ERROR_TIMED_OUT).
+ *
+ * If you don't want a timeout, use g_socket_condition_wait().
+ * (Alternatively, you can pass -1 for @timeout.)
+ *
+ * Note that although @timeout is in microseconds for consistency with
+ * other GLib APIs, this function actually only has millisecond
+ * resolution, and the behavior is undefined if @timeout is not an
+ * exact number of milliseconds.
+ *
+ * Returns: %TRUE if the condition was met, %FALSE otherwise
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_communicate_utf8:
- * @subprocess: a #GSubprocess
- * @stdin_buf: (nullable): data to send to the stdin of the subprocess, or %NULL
- * @cancellable: a #GCancellable
- * @stdout_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stdout
- * @stderr_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stderr
- * @error: a pointer to a %NULL #GError pointer, or %NULL
+ * g_socket_condition_wait:
+ * @socket: a #GSocket
+ * @condition: a #GIOCondition mask to wait for
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a #GError pointer, or %NULL
  *
- * Like g_subprocess_communicate(), but validates the output of the
- * process as UTF-8, and returns it as a regular NUL terminated string.
+ * Waits for @condition to become true on @socket. When the condition
+ * is met, %TRUE is returned.
+ *
+ * If @cancellable is cancelled before the condition is met, or if the
+ * socket has a timeout set and it is reached before the condition is
+ * met, then %FALSE is returned and @error, if non-%NULL, is set to
+ * the appropriate value (%G_IO_ERROR_CANCELLED or
+ * %G_IO_ERROR_TIMED_OUT).
+ *
+ * See also g_socket_condition_timed_wait().
+ *
+ * Returns: %TRUE if the condition was met, %FALSE otherwise
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_communicate_utf8_async:
- * @subprocess: Self
- * @stdin_buf: (nullable): Input data, or %NULL
- * @cancellable: Cancellable
- * @callback: Callback
- * @user_data: User data
+ * g_socket_connect:
+ * @socket: a #GSocket.
+ * @address: a #GSocketAddress specifying the remote address.
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
+ *
+ * Connect the socket to the specified remote address.
+ *
+ * For connection oriented socket this generally means we attempt to make
+ * a connection to the @address. For a connection-less socket it sets
+ * the default address for g_socket_send() and discards all incoming datagrams
+ * from other sources.
+ *
+ * Generally connection oriented sockets can only connect once, but
+ * connection-less sockets can connect multiple times to change the
+ * default address.
+ *
+ * If the connect call needs to do network I/O it will block, unless
+ * non-blocking I/O is enabled. Then %G_IO_ERROR_PENDING is returned
+ * and the user can be notified of the connection finishing by waiting
+ * for the G_IO_OUT condition. The result of the connection must then be
+ * checked with g_socket_check_connect_result().
  *
- * Asynchronous version of g_subprocess_communicate_utf8().  Complete
- * invocation with g_subprocess_communicate_utf8_finish().
+ * Returns: %TRUE if connected, %FALSE on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_communicate_utf8_finish:
- * @subprocess: Self
- * @result: Result
- * @stdout_buf: (out) (nullable) (optional) (transfer full): Return location for stdout data
- * @stderr_buf: (out) (nullable) (optional) (transfer full): Return location for stderr data
- * @error: Error
+ * g_socket_connectable_enumerate:
+ * @connectable: a #GSocketConnectable
  *
- * Complete an invocation of g_subprocess_communicate_utf8_async().
+ * Creates a #GSocketAddressEnumerator for @connectable.
+ *
+ * Returns: (transfer full): a new #GSocketAddressEnumerator.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_force_exit:
- * @subprocess: a #GSubprocess
+ * g_socket_connectable_proxy_enumerate:
+ * @connectable: a #GSocketConnectable
  *
- * Use an operating-system specific method to attempt an immediate,
- * forceful termination of the process.  There is no mechanism to
- * determine whether or not the request itself was successful;
- * however, you can use g_subprocess_wait() to monitor the status of
- * the process after calling this function.
+ * Creates a #GSocketAddressEnumerator for @connectable that will
+ * return #GProxyAddresses for addresses that you must connect
+ * to via a proxy.
  *
- * On Unix, this function sends %SIGKILL.
+ * If @connectable does not implement
+ * g_socket_connectable_proxy_enumerate(), this will fall back to
+ * calling g_socket_connectable_enumerate().
  *
- * Since: 2.40
+ * Returns: (transfer full): a new #GSocketAddressEnumerator.
+ * Since: 2.26
  */
 
 
 /**
- * g_subprocess_get_exit_status:
- * @subprocess: a #GSubprocess
- *
- * Check the exit status of the subprocess, given that it exited
- * normally.  This is the value passed to the exit() system call or the
- * return value from main.
+ * g_socket_connectable_to_string:
+ * @connectable: a #GSocketConnectable
  *
- * This is equivalent to the system WEXITSTATUS macro.
+ * Format a #GSocketConnectable as a string. This is a human-readable format for
+ * use in debugging output, and is not a stable serialization format. It is not
+ * suitable for use in user interfaces as it exposes too much information for a
+ * user.
  *
- * It is an error to call this function before g_subprocess_wait() and
- * unless g_subprocess_get_if_exited() returned %TRUE.
+ * If the #GSocketConnectable implementation does not support string formatting,
+ * the implementation’s type name will be returned as a fallback.
  *
- * Returns: the exit status
- * Since: 2.40
+ * Returns: (transfer full): the formatted string
+ * Since: 2.48
  */
 
 
 /**
- * g_subprocess_get_identifier:
- * @subprocess: a #GSubprocess
+ * g_socket_connection_connect:
+ * @connection: a #GSocketConnection
+ * @address: a #GSocketAddress specifying the remote address.
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * On UNIX, returns the process ID as a decimal string.
- * On Windows, returns the result of GetProcessId() also as a string.
+ * Connect @connection to the specified remote address.
+ *
+ * Returns: %TRUE if the connection succeeded, %FALSE on error
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_get_if_exited:
- * @subprocess: a #GSubprocess
+ * g_socket_connection_connect_async:
+ * @connection: a #GSocketConnection
+ * @address: a #GSocketAddress specifying the remote address.
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
- * Check if the given subprocess exited normally (ie: by way of exit()
- * or return from main()).
+ * Asynchronously connect @connection to the specified remote address.
  *
- * This is equivalent to the system WIFEXITED macro.
+ * This clears the #GSocket:blocking flag on @connection's underlying
+ * socket if it is currently set.
  *
- * It is an error to call this function before g_subprocess_wait() has
- * returned.
+ * Use g_socket_connection_connect_finish() to retrieve the result.
  *
- * Returns: %TRUE if the case of a normal exit
- * Since: 2.40
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_get_if_signaled:
- * @subprocess: a #GSubprocess
- *
- * Check if the given subprocess terminated in response to a signal.
- *
- * This is equivalent to the system WIFSIGNALED macro.
+ * g_socket_connection_connect_finish:
+ * @connection: a #GSocketConnection
+ * @result: the #GAsyncResult
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * It is an error to call this function before g_subprocess_wait() has
- * returned.
+ * Gets the result of a g_socket_connection_connect_async() call.
  *
- * Returns: %TRUE if the case of termination due to a signal
- * Since: 2.40
+ * Returns: %TRUE if the connection succeeded, %FALSE on error
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_get_status:
- * @subprocess: a #GSubprocess
- *
- * Gets the raw status code of the process, as from waitpid().
- *
- * This value has no particular meaning, but it can be used with the
- * macros defined by the system headers such as WIFEXITED.  It can also
- * be used with g_spawn_check_exit_status().
- *
- * It is more likely that you want to use g_subprocess_get_if_exited()
- * followed by g_subprocess_get_exit_status().
+ * g_socket_connection_factory_create_connection:
+ * @socket: a #GSocket
  *
- * It is an error to call this function before g_subprocess_wait() has
- * returned.
+ * Creates a #GSocketConnection subclass of the right type for
+ * @socket.
  *
- * Returns: the (meaningless) waitpid() exit status from the kernel
- * Since: 2.40
+ * Returns: (transfer full): a #GSocketConnection
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_get_stderr_pipe:
- * @subprocess: a #GSubprocess
+ * g_socket_connection_factory_lookup_type:
+ * @family: a #GSocketFamily
+ * @type: a #GSocketType
+ * @protocol_id: a protocol id
  *
- * Gets the #GInputStream from which to read the stderr output of
- * @subprocess.
+ * Looks up the #GType to be used when creating socket connections on
+ * sockets with the specified @family, @type and @protocol_id.
  *
- * The process must have been created with
- * %G_SUBPROCESS_FLAGS_STDERR_PIPE.
+ * If no type is registered, the #GSocketConnection base type is returned.
  *
- * Returns: (transfer none): the stderr pipe
- * Since: 2.40
+ * Returns: a #GType
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_get_stdin_pipe:
- * @subprocess: a #GSubprocess
+ * g_socket_connection_factory_register_type:
+ * @g_type: a #GType, inheriting from %G_TYPE_SOCKET_CONNECTION
+ * @family: a #GSocketFamily
+ * @type: a #GSocketType
+ * @protocol: a protocol id
  *
- * Gets the #GOutputStream that you can write to in order to give data
- * to the stdin of @subprocess.
+ * Looks up the #GType to be used when creating socket connections on
+ * sockets with the specified @family, @type and @protocol.
  *
- * The process must have been created with
- * %G_SUBPROCESS_FLAGS_STDIN_PIPE.
+ * If no type is registered, the #GSocketConnection base type is returned.
  *
- * Returns: (transfer none): the stdout pipe
- * Since: 2.40
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_get_stdout_pipe:
- * @subprocess: a #GSubprocess
- *
- * Gets the #GInputStream from which to read the stdout output of
- * @subprocess.
+ * g_socket_connection_get_local_address:
+ * @connection: a #GSocketConnection
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * The process must have been created with
- * %G_SUBPROCESS_FLAGS_STDOUT_PIPE.
+ * Try to get the local address of a socket connection.
  *
- * Returns: (transfer none): the stdout pipe
- * Since: 2.40
+ * Returns: (transfer full): a #GSocketAddress or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_get_successful:
- * @subprocess: a #GSubprocess
+ * g_socket_connection_get_remote_address:
+ * @connection: a #GSocketConnection
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Checks if the process was "successful".  A process is considered
- * successful if it exited cleanly with an exit status of 0, either by
- * way of the exit() system call or return from main().
+ * Try to get the remote address of a socket connection.
  *
- * It is an error to call this function before g_subprocess_wait() has
- * returned.
+ * Since GLib 2.40, when used with g_socket_client_connect() or
+ * g_socket_client_connect_async(), during emission of
+ * %G_SOCKET_CLIENT_CONNECTING, this function will return the remote
+ * address that will be used for the connection.  This allows
+ * applications to print e.g. "Connecting to example.com
+ * (10.42.77.3)...".
  *
- * Returns: %TRUE if the process exited cleanly with a exit status of 0
- * Since: 2.40
+ * Returns: (transfer full): a #GSocketAddress or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_get_term_sig:
- * @subprocess: a #GSubprocess
- *
- * Get the signal number that caused the subprocess to terminate, given
- * that it terminated due to a signal.
- *
- * This is equivalent to the system WTERMSIG macro.
+ * g_socket_connection_get_socket:
+ * @connection: a #GSocketConnection
  *
- * It is an error to call this function before g_subprocess_wait() and
- * unless g_subprocess_get_if_signaled() returned %TRUE.
+ * Gets the underlying #GSocket object of the connection.
+ * This can be useful if you want to do something unusual on it
+ * not supported by the #GSocketConnection APIs.
  *
- * Returns: the signal causing termination
- * Since: 2.40
+ * Returns: (transfer none): a #GSocket or %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_getenv:
- * @self: a #GSubprocess
- * @variable: (type filename): the environment variable to get
- *
- * Returns the value of the environment variable @variable in the
- * environment of processes launched from this launcher.
+ * g_socket_connection_is_connected:
+ * @connection: a #GSocketConnection
  *
- * On UNIX, the returned string can be an arbitrary byte string.
- * On Windows, it will be UTF-8.
+ * Checks if @connection is connected. This is equivalent to calling
+ * g_socket_is_connected() on @connection's underlying #GSocket.
  *
- * Returns: (type filename): the value of the environment variable,
- *     %NULL if unset
- * Since: 2.40
+ * Returns: whether @connection is connected
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_launcher_new:
- * @flags: #GSubprocessFlags
+ * g_socket_control_message_deserialize:
+ * @level: a socket level
+ * @type: a socket control message type for the given @level
+ * @size: the size of the data in bytes
+ * @data: (array length=size) (element-type guint8): pointer to the message data
  *
- * Creates a new #GSubprocessLauncher.
+ * Tries to deserialize a socket control message of a given
+ * @level and @type. This will ask all known (to GType) subclasses
+ * of #GSocketControlMessage if they can understand this kind
+ * of message and if so deserialize it into a #GSocketControlMessage.
  *
- * The launcher is created with the default options.  A copy of the
- * environment of the calling process is made at the time of this call
- * and will be used as the environment that the process is launched in.
+ * If there is no implementation for this kind of control message, %NULL
+ * will be returned.
  *
- * Since: 2.40
+ * Returns: (transfer full): the deserialized message or %NULL
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_set_child_setup: (skip)
- * @self: a #GSubprocessLauncher
- * @child_setup: a #GSpawnChildSetupFunc to use as the child setup function
- * @user_data: user data for @child_setup
- * @destroy_notify: a #GDestroyNotify for @user_data
+ * g_socket_control_message_get_level:
+ * @message: a #GSocketControlMessage
  *
- * Sets up a child setup function.
+ * Returns the "level" (i.e. the originating protocol) of the control message.
+ * This is often SOL_SOCKET.
  *
- * The child setup function will be called after fork() but before
- * exec() on the child's side.
+ * Returns: an integer describing the level
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_control_message_get_msg_type:
+ * @message: a #GSocketControlMessage
  *
- * @destroy_notify will not be automatically called on the child's side
- * of the fork().  It will only be called when the last reference on the
- * #GSubprocessLauncher is dropped or when a new child setup function is
- * given.
+ * Returns the protocol specific type of the control message.
+ * For instance, for UNIX fd passing this would be SCM_RIGHTS.
  *
- * %NULL can be given as @child_setup to disable the functionality.
+ * Returns: an integer describing the type of control message
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_control_message_get_size:
+ * @message: a #GSocketControlMessage
  *
- * Child setup functions are only available on UNIX.
+ * Returns the space required for the control message, not including
+ * headers or alignment.
  *
- * Since: 2.40
+ * Returns: The number of bytes required.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_set_cwd:
- * @self: a #GSubprocess
- * @cwd: (type filename): the cwd for launched processes
+ * g_socket_control_message_serialize:
+ * @message: a #GSocketControlMessage
+ * @data: (not nullable): A buffer to write data to
  *
- * Sets the current working directory that processes will be launched
- * with.
+ * Converts the data in the message to bytes placed in the
+ * message.
  *
- * By default processes are launched with the current working directory
- * of the launching process at the time of launch.
+ * @data is guaranteed to have enough space to fit the size
+ * returned by g_socket_control_message_get_size() on this
+ * object.
  *
- * Since: 2.40
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_set_environ:
- * @self: a #GSubprocess
- * @env: (array zero-terminated=1) (element-type filename) (transfer none):
- *     the replacement environment
+ * g_socket_create_source: (skip)
+ * @socket: a #GSocket
+ * @condition: a #GIOCondition mask to monitor
+ * @cancellable: (nullable): a %GCancellable or %NULL
  *
- * Replace the entire environment of processes launched from this
- * launcher with the given 'environ' variable.
+ * Creates a #GSource that can be attached to a %GMainContext to monitor
+ * for the availability of the specified @condition on the socket. The #GSource
+ * keeps a reference to the @socket.
  *
- * Typically you will build this variable by using g_listenv() to copy
- * the process 'environ' and using the functions g_environ_setenv(),
- * g_environ_unsetenv(), etc.
+ * The callback on the source is of the #GSocketSourceFunc type.
  *
- * As an alternative, you can use g_subprocess_launcher_setenv(),
- * g_subprocess_launcher_unsetenv(), etc.
+ * It is meaningless to specify %G_IO_ERR or %G_IO_HUP in @condition;
+ * these conditions will always be reported output if they are true.
  *
- * Pass an empty array to set an empty environment. Pass %NULL to inherit the
- * parent process’ environment. As of GLib 2.54, the parent process’ environment
- * will be copied when g_subprocess_launcher_set_environ() is called.
- * Previously, it was copied when the subprocess was executed. This means the
- * copied environment may now be modified (using g_subprocess_launcher_setenv(),
- * etc.) before launching the subprocess.
+ * @cancellable if not %NULL can be used to cancel the source, which will
+ * cause the source to trigger, reporting the current condition (which
+ * is likely 0 unless cancellation happened at the same time as a
+ * condition change). You can check for this in the callback using
+ * g_cancellable_is_cancelled().
  *
- * On UNIX, all strings in this array can be arbitrary byte strings.
- * On Windows, they should be in UTF-8.
+ * If @socket has a timeout set, and it is reached before @condition
+ * occurs, the source will then trigger anyway, reporting %G_IO_IN or
+ * %G_IO_OUT depending on @condition. However, @socket will have been
+ * marked as having had a timeout, and so the next #GSocket I/O method
+ * you call will then fail with a %G_IO_ERROR_TIMED_OUT.
  *
- * Since: 2.40
+ * Returns: (transfer full): a newly allocated %GSource, free with g_source_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_set_flags:
- * @self: a #GSubprocessLauncher
- * @flags: #GSubprocessFlags
- *
- * Sets the flags on the launcher.
+ * g_socket_get_available_bytes:
+ * @socket: a #GSocket
  *
- * The default flags are %G_SUBPROCESS_FLAGS_NONE.
+ * Get the amount of data pending in the OS input buffer, without blocking.
  *
- * You may not set flags that specify conflicting options for how to
- * handle a particular stdio stream (eg: specifying both
- * %G_SUBPROCESS_FLAGS_STDIN_PIPE and
- * %G_SUBPROCESS_FLAGS_STDIN_INHERIT).
+ * If @socket is a UDP or SCTP socket, this will return the size of
+ * just the next packet, even if additional packets are buffered after
+ * that one.
  *
- * You may also not set a flag that conflicts with a previous call to a
- * function like g_subprocess_launcher_set_stdin_file_path() or
- * g_subprocess_launcher_take_stdout_fd().
+ * Note that on Windows, this function is rather inefficient in the
+ * UDP case, and so if you know any plausible upper bound on the size
+ * of the incoming packet, it is better to just do a
+ * g_socket_receive() with a buffer of that size, rather than calling
+ * g_socket_get_available_bytes() first and then doing a receive of
+ * exactly the right size.
  *
- * Since: 2.40
+ * Returns: the number of bytes that can be read from the socket
+ * without blocking or truncating, or -1 on error.
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_launcher_set_stderr_file_path:
- * @self: a #GSubprocessLauncher
- * @path: (type filename) (nullable): a filename or %NULL
- *
- * Sets the file path to use as the stderr for spawned processes.
- *
- * If @path is %NULL then any previously given path is unset.
- *
- * The file will be created or truncated when the process is spawned, as
- * would be the case if using '2>' at the shell.
+ * g_socket_get_blocking:
+ * @socket: a #GSocket.
  *
- * If you want to send both stdout and stderr to the same file then use
- * %G_SUBPROCESS_FLAGS_STDERR_MERGE.
+ * Gets the blocking mode of the socket. For details on blocking I/O,
+ * see g_socket_set_blocking().
  *
- * You may not set a stderr file path if a stderr fd is already set or
- * if the launcher flags contain any flags directing stderr elsewhere.
+ * Returns: %TRUE if blocking I/O is used, %FALSE otherwise.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_get_broadcast:
+ * @socket: a #GSocket.
  *
- * This feature is only available on UNIX.
+ * Gets the broadcast setting on @socket; if %TRUE,
+ * it is possible to send packets to broadcast
+ * addresses.
  *
- * Since: 2.40
+ * Returns: the broadcast setting on @socket
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_launcher_set_stdin_file_path:
- * @self: a #GSubprocessLauncher
- * @path:
+ * g_socket_get_credentials:
+ * @socket: a #GSocket.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Sets the file path to use as the stdin for spawned processes.
+ * Returns the credentials of the foreign process connected to this
+ * socket, if any (e.g. it is only supported for %G_SOCKET_FAMILY_UNIX
+ * sockets).
  *
- * If @path is %NULL then any previously given path is unset.
+ * If this operation isn't supported on the OS, the method fails with
+ * the %G_IO_ERROR_NOT_SUPPORTED error. On Linux this is implemented
+ * by reading the %SO_PEERCRED option on the underlying socket.
  *
- * The file must exist or spawning the process will fail.
+ * Other ways to obtain credentials from a foreign peer includes the
+ * #GUnixCredentialsMessage type and
+ * g_unix_connection_send_credentials() /
+ * g_unix_connection_receive_credentials() functions.
  *
- * You may not set a stdin file path if a stdin fd is already set or if
- * the launcher flags contain any flags directing stdin elsewhere.
+ * Returns: (transfer full): %NULL if @error is set, otherwise a #GCredentials object
+ * that must be freed with g_object_unref().
+ * Since: 2.26
+ */
+
+
+/**
+ * g_socket_get_family:
+ * @socket: a #GSocket.
  *
- * This feature is only available on UNIX.
+ * Gets the socket family of the socket.
  *
- * Since: 2.40
+ * Returns: a #GSocketFamily
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_set_stdout_file_path:
- * @self: a #GSubprocessLauncher
- * @path: (type filename) (nullable): a filename or %NULL
+ * g_socket_get_fd:
+ * @socket: a #GSocket.
  *
- * Sets the file path to use as the stdout for spawned processes.
+ * Returns the underlying OS socket object. On unix this
+ * is a socket file descriptor, and on Windows this is
+ * a Winsock2 SOCKET handle. This may be useful for
+ * doing platform specific or otherwise unusual operations
+ * on the socket.
  *
- * If @path is %NULL then any previously given path is unset.
+ * Returns: the file descriptor of the socket.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_get_keepalive:
+ * @socket: a #GSocket.
  *
- * The file will be created or truncated when the process is spawned, as
- * would be the case if using '>' at the shell.
+ * Gets the keepalive mode of the socket. For details on this,
+ * see g_socket_set_keepalive().
  *
- * You may not set a stdout file path if a stdout fd is already set or
- * if the launcher flags contain any flags directing stdout elsewhere.
+ * Returns: %TRUE if keepalive is active, %FALSE otherwise.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_get_listen_backlog:
+ * @socket: a #GSocket.
  *
- * This feature is only available on UNIX.
+ * Gets the listen backlog setting of the socket. For details on this,
+ * see g_socket_set_listen_backlog().
  *
- * Since: 2.40
+ * Returns: the maximum number of pending connections.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_setenv:
- * @self: a #GSubprocess
- * @variable: (type filename): the environment variable to set,
- *     must not contain '='
- * @value: (type filename): the new value for the variable
- * @overwrite: whether to change the variable if it already exists
- *
- * Sets the environment variable @variable in the environment of
- * processes launched from this launcher.
+ * g_socket_get_local_address:
+ * @socket: a #GSocket.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * On UNIX, both the variable's name and value can be arbitrary byte
- * strings, except that the variable's name cannot contain '='.
- * On Windows, they should be in UTF-8.
+ * Try to get the local address of a bound socket. This is only
+ * useful if the socket has been bound to a local address,
+ * either explicitly or implicitly when connecting.
  *
- * Since: 2.40
+ * Returns: (transfer full): a #GSocketAddress or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_spawn:
- * @self: a #GSubprocessLauncher
- * @error: Error
- * @argv0: Command line arguments
- * @...: Continued arguments, %NULL terminated
+ * g_socket_get_multicast_loopback:
+ * @socket: a #GSocket.
  *
- * Creates a #GSubprocess given a provided varargs list of arguments.
+ * Gets the multicast loopback setting on @socket; if %TRUE (the
+ * default), outgoing multicast packets will be looped back to
+ * multicast listeners on the same host.
  *
- * Since: 2.40
- * Returns: (transfer full): A new #GSubprocess, or %NULL on error (and @error will be set)
+ * Returns: the multicast loopback setting on @socket
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_launcher_spawnv:
- * @self: a #GSubprocessLauncher
- * @argv: (array zero-terminated=1) (element-type filename): Command line arguments
- * @error: Error
+ * g_socket_get_multicast_ttl:
+ * @socket: a #GSocket.
  *
- * Creates a #GSubprocess given a provided array of arguments.
+ * Gets the multicast time-to-live setting on @socket; see
+ * g_socket_set_multicast_ttl() for more details.
  *
- * Since: 2.40
- * Returns: (transfer full): A new #GSubprocess, or %NULL on error (and @error will be set)
+ * Returns: the multicast time-to-live setting on @socket
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_launcher_take_fd:
- * @self: a #GSubprocessLauncher
- * @source_fd: File descriptor in parent process
- * @target_fd: Target descriptor for child process
+ * g_socket_get_option:
+ * @socket: a #GSocket
+ * @level: the "API level" of the option (eg, `SOL_SOCKET`)
+ * @optname: the "name" of the option (eg, `SO_BROADCAST`)
+ * @value: (out): return location for the option value
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Transfer an arbitrary file descriptor from parent process to the
- * child.  This function takes "ownership" of the fd; it will be closed
- * in the parent when @self is freed.
+ * Gets the value of an integer-valued option on @socket, as with
+ * getsockopt(). (If you need to fetch a  non-integer-valued option,
+ * you will need to call getsockopt() directly.)
  *
- * By default, all file descriptors from the parent will be closed.
- * This function allows you to create (for example) a custom pipe() or
- * socketpair() before launching the process, and choose the target
- * descriptor in the child.
+ * The [<gio/gnetworking.h>][gio-gnetworking.h]
+ * header pulls in system headers that will define most of the
+ * standard/portable socket options. For unusual socket protocols or
+ * platform-dependent options, you may need to include additional
+ * headers.
  *
- * An example use case is GNUPG, which has a command line argument
- * --passphrase-fd providing a file descriptor number where it expects
- * the passphrase to be written.
+ * Note that even for socket options that are a single byte in size,
+ * @value is still a pointer to a #gint variable, not a #guchar;
+ * g_socket_get_option() will handle the conversion internally.
+ *
+ * Returns: success or failure. On failure, @error will be set, and
+ *   the system error value (`errno` or WSAGetLastError()) will still
+ *   be set to the result of the getsockopt() call.
+ * Since: 2.36
  */
 
 
 /**
- * g_subprocess_launcher_take_stderr_fd:
- * @self: a #GSubprocessLauncher
- * @fd: a file descriptor, or -1
- *
- * Sets the file descriptor to use as the stderr for spawned processes.
- *
- * If @fd is -1 then any previously given fd is unset.
- *
- * Note that the default behaviour is to pass stderr through to the
- * stderr of the parent process.
- *
- * The passed @fd belongs to the #GSubprocessLauncher.  It will be
- * automatically closed when the launcher is finalized.  The file
- * descriptor will also be closed on the child side when executing the
- * spawned process.
- *
- * You may not set a stderr fd if a stderr file path is already set or
- * if the launcher flags contain any flags directing stderr elsewhere.
+ * g_socket_get_protocol:
+ * @socket: a #GSocket.
  *
- * This feature is only available on UNIX.
+ * Gets the socket protocol id the socket was created with.
+ * In case the protocol is unknown, -1 is returned.
  *
- * Since: 2.40
+ * Returns: a protocol id, or -1 if unknown
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_take_stdin_fd:
- * @self: a #GSubprocessLauncher
- * @fd: a file descriptor, or -1
- *
- * Sets the file descriptor to use as the stdin for spawned processes.
- *
- * If @fd is -1 then any previously given fd is unset.
- *
- * Note that if your intention is to have the stdin of the calling
- * process inherited by the child then %G_SUBPROCESS_FLAGS_STDIN_INHERIT
- * is a better way to go about doing that.
- *
- * The passed @fd is noted but will not be touched in the current
- * process.  It is therefore necessary that it be kept open by the
- * caller until the subprocess is spawned.  The file descriptor will
- * also not be explicitly closed on the child side, so it must be marked
- * O_CLOEXEC if that's what you want.
- *
- * You may not set a stdin fd if a stdin file path is already set or if
- * the launcher flags contain any flags directing stdin elsewhere.
+ * g_socket_get_remote_address:
+ * @socket: a #GSocket.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * This feature is only available on UNIX.
+ * Try to get the remote address of a connected socket. This is only
+ * useful for connection oriented sockets that have been connected.
  *
- * Since: 2.40
+ * Returns: (transfer full): a #GSocketAddress or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_launcher_take_stdout_fd:
- * @self: a #GSubprocessLauncher
- * @fd: a file descriptor, or -1
- *
- * Sets the file descriptor to use as the stdout for spawned processes.
- *
- * If @fd is -1 then any previously given fd is unset.
- *
- * Note that the default behaviour is to pass stdout through to the
- * stdout of the parent process.
+ * g_socket_get_socket_type:
+ * @socket: a #GSocket.
  *
- * The passed @fd is noted but will not be touched in the current
- * process.  It is therefore necessary that it be kept open by the
- * caller until the subprocess is spawned.  The file descriptor will
- * also not be explicitly closed on the child side, so it must be marked
- * O_CLOEXEC if that's what you want.
+ * Gets the socket type of the socket.
  *
- * You may not set a stdout fd if a stdout file path is already set or
- * if the launcher flags contain any flags directing stdout elsewhere.
+ * Returns: a #GSocketType
+ * Since: 2.22
+ */
+
+
+/**
+ * g_socket_get_timeout:
+ * @socket: a #GSocket.
  *
- * This feature is only available on UNIX.
+ * Gets the timeout setting of the socket. For details on this, see
+ * g_socket_set_timeout().
  *
- * Since: 2.40
+ * Returns: the timeout in seconds
+ * Since: 2.26
  */
 
 
 /**
- * g_subprocess_launcher_unsetenv:
- * @self: a #GSubprocess
- * @variable: (type filename): the environment variable to unset,
- *     must not contain '='
- *
- * Removes the environment variable @variable from the environment of
- * processes launched from this launcher.
+ * g_socket_get_ttl:
+ * @socket: a #GSocket.
  *
- * On UNIX, the variable's name can be an arbitrary byte string not
- * containing '='. On Windows, it should be in UTF-8.
+ * Gets the unicast time-to-live setting on @socket; see
+ * g_socket_set_ttl() for more details.
  *
- * Since: 2.40
+ * Returns: the time-to-live setting on @socket
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_new: (skip)
- * @flags: flags that define the behaviour of the subprocess
- * @error: (nullable): return location for an error, or %NULL
- * @argv0: first commandline argument to pass to the subprocess
- * @...: more commandline arguments, followed by %NULL
- *
- * Create a new process with the given flags and varargs argument
- * list.  By default, matching the g_spawn_async() defaults, the
- * child's stdin will be set to the system null device, and
- * stdout/stderr will be inherited from the parent.  You can use
- * @flags to control this behavior.
+ * g_socket_is_closed:
+ * @socket: a #GSocket
  *
- * The argument list must be terminated with %NULL.
+ * Checks whether a socket is closed.
  *
- * Returns: A newly created #GSubprocess, or %NULL on error (and @error
- *   will be set)
- * Since: 2.40
+ * Returns: %TRUE if socket is closed, %FALSE otherwise
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_newv: (rename-to g_subprocess_new)
- * @argv: (array zero-terminated=1) (element-type filename): commandline arguments for the subprocess
- * @flags: flags that define the behaviour of the subprocess
- * @error: (nullable): return location for an error, or %NULL
+ * g_socket_is_connected:
+ * @socket: a #GSocket.
  *
- * Create a new process with the given flags and argument list.
+ * Check whether the socket is connected. This is only useful for
+ * connection-oriented sockets.
  *
- * The argument list is expected to be %NULL-terminated.
+ * If using g_socket_shutdown(), this function will return %TRUE until the
+ * socket has been shut down for reading and writing. If you do a non-blocking
+ * connect, this function will not return %TRUE until after you call
+ * g_socket_check_connect_result().
  *
- * Returns: A newly created #GSubprocess, or %NULL on error (and @error
- *   will be set)
- * Since: 2.40
+ * Returns: %TRUE if socket is connected, %FALSE otherwise.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_send_signal:
- * @subprocess: a #GSubprocess
- * @signal_num: the signal number to send
+ * g_socket_join_multicast_group:
+ * @socket: a #GSocket.
+ * @group: a #GInetAddress specifying the group address to join.
+ * @iface: (nullable): Name of the interface to use, or %NULL
+ * @source_specific: %TRUE if source-specific multicast should be used
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Sends the UNIX signal @signal_num to the subprocess, if it is still
- * running.
+ * Registers @socket to receive multicast messages sent to @group.
+ * @socket must be a %G_SOCKET_TYPE_DATAGRAM socket, and must have
+ * been bound to an appropriate interface and port with
+ * g_socket_bind().
  *
- * This API is race-free.  If the subprocess has terminated, it will not
- * be signalled.
+ * If @iface is %NULL, the system will automatically pick an interface
+ * to bind to based on @group.
  *
- * This API is not available on Windows.
+ * If @source_specific is %TRUE, source-specific multicast as defined
+ * in RFC 4604 is used. Note that on older platforms this may fail
+ * with a %G_IO_ERROR_NOT_SUPPORTED error.
  *
- * Since: 2.40
+ * To bind to a given source-specific multicast address, use
+ * g_socket_join_multicast_group_ssm() instead.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_wait:
- * @subprocess: a #GSubprocess
- * @cancellable: a #GCancellable
- * @error: a #GError
+ * g_socket_join_multicast_group_ssm:
+ * @socket: a #GSocket.
+ * @group: a #GInetAddress specifying the group address to join.
+ * @source_specific: (nullable): a #GInetAddress specifying the
+ * source-specific multicast address or %NULL to ignore.
+ * @iface: (nullable): Name of the interface to use, or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Synchronously wait for the subprocess to terminate.
+ * Registers @socket to receive multicast messages sent to @group.
+ * @socket must be a %G_SOCKET_TYPE_DATAGRAM socket, and must have
+ * been bound to an appropriate interface and port with
+ * g_socket_bind().
  *
- * After the process terminates you can query its exit status with
- * functions such as g_subprocess_get_if_exited() and
- * g_subprocess_get_exit_status().
+ * If @iface is %NULL, the system will automatically pick an interface
+ * to bind to based on @group.
  *
- * This function does not fail in the case of the subprocess having
- * abnormal termination.  See g_subprocess_wait_check() for that.
+ * If @source_specific is not %NULL, use source-specific multicast as
+ * defined in RFC 4604. Note that on older platforms this may fail
+ * with a %G_IO_ERROR_NOT_SUPPORTED error.
  *
- * Cancelling @cancellable doesn't kill the subprocess.  Call
- * g_subprocess_force_exit() if it is desirable.
+ * Note that this function can be called multiple times for the same
+ * @group with different @source_specific in order to receive multicast
+ * packets from more than one source.
  *
- * Returns: %TRUE on success, %FALSE if @cancellable was cancelled
- * Since: 2.40
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.56
  */
 
 
 /**
- * g_subprocess_wait_async:
- * @subprocess: a #GSubprocess
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback to call when the operation is complete
- * @user_data: user_data for @callback
+ * g_socket_leave_multicast_group:
+ * @socket: a #GSocket.
+ * @group: a #GInetAddress specifying the group address to leave.
+ * @iface: (nullable): Interface used
+ * @source_specific: %TRUE if source-specific multicast was used
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Wait for the subprocess to terminate.
+ * Removes @socket from the multicast group defined by @group, @iface,
+ * and @source_specific (which must all have the same values they had
+ * when you joined the group).
  *
- * This is the asynchronous version of g_subprocess_wait().
+ * @socket remains bound to its address and port, and can still receive
+ * unicast messages after calling this.
  *
- * Since: 2.40
+ * To unbind to a given source-specific multicast address, use
+ * g_socket_leave_multicast_group_ssm() instead.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.32
  */
 
 
 /**
- * g_subprocess_wait_check:
- * @subprocess: a #GSubprocess
- * @cancellable: a #GCancellable
- * @error: a #GError
+ * g_socket_leave_multicast_group_ssm:
+ * @socket: a #GSocket.
+ * @group: a #GInetAddress specifying the group address to leave.
+ * @source_specific: (nullable): a #GInetAddress specifying the
+ * source-specific multicast address or %NULL to ignore.
+ * @iface: (nullable): Name of the interface to use, or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Combines g_subprocess_wait() with g_spawn_check_exit_status().
+ * Removes @socket from the multicast group defined by @group, @iface,
+ * and @source_specific (which must all have the same values they had
+ * when you joined the group).
  *
- * Returns: %TRUE on success, %FALSE if process exited abnormally, or
- * @cancellable was cancelled
- * Since: 2.40
+ * @socket remains bound to its address and port, and can still receive
+ * unicast messages after calling this.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.56
  */
 
 
 /**
- * g_subprocess_wait_check_async:
- * @subprocess: a #GSubprocess
- * @cancellable: a #GCancellable, or %NULL
- * @callback: a #GAsyncReadyCallback to call when the operation is complete
- * @user_data: user_data for @callback
+ * g_socket_listen:
+ * @socket: a #GSocket.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Combines g_subprocess_wait_async() with g_spawn_check_exit_status().
+ * Marks the socket as a server socket, i.e. a socket that is used
+ * to accept incoming requests using g_socket_accept().
  *
- * This is the asynchronous version of g_subprocess_wait_check().
+ * Before calling this the socket must be bound to a local address using
+ * g_socket_bind().
  *
- * Since: 2.40
+ * To set the maximum amount of outstanding clients, use
+ * g_socket_set_listen_backlog().
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_wait_check_finish:
- * @subprocess: a #GSubprocess
- * @result: the #GAsyncResult passed to your #GAsyncReadyCallback
- * @error: a pointer to a %NULL #GError, or %NULL
+ * g_socket_listener_accept:
+ * @listener: a #GSocketListener
+ * @source_object: (out) (transfer none) (optional) (nullable): location where #GObject pointer will be stored, or %NULL
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Collects the result of a previous call to
- * g_subprocess_wait_check_async().
+ * Blocks waiting for a client to connect to any of the sockets added
+ * to the listener. Returns a #GSocketConnection for the socket that was
+ * accepted.
  *
- * Returns: %TRUE if successful, or %FALSE with @error set
- * Since: 2.40
+ * If @source_object is not %NULL it will be filled out with the source
+ * object specified when the corresponding socket or address was added
+ * to the listener.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_subprocess_wait_finish:
- * @subprocess: a #GSubprocess
- * @result: the #GAsyncResult passed to your #GAsyncReadyCallback
- * @error: a pointer to a %NULL #GError, or %NULL
+ * g_socket_listener_accept_async:
+ * @listener: a #GSocketListener
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
- * Collects the result of a previous call to
- * g_subprocess_wait_async().
+ * This is the asynchronous version of g_socket_listener_accept().
  *
- * Returns: %TRUE if successful, or %FALSE with @error set
- * Since: 2.40
+ * When the operation is finished @callback will be
+ * called. You can then call g_socket_listener_accept_socket()
+ * to get the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_task_attach_source:
- * @task: a #GTask
- * @source: the source to attach
- * @callback: the callback to invoke when @source triggers
- *
- * 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 [priority][io-priority], and sets @source's
- * callback to @callback, with @task as the callback's `user_data`.
+ * g_socket_listener_accept_finish:
+ * @listener: a #GSocketListener
+ * @result: a #GAsyncResult.
+ * @source_object: (out) (transfer none) (optional) (nullable): Optional #GObject identifying this source
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * This takes a reference on @task until @source is destroyed.
+ * Finishes an async accept operation. See g_socket_listener_accept_async()
  *
- * Since: 2.36
+ * Returns: (transfer full): a #GSocketConnection on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_cancellable:
- * @task: a #GTask
+ * g_socket_listener_accept_socket:
+ * @listener: a #GSocketListener
+ * @source_object: (out) (transfer none) (optional) (nullable): location where #GObject pointer will be stored, or %NULL.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Gets @task's #GCancellable
+ * Blocks waiting for a client to connect to any of the sockets added
+ * to the listener. Returns the #GSocket that was accepted.
  *
- * Returns: (transfer none): @task's #GCancellable
- * Since: 2.36
+ * If you want to accept the high-level #GSocketConnection, not a #GSocket,
+ * which is often the case, then you should use g_socket_listener_accept()
+ * instead.
+ *
+ * If @source_object is not %NULL it will be filled out with the source
+ * object specified when the corresponding socket or address was added
+ * to the listener.
+ *
+ * If @cancellable is not %NULL, then the operation can be cancelled by
+ * triggering the cancellable object from another thread. If the operation
+ * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
+ *
+ * Returns: (transfer full): a #GSocket on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_check_cancellable:
- * @task: the #GTask
+ * g_socket_listener_accept_socket_async:
+ * @listener: a #GSocketListener
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback
+ * @user_data: (closure): user data for the callback
  *
- * Gets @task's check-cancellable flag. See
- * g_task_set_check_cancellable() for more details.
+ * This is the asynchronous version of g_socket_listener_accept_socket().
  *
- * Since: 2.36
+ * When the operation is finished @callback will be
+ * called. You can then call g_socket_listener_accept_socket_finish()
+ * to get the result of the operation.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_completed:
- * @task: a #GTask.
+ * g_socket_listener_accept_socket_finish:
+ * @listener: a #GSocketListener
+ * @result: a #GAsyncResult.
+ * @source_object: (out) (transfer none) (optional) (nullable): Optional #GObject identifying this source
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Gets the value of #GTask:completed. This changes from %FALSE to %TRUE after
- * the task’s callback is invoked, and will return %FALSE if called from inside
- * the callback.
+ * Finishes an async accept operation. See g_socket_listener_accept_socket_async()
  *
- * Returns: %TRUE if the task has completed, %FALSE otherwise.
- * Since: 2.44
+ * Returns: (transfer full): a #GSocket on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_context:
- * @task: a #GTask
+ * g_socket_listener_add_address:
+ * @listener: a #GSocketListener
+ * @address: a #GSocketAddress
+ * @type: a #GSocketType
+ * @protocol: a #GSocketProtocol
+ * @source_object: (nullable): Optional #GObject identifying this source
+ * @effective_address: (out) (optional): location to store the address that was bound to, or %NULL.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Gets the #GMainContext that @task will return its result in (that
- * is, the context that was the
- * [thread-default main context][g-main-context-push-thread-default]
- * at the point when @task was created).
+ * Creates a socket of type @type and protocol @protocol, binds
+ * it to @address and adds it to the set of sockets we're accepting
+ * sockets from.
  *
- * This will always return a non-%NULL value, even if the task's
- * context is the default #GMainContext.
+ * Note that adding an IPv6 address, depending on the platform,
+ * may or may not result in a listener that also accepts IPv4
+ * connections.  For more deterministic behavior, see
+ * g_socket_listener_add_inet_port().
  *
- * Returns: (transfer none): @task's #GMainContext
- * Since: 2.36
+ * @source_object will be passed out in the various calls
+ * to accept to identify this particular source, which is
+ * useful if you're listening on multiple addresses and do
+ * different things depending on what address is connected to.
+ *
+ * If successful and @effective_address is non-%NULL then it will
+ * be set to the address that the binding actually occurred at.  This
+ * is helpful for determining the port number that was used for when
+ * requesting a binding to port 0 (ie: "any port").  This address, if
+ * requested, belongs to the caller and must be freed.
+ *
+ * Call g_socket_listener_close() to stop listening on @address; this will not
+ * be done automatically when you drop your final reference to @listener, as
+ * references may be held internally.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_priority:
- * @task: a #GTask
+ * g_socket_listener_add_any_inet_port:
+ * @listener: a #GSocketListener
+ * @source_object: (nullable): Optional #GObject identifying this source
+ * @error: a #GError location to store the error occurring, or %NULL to
+ * ignore.
  *
- * Gets @task's priority
+ * Listens for TCP connections on any available port number for both
+ * IPv6 and IPv4 (if each is available).
  *
- * Returns: @task's priority
- * Since: 2.36
+ * This is useful if you need to have a socket for incoming connections
+ * but don't care about the specific port number.
+ *
+ * @source_object will be passed out in the various calls
+ * to accept to identify this particular source, which is
+ * useful if you're listening on multiple addresses and do
+ * different things depending on what address is connected to.
+ *
+ * Returns: the port number, or 0 in case of failure.
+ * Since: 2.24
  */
 
 
 /**
- * g_task_get_return_on_cancel:
- * @task: the #GTask
+ * g_socket_listener_add_inet_port:
+ * @listener: a #GSocketListener
+ * @port: an IP port number (non-zero)
+ * @source_object: (nullable): Optional #GObject identifying this source
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Gets @task's return-on-cancel flag. See
- * g_task_set_return_on_cancel() for more details.
+ * Helper function for g_socket_listener_add_address() that
+ * creates a TCP/IP socket listening on IPv4 and IPv6 (if
+ * supported) on the specified port on all interfaces.
  *
- * Since: 2.36
+ * @source_object will be passed out in the various calls
+ * to accept to identify this particular source, which is
+ * useful if you're listening on multiple addresses and do
+ * different things depending on what address is connected to.
+ *
+ * Call g_socket_listener_close() to stop listening on @port; this will not
+ * be done automatically when you drop your final reference to @listener, as
+ * references may be held internally.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_source_object:
- * @task: a #GTask
+ * g_socket_listener_add_socket:
+ * @listener: a #GSocketListener
+ * @socket: a listening #GSocket
+ * @source_object: (nullable): Optional #GObject identifying this source
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Gets the source object from @task. Like
- * g_async_result_get_source_object(), but does not ref the object.
+ * Adds @socket to the set of sockets that we try to accept
+ * new clients from. The socket must be bound to a local
+ * address and listened to.
  *
- * Returns: (transfer none) (nullable) (type GObject): @task's source object, or %NULL
- * Since: 2.36
+ * @source_object will be passed out in the various calls
+ * to accept to identify this particular source, which is
+ * useful if you're listening on multiple addresses and do
+ * different things depending on what address is connected to.
+ *
+ * The @socket will not be automatically closed when the @listener is finalized
+ * unless the listener held the final reference to the socket. Before GLib 2.42,
+ * the @socket was automatically closed on finalization of the @listener, even
+ * if references to it were held elsewhere.
+ *
+ * Returns: %TRUE on success, %FALSE on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_source_tag:
- * @task: a #GTask
+ * g_socket_listener_close:
+ * @listener: a #GSocketListener
  *
- * Gets @task's source tag. See g_task_set_source_tag().
+ * Closes all the sockets in the listener.
  *
- * Returns: (transfer none): @task's source tag
- * Since: 2.36
+ * Since: 2.22
  */
 
 
 /**
- * g_task_get_task_data:
- * @task: a #GTask
+ * g_socket_listener_new:
  *
- * Gets @task's `task_data`.
+ * Creates a new #GSocketListener with no sockets to listen for.
+ * New listeners can be added with e.g. g_socket_listener_add_address()
+ * or g_socket_listener_add_inet_port().
  *
- * Returns: (transfer none): @task's `task_data`.
- * Since: 2.36
+ * Returns: a new #GSocketListener.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_had_error:
- * @task: a #GTask.
+ * g_socket_listener_set_backlog:
+ * @listener: a #GSocketListener
+ * @listen_backlog: an integer
  *
- * Tests if @task resulted in an error.
+ * Sets the listen backlog on the sockets in the listener.
  *
- * Returns: %TRUE if the task resulted in an error, %FALSE otherwise.
- * Since: 2.36
+ * See g_socket_set_listen_backlog() for details
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_task_is_valid:
- * @result: (type Gio.AsyncResult): A #GAsyncResult
- * @source_object: (nullable) (type GObject): the source object
- *   expected to be associated with the task
+ * g_socket_new:
+ * @family: the socket family to use, e.g. %G_SOCKET_FAMILY_IPV4.
+ * @type: the socket type to use.
+ * @protocol: the id of the protocol to use, or 0 for default.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * 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.
+ * Creates a new #GSocket with the defined family, type and protocol.
+ * If @protocol is 0 (%G_SOCKET_PROTOCOL_DEFAULT) the default protocol type
+ * for the family and type is used.
  *
- * Returns: %TRUE if @result and @source_object are valid, %FALSE
- * if not
- * Since: 2.36
+ * The @protocol is a family and type specific int that specifies what
+ * kind of protocol to use. #GSocketProtocol lists several common ones.
+ * Many families only support one protocol, and use 0 for this, others
+ * support several and using 0 means to use the default protocol for
+ * the family and type.
+ *
+ * The protocol id is passed directly to the operating
+ * system, so you can use protocols not listed in #GSocketProtocol if you
+ * know the protocol number used for it.
+ *
+ * Returns: a #GSocket or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_task_new:
- * @source_object: (nullable) (type GObject): the #GObject that owns
- *   this task, or %NULL.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @callback_data: (closure): user data passed to @callback.
+ * g_socket_new_from_fd:
+ * @fd: a native socket file descriptor.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Creates a #GTask acting on @source_object, which will eventually be
- * used to invoke @callback in the current
- * [thread-default main context][g-main-context-push-thread-default].
+ * Creates a new #GSocket from a native file descriptor
+ * or winsock SOCKET handle.
  *
- * Call this in the "start" 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().
+ * This reads all the settings from the file descriptor so that
+ * all properties should work. Note that the file descriptor
+ * will be set to non-blocking mode, independent on the blocking
+ * mode of the #GSocket.
  *
- * 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.
+ * On success, the returned #GSocket takes ownership of @fd. On failure, the
+ * caller must close @fd themselves.
  *
- * Returns: a #GTask.
- * Since: 2.36
+ * Since GLib 2.46, it is no longer a fatal error to call this on a non-socket
+ * descriptor.  Instead, a GError will be set with code %G_IO_ERROR_FAILED
+ *
+ * Returns: a #GSocket or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.22
  */
 
 
 /**
- * g_task_propagate_boolean:
- * @task: a #GTask.
- * @error: return location for a #GError
+ * g_socket_receive:
+ * @socket: a #GSocket
+ * @buffer: (array length=size) (element-type guint8): a buffer to
+ *     read data into (which should be at least @size bytes long).
+ * @size: the number of bytes you want to read from the socket
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Gets the result of @task as a #gboolean.
+ * Receive data (up to @size bytes) from a socket. This is mainly used by
+ * connection-oriented sockets; it is identical to g_socket_receive_from()
+ * with @address set to %NULL.
  *
- * If the task resulted in an error, or was cancelled, then this will
- * instead return %FALSE and set @error.
+ * For %G_SOCKET_TYPE_DATAGRAM and %G_SOCKET_TYPE_SEQPACKET sockets,
+ * g_socket_receive() will always read either 0 or 1 complete messages from
+ * the socket. If the received message is too large to fit in @buffer, then
+ * the data beyond @size bytes will be discarded, without any explicit
+ * indication that this has occurred.
  *
- * Since this method transfers ownership of the return value (or
- * error) to the caller, you may only call it once.
+ * For %G_SOCKET_TYPE_STREAM sockets, g_socket_receive() can return any
+ * number of bytes, up to @size. If more than @size bytes have been
+ * received, the additional data will be returned in future calls to
+ * g_socket_receive().
  *
- * Returns: the task result, or %FALSE on error
- * Since: 2.36
+ * If the socket is in blocking mode the call will block until there
+ * is some data to receive, the connection is closed, or there is an
+ * error. If there is no data available and the socket is in
+ * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be
+ * returned. To be notified when data is available, wait for the
+ * %G_IO_IN condition.
+ *
+ * On error -1 is returned and @error is set accordingly.
+ *
+ * Returns: Number of bytes read, or 0 if the connection was closed by
+ * the peer, or -1 on error
+ * Since: 2.22
  */
 
 
 /**
- * g_task_propagate_int:
- * @task: a #GTask.
- * @error: return location for a #GError
+ * g_socket_receive_from:
+ * @socket: a #GSocket
+ * @address: (out) (optional): a pointer to a #GSocketAddress
+ *     pointer, or %NULL
+ * @buffer: (array length=size) (element-type guint8): a buffer to
+ *     read data into (which should be at least @size bytes long).
+ * @size: the number of bytes you want to read from the socket
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Gets the result of @task as an integer (#gssize).
+ * Receive data (up to @size bytes) from a socket.
  *
- * If the task resulted in an error, or was cancelled, then this will
- * instead return -1 and set @error.
+ * If @address is non-%NULL then @address will be set equal to the
+ * source address of the received packet.
+ * @address is owned by the caller.
  *
- * Since this method transfers ownership of the return value (or
- * error) to the caller, you may only call it once.
+ * See g_socket_receive() for additional information.
  *
- * Returns: the task result, or -1 on error
- * Since: 2.36
+ * Returns: Number of bytes read, or 0 if the connection was closed by
+ * the peer, or -1 on error
+ * Since: 2.22
  */
 
 
 /**
- * g_task_propagate_pointer:
- * @task: a #GTask
- * @error: return location for a #GError
+ * g_socket_receive_message:
+ * @socket: a #GSocket
+ * @address: (out) (optional): a pointer to a #GSocketAddress
+ *     pointer, or %NULL
+ * @vectors: (array length=num_vectors): an array of #GInputVector structs
+ * @num_vectors: the number of elements in @vectors, or -1
+ * @messages: (array length=num_messages) (out) (optional) (nullable): a pointer
+ *    which may be filled with an array of #GSocketControlMessages, or %NULL
+ * @num_messages: (out): a pointer which will be filled with the number of
+ *    elements in @messages, or %NULL
+ * @flags: (inout): a pointer to an int containing #GSocketMsgFlags flags
+ * @cancellable: a %GCancellable or %NULL
+ * @error: a #GError pointer, or %NULL
  *
- * Gets the result of @task as a pointer, and transfers ownership
- * of that value to the caller.
+ * Receive data from a socket.  For receiving multiple messages, see
+ * g_socket_receive_messages(); for easier use, see
+ * g_socket_receive() and g_socket_receive_from().
  *
- * If the task resulted in an error, or was cancelled, then this will
- * instead return %NULL and set @error.
+ * If @address is non-%NULL then @address will be set equal to the
+ * source address of the received packet.
+ * @address is owned by the caller.
  *
- * Since this method transfers ownership of the return value (or
- * error) to the caller, you may only call it once.
+ * @vector must point to an array of #GInputVector structs and
+ * @num_vectors must be the length of this array.  These structs
+ * describe the buffers that received data will be scattered into.
+ * If @num_vectors is -1, then @vectors is assumed to be terminated
+ * by a #GInputVector with a %NULL buffer pointer.
  *
- * Returns: (transfer full): the task result, or %NULL on error
- * Since: 2.36
+ * As a special case, if @num_vectors is 0 (in which case, @vectors
+ * may of course be %NULL), then a single byte is received and
+ * discarded. This is to facilitate the common practice of sending a
+ * single '\0' byte for the purposes of transferring ancillary data.
+ *
+ * @messages, if non-%NULL, will be set to point to a newly-allocated
+ * array of #GSocketControlMessage instances or %NULL if no such
+ * messages was received. These correspond to the control messages
+ * received from the kernel, one #GSocketControlMessage per message
+ * from the kernel. This array is %NULL-terminated and must be freed
+ * by the caller using g_free() after calling g_object_unref() on each
+ * element. If @messages is %NULL, any control messages received will
+ * be discarded.
+ *
+ * @num_messages, if non-%NULL, will be set to the number of control
+ * messages received.
+ *
+ * If both @messages and @num_messages are non-%NULL, then
+ * @num_messages gives the number of #GSocketControlMessage instances
+ * in @messages (ie: not including the %NULL terminator).
+ *
+ * @flags is an in/out parameter. The commonly available arguments
+ * for this are available in the #GSocketMsgFlags enum, but the
+ * values there are the same as the system values, and the flags
+ * are passed in as-is, so you can pass in system-specific flags too
+ * (and g_socket_receive_message() may pass system-specific flags out).
+ * Flags passed in to the parameter affect the receive operation; flags returned
+ * out of it are relevant to the specific returned message.
+ *
+ * As with g_socket_receive(), data may be discarded if @socket is
+ * %G_SOCKET_TYPE_DATAGRAM or %G_SOCKET_TYPE_SEQPACKET and you do not
+ * provide enough buffer space to read a complete message. You can pass
+ * %G_SOCKET_MSG_PEEK in @flags to peek at the current message without
+ * removing it from the receive queue, but there is no portable way to find
+ * out the length of the message other than by reading it into a
+ * sufficiently-large buffer.
+ *
+ * If the socket is in blocking mode the call will block until there
+ * is some data to receive, the connection is closed, or there is an
+ * error. If there is no data available and the socket is in
+ * non-blocking mode, a %G_IO_ERROR_WOULD_BLOCK error will be
+ * returned. To be notified when data is available, wait for the
+ * %G_IO_IN condition.
+ *
+ * On error -1 is returned and @error is set accordingly.
+ *
+ * Returns: Number of bytes read, or 0 if the connection was closed by
+ * the peer, or -1 on error
+ * Since: 2.22
  */
 
 
 /**
- * g_task_report_error:
- * @source_object: (nullable) (type GObject): the #GObject that owns
- *   this task, or %NULL.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @callback_data: (closure): user data passed to @callback.
- * @source_tag: an opaque pointer indicating the source of this task
- * @error: (transfer full): error to report
+ * g_socket_receive_messages:
+ * @socket: a #GSocket
+ * @messages: (array length=num_messages): an array of #GInputMessage structs
+ * @num_messages: the number of elements in @messages
+ * @flags: an int containing #GSocketMsgFlags flags for the overall operation
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore
  *
- * 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.
+ * Receive multiple data messages from @socket in one go.  This is the most
+ * complicated and fully-featured version of this call. For easier use, see
+ * g_socket_receive(), g_socket_receive_from(), and g_socket_receive_message().
  *
- * See also g_task_report_new_error().
+ * @messages must point to an array of #GInputMessage structs and
+ * @num_messages must be the length of this array. Each #GInputMessage
+ * contains a pointer to an array of #GInputVector structs describing the
+ * buffers that the data received in each message will be written to. Using
+ * multiple #GInputVectors is more memory-efficient than manually copying data
+ * out of a single buffer to multiple sources, and more system-call-efficient
+ * than making multiple calls to g_socket_receive(), such as in scenarios where
+ * a lot of data packets need to be received (e.g. high-bandwidth video
+ * streaming over RTP/UDP).
  *
- * Since: 2.36
+ * @flags modify how all messages are received. The commonly available
+ * arguments for this are available in the #GSocketMsgFlags enum, but the
+ * values there are the same as the system values, and the flags
+ * are passed in as-is, so you can pass in system-specific flags too. These
+ * flags affect the overall receive operation. Flags affecting individual
+ * messages are returned in #GInputMessage.flags.
+ *
+ * The other members of #GInputMessage are treated as described in its
+ * documentation.
+ *
+ * If #GSocket:blocking is %TRUE the call will block until @num_messages have
+ * been received, or the end of the stream is reached.
+ *
+ * If #GSocket:blocking is %FALSE the call will return up to @num_messages
+ * without blocking, or %G_IO_ERROR_WOULD_BLOCK if no messages are queued in the
+ * operating system to be received.
+ *
+ * In blocking mode, if #GSocket:timeout is positive and is reached before any
+ * messages are received, %G_IO_ERROR_TIMED_OUT is returned, otherwise up to
+ * @num_messages are returned. (Note: This is effectively the
+ * behaviour of `MSG_WAITFORONE` with recvmmsg().)
+ *
+ * To be notified when messages are available, wait for the
+ * %G_IO_IN condition. Note though that you may still receive
+ * %G_IO_ERROR_WOULD_BLOCK from g_socket_receive_messages() even if you were
+ * previously notified of a %G_IO_IN condition.
+ *
+ * If the remote peer closes the connection, any messages queued in the
+ * operating system will be returned, and subsequent calls to
+ * g_socket_receive_messages() will return 0 (with no error set).
+ *
+ * On error -1 is returned and @error is set accordingly. An error will only
+ * be returned if zero messages could be received; otherwise the number of
+ * messages successfully received before the error will be returned.
+ *
+ * Returns: number of messages received, or -1 on error. Note that the number
+ *     of messages received may be smaller than @num_messages if in non-blocking
+ *     mode, if the peer closed the connection, or if @num_messages
+ *     was larger than `UIO_MAXIOV` (1024), in which case the caller may re-try
+ *     to receive the remaining messages.
+ * Since: 2.48
  */
 
 
 /**
- * g_task_report_new_error:
- * @source_object: (nullable) (type GObject): the #GObject that owns
- *   this task, or %NULL.
- * @callback: (scope async): a #GAsyncReadyCallback.
- * @callback_data: (closure): user data passed to @callback.
- * @source_tag: an opaque pointer indicating the source of this task
- * @domain: a #GQuark.
- * @code: an error code.
- * @format: a string with format characters.
- * @...: a list of values to insert into @format.
- *
- * 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.
+ * g_socket_receive_with_blocking:
+ * @socket: a #GSocket
+ * @buffer: (array length=size) (element-type guint8): a buffer to
+ *     read data into (which should be at least @size bytes long).
+ * @size: the number of bytes you want to read from the socket
+ * @blocking: whether to do blocking or non-blocking I/O
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * See also g_task_report_error().
+ * This behaves exactly the same as g_socket_receive(), except that
+ * the choice of blocking or non-blocking behavior is determined by
+ * the @blocking argument rather than by @socket's properties.
  *
- * Since: 2.36
+ * Returns: Number of bytes read, or 0 if the connection was closed by
+ * the peer, or -1 on error
+ * Since: 2.26
  */
 
 
 /**
- * g_task_return_boolean:
- * @task: a #GTask.
- * @result: the #gboolean result of a task function.
+ * g_socket_send:
+ * @socket: a #GSocket
+ * @buffer: (array length=size) (element-type guint8): the buffer
+ *     containing the data to send.
+ * @size: the number of bytes to send
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Sets @task's result to @result and completes the task (see
- * g_task_return_pointer() for more discussion of exactly what this
- * means).
+ * Tries to send @size bytes from @buffer on the socket. This is
+ * mainly used by connection-oriented sockets; it is identical to
+ * g_socket_send_to() with @address set to %NULL.
  *
- * Since: 2.36
+ * If the socket is in blocking mode the call will block until there is
+ * space for the data in the socket queue. If there is no space available
+ * and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
+ * will be returned. To be notified when space is available, wait for the
+ * %G_IO_OUT condition. Note though that you may still receive
+ * %G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
+ * notified of a %G_IO_OUT condition. (On Windows in particular, this is
+ * very common due to the way the underlying APIs work.)
+ *
+ * On error -1 is returned and @error is set accordingly.
+ *
+ * Returns: Number of bytes written (which may be less than @size), or -1
+ * on error
+ * Since: 2.22
  */
 
 
 /**
- * g_task_return_error:
- * @task: a #GTask.
- * @error: (transfer full): the #GError result of a task function.
+ * g_socket_send_message:
+ * @socket: a #GSocket
+ * @address: (nullable): a #GSocketAddress, or %NULL
+ * @vectors: (array length=num_vectors): an array of #GOutputVector structs
+ * @num_vectors: the number of elements in @vectors, or -1
+ * @messages: (array length=num_messages) (nullable): a pointer to an
+ *   array of #GSocketControlMessages, or %NULL.
+ * @num_messages: number of elements in @messages, or -1.
+ * @flags: an int containing #GSocketMsgFlags flags
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * 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).
+ * Send data to @address on @socket.  For sending multiple messages see
+ * g_socket_send_messages(); for easier use, see
+ * g_socket_send() and g_socket_send_to().
  *
- * 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.
+ * If @address is %NULL then the message is sent to the default receiver
+ * (set by g_socket_connect()).
  *
- * See also g_task_return_new_error().
+ * @vectors must point to an array of #GOutputVector structs and
+ * @num_vectors must be the length of this array. (If @num_vectors is -1,
+ * then @vectors is assumed to be terminated by a #GOutputVector with a
+ * %NULL buffer pointer.) The #GOutputVector structs describe the buffers
+ * that the sent data will be gathered from. Using multiple
+ * #GOutputVectors is more memory-efficient than manually copying
+ * data from multiple sources into a single buffer, and more
+ * network-efficient than making multiple calls to g_socket_send().
+ *
+ * @messages, if non-%NULL, is taken to point to an array of @num_messages
+ * #GSocketControlMessage instances. These correspond to the control
+ * messages to be sent on the socket.
+ * If @num_messages is -1 then @messages is treated as a %NULL-terminated
+ * array.
+ *
+ * @flags modify how the message is sent. The commonly available arguments
+ * for this are available in the #GSocketMsgFlags enum, but the
+ * values there are the same as the system values, and the flags
+ * are passed in as-is, so you can pass in system-specific flags too.
  *
- * Since: 2.36
- */
-
-
-/**
- * g_task_return_error_if_cancelled:
- * @task: a #GTask
+ * If the socket is in blocking mode the call will block until there is
+ * space for the data in the socket queue. If there is no space available
+ * and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
+ * will be returned. To be notified when space is available, wait for the
+ * %G_IO_OUT condition. Note though that you may still receive
+ * %G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
+ * notified of a %G_IO_OUT condition. (On Windows in particular, this is
+ * very common due to the way the underlying APIs work.)
  *
- * 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).
+ * On error -1 is returned and @error is set accordingly.
  *
- * Returns: %TRUE if @task has been cancelled, %FALSE if not
- * Since: 2.36
+ * Returns: Number of bytes written (which may be less than @size), or -1
+ * on error
+ * Since: 2.22
  */
 
 
 /**
- * g_task_return_int:
- * @task: a #GTask.
- * @result: the integer (#gssize) result of a task function.
+ * g_socket_send_messages:
+ * @socket: a #GSocket
+ * @messages: (array length=num_messages): an array of #GOutputMessage structs
+ * @num_messages: the number of elements in @messages
+ * @flags: an int containing #GSocketMsgFlags flags
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Sets @task's result to @result and completes the task (see
- * g_task_return_pointer() for more discussion of exactly what this
- * means).
+ * Send multiple data messages from @socket in one go.  This is the most
+ * complicated and fully-featured version of this call. For easier use, see
+ * g_socket_send(), g_socket_send_to(), and g_socket_send_message().
  *
- * Since: 2.36
- */
-
-
-/**
- * g_task_return_new_error:
- * @task: a #GTask.
- * @domain: a #GQuark.
- * @code: an error code.
- * @format: a string with format characters.
- * @...: a list of values to insert into @format.
+ * @messages must point to an array of #GOutputMessage structs and
+ * @num_messages must be the length of this array. Each #GOutputMessage
+ * contains an address to send the data to, and a pointer to an array of
+ * #GOutputVector structs to describe the buffers that the data to be sent
+ * for each message will be gathered from. Using multiple #GOutputVectors is
+ * more memory-efficient than manually copying data from multiple sources
+ * into a single buffer, and more network-efficient than making multiple
+ * calls to g_socket_send(). Sending multiple messages in one go avoids the
+ * overhead of making a lot of syscalls in scenarios where a lot of data
+ * packets need to be sent (e.g. high-bandwidth video streaming over RTP/UDP),
+ * or where the same data needs to be sent to multiple recipients.
  *
- * 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).
+ * @flags modify how the message is sent. The commonly available arguments
+ * for this are available in the #GSocketMsgFlags enum, but the
+ * values there are the same as the system values, and the flags
+ * are passed in as-is, so you can pass in system-specific flags too.
  *
- * See also g_task_return_error().
+ * If the socket is in blocking mode the call will block until there is
+ * space for all the data in the socket queue. If there is no space available
+ * and the socket is in non-blocking mode a %G_IO_ERROR_WOULD_BLOCK error
+ * will be returned if no data was written at all, otherwise the number of
+ * messages sent will be returned. To be notified when space is available,
+ * wait for the %G_IO_OUT condition. Note though that you may still receive
+ * %G_IO_ERROR_WOULD_BLOCK from g_socket_send() even if you were previously
+ * notified of a %G_IO_OUT condition. (On Windows in particular, this is
+ * very common due to the way the underlying APIs work.)
  *
- * Since: 2.36
+ * On error -1 is returned and @error is set accordingly. An error will only
+ * be returned if zero messages could be sent; otherwise the number of messages
+ * successfully sent before the error will be returned.
+ *
+ * Returns: number of messages sent, or -1 on error. Note that the number of
+ *     messages sent may be smaller than @num_messages if the socket is
+ *     non-blocking or if @num_messages was larger than UIO_MAXIOV (1024),
+ *     in which case the caller may re-try to send the remaining messages.
+ * Since: 2.44
  */
 
 
 /**
- * g_task_return_pointer:
- * @task: a #GTask
- * @result: (nullable) (transfer full): the pointer result of a task
- *     function
- * @result_destroy: (nullable): a #GDestroyNotify function.
- *
- * 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().
+ * g_socket_send_to:
+ * @socket: a #GSocket
+ * @address: (nullable): a #GSocketAddress, or %NULL
+ * @buffer: (array length=size) (element-type guint8): the buffer
+ *     containing the data to send.
+ * @size: the number of bytes to send
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * "Completes the task" 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.
+ * Tries to send @size bytes from @buffer to @address. If @address is
+ * %NULL then the message is sent to the default receiver (set by
+ * g_socket_connect()).
  *
- * 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.
+ * See g_socket_send() for additional information.
  *
- * Since: 2.36
+ * Returns: Number of bytes written (which may be less than @size), or -1
+ * on error
+ * Since: 2.22
  */
 
 
 /**
- * g_task_run_in_thread:
- * @task: a #GTask
- * @task_func: a #GTaskThreadFunc
- *
- * 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.
+ * g_socket_send_with_blocking:
+ * @socket: a #GSocket
+ * @buffer: (array length=size) (element-type guint8): the buffer
+ *     containing the data to send.
+ * @size: the number of bytes to send
+ * @blocking: whether to do blocking or non-blocking I/O
+ * @cancellable: (nullable): a %GCancellable or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Although GLib currently rate-limits the tasks queued via
- * g_task_run_in_thread(), you should not assume that it will always
- * do this. If you have a very large number of tasks to run, but don't
- * want them to all run at once, you should only queue a limited
- * number of them at a time.
+ * This behaves exactly the same as g_socket_send(), except that
+ * the choice of blocking or non-blocking behavior is determined by
+ * the @blocking argument rather than by @socket's properties.
  *
- * Since: 2.36
+ * Returns: Number of bytes written (which may be less than @size), or -1
+ * on error
+ * Since: 2.26
  */
 
 
 /**
- * g_task_run_in_thread_sync:
- * @task: a #GTask
- * @task_func: a #GTaskThreadFunc
- *
- * 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
- * `callback`, but note that even if the task does
- * have a callback, it will not be invoked when @task_func returns.
- * #GTask:completed will be set to %TRUE just before this function returns.
+ * g_socket_service_is_active:
+ * @service: a #GSocketService
  *
- * Although GLib currently rate-limits the tasks queued via
- * g_task_run_in_thread_sync(), you should not assume that it will
- * always do this. If you have a very large number of tasks to run,
- * but don't want them to all run at once, you should only queue a
- * limited number of them at a time.
+ * Check whether the service is active or not. An active
+ * service will accept new clients that connect, while
+ * a non-active service will let connecting clients queue
+ * up until the service is started.
  *
- * Since: 2.36
+ * Returns: %TRUE if the service is active, %FALSE otherwise
+ * Since: 2.22
  */
 
 
 /**
- * g_task_set_check_cancellable:
- * @task: the #GTask
- * @check_cancellable: whether #GTask will check the state of
- *   its #GCancellable for you.
- *
- * 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 "Operation was cancelled" error
- * (%G_IO_ERROR_CANCELLED), regardless of any other error or return
- * value the task may have had.
+ * g_socket_service_new:
  *
- * 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()).
+ * Creates a new #GSocketService with no sockets to listen for.
+ * New listeners can be added with e.g. g_socket_listener_add_address()
+ * or g_socket_listener_add_inet_port().
  *
- * If you are using g_task_set_return_on_cancel() as well, then
- * you must leave check-cancellable set %TRUE.
+ * New services are created active, there is no need to call
+ * g_socket_service_start(), unless g_socket_service_stop() has been
+ * called before.
  *
- * Since: 2.36
+ * Returns: a new #GSocketService.
+ * Since: 2.22
  */
 
 
 /**
- * g_task_set_priority:
- * @task: the #GTask
- * @priority: the [priority][io-priority] of the request
+ * g_socket_service_start:
+ * @service: a #GSocketService
  *
- * Sets @task's priority. If you do not call this, it will default to
- * %G_PRIORITY_DEFAULT.
+ * Restarts the service, i.e. start accepting connections
+ * from the added sockets when the mainloop runs. This only needs
+ * to be called after the service has been stopped from
+ * g_socket_service_stop().
  *
- * 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().
+ * This call is thread-safe, so it may be called from a thread
+ * handling an incoming client request.
  *
- * Since: 2.36
+ * Since: 2.22
  */
 
 
 /**
- * g_task_set_return_on_cancel:
- * @task: the #GTask
- * @return_on_cancel: whether the task returns automatically when
- *   it is cancelled.
- *
- * 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().
+ * g_socket_service_stop:
+ * @service: a #GSocketService
  *
- * 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.
+ * Stops the service, i.e. stops accepting connections
+ * from the added sockets when the mainloop runs.
  *
- * 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.
+ * This call is thread-safe, so it may be called from a thread
+ * handling an incoming client request.
  *
- * 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.
+ * Note that this only stops accepting new connections; it does not
+ * close the listening sockets, and you can call
+ * g_socket_service_start() again later to begin listening again. To
+ * close the listening sockets, call g_socket_listener_close(). (This
+ * will happen automatically when the #GSocketService is finalized.)
  *
- * 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.
+ * This must be called before calling g_socket_listener_close() as
+ * the socket service will start accepting connections immediately
+ * when a new socket is added.
  *
- * Returns: %TRUE if @task's return-on-cancel flag was changed to
- *   match @return_on_cancel. %FALSE if @task has already been
- *   cancelled.
- * Since: 2.36
+ * Since: 2.22
  */
 
 
 /**
- * g_task_set_source_tag:
- * @task: the #GTask
- * @source_tag: an opaque pointer indicating the source of this task
+ * g_socket_set_blocking:
+ * @socket: a #GSocket.
+ * @blocking: Whether to use blocking I/O or not.
  *
- * 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 "finish" function, to figure out if the response came from a
- * particular place.
+ * Sets the blocking mode of the socket. In blocking mode
+ * all operations (which don’t take an explicit blocking parameter) block until
+ * they succeed or there is an error. In
+ * non-blocking mode all functions return results immediately or
+ * with a %G_IO_ERROR_WOULD_BLOCK error.
  *
- * Since: 2.36
+ * All sockets are created in blocking mode. However, note that the
+ * platform level socket is always non-blocking, and blocking mode
+ * is a GSocket level feature.
+ *
+ * Since: 2.22
  */
 
 
 /**
- * g_task_set_task_data:
- * @task: the #GTask
- * @task_data: (nullable): task-specific data
- * @task_data_destroy: (nullable): #GDestroyNotify for @task_data
+ * g_socket_set_broadcast:
+ * @socket: a #GSocket.
+ * @broadcast: whether @socket should allow sending to broadcast
+ *     addresses
  *
- * Sets @task's task data (freeing the existing task data, if any).
+ * Sets whether @socket should allow sending to broadcast addresses.
+ * This is %FALSE by default.
  *
- * Since: 2.36
+ * Since: 2.32
  */
 
 
 /**
- * g_tcp_connection_get_graceful_disconnect:
- * @connection: a #GTcpConnection
+ * g_socket_set_keepalive:
+ * @socket: a #GSocket.
+ * @keepalive: Value for the keepalive flag
  *
- * Checks if graceful disconnects are used. See
- * g_tcp_connection_set_graceful_disconnect().
+ * Sets or unsets the %SO_KEEPALIVE flag on the underlying socket. When
+ * this flag is set on a socket, the system will attempt to verify that the
+ * remote socket endpoint is still present if a sufficiently long period of
+ * time passes with no data being exchanged. If the system is unable to
+ * verify the presence of the remote endpoint, it will automatically close
+ * the connection.
+ *
+ * This option is only functional on certain kinds of sockets. (Notably,
+ * %G_SOCKET_PROTOCOL_TCP sockets.)
+ *
+ * The exact time between pings is system- and protocol-dependent, but will
+ * normally be at least two hours. Most commonly, you would set this flag
+ * on a server socket if you want to allow clients to remain idle for long
+ * periods of time, but also want to ensure that connections are eventually
+ * garbage-collected if clients crash or become unreachable.
  *
- * Returns: %TRUE if graceful disconnect is used on close, %FALSE otherwise
  * Since: 2.22
  */
 
 
 /**
- * g_tcp_connection_set_graceful_disconnect:
- * @connection: a #GTcpConnection
- * @graceful_disconnect: Whether to do graceful disconnects or not
+ * g_socket_set_listen_backlog:
+ * @socket: a #GSocket.
+ * @backlog: the maximum number of pending connections.
  *
- * This enables graceful disconnects on close. A graceful disconnect
- * means that we signal the receiving end that the connection is terminated
- * and wait for it to close the connection before closing the connection.
+ * Sets the maximum number of outstanding connections allowed
+ * when listening on this socket. If more clients than this are
+ * connecting to the socket and the application is not handling them
+ * on time then the new connections will be refused.
  *
- * A graceful disconnect means that we can be sure that we successfully sent
- * all the outstanding data to the other end, or get an error reported.
- * However, it also means we have to wait for all the data to reach the
- * other side and for it to acknowledge this by closing the socket, which may
- * take a while. For this reason it is disabled by default.
+ * Note that this must be called before g_socket_listen() and has no
+ * effect if called after that.
  *
  * Since: 2.22
  */
 
 
 /**
- * g_tcp_wrapper_connection_get_base_io_stream:
- * @conn: a #GTcpWrapperConnection
+ * g_socket_set_multicast_loopback:
+ * @socket: a #GSocket.
+ * @loopback: whether @socket should receive messages sent to its
+ *   multicast groups from the local host
  *
- * Get's @conn's base #GIOStream
+ * Sets whether outgoing multicast packets will be received by sockets
+ * listening on that multicast address on the same host. This is %TRUE
+ * by default.
  *
- * Returns: (transfer none): @conn's base #GIOStream
+ * Since: 2.32
  */
 
 
 /**
- * g_tcp_wrapper_connection_new:
- * @base_io_stream: the #GIOStream to wrap
- * @socket: the #GSocket associated with @base_io_stream
+ * g_socket_set_multicast_ttl:
+ * @socket: a #GSocket.
+ * @ttl: the time-to-live value for all multicast datagrams on @socket
  *
- * Wraps @base_io_stream and @socket together as a #GSocketConnection.
+ * Sets the time-to-live for outgoing multicast datagrams on @socket.
+ * By default, this is 1, meaning that multicast packets will not leave
+ * the local network.
  *
- * Returns: the new #GSocketConnection.
- * Since: 2.28
+ * Since: 2.32
  */
 
 
 /**
- * g_test_dbus_add_service_dir:
- * @self: a #GTestDBus
- * @path: path to a directory containing .service files
+ * g_socket_set_option:
+ * @socket: a #GSocket
+ * @level: the "API level" of the option (eg, `SOL_SOCKET`)
+ * @optname: the "name" of the option (eg, `SO_BROADCAST`)
+ * @value: the value to set the option to
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Add a path where dbus-daemon will look up .service files. This can't be
- * called after g_test_dbus_up().
- */
-
-
-/**
- * g_test_dbus_down:
- * @self: a #GTestDBus
+ * Sets the value of an integer-valued option on @socket, as with
+ * setsockopt(). (If you need to set a non-integer-valued option,
+ * you will need to call setsockopt() directly.)
  *
- * Stop the session bus started by g_test_dbus_up().
+ * The [<gio/gnetworking.h>][gio-gnetworking.h]
+ * header pulls in system headers that will define most of the
+ * standard/portable socket options. For unusual socket protocols or
+ * platform-dependent options, you may need to include additional
+ * headers.
  *
- * This will wait for the singleton returned by g_bus_get() or g_bus_get_sync()
- * is destroyed. This is done to ensure that the next unit test won't get a
- * leaked singleton from this test.
+ * Returns: success or failure. On failure, @error will be set, and
+ *   the system error value (`errno` or WSAGetLastError()) will still
+ *   be set to the result of the setsockopt() call.
+ * Since: 2.36
  */
 
 
 /**
- * g_test_dbus_get_bus_address:
- * @self: a #GTestDBus
+ * g_socket_set_timeout:
+ * @socket: a #GSocket.
+ * @timeout: the timeout for @socket, in seconds, or 0 for none
  *
- * Get the address on which dbus-daemon is running. If g_test_dbus_up() has not
- * been called yet, %NULL is returned. This can be used with
- * g_dbus_connection_new_for_address().
+ * Sets the time in seconds after which I/O operations on @socket will
+ * time out if they have not yet completed.
  *
- * Returns: (nullable): the address of the bus, or %NULL.
- */
-
-
-/**
- * g_test_dbus_get_flags:
- * @self: a #GTestDBus
+ * On a blocking socket, this means that any blocking #GSocket
+ * operation will time out after @timeout seconds of inactivity,
+ * returning %G_IO_ERROR_TIMED_OUT.
  *
- * Get the flags of the #GTestDBus object.
+ * On a non-blocking socket, calls to g_socket_condition_wait() will
+ * also fail with %G_IO_ERROR_TIMED_OUT after the given time. Sources
+ * created with g_socket_create_source() will trigger after
+ * @timeout seconds of inactivity, with the requested condition
+ * set, at which point calling g_socket_receive(), g_socket_send(),
+ * g_socket_check_connect_result(), etc, will fail with
+ * %G_IO_ERROR_TIMED_OUT.
  *
- * Returns: the value of #GTestDBus:flags property
- */
-
-
-/**
- * g_test_dbus_new:
- * @flags: a #GTestDBusFlags
+ * If @timeout is 0 (the default), operations will never time out
+ * on their own.
  *
- * Create a new #GTestDBus object.
+ * Note that if an I/O operation is interrupted by a signal, this may
+ * cause the timeout to be reset.
  *
- * Returns: (transfer full): a new #GTestDBus.
+ * Since: 2.26
  */
 
 
 /**
- * g_test_dbus_stop:
- * @self: a #GTestDBus
+ * g_socket_set_ttl:
+ * @socket: a #GSocket.
+ * @ttl: the time-to-live value for all unicast packets on @socket
  *
- * Stop the session bus started by g_test_dbus_up().
+ * Sets the time-to-live for outgoing unicast packets on @socket.
+ * By default the platform-specific default value is used.
  *
- * Unlike g_test_dbus_down(), this won't verify the #GDBusConnection
- * singleton returned by g_bus_get() or g_bus_get_sync() is destroyed. Unit
- * tests wanting to verify behaviour after the session bus has been stopped
- * can use this function but should still call g_test_dbus_down() when done.
+ * Since: 2.32
  */
 
 
 /**
- * g_test_dbus_unset:
+ * g_socket_shutdown:
+ * @socket: a #GSocket
+ * @shutdown_read: whether to shut down the read side
+ * @shutdown_write: whether to shut down the write side
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Unset DISPLAY and DBUS_SESSION_BUS_ADDRESS env variables to ensure the test
- * won't use user's session bus.
+ * Shut down part or all of a full-duplex connection.
  *
- * This is useful for unit tests that want to verify behaviour when no session
- * bus is running. It is not necessary to call this if unit test already calls
- * g_test_dbus_up() before acquiring the session bus.
+ * If @shutdown_read is %TRUE then the receiving side of the connection
+ * is shut down, and further reading is disallowed.
+ *
+ * If @shutdown_write is %TRUE then the sending side of the connection
+ * is shut down, and further writing is disallowed.
+ *
+ * It is allowed for both @shutdown_read and @shutdown_write to be %TRUE.
+ *
+ * One example where it is useful to shut down only one side of a connection is
+ * graceful disconnect for TCP connections where you close the sending side,
+ * then wait for the other side to close the connection, thus ensuring that the
+ * other side saw all sent data.
+ *
+ * Returns: %TRUE on success, %FALSE on error
+ * Since: 2.22
  */
 
 
 /**
- * g_test_dbus_up:
- * @self: a #GTestDBus
+ * g_socket_speaks_ipv4:
+ * @socket: a #GSocket
  *
- * 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 bus.
+ * Checks if a socket is capable of speaking IPv4.
+ *
+ * IPv4 sockets are capable of speaking IPv4.  On some operating systems
+ * and under some combinations of circumstances IPv6 sockets are also
+ * capable of speaking IPv4.  See RFC 3493 section 3.7 for more
+ * information.
  *
- * If this function is called from setup callback of g_test_add(),
- * g_test_dbus_down() must be called in its teardown callback.
+ * No other types of sockets are currently considered as being capable
+ * of speaking IPv4.
  *
- * If this function is called from unit test's main(), then g_test_dbus_down()
- * must be called after g_test_run().
+ * Returns: %TRUE if this socket can be used with IPv4.
+ * Since: 2.22
  */
 
 
 /**
- * g_themed_icon_append_name:
- * @icon: a #GThemedIcon
- * @iconname: name of icon to append to list of icons from within @icon.
+ * g_srv_target_copy:
+ * @target: a #GSrvTarget
  *
- * Append a name to the list of icons from within @icon.
+ * Copies @target
  *
- * Note that doing so invalidates the hash computed by prior calls
- * to g_icon_hash().
+ * Returns: a copy of @target
+ * Since: 2.22
  */
 
 
 /**
- * g_themed_icon_get_names:
- * @icon: a #GThemedIcon.
+ * g_srv_target_free:
+ * @target: a #GSrvTarget
  *
- * Gets the names of icons from within @icon.
+ * Frees @target
  *
- * Returns: (transfer none): a list of icon names.
+ * Since: 2.22
  */
 
 
 /**
- * g_themed_icon_new:
- * @iconname: a string containing an icon name.
+ * g_srv_target_get_hostname:
+ * @target: a #GSrvTarget
  *
- * Creates a new themed icon for @iconname.
+ * Gets @target's hostname (in ASCII form; if you are going to present
+ * this to the user, you should use g_hostname_is_ascii_encoded() to
+ * check if it contains encoded Unicode segments, and use
+ * g_hostname_to_unicode() to convert it if it does.)
  *
- * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon.
+ * Returns: @target's hostname
+ * Since: 2.22
  */
 
 
 /**
- * g_themed_icon_new_from_names:
- * @iconnames: (array length=len): an array of strings containing icon names.
- * @len: the length of the @iconnames array, or -1 if @iconnames is
- *     %NULL-terminated
+ * g_srv_target_get_port:
+ * @target: a #GSrvTarget
  *
- * Creates a new themed icon for @iconnames.
+ * Gets @target's port
  *
- * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon
+ * Returns: @target's port
+ * Since: 2.22
  */
 
 
 /**
- * g_themed_icon_new_with_default_fallbacks:
- * @iconname: a string containing an icon name
- *
- * Creates a new themed icon for @iconname, and all the names
- * that can be created by shortening @iconname at '-' characters.
- *
- * In the following example, @icon1 and @icon2 are equivalent:
- * |[<!-- language="C" -->
- * const char *names[] = {
- *   "gnome-dev-cdrom-audio",
- *   "gnome-dev-cdrom",
- *   "gnome-dev",
- *   "gnome"
- * };
+ * g_srv_target_get_priority:
+ * @target: a #GSrvTarget
  *
- * icon1 = g_themed_icon_new_from_names (names, 4);
- * icon2 = g_themed_icon_new_with_default_fallbacks ("gnome-dev-cdrom-audio");
- * ]|
+ * Gets @target's priority. You should not need to look at this;
+ * #GResolver already sorts the targets according to the algorithm in
+ * RFC 2782.
  *
- * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon.
+ * Returns: @target's priority
+ * Since: 2.22
  */
 
 
 /**
- * g_themed_icon_prepend_name:
- * @icon: a #GThemedIcon
- * @iconname: name of icon to prepend to list of icons from within @icon.
- *
- * Prepend a name to the list of icons from within @icon.
+ * g_srv_target_get_weight:
+ * @target: a #GSrvTarget
  *
- * Note that doing so invalidates the hash computed by prior calls
- * to g_icon_hash().
+ * Gets @target's weight. You should not need to look at this;
+ * #GResolver already sorts the targets according to the algorithm in
+ * RFC 2782.
  *
- * Since: 2.18
+ * Returns: @target's weight
+ * Since: 2.22
  */
 
 
 /**
- * g_threaded_socket_service_new:
- * @max_threads: the maximal number of threads to execute concurrently
- *   handling incoming clients, -1 means no limit
+ * g_srv_target_list_sort: (skip)
+ * @targets: a #GList of #GSrvTarget
  *
- * Creates a new #GThreadedSocketService with no listeners. Listeners
- * must be added with one of the #GSocketListener "add" methods.
+ * Sorts @targets in place according to the algorithm in RFC 2782.
  *
- * Returns: a new #GSocketService.
+ * Returns: (transfer full): the head of the sorted list.
  * Since: 2.22
  */
 
 
 /**
- * g_tls_backend_get_certificate_type:
- * @backend: the #GTlsBackend
+ * g_srv_target_new:
+ * @hostname: the host that the service is running on
+ * @port: the port that the service is running on
+ * @priority: the target's priority
+ * @weight: the target's weight
  *
- * Gets the #GType of @backend's #GTlsCertificate implementation.
+ * Creates a new #GSrvTarget with the given parameters.
  *
- * Returns: the #GType of @backend's #GTlsCertificate
- *   implementation.
- * Since: 2.28
+ * You should not need to use this; normally #GSrvTargets are
+ * created by #GResolver.
+ *
+ * Returns: a new #GSrvTarget.
+ * Since: 2.22
  */
 
 
 /**
- * g_tls_backend_get_client_connection_type:
- * @backend: the #GTlsBackend
+ * g_static_resource_fini:
+ * @static_resource: pointer to a static #GStaticResource
  *
- * Gets the #GType of @backend's #GTlsClientConnection implementation.
+ * Finalized a GResource initialized by g_static_resource_init().
  *
- * Returns: the #GType of @backend's #GTlsClientConnection
- *   implementation.
- * Since: 2.28
+ * This is normally used by code generated by
+ * [glib-compile-resources][glib-compile-resources]
+ * and is not typically used by other code.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_tls_backend_get_default:
+ * g_static_resource_get_resource:
+ * @static_resource: pointer to a static #GStaticResource
  *
- * Gets the default #GTlsBackend for the system.
+ * Gets the GResource that was registered by a call to g_static_resource_init().
  *
- * Returns: (transfer none): a #GTlsBackend
- * Since: 2.28
+ * This is normally used by code generated by
+ * [glib-compile-resources][glib-compile-resources]
+ * and is not typically used by other code.
+ *
+ * Returns: (transfer none): a #GResource
+ * Since: 2.32
  */
 
 
 /**
- * g_tls_backend_get_default_database:
- * @backend: the #GTlsBackend
+ * g_static_resource_init:
+ * @static_resource: pointer to a static #GStaticResource
  *
- * Gets the default #GTlsDatabase used to verify TLS connections.
+ * Initializes a GResource from static data using a
+ * GStaticResource.
  *
- * Returns: (transfer full): the default database, which should be
- *               unreffed when done.
- * Since: 2.30
+ * This is normally used by code generated by
+ * [glib-compile-resources][glib-compile-resources]
+ * and is not typically used by other code.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_tls_backend_get_dtls_client_connection_type:
- * @backend: the #GTlsBackend
+ * g_subprocess_communicate:
+ * @subprocess: a #GSubprocess
+ * @stdin_buf: (nullable): data to send to the stdin of the subprocess, or %NULL
+ * @cancellable: a #GCancellable
+ * @stdout_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stdout
+ * @stderr_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stderr
+ * @error: a pointer to a %NULL #GError pointer, or %NULL
  *
- * Gets the #GType of @backend’s #GDtlsClientConnection implementation.
+ * Communicate with the subprocess until it terminates, and all input
+ * and output has been completed.
  *
- * Returns: the #GType of @backend’s #GDtlsClientConnection
- *   implementation, or %G_TYPE_INVALID if this backend doesn’t support DTLS.
- * Since: 2.48
- */
-
-
-/**
- * g_tls_backend_get_dtls_server_connection_type:
- * @backend: the #GTlsBackend
+ * If @stdin_buf is given, the subprocess must have been created with
+ * %G_SUBPROCESS_FLAGS_STDIN_PIPE.  The given data is fed to the
+ * stdin of the subprocess and the pipe is closed (ie: EOF).
  *
- * Gets the #GType of @backend’s #GDtlsServerConnection implementation.
+ * At the same time (as not to cause blocking when dealing with large
+ * amounts of data), if %G_SUBPROCESS_FLAGS_STDOUT_PIPE or
+ * %G_SUBPROCESS_FLAGS_STDERR_PIPE were used, reads from those
+ * streams.  The data that was read is returned in @stdout and/or
+ * the @stderr.
  *
- * Returns: the #GType of @backend’s #GDtlsServerConnection
- *   implementation, or %G_TYPE_INVALID if this backend doesn’t support DTLS.
- * Since: 2.48
+ * If the subprocess was created with %G_SUBPROCESS_FLAGS_STDOUT_PIPE,
+ * @stdout_buf will contain the data read from stdout.  Otherwise, for
+ * subprocesses not created with %G_SUBPROCESS_FLAGS_STDOUT_PIPE,
+ * @stdout_buf will be set to %NULL.  Similar provisions apply to
+ * @stderr_buf and %G_SUBPROCESS_FLAGS_STDERR_PIPE.
+ *
+ * As usual, any output variable may be given as %NULL to ignore it.
+ *
+ * If you desire the stdout and stderr data to be interleaved, create
+ * the subprocess with %G_SUBPROCESS_FLAGS_STDOUT_PIPE and
+ * %G_SUBPROCESS_FLAGS_STDERR_MERGE.  The merged result will be returned
+ * in @stdout_buf and @stderr_buf will be set to %NULL.
+ *
+ * In case of any error (including cancellation), %FALSE will be
+ * returned with @error set.  Some or all of the stdin data may have
+ * been written.  Any stdout or stderr data that has been read will be
+ * discarded. None of the out variables (aside from @error) will have
+ * been set to anything in particular and should not be inspected.
+ *
+ * In the case that %TRUE is returned, the subprocess has exited and the
+ * exit status inspection APIs (eg: g_subprocess_get_if_exited(),
+ * g_subprocess_get_exit_status()) may be used.
+ *
+ * You should not attempt to use any of the subprocess pipes after
+ * starting this function, since they may be left in strange states,
+ * even if the operation was cancelled.  You should especially not
+ * attempt to interact with the pipes while the operation is in progress
+ * (either from another thread or if using the asynchronous version).
+ *
+ * Returns: %TRUE if successful
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_backend_get_file_database_type:
- * @backend: the #GTlsBackend
- *
- * Gets the #GType of @backend's #GTlsFileDatabase implementation.
+ * g_subprocess_communicate_async:
+ * @subprocess: Self
+ * @stdin_buf: (nullable): Input data, or %NULL
+ * @cancellable: (nullable): Cancellable
+ * @callback: Callback
+ * @user_data: User data
  *
- * Returns: the #GType of backend's #GTlsFileDatabase implementation.
- * Since: 2.30
+ * Asynchronous version of g_subprocess_communicate().  Complete
+ * invocation with g_subprocess_communicate_finish().
  */
 
 
 /**
- * g_tls_backend_get_server_connection_type:
- * @backend: the #GTlsBackend
- *
- * Gets the #GType of @backend's #GTlsServerConnection implementation.
+ * g_subprocess_communicate_finish:
+ * @subprocess: Self
+ * @result: Result
+ * @stdout_buf: (out) (nullable) (optional) (transfer full): Return location for stdout data
+ * @stderr_buf: (out) (nullable) (optional) (transfer full): Return location for stderr data
+ * @error: Error
  *
- * Returns: the #GType of @backend's #GTlsServerConnection
- *   implementation.
- * Since: 2.28
+ * Complete an invocation of g_subprocess_communicate_async().
  */
 
 
 /**
- * g_tls_backend_supports_dtls:
- * @backend: the #GTlsBackend
- *
- * Checks if DTLS is supported. DTLS support may not be available even if TLS
- * support is available, and vice-versa.
+ * g_subprocess_communicate_utf8:
+ * @subprocess: a #GSubprocess
+ * @stdin_buf: (nullable): data to send to the stdin of the subprocess, or %NULL
+ * @cancellable: a #GCancellable
+ * @stdout_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stdout
+ * @stderr_buf: (out) (nullable) (optional) (transfer full): data read from the subprocess stderr
+ * @error: a pointer to a %NULL #GError pointer, or %NULL
  *
- * Returns: whether DTLS is supported
- * Since: 2.48
+ * Like g_subprocess_communicate(), but validates the output of the
+ * process as UTF-8, and returns it as a regular NUL terminated string.
  */
 
 
 /**
- * g_tls_backend_supports_tls:
- * @backend: the #GTlsBackend
- *
- * Checks if TLS is supported; if this returns %FALSE for the default
- * #GTlsBackend, it means no "real" TLS backend is available.
+ * g_subprocess_communicate_utf8_async:
+ * @subprocess: Self
+ * @stdin_buf: (nullable): Input data, or %NULL
+ * @cancellable: Cancellable
+ * @callback: Callback
+ * @user_data: User data
  *
- * Returns: whether or not TLS is supported
- * Since: 2.28
+ * Asynchronous version of g_subprocess_communicate_utf8().  Complete
+ * invocation with g_subprocess_communicate_utf8_finish().
  */
 
 
 /**
- * g_tls_certificate_get_issuer:
- * @cert: a #GTlsCertificate
- *
- * Gets the #GTlsCertificate representing @cert's issuer, if known
+ * g_subprocess_communicate_utf8_finish:
+ * @subprocess: Self
+ * @result: Result
+ * @stdout_buf: (out) (nullable) (optional) (transfer full): Return location for stdout data
+ * @stderr_buf: (out) (nullable) (optional) (transfer full): Return location for stderr data
+ * @error: Error
  *
- * Returns: (transfer none): The certificate of @cert's issuer,
- * or %NULL if @cert is self-signed or signed with an unknown
- * certificate.
- * Since: 2.28
+ * Complete an invocation of g_subprocess_communicate_utf8_async().
  */
 
 
 /**
- * g_tls_certificate_is_same:
- * @cert_one: first certificate to compare
- * @cert_two: second certificate to compare
+ * g_subprocess_force_exit:
+ * @subprocess: a #GSubprocess
  *
- * Check if two #GTlsCertificate objects represent the same certificate.
- * The raw DER byte data of the two certificates are checked for equality.
- * This has the effect that two certificates may compare equal even if
- * their #GTlsCertificate:issuer, #GTlsCertificate:private-key, or
- * #GTlsCertificate:private-key-pem properties differ.
+ * Use an operating-system specific method to attempt an immediate,
+ * forceful termination of the process.  There is no mechanism to
+ * determine whether or not the request itself was successful;
+ * however, you can use g_subprocess_wait() to monitor the status of
+ * the process after calling this function.
  *
- * Returns: whether the same or not
- * Since: 2.34
+ * On Unix, this function sends %SIGKILL.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_certificate_list_new_from_file:
- * @file: (type filename): file containing PEM-encoded certificates to import
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_subprocess_get_exit_status:
+ * @subprocess: a #GSubprocess
  *
- * Creates one or more #GTlsCertificates from the PEM-encoded
- * data in @file. If @file cannot be read or parsed, the function will
- * return %NULL and set @error. If @file does not contain any
- * PEM-encoded certificates, this will return an empty list and not
- * set @error.
+ * Check the exit status of the subprocess, given that it exited
+ * normally.  This is the value passed to the exit() system call or the
+ * return value from main.
  *
- * Returns: (element-type Gio.TlsCertificate) (transfer full): a
- * #GList containing #GTlsCertificate objects. You must free the list
- * and its contents when you are done with it.
- * Since: 2.28
+ * This is equivalent to the system WEXITSTATUS macro.
+ *
+ * It is an error to call this function before g_subprocess_wait() and
+ * unless g_subprocess_get_if_exited() returned %TRUE.
+ *
+ * Returns: the exit status
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_certificate_new_from_file:
- * @file: (type filename): file containing a PEM-encoded certificate to import
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Creates a #GTlsCertificate from the PEM-encoded data in @file. The
- * returned certificate will be the first certificate found in @file. As
- * of GLib 2.44, if @file contains more certificates it will try to load
- * a certificate chain. All certificates will be verified in the order
- * found (top-level certificate should be the last one in the file) and
- * the #GTlsCertificate:issuer property of each certificate will be set
- * accordingly if the verification succeeds. If any certificate in the
- * chain cannot be verified, the first certificate in the file will
- * still be returned.
- *
- * If @file cannot be read or parsed, the function will return %NULL and
- * set @error. Otherwise, this behaves like
- * g_tls_certificate_new_from_pem().
+ * g_subprocess_get_identifier:
+ * @subprocess: a #GSubprocess
  *
- * Returns: the new certificate, or %NULL on error
- * Since: 2.28
+ * On UNIX, returns the process ID as a decimal string.
+ * On Windows, returns the result of GetProcessId() also as a string.
  */
 
 
 /**
- * g_tls_certificate_new_from_files:
- * @cert_file: (type filename): file containing one or more PEM-encoded
- *     certificates to import
- * @key_file: (type filename): file containing a PEM-encoded private key
- *     to import
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_subprocess_get_if_exited:
+ * @subprocess: a #GSubprocess
  *
- * Creates a #GTlsCertificate from the PEM-encoded data in @cert_file
- * and @key_file. The returned certificate will be the first certificate
- * found in @cert_file. As of GLib 2.44, if @cert_file contains more
- * certificates it will try to load a certificate chain. All
- * certificates will be verified in the order found (top-level
- * certificate should be the last one in the file) and the
- * #GTlsCertificate:issuer property of each certificate will be set
- * accordingly if the verification succeeds. If any certificate in the
- * chain cannot be verified, the first certificate in the file will
- * still be returned.
+ * Check if the given subprocess exited normally (ie: by way of exit()
+ * or return from main()).
  *
- * If either file cannot be read or parsed, the function will return
- * %NULL and set @error. Otherwise, this behaves like
- * g_tls_certificate_new_from_pem().
+ * This is equivalent to the system WIFEXITED macro.
  *
- * Returns: the new certificate, or %NULL on error
- * Since: 2.28
+ * It is an error to call this function before g_subprocess_wait() has
+ * returned.
+ *
+ * Returns: %TRUE if the case of a normal exit
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_certificate_new_from_pem:
- * @data: PEM-encoded certificate data
- * @length: the length of @data, or -1 if it's 0-terminated.
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_subprocess_get_if_signaled:
+ * @subprocess: a #GSubprocess
  *
- * Creates a #GTlsCertificate from the PEM-encoded data in @data. If
- * @data includes both a certificate and a private key, then the
- * returned certificate will include the private key data as well. (See
- * the #GTlsCertificate:private-key-pem property for information about
- * supported formats.)
+ * Check if the given subprocess terminated in response to a signal.
  *
- * The returned certificate will be the first certificate found in
- * @data. As of GLib 2.44, if @data contains more certificates it will
- * try to load a certificate chain. All certificates will be verified in
- * the order found (top-level certificate should be the last one in the
- * file) and the #GTlsCertificate:issuer property of each certificate
- * will be set accordingly if the verification succeeds. If any
- * certificate in the chain cannot be verified, the first certificate in
- * the file will still be returned.
+ * This is equivalent to the system WIFSIGNALED macro.
  *
- * Returns: the new certificate, or %NULL if @data is invalid
- * Since: 2.28
+ * It is an error to call this function before g_subprocess_wait() has
+ * returned.
+ *
+ * Returns: %TRUE if the case of termination due to a signal
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_certificate_verify:
- * @cert: a #GTlsCertificate
- * @identity: (nullable): the expected peer identity
- * @trusted_ca: (nullable): the certificate of a trusted authority
+ * g_subprocess_get_status:
+ * @subprocess: a #GSubprocess
  *
- * This verifies @cert and returns a set of #GTlsCertificateFlags
- * indicating any problems found with it. This can be used to verify a
- * certificate outside the context of making a connection, or to
- * check a certificate against a CA that is not part of the system
- * CA database.
+ * Gets the raw status code of the process, as from waitpid().
  *
- * If @identity is not %NULL, @cert's name(s) will be compared against
- * it, and %G_TLS_CERTIFICATE_BAD_IDENTITY will be set in the return
- * value if it does not match. If @identity is %NULL, that bit will
- * never be set in the return value.
+ * This value has no particular meaning, but it can be used with the
+ * macros defined by the system headers such as WIFEXITED.  It can also
+ * be used with g_spawn_check_exit_status().
  *
- * If @trusted_ca is not %NULL, then @cert (or one of the certificates
- * in its chain) must be signed by it, or else
- * %G_TLS_CERTIFICATE_UNKNOWN_CA will be set in the return value. If
- * @trusted_ca is %NULL, that bit will never be set in the return
- * value.
+ * It is more likely that you want to use g_subprocess_get_if_exited()
+ * followed by g_subprocess_get_exit_status().
  *
- * (All other #GTlsCertificateFlags values will always be set or unset
- * as appropriate.)
+ * It is an error to call this function before g_subprocess_wait() has
+ * returned.
  *
- * Returns: the appropriate #GTlsCertificateFlags
- * Since: 2.28
+ * Returns: the (meaningless) waitpid() exit status from the kernel
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_copy_session_state:
- * @conn: a #GTlsClientConnection
- * @source: a #GTlsClientConnection
+ * g_subprocess_get_stderr_pipe:
+ * @subprocess: a #GSubprocess
  *
- * Copies session state from one connection to another. This is
- * not normally needed, but may be used when the same session
- * needs to be used between different endpoints as is required
- * by some protocols such as FTP over TLS. @source should have
- * already completed a handshake, and @conn should not have
- * completed a handshake.
+ * Gets the #GInputStream from which to read the stderr output of
+ * @subprocess.
  *
- * Since: 2.46
+ * The process must have been created with
+ * %G_SUBPROCESS_FLAGS_STDERR_PIPE.
+ *
+ * Returns: (transfer none): the stderr pipe
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_get_accepted_cas:
- * @conn: the #GTlsClientConnection
+ * g_subprocess_get_stdin_pipe:
+ * @subprocess: a #GSubprocess
  *
- * Gets the list of distinguished names of the Certificate Authorities
- * that the server will accept certificates from. This will be set
- * during the TLS handshake if the server requests a certificate.
- * Otherwise, it will be %NULL.
+ * Gets the #GOutputStream that you can write to in order to give data
+ * to the stdin of @subprocess.
  *
- * Each item in the list is a #GByteArray which contains the complete
- * subject DN of the certificate authority.
+ * The process must have been created with
+ * %G_SUBPROCESS_FLAGS_STDIN_PIPE.
  *
- * Returns: (element-type GByteArray) (transfer full): the list of
- * CA DNs. You should unref each element with g_byte_array_unref() and then
- * the free the list with g_list_free().
- * Since: 2.28
+ * Returns: (transfer none): the stdout pipe
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_get_server_identity:
- * @conn: the #GTlsClientConnection
+ * g_subprocess_get_stdout_pipe:
+ * @subprocess: a #GSubprocess
  *
- * Gets @conn's expected server identity
+ * Gets the #GInputStream from which to read the stdout output of
+ * @subprocess.
  *
- * Returns: (transfer none): a #GSocketConnectable describing the
- * expected server identity, or %NULL if the expected identity is not
- * known.
- * Since: 2.28
+ * The process must have been created with
+ * %G_SUBPROCESS_FLAGS_STDOUT_PIPE.
+ *
+ * Returns: (transfer none): the stdout pipe
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_get_use_ssl3:
- * @conn: the #GTlsClientConnection
+ * g_subprocess_get_successful:
+ * @subprocess: a #GSubprocess
  *
- * Gets whether @conn will force the lowest-supported TLS protocol
- * version rather than attempt to negotiate the highest mutually-
- * supported version of TLS; see g_tls_client_connection_set_use_ssl3().
+ * Checks if the process was "successful".  A process is considered
+ * successful if it exited cleanly with an exit status of 0, either by
+ * way of the exit() system call or return from main().
  *
- * Returns: whether @conn will use the lowest-supported TLS protocol version
- * Since: 2.28
- * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
- * actually indicate whether it is enabled.
+ * It is an error to call this function before g_subprocess_wait() has
+ * returned.
+ *
+ * Returns: %TRUE if the process exited cleanly with a exit status of 0
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_get_validation_flags:
- * @conn: the #GTlsClientConnection
+ * g_subprocess_get_term_sig:
+ * @subprocess: a #GSubprocess
  *
- * Gets @conn's validation flags
+ * Get the signal number that caused the subprocess to terminate, given
+ * that it terminated due to a signal.
  *
- * Returns: the validation flags
- * Since: 2.28
+ * This is equivalent to the system WTERMSIG macro.
+ *
+ * It is an error to call this function before g_subprocess_wait() and
+ * unless g_subprocess_get_if_signaled() returned %TRUE.
+ *
+ * Returns: the signal causing termination
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_new:
- * @base_io_stream: the #GIOStream to wrap
- * @server_identity: (nullable): the expected identity of the server
- * @error: #GError for error reporting, or %NULL to ignore.
+ * g_subprocess_launcher_getenv:
+ * @self: a #GSubprocess
+ * @variable: (type filename): the environment variable to get
  *
- * Creates a new #GTlsClientConnection wrapping @base_io_stream (which
- * must have pollable input and output streams) which is assumed to
- * communicate with the server identified by @server_identity.
+ * Returns the value of the environment variable @variable in the
+ * environment of processes launched from this launcher.
  *
- * See the documentation for #GTlsConnection:base-io-stream for restrictions
- * on when application code can run operations on the @base_io_stream after
- * this function has returned.
+ * On UNIX, the returned string can be an arbitrary byte string.
+ * On Windows, it will be UTF-8.
  *
- * Returns: (transfer full) (type GTlsClientConnection): the new
- * #GTlsClientConnection, or %NULL on error
- * Since: 2.28
+ * Returns: (type filename): the value of the environment variable,
+ *     %NULL if unset
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_set_server_identity:
- * @conn: the #GTlsClientConnection
- * @identity: a #GSocketConnectable describing the expected server identity
+ * g_subprocess_launcher_new:
+ * @flags: #GSubprocessFlags
  *
- * Sets @conn's expected server identity, which is used both to tell
- * servers on virtual hosts which certificate to present, and also
- * to let @conn know what name to look for in the certificate when
- * performing %G_TLS_CERTIFICATE_BAD_IDENTITY validation, if enabled.
+ * Creates a new #GSubprocessLauncher.
  *
- * Since: 2.28
+ * The launcher is created with the default options.  A copy of the
+ * environment of the calling process is made at the time of this call
+ * and will be used as the environment that the process is launched in.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_set_use_ssl3:
- * @conn: the #GTlsClientConnection
- * @use_ssl3: whether to use the lowest-supported protocol version
+ * g_subprocess_launcher_set_child_setup: (skip)
+ * @self: a #GSubprocessLauncher
+ * @child_setup: a #GSpawnChildSetupFunc to use as the child setup function
+ * @user_data: user data for @child_setup
+ * @destroy_notify: a #GDestroyNotify for @user_data
  *
- * If @use_ssl3 is %TRUE, this forces @conn to use the lowest-supported
- * TLS protocol version rather than trying to properly negotiate the
- * highest mutually-supported protocol version with the peer. This can
- * be used when talking to broken TLS servers that exhibit protocol
- * version intolerance.
+ * Sets up a child setup function.
  *
- * Be aware that SSL 3.0 is generally disabled by the #GTlsBackend, so
- * the lowest-supported protocol version is probably not SSL 3.0.
+ * The child setup function will be called after fork() but before
+ * exec() on the child's side.
  *
- * Since: 2.28
- * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
- * generally enable or disable it, despite its name.
+ * @destroy_notify will not be automatically called on the child's side
+ * of the fork().  It will only be called when the last reference on the
+ * #GSubprocessLauncher is dropped or when a new child setup function is
+ * given.
+ *
+ * %NULL can be given as @child_setup to disable the functionality.
+ *
+ * Child setup functions are only available on UNIX.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_client_connection_set_validation_flags:
- * @conn: the #GTlsClientConnection
- * @flags: the #GTlsCertificateFlags to use
+ * g_subprocess_launcher_set_cwd:
+ * @self: a #GSubprocess
+ * @cwd: (type filename): the cwd for launched processes
  *
- * Sets @conn's validation flags, to override the default set of
- * checks performed when validating a server certificate. By default,
- * %G_TLS_CERTIFICATE_VALIDATE_ALL is used.
+ * Sets the current working directory that processes will be launched
+ * with.
  *
- * Since: 2.28
+ * By default processes are launched with the current working directory
+ * of the launching process at the time of launch.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_emit_accept_certificate:
- * @conn: a #GTlsConnection
- * @peer_cert: the peer's #GTlsCertificate
- * @errors: the problems with @peer_cert
+ * g_subprocess_launcher_set_environ:
+ * @self: a #GSubprocess
+ * @env: (array zero-terminated=1) (element-type filename) (transfer none):
+ *     the replacement environment
  *
- * Used by #GTlsConnection implementations to emit the
- * #GTlsConnection::accept-certificate signal.
+ * Replace the entire environment of processes launched from this
+ * launcher with the given 'environ' variable.
  *
- * Returns: %TRUE if one of the signal handlers has returned
- *     %TRUE to accept @peer_cert
- * Since: 2.28
+ * Typically you will build this variable by using g_listenv() to copy
+ * the process 'environ' and using the functions g_environ_setenv(),
+ * g_environ_unsetenv(), etc.
+ *
+ * As an alternative, you can use g_subprocess_launcher_setenv(),
+ * g_subprocess_launcher_unsetenv(), etc.
+ *
+ * Pass an empty array to set an empty environment. Pass %NULL to inherit the
+ * parent process’ environment. As of GLib 2.54, the parent process’ environment
+ * will be copied when g_subprocess_launcher_set_environ() is called.
+ * Previously, it was copied when the subprocess was executed. This means the
+ * copied environment may now be modified (using g_subprocess_launcher_setenv(),
+ * etc.) before launching the subprocess.
+ *
+ * On UNIX, all strings in this array can be arbitrary byte strings.
+ * On Windows, they should be in UTF-8.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_get_certificate:
- * @conn: a #GTlsConnection
+ * g_subprocess_launcher_set_flags:
+ * @self: a #GSubprocessLauncher
+ * @flags: #GSubprocessFlags
  *
- * Gets @conn's certificate, as set by
- * g_tls_connection_set_certificate().
+ * Sets the flags on the launcher.
  *
- * Returns: (transfer none): @conn's certificate, or %NULL
- * Since: 2.28
+ * The default flags are %G_SUBPROCESS_FLAGS_NONE.
+ *
+ * You may not set flags that specify conflicting options for how to
+ * handle a particular stdio stream (eg: specifying both
+ * %G_SUBPROCESS_FLAGS_STDIN_PIPE and
+ * %G_SUBPROCESS_FLAGS_STDIN_INHERIT).
+ *
+ * You may also not set a flag that conflicts with a previous call to a
+ * function like g_subprocess_launcher_set_stdin_file_path() or
+ * g_subprocess_launcher_take_stdout_fd().
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_get_database:
- * @conn: a #GTlsConnection
+ * g_subprocess_launcher_set_stderr_file_path:
+ * @self: a #GSubprocessLauncher
+ * @path: (type filename) (nullable): a filename or %NULL
  *
- * Gets the certificate database that @conn uses to verify
- * peer certificates. See g_tls_connection_set_database().
+ * Sets the file path to use as the stderr for spawned processes.
  *
- * Returns: (transfer none): the certificate database that @conn uses or %NULL
- * Since: 2.30
+ * If @path is %NULL then any previously given path is unset.
+ *
+ * The file will be created or truncated when the process is spawned, as
+ * would be the case if using '2>' at the shell.
+ *
+ * If you want to send both stdout and stderr to the same file then use
+ * %G_SUBPROCESS_FLAGS_STDERR_MERGE.
+ *
+ * You may not set a stderr file path if a stderr fd is already set or
+ * if the launcher flags contain any flags directing stderr elsewhere.
+ *
+ * This feature is only available on UNIX.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_get_interaction:
- * @conn: a connection
+ * g_subprocess_launcher_set_stdin_file_path:
+ * @self: a #GSubprocessLauncher
+ * @path:
  *
- * Get the object that will be used to interact with the user. It will be used
- * for things like prompting the user for passwords. If %NULL is returned, then
- * no user interaction will occur for this connection.
+ * Sets the file path to use as the stdin for spawned processes.
  *
- * Returns: (transfer none): The interaction object.
- * Since: 2.30
+ * If @path is %NULL then any previously given path is unset.
+ *
+ * The file must exist or spawning the process will fail.
+ *
+ * You may not set a stdin file path if a stdin fd is already set or if
+ * the launcher flags contain any flags directing stdin elsewhere.
+ *
+ * This feature is only available on UNIX.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_get_peer_certificate:
- * @conn: a #GTlsConnection
+ * g_subprocess_launcher_set_stdout_file_path:
+ * @self: a #GSubprocessLauncher
+ * @path: (type filename) (nullable): a filename or %NULL
  *
- * Gets @conn's peer's certificate after the handshake has completed.
- * (It is not set during the emission of
- * #GTlsConnection::accept-certificate.)
+ * Sets the file path to use as the stdout for spawned processes.
  *
- * Returns: (transfer none): @conn's peer's certificate, or %NULL
- * Since: 2.28
+ * If @path is %NULL then any previously given path is unset.
+ *
+ * The file will be created or truncated when the process is spawned, as
+ * would be the case if using '>' at the shell.
+ *
+ * You may not set a stdout file path if a stdout fd is already set or
+ * if the launcher flags contain any flags directing stdout elsewhere.
+ *
+ * This feature is only available on UNIX.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_get_peer_certificate_errors:
- * @conn: a #GTlsConnection
+ * g_subprocess_launcher_setenv:
+ * @self: a #GSubprocess
+ * @variable: (type filename): the environment variable to set,
+ *     must not contain '='
+ * @value: (type filename): the new value for the variable
+ * @overwrite: whether to change the variable if it already exists
  *
- * Gets the errors associated with validating @conn's peer's
- * certificate, after the handshake has completed. (It is not set
- * during the emission of #GTlsConnection::accept-certificate.)
+ * Sets the environment variable @variable in the environment of
+ * processes launched from this launcher.
  *
- * Returns: @conn's peer's certificate errors
- * Since: 2.28
+ * On UNIX, both the variable's name and value can be arbitrary byte
+ * strings, except that the variable's name cannot contain '='.
+ * On Windows, they should be in UTF-8.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_get_rehandshake_mode:
- * @conn: a #GTlsConnection
+ * g_subprocess_launcher_spawn:
+ * @self: a #GSubprocessLauncher
+ * @error: Error
+ * @argv0: Command line arguments
+ * @...: Continued arguments, %NULL terminated
  *
- * Gets @conn rehandshaking mode. See
- * g_tls_connection_set_rehandshake_mode() for details.
+ * Creates a #GSubprocess given a provided varargs list of arguments.
  *
- * Returns: @conn's rehandshaking mode
- * Since: 2.28
+ * Since: 2.40
+ * Returns: (transfer full): A new #GSubprocess, or %NULL on error (and @error will be set)
  */
 
 
 /**
- * g_tls_connection_get_require_close_notify:
- * @conn: a #GTlsConnection
+ * g_subprocess_launcher_spawnv:
+ * @self: a #GSubprocessLauncher
+ * @argv: (array zero-terminated=1) (element-type filename): Command line arguments
+ * @error: Error
  *
- * Tests whether or not @conn expects a proper TLS close notification
- * when the connection is closed. See
- * g_tls_connection_set_require_close_notify() for details.
+ * Creates a #GSubprocess given a provided array of arguments.
  *
- * Returns: %TRUE if @conn requires a proper TLS close
- * notification.
- * Since: 2.28
+ * Since: 2.40
+ * Returns: (transfer full): A new #GSubprocess, or %NULL on error (and @error will be set)
  */
 
 
 /**
- * g_tls_connection_get_use_system_certdb:
- * @conn: a #GTlsConnection
+ * g_subprocess_launcher_take_fd:
+ * @self: a #GSubprocessLauncher
+ * @source_fd: File descriptor in parent process
+ * @target_fd: Target descriptor for child process
  *
- * Gets whether @conn uses the system certificate database to verify
- * peer certificates. See g_tls_connection_set_use_system_certdb().
+ * Transfer an arbitrary file descriptor from parent process to the
+ * child.  This function takes "ownership" of the fd; it will be closed
+ * in the parent when @self is freed.
  *
- * Returns: whether @conn uses the system certificate database
- * Deprecated: 2.30: Use g_tls_connection_get_database() instead
+ * By default, all file descriptors from the parent will be closed.
+ * This function allows you to create (for example) a custom pipe() or
+ * socketpair() before launching the process, and choose the target
+ * descriptor in the child.
+ *
+ * An example use case is GNUPG, which has a command line argument
+ * --passphrase-fd providing a file descriptor number where it expects
+ * the passphrase to be written.
  */
 
 
 /**
- * g_tls_connection_handshake:
- * @conn: a #GTlsConnection
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: a #GError, or %NULL
+ * g_subprocess_launcher_take_stderr_fd:
+ * @self: a #GSubprocessLauncher
+ * @fd: a file descriptor, or -1
  *
- * Attempts a TLS handshake on @conn.
+ * Sets the file descriptor to use as the stderr for spawned processes.
  *
- * On the client side, it is never necessary to call this method;
- * although the connection needs to perform a handshake after
- * connecting (or after sending a "STARTTLS"-type command) and may
- * need to rehandshake later if the server requests it,
- * #GTlsConnection will handle this for you automatically when you try
- * to send or receive data on the connection. However, you can call
- * g_tls_connection_handshake() manually if you want to know for sure
- * whether the initial handshake succeeded or failed (as opposed to
- * just immediately trying to write to @conn's output stream, in which
- * case if it fails, it may not be possible to tell if it failed
- * before or after completing the handshake).
+ * If @fd is -1 then any previously given fd is unset.
  *
- * Likewise, on the server side, although a handshake is necessary at
- * the beginning of the communication, you do not need to call this
- * function explicitly unless you want clearer error reporting.
- * However, you may call g_tls_connection_handshake() later on to
- * renegotiate parameters (encryption methods, etc) with the client.
+ * Note that the default behaviour is to pass stderr through to the
+ * stderr of the parent process.
  *
- * #GTlsConnection::accept_certificate may be emitted during the
- * handshake.
+ * The passed @fd belongs to the #GSubprocessLauncher.  It will be
+ * automatically closed when the launcher is finalized.  The file
+ * descriptor will also be closed on the child side when executing the
+ * spawned process.
  *
- * Returns: success or failure
- * Since: 2.28
- */
-
-
-/**
- * g_tls_connection_handshake_async:
- * @conn: a #GTlsConnection
- * @io_priority: the [I/O priority][io-priority] of the request
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the handshake is complete
- * @user_data: the data to pass to the callback function
+ * You may not set a stderr fd if a stderr file path is already set or
+ * if the launcher flags contain any flags directing stderr elsewhere.
  *
- * Asynchronously performs a TLS handshake on @conn. See
- * g_tls_connection_handshake() for more information.
+ * This feature is only available on UNIX.
  *
- * Since: 2.28
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_handshake_finish:
- * @conn: a #GTlsConnection
- * @result: a #GAsyncResult.
- * @error: a #GError pointer, or %NULL
+ * g_subprocess_launcher_take_stdin_fd:
+ * @self: a #GSubprocessLauncher
+ * @fd: a file descriptor, or -1
  *
- * Finish an asynchronous TLS handshake operation. See
- * g_tls_connection_handshake() for more information.
+ * Sets the file descriptor to use as the stdin for spawned processes.
  *
- * Returns: %TRUE on success, %FALSE on failure, in which
- * case @error will be set.
- * Since: 2.28
- */
-
-
-/**
- * g_tls_connection_set_certificate:
- * @conn: a #GTlsConnection
- * @certificate: the certificate to use for @conn
+ * If @fd is -1 then any previously given fd is unset.
  *
- * This sets the certificate that @conn will present to its peer
- * during the TLS handshake. For a #GTlsServerConnection, it is
- * mandatory to set this, and that will normally be done at construct
- * time.
+ * Note that if your intention is to have the stdin of the calling
+ * process inherited by the child then %G_SUBPROCESS_FLAGS_STDIN_INHERIT
+ * is a better way to go about doing that.
  *
- * For a #GTlsClientConnection, this is optional. If a handshake fails
- * with %G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server
- * requires a certificate, and if you try connecting again, you should
- * call this method first. You can call
- * g_tls_client_connection_get_accepted_cas() on the failed connection
- * to get a list of Certificate Authorities that the server will
- * accept certificates from.
+ * The passed @fd is noted but will not be touched in the current
+ * process.  It is therefore necessary that it be kept open by the
+ * caller until the subprocess is spawned.  The file descriptor will
+ * also not be explicitly closed on the child side, so it must be marked
+ * O_CLOEXEC if that's what you want.
  *
- * (It is also possible that a server will allow the connection with
- * or without a certificate; in that case, if you don't provide a
- * certificate, you can tell that the server requested one by the fact
- * that g_tls_client_connection_get_accepted_cas() will return
- * non-%NULL.)
+ * You may not set a stdin fd if a stdin file path is already set or if
+ * the launcher flags contain any flags directing stdin elsewhere.
  *
- * Since: 2.28
+ * This feature is only available on UNIX.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_set_database:
- * @conn: a #GTlsConnection
- * @database: a #GTlsDatabase
+ * g_subprocess_launcher_take_stdout_fd:
+ * @self: a #GSubprocessLauncher
+ * @fd: a file descriptor, or -1
  *
- * Sets the certificate database that is used to verify peer certificates.
- * This is set to the default database by default. See
- * g_tls_backend_get_default_database(). If set to %NULL, then
- * peer certificate validation will always set the
- * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning
- * #GTlsConnection::accept-certificate will always be emitted on
- * client-side connections, unless that bit is not set in
- * #GTlsClientConnection:validation-flags).
+ * Sets the file descriptor to use as the stdout for spawned processes.
  *
- * Since: 2.30
- */
-
-
-/**
- * g_tls_connection_set_interaction:
- * @conn: a connection
- * @interaction: (nullable): an interaction object, or %NULL
+ * If @fd is -1 then any previously given fd is unset.
  *
- * Set the object that will be used to interact with the user. It will be used
- * for things like prompting the user for passwords.
+ * Note that the default behaviour is to pass stdout through to the
+ * stdout of the parent process.
  *
- * The @interaction argument will normally be a derived subclass of
- * #GTlsInteraction. %NULL can also be provided if no user interaction
- * should occur for this connection.
+ * The passed @fd is noted but will not be touched in the current
+ * process.  It is therefore necessary that it be kept open by the
+ * caller until the subprocess is spawned.  The file descriptor will
+ * also not be explicitly closed on the child side, so it must be marked
+ * O_CLOEXEC if that's what you want.
  *
- * Since: 2.30
+ * You may not set a stdout fd if a stdout file path is already set or
+ * if the launcher flags contain any flags directing stdout elsewhere.
+ *
+ * This feature is only available on UNIX.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_set_rehandshake_mode:
- * @conn: a #GTlsConnection
- * @mode: the rehandshaking mode
- *
- * Sets how @conn behaves with respect to rehandshaking requests.
- *
- * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to
- * rehandshake after the initial handshake is complete. (For a client,
- * this means it will refuse rehandshake requests from the server, and
- * for a server, this means it will close the connection with an error
- * if the client attempts to rehandshake.)
+ * g_subprocess_launcher_unsetenv:
+ * @self: a #GSubprocess
+ * @variable: (type filename): the environment variable to unset,
+ *     must not contain '='
  *
- * %G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a
- * rehandshake only if the other end of the connection supports the
- * TLS `renegotiation_info` extension. This is the default behavior,
- * but means that rehandshaking will not work against older
- * implementations that do not support that extension.
+ * Removes the environment variable @variable from the environment of
+ * processes launched from this launcher.
  *
- * %G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow
- * rehandshaking even without the `renegotiation_info` extension. On
- * the server side in particular, this is not recommended, since it
- * leaves the server open to certain attacks. However, this mode is
- * necessary if you need to allow renegotiation with older client
- * software.
+ * On UNIX, the variable's name can be an arbitrary byte string not
+ * containing '='. On Windows, it should be in UTF-8.
  *
- * Since: 2.28
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_set_require_close_notify:
- * @conn: a #GTlsConnection
- * @require_close_notify: whether or not to require close notification
- *
- * Sets whether or not @conn expects a proper TLS close notification
- * before the connection is closed. If this is %TRUE (the default),
- * then @conn will expect to receive a TLS close notification from its
- * peer before the connection is closed, and will return a
- * %G_TLS_ERROR_EOF error if the connection is closed without proper
- * notification (since this may indicate a network error, or
- * man-in-the-middle attack).
- *
- * In some protocols, the application will know whether or not the
- * connection was closed cleanly based on application-level data
- * (because the application-level data includes a length field, or is
- * somehow self-delimiting); in this case, the close notify is
- * redundant and sometimes omitted. (TLS 1.1 explicitly allows this;
- * in TLS 1.0 it is technically an error, but often done anyway.) You
- * can use g_tls_connection_set_require_close_notify() to tell @conn
- * to allow an "unannounced" connection close, in which case the close
- * will show up as a 0-length read, as in a non-TLS
- * #GSocketConnection, and it is up to the application to check that
- * the data has been fully received.
+ * g_subprocess_new: (skip)
+ * @flags: flags that define the behaviour of the subprocess
+ * @error: (nullable): return location for an error, or %NULL
+ * @argv0: first commandline argument to pass to the subprocess
+ * @...: more commandline arguments, followed by %NULL
  *
- * Note that this only affects the behavior when the peer closes the
- * connection; when the application calls g_io_stream_close() itself
- * on @conn, this will send a close notification regardless of the
- * setting of this property. If you explicitly want to do an unclean
- * close, you can close @conn's #GTlsConnection:base-io-stream rather
- * than closing @conn itself, but note that this may only be done when no other
- * operations are pending on @conn or the base I/O stream.
+ * Create a new process with the given flags and varargs argument
+ * list.  By default, matching the g_spawn_async() defaults, the
+ * child's stdin will be set to the system null device, and
+ * stdout/stderr will be inherited from the parent.  You can use
+ * @flags to control this behavior.
  *
- * Since: 2.28
+ * The argument list must be terminated with %NULL.
+ *
+ * Returns: A newly created #GSubprocess, or %NULL on error (and @error
+ *   will be set)
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_connection_set_use_system_certdb:
- * @conn: a #GTlsConnection
- * @use_system_certdb: whether to use the system certificate database
+ * g_subprocess_newv: (rename-to g_subprocess_new)
+ * @argv: (array zero-terminated=1) (element-type filename): commandline arguments for the subprocess
+ * @flags: flags that define the behaviour of the subprocess
+ * @error: (nullable): return location for an error, or %NULL
  *
- * Sets whether @conn uses the system certificate database to verify
- * peer certificates. This is %TRUE by default. If set to %FALSE, then
- * peer certificate validation will always set the
- * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning
- * #GTlsConnection::accept-certificate will always be emitted on
- * client-side connections, unless that bit is not set in
- * #GTlsClientConnection:validation-flags).
+ * Create a new process with the given flags and argument list.
  *
- * Deprecated: 2.30: Use g_tls_connection_set_database() instead
+ * The argument list is expected to be %NULL-terminated.
+ *
+ * Returns: A newly created #GSubprocess, or %NULL on error (and @error
+ *   will be set)
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_create_certificate_handle:
- * @self: a #GTlsDatabase
- * @certificate: certificate for which to create a handle.
+ * g_subprocess_send_signal:
+ * @subprocess: a #GSubprocess
+ * @signal_num: the signal number to send
  *
- * Create a handle string for the certificate. The database will only be able
- * to create a handle for certificates that originate from the database. In
- * cases where the database cannot create a handle for a certificate, %NULL
- * will be returned.
+ * Sends the UNIX signal @signal_num to the subprocess, if it is still
+ * running.
  *
- * This handle should be stable across various instances of the application,
- * and between applications. If a certificate is modified in the database,
- * then it is not guaranteed that this handle will continue to point to it.
+ * This API is race-free.  If the subprocess has terminated, it will not
+ * be signalled.
  *
- * Returns: (nullable): a newly allocated string containing the
- * handle.
- * Since: 2.30
+ * This API is not available on Windows.
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_lookup_certificate_for_handle:
- * @self: a #GTlsDatabase
- * @handle: a certificate handle
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: Flags which affect the lookup.
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: (nullable): a #GError, or %NULL
+ * g_subprocess_wait:
+ * @subprocess: a #GSubprocess
+ * @cancellable: a #GCancellable
+ * @error: a #GError
  *
- * Lookup a certificate by its handle.
+ * Synchronously wait for the subprocess to terminate.
  *
- * The handle should have been created by calling
- * g_tls_database_create_certificate_handle() on a #GTlsDatabase object of
- * the same TLS backend. The handle is designed to remain valid across
- * instantiations of the database.
+ * After the process terminates you can query its exit status with
+ * functions such as g_subprocess_get_if_exited() and
+ * g_subprocess_get_exit_status().
  *
- * If the handle is no longer valid, or does not point to a certificate in
- * this database, then %NULL will be returned.
+ * This function does not fail in the case of the subprocess having
+ * abnormal termination.  See g_subprocess_wait_check() for that.
  *
- * This function can block, use g_tls_database_lookup_certificate_for_handle_async() to perform
- * the lookup operation asynchronously.
+ * Cancelling @cancellable doesn't kill the subprocess.  Call
+ * g_subprocess_force_exit() if it is desirable.
  *
- * Returns: (transfer full) (nullable): a newly allocated
- * #GTlsCertificate, or %NULL. Use g_object_unref() to release the certificate.
- * Since: 2.30
+ * Returns: %TRUE on success, %FALSE if @cancellable was cancelled
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_lookup_certificate_for_handle_async:
- * @self: a #GTlsDatabase
- * @handle: a certificate handle
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: Flags which affect the lookup.
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the operation completes
- * @user_data: the data to pass to the callback function
+ * g_subprocess_wait_async:
+ * @subprocess: a #GSubprocess
+ * @cancellable: a #GCancellable, or %NULL
+ * @callback: a #GAsyncReadyCallback to call when the operation is complete
+ * @user_data: user_data for @callback
  *
- * Asynchronously lookup a certificate by its handle in the database. See
- * g_tls_database_lookup_certificate_for_handle() for more information.
+ * Wait for the subprocess to terminate.
  *
- * Since: 2.30
+ * This is the asynchronous version of g_subprocess_wait().
+ *
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_lookup_certificate_for_handle_finish:
- * @self: a #GTlsDatabase
- * @result: a #GAsyncResult.
- * @error: a #GError pointer, or %NULL
- *
- * Finish an asynchronous lookup of a certificate by its handle. See
- * g_tls_database_lookup_certificate_by_handle() for more information.
+ * g_subprocess_wait_check:
+ * @subprocess: a #GSubprocess
+ * @cancellable: a #GCancellable
+ * @error: a #GError
  *
- * If the handle is no longer valid, or does not point to a certificate in
- * this database, then %NULL will be returned.
+ * Combines g_subprocess_wait() with g_spawn_check_exit_status().
  *
- * Returns: (transfer full): a newly allocated #GTlsCertificate object.
- * Use g_object_unref() to release the certificate.
- * Since: 2.30
+ * Returns: %TRUE on success, %FALSE if process exited abnormally, or
+ * @cancellable was cancelled
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_lookup_certificate_issuer:
- * @self: a #GTlsDatabase
- * @certificate: a #GTlsCertificate
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: flags which affect the lookup operation
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: (nullable): a #GError, or %NULL
- *
- * Lookup the issuer of @certificate in the database.
+ * g_subprocess_wait_check_async:
+ * @subprocess: a #GSubprocess
+ * @cancellable: a #GCancellable, or %NULL
+ * @callback: a #GAsyncReadyCallback to call when the operation is complete
+ * @user_data: user_data for @callback
  *
- * The %issuer property
- * of @certificate is not modified, and the two certificates are not hooked
- * into a chain.
+ * Combines g_subprocess_wait_async() with g_spawn_check_exit_status().
  *
- * This function can block, use g_tls_database_lookup_certificate_issuer_async() to perform
- * the lookup operation asynchronously.
+ * This is the asynchronous version of g_subprocess_wait_check().
  *
- * Returns: (transfer full): a newly allocated issuer #GTlsCertificate,
- * or %NULL. Use g_object_unref() to release the certificate.
- * Since: 2.30
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_lookup_certificate_issuer_async:
- * @self: a #GTlsDatabase
- * @certificate: a #GTlsCertificate
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: flags which affect the lookup operation
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the operation completes
- * @user_data: the data to pass to the callback function
+ * g_subprocess_wait_check_finish:
+ * @subprocess: a #GSubprocess
+ * @result: the #GAsyncResult passed to your #GAsyncReadyCallback
+ * @error: a pointer to a %NULL #GError, or %NULL
  *
- * Asynchronously lookup the issuer of @certificate in the database. See
- * g_tls_database_lookup_certificate_issuer() for more information.
+ * Collects the result of a previous call to
+ * g_subprocess_wait_check_async().
  *
- * Since: 2.30
+ * Returns: %TRUE if successful, or %FALSE with @error set
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_lookup_certificate_issuer_finish:
- * @self: a #GTlsDatabase
- * @result: a #GAsyncResult.
- * @error: a #GError pointer, or %NULL
+ * g_subprocess_wait_finish:
+ * @subprocess: a #GSubprocess
+ * @result: the #GAsyncResult passed to your #GAsyncReadyCallback
+ * @error: a pointer to a %NULL #GError, or %NULL
  *
- * Finish an asynchronous lookup issuer operation. See
- * g_tls_database_lookup_certificate_issuer() for more information.
+ * Collects the result of a previous call to
+ * g_subprocess_wait_async().
  *
- * Returns: (transfer full): a newly allocated issuer #GTlsCertificate,
- * or %NULL. Use g_object_unref() to release the certificate.
- * Since: 2.30
+ * Returns: %TRUE if successful, or %FALSE with @error set
+ * Since: 2.40
  */
 
 
 /**
- * g_tls_database_lookup_certificates_issued_by:
- * @self: a #GTlsDatabase
- * @issuer_raw_dn: a #GByteArray which holds the DER encoded issuer DN.
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: Flags which affect the lookup operation.
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: (nullable): a #GError, or %NULL
+ * g_task_attach_source:
+ * @task: a #GTask
+ * @source: the source to attach
+ * @callback: the callback to invoke when @source triggers
  *
- * Lookup certificates issued by this issuer in the database.
+ * 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 [priority][io-priority], and sets @source's
+ * callback to @callback, with @task as the callback's `user_data`.
  *
- * This function can block, use g_tls_database_lookup_certificates_issued_by_async() to perform
- * the lookup operation asynchronously.
+ * This takes a reference on @task until @source is destroyed.
  *
- * Returns: (transfer full) (element-type GTlsCertificate): a newly allocated list of #GTlsCertificate
- * objects. Use g_object_unref() on each certificate, and g_list_free() on the release the list.
- * Since: 2.30
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_database_lookup_certificates_issued_by_async:
- * @self: a #GTlsDatabase
- * @issuer_raw_dn: a #GByteArray which holds the DER encoded issuer DN.
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: Flags which affect the lookup operation.
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the operation completes
- * @user_data: the data to pass to the callback function
- *
- * Asynchronously lookup certificates issued by this issuer in the database. See
- * g_tls_database_lookup_certificates_issued_by() for more information.
+ * g_task_get_cancellable:
+ * @task: a #GTask
  *
- * The database may choose to hold a reference to the issuer byte array for the duration
- * of of this asynchronous operation. The byte array should not be modified during
- * this time.
+ * Gets @task's #GCancellable
  *
- * Since: 2.30
+ * Returns: (transfer none): @task's #GCancellable
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_database_lookup_certificates_issued_by_finish:
- * @self: a #GTlsDatabase
- * @result: a #GAsyncResult.
- * @error: a #GError pointer, or %NULL
+ * g_task_get_check_cancellable:
+ * @task: the #GTask
  *
- * Finish an asynchronous lookup of certificates. See
- * g_tls_database_lookup_certificates_issued_by() for more information.
+ * Gets @task's check-cancellable flag. See
+ * g_task_set_check_cancellable() for more details.
  *
- * Returns: (transfer full) (element-type GTlsCertificate): a newly allocated list of #GTlsCertificate
- * objects. Use g_object_unref() on each certificate, and g_list_free() on the release the list.
- * Since: 2.30
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_database_verify_chain:
- * @self: a #GTlsDatabase
- * @chain: a #GTlsCertificate chain
- * @purpose: the purpose that this certificate chain will be used for.
- * @identity: (nullable): the expected peer identity
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: additional verify flags
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @error: (nullable): a #GError, or %NULL
- *
- * Determines the validity of a certificate chain after looking up and
- * adding any missing certificates to the chain.
+ * g_task_get_completed:
+ * @task: a #GTask.
  *
- * @chain is a chain of #GTlsCertificate objects each pointing to the next
- * certificate in the chain by its #GTlsCertificate:issuer property. The chain may initially
- * consist of one or more certificates. After the verification process is
- * complete, @chain may be modified by adding missing certificates, or removing
- * extra certificates. If a certificate anchor was found, then it is added to
- * the @chain.
+ * Gets the value of #GTask:completed. This changes from %FALSE to %TRUE after
+ * the task’s callback is invoked, and will return %FALSE if called from inside
+ * the callback.
  *
- * @purpose describes the purpose (or usage) for which the certificate
- * is being used. Typically @purpose will be set to #G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER
- * which means that the certificate is being used to authenticate a server
- * (and we are acting as the client).
+ * Returns: %TRUE if the task has completed, %FALSE otherwise.
+ * Since: 2.44
+ */
+
+
+/**
+ * g_task_get_context:
+ * @task: a #GTask
  *
- * The @identity is used to check for pinned certificates (trust exceptions)
- * in the database. These will override the normal verification process on a
- * host by host basis.
+ * Gets the #GMainContext that @task will return its result in (that
+ * is, the context that was the
+ * [thread-default main context][g-main-context-push-thread-default]
+ * at the point when @task was created).
  *
- * Currently there are no @flags, and %G_TLS_DATABASE_VERIFY_NONE should be
- * used.
+ * This will always return a non-%NULL value, even if the task's
+ * context is the default #GMainContext.
  *
- * If @chain is found to be valid, then the return value will be 0. If
- * @chain is found to be invalid, then the return value will indicate
- * the problems found. If the function is unable to determine whether
- * @chain is valid or not (eg, because @cancellable is triggered
- * before it completes) then the return value will be
- * %G_TLS_CERTIFICATE_GENERIC_ERROR and @error will be set
- * accordingly. @error is not set when @chain is successfully analyzed
- * but found to be invalid.
+ * Returns: (transfer none): @task's #GMainContext
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_priority:
+ * @task: a #GTask
  *
- * This function can block, use g_tls_database_verify_chain_async() to perform
- * the verification operation asynchronously.
+ * Gets @task's priority
  *
- * Returns: the appropriate #GTlsCertificateFlags which represents the
- * result of verification.
- * Since: 2.30
+ * Returns: @task's priority
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_database_verify_chain_async:
- * @self: a #GTlsDatabase
- * @chain: a #GTlsCertificate chain
- * @purpose: the purpose that this certificate chain will be used for.
- * @identity: (nullable): the expected peer identity
- * @interaction: (nullable): used to interact with the user if necessary
- * @flags: additional verify flags
- * @cancellable: (nullable): a #GCancellable, or %NULL
- * @callback: callback to call when the operation completes
- * @user_data: the data to pass to the callback function
+ * g_task_get_return_on_cancel:
+ * @task: the #GTask
  *
- * Asynchronously determines the validity of a certificate chain after
- * looking up and adding any missing certificates to the chain. See
- * g_tls_database_verify_chain() for more information.
+ * Gets @task's return-on-cancel flag. See
+ * g_task_set_return_on_cancel() for more details.
  *
- * Since: 2.30
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_database_verify_chain_finish:
- * @self: a #GTlsDatabase
- * @result: a #GAsyncResult.
- * @error: a #GError pointer, or %NULL
- *
- * Finish an asynchronous verify chain operation. See
- * g_tls_database_verify_chain() for more information.
+ * g_task_get_source_object:
+ * @task: a #GTask
  *
- * If @chain is found to be valid, then the return value will be 0. If
- * @chain is found to be invalid, then the return value will indicate
- * the problems found. If the function is unable to determine whether
- * @chain is valid or not (eg, because @cancellable is triggered
- * before it completes) then the return value will be
- * %G_TLS_CERTIFICATE_GENERIC_ERROR and @error will be set
- * accordingly. @error is not set when @chain is successfully analyzed
- * but found to be invalid.
+ * Gets the source object from @task. Like
+ * g_async_result_get_source_object(), but does not ref the object.
  *
- * Returns: the appropriate #GTlsCertificateFlags which represents the
- * result of verification.
- * Since: 2.30
+ * Returns: (transfer none) (nullable) (type GObject): @task's source object, or %NULL
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_error_quark:
+ * g_task_get_source_tag:
+ * @task: a #GTask
  *
- * Gets the TLS error quark.
+ * Gets @task's source tag. See g_task_set_source_tag().
  *
- * Returns: a #GQuark.
- * Since: 2.28
+ * Returns: (transfer none): @task's source tag
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_file_database_new:
- * @anchors: (type filename): filename of anchor certificate authorities.
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Creates a new #GTlsFileDatabase which uses anchor certificate authorities
- * in @anchors to verify certificate chains.
+ * g_task_get_task_data:
+ * @task: a #GTask
  *
- * The certificates in @anchors must be PEM encoded.
+ * Gets @task's `task_data`.
  *
- * Returns: (transfer full) (type GTlsFileDatabase): the new
- * #GTlsFileDatabase, or %NULL on error
- * Since: 2.30
+ * Returns: (transfer none): @task's `task_data`.
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_ask_password:
- * @interaction: a #GTlsInteraction object
- * @password: a #GTlsPassword object
- * @cancellable: an optional #GCancellable cancellation object
- * @error: an optional location to place an error on failure
+ * g_task_had_error:
+ * @task: a #GTask.
  *
- * Run synchronous interaction to ask the user for a password. In general,
- * g_tls_interaction_invoke_ask_password() should be used instead of this
- * function.
+ * Tests if @task resulted in an error.
  *
- * Derived subclasses usually implement a password prompt, although they may
- * also choose to provide a password from elsewhere. The @password value will
- * be filled in and then @callback will be called. Alternatively the user may
- * abort this password request, which will usually abort the TLS connection.
+ * Returns: %TRUE if the task resulted in an error, %FALSE otherwise.
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_is_valid:
+ * @result: (type Gio.AsyncResult): A #GAsyncResult
+ * @source_object: (nullable) (type GObject): the source object
+ *   expected to be associated with the task
  *
- * If the interaction is cancelled by the cancellation object, or by the
- * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
- * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
- * not support immediate cancellation.
+ * 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.
  *
- * Returns: The status of the ask password interaction.
- * Since: 2.30
+ * Returns: %TRUE if @result and @source_object are valid, %FALSE
+ * if not
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_ask_password_async:
- * @interaction: a #GTlsInteraction object
- * @password: a #GTlsPassword object
- * @cancellable: an optional #GCancellable cancellation object
- * @callback: (nullable): will be called when the interaction completes
- * @user_data: (nullable): data to pass to the @callback
- *
- * Run asynchronous interaction to ask the user for a password. In general,
- * g_tls_interaction_invoke_ask_password() should be used instead of this
- * function.
+ * g_task_new:
+ * @source_object: (nullable) (type GObject): the #GObject that owns
+ *   this task, or %NULL.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @callback_data: (closure): user data passed to @callback.
  *
- * Derived subclasses usually implement a password prompt, although they may
- * also choose to provide a password from elsewhere. The @password value will
- * be filled in and then @callback will be called. Alternatively the user may
- * abort this password request, which will usually abort the TLS connection.
+ * Creates a #GTask acting on @source_object, which will eventually be
+ * used to invoke @callback in the current
+ * [thread-default main context][g-main-context-push-thread-default].
  *
- * If the interaction is cancelled by the cancellation object, or by the
- * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
- * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
- * not support immediate cancellation.
+ * Call this in the "start" 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().
  *
- * Certain implementations may not support immediate cancellation.
+ * 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.30
+ * Returns: a #GTask.
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_ask_password_finish:
- * @interaction: a #GTlsInteraction object
- * @result: the result passed to the callback
- * @error: an optional location to place an error on failure
+ * g_task_propagate_boolean:
+ * @task: a #GTask.
+ * @error: return location for a #GError
  *
- * Complete an ask password user interaction request. This should be once
- * the g_tls_interaction_ask_password_async() completion callback is called.
+ * Gets the result of @task as a #gboolean.
  *
- * If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsPassword passed
- * to g_tls_interaction_ask_password() will have its password filled in.
+ * If the task resulted in an error, or was cancelled, then this will
+ * instead return %FALSE and set @error.
  *
- * If the interaction is cancelled by the cancellation object, or by the
- * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
- * contains a %G_IO_ERROR_CANCELLED error code.
+ * Since this method transfers ownership of the return value (or
+ * error) to the caller, you may only call it once.
  *
- * Returns: The status of the ask password interaction.
- * Since: 2.30
+ * Returns: the task result, or %FALSE on error
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_invoke_ask_password:
- * @interaction: a #GTlsInteraction object
- * @password: a #GTlsPassword object
- * @cancellable: an optional #GCancellable cancellation object
- * @error: an optional location to place an error on failure
- *
- * Invoke the interaction to ask the user for a password. It invokes this
- * interaction in the main loop, specifically the #GMainContext returned by
- * g_main_context_get_thread_default() when the interaction is created. This
- * is called by called by #GTlsConnection or #GTlsDatabase to ask the user
- * for a password.
+ * g_task_propagate_int:
+ * @task: a #GTask.
+ * @error: return location for a #GError
  *
- * Derived subclasses usually implement a password prompt, although they may
- * also choose to provide a password from elsewhere. The @password value will
- * be filled in and then @callback will be called. Alternatively the user may
- * abort this password request, which will usually abort the TLS connection.
+ * Gets the result of @task as an integer (#gssize).
  *
- * The implementation can either be a synchronous (eg: modal dialog) or an
- * asynchronous one (eg: modeless dialog). This function will take care of
- * calling which ever one correctly.
+ * If the task resulted in an error, or was cancelled, then this will
+ * instead return -1 and set @error.
  *
- * If the interaction is cancelled by the cancellation object, or by the
- * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
- * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
- * not support immediate cancellation.
+ * Since this method transfers ownership of the return value (or
+ * error) to the caller, you may only call it once.
  *
- * Returns: The status of the ask password interaction.
- * Since: 2.30
+ * Returns: the task result, or -1 on error
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_invoke_request_certificate:
- * @interaction: a #GTlsInteraction object
- * @connection: a #GTlsConnection object
- * @flags: flags providing more information about the request
- * @cancellable: an optional #GCancellable cancellation object
- * @error: an optional location to place an error on failure
- *
- * Invoke the interaction to ask the user to choose a certificate to
- * use with the connection. It invokes this interaction in the main
- * loop, specifically the #GMainContext returned by
- * g_main_context_get_thread_default() when the interaction is
- * created. This is called by called by #GTlsConnection when the peer
- * requests a certificate during the handshake.
+ * g_task_propagate_pointer:
+ * @task: a #GTask
+ * @error: return location for a #GError
  *
- * Derived subclasses usually implement a certificate selector,
- * although they may also choose to provide a certificate from
- * elsewhere. Alternatively the user may abort this certificate
- * request, which may or may not abort the TLS connection.
+ * Gets the result of @task as a pointer, and transfers ownership
+ * of that value to the caller.
  *
- * The implementation can either be a synchronous (eg: modal dialog) or an
- * asynchronous one (eg: modeless dialog). This function will take care of
- * calling which ever one correctly.
+ * If the task resulted in an error, or was cancelled, then this will
+ * instead return %NULL and set @error.
  *
- * If the interaction is cancelled by the cancellation object, or by the
- * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
- * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
- * not support immediate cancellation.
+ * Since this method transfers ownership of the return value (or
+ * error) to the caller, you may only call it once.
  *
- * Returns: The status of the certificate request interaction.
- * Since: 2.40
+ * Returns: (transfer full): the task result, or %NULL on error
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_request_certificate:
- * @interaction: a #GTlsInteraction object
- * @connection: a #GTlsConnection object
- * @flags: flags providing more information about the request
- * @cancellable: an optional #GCancellable cancellation object
- * @error: an optional location to place an error on failure
+ * g_task_report_error:
+ * @source_object: (nullable) (type GObject): the #GObject that owns
+ *   this task, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @callback_data: (closure): user data passed to @callback.
+ * @source_tag: an opaque pointer indicating the source of this task
+ * @error: (transfer full): error to report
  *
- * Run synchronous interaction to ask the user to choose a certificate to use
- * with the connection. In general, g_tls_interaction_invoke_request_certificate()
- * should be used instead of this function.
+ * 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.
  *
- * Derived subclasses usually implement a certificate selector, although they may
- * also choose to provide a certificate from elsewhere. Alternatively the user may
- * abort this certificate request, which will usually abort the TLS connection.
+ * See also g_task_report_new_error().
  *
- * If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsConnection
- * passed to g_tls_interaction_request_certificate() will have had its
- * #GTlsConnection:certificate filled in.
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_report_new_error:
+ * @source_object: (nullable) (type GObject): the #GObject that owns
+ *   this task, or %NULL.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @callback_data: (closure): user data passed to @callback.
+ * @source_tag: an opaque pointer indicating the source of this task
+ * @domain: a #GQuark.
+ * @code: an error code.
+ * @format: a string with format characters.
+ * @...: a list of values to insert into @format.
  *
- * If the interaction is cancelled by the cancellation object, or by the
- * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
- * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
- * not support immediate cancellation.
+ * 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.
  *
- * Returns: The status of the request certificate interaction.
- * Since: 2.40
+ * See also g_task_report_error().
+ *
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_request_certificate_async:
- * @interaction: a #GTlsInteraction object
- * @connection: a #GTlsConnection object
- * @flags: flags providing more information about the request
- * @cancellable: an optional #GCancellable cancellation object
- * @callback: (nullable): will be called when the interaction completes
- * @user_data: (nullable): data to pass to the @callback
- *
- * Run asynchronous interaction to ask the user for a certificate to use with
- * the connection. In general, g_tls_interaction_invoke_request_certificate() should
- * be used instead of this function.
+ * g_task_return_boolean:
+ * @task: a #GTask.
+ * @result: the #gboolean result of a task function.
  *
- * Derived subclasses usually implement a certificate selector, although they may
- * also choose to provide a certificate from elsewhere. @callback will be called
- * when the operation completes. Alternatively the user may abort this certificate
- * request, which will usually abort the TLS connection.
+ * 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.40
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_interaction_request_certificate_finish:
- * @interaction: a #GTlsInteraction object
- * @result: the result passed to the callback
- * @error: an optional location to place an error on failure
+ * g_task_return_error:
+ * @task: a #GTask.
+ * @error: (transfer full): the #GError result of a task function.
  *
- * Complete an request certificate user interaction request. This should be once
- * the g_tls_interaction_request_certificate_async() completion callback is called.
+ * 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).
  *
- * If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsConnection
- * passed to g_tls_interaction_request_certificate_async() will have had its
- * #GTlsConnection:certificate filled in.
+ * 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.
  *
- * If the interaction is cancelled by the cancellation object, or by the
- * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
- * contains a %G_IO_ERROR_CANCELLED error code.
+ * See also g_task_return_new_error().
  *
- * Returns: The status of the request certificate interaction.
- * Since: 2.40
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_get_description:
- * @password: a #GTlsPassword object
+ * g_task_return_error_if_cancelled:
+ * @task: a #GTask
  *
- * Get a description string about what the password will be used for.
+ * 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).
  *
- * Returns: The description of the password.
- * Since: 2.30
+ * Returns: %TRUE if @task has been cancelled, %FALSE if not
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_get_flags:
- * @password: a #GTlsPassword object
+ * g_task_return_int:
+ * @task: a #GTask.
+ * @result: the integer (#gssize) result of a task function.
  *
- * Get flags about the password.
+ * Sets @task's result to @result and completes the task (see
+ * g_task_return_pointer() for more discussion of exactly what this
+ * means).
  *
- * Returns: The flags about the password.
- * Since: 2.30
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_get_value:
- * @password: a #GTlsPassword object
- * @length: (nullable): location to place the length of the password.
+ * g_task_return_new_error:
+ * @task: a #GTask.
+ * @domain: a #GQuark.
+ * @code: an error code.
+ * @format: a string with format characters.
+ * @...: a list of values to insert into @format.
  *
- * Get the password value. If @length is not %NULL then it will be
- * filled in with the length of the password value. (Note that the
- * password value is not nul-terminated, so you can only pass %NULL
- * for @length in contexts where you know the password will have a
- * certain fixed length.)
+ * 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).
  *
- * Returns: The password value (owned by the password object).
- * Since: 2.30
+ * See also g_task_return_error().
+ *
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_get_warning:
- * @password: a #GTlsPassword object
+ * g_task_return_pointer:
+ * @task: a #GTask
+ * @result: (nullable) (transfer full): the pointer result of a task
+ *     function
+ * @result_destroy: (nullable): a #GDestroyNotify function.
  *
- * Get a user readable translated warning. Usually this warning is a
- * representation of the password flags returned from
- * g_tls_password_get_flags().
+ * 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().
  *
- * Returns: The warning.
- * Since: 2.30
+ * "Completes the task" 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
  */
 
 
 /**
- * g_tls_password_new:
- * @flags: the password flags
- * @description: description of what the password is for
+ * g_task_run_in_thread:
+ * @task: a #GTask
+ * @task_func: a #GTaskThreadFunc
  *
- * Create a new #GTlsPassword object.
+ * Runs @task_func in another thread. When @task_func returns, @task's
+ * #GAsyncReadyCallback will be invoked in @task's #GMainContext.
  *
- * Returns: (transfer full): The newly allocated password object
+ * This takes a ref on @task until the task completes.
+ *
+ * See #GTaskThreadFunc for more details about how @task_func is handled.
+ *
+ * Although GLib currently rate-limits the tasks queued via
+ * g_task_run_in_thread(), you should not assume that it will always
+ * do this. If you have a very large number of tasks to run, but don't
+ * want them to all run at once, you should only queue a limited
+ * number of them at a time.
+ *
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_set_description:
- * @password: a #GTlsPassword object
- * @description: The description of the password
+ * g_task_run_in_thread_sync:
+ * @task: a #GTask
+ * @task_func: a #GTaskThreadFunc
  *
- * Set a description string about what the password will be used for.
+ * 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.
  *
- * Since: 2.30
+ * See #GTaskThreadFunc for more details about how @task_func is handled.
+ *
+ * Normally this is used with tasks created with a %NULL
+ * `callback`, but note that even if the task does
+ * have a callback, it will not be invoked when @task_func returns.
+ * #GTask:completed will be set to %TRUE just before this function returns.
+ *
+ * Although GLib currently rate-limits the tasks queued via
+ * g_task_run_in_thread_sync(), you should not assume that it will
+ * always do this. If you have a very large number of tasks to run,
+ * but don't want them to all run at once, you should only queue a
+ * limited number of them at a time.
+ *
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_set_flags:
- * @password: a #GTlsPassword object
- * @flags: The flags about the password
+ * g_task_set_check_cancellable:
+ * @task: the #GTask
+ * @check_cancellable: whether #GTask will check the state of
+ *   its #GCancellable for you.
  *
- * Set flags about the password.
+ * 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 "Operation was cancelled" error
+ * (%G_IO_ERROR_CANCELLED), regardless of any other error or return
+ * value the task may have had.
  *
- * Since: 2.30
+ * 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
  */
 
 
 /**
- * g_tls_password_set_value:
- * @password: a #GTlsPassword object
- * @value: (array length=length): the new password value
- * @length: the length of the password, or -1
+ * g_task_set_priority:
+ * @task: the #GTask
+ * @priority: the [priority][io-priority] of the request
  *
- * Set the value for this password. The @value will be copied by the password
- * object.
+ * Sets @task's priority. If you do not call this, it will default to
+ * %G_PRIORITY_DEFAULT.
  *
- * Specify the @length, for a non-nul-terminated password. Pass -1 as
- * @length if using a nul-terminated password, and @length will be
- * calculated automatically. (Note that the terminating nul is not
- * considered part of the password in this case.)
+ * 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.30
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_set_value_full: (virtual set_value)
- * @password: a #GTlsPassword object
- * @value: (array length=length): the value for the password
- * @length: the length of the password, or -1
- * @destroy: (nullable): a function to use to free the password.
+ * g_task_set_return_on_cancel:
+ * @task: the #GTask
+ * @return_on_cancel: whether the task returns automatically when
+ *   it is cancelled.
  *
- * Provide the value for this password.
+ * 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().
  *
- * The @value will be owned by the password object, and later freed using
- * the @destroy function callback.
+ * 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.
  *
- * Specify the @length, for a non-nul-terminated password. Pass -1 as
- * @length if using a nul-terminated password, and @length will be
- * calculated automatically. (Note that the terminating nul is not
- * considered part of the password in this case.)
+ * 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.
  *
- * Since: 2.30
+ * 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.
+ *
+ * Returns: %TRUE if @task's return-on-cancel flag was changed to
+ *   match @return_on_cancel. %FALSE if @task has already been
+ *   cancelled.
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_password_set_warning:
- * @password: a #GTlsPassword object
- * @warning: The user readable warning
+ * g_task_set_source_tag:
+ * @task: the #GTask
+ * @source_tag: an opaque pointer indicating the source of this task
  *
- * Set a user readable translated warning. Usually this warning is a
- * representation of the password flags returned from
- * g_tls_password_get_flags().
+ * 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 "finish" function, to figure out if the response came from a
+ * particular place.
  *
- * Since: 2.30
+ * Since: 2.36
  */
 
 
 /**
- * g_tls_server_connection_new:
- * @base_io_stream: the #GIOStream to wrap
- * @certificate: (nullable): the default server certificate, or %NULL
- * @error: #GError for error reporting, or %NULL to ignore.
- *
- * Creates a new #GTlsServerConnection wrapping @base_io_stream (which
- * must have pollable input and output streams).
+ * g_task_set_task_data:
+ * @task: the #GTask
+ * @task_data: (nullable): task-specific data
+ * @task_data_destroy: (nullable): #GDestroyNotify for @task_data
  *
- * See the documentation for #GTlsConnection:base-io-stream for restrictions
- * on when application code can run operations on the @base_io_stream after
- * this function has returned.
+ * Sets @task's task data (freeing the existing task data, if any).
  *
- * Returns: (transfer full) (type GTlsServerConnection): the new
- * #GTlsServerConnection, or %NULL on error
- * Since: 2.28
+ * Since: 2.36
  */
 
 
 /**
- * g_unix_connection_receive_credentials:
- * @connection: A #GUnixConnection.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Receives credentials from the sending end of the connection.  The
- * sending end has to call g_unix_connection_send_credentials() (or
- * similar) for this to work.
- *
- * As well as reading the credentials this also reads (and discards) a
- * single byte from the stream, as this is required for credentials
- * passing to work on some implementations.
+ * g_tcp_connection_get_graceful_disconnect:
+ * @connection: a #GTcpConnection
  *
- * Other ways to exchange credentials with a foreign peer includes the
- * #GUnixCredentialsMessage type and g_socket_get_credentials() function.
+ * Checks if graceful disconnects are used. See
+ * g_tcp_connection_set_graceful_disconnect().
  *
- * Returns: (transfer full): Received credentials on success (free with
- * g_object_unref()), %NULL if @error is set.
- * Since: 2.26
+ * Returns: %TRUE if graceful disconnect is used on close, %FALSE otherwise
+ * Since: 2.22
  */
 
 
 /**
- * g_unix_connection_receive_credentials_async:
- * @connection: A #GUnixConnection.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_tcp_connection_set_graceful_disconnect:
+ * @connection: a #GTcpConnection
+ * @graceful_disconnect: Whether to do graceful disconnects or not
  *
- * Asynchronously receive credentials.
+ * This enables graceful disconnects on close. A graceful disconnect
+ * means that we signal the receiving end that the connection is terminated
+ * and wait for it to close the connection before closing the connection.
  *
- * For more details, see g_unix_connection_receive_credentials() which is
- * the synchronous version of this call.
+ * A graceful disconnect means that we can be sure that we successfully sent
+ * all the outstanding data to the other end, or get an error reported.
+ * However, it also means we have to wait for all the data to reach the
+ * other side and for it to acknowledge this by closing the socket, which may
+ * take a while. For this reason it is disabled by default.
  *
- * When the operation is finished, @callback will be called. You can then call
- * g_unix_connection_receive_credentials_finish() to get the result of the operation.
+ * Since: 2.22
+ */
+
+
+/**
+ * g_tcp_wrapper_connection_get_base_io_stream:
+ * @conn: a #GTcpWrapperConnection
  *
- * Since: 2.32
+ * Get's @conn's base #GIOStream
+ *
+ * Returns: (transfer none): @conn's base #GIOStream
  */
 
 
 /**
- * g_unix_connection_receive_credentials_finish:
- * @connection: A #GUnixConnection.
- * @result: a #GAsyncResult.
- * @error: a #GError, or %NULL
+ * g_tcp_wrapper_connection_new:
+ * @base_io_stream: the #GIOStream to wrap
+ * @socket: the #GSocket associated with @base_io_stream
  *
- * Finishes an asynchronous receive credentials operation started with
- * g_unix_connection_receive_credentials_async().
+ * Wraps @base_io_stream and @socket together as a #GSocketConnection.
  *
- * Returns: (transfer full): a #GCredentials, or %NULL on error.
- *     Free the returned object with g_object_unref().
- * Since: 2.32
+ * Returns: the new #GSocketConnection.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_connection_receive_fd:
- * @connection: a #GUnixConnection
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @error: (nullable): #GError for error reporting, or %NULL to ignore
+ * g_test_dbus_add_service_dir:
+ * @self: a #GTestDBus
+ * @path: path to a directory containing .service files
  *
- * Receives a file descriptor from the sending end of the connection.
- * The sending end has to call g_unix_connection_send_fd() for this
- * to work.
+ * Add a path where dbus-daemon will look up .service files. This can't be
+ * called after g_test_dbus_up().
+ */
+
+
+/**
+ * g_test_dbus_down:
+ * @self: a #GTestDBus
  *
- * As well as reading the fd this also reads a single byte from the
- * stream, as this is required for fd passing to work on some
- * implementations.
+ * Stop the session bus started by g_test_dbus_up().
  *
- * Returns: a file descriptor on success, -1 on error.
- * Since: 2.22
+ * This will wait for the singleton returned by g_bus_get() or g_bus_get_sync()
+ * is destroyed. This is done to ensure that the next unit test won't get a
+ * leaked singleton from this test.
  */
 
 
 /**
- * g_unix_connection_send_credentials:
- * @connection: A #GUnixConnection.
- * @cancellable: (nullable): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_test_dbus_get_bus_address:
+ * @self: a #GTestDBus
  *
- * Passes the credentials of the current user the receiving side
- * of the connection. The receiving end has to call
- * g_unix_connection_receive_credentials() (or similar) to accept the
- * credentials.
+ * Get the address on which dbus-daemon is running. If g_test_dbus_up() has not
+ * been called yet, %NULL is returned. This can be used with
+ * g_dbus_connection_new_for_address().
  *
- * As well as sending the credentials this also writes a single NUL
- * byte to the stream, as this is required for credentials passing to
- * work on some implementations.
+ * Returns: (nullable): the address of the bus, or %NULL.
+ */
+
+
+/**
+ * g_test_dbus_get_flags:
+ * @self: a #GTestDBus
  *
- * Other ways to exchange credentials with a foreign peer includes the
- * #GUnixCredentialsMessage type and g_socket_get_credentials() function.
+ * Get the flags of the #GTestDBus object.
  *
- * Returns: %TRUE on success, %FALSE if @error is set.
- * Since: 2.26
+ * Returns: the value of #GTestDBus:flags property
  */
 
 
 /**
- * g_unix_connection_send_credentials_async:
- * @connection: A #GUnixConnection.
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
- * @user_data: (closure): the data to pass to callback function
+ * g_test_dbus_new:
+ * @flags: a #GTestDBusFlags
  *
- * Asynchronously send credentials.
+ * Create a new #GTestDBus object.
  *
- * For more details, see g_unix_connection_send_credentials() which is
- * the synchronous version of this call.
+ * Returns: (transfer full): a new #GTestDBus.
+ */
+
+
+/**
+ * g_test_dbus_stop:
+ * @self: a #GTestDBus
  *
- * When the operation is finished, @callback will be called. You can then call
- * g_unix_connection_send_credentials_finish() to get the result of the operation.
+ * Stop the session bus started by g_test_dbus_up().
  *
- * Since: 2.32
+ * Unlike g_test_dbus_down(), this won't verify the #GDBusConnection
+ * singleton returned by g_bus_get() or g_bus_get_sync() is destroyed. Unit
+ * tests wanting to verify behaviour after the session bus has been stopped
+ * can use this function but should still call g_test_dbus_down() when done.
  */
 
 
 /**
- * g_unix_connection_send_credentials_finish:
- * @connection: A #GUnixConnection.
- * @result: a #GAsyncResult.
- * @error: a #GError, or %NULL
+ * g_test_dbus_unset:
  *
- * Finishes an asynchronous send credentials operation started with
- * g_unix_connection_send_credentials_async().
+ * Unset DISPLAY and DBUS_SESSION_BUS_ADDRESS env variables to ensure the test
+ * won't use user's session bus.
  *
- * Returns: %TRUE if the operation was successful, otherwise %FALSE.
- * Since: 2.32
+ * This is useful for unit tests that want to verify behaviour when no session
+ * bus is running. It is not necessary to call this if unit test already calls
+ * g_test_dbus_up() before acquiring the session bus.
  */
 
 
 /**
- * g_unix_connection_send_fd:
- * @connection: a #GUnixConnection
- * @fd: a file descriptor
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
- * @error: (nullable): #GError for error reporting, or %NULL to ignore.
+ * g_test_dbus_up:
+ * @self: a #GTestDBus
  *
- * Passes a file descriptor to the receiving side of the
- * connection. The receiving end has to call g_unix_connection_receive_fd()
- * to accept the file descriptor.
+ * 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 bus.
  *
- * As well as sending the fd this also writes a single byte to the
- * stream, as this is required for fd passing to work on some
- * implementations.
+ * If this function is called from setup callback of g_test_add(),
+ * g_test_dbus_down() must be called in its teardown callback.
  *
- * Returns: a %TRUE on success, %NULL on error.
- * Since: 2.22
+ * If this function is called from unit test's main(), then g_test_dbus_down()
+ * must be called after g_test_run().
  */
 
 
 /**
- * g_unix_credentials_message_get_credentials:
- * @message: A #GUnixCredentialsMessage.
+ * g_themed_icon_append_name:
+ * @icon: a #GThemedIcon
+ * @iconname: name of icon to append to list of icons from within @icon.
  *
- * Gets the credentials stored in @message.
+ * Append a name to the list of icons from within @icon.
  *
- * Returns: (transfer none): A #GCredentials instance. Do not free, it is owned by @message.
- * Since: 2.26
+ * Note that doing so invalidates the hash computed by prior calls
+ * to g_icon_hash().
  */
 
 
 /**
- * g_unix_credentials_message_is_supported:
+ * g_themed_icon_get_names:
+ * @icon: a #GThemedIcon.
  *
- * Checks if passing #GCredentials on a #GSocket is supported on this platform.
+ * Gets the names of icons from within @icon.
  *
- * Returns: %TRUE if supported, %FALSE otherwise
- * Since: 2.26
+ * Returns: (transfer none): a list of icon names.
  */
 
 
 /**
- * g_unix_credentials_message_new:
+ * g_themed_icon_new:
+ * @iconname: a string containing an icon name.
  *
- * Creates a new #GUnixCredentialsMessage with credentials matching the current processes.
+ * Creates a new themed icon for @iconname.
  *
- * Returns: a new #GUnixCredentialsMessage
- * Since: 2.26
+ * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon.
  */
 
 
 /**
- * g_unix_credentials_message_new_with_credentials:
- * @credentials: A #GCredentials object.
+ * g_themed_icon_new_from_names:
+ * @iconnames: (array length=len): an array of strings containing icon names.
+ * @len: the length of the @iconnames array, or -1 if @iconnames is
+ *     %NULL-terminated
  *
- * Creates a new #GUnixCredentialsMessage holding @credentials.
+ * Creates a new themed icon for @iconnames.
  *
- * Returns: a new #GUnixCredentialsMessage
- * Since: 2.26
+ * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon
  */
 
 
 /**
- * g_unix_fd_list_append:
- * @list: a #GUnixFDList
- * @fd: a valid open file descriptor
- * @error: a #GError pointer
- *
- * Adds a file descriptor to @list.
+ * g_themed_icon_new_with_default_fallbacks:
+ * @iconname: a string containing an icon name
  *
- * The file descriptor is duplicated using dup(). You keep your copy
- * of the descriptor and the copy contained in @list will be closed
- * when @list is finalized.
+ * Creates a new themed icon for @iconname, and all the names
+ * that can be created by shortening @iconname at '-' characters.
  *
- * A possible cause of failure is exceeding the per-process or
- * system-wide file descriptor limit.
+ * In the following example, @icon1 and @icon2 are equivalent:
+ * |[<!-- language="C" -->
+ * const char *names[] = {
+ *   "gnome-dev-cdrom-audio",
+ *   "gnome-dev-cdrom",
+ *   "gnome-dev",
+ *   "gnome"
+ * };
  *
- * The index of the file descriptor in the list is returned.  If you use
- * this index with g_unix_fd_list_get() then you will receive back a
- * duplicated copy of the same file descriptor.
+ * icon1 = g_themed_icon_new_from_names (names, 4);
+ * icon2 = g_themed_icon_new_with_default_fallbacks ("gnome-dev-cdrom-audio");
+ * ]|
  *
- * Returns: the index of the appended fd in case of success, else -1
- *          (and @error is set)
- * Since: 2.24
+ * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon.
  */
 
 
 /**
- * g_unix_fd_list_get:
- * @list: a #GUnixFDList
- * @index_: the index into the list
- * @error: a #GError pointer
- *
- * Gets a file descriptor out of @list.
- *
- * @index_ specifies the index of the file descriptor to get.  It is a
- * programmer error for @index_ to be out of range; see
- * g_unix_fd_list_get_length().
+ * g_themed_icon_prepend_name:
+ * @icon: a #GThemedIcon
+ * @iconname: name of icon to prepend to list of icons from within @icon.
  *
- * The file descriptor is duplicated using dup() and set as
- * close-on-exec before being returned.  You must call close() on it
- * when you are done.
+ * Prepend a name to the list of icons from within @icon.
  *
- * A possible cause of failure is exceeding the per-process or
- * system-wide file descriptor limit.
+ * Note that doing so invalidates the hash computed by prior calls
+ * to g_icon_hash().
  *
- * Returns: the file descriptor, or -1 in case of error
- * Since: 2.24
+ * Since: 2.18
  */
 
 
 /**
- * g_unix_fd_list_get_length:
- * @list: a #GUnixFDList
+ * g_themed_icon_update_names:
+ * @themed: a #GThemedIcon.
  *
- * Gets the length of @list (ie: the number of file descriptors
- * contained within).
+ * Update the actual icon name list, based on the requested names (from
+ * construction, or later added with g_themed_icon_prepend_name() and
+ * g_themed_icon_append_name()).
+ * The order of the list matters, indicating priority:
+ * - The first requested icon is first in priority.
+ * - If "use-default-fallbacks" is #TRUE, then it is followed by all its
+ *   fallbacks (starting from top to lower context levels).
+ * - Then next requested icons, and optionally their fallbacks, follow.
+ * - Finally all the style variants (symbolic or regular, opposite to whatever
+ *   is the requested style) follow in the same order.
  *
- * Returns: the length of @list
- * Since: 2.24
+ * An icon is not added twice in the list if it was previously added.
+ *
+ * For instance, if requested names are:
+ * [ "some-icon-symbolic", "some-other-icon" ]
+ * and use-default-fallbacks is TRUE, the final name list shall be:
+ * [ "some-icon-symbolic", "some-symbolic", "some-other-icon",
+ *   "some-other", "some", "some-icon", "some-other-icon-symbolic",
+ *   "some-other-symbolic" ]
+ *
+ * Returns: (transfer full) (type GThemedIcon): a new #GThemedIcon
  */
 
 
 /**
- * g_unix_fd_list_new:
+ * g_threaded_socket_service_new:
+ * @max_threads: the maximal number of threads to execute concurrently
+ *   handling incoming clients, -1 means no limit
  *
- * Creates a new #GUnixFDList containing no file descriptors.
+ * Creates a new #GThreadedSocketService with no listeners. Listeners
+ * must be added with one of the #GSocketListener "add" methods.
  *
- * Returns: a new #GUnixFDList
- * Since: 2.24
+ * Returns: a new #GSocketService.
+ * Since: 2.22
  */
 
 
 /**
- * g_unix_fd_list_new_from_array:
- * @fds: (array length=n_fds): the initial list of file descriptors
- * @n_fds: the length of #fds, or -1
+ * g_tls_backend_get_certificate_type:
+ * @backend: the #GTlsBackend
  *
- * Creates a new #GUnixFDList containing the file descriptors given in
- * @fds.  The file descriptors become the property of the new list and
- * may no longer be used by the caller.  The array itself is owned by
- * the caller.
+ * Gets the #GType of @backend's #GTlsCertificate implementation.
  *
- * Each file descriptor in the array should be set to close-on-exec.
+ * Returns: the #GType of @backend's #GTlsCertificate
+ *   implementation.
+ * Since: 2.28
+ */
+
+
+/**
+ * g_tls_backend_get_client_connection_type:
+ * @backend: the #GTlsBackend
  *
- * If @n_fds is -1 then @fds must be terminated with -1.
+ * Gets the #GType of @backend's #GTlsClientConnection implementation.
  *
- * Returns: a new #GUnixFDList
- * Since: 2.24
+ * Returns: the #GType of @backend's #GTlsClientConnection
+ *   implementation.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_fd_list_peek_fds:
- * @list: a #GUnixFDList
- * @length: (out) (optional): pointer to the length of the returned
- *     array, or %NULL
- *
- * Returns the array of file descriptors that is contained in this
- * object.
+ * g_tls_backend_get_default:
  *
- * After this call, the descriptors remain the property of @list.  The
- * caller must not close them and must not free the array.  The array is
- * valid only until @list is changed in any way.
+ * Gets the default #GTlsBackend for the system.
  *
- * If @length is non-%NULL then it is set to the number of file
- * descriptors in the returned array. The returned array is also
- * terminated with -1.
+ * Returns: (transfer none): a #GTlsBackend
+ * Since: 2.28
+ */
+
+
+/**
+ * g_tls_backend_get_default_database:
+ * @backend: the #GTlsBackend
  *
- * This function never returns %NULL. In case there are no file
- * descriptors contained in @list, an empty array is returned.
+ * Gets the default #GTlsDatabase used to verify TLS connections.
  *
- * Returns: (array length=length) (transfer none): an array of file
- *     descriptors
- * Since: 2.24
+ * Returns: (transfer full): the default database, which should be
+ *               unreffed when done.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_fd_list_steal_fds:
- * @list: a #GUnixFDList
- * @length: (out) (optional): pointer to the length of the returned
- *     array, or %NULL
+ * g_tls_backend_get_dtls_client_connection_type:
+ * @backend: the #GTlsBackend
  *
- * Returns the array of file descriptors that is contained in this
- * object.
+ * Gets the #GType of @backend’s #GDtlsClientConnection implementation.
  *
- * After this call, the descriptors are no longer contained in
- * @list. Further calls will return an empty list (unless more
- * descriptors have been added).
+ * Returns: the #GType of @backend’s #GDtlsClientConnection
+ *   implementation, or %G_TYPE_INVALID if this backend doesn’t support DTLS.
+ * Since: 2.48
+ */
+
+
+/**
+ * g_tls_backend_get_dtls_server_connection_type:
+ * @backend: the #GTlsBackend
  *
- * The return result of this function must be freed with g_free().
- * The caller is also responsible for closing all of the file
- * descriptors.  The file descriptors in the array are set to
- * close-on-exec.
+ * Gets the #GType of @backend’s #GDtlsServerConnection implementation.
  *
- * If @length is non-%NULL then it is set to the number of file
- * descriptors in the returned array. The returned array is also
- * terminated with -1.
+ * Returns: the #GType of @backend’s #GDtlsServerConnection
+ *   implementation, or %G_TYPE_INVALID if this backend doesn’t support DTLS.
+ * Since: 2.48
+ */
+
+
+/**
+ * g_tls_backend_get_file_database_type:
+ * @backend: the #GTlsBackend
  *
- * This function never returns %NULL. In case there are no file
- * descriptors contained in @list, an empty array is returned.
+ * Gets the #GType of @backend's #GTlsFileDatabase implementation.
  *
- * Returns: (array length=length) (transfer full): an array of file
- *     descriptors
- * Since: 2.24
+ * Returns: the #GType of backend's #GTlsFileDatabase implementation.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_fd_message_append_fd:
- * @message: a #GUnixFDMessage
- * @fd: a valid open file descriptor
- * @error: a #GError pointer
+ * g_tls_backend_get_server_connection_type:
+ * @backend: the #GTlsBackend
  *
- * Adds a file descriptor to @message.
+ * Gets the #GType of @backend's #GTlsServerConnection implementation.
  *
- * The file descriptor is duplicated using dup(). You keep your copy
- * of the descriptor and the copy contained in @message will be closed
- * when @message is finalized.
+ * Returns: the #GType of @backend's #GTlsServerConnection
+ *   implementation.
+ * Since: 2.28
+ */
+
+
+/**
+ * g_tls_backend_supports_dtls:
+ * @backend: the #GTlsBackend
  *
- * A possible cause of failure is exceeding the per-process or
- * system-wide file descriptor limit.
+ * Checks if DTLS is supported. DTLS support may not be available even if TLS
+ * support is available, and vice-versa.
  *
- * Returns: %TRUE in case of success, else %FALSE (and @error is set)
- * Since: 2.22
+ * Returns: whether DTLS is supported
+ * Since: 2.48
  */
 
 
 /**
- * g_unix_fd_message_get_fd_list:
- * @message: a #GUnixFDMessage
+ * g_tls_backend_supports_tls:
+ * @backend: the #GTlsBackend
  *
- * Gets the #GUnixFDList contained in @message.  This function does not
- * return a reference to the caller, but the returned list is valid for
- * the lifetime of @message.
+ * Checks if TLS is supported; if this returns %FALSE for the default
+ * #GTlsBackend, it means no "real" TLS backend is available.
  *
- * Returns: (transfer none): the #GUnixFDList from @message
- * Since: 2.24
+ * Returns: whether or not TLS is supported
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_fd_message_new:
+ * g_tls_certificate_get_issuer:
+ * @cert: a #GTlsCertificate
  *
- * Creates a new #GUnixFDMessage containing an empty file descriptor
- * list.
+ * Gets the #GTlsCertificate representing @cert's issuer, if known
  *
- * Returns: a new #GUnixFDMessage
- * Since: 2.22
+ * Returns: (transfer none): The certificate of @cert's issuer,
+ * or %NULL if @cert is self-signed or signed with an unknown
+ * certificate.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_fd_message_new_with_fd_list:
- * @fd_list: a #GUnixFDList
+ * g_tls_certificate_is_same:
+ * @cert_one: first certificate to compare
+ * @cert_two: second certificate to compare
  *
- * Creates a new #GUnixFDMessage containing @list.
+ * Check if two #GTlsCertificate objects represent the same certificate.
+ * The raw DER byte data of the two certificates are checked for equality.
+ * This has the effect that two certificates may compare equal even if
+ * their #GTlsCertificate:issuer, #GTlsCertificate:private-key, or
+ * #GTlsCertificate:private-key-pem properties differ.
  *
- * Returns: a new #GUnixFDMessage
- * Since: 2.24
+ * Returns: whether the same or not
+ * Since: 2.34
  */
 
 
 /**
- * g_unix_fd_message_steal_fds:
- * @message: a #GUnixFDMessage
- * @length: (out) (optional): pointer to the length of the returned
- *     array, or %NULL
- *
- * Returns the array of file descriptors that is contained in this
- * object.
+ * g_tls_certificate_list_new_from_file:
+ * @file: (type filename): file containing PEM-encoded certificates to import
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * After this call, the descriptors are no longer contained in
- * @message. Further calls will return an empty list (unless more
- * descriptors have been added).
+ * Creates one or more #GTlsCertificates from the PEM-encoded
+ * data in @file. If @file cannot be read or parsed, the function will
+ * return %NULL and set @error. If @file does not contain any
+ * PEM-encoded certificates, this will return an empty list and not
+ * set @error.
  *
- * The return result of this function must be freed with g_free().
- * The caller is also responsible for closing all of the file
- * descriptors.
+ * Returns: (element-type Gio.TlsCertificate) (transfer full): a
+ * #GList containing #GTlsCertificate objects. You must free the list
+ * and its contents when you are done with it.
+ * Since: 2.28
+ */
+
+
+/**
+ * g_tls_certificate_new_from_file:
+ * @file: (type filename): file containing a PEM-encoded certificate to import
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * If @length is non-%NULL then it is set to the number of file
- * descriptors in the returned array. The returned array is also
- * terminated with -1.
+ * Creates a #GTlsCertificate from the PEM-encoded data in @file. The
+ * returned certificate will be the first certificate found in @file. As
+ * of GLib 2.44, if @file contains more certificates it will try to load
+ * a certificate chain. All certificates will be verified in the order
+ * found (top-level certificate should be the last one in the file) and
+ * the #GTlsCertificate:issuer property of each certificate will be set
+ * accordingly if the verification succeeds. If any certificate in the
+ * chain cannot be verified, the first certificate in the file will
+ * still be returned.
  *
- * This function never returns %NULL. In case there are no file
- * descriptors contained in @message, an empty array is returned.
+ * If @file cannot be read or parsed, the function will return %NULL and
+ * set @error. Otherwise, this behaves like
+ * g_tls_certificate_new_from_pem().
  *
- * Returns: (array length=length) (transfer full): an array of file
- *     descriptors
- * Since: 2.22
+ * Returns: the new certificate, or %NULL on error
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_input_stream_get_close_fd:
- * @stream: a #GUnixInputStream
+ * g_tls_certificate_new_from_files:
+ * @cert_file: (type filename): file containing one or more PEM-encoded
+ *     certificates to import
+ * @key_file: (type filename): file containing a PEM-encoded private key
+ *     to import
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Returns whether the file descriptor of @stream will be
- * closed when the stream is closed.
+ * Creates a #GTlsCertificate from the PEM-encoded data in @cert_file
+ * and @key_file. The returned certificate will be the first certificate
+ * found in @cert_file. As of GLib 2.44, if @cert_file contains more
+ * certificates it will try to load a certificate chain. All
+ * certificates will be verified in the order found (top-level
+ * certificate should be the last one in the file) and the
+ * #GTlsCertificate:issuer property of each certificate will be set
+ * accordingly if the verification succeeds. If any certificate in the
+ * chain cannot be verified, the first certificate in the file will
+ * still be returned.
  *
- * Returns: %TRUE if the file descriptor is closed when done
- * Since: 2.20
+ * If either file cannot be read or parsed, the function will return
+ * %NULL and set @error. Otherwise, this behaves like
+ * g_tls_certificate_new_from_pem().
+ *
+ * Returns: the new certificate, or %NULL on error
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_input_stream_get_fd:
- * @stream: a #GUnixInputStream
+ * g_tls_certificate_new_from_pem:
+ * @data: PEM-encoded certificate data
+ * @length: the length of @data, or -1 if it's 0-terminated.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Return the UNIX file descriptor that the stream reads from.
+ * Creates a #GTlsCertificate from the PEM-encoded data in @data. If
+ * @data includes both a certificate and a private key, then the
+ * returned certificate will include the private key data as well. (See
+ * the #GTlsCertificate:private-key-pem property for information about
+ * supported formats.)
  *
- * Returns: The file descriptor of @stream
- * Since: 2.20
+ * The returned certificate will be the first certificate found in
+ * @data. As of GLib 2.44, if @data contains more certificates it will
+ * try to load a certificate chain. All certificates will be verified in
+ * the order found (top-level certificate should be the last one in the
+ * file) and the #GTlsCertificate:issuer property of each certificate
+ * will be set accordingly if the verification succeeds. If any
+ * certificate in the chain cannot be verified, the first certificate in
+ * the file will still be returned.
+ *
+ * Returns: the new certificate, or %NULL if @data is invalid
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_input_stream_new:
- * @fd: a UNIX file descriptor
- * @close_fd: %TRUE to close the file descriptor when done
+ * g_tls_certificate_verify:
+ * @cert: a #GTlsCertificate
+ * @identity: (nullable): the expected peer identity
+ * @trusted_ca: (nullable): the certificate of a trusted authority
  *
- * Creates a new #GUnixInputStream for the given @fd.
+ * This verifies @cert and returns a set of #GTlsCertificateFlags
+ * indicating any problems found with it. This can be used to verify a
+ * certificate outside the context of making a connection, or to
+ * check a certificate against a CA that is not part of the system
+ * CA database.
  *
- * If @close_fd is %TRUE, the file descriptor will be closed
- * when the stream is closed.
+ * If @identity is not %NULL, @cert's name(s) will be compared against
+ * it, and %G_TLS_CERTIFICATE_BAD_IDENTITY will be set in the return
+ * value if it does not match. If @identity is %NULL, that bit will
+ * never be set in the return value.
+ *
+ * If @trusted_ca is not %NULL, then @cert (or one of the certificates
+ * in its chain) must be signed by it, or else
+ * %G_TLS_CERTIFICATE_UNKNOWN_CA will be set in the return value. If
+ * @trusted_ca is %NULL, that bit will never be set in the return
+ * value.
+ *
+ * (All other #GTlsCertificateFlags values will always be set or unset
+ * as appropriate.)
  *
- * Returns: a new #GUnixInputStream
+ * Returns: the appropriate #GTlsCertificateFlags
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_input_stream_set_close_fd:
- * @stream: a #GUnixInputStream
- * @close_fd: %TRUE to close the file descriptor when done
+ * g_tls_client_connection_copy_session_state:
+ * @conn: a #GTlsClientConnection
+ * @source: a #GTlsClientConnection
  *
- * Sets whether the file descriptor of @stream shall be closed
- * when the stream is closed.
+ * Copies session state from one connection to another. This is
+ * not normally needed, but may be used when the same session
+ * needs to be used between different endpoints as is required
+ * by some protocols such as FTP over TLS. @source should have
+ * already completed a handshake, and @conn should not have
+ * completed a handshake.
  *
- * Since: 2.20
+ * Since: 2.46
  */
 
 
 /**
- * g_unix_is_mount_path_system_internal:
- * @mount_path: (type filename): a mount path, e.g. `/media/disk` or `/usr`
+ * g_tls_client_connection_get_accepted_cas:
+ * @conn: the #GTlsClientConnection
  *
- * Determines if @mount_path is considered an implementation of the
- * OS. This is primarily used for hiding mountable and mounted volumes
- * that only are used in the OS and has little to no relevance to the
- * casual user.
+ * Gets the list of distinguished names of the Certificate Authorities
+ * that the server will accept certificates from. This will be set
+ * during the TLS handshake if the server requests a certificate.
+ * Otherwise, it will be %NULL.
  *
- * Returns: %TRUE if @mount_path is considered an implementation detail
- *     of the OS.
+ * Each item in the list is a #GByteArray which contains the complete
+ * subject DN of the certificate authority.
+ *
+ * Returns: (element-type GByteArray) (transfer full): the list of
+ * CA DNs. You should unref each element with g_byte_array_unref() and then
+ * the free the list with g_list_free().
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_is_system_device_path:
- * @device_path: a device path, e.g. `/dev/loop0` or `nfsd`
- *
- * Determines if @device_path is considered a block device path which is only
- * used in implementation of the OS. This is primarily used for hiding
- * mounted volumes that are intended as APIs for programs to read, and system
- * administrators at a shell; rather than something that should, for example,
- * appear in a GUI. For example, the Linux `/proc` filesystem.
+ * g_tls_client_connection_get_server_identity:
+ * @conn: the #GTlsClientConnection
  *
- * The list of device paths considered â€˜system’ ones may change over time.
+ * Gets @conn's expected server identity
  *
- * Returns: %TRUE if @device_path is considered an implementation detail of
- *    the OS.
- * Since: 2.56
+ * Returns: (transfer none): a #GSocketConnectable describing the
+ * expected server identity, or %NULL if the expected identity is not
+ * known.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_is_system_fs_type:
- * @fs_type: a file system type, e.g. `procfs` or `tmpfs`
- *
- * Determines if @fs_type is considered a type of file system which is only
- * used in implementation of the OS. This is primarily used for hiding
- * mounted volumes that are intended as APIs for programs to read, and system
- * administrators at a shell; rather than something that should, for example,
- * appear in a GUI. For example, the Linux `/proc` filesystem.
+ * g_tls_client_connection_get_use_ssl3:
+ * @conn: the #GTlsClientConnection
  *
- * The list of file system types considered â€˜system’ ones may change over time.
+ * Gets whether @conn will force the lowest-supported TLS protocol
+ * version rather than attempt to negotiate the highest mutually-
+ * supported version of TLS; see g_tls_client_connection_set_use_ssl3().
  *
- * Returns: %TRUE if @fs_type is considered an implementation detail of the OS.
- * Since: 2.56
+ * Returns: whether @conn will use the lowest-supported TLS protocol version
+ * Since: 2.28
+ * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
+ * actually indicate whether it is enabled.
  */
 
 
 /**
- * g_unix_mount_at:
- * @mount_path: (type filename): path for a possible unix mount.
- * @time_read: (out) (optional): guint64 to contain a timestamp.
+ * g_tls_client_connection_get_validation_flags:
+ * @conn: the #GTlsClientConnection
  *
- * Gets a #GUnixMountEntry for a given mount path. If @time_read
- * is set, it will be filled with a unix timestamp for checking
- * if the mounts have changed since with g_unix_mounts_changed_since().
+ * Gets @conn's validation flags
  *
- * Returns: (transfer full): a #GUnixMountEntry.
+ * Returns: the validation flags
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_compare:
- * @mount1: first #GUnixMountEntry to compare.
- * @mount2: second #GUnixMountEntry to compare.
+ * g_tls_client_connection_new:
+ * @base_io_stream: the #GIOStream to wrap
+ * @server_identity: (nullable): the expected identity of the server
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Compares two unix mounts.
+ * Creates a new #GTlsClientConnection wrapping @base_io_stream (which
+ * must have pollable input and output streams) which is assumed to
+ * communicate with the server identified by @server_identity.
  *
- * Returns: 1, 0 or -1 if @mount1 is greater than, equal to,
- * or less than @mount2, respectively.
+ * See the documentation for #GTlsConnection:base-io-stream for restrictions
+ * on when application code can run operations on the @base_io_stream after
+ * this function has returned.
+ *
+ * Returns: (transfer full) (type GTlsClientConnection): the new
+ * #GTlsClientConnection, or %NULL on error
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_copy:
- * @mount_entry: a #GUnixMountEntry.
+ * g_tls_client_connection_set_server_identity:
+ * @conn: the #GTlsClientConnection
+ * @identity: a #GSocketConnectable describing the expected server identity
  *
- * Makes a copy of @mount_entry.
+ * Sets @conn's expected server identity, which is used both to tell
+ * servers on virtual hosts which certificate to present, and also
+ * to let @conn know what name to look for in the certificate when
+ * performing %G_TLS_CERTIFICATE_BAD_IDENTITY validation, if enabled.
  *
- * Returns: (transfer full): a new #GUnixMountEntry
- * Since: 2.54
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_for:
- * @file_path: (type filename): file path on some unix mount.
- * @time_read: (out) (optional): guint64 to contain a timestamp.
+ * g_tls_client_connection_set_use_ssl3:
+ * @conn: the #GTlsClientConnection
+ * @use_ssl3: whether to use the lowest-supported protocol version
  *
- * Gets a #GUnixMountEntry for a given file path. If @time_read
- * is set, it will be filled with a unix timestamp for checking
- * if the mounts have changed since with g_unix_mounts_changed_since().
+ * Since 2.42.1, if @use_ssl3 is %TRUE, this forces @conn to use the
+ * lowest-supported TLS protocol version rather than trying to properly
+ * negotiate the highest mutually-supported protocol version with the
+ * peer. Be aware that SSL 3.0 is generally disabled by the
+ * #GTlsBackend, so the lowest-supported protocol version is probably
+ * not SSL 3.0.
  *
- * Returns: (transfer full): a #GUnixMountEntry.
- * Since: 2.52
+ * Since 2.58, this may additionally cause an RFC 7507 fallback SCSV to
+ * be sent to the server, causing modern TLS servers to immediately
+ * terminate the connection. You should generally only use this function
+ * if you need to connect to broken servers that exhibit TLS protocol
+ * version intolerance, and when an initial attempt to connect to a
+ * server normally has already failed.
+ *
+ * Since: 2.28
+ * Deprecated: 2.56: SSL 3.0 is insecure, and this function does not
+ * generally enable or disable it, despite its name.
  */
 
 
 /**
- * g_unix_mount_free:
- * @mount_entry: a #GUnixMountEntry.
+ * g_tls_client_connection_set_validation_flags:
+ * @conn: the #GTlsClientConnection
+ * @flags: the #GTlsCertificateFlags to use
  *
- * Frees a unix mount.
+ * Sets @conn's validation flags, to override the default set of
+ * checks performed when validating a server certificate. By default,
+ * %G_TLS_CERTIFICATE_VALIDATE_ALL is used.
+ *
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_get_device_path:
- * @mount_entry: a #GUnixMount.
+ * g_tls_connection_emit_accept_certificate:
+ * @conn: a #GTlsConnection
+ * @peer_cert: the peer's #GTlsCertificate
+ * @errors: the problems with @peer_cert
  *
- * Gets the device path for a unix mount.
+ * Used by #GTlsConnection implementations to emit the
+ * #GTlsConnection::accept-certificate signal.
  *
- * Returns: (type filename): a string containing the device path.
+ * Returns: %TRUE if one of the signal handlers has returned
+ *     %TRUE to accept @peer_cert
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_get_fs_type:
- * @mount_entry: a #GUnixMount.
+ * g_tls_connection_get_certificate:
+ * @conn: a #GTlsConnection
  *
- * Gets the filesystem type for the unix mount.
+ * Gets @conn's certificate, as set by
+ * g_tls_connection_set_certificate().
  *
- * Returns: a string containing the file system type.
+ * Returns: (transfer none): @conn's certificate, or %NULL
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_get_mount_path:
- * @mount_entry: input #GUnixMountEntry to get the mount path for.
+ * g_tls_connection_get_database:
+ * @conn: a #GTlsConnection
  *
- * Gets the mount path for a unix mount.
+ * Gets the certificate database that @conn uses to verify
+ * peer certificates. See g_tls_connection_set_database().
  *
- * Returns: (type filename): the mount path for @mount_entry.
+ * Returns: (transfer none): the certificate database that @conn uses or %NULL
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_get_options:
- * @mount_entry: a #GUnixMountEntry.
- *
- * Gets a comma-separated list of mount options for the unix mount. For example,
- * `rw,relatime,seclabel,data=ordered`.
+ * g_tls_connection_get_interaction:
+ * @conn: a connection
  *
- * This is similar to g_unix_mount_point_get_options(), but it takes
- * a #GUnixMountEntry as an argument.
+ * Get the object that will be used to interact with the user. It will be used
+ * for things like prompting the user for passwords. If %NULL is returned, then
+ * no user interaction will occur for this connection.
  *
- * Returns: (nullable): a string containing the options, or %NULL if not
- * available.
- * Since: 2.58
+ * Returns: (transfer none): The interaction object.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_guess_can_eject:
- * @mount_entry: a #GUnixMountEntry
+ * g_tls_connection_get_peer_certificate:
+ * @conn: a #GTlsConnection
  *
- * Guesses whether a Unix mount can be ejected.
+ * Gets @conn's peer's certificate after the handshake has completed.
+ * (It is not set during the emission of
+ * #GTlsConnection::accept-certificate.)
  *
- * Returns: %TRUE if @mount_entry is deemed to be ejectable.
+ * Returns: (transfer none): @conn's peer's certificate, or %NULL
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_guess_icon:
- * @mount_entry: a #GUnixMountEntry
+ * g_tls_connection_get_peer_certificate_errors:
+ * @conn: a #GTlsConnection
  *
- * Guesses the icon of a Unix mount.
+ * Gets the errors associated with validating @conn's peer's
+ * certificate, after the handshake has completed. (It is not set
+ * during the emission of #GTlsConnection::accept-certificate.)
  *
- * Returns: (transfer full): a #GIcon
+ * Returns: @conn's peer's certificate errors
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_guess_name:
- * @mount_entry: a #GUnixMountEntry
+ * g_tls_connection_get_rehandshake_mode:
+ * @conn: a #GTlsConnection
  *
- * Guesses the name of a Unix mount.
- * The result is a translated string.
+ * Gets @conn rehandshaking mode. See
+ * g_tls_connection_set_rehandshake_mode() for details.
  *
- * Returns: A newly allocated string that must
- *     be freed with g_free()
+ * Returns: @conn's rehandshaking mode
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_guess_should_display:
- * @mount_entry: a #GUnixMountEntry
+ * g_tls_connection_get_require_close_notify:
+ * @conn: a #GTlsConnection
  *
- * Guesses whether a Unix mount should be displayed in the UI.
+ * Tests whether or not @conn expects a proper TLS close notification
+ * when the connection is closed. See
+ * g_tls_connection_set_require_close_notify() for details.
  *
- * Returns: %TRUE if @mount_entry is deemed to be displayable.
+ * Returns: %TRUE if @conn requires a proper TLS close
+ * notification.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_guess_symbolic_icon:
- * @mount_entry: a #GUnixMountEntry
+ * g_tls_connection_get_use_system_certdb:
+ * @conn: a #GTlsConnection
  *
- * Guesses the symbolic icon of a Unix mount.
+ * Gets whether @conn uses the system certificate database to verify
+ * peer certificates. See g_tls_connection_set_use_system_certdb().
  *
- * Returns: (transfer full): a #GIcon
- * Since: 2.34
+ * Returns: whether @conn uses the system certificate database
+ * Deprecated: 2.30: Use g_tls_connection_get_database() instead
  */
 
 
 /**
- * g_unix_mount_guess_type:
- * @mount_entry: a #GUnixMount.
+ * g_tls_connection_handshake:
+ * @conn: a #GTlsConnection
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: a #GError, or %NULL
  *
- * Guesses the type of a unix mount. If the mount type cannot be
- * determined, returns %G_UNIX_MOUNT_TYPE_UNKNOWN.
+ * Attempts a TLS handshake on @conn.
  *
- * Returns: a #GUnixMountType.
+ * On the client side, it is never necessary to call this method;
+ * although the connection needs to perform a handshake after
+ * connecting (or after sending a "STARTTLS"-type command) and may
+ * need to rehandshake later if the server requests it,
+ * #GTlsConnection will handle this for you automatically when you try
+ * to send or receive data on the connection. However, you can call
+ * g_tls_connection_handshake() manually if you want to know for sure
+ * whether the initial handshake succeeded or failed (as opposed to
+ * just immediately trying to write to @conn's output stream, in which
+ * case if it fails, it may not be possible to tell if it failed
+ * before or after completing the handshake).
+ *
+ * Likewise, on the server side, although a handshake is necessary at
+ * the beginning of the communication, you do not need to call this
+ * function explicitly unless you want clearer error reporting.
+ * However, you may call g_tls_connection_handshake() later on to
+ * rehandshake, if TLS 1.2 or older is in use. With TLS 1.3, this will
+ * instead perform a rekey.
+ *
+ * #GTlsConnection::accept_certificate may be emitted during the
+ * handshake.
+ *
+ * Returns: success or failure
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_is_readonly:
- * @mount_entry: a #GUnixMount.
+ * g_tls_connection_handshake_async:
+ * @conn: a #GTlsConnection
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the handshake is complete
+ * @user_data: the data to pass to the callback function
  *
- * Checks if a unix mount is mounted read only.
+ * Asynchronously performs a TLS handshake on @conn. See
+ * g_tls_connection_handshake() for more information.
  *
- * Returns: %TRUE if @mount_entry is read only.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_is_system_internal:
- * @mount_entry: a #GUnixMount.
- *
- * Checks if a Unix mount is a system mount. This is the Boolean OR of
- * g_unix_is_system_fs_type(), g_unix_is_system_device_path() and
- * g_unix_is_mount_path_system_internal() on @mount_entry’s properties.
+ * g_tls_connection_handshake_finish:
+ * @conn: a #GTlsConnection
+ * @result: a #GAsyncResult.
+ * @error: a #GError pointer, or %NULL
  *
- * The definition of what a â€˜system’ mount entry is may change over time as new
- * file system types and device paths are ignored.
+ * Finish an asynchronous TLS handshake operation. See
+ * g_tls_connection_handshake() for more information.
  *
- * Returns: %TRUE if the unix mount is for a system path.
+ * Returns: %TRUE on success, %FALSE on failure, in which
+ * case @error will be set.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_monitor_get:
+ * g_tls_connection_set_certificate:
+ * @conn: a #GTlsConnection
+ * @certificate: the certificate to use for @conn
  *
- * Gets the #GUnixMountMonitor for the current thread-default main
- * context.
+ * This sets the certificate that @conn will present to its peer
+ * during the TLS handshake. For a #GTlsServerConnection, it is
+ * mandatory to set this, and that will normally be done at construct
+ * time.
  *
- * The mount monitor can be used to monitor for changes to the list of
- * mounted filesystems as well as the list of mount points (ie: fstab
- * entries).
+ * For a #GTlsClientConnection, this is optional. If a handshake fails
+ * with %G_TLS_ERROR_CERTIFICATE_REQUIRED, that means that the server
+ * requires a certificate, and if you try connecting again, you should
+ * call this method first. You can call
+ * g_tls_client_connection_get_accepted_cas() on the failed connection
+ * to get a list of Certificate Authorities that the server will
+ * accept certificates from.
  *
- * You must only call g_object_unref() on the return value from under
- * the same main context as you called this function.
+ * (It is also possible that a server will allow the connection with
+ * or without a certificate; in that case, if you don't provide a
+ * certificate, you can tell that the server requested one by the fact
+ * that g_tls_client_connection_get_accepted_cas() will return
+ * non-%NULL.)
  *
- * Returns: (transfer full): the #GUnixMountMonitor.
- * Since: 2.44
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_monitor_new:
- *
- * Deprecated alias for g_unix_mount_monitor_get().
+ * g_tls_connection_set_database:
+ * @conn: a #GTlsConnection
+ * @database: a #GTlsDatabase
  *
- * This function was never a true constructor, which is why it was
- * renamed.
+ * Sets the certificate database that is used to verify peer certificates.
+ * This is set to the default database by default. See
+ * g_tls_backend_get_default_database(). If set to %NULL, then
+ * peer certificate validation will always set the
+ * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning
+ * #GTlsConnection::accept-certificate will always be emitted on
+ * client-side connections, unless that bit is not set in
+ * #GTlsClientConnection:validation-flags).
  *
- * Returns: a #GUnixMountMonitor.
- * Deprecated: 2.44: Use g_unix_mount_monitor_get() instead.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_monitor_set_rate_limit:
- * @mount_monitor: a #GUnixMountMonitor
- * @limit_msec: a integer with the limit in milliseconds to
- *     poll for changes.
+ * g_tls_connection_set_interaction:
+ * @conn: a connection
+ * @interaction: (nullable): an interaction object, or %NULL
  *
- * This function does nothing.
+ * Set the object that will be used to interact with the user. It will be used
+ * for things like prompting the user for passwords.
  *
- * Before 2.44, this was a partially-effective way of controlling the
- * rate at which events would be reported under some uncommon
- * circumstances.  Since @mount_monitor is a singleton, it also meant
- * that calling this function would have side effects for other users of
- * the monitor.
+ * The @interaction argument will normally be a derived subclass of
+ * #GTlsInteraction. %NULL can also be provided if no user interaction
+ * should occur for this connection.
  *
- * Since: 2.18
- * Deprecated: 2.44: This function does nothing.  Don't call it.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_compare:
- * @mount1: a #GUnixMount.
- * @mount2: a #GUnixMount.
+ * g_tls_connection_set_rehandshake_mode:
+ * @conn: a #GTlsConnection
+ * @mode: the rehandshaking mode
  *
- * Compares two unix mount points.
+ * Sets how @conn behaves with respect to rehandshaking requests, when
+ * TLS 1.2 or older is in use.
  *
- * Returns: 1, 0 or -1 if @mount1 is greater than, equal to,
- * or less than @mount2, respectively.
+ * %G_TLS_REHANDSHAKE_NEVER means that it will never agree to
+ * rehandshake after the initial handshake is complete. (For a client,
+ * this means it will refuse rehandshake requests from the server, and
+ * for a server, this means it will close the connection with an error
+ * if the client attempts to rehandshake.)
+ *
+ * %G_TLS_REHANDSHAKE_SAFELY means that the connection will allow a
+ * rehandshake only if the other end of the connection supports the
+ * TLS `renegotiation_info` extension. This is the default behavior,
+ * but means that rehandshaking will not work against older
+ * implementations that do not support that extension.
+ *
+ * %G_TLS_REHANDSHAKE_UNSAFELY means that the connection will allow
+ * rehandshaking even without the `renegotiation_info` extension. On
+ * the server side in particular, this is not recommended, since it
+ * leaves the server open to certain attacks. However, this mode is
+ * necessary if you need to allow renegotiation with older client
+ * software.
+ *
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_point_copy:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_connection_set_require_close_notify:
+ * @conn: a #GTlsConnection
+ * @require_close_notify: whether or not to require close notification
  *
- * Makes a copy of @mount_point.
+ * Sets whether or not @conn expects a proper TLS close notification
+ * before the connection is closed. If this is %TRUE (the default),
+ * then @conn will expect to receive a TLS close notification from its
+ * peer before the connection is closed, and will return a
+ * %G_TLS_ERROR_EOF error if the connection is closed without proper
+ * notification (since this may indicate a network error, or
+ * man-in-the-middle attack).
  *
- * Returns: (transfer full): a new #GUnixMountPoint
- * Since: 2.54
+ * In some protocols, the application will know whether or not the
+ * connection was closed cleanly based on application-level data
+ * (because the application-level data includes a length field, or is
+ * somehow self-delimiting); in this case, the close notify is
+ * redundant and sometimes omitted. (TLS 1.1 explicitly allows this;
+ * in TLS 1.0 it is technically an error, but often done anyway.) You
+ * can use g_tls_connection_set_require_close_notify() to tell @conn
+ * to allow an "unannounced" connection close, in which case the close
+ * will show up as a 0-length read, as in a non-TLS
+ * #GSocketConnection, and it is up to the application to check that
+ * the data has been fully received.
+ *
+ * Note that this only affects the behavior when the peer closes the
+ * connection; when the application calls g_io_stream_close() itself
+ * on @conn, this will send a close notification regardless of the
+ * setting of this property. If you explicitly want to do an unclean
+ * close, you can close @conn's #GTlsConnection:base-io-stream rather
+ * than closing @conn itself, but note that this may only be done when no other
+ * operations are pending on @conn or the base I/O stream.
+ *
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_mount_point_free:
- * @mount_point: unix mount point to free.
+ * g_tls_connection_set_use_system_certdb:
+ * @conn: a #GTlsConnection
+ * @use_system_certdb: whether to use the system certificate database
  *
- * Frees a unix mount point.
+ * Sets whether @conn uses the system certificate database to verify
+ * peer certificates. This is %TRUE by default. If set to %FALSE, then
+ * peer certificate validation will always set the
+ * %G_TLS_CERTIFICATE_UNKNOWN_CA error (meaning
+ * #GTlsConnection::accept-certificate will always be emitted on
+ * client-side connections, unless that bit is not set in
+ * #GTlsClientConnection:validation-flags).
+ *
+ * Deprecated: 2.30: Use g_tls_connection_set_database() instead
  */
 
 
 /**
- * g_unix_mount_point_get_device_path:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_create_certificate_handle:
+ * @self: a #GTlsDatabase
+ * @certificate: certificate for which to create a handle.
  *
- * Gets the device path for a unix mount point.
+ * Create a handle string for the certificate. The database will only be able
+ * to create a handle for certificates that originate from the database. In
+ * cases where the database cannot create a handle for a certificate, %NULL
+ * will be returned.
  *
- * Returns: (type filename): a string containing the device path.
+ * This handle should be stable across various instances of the application,
+ * and between applications. If a certificate is modified in the database,
+ * then it is not guaranteed that this handle will continue to point to it.
+ *
+ * Returns: (nullable): a newly allocated string containing the
+ * handle.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_get_fs_type:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_lookup_certificate_for_handle:
+ * @self: a #GTlsDatabase
+ * @handle: a certificate handle
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: Flags which affect the lookup.
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: (nullable): a #GError, or %NULL
  *
- * Gets the file system type for the mount point.
+ * Lookup a certificate by its handle.
+ *
+ * The handle should have been created by calling
+ * g_tls_database_create_certificate_handle() on a #GTlsDatabase object of
+ * the same TLS backend. The handle is designed to remain valid across
+ * instantiations of the database.
+ *
+ * If the handle is no longer valid, or does not point to a certificate in
+ * this database, then %NULL will be returned.
+ *
+ * This function can block, use g_tls_database_lookup_certificate_for_handle_async() to perform
+ * the lookup operation asynchronously.
  *
- * Returns: a string containing the file system type.
+ * Returns: (transfer full) (nullable): a newly allocated
+ * #GTlsCertificate, or %NULL. Use g_object_unref() to release the certificate.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_get_mount_path:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_lookup_certificate_for_handle_async:
+ * @self: a #GTlsDatabase
+ * @handle: a certificate handle
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: Flags which affect the lookup.
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the operation completes
+ * @user_data: the data to pass to the callback function
  *
- * Gets the mount path for a unix mount point.
+ * Asynchronously lookup a certificate by its handle in the database. See
+ * g_tls_database_lookup_certificate_for_handle() for more information.
  *
- * Returns: (type filename): a string containing the mount path.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_get_options:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_lookup_certificate_for_handle_finish:
+ * @self: a #GTlsDatabase
+ * @result: a #GAsyncResult.
+ * @error: a #GError pointer, or %NULL
  *
- * Gets the options for the mount point.
+ * Finish an asynchronous lookup of a certificate by its handle. See
+ * g_tls_database_lookup_certificate_by_handle() for more information.
  *
- * Returns: a string containing the options.
- * Since: 2.32
+ * If the handle is no longer valid, or does not point to a certificate in
+ * this database, then %NULL will be returned.
+ *
+ * Returns: (transfer full): a newly allocated #GTlsCertificate object.
+ * Use g_object_unref() to release the certificate.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_guess_can_eject:
- * @mount_point: a #GUnixMountPoint
+ * g_tls_database_lookup_certificate_issuer:
+ * @self: a #GTlsDatabase
+ * @certificate: a #GTlsCertificate
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: flags which affect the lookup operation
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: (nullable): a #GError, or %NULL
  *
- * Guesses whether a Unix mount point can be ejected.
+ * Lookup the issuer of @certificate in the database.
  *
- * Returns: %TRUE if @mount_point is deemed to be ejectable.
- */
-
-
-/**
- * g_unix_mount_point_guess_icon:
- * @mount_point: a #GUnixMountPoint
+ * The %issuer property
+ * of @certificate is not modified, and the two certificates are not hooked
+ * into a chain.
  *
- * Guesses the icon of a Unix mount point.
+ * This function can block, use g_tls_database_lookup_certificate_issuer_async() to perform
+ * the lookup operation asynchronously.
  *
- * Returns: (transfer full): a #GIcon
+ * Returns: (transfer full): a newly allocated issuer #GTlsCertificate,
+ * or %NULL. Use g_object_unref() to release the certificate.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_guess_name:
- * @mount_point: a #GUnixMountPoint
+ * g_tls_database_lookup_certificate_issuer_async:
+ * @self: a #GTlsDatabase
+ * @certificate: a #GTlsCertificate
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: flags which affect the lookup operation
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the operation completes
+ * @user_data: the data to pass to the callback function
  *
- * Guesses the name of a Unix mount point.
- * The result is a translated string.
+ * Asynchronously lookup the issuer of @certificate in the database. See
+ * g_tls_database_lookup_certificate_issuer() for more information.
  *
- * Returns: A newly allocated string that must
- *     be freed with g_free()
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_guess_symbolic_icon:
- * @mount_point: a #GUnixMountPoint
+ * g_tls_database_lookup_certificate_issuer_finish:
+ * @self: a #GTlsDatabase
+ * @result: a #GAsyncResult.
+ * @error: a #GError pointer, or %NULL
  *
- * Guesses the symbolic icon of a Unix mount point.
+ * Finish an asynchronous lookup issuer operation. See
+ * g_tls_database_lookup_certificate_issuer() for more information.
  *
- * Returns: (transfer full): a #GIcon
- * Since: 2.34
+ * Returns: (transfer full): a newly allocated issuer #GTlsCertificate,
+ * or %NULL. Use g_object_unref() to release the certificate.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_guess_type:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_lookup_certificates_issued_by:
+ * @self: a #GTlsDatabase
+ * @issuer_raw_dn: a #GByteArray which holds the DER encoded issuer DN.
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: Flags which affect the lookup operation.
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: (nullable): a #GError, or %NULL
  *
- * Guesses the type of a unix mount point.
- * If the mount type cannot be determined,
- * returns %G_UNIX_MOUNT_TYPE_UNKNOWN.
+ * Lookup certificates issued by this issuer in the database.
  *
- * Returns: a #GUnixMountType.
+ * This function can block, use g_tls_database_lookup_certificates_issued_by_async() to perform
+ * the lookup operation asynchronously.
+ *
+ * Returns: (transfer full) (element-type GTlsCertificate): a newly allocated list of #GTlsCertificate
+ * objects. Use g_object_unref() on each certificate, and g_list_free() on the release the list.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_is_loopback:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_lookup_certificates_issued_by_async:
+ * @self: a #GTlsDatabase
+ * @issuer_raw_dn: a #GByteArray which holds the DER encoded issuer DN.
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: Flags which affect the lookup operation.
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the operation completes
+ * @user_data: the data to pass to the callback function
  *
- * Checks if a unix mount point is a loopback device.
+ * Asynchronously lookup certificates issued by this issuer in the database. See
+ * g_tls_database_lookup_certificates_issued_by() for more information.
  *
- * Returns: %TRUE if the mount point is a loopback. %FALSE otherwise.
+ * The database may choose to hold a reference to the issuer byte array for the duration
+ * of of this asynchronous operation. The byte array should not be modified during
+ * this time.
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_is_readonly:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_lookup_certificates_issued_by_finish:
+ * @self: a #GTlsDatabase
+ * @result: a #GAsyncResult.
+ * @error: a #GError pointer, or %NULL
  *
- * Checks if a unix mount point is read only.
+ * Finish an asynchronous lookup of certificates. See
+ * g_tls_database_lookup_certificates_issued_by() for more information.
  *
- * Returns: %TRUE if a mount point is read only.
+ * Returns: (transfer full) (element-type GTlsCertificate): a newly allocated list of #GTlsCertificate
+ * objects. Use g_object_unref() on each certificate, and g_list_free() on the release the list.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mount_point_is_user_mountable:
- * @mount_point: a #GUnixMountPoint.
+ * g_tls_database_verify_chain:
+ * @self: a #GTlsDatabase
+ * @chain: a #GTlsCertificate chain
+ * @purpose: the purpose that this certificate chain will be used for.
+ * @identity: (nullable): the expected peer identity
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: additional verify flags
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: (nullable): a #GError, or %NULL
  *
- * Checks if a unix mount point is mountable by the user.
+ * Determines the validity of a certificate chain after looking up and
+ * adding any missing certificates to the chain.
  *
- * Returns: %TRUE if the mount point is user mountable.
- */
-
-
-/**
- * g_unix_mount_points_changed_since:
- * @time: guint64 to contain a timestamp.
+ * @chain is a chain of #GTlsCertificate objects each pointing to the next
+ * certificate in the chain by its #GTlsCertificate:issuer property. The chain may initially
+ * consist of one or more certificates. After the verification process is
+ * complete, @chain may be modified by adding missing certificates, or removing
+ * extra certificates. If a certificate anchor was found, then it is added to
+ * the @chain.
  *
- * Checks if the unix mount points have changed since a given unix time.
+ * @purpose describes the purpose (or usage) for which the certificate
+ * is being used. Typically @purpose will be set to #G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER
+ * which means that the certificate is being used to authenticate a server
+ * (and we are acting as the client).
  *
- * Returns: %TRUE if the mount points have changed since @time.
- */
-
-
-/**
- * g_unix_mount_points_get:
- * @time_read: (out) (optional): guint64 to contain a timestamp.
+ * The @identity is used to check for pinned certificates (trust exceptions)
+ * in the database. These will override the normal verification process on a
+ * host by host basis.
  *
- * Gets a #GList of #GUnixMountPoint containing the unix mount points.
- * If @time_read is set, it will be filled with the mount timestamp,
- * allowing for checking if the mounts have changed with
- * g_unix_mount_points_changed_since().
+ * Currently there are no @flags, and %G_TLS_DATABASE_VERIFY_NONE should be
+ * used.
  *
- * Returns: (element-type GUnixMountPoint) (transfer full):
- *     a #GList of the UNIX mountpoints.
- */
-
-
-/**
- * g_unix_mounts_changed_since:
- * @time: guint64 to contain a timestamp.
+ * If @chain is found to be valid, then the return value will be 0. If
+ * @chain is found to be invalid, then the return value will indicate
+ * the problems found. If the function is unable to determine whether
+ * @chain is valid or not (eg, because @cancellable is triggered
+ * before it completes) then the return value will be
+ * %G_TLS_CERTIFICATE_GENERIC_ERROR and @error will be set
+ * accordingly. @error is not set when @chain is successfully analyzed
+ * but found to be invalid.
  *
- * Checks if the unix mounts have changed since a given unix time.
+ * This function can block, use g_tls_database_verify_chain_async() to perform
+ * the verification operation asynchronously.
  *
- * Returns: %TRUE if the mounts have changed since @time.
+ * Returns: the appropriate #GTlsCertificateFlags which represents the
+ * result of verification.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_mounts_get:
- * @time_read: (out) (optional): guint64 to contain a timestamp, or %NULL
+ * g_tls_database_verify_chain_async:
+ * @self: a #GTlsDatabase
+ * @chain: a #GTlsCertificate chain
+ * @purpose: the purpose that this certificate chain will be used for.
+ * @identity: (nullable): the expected peer identity
+ * @interaction: (nullable): used to interact with the user if necessary
+ * @flags: additional verify flags
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @callback: callback to call when the operation completes
+ * @user_data: the data to pass to the callback function
  *
- * Gets a #GList of #GUnixMountEntry containing the unix mounts.
- * If @time_read is set, it will be filled with the mount
- * timestamp, allowing for checking if the mounts have changed
- * with g_unix_mounts_changed_since().
+ * Asynchronously determines the validity of a certificate chain after
+ * looking up and adding any missing certificates to the chain. See
+ * g_tls_database_verify_chain() for more information.
  *
- * Returns: (element-type GUnixMountEntry) (transfer full):
- *     a #GList of the UNIX mounts.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_output_stream_get_close_fd:
- * @stream: a #GUnixOutputStream
+ * g_tls_database_verify_chain_finish:
+ * @self: a #GTlsDatabase
+ * @result: a #GAsyncResult.
+ * @error: a #GError pointer, or %NULL
  *
- * Returns whether the file descriptor of @stream will be
- * closed when the stream is closed.
+ * Finish an asynchronous verify chain operation. See
+ * g_tls_database_verify_chain() for more information.
  *
- * Returns: %TRUE if the file descriptor is closed when done
- * Since: 2.20
+ * If @chain is found to be valid, then the return value will be 0. If
+ * @chain is found to be invalid, then the return value will indicate
+ * the problems found. If the function is unable to determine whether
+ * @chain is valid or not (eg, because @cancellable is triggered
+ * before it completes) then the return value will be
+ * %G_TLS_CERTIFICATE_GENERIC_ERROR and @error will be set
+ * accordingly. @error is not set when @chain is successfully analyzed
+ * but found to be invalid.
+ *
+ * Returns: the appropriate #GTlsCertificateFlags which represents the
+ * result of verification.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_output_stream_get_fd:
- * @stream: a #GUnixOutputStream
+ * g_tls_error_quark:
  *
- * Return the UNIX file descriptor that the stream writes to.
+ * Gets the TLS error quark.
  *
- * Returns: The file descriptor of @stream
- * Since: 2.20
+ * Returns: a #GQuark.
+ * Since: 2.28
  */
 
 
 /**
- * g_unix_output_stream_new:
- * @fd: a UNIX file descriptor
- * @close_fd: %TRUE to close the file descriptor when done
+ * g_tls_file_database_new:
+ * @anchors: (type filename): filename of anchor certificate authorities.
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Creates a new #GUnixOutputStream for the given @fd.
+ * Creates a new #GTlsFileDatabase which uses anchor certificate authorities
+ * in @anchors to verify certificate chains.
  *
- * If @close_fd, is %TRUE, the file descriptor will be closed when
- * the output stream is destroyed.
+ * The certificates in @anchors must be PEM encoded.
  *
- * Returns: a new #GOutputStream
+ * Returns: (transfer full) (type GTlsFileDatabase): the new
+ * #GTlsFileDatabase, or %NULL on error
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_output_stream_set_close_fd:
- * @stream: a #GUnixOutputStream
- * @close_fd: %TRUE to close the file descriptor when done
+ * g_tls_interaction_ask_password:
+ * @interaction: a #GTlsInteraction object
+ * @password: a #GTlsPassword object
+ * @cancellable: an optional #GCancellable cancellation object
+ * @error: an optional location to place an error on failure
  *
- * Sets whether the file descriptor of @stream shall be closed
- * when the stream is closed.
+ * Run synchronous interaction to ask the user for a password. In general,
+ * g_tls_interaction_invoke_ask_password() should be used instead of this
+ * function.
  *
- * Since: 2.20
- */
-
-
-/**
- * g_unix_socket_address_abstract_names_supported:
+ * Derived subclasses usually implement a password prompt, although they may
+ * also choose to provide a password from elsewhere. The @password value will
+ * be filled in and then @callback will be called. Alternatively the user may
+ * abort this password request, which will usually abort the TLS connection.
  *
- * Checks if abstract UNIX domain socket names are supported.
+ * If the interaction is cancelled by the cancellation object, or by the
+ * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
+ * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
+ * not support immediate cancellation.
  *
- * Returns: %TRUE if supported, %FALSE otherwise
- * Since: 2.22
+ * Returns: The status of the ask password interaction.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_socket_address_get_address_type:
- * @address: a #GInetSocketAddress
+ * g_tls_interaction_ask_password_async:
+ * @interaction: a #GTlsInteraction object
+ * @password: a #GTlsPassword object
+ * @cancellable: an optional #GCancellable cancellation object
+ * @callback: (nullable): will be called when the interaction completes
+ * @user_data: (nullable): data to pass to the @callback
  *
- * Gets @address's type.
+ * Run asynchronous interaction to ask the user for a password. In general,
+ * g_tls_interaction_invoke_ask_password() should be used instead of this
+ * function.
  *
- * Returns: a #GUnixSocketAddressType
- * Since: 2.26
- */
-
-
-/**
- * g_unix_socket_address_get_is_abstract:
- * @address: a #GInetSocketAddress
+ * Derived subclasses usually implement a password prompt, although they may
+ * also choose to provide a password from elsewhere. The @password value will
+ * be filled in and then @callback will be called. Alternatively the user may
+ * abort this password request, which will usually abort the TLS connection.
  *
- * Tests if @address is abstract.
+ * If the interaction is cancelled by the cancellation object, or by the
+ * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
+ * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
+ * not support immediate cancellation.
  *
- * Returns: %TRUE if the address is abstract, %FALSE otherwise
- * Since: 2.22
- * Deprecated: Use g_unix_socket_address_get_address_type()
+ * Certain implementations may not support immediate cancellation.
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_socket_address_get_path:
- * @address: a #GInetSocketAddress
+ * g_tls_interaction_ask_password_finish:
+ * @interaction: a #GTlsInteraction object
+ * @result: the result passed to the callback
+ * @error: an optional location to place an error on failure
  *
- * Gets @address's path, or for abstract sockets the "name".
+ * Complete an ask password user interaction request. This should be once
+ * the g_tls_interaction_ask_password_async() completion callback is called.
  *
- * Guaranteed to be zero-terminated, but an abstract socket
- * may contain embedded zeros, and thus you should use
- * g_unix_socket_address_get_path_len() to get the true length
- * of this string.
+ * If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsPassword passed
+ * to g_tls_interaction_ask_password() will have its password filled in.
  *
- * Returns: the path for @address
- * Since: 2.22
+ * If the interaction is cancelled by the cancellation object, or by the
+ * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
+ * contains a %G_IO_ERROR_CANCELLED error code.
+ *
+ * Returns: The status of the ask password interaction.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_socket_address_get_path_len:
- * @address: a #GInetSocketAddress
+ * g_tls_interaction_invoke_ask_password:
+ * @interaction: a #GTlsInteraction object
+ * @password: a #GTlsPassword object
+ * @cancellable: an optional #GCancellable cancellation object
+ * @error: an optional location to place an error on failure
  *
- * Gets the length of @address's path.
+ * Invoke the interaction to ask the user for a password. It invokes this
+ * interaction in the main loop, specifically the #GMainContext returned by
+ * g_main_context_get_thread_default() when the interaction is created. This
+ * is called by called by #GTlsConnection or #GTlsDatabase to ask the user
+ * for a password.
  *
- * For details, see g_unix_socket_address_get_path().
+ * Derived subclasses usually implement a password prompt, although they may
+ * also choose to provide a password from elsewhere. The @password value will
+ * be filled in and then @callback will be called. Alternatively the user may
+ * abort this password request, which will usually abort the TLS connection.
  *
- * Returns: the length of the path
- * Since: 2.22
+ * The implementation can either be a synchronous (eg: modal dialog) or an
+ * asynchronous one (eg: modeless dialog). This function will take care of
+ * calling which ever one correctly.
+ *
+ * If the interaction is cancelled by the cancellation object, or by the
+ * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
+ * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
+ * not support immediate cancellation.
+ *
+ * Returns: The status of the ask password interaction.
+ * Since: 2.30
  */
 
 
 /**
- * g_unix_socket_address_new:
- * @path: the socket path
+ * g_tls_interaction_invoke_request_certificate:
+ * @interaction: a #GTlsInteraction object
+ * @connection: a #GTlsConnection object
+ * @flags: flags providing more information about the request
+ * @cancellable: an optional #GCancellable cancellation object
+ * @error: an optional location to place an error on failure
  *
- * Creates a new #GUnixSocketAddress for @path.
+ * Invoke the interaction to ask the user to choose a certificate to
+ * use with the connection. It invokes this interaction in the main
+ * loop, specifically the #GMainContext returned by
+ * g_main_context_get_thread_default() when the interaction is
+ * created. This is called by called by #GTlsConnection when the peer
+ * requests a certificate during the handshake.
  *
- * To create abstract socket addresses, on systems that support that,
- * use g_unix_socket_address_new_abstract().
+ * Derived subclasses usually implement a certificate selector,
+ * although they may also choose to provide a certificate from
+ * elsewhere. Alternatively the user may abort this certificate
+ * request, which may or may not abort the TLS connection.
  *
- * Returns: a new #GUnixSocketAddress
- * Since: 2.22
- */
-
-
-/**
- * g_unix_socket_address_new_abstract:
- * @path: (array length=path_len) (element-type gchar): the abstract name
- * @path_len: the length of @path, or -1
+ * The implementation can either be a synchronous (eg: modal dialog) or an
+ * asynchronous one (eg: modeless dialog). This function will take care of
+ * calling which ever one correctly.
  *
- * Creates a new %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED
- * #GUnixSocketAddress for @path.
+ * If the interaction is cancelled by the cancellation object, or by the
+ * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
+ * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
+ * not support immediate cancellation.
  *
- * Returns: a new #GUnixSocketAddress
- * Deprecated: Use g_unix_socket_address_new_with_type().
+ * Returns: The status of the certificate request interaction.
+ * Since: 2.40
  */
 
 
 /**
- * g_unix_socket_address_new_with_type:
- * @path: (array length=path_len) (element-type gchar): the name
- * @path_len: the length of @path, or -1
- * @type: a #GUnixSocketAddressType
+ * g_tls_interaction_request_certificate:
+ * @interaction: a #GTlsInteraction object
+ * @connection: a #GTlsConnection object
+ * @flags: flags providing more information about the request
+ * @cancellable: an optional #GCancellable cancellation object
+ * @error: an optional location to place an error on failure
  *
- * Creates a new #GUnixSocketAddress of type @type with name @path.
+ * Run synchronous interaction to ask the user to choose a certificate to use
+ * with the connection. In general, g_tls_interaction_invoke_request_certificate()
+ * should be used instead of this function.
  *
- * If @type is %G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to
- * calling g_unix_socket_address_new().
+ * Derived subclasses usually implement a certificate selector, although they may
+ * also choose to provide a certificate from elsewhere. Alternatively the user may
+ * abort this certificate request, which will usually abort the TLS connection.
  *
- * If @type is %G_UNIX_SOCKET_ADDRESS_ANONYMOUS, @path and @path_len will be
- * ignored.
+ * If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsConnection
+ * passed to g_tls_interaction_request_certificate() will have had its
+ * #GTlsConnection:certificate filled in.
  *
- * If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT, then @path_len
- * bytes of @path will be copied to the socket's path, and only those
- * bytes will be considered part of the name. (If @path_len is -1,
- * then @path is assumed to be NUL-terminated.) For example, if @path
- * was "test", then calling g_socket_address_get_native_size() on the
- * returned socket would return 7 (2 bytes of overhead, 1 byte for the
- * abstract-socket indicator byte, and 4 bytes for the name "test").
+ * If the interaction is cancelled by the cancellation object, or by the
+ * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
+ * contains a %G_IO_ERROR_CANCELLED error code. Certain implementations may
+ * not support immediate cancellation.
  *
- * If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, then
- * @path_len bytes of @path will be copied to the socket's path, the
- * rest of the path will be padded with 0 bytes, and the entire
- * zero-padded buffer will be considered the name. (As above, if
- * @path_len is -1, then @path is assumed to be NUL-terminated.) In
- * this case, g_socket_address_get_native_size() will always return
- * the full size of a `struct sockaddr_un`, although
- * g_unix_socket_address_get_path_len() will still return just the
- * length of @path.
+ * Returns: The status of the request certificate interaction.
+ * Since: 2.40
+ */
+
+
+/**
+ * g_tls_interaction_request_certificate_async:
+ * @interaction: a #GTlsInteraction object
+ * @connection: a #GTlsConnection object
+ * @flags: flags providing more information about the request
+ * @cancellable: an optional #GCancellable cancellation object
+ * @callback: (nullable): will be called when the interaction completes
+ * @user_data: (nullable): data to pass to the @callback
+ *
+ * Run asynchronous interaction to ask the user for a certificate to use with
+ * the connection. In general, g_tls_interaction_invoke_request_certificate() should
+ * be used instead of this function.
  *
- * %G_UNIX_SOCKET_ADDRESS_ABSTRACT is preferred over
- * %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED for new programs. Of course,
- * when connecting to a server created by another process, you must
- * use the appropriate type corresponding to how that process created
- * its listening socket.
+ * Derived subclasses usually implement a certificate selector, although they may
+ * also choose to provide a certificate from elsewhere. @callback will be called
+ * when the operation completes. Alternatively the user may abort this certificate
+ * request, which will usually abort the TLS connection.
  *
- * Returns: a new #GUnixSocketAddress
- * Since: 2.26
+ * Since: 2.40
  */
 
 
 /**
- * g_vfs_get_default:
+ * g_tls_interaction_request_certificate_finish:
+ * @interaction: a #GTlsInteraction object
+ * @result: the result passed to the callback
+ * @error: an optional location to place an error on failure
  *
- * Gets the default #GVfs for the system.
+ * Complete an request certificate user interaction request. This should be once
+ * the g_tls_interaction_request_certificate_async() completion callback is called.
  *
- * Returns: (transfer none): a #GVfs.
+ * If %G_TLS_INTERACTION_HANDLED is returned, then the #GTlsConnection
+ * passed to g_tls_interaction_request_certificate_async() will have had its
+ * #GTlsConnection:certificate filled in.
+ *
+ * If the interaction is cancelled by the cancellation object, or by the
+ * user then %G_TLS_INTERACTION_FAILED will be returned with an error that
+ * contains a %G_IO_ERROR_CANCELLED error code.
+ *
+ * Returns: The status of the request certificate interaction.
+ * Since: 2.40
  */
 
 
 /**
- * g_vfs_get_file_for_path:
- * @vfs: a #GVfs.
- * @path: a string containing a VFS path.
+ * g_tls_password_get_description:
+ * @password: a #GTlsPassword object
  *
- * Gets a #GFile for @path.
+ * Get a description string about what the password will be used for.
  *
- * Returns: (transfer full): a #GFile.
- *     Free the returned object with g_object_unref().
+ * Returns: The description of the password.
+ * Since: 2.30
  */
 
 
 /**
- * g_vfs_get_file_for_uri:
- * @vfs: a#GVfs.
- * @uri: a string containing a URI
- *
- * Gets a #GFile for @uri.
+ * g_tls_password_get_flags:
+ * @password: a #GTlsPassword object
  *
- * This operation never fails, but the returned object
- * might not support any I/O operation if the URI
- * is malformed or if the URI scheme is not supported.
+ * Get flags about the password.
  *
- * Returns: (transfer full): a #GFile.
- *     Free the returned object with g_object_unref().
+ * Returns: The flags about the password.
+ * Since: 2.30
  */
 
 
 /**
- * g_vfs_get_local:
+ * g_tls_password_get_value:
+ * @password: a #GTlsPassword object
+ * @length: (nullable): location to place the length of the password.
  *
- * Gets the local #GVfs for the system.
+ * Get the password value. If @length is not %NULL then it will be
+ * filled in with the length of the password value. (Note that the
+ * password value is not nul-terminated, so you can only pass %NULL
+ * for @length in contexts where you know the password will have a
+ * certain fixed length.)
  *
- * Returns: (transfer none): a #GVfs.
+ * Returns: The password value (owned by the password object).
+ * Since: 2.30
  */
 
 
 /**
- * g_vfs_get_supported_uri_schemes:
- * @vfs: a #GVfs.
+ * g_tls_password_get_warning:
+ * @password: a #GTlsPassword object
  *
- * Gets a list of URI schemes supported by @vfs.
+ * Get a user readable translated warning. Usually this warning is a
+ * representation of the password flags returned from
+ * g_tls_password_get_flags().
  *
- * Returns: (transfer none): a %NULL-terminated array of strings.
- *     The returned array belongs to GIO and must
- *     not be freed or modified.
+ * Returns: The warning.
+ * Since: 2.30
  */
 
 
 /**
- * g_vfs_is_active:
- * @vfs: a #GVfs.
+ * g_tls_password_new:
+ * @flags: the password flags
+ * @description: description of what the password is for
  *
- * Checks if the VFS is active.
+ * Create a new #GTlsPassword object.
  *
- * Returns: %TRUE if construction of the @vfs was successful
- *     and it is now active.
+ * Returns: (transfer full): The newly allocated password object
  */
 
 
 /**
- * g_vfs_parse_name:
- * @vfs: a #GVfs.
- * @parse_name: a string to be parsed by the VFS module.
+ * g_tls_password_set_description:
+ * @password: a #GTlsPassword object
+ * @description: The description of the password
  *
- * This operation never fails, but the returned object might
- * not support any I/O operations if the @parse_name cannot
- * be parsed by the #GVfs module.
+ * Set a description string about what the password will be used for.
  *
- * Returns: (transfer full): a #GFile for the given @parse_name.
- *     Free the returned object with g_object_unref().
+ * Since: 2.30
  */
 
 
 /**
- * g_vfs_register_uri_scheme:
- * @vfs: a #GVfs
- * @scheme: an URI scheme, e.g. "http"
- * @uri_func: (scope notified) (nullable): a #GVfsFileLookupFunc
- * @uri_data: (nullable): custom data passed to be passed to @uri_func, or %NULL
- * @uri_destroy: (nullable): function to be called when unregistering the
- *     URI scheme, or when @vfs is disposed, to free the resources used
- *     by the URI lookup function
- * @parse_name_func: (scope notified) (nullable): a #GVfsFileLookupFunc
- * @parse_name_data: (nullable): custom data passed to be passed to
- *     @parse_name_func, or %NULL
- * @parse_name_destroy: (nullable): function to be called when unregistering the
- *     URI scheme, or when @vfs is disposed, to free the resources used
- *     by the parse name lookup function
- *
- * Registers @uri_func and @parse_name_func as the #GFile URI and parse name
- * lookup functions for URIs with a scheme matching @scheme.
- * Note that @scheme is registered only within the running application, as
- * opposed to desktop-wide as it happens with GVfs backends.
- *
- * When a #GFile is requested with an URI containing @scheme (e.g. through
- * g_file_new_for_uri()), @uri_func will be called to allow a custom
- * constructor. The implementation of @uri_func should not be blocking, and
- * must not call g_vfs_register_uri_scheme() or g_vfs_unregister_uri_scheme().
- *
- * When g_file_parse_name() is called with a parse name obtained from such file,
- * @parse_name_func will be called to allow the #GFile to be created again. In
- * that case, it's responsibility of @parse_name_func to make sure the parse
- * name matches what the custom #GFile implementation returned when
- * g_file_get_parse_name() was previously called. The implementation of
- * @parse_name_func should not be blocking, and must not call
- * g_vfs_register_uri_scheme() or g_vfs_unregister_uri_scheme().
+ * g_tls_password_set_flags:
+ * @password: a #GTlsPassword object
+ * @flags: The flags about the password
  *
- * It's an error to call this function twice with the same scheme. To unregister
- * a custom URI scheme, use g_vfs_unregister_uri_scheme().
+ * Set flags about the password.
  *
- * Returns: %TRUE if @scheme was successfully registered, or %FALSE if a handler
- *     for @scheme already exists.
- * Since: 2.50
+ * Since: 2.30
  */
 
 
 /**
- * g_vfs_unregister_uri_scheme:
- * @vfs: a #GVfs
- * @scheme: an URI scheme, e.g. "http"
+ * g_tls_password_set_value:
+ * @password: a #GTlsPassword object
+ * @value: (array length=length): the new password value
+ * @length: the length of the password, or -1
  *
- * Unregisters the URI handler for @scheme previously registered with
- * g_vfs_register_uri_scheme().
+ * Set the value for this password. The @value will be copied by the password
+ * object.
  *
- * Returns: %TRUE if @scheme was successfully unregistered, or %FALSE if a
- *     handler for @scheme does not exist.
- * Since: 2.50
+ * Specify the @length, for a non-nul-terminated password. Pass -1 as
+ * @length if using a nul-terminated password, and @length will be
+ * calculated automatically. (Note that the terminating nul is not
+ * considered part of the password in this case.)
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_volume_can_eject:
- * @volume: a #GVolume
+ * g_tls_password_set_value_full: (virtual set_value)
+ * @password: a #GTlsPassword object
+ * @value: (array length=length): the value for the password
+ * @length: the length of the password, or -1
+ * @destroy: (nullable): a function to use to free the password.
  *
- * Checks if a volume can be ejected.
+ * Provide the value for this password.
  *
- * Returns: %TRUE if the @volume can be ejected. %FALSE otherwise
+ * The @value will be owned by the password object, and later freed using
+ * the @destroy function callback.
+ *
+ * Specify the @length, for a non-nul-terminated password. Pass -1 as
+ * @length if using a nul-terminated password, and @length will be
+ * calculated automatically. (Note that the terminating nul is not
+ * considered part of the password in this case.)
+ *
+ * Since: 2.30
  */
 
 
 /**
- * g_volume_can_mount:
- * @volume: a #GVolume
+ * g_tls_password_set_warning:
+ * @password: a #GTlsPassword object
+ * @warning: The user readable warning
  *
- * Checks if a volume can be mounted.
+ * Set a user readable translated warning. Usually this warning is a
+ * representation of the password flags returned from
+ * g_tls_password_get_flags().
  *
- * Returns: %TRUE if the @volume can be mounted. %FALSE otherwise
+ * Since: 2.30
  */
 
 
 /**
- * g_volume_eject:
- * @volume: a #GVolume
- * @flags: flags affecting the unmount if required for eject
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL
- * @user_data: user data that gets passed to @callback
+ * g_tls_server_connection_new:
+ * @base_io_stream: the #GIOStream to wrap
+ * @certificate: (nullable): the default server certificate, or %NULL
+ * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Ejects a volume. This is an asynchronous operation, and is
- * finished by calling g_volume_eject_finish() with the @volume
- * and #GAsyncResult returned in the @callback.
+ * Creates a new #GTlsServerConnection wrapping @base_io_stream (which
+ * must have pollable input and output streams).
  *
- * Deprecated: 2.22: Use g_volume_eject_with_operation() instead.
+ * See the documentation for #GTlsConnection:base-io-stream for restrictions
+ * on when application code can run operations on the @base_io_stream after
+ * this function has returned.
+ *
+ * Returns: (transfer full) (type GTlsServerConnection): the new
+ * #GTlsServerConnection, or %NULL on error
+ * Since: 2.28
  */
 
 
 /**
- * g_volume_eject_finish:
- * @volume: pointer to a #GVolume
- * @result: a #GAsyncResult
- * @error: a #GError location to store an error, or %NULL to ignore
+ * g_unix_connection_receive_credentials:
+ * @connection: A #GUnixConnection.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
  *
- * Finishes ejecting a volume. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Receives credentials from the sending end of the connection.  The
+ * sending end has to call g_unix_connection_send_credentials() (or
+ * similar) for this to work.
  *
- * Returns: %TRUE, %FALSE if operation failed
- * Deprecated: 2.22: Use g_volume_eject_with_operation_finish() instead.
+ * As well as reading the credentials this also reads (and discards) a
+ * single byte from the stream, as this is required for credentials
+ * passing to work on some implementations.
+ *
+ * Other ways to exchange credentials with a foreign peer includes the
+ * #GUnixCredentialsMessage type and g_socket_get_credentials() function.
+ *
+ * Returns: (transfer full): Received credentials on success (free with
+ * g_object_unref()), %NULL if @error is set.
+ * Since: 2.26
  */
 
 
 /**
- * g_volume_eject_with_operation:
- * @volume: a #GVolume
- * @flags: flags affecting the unmount if required for eject
- * @mount_operation: (nullable): a #GMountOperation or %NULL to
- *     avoid user interaction
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL
- * @user_data: user data passed to @callback
+ * g_unix_connection_receive_credentials_async:
+ * @connection: A #GUnixConnection.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Ejects a volume. This is an asynchronous operation, and is
- * finished by calling g_volume_eject_with_operation_finish() with the @volume
- * and #GAsyncResult data returned in the @callback.
+ * Asynchronously receive credentials.
  *
- * Since: 2.22
+ * For more details, see g_unix_connection_receive_credentials() which is
+ * the synchronous version of this call.
+ *
+ * When the operation is finished, @callback will be called. You can then call
+ * g_unix_connection_receive_credentials_finish() to get the result of the operation.
+ *
+ * Since: 2.32
  */
 
 
 /**
- * g_volume_eject_with_operation_finish:
- * @volume: a #GVolume
- * @result: a #GAsyncResult
- * @error: a #GError location to store the error occurring, or %NULL
+ * g_unix_connection_receive_credentials_finish:
+ * @connection: A #GUnixConnection.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, or %NULL
  *
- * Finishes ejecting a volume. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Finishes an asynchronous receive credentials operation started with
+ * g_unix_connection_receive_credentials_async().
  *
- * Returns: %TRUE if the volume was successfully ejected. %FALSE otherwise
- * Since: 2.22
+ * Returns: (transfer full): a #GCredentials, or %NULL on error.
+ *     Free the returned object with g_object_unref().
+ * Since: 2.32
  */
 
 
 /**
- * g_volume_enumerate_identifiers:
- * @volume: a #GVolume
+ * g_unix_connection_receive_fd:
+ * @connection: a #GUnixConnection
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @error: (nullable): #GError for error reporting, or %NULL to ignore
  *
- * Gets the kinds of [identifiers][volume-identifier] that @volume has.
- * Use g_volume_get_identifier() to obtain the identifiers themselves.
+ * Receives a file descriptor from the sending end of the connection.
+ * The sending end has to call g_unix_connection_send_fd() for this
+ * to work.
  *
- * Returns: (array zero-terminated=1) (transfer full): a %NULL-terminated array
- *   of strings containing kinds of identifiers. Use g_strfreev() to free.
+ * As well as reading the fd this also reads a single byte from the
+ * stream, as this is required for fd passing to work on some
+ * implementations.
+ *
+ * Returns: a file descriptor on success, -1 on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_volume_get_activation_root:
- * @volume: a #GVolume
- *
- * Gets the activation root for a #GVolume if it is known ahead of
- * mount time. Returns %NULL otherwise. If not %NULL and if @volume
- * is mounted, then the result of g_mount_get_root() on the
- * #GMount object obtained from g_volume_get_mount() will always
- * either be equal or a prefix of what this function returns. In
- * other words, in code
+ * g_unix_connection_send_credentials:
+ * @connection: A #GUnixConnection.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
  *
- * |[<!-- language="C" -->
- *   GMount *mount;
- *   GFile *mount_root
- *   GFile *volume_activation_root;
+ * Passes the credentials of the current user the receiving side
+ * of the connection. The receiving end has to call
+ * g_unix_connection_receive_credentials() (or similar) to accept the
+ * credentials.
  *
- *   mount = g_volume_get_mount (volume); // mounted, so never NULL
- *   mount_root = g_mount_get_root (mount);
- *   volume_activation_root = g_volume_get_activation_root (volume); // assume not NULL
- * ]|
- * then the expression
- * |[<!-- language="C" -->
- *   (g_file_has_prefix (volume_activation_root, mount_root) ||
- *    g_file_equal (volume_activation_root, mount_root))
- * ]|
- * will always be %TRUE.
+ * As well as sending the credentials this also writes a single NUL
+ * byte to the stream, as this is required for credentials passing to
+ * work on some implementations.
  *
- * Activation roots are typically used in #GVolumeMonitor
- * implementations to find the underlying mount to shadow, see
- * g_mount_is_shadowed() for more details.
+ * Other ways to exchange credentials with a foreign peer includes the
+ * #GUnixCredentialsMessage type and g_socket_get_credentials() function.
  *
- * Returns: (nullable) (transfer full): the activation root of @volume
- *     or %NULL. Use g_object_unref() to free.
- * Since: 2.18
+ * Returns: %TRUE on success, %FALSE if @error is set.
+ * Since: 2.26
  */
 
 
 /**
- * g_volume_get_drive:
- * @volume: a #GVolume
+ * g_unix_connection_send_credentials_async:
+ * @connection: A #GUnixConnection.
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
+ * @user_data: (closure): the data to pass to callback function
  *
- * Gets the drive for the @volume.
+ * Asynchronously send credentials.
  *
- * Returns: (transfer full) (nullable): a #GDrive or %NULL if @volume is not
- *     associated with a drive. The returned object should be unreffed
- *     with g_object_unref() when no longer needed.
- */
-
-
-/**
- * g_volume_get_icon:
- * @volume: a #GVolume
+ * For more details, see g_unix_connection_send_credentials() which is
+ * the synchronous version of this call.
  *
- * Gets the icon for @volume.
+ * When the operation is finished, @callback will be called. You can then call
+ * g_unix_connection_send_credentials_finish() to get the result of the operation.
  *
- * Returns: (transfer full): a #GIcon.
- *     The returned object should be unreffed with g_object_unref()
- *     when no longer needed.
+ * Since: 2.32
  */
 
 
 /**
- * g_volume_get_identifier:
- * @volume: a #GVolume
- * @kind: the kind of identifier to return
+ * g_unix_connection_send_credentials_finish:
+ * @connection: A #GUnixConnection.
+ * @result: a #GAsyncResult.
+ * @error: a #GError, or %NULL
  *
- * Gets the identifier of the given kind for @volume.
- * See the [introduction][volume-identifier] for more
- * information about volume identifiers.
+ * Finishes an asynchronous send credentials operation started with
+ * g_unix_connection_send_credentials_async().
  *
- * Returns: (nullable) (transfer full): a newly allocated string containing the
- *     requested identifier, or %NULL if the #GVolume
- *     doesn't have this kind of identifier
+ * Returns: %TRUE if the operation was successful, otherwise %FALSE.
+ * Since: 2.32
  */
 
 
 /**
- * g_volume_get_mount:
- * @volume: a #GVolume
+ * g_unix_connection_send_fd:
+ * @connection: a #GUnixConnection
+ * @fd: a file descriptor
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore.
+ * @error: (nullable): #GError for error reporting, or %NULL to ignore.
  *
- * Gets the mount for the @volume.
+ * Passes a file descriptor to the receiving side of the
+ * connection. The receiving end has to call g_unix_connection_receive_fd()
+ * to accept the file descriptor.
  *
- * Returns: (transfer full) (nullable): a #GMount or %NULL if @volume isn't mounted.
- *     The returned object should be unreffed with g_object_unref()
- *     when no longer needed.
+ * As well as sending the fd this also writes a single byte to the
+ * stream, as this is required for fd passing to work on some
+ * implementations.
+ *
+ * Returns: a %TRUE on success, %NULL on error.
+ * Since: 2.22
  */
 
 
 /**
- * g_volume_get_name:
- * @volume: a #GVolume
+ * g_unix_credentials_message_get_credentials:
+ * @message: A #GUnixCredentialsMessage.
  *
- * Gets the name of @volume.
+ * Gets the credentials stored in @message.
  *
- * Returns: the name for the given @volume. The returned string should
- *     be freed with g_free() when no longer needed.
+ * Returns: (transfer none): A #GCredentials instance. Do not free, it is owned by @message.
+ * Since: 2.26
  */
 
 
 /**
- * g_volume_get_sort_key:
- * @volume: a #GVolume
+ * g_unix_credentials_message_is_supported:
  *
- * Gets the sort key for @volume, if any.
+ * Checks if passing #GCredentials on a #GSocket is supported on this platform.
  *
- * Returns: (nullable): Sorting key for @volume or %NULL if no such key is available
- * Since: 2.32
+ * Returns: %TRUE if supported, %FALSE otherwise
+ * Since: 2.26
  */
 
 
 /**
- * g_volume_get_symbolic_icon:
- * @volume: a #GVolume
+ * g_unix_credentials_message_new:
  *
- * Gets the symbolic icon for @volume.
+ * Creates a new #GUnixCredentialsMessage with credentials matching the current processes.
  *
- * Returns: (transfer full): a #GIcon.
- *     The returned object should be unreffed with g_object_unref()
- *     when no longer needed.
- * Since: 2.34
+ * Returns: a new #GUnixCredentialsMessage
+ * Since: 2.26
  */
 
 
 /**
- * g_volume_get_uuid:
- * @volume: a #GVolume
+ * g_unix_credentials_message_new_with_credentials:
+ * @credentials: A #GCredentials object.
  *
- * Gets the UUID for the @volume. The reference is typically based on
- * the file system UUID for the volume in question and should be
- * considered an opaque string. Returns %NULL if there is no UUID
- * available.
+ * Creates a new #GUnixCredentialsMessage holding @credentials.
  *
- * Returns: (nullable) (transfer full): the UUID for @volume or %NULL if no UUID
- *     can be computed.
- *     The returned string should be freed with g_free()
- *     when no longer needed.
+ * Returns: a new #GUnixCredentialsMessage
+ * Since: 2.26
  */
 
 
 /**
- * g_volume_monitor_adopt_orphan_mount:
- * @mount: a #GMount object to find a parent for
- *
- * This function should be called by any #GVolumeMonitor
- * implementation when a new #GMount object is created that is not
- * associated with a #GVolume object. It must be called just before
- * emitting the @mount_added signal.
- *
- * If the return value is not %NULL, the caller must associate the
- * returned #GVolume object with the #GMount. This involves returning
- * it in its g_mount_get_volume() implementation. The caller must
- * also listen for the "removed" signal on the returned object
- * and give up its reference when handling that signal
+ * g_unix_fd_list_append:
+ * @list: a #GUnixFDList
+ * @fd: a valid open file descriptor
+ * @error: a #GError pointer
  *
- * Similary, if implementing g_volume_monitor_adopt_orphan_mount(),
- * the implementor must take a reference to @mount and return it in
- * its g_volume_get_mount() implemented. Also, the implementor must
- * listen for the "unmounted" signal on @mount and give up its
- * reference upon handling that signal.
+ * Adds a file descriptor to @list.
  *
- * There are two main use cases for this function.
+ * The file descriptor is duplicated using dup(). You keep your copy
+ * of the descriptor and the copy contained in @list will be closed
+ * when @list is finalized.
  *
- * One is when implementing a user space file system driver that reads
- * blocks of a block device that is already represented by the native
- * volume monitor (for example a CD Audio file system driver). Such
- * a driver will generate its own #GMount object that needs to be
- * associated with the #GVolume object that represents the volume.
+ * A possible cause of failure is exceeding the per-process or
+ * system-wide file descriptor limit.
  *
- * The other is for implementing a #GVolumeMonitor whose sole purpose
- * is to return #GVolume objects representing entries in the users
- * "favorite servers" list or similar.
+ * The index of the file descriptor in the list is returned.  If you use
+ * this index with g_unix_fd_list_get() then you will receive back a
+ * duplicated copy of the same file descriptor.
  *
- * Returns: (transfer full): the #GVolume object that is the parent for @mount or %NULL
- * if no wants to adopt the #GMount.
- * Deprecated: 2.20: Instead of using this function, #GVolumeMonitor
- * implementations should instead create shadow mounts with the URI of
- * the mount they intend to adopt. See the proxy volume monitor in
- * gvfs for an example of this. Also see g_mount_is_shadowed(),
- * g_mount_shadow() and g_mount_unshadow() functions.
+ * Returns: the index of the appended fd in case of success, else -1
+ *          (and @error is set)
+ * Since: 2.24
  */
 
 
 /**
- * g_volume_monitor_get:
+ * g_unix_fd_list_get:
+ * @list: a #GUnixFDList
+ * @index_: the index into the list
+ * @error: a #GError pointer
  *
- * Gets the volume monitor used by gio.
+ * Gets a file descriptor out of @list.
  *
- * Returns: (transfer full): a reference to the #GVolumeMonitor used by gio. Call
- *    g_object_unref() when done with it.
- */
-
-
-/**
- * g_volume_monitor_get_connected_drives:
- * @volume_monitor: a #GVolumeMonitor.
+ * @index_ specifies the index of the file descriptor to get.  It is a
+ * programmer error for @index_ to be out of range; see
+ * g_unix_fd_list_get_length().
  *
- * Gets a list of drives connected to the system.
+ * The file descriptor is duplicated using dup() and set as
+ * close-on-exec before being returned.  You must call close() on it
+ * when you are done.
  *
- * The returned list should be freed with g_list_free(), after
- * its elements have been unreffed with g_object_unref().
+ * A possible cause of failure is exceeding the per-process or
+ * system-wide file descriptor limit.
  *
- * Returns: (element-type GDrive) (transfer full): a #GList of connected #GDrive objects.
+ * Returns: the file descriptor, or -1 in case of error
+ * Since: 2.24
  */
 
 
 /**
- * g_volume_monitor_get_mount_for_uuid:
- * @volume_monitor: a #GVolumeMonitor.
- * @uuid: the UUID to look for
+ * g_unix_fd_list_get_length:
+ * @list: a #GUnixFDList
  *
- * Finds a #GMount object by its UUID (see g_mount_get_uuid())
+ * Gets the length of @list (ie: the number of file descriptors
+ * contained within).
  *
- * Returns: (transfer full): a #GMount or %NULL if no such mount is available.
- *     Free the returned object with g_object_unref().
+ * Returns: the length of @list
+ * Since: 2.24
  */
 
 
 /**
- * g_volume_monitor_get_mounts:
- * @volume_monitor: a #GVolumeMonitor.
- *
- * Gets a list of the mounts on the system.
+ * g_unix_fd_list_new:
  *
- * The returned list should be freed with g_list_free(), after
- * its elements have been unreffed with g_object_unref().
+ * Creates a new #GUnixFDList containing no file descriptors.
  *
- * Returns: (element-type GMount) (transfer full): a #GList of #GMount objects.
+ * Returns: a new #GUnixFDList
+ * Since: 2.24
  */
 
 
 /**
- * g_volume_monitor_get_volume_for_uuid:
- * @volume_monitor: a #GVolumeMonitor.
- * @uuid: the UUID to look for
+ * g_unix_fd_list_new_from_array:
+ * @fds: (array length=n_fds): the initial list of file descriptors
+ * @n_fds: the length of #fds, or -1
  *
- * Finds a #GVolume object by its UUID (see g_volume_get_uuid())
+ * Creates a new #GUnixFDList containing the file descriptors given in
+ * @fds.  The file descriptors become the property of the new list and
+ * may no longer be used by the caller.  The array itself is owned by
+ * the caller.
  *
- * Returns: (transfer full): a #GVolume or %NULL if no such volume is available.
- *     Free the returned object with g_object_unref().
+ * Each file descriptor in the array should be set to close-on-exec.
+ *
+ * If @n_fds is -1 then @fds must be terminated with -1.
+ *
+ * Returns: a new #GUnixFDList
+ * Since: 2.24
  */
 
 
 /**
- * g_volume_monitor_get_volumes:
- * @volume_monitor: a #GVolumeMonitor.
+ * g_unix_fd_list_peek_fds:
+ * @list: a #GUnixFDList
+ * @length: (out) (optional): pointer to the length of the returned
+ *     array, or %NULL
  *
- * Gets a list of the volumes on the system.
+ * Returns the array of file descriptors that is contained in this
+ * object.
  *
- * The returned list should be freed with g_list_free(), after
- * its elements have been unreffed with g_object_unref().
+ * After this call, the descriptors remain the property of @list.  The
+ * caller must not close them and must not free the array.  The array is
+ * valid only until @list is changed in any way.
  *
- * Returns: (element-type GVolume) (transfer full): a #GList of #GVolume objects.
+ * If @length is non-%NULL then it is set to the number of file
+ * descriptors in the returned array. The returned array is also
+ * terminated with -1.
+ *
+ * This function never returns %NULL. In case there are no file
+ * descriptors contained in @list, an empty array is returned.
+ *
+ * Returns: (array length=length) (transfer none): an array of file
+ *     descriptors
+ * Since: 2.24
  */
 
 
 /**
- * g_volume_mount: (virtual mount_fn)
- * @volume: a #GVolume
- * @flags: flags affecting the operation
- * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid user interaction
- * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
- * @callback: (nullable): a #GAsyncReadyCallback, or %NULL
- * @user_data: user data that gets passed to @callback
+ * g_unix_fd_list_steal_fds:
+ * @list: a #GUnixFDList
+ * @length: (out) (optional): pointer to the length of the returned
+ *     array, or %NULL
  *
- * Mounts a volume. This is an asynchronous operation, and is
- * finished by calling g_volume_mount_finish() with the @volume
- * and #GAsyncResult returned in the @callback.
+ * Returns the array of file descriptors that is contained in this
+ * object.
+ *
+ * After this call, the descriptors are no longer contained in
+ * @list. Further calls will return an empty list (unless more
+ * descriptors have been added).
+ *
+ * The return result of this function must be freed with g_free().
+ * The caller is also responsible for closing all of the file
+ * descriptors.  The file descriptors in the array are set to
+ * close-on-exec.
+ *
+ * If @length is non-%NULL then it is set to the number of file
+ * descriptors in the returned array. The returned array is also
+ * terminated with -1.
+ *
+ * This function never returns %NULL. In case there are no file
+ * descriptors contained in @list, an empty array is returned.
+ *
+ * Returns: (array length=length) (transfer full): an array of file
+ *     descriptors
+ * Since: 2.24
  */
 
 
 /**
- * g_volume_mount_finish:
- * @volume: a #GVolume
- * @result: a #GAsyncResult
- * @error: a #GError location to store an error, or %NULL to ignore
+ * g_unix_fd_message_append_fd:
+ * @message: a #GUnixFDMessage
+ * @fd: a valid open file descriptor
+ * @error: a #GError pointer
  *
- * Finishes mounting a volume. If any errors occurred during the operation,
- * @error will be set to contain the errors and %FALSE will be returned.
+ * Adds a file descriptor to @message.
  *
- * If the mount operation succeeded, g_volume_get_mount() on @volume
- * is guaranteed to return the mount right after calling this
- * function; there's no need to listen for the 'mount-added' signal on
- * #GVolumeMonitor.
+ * The file descriptor is duplicated using dup(). You keep your copy
+ * of the descriptor and the copy contained in @message will be closed
+ * when @message is finalized.
  *
- * Returns: %TRUE, %FALSE if operation failed
+ * A possible cause of failure is exceeding the per-process or
+ * system-wide file descriptor limit.
+ *
+ * Returns: %TRUE in case of success, else %FALSE (and @error is set)
+ * Since: 2.22
  */
 
 
 /**
- * g_volume_should_automount:
- * @volume: a #GVolume
+ * g_unix_fd_message_get_fd_list:
+ * @message: a #GUnixFDMessage
  *
- * Returns whether the volume should be automatically mounted.
+ * Gets the #GUnixFDList contained in @message.  This function does not
+ * return a reference to the caller, but the returned list is valid for
+ * the lifetime of @message.
  *
- * Returns: %TRUE if the volume should be automatically mounted
+ * Returns: (transfer none): the #GUnixFDList from @message
+ * Since: 2.24
  */
 
 
 /**
- * g_win32_input_stream_get_close_handle:
- * @stream: a #GWin32InputStream
+ * g_unix_fd_message_new:
  *
- * Returns whether the handle of @stream will be
- * closed when the stream is closed.
+ * Creates a new #GUnixFDMessage containing an empty file descriptor
+ * list.
  *
- * Returns: %TRUE if the handle is closed when done
- * Since: 2.26
+ * Returns: a new #GUnixFDMessage
+ * Since: 2.22
  */
 
 
 /**
- * g_win32_input_stream_get_handle:
- * @stream: a #GWin32InputStream
+ * g_unix_fd_message_new_with_fd_list:
+ * @fd_list: a #GUnixFDList
  *
- * Return the Windows file handle that the stream reads from.
+ * Creates a new #GUnixFDMessage containing @list.
  *
- * Returns: The file handle of @stream
- * Since: 2.26
+ * Returns: a new #GUnixFDMessage
+ * Since: 2.24
  */
 
 
 /**
- * g_win32_input_stream_new:
- * @handle: a Win32 file handle
- * @close_handle: %TRUE to close the handle when done
+ * g_unix_fd_message_steal_fds:
+ * @message: a #GUnixFDMessage
+ * @length: (out) (optional): pointer to the length of the returned
+ *     array, or %NULL
  *
- * Creates a new #GWin32InputStream for the given @handle.
+ * Returns the array of file descriptors that is contained in this
+ * object.
  *
- * If @close_handle is %TRUE, the handle will be closed
- * when the stream is closed.
+ * After this call, the descriptors are no longer contained in
+ * @message. Further calls will return an empty list (unless more
+ * descriptors have been added).
  *
- * Note that "handle" here means a Win32 HANDLE, not a "file descriptor"
- * as used in the Windows C libraries.
+ * The return result of this function must be freed with g_free().
+ * The caller is also responsible for closing all of the file
+ * descriptors.
  *
- * Returns: a new #GWin32InputStream
+ * If @length is non-%NULL then it is set to the number of file
+ * descriptors in the returned array. The returned array is also
+ * terminated with -1.
+ *
+ * This function never returns %NULL. In case there are no file
+ * descriptors contained in @message, an empty array is returned.
+ *
+ * Returns: (array length=length) (transfer full): an array of file
+ *     descriptors
+ * Since: 2.22
  */
 
 
 /**
- * g_win32_input_stream_set_close_handle:
- * @stream: a #GWin32InputStream
- * @close_handle: %TRUE to close the handle when done
+ * g_unix_input_stream_get_close_fd:
+ * @stream: a #GUnixInputStream
  *
- * Sets whether the handle of @stream shall be closed
- * when the stream is closed.
+ * Returns whether the file descriptor of @stream will be
+ * closed when the stream is closed.
  *
- * Since: 2.26
+ * Returns: %TRUE if the file descriptor is closed when done
+ * Since: 2.20
  */
 
 
 /**
- * g_win32_output_stream_get_close_handle:
- * @stream: a #GWin32OutputStream
+ * g_unix_input_stream_get_fd:
+ * @stream: a #GUnixInputStream
  *
- * Returns whether the handle of @stream will be closed when the
- * stream is closed.
+ * Return the UNIX file descriptor that the stream reads from.
  *
- * Returns: %TRUE if the handle is closed when done
- * Since: 2.26
+ * Returns: The file descriptor of @stream
+ * Since: 2.20
  */
 
 
 /**
- * g_win32_output_stream_get_handle:
- * @stream: a #GWin32OutputStream
+ * g_unix_input_stream_new:
+ * @fd: a UNIX file descriptor
+ * @close_fd: %TRUE to close the file descriptor when done
  *
- * Return the Windows handle that the stream writes to.
+ * Creates a new #GUnixInputStream for the given @fd.
  *
- * Returns: The handle descriptor of @stream
- * Since: 2.26
+ * If @close_fd is %TRUE, the file descriptor will be closed
+ * when the stream is closed.
+ *
+ * Returns: a new #GUnixInputStream
  */
 
 
 /**
- * g_win32_output_stream_new:
- * @handle: a Win32 file handle
- * @close_handle: %TRUE to close the handle when done
- *
- * Creates a new #GWin32OutputStream for the given @handle.
+ * g_unix_input_stream_set_close_fd:
+ * @stream: a #GUnixInputStream
+ * @close_fd: %TRUE to close the file descriptor when done
  *
- * If @close_handle, is %TRUE, the handle will be closed when the
- * output stream is destroyed.
+ * Sets whether the file descriptor of @stream shall be closed
+ * when the stream is closed.
  *
- * Returns: a new #GOutputStream
- * Since: 2.26
+ * Since: 2.20
  */
 
 
 /**
- * g_win32_output_stream_set_close_handle:
- * @stream: a #GWin32OutputStream
- * @close_handle: %TRUE to close the handle when done
+ * g_unix_is_mount_path_system_internal:
+ * @mount_path: (type filename): a mount path, e.g. `/media/disk` or `/usr`
  *
- * Sets whether the handle of @stream shall be closed when the stream
- * is closed.
+ * Determines if @mount_path is considered an implementation of the
+ * OS. This is primarily used for hiding mountable and mounted volumes
+ * that only are used in the OS and has little to no relevance to the
+ * casual user.
  *
- * Since: 2.26
+ * Returns: %TRUE if @mount_path is considered an implementation detail
+ *     of the OS.
  */
 
 
 /**
- * g_win32_registry_key_erase_change_indicator:
- * @key: (in) (transfer none): a #GWin32RegistryKey
+ * g_unix_is_system_device_path:
+ * @device_path: a device path, e.g. `/dev/loop0` or `nfsd`
  *
- * Erases change indicator of the @key.
+ * Determines if @device_path is considered a block device path which is only
+ * used in implementation of the OS. This is primarily used for hiding
+ * mounted volumes that are intended as APIs for programs to read, and system
+ * administrators at a shell; rather than something that should, for example,
+ * appear in a GUI. For example, the Linux `/proc` filesystem.
  *
- * Subsequent calls to g_win32_registry_key_has_changed() will return %FALSE
- * until the key is put on watch again by calling
- * g_win32_registry_key_watch() again.
+ * The list of device paths considered â€˜system’ ones may change over time.
  *
- * Since: 2.46
+ * Returns: %TRUE if @device_path is considered an implementation detail of
+ *    the OS.
+ * Since: 2.56
  */
 
 
 /**
- * g_win32_registry_key_get_child:
- * @key: (in) (transfer none): a parent #GWin32RegistryKey
- * @subkey: (in) (transfer none): name of a child key to open (in UTF-8), relative to @key
- * @error: (inout) (optional) (nullable): a pointer to a %NULL #GError, or %NULL
+ * g_unix_is_system_fs_type:
+ * @fs_type: a file system type, e.g. `procfs` or `tmpfs`
  *
- * Opens a @subkey of the @key.
+ * Determines if @fs_type is considered a type of file system which is only
+ * used in implementation of the OS. This is primarily used for hiding
+ * mounted volumes that are intended as APIs for programs to read, and system
+ * administrators at a shell; rather than something that should, for example,
+ * appear in a GUI. For example, the Linux `/proc` filesystem.
  *
- * Returns: (nullable): a #GWin32RegistryKey or %NULL if can't be opened. Free
- *                      with g_object_unref().
+ * The list of file system types considered â€˜system’ ones may change over time.
+ *
+ * Returns: %TRUE if @fs_type is considered an implementation detail of the OS.
+ * Since: 2.56
  */
 
 
 /**
- * g_win32_registry_key_get_child_w:
- * @key: (in) (transfer none): a parent #GWin32RegistryKey
- * @subkey: (in) (transfer none): name of a child key to open (in UTF-8), relative to @key
- * @error: (inout) (optional) (nullable): a pointer to a %NULL #GError, or %NULL
+ * g_unix_mount_at:
+ * @mount_path: (type filename): path for a possible unix mount.
+ * @time_read: (out) (optional): guint64 to contain a timestamp.
  *
- * Opens a @subkey of the @key.
+ * Gets a #GUnixMountEntry for a given mount path. If @time_read
+ * is set, it will be filled with a unix timestamp for checking
+ * if the mounts have changed since with g_unix_mounts_changed_since().
  *
- * Returns: (nullable): a #GWin32RegistryKey or %NULL if can't be opened. Free
- *                      with g_object_unref().
+ * Returns: (transfer full): a #GUnixMountEntry.
  */
 
 
 /**
- * g_win32_registry_key_get_path:
- * @key: (in) (transfer none): a #GWin32RegistryKey
+ * g_unix_mount_compare:
+ * @mount1: first #GUnixMountEntry to compare.
+ * @mount2: second #GUnixMountEntry to compare.
  *
- * Get full path to the key
+ * Compares two unix mounts.
  *
- * Returns: (transfer none): a full path to the key (in UTF-8),
- *     or %NULL if it can't be converted to UTF-8.
- * Since: 2.46
+ * Returns: 1, 0 or -1 if @mount1 is greater than, equal to,
+ * or less than @mount2, respectively.
  */
 
 
 /**
- * g_win32_registry_key_get_path_w:
- * @key: (in) (transfer none): a #GWin32RegistryKey
+ * g_unix_mount_copy:
+ * @mount_entry: a #GUnixMountEntry.
  *
- * Get full path to the key
+ * Makes a copy of @mount_entry.
  *
- * Returns: (transfer none): a full path to the key (in UTF-16)
- * Since: 2.46
+ * Returns: (transfer full): a new #GUnixMountEntry
+ * Since: 2.54
  */
 
 
 /**
- * g_win32_registry_key_get_value:
- * @key: (in) (transfer none): a #GWin32RegistryKey
- * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR
- *     to G_WIN32_REGISTRY_VALUE_STR.
- * @value_name: (in) (transfer none): name of the value to get (in UTF-8).
- *   Empty string means the '(Default)' value.
- * @value_type: (out) (optional): type of the value retrieved.
- * @value_data: (out callee-allocates) (optional): contents of the value.
- * @value_data_size: (out) (optional): size of the buffer pointed
- *   by @value_data.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_for:
+ * @file_path: (type filename): file path on some unix mount.
+ * @time_read: (out) (optional): guint64 to contain a timestamp.
  *
- * Get data from a value of a key. String data is guaranteed to be
- * appropriately terminated and will be in UTF-8.
+ * Gets a #GUnixMountEntry for a given file path. If @time_read
+ * is set, it will be filled with a unix timestamp for checking
+ * if the mounts have changed since with g_unix_mounts_changed_since().
  *
- * Returns: %TRUE on success, %FALSE on failure.
- * Since: 2.46
+ * Returns: (transfer full): a #GUnixMountEntry.
+ * Since: 2.52
  */
 
 
 /**
- * g_win32_registry_key_get_value_w:
- * @key: (in) (transfer none): a #GWin32RegistryKey
- * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR
- *     to G_WIN32_REGISTRY_VALUE_STR.
- * @value_name: (in) (transfer none): name of the value to get (in UTF-16).
- *   Empty string means the '(Default)' value.
- * @value_type: (out) (optional): type of the value retrieved.
- * @value_data: (out callee-allocates) (optional): contents of the value.
- * @value_data_size: (out) (optional): size of the buffer pointed
- *   by @value_data.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
- *
- * Get data from a value of a key.
- *
- * Get data from a value of a key. String data is guaranteed to be
- * appropriately terminated and will be in UTF-16.
- *
- * When calling with value_data == NULL (to get data size without getting
- * the data itself) remember that returned size corresponds to possibly
- * unterminated string data (if value is some kind of string), because
- * termination cannot be checked and fixed unless the data is retreived
- * too.
+ * g_unix_mount_free:
+ * @mount_entry: a #GUnixMountEntry.
  *
- * Returns: %TRUE on success, %FALSE on failure.
- * Since: 2.46
+ * Frees a unix mount.
  */
 
 
 /**
- * g_win32_registry_key_has_changed:
- * @key: (in) (transfer none): a #GWin32RegistryKey
+ * g_unix_mount_get_device_path:
+ * @mount_entry: a #GUnixMount.
  *
- * Check the @key's status indicator.
+ * Gets the device path for a unix mount.
  *
- * Returns: %TRUE if the @key was put under watch at some point and has changed
- * since then, %FALSE if it either wasn't changed or wasn't watched at all.
- * Since: 2.46
+ * Returns: (type filename): a string containing the device path.
  */
 
 
 /**
- * g_win32_registry_key_new:
- * @path: absolute full name of a key to open (in UTF-8)
- * @error: (nullable): a pointer to a %NULL #GError, or %NULL
+ * g_unix_mount_get_fs_type:
+ * @mount_entry: a #GUnixMount.
  *
- * Creates an object that represents a registry key specified by @path.
- * @path must start with one of the following pre-defined names:
- * - HKEY_CLASSES_ROOT
- * - HKEY_CURRENT_CONFIG
- * - HKEY_CURRENT_USER
- * - HKEY_CURRENT_USER_LOCAL_SETTINGS
- * - HKEY_LOCAL_MACHINE
- * - HKEY_PERFORMANCE_DATA
- * - HKEY_PERFORMANCE_NLSTEXT
- * - HKEY_PERFORMANCE_TEXT
- * - HKEY_USERS
- * @path must not end with '\\'.
+ * Gets the filesystem type for the unix mount.
  *
- * Returns: (nullable) (transfer full): a #GWin32RegistryKey or %NULL if can't
- *   be opened. Free with g_object_unref().
+ * Returns: a string containing the file system type.
  */
 
 
 /**
- * g_win32_registry_key_new_w:
- * @path: (in) (transfer none): absolute full name of a key to open (in UTF-16)
- * @error: (inout) (optional) (nullable): a pointer to a %NULL #GError, or %NULL
+ * g_unix_mount_get_mount_path:
+ * @mount_entry: input #GUnixMountEntry to get the mount path for.
  *
- * Creates an object that represents a registry key specified by @path.
- * @path must start with one of the following pre-defined names:
- * - HKEY_CLASSES_ROOT
- * - HKEY_CURRENT_CONFIG
- * - HKEY_CURRENT_USER
- * - HKEY_CURRENT_USER_LOCAL_SETTINGS
- * - HKEY_LOCAL_MACHINE
- * - HKEY_PERFORMANCE_DATA
- * - HKEY_PERFORMANCE_NLSTEXT
- * - HKEY_PERFORMANCE_TEXT
- * - HKEY_USERS
- * @path must not end with L'\\'.
+ * Gets the mount path for a unix mount.
  *
- * Returns: (nullable) (transfer full): a #GWin32RegistryKey or %NULL if can't
- *   be opened. Free with g_object_unref().
+ * Returns: (type filename): the mount path for @mount_entry.
  */
 
 
 /**
- * g_win32_registry_key_watch:
- * @key: (in) (transfer none): a #GWin32RegistryKey
- * @watch_children: (in): %TRUE also watch the children of the @key, %FALSE
- *     to watch the key only.
- * @watch_flags: (in): specifies the types of changes to watch for.
- * @callback: (in) (nullable): a function to invoke when a change occurs.
- * @user_data: (in) (nullable): a pointer to pass to @callback on invocation.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_get_options:
+ * @mount_entry: a #GUnixMountEntry.
  *
- * Puts @key under a watch.
+ * Gets a comma-separated list of mount options for the unix mount. For example,
+ * `rw,relatime,seclabel,data=ordered`.
  *
- * When the key changes, an APC will be queued in the current thread. The APC
- * will run when the current thread enters alertable state (GLib main loop
- * should do that; if you are not using it, see MSDN documentation for W32API
- * calls that put thread into alertable state). When it runs, it will
- * atomically switch an indicator in the @key. If a callback was specified,
- * it is invoked at that point. Subsequent calls to
- * g_win32_registry_key_has_changed() will return %TRUE, and the callback (if
- * it was specified) will not be invoked anymore.
- * Calling g_win32_registry_key_erase_change_indicator() will reset the indicator,
- * and g_win32_registry_key_has_changed() will start returning %FALSE.
- * To resume the watch, call g_win32_registry_key_watch_for_changes() again.
+ * This is similar to g_unix_mount_point_get_options(), but it takes
+ * a #GUnixMountEntry as an argument.
  *
- * Calling g_win32_registry_key_watch_for_changes() for a key that is already
- * being watched is allowed and affects nothing.
+ * Returns: (nullable): a string containing the options, or %NULL if not
+ * available.
+ * Since: 2.58
+ */
+
+
+/**
+ * g_unix_mount_guess_can_eject:
+ * @mount_entry: a #GUnixMountEntry
  *
- * The fact that the key is being watched will be used internally to update
- * key path (if it changes).
+ * Guesses whether a Unix mount can be ejected.
  *
- * Returns: %TRUE on success, %FALSE on failure.
- * Since: 2.46
+ * Returns: %TRUE if @mount_entry is deemed to be ejectable.
  */
 
 
 /**
- * g_win32_registry_subkey_iter_assign:
- * @iter: a #GWin32RegistrySubkeyIter
- * @other: another #GWin32RegistrySubkeyIter
+ * g_unix_mount_guess_icon:
+ * @mount_entry: a #GUnixMountEntry
  *
- * Assigns the value of @other to @iter.  This function
- * is not useful in applications, because iterators can be assigned
- * with `GWin32RegistrySubkeyIter i = j;`. The
- * function is used by language bindings.
+ * Guesses the icon of a Unix mount.
  *
- * Since: 2.46
+ * Returns: (transfer full): a #GIcon
  */
 
 
 /**
- * g_win32_registry_subkey_iter_clear:
- * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
+ * g_unix_mount_guess_name:
+ * @mount_entry: a #GUnixMountEntry
  *
- * Frees internal buffers of a #GWin32RegistrySubkeyIter.
+ * Guesses the name of a Unix mount.
+ * The result is a translated string.
  *
- * Since: 2.46
+ * Returns: A newly allocated string that must
+ *     be freed with g_free()
  */
 
 
 /**
- * g_win32_registry_subkey_iter_copy:
- * @iter: an iterator
+ * g_unix_mount_guess_should_display:
+ * @mount_entry: a #GUnixMountEntry
  *
- * Creates a dynamically-allocated copy of an iterator. Dynamically-allocated
- * state of the iterator is duplicated too.
+ * Guesses whether a Unix mount should be displayed in the UI.
  *
- * Returns: (transfer full): a copy of the @iter,
- * free with g_win32_registry_subkey_iter_free ()
- * Since: 2.46
+ * Returns: %TRUE if @mount_entry is deemed to be displayable.
  */
 
 
 /**
- * g_win32_registry_subkey_iter_free:
- * @iter: a dynamically-allocated iterator
+ * g_unix_mount_guess_symbolic_icon:
+ * @mount_entry: a #GUnixMountEntry
  *
- * Free an iterator allocated on the heap. For iterators that are allocated
- * on the stack use g_win32_registry_subkey_iter_clear () instead.
+ * Guesses the symbolic icon of a Unix mount.
  *
- * Since: 2.46
+ * Returns: (transfer full): a #GIcon
+ * Since: 2.34
  */
 
 
 /**
- * g_win32_registry_subkey_iter_get_name:
- * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
- * @subkey_name: (out callee-allocates) (transfer none): Pointer to a location
- *     to store the name of a subkey (in UTF-8). Free with g_free().
- * @subkey_name_len: (out) (optional): Pointer to a location to store the
- *     length of @subkey_name, in gchars, excluding NUL-terminator.
- *     %NULL if length is not needed.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_guess_type:
+ * @mount_entry: a #GUnixMount.
  *
- * Gets the name of the subkey at the @iter potision.
+ * Guesses the type of a unix mount. If the mount type cannot be
+ * determined, returns %G_UNIX_MOUNT_TYPE_UNKNOWN.
  *
- * Returns: %TRUE if the name was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: a #GUnixMountType.
  */
 
 
 /**
- * g_win32_registry_subkey_iter_get_name_w:
- * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
- * @subkey_name: (out callee-allocates) (transfer none): Pointer to a location
- *     to store the name of a subkey (in UTF-16).
- * @subkey_name_len: (out) (optional) (transfer none): Pointer to a location
- *     to store the length of @subkey_name, in gunichar2s, excluding
- *     NUL-terminator.
- *     %NULL if length is not needed.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_is_readonly:
+ * @mount_entry: a #GUnixMount.
  *
- * Same as g_win32_registry_subkey_iter_get_next(), but outputs UTF-16-encoded
- * data, without converting it to UTF-8 first.
+ * Checks if a unix mount is mounted read only.
  *
- * Returns: %TRUE if the name was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: %TRUE if @mount_entry is read only.
  */
 
 
 /**
- * g_win32_registry_subkey_iter_init:
- * @iter: (in) (transfer none): a pointer to a #GWin32RegistrySubkeyIter
- * @key: (in) (transfer none): a #GWin32RegistryKey to iterate over
- * @error: (inout) (optional) (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_is_system_internal:
+ * @mount_entry: a #GUnixMount.
  *
- * Initialises (without allocating) a #GWin32RegistrySubkeyIter.  @iter may be
- * completely uninitialised prior to this call; its old value is
- * ignored.
+ * Checks if a Unix mount is a system mount. This is the Boolean OR of
+ * g_unix_is_system_fs_type(), g_unix_is_system_device_path() and
+ * g_unix_is_mount_path_system_internal() on @mount_entry’s properties.
  *
- * The iterator remains valid for as long as @key exists.
- * Clean up its internal buffers with a call to
- * g_win32_registry_subkey_iter_clear() when done.
+ * The definition of what a â€˜system’ mount entry is may change over time as new
+ * file system types and device paths are ignored.
  *
- * Returns: %TRUE if iterator was initialized successfully, %FALSE on error.
- * Since: 2.46
+ * Returns: %TRUE if the unix mount is for a system path.
  */
 
 
 /**
- * g_win32_registry_subkey_iter_n_subkeys:
- * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
+ * g_unix_mount_monitor_get:
  *
- * Queries the number of subkeys items in the key that we are
- * iterating over.  This is the total number of subkeys -- not the number
- * of items remaining.
+ * Gets the #GUnixMountMonitor for the current thread-default main
+ * context.
  *
- * This information is accurate at the point of iterator initialization,
- * and may go out of sync with reality even while subkeys are enumerated.
+ * The mount monitor can be used to monitor for changes to the list of
+ * mounted filesystems as well as the list of mount points (ie: fstab
+ * entries).
  *
- * Returns: the number of subkeys in the key
- * Since: 2.46
+ * You must only call g_object_unref() on the return value from under
+ * the same main context as you called this function.
+ *
+ * Returns: (transfer full): the #GUnixMountMonitor.
+ * Since: 2.44
  */
 
 
 /**
- * g_win32_registry_subkey_iter_next:
- * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
- * @skip_errors: (in): %TRUE if iterator should silently ignore errors (such as
- *     the actual number of subkeys being less than expected) and
- *     proceed forward
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
- *
- * Moves iterator to the next subkey.
- * Enumeration errors can be ignored if @skip_errors is %TRUE
- *
- * Here is an example for iterating with g_win32_registry_subkey_iter_next():
- * |[<!-- language="C" -->
- *   // recursively iterate a key
- *   void
- *   iterate_key_recursive (GWin32RegistryKey *key)
- *   {
- *     GWin32RegistrySubkeyIter iter;
- *     gchar *name;
- *     GWin32RegistryKey *child;
- *
- *     if (!g_win32_registry_subkey_iter_init (&iter, key, NULL))
- *       return;
- *
- *     while (g_win32_registry_subkey_iter_next (&iter, TRUE, NULL))
- *       {
- *         if (!g_win32_registry_subkey_iter_get_name (&iter, &name, NULL, NULL))
- *           continue;
- *
- *         g_print ("subkey '%s'\n", name);
- *         child = g_win32_registry_key_get_child (key, name, NULL);
+ * g_unix_mount_monitor_new:
  *
- *         if (child)
- *           iterate_key_recursive (child);
- *       }
+ * Deprecated alias for g_unix_mount_monitor_get().
  *
- *     g_win32_registry_subkey_iter_clear (&iter);
- *   }
- * ]|
+ * This function was never a true constructor, which is why it was
+ * renamed.
  *
- * Returns: %TRUE if next subkey info was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: a #GUnixMountMonitor.
+ * Deprecated: 2.44: Use g_unix_mount_monitor_get() instead.
  */
 
 
 /**
- * g_win32_registry_value_iter_assign:
- * @iter: a #GWin32RegistryValueIter
- * @other: another #GWin32RegistryValueIter
+ * g_unix_mount_monitor_set_rate_limit:
+ * @mount_monitor: a #GUnixMountMonitor
+ * @limit_msec: a integer with the limit in milliseconds to
+ *     poll for changes.
  *
- * Assigns the value of @other to @iter.  This function
- * is not useful in applications, because iterators can be assigned
- * with `GWin32RegistryValueIter i = j;`. The
- * function is used by language bindings.
+ * This function does nothing.
  *
- * Since: 2.46
+ * Before 2.44, this was a partially-effective way of controlling the
+ * rate at which events would be reported under some uncommon
+ * circumstances.  Since @mount_monitor is a singleton, it also meant
+ * that calling this function would have side effects for other users of
+ * the monitor.
+ *
+ * Since: 2.18
+ * Deprecated: 2.44: This function does nothing.  Don't call it.
  */
 
 
 /**
- * g_win32_registry_value_iter_clear:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ * g_unix_mount_point_compare:
+ * @mount1: a #GUnixMount.
+ * @mount2: a #GUnixMount.
  *
- * Frees internal buffers of a #GWin32RegistryValueIter.
+ * Compares two unix mount points.
  *
- * Since: 2.46
+ * Returns: 1, 0 or -1 if @mount1 is greater than, equal to,
+ * or less than @mount2, respectively.
  */
 
 
 /**
- * g_win32_registry_value_iter_copy:
- * @iter: an iterator
+ * g_unix_mount_point_copy:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Creates a dynamically-allocated copy of an iterator. Dynamically-allocated
- * state of the iterator is duplicated too.
+ * Makes a copy of @mount_point.
  *
- * Returns: (transfer full): a copy of the @iter,
- * free with g_win32_registry_value_iter_free ().
- * Since: 2.46
+ * Returns: (transfer full): a new #GUnixMountPoint
+ * Since: 2.54
  */
 
 
 /**
- * g_win32_registry_value_iter_free:
- * @iter: a dynamically-allocated iterator
- *
- * Free an iterator allocated on the heap. For iterators that are allocated
- * on the stack use g_win32_registry_value_iter_clear () instead.
+ * g_unix_mount_point_free:
+ * @mount_point: unix mount point to free.
  *
- * Since: 2.46
+ * Frees a unix mount point.
  */
 
 
 /**
- * g_win32_registry_value_iter_get_data:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
- * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to
- *     G_WIN32_REGISTRY_VALUE_STR
- * @value_data: (out callee-allocates) (optional) (transfer none): Pointer to a
- *     location to store the data of the value (in UTF-8, if it's a string)
- * @value_data_size: (out) (optional): Pointer to a location to store the length
- *     of @value_data, in bytes (including any NUL-terminators, if it's a string).
- *     %NULL if length is not needed
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_point_get_device_path:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Stores the data of the value currently being iterated over in @value_data,
- * and its length - in @value_data_len (if not %NULL).
+ * Gets the device path for a unix mount point.
  *
- * Returns: %TRUE if value data was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: (type filename): a string containing the device path.
  */
 
 
 /**
- * g_win32_registry_value_iter_get_data_w:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
- * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to
- *     G_WIN32_REGISTRY_VALUE_STR
- * @value_data: (out callee-allocates) (optional) (transfer none): Pointer to a
- *     location to store the data of the value (in UTF-16, if it's a string)
- * @value_data_size: (out) (optional): Pointer to a location to store the size
- *     of @value_data, in bytes (including any NUL-terminators, if it's a string).
- *     %NULL if length is not needed.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_point_get_fs_type:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Stores the data of the value currently being iterated over in @value_data,
- * and its length - in @value_data_len (if not %NULL).
+ * Gets the file system type for the mount point.
  *
- * Returns: %TRUE if value data was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: a string containing the file system type.
  */
 
 
 /**
- * g_win32_registry_value_iter_get_name:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
- * @value_name: (out callee-allocates) (transfer none): Pointer to a location
- *     to store the name of a value (in UTF-8).
- * @value_name_len: (out) (optional): Pointer to a location to store the length
- *     of @value_name, in gchars, excluding NUL-terminator.
- *     %NULL if length is not needed.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_point_get_mount_path:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Stores the name of the value currently being iterated over in @value_name,
- * and its length - in @value_name_len (if not %NULL).
+ * Gets the mount path for a unix mount point.
  *
- * Returns: %TRUE if value name was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: (type filename): a string containing the mount path.
  */
 
 
 /**
- * g_win32_registry_value_iter_get_name_w:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
- * @value_name: (out callee-allocates) (transfer none): Pointer to a location
- *     to store the name of a value (in UTF-16).
- * @value_name_len: (out) (optional): Pointer to a location to store the length
- *     of @value_name, in gunichar2s, excluding NUL-terminator.
- *     %NULL if length is not needed.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_point_get_options:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Stores the name of the value currently being iterated over in @value_name,
- * and its length - in @value_name (if not %NULL).
+ * Gets the options for the mount point.
  *
- * Returns: %TRUE if value name was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: a string containing the options.
+ * Since: 2.32
  */
 
 
 /**
- * g_win32_registry_value_iter_get_value_type:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
- * @value_type: (out): Pointer to a location to store the type of
- *     the value.
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ * g_unix_mount_point_guess_can_eject:
+ * @mount_point: a #GUnixMountPoint
  *
- * Stores the type of the value currently being iterated over in @value_type.
+ * Guesses whether a Unix mount point can be ejected.
  *
- * Returns: %TRUE if value type was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: %TRUE if @mount_point is deemed to be ejectable.
  */
 
 
 /**
- * g_win32_registry_value_iter_init:
- * @iter: (in) (transfer none): a pointer to a #GWin32RegistryValueIter
- * @key: (in) (transfer none): a #GWin32RegistryKey to iterate over
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
- *
- * Initialises (without allocating) a #GWin32RegistryValueIter.  @iter may be
- * completely uninitialised prior to this call; its old value is
- * ignored.
+ * g_unix_mount_point_guess_icon:
+ * @mount_point: a #GUnixMountPoint
  *
- * The iterator remains valid for as long as @key exists.
- * Clean up its internal buffers with a call to
- * g_win32_registry_value_iter_clear() when done.
+ * Guesses the icon of a Unix mount point.
  *
- * Returns: %TRUE if iterator was initialized successfully, %FALSE on error.
- * Since: 2.46
+ * Returns: (transfer full): a #GIcon
  */
 
 
 /**
- * g_win32_registry_value_iter_n_values:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
- *
- * Queries the number of values items in the key that we are
- * iterating over.  This is the total number of values -- not the number
- * of items remaining.
+ * g_unix_mount_point_guess_name:
+ * @mount_point: a #GUnixMountPoint
  *
- * This information is accurate at the point of iterator initialization,
- * and may go out of sync with reality even while values are enumerated.
+ * Guesses the name of a Unix mount point.
+ * The result is a translated string.
  *
- * Returns: the number of values in the key
- * Since: 2.46
+ * Returns: A newly allocated string that must
+ *     be freed with g_free()
  */
 
 
 /**
- * g_win32_registry_value_iter_next:
- * @iter: (in) (transfer none): a #GWin32RegistryValueIter
- * @skip_errors: (in): %TRUE if iterator should silently ignore errors (such as
- *     the actual number of values being less than expected) and
- *     proceed forward
- * @error: (nullable): a pointer to %NULL #GError, or %NULL
- *
- * Advances iterator to the next value in the key. If no more values remain then
- * FALSE is returned.
- * Enumeration errors can be ignored if @skip_errors is %TRUE
- *
- * Here is an example for iterating with g_win32_registry_value_iter_next():
- * |[<!-- language="C" -->
- *   // iterate values of a key
- *   void
- *   iterate_values_recursive (GWin32RegistryKey *key)
- *   {
- *     GWin32RegistryValueIter iter;
- *     gchar *name;
- *     GWin32RegistryValueType val_type;
- *     gchar *val_data;
- *
- *     if (!g_win32_registry_value_iter_init (&iter, key, NULL))
- *       return;
- *
- *     while (g_win32_registry_value_iter_next (&iter, TRUE, NULL))
- *       {
- *         if ((!g_win32_registry_value_iter_get_value_type (&iter, &value)) ||
- *             ((val_type != G_WIN32_REGISTRY_VALUE_STR) &&
- *              (val_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR)))
- *           continue;
- *
- *         if (g_win32_registry_value_iter_get_value (&iter, TRUE, &name, NULL,
- *                                                    &val_data, NULL, NULL))
- *           g_print ("value '%s' = '%s'\n", name, val_data);
- *       }
+ * g_unix_mount_point_guess_symbolic_icon:
+ * @mount_point: a #GUnixMountPoint
  *
- *     g_win32_registry_value_iter_clear (&iter);
- *   }
- * ]|
+ * Guesses the symbolic icon of a Unix mount point.
  *
- * Returns: %TRUE if next value info was retrieved, %FALSE otherwise.
- * Since: 2.46
+ * Returns: (transfer full): a #GIcon
+ * Since: 2.34
  */
 
 
 /**
- * g_zlib_compressor_get_file_info:
- * @compressor: a #GZlibCompressor
+ * g_unix_mount_point_guess_type:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Returns the #GZlibCompressor:file-info property.
+ * Guesses the type of a unix mount point.
+ * If the mount type cannot be determined,
+ * returns %G_UNIX_MOUNT_TYPE_UNKNOWN.
  *
- * Returns: (transfer none): a #GFileInfo, or %NULL
- * Since: 2.26
+ * Returns: a #GUnixMountType.
  */
 
 
 /**
- * g_zlib_compressor_new:
- * @format: The format to use for the compressed data
- * @level: compression level (0-9), -1 for default
+ * g_unix_mount_point_is_loopback:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Creates a new #GZlibCompressor.
+ * Checks if a unix mount point is a loopback device.
  *
- * Returns: a new #GZlibCompressor
- * Since: 2.24
+ * Returns: %TRUE if the mount point is a loopback. %FALSE otherwise.
  */
 
 
 /**
- * g_zlib_compressor_set_file_info:
- * @compressor: a #GZlibCompressor
- * @file_info: (nullable): a #GFileInfo
- *
- * Sets @file_info in @compressor. If non-%NULL, and @compressor's
- * #GZlibCompressor:format property is %G_ZLIB_COMPRESSOR_FORMAT_GZIP,
- * it will be used to set the file name and modification time in
- * the GZIP header of the compressed data.
+ * g_unix_mount_point_is_readonly:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Note: it is an error to call this function while a compression is in
- * progress; it may only be called immediately after creation of @compressor,
- * or after resetting it with g_converter_reset().
+ * Checks if a unix mount point is read only.
  *
- * Since: 2.26
+ * Returns: %TRUE if a mount point is read only.
  */
 
 
 /**
- * g_zlib_decompressor_get_file_info:
- * @decompressor: a #GZlibDecompressor
+ * g_unix_mount_point_is_user_mountable:
+ * @mount_point: a #GUnixMountPoint.
  *
- * Retrieves the #GFileInfo constructed from the GZIP header data
- * of compressed data processed by @compressor, or %NULL if @decompressor's
- * #GZlibDecompressor:format property is not %G_ZLIB_COMPRESSOR_FORMAT_GZIP,
- * or the header data was not fully processed yet, or it not present in the
- * data stream at all.
+ * Checks if a unix mount point is mountable by the user.
  *
- * Returns: (transfer none): a #GFileInfo, or %NULL
- * Since: 2.26
+ * Returns: %TRUE if the mount point is user mountable.
  */
 
 
 /**
- * g_zlib_decompressor_new:
- * @format: The format to use for the compressed data
+ * g_unix_mount_points_changed_since:
+ * @time: guint64 to contain a timestamp.
  *
- * Creates a new #GZlibDecompressor.
+ * Checks if the unix mount points have changed since a given unix time.
  *
- * Returns: a new #GZlibDecompressor
- * Since: 2.24
+ * Returns: %TRUE if the mount points have changed since @time.
  */
 
 
 /**
- * get_viewable_logical_drives:
+ * g_unix_mount_points_get:
+ * @time_read: (out) (optional): guint64 to contain a timestamp.
  *
- * Returns the list of logical and viewable drives as defined by
- * GetLogicalDrives() and the registry keys
- * Software\Microsoft\Windows\CurrentVersion\Policies\Explorer under
- * HKLM or HKCU. If neither key exists the result of
- * GetLogicalDrives() is returned.
+ * Gets a #GList of #GUnixMountPoint containing the unix mount points.
+ * If @time_read is set, it will be filled with the mount timestamp,
+ * allowing for checking if the mounts have changed with
+ * g_unix_mount_points_changed_since().
  *
- * Returns: bitmask with same meaning as returned by GetLogicalDrives()
+ * Returns: (element-type GUnixMountPoint) (transfer full):
+ *     a #GList of the UNIX mountpoints.
  */
 
 
 /**
- * gxdp_documents_call_add:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_o_path_fd: Argument to pass with the method invocation.
- * @arg_reuse_existing: Argument to pass with the method invocation.
- * @arg_persistent: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_unix_mounts_changed_since:
+ * @time: guint64 to contain a timestamp.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Add">Add()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_add_finish() to get the result of the operation.
+ * Checks if the unix mounts have changed since a given unix time.
  *
- * See gxdp_documents_call_add_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE if the mounts have changed since @time.
  */
 
 
 /**
- * gxdp_documents_call_add_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_doc_id: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_add().
- * @error: Return location for error or %NULL.
+ * g_unix_mounts_get:
+ * @time_read: (out) (optional): guint64 to contain a timestamp, or %NULL
  *
- * Finishes an operation started with gxdp_documents_call_add().
+ * Gets a #GList of #GUnixMountEntry containing the unix mounts.
+ * If @time_read is set, it will be filled with the mount
+ * timestamp, allowing for checking if the mounts have changed
+ * with g_unix_mounts_changed_since().
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (element-type GUnixMountEntry) (transfer full):
+ *     a #GList of the UNIX mounts.
  */
 
 
 /**
- * gxdp_documents_call_add_full:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_o_path_fds: Argument to pass with the method invocation.
- * @arg_flags: Argument to pass with the method invocation.
- * @arg_app_id: Argument to pass with the method invocation.
- * @arg_permissions: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_unix_output_stream_get_close_fd:
+ * @stream: a #GUnixOutputStream
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddFull">AddFull()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_add_full_finish() to get the result of the operation.
+ * Returns whether the file descriptor of @stream will be
+ * closed when the stream is closed.
  *
- * See gxdp_documents_call_add_full_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE if the file descriptor is closed when done
+ * Since: 2.20
  */
 
 
 /**
- * gxdp_documents_call_add_full_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_doc_ids: (out): Return location for return parameter or %NULL to ignore.
- * @out_extra_out: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_add_full().
- * @error: Return location for error or %NULL.
+ * g_unix_output_stream_get_fd:
+ * @stream: a #GUnixOutputStream
  *
- * Finishes an operation started with gxdp_documents_call_add_full().
+ * Return the UNIX file descriptor that the stream writes to.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: The file descriptor of @stream
+ * Since: 2.20
  */
 
 
 /**
- * gxdp_documents_call_add_full_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_o_path_fds: Argument to pass with the method invocation.
- * @arg_flags: Argument to pass with the method invocation.
- * @arg_app_id: Argument to pass with the method invocation.
- * @arg_permissions: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @out_doc_ids: (out): Return location for return parameter or %NULL to ignore.
- * @out_extra_out: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_unix_output_stream_new:
+ * @fd: a UNIX file descriptor
+ * @close_fd: %TRUE to close the file descriptor when done
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddFull">AddFull()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Creates a new #GUnixOutputStream for the given @fd.
  *
- * See gxdp_documents_call_add_full() for the asynchronous version of this method.
+ * If @close_fd, is %TRUE, the file descriptor will be closed when
+ * the output stream is destroyed.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: a new #GOutputStream
  */
 
 
 /**
- * gxdp_documents_call_add_named:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_o_path_parent_fd: Argument to pass with the method invocation.
- * @arg_filename: Argument to pass with the method invocation.
- * @arg_reuse_existing: Argument to pass with the method invocation.
- * @arg_persistent: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_unix_output_stream_set_close_fd:
+ * @stream: a #GUnixOutputStream
+ * @close_fd: %TRUE to close the file descriptor when done
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddNamed">AddNamed()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_add_named_finish() to get the result of the operation.
+ * Sets whether the file descriptor of @stream shall be closed
+ * when the stream is closed.
  *
- * See gxdp_documents_call_add_named_sync() for the synchronous, blocking version of this method.
+ * Since: 2.20
  */
 
 
 /**
- * gxdp_documents_call_add_named_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_doc_id: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_add_named().
- * @error: Return location for error or %NULL.
+ * g_unix_socket_address_abstract_names_supported:
  *
- * Finishes an operation started with gxdp_documents_call_add_named().
+ * Checks if abstract UNIX domain socket names are supported.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if supported, %FALSE otherwise
+ * Since: 2.22
  */
 
 
 /**
- * gxdp_documents_call_add_named_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_o_path_parent_fd: Argument to pass with the method invocation.
- * @arg_filename: Argument to pass with the method invocation.
- * @arg_reuse_existing: Argument to pass with the method invocation.
- * @arg_persistent: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @out_doc_id: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddNamed">AddNamed()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_unix_socket_address_get_address_type:
+ * @address: a #GInetSocketAddress
  *
- * See gxdp_documents_call_add_named() for the asynchronous version of this method.
+ * Gets @address's type.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: a #GUnixSocketAddressType
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_documents_call_add_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_o_path_fd: Argument to pass with the method invocation.
- * @arg_reuse_existing: Argument to pass with the method invocation.
- * @arg_persistent: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @out_doc_id: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Add">Add()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_unix_socket_address_get_is_abstract:
+ * @address: a #GInetSocketAddress
  *
- * See gxdp_documents_call_add() for the asynchronous version of this method.
+ * Tests if @address is abstract.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if the address is abstract, %FALSE otherwise
+ * Since: 2.22
+ * Deprecated: Use g_unix_socket_address_get_address_type()
  */
 
 
 /**
- * gxdp_documents_call_delete:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_unix_socket_address_get_path:
+ * @address: a #GInetSocketAddress
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Delete">Delete()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_delete_finish() to get the result of the operation.
+ * Gets @address's path, or for abstract sockets the "name".
+ *
+ * Guaranteed to be zero-terminated, but an abstract socket
+ * may contain embedded zeros, and thus you should use
+ * g_unix_socket_address_get_path_len() to get the true length
+ * of this string.
  *
- * See gxdp_documents_call_delete_sync() for the synchronous, blocking version of this method.
+ * Returns: the path for @address
+ * Since: 2.22
  */
 
 
 /**
- * gxdp_documents_call_delete_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_delete().
- * @error: Return location for error or %NULL.
+ * g_unix_socket_address_get_path_len:
+ * @address: a #GInetSocketAddress
+ *
+ * Gets the length of @address's path.
  *
- * Finishes an operation started with gxdp_documents_call_delete().
+ * For details, see g_unix_socket_address_get_path().
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: the length of the path
+ * Since: 2.22
  */
 
 
 /**
- * gxdp_documents_call_delete_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_unix_socket_address_new:
+ * @path: the socket path
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Delete">Delete()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Creates a new #GUnixSocketAddress for @path.
  *
- * See gxdp_documents_call_delete() for the asynchronous version of this method.
+ * To create abstract socket addresses, on systems that support that,
+ * use g_unix_socket_address_new_abstract().
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: a new #GUnixSocketAddress
+ * Since: 2.22
  */
 
 
 /**
- * gxdp_documents_call_get_mount_point:
- * @proxy: A #GXdpDocumentsProxy.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_unix_socket_address_new_abstract:
+ * @path: (array length=path_len) (element-type gchar): the abstract name
+ * @path_len: the length of @path, or -1
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GetMountPoint">GetMountPoint()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_get_mount_point_finish() to get the result of the operation.
+ * Creates a new %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED
+ * #GUnixSocketAddress for @path.
  *
- * See gxdp_documents_call_get_mount_point_sync() for the synchronous, blocking version of this method.
+ * Returns: a new #GUnixSocketAddress
+ * Deprecated: Use g_unix_socket_address_new_with_type().
  */
 
 
 /**
- * gxdp_documents_call_get_mount_point_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_path: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_get_mount_point().
- * @error: Return location for error or %NULL.
+ * g_unix_socket_address_new_with_type:
+ * @path: (array length=path_len) (element-type gchar): the name
+ * @path_len: the length of @path, or -1
+ * @type: a #GUnixSocketAddressType
  *
- * Finishes an operation started with gxdp_documents_call_get_mount_point().
+ * Creates a new #GUnixSocketAddress of type @type with name @path.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * gxdp_documents_call_get_mount_point_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_path: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * If @type is %G_UNIX_SOCKET_ADDRESS_PATH, this is equivalent to
+ * calling g_unix_socket_address_new().
+ *
+ * If @type is %G_UNIX_SOCKET_ADDRESS_ANONYMOUS, @path and @path_len will be
+ * ignored.
+ *
+ * If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT, then @path_len
+ * bytes of @path will be copied to the socket's path, and only those
+ * bytes will be considered part of the name. (If @path_len is -1,
+ * then @path is assumed to be NUL-terminated.) For example, if @path
+ * was "test", then calling g_socket_address_get_native_size() on the
+ * returned socket would return 7 (2 bytes of overhead, 1 byte for the
+ * abstract-socket indicator byte, and 4 bytes for the name "test").
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GetMountPoint">GetMountPoint()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * If @path_type is %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED, then
+ * @path_len bytes of @path will be copied to the socket's path, the
+ * rest of the path will be padded with 0 bytes, and the entire
+ * zero-padded buffer will be considered the name. (As above, if
+ * @path_len is -1, then @path is assumed to be NUL-terminated.) In
+ * this case, g_socket_address_get_native_size() will always return
+ * the full size of a `struct sockaddr_un`, although
+ * g_unix_socket_address_get_path_len() will still return just the
+ * length of @path.
  *
- * See gxdp_documents_call_get_mount_point() for the asynchronous version of this method.
+ * %G_UNIX_SOCKET_ADDRESS_ABSTRACT is preferred over
+ * %G_UNIX_SOCKET_ADDRESS_ABSTRACT_PADDED for new programs. Of course,
+ * when connecting to a server created by another process, you must
+ * use the appropriate type corresponding to how that process created
+ * its listening socket.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: a new #GUnixSocketAddress
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_documents_call_grant_permissions:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @arg_app_id: Argument to pass with the method invocation.
- * @arg_permissions: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_vfs_get_default:
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GrantPermissions">GrantPermissions()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_grant_permissions_finish() to get the result of the operation.
+ * Gets the default #GVfs for the system.
  *
- * See gxdp_documents_call_grant_permissions_sync() for the synchronous, blocking version of this method.
+ * Returns: (transfer none): a #GVfs.
  */
 
 
 /**
- * gxdp_documents_call_grant_permissions_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_grant_permissions().
- * @error: Return location for error or %NULL.
+ * g_vfs_get_file_for_path:
+ * @vfs: a #GVfs.
+ * @path: a string containing a VFS path.
  *
- * Finishes an operation started with gxdp_documents_call_grant_permissions().
+ * Gets a #GFile for @path.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer full): a #GFile.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * gxdp_documents_call_grant_permissions_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @arg_app_id: Argument to pass with the method invocation.
- * @arg_permissions: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_vfs_get_file_for_uri:
+ * @vfs: a#GVfs.
+ * @uri: a string containing a URI
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GrantPermissions">GrantPermissions()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Gets a #GFile for @uri.
  *
- * See gxdp_documents_call_grant_permissions() for the asynchronous version of this method.
+ * This operation never fails, but the returned object
+ * might not support any I/O operation if the URI
+ * is malformed or if the URI scheme is not supported.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer full): a #GFile.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * gxdp_documents_call_info:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_vfs_get_local:
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Info">Info()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_info_finish() to get the result of the operation.
+ * Gets the local #GVfs for the system.
  *
- * See gxdp_documents_call_info_sync() for the synchronous, blocking version of this method.
+ * Returns: (transfer none): a #GVfs.
  */
 
 
 /**
- * gxdp_documents_call_info_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_path: (out): Return location for return parameter or %NULL to ignore.
- * @out_apps: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_info().
- * @error: Return location for error or %NULL.
+ * g_vfs_get_supported_uri_schemes:
+ * @vfs: a #GVfs.
  *
- * Finishes an operation started with gxdp_documents_call_info().
+ * Gets a list of URI schemes supported by @vfs.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (transfer none): a %NULL-terminated array of strings.
+ *     The returned array belongs to GIO and must
+ *     not be freed or modified.
  */
 
 
 /**
- * gxdp_documents_call_info_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @out_path: (out): Return location for return parameter or %NULL to ignore.
- * @out_apps: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Info">Info()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_vfs_is_active:
+ * @vfs: a #GVfs.
  *
- * See gxdp_documents_call_info() for the asynchronous version of this method.
+ * Checks if the VFS is active.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if construction of the @vfs was successful
+ *     and it is now active.
  */
 
 
 /**
- * gxdp_documents_call_list:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_app_id: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_vfs_parse_name:
+ * @vfs: a #GVfs.
+ * @parse_name: a string to be parsed by the VFS module.
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.List">List()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_list_finish() to get the result of the operation.
+ * This operation never fails, but the returned object might
+ * not support any I/O operations if the @parse_name cannot
+ * be parsed by the #GVfs module.
  *
- * See gxdp_documents_call_list_sync() for the synchronous, blocking version of this method.
+ * Returns: (transfer full): a #GFile for the given @parse_name.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * gxdp_documents_call_list_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_docs: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_list().
- * @error: Return location for error or %NULL.
+ * g_vfs_register_uri_scheme:
+ * @vfs: a #GVfs
+ * @scheme: an URI scheme, e.g. "http"
+ * @uri_func: (scope notified) (nullable): a #GVfsFileLookupFunc
+ * @uri_data: (nullable): custom data passed to be passed to @uri_func, or %NULL
+ * @uri_destroy: (nullable): function to be called when unregistering the
+ *     URI scheme, or when @vfs is disposed, to free the resources used
+ *     by the URI lookup function
+ * @parse_name_func: (scope notified) (nullable): a #GVfsFileLookupFunc
+ * @parse_name_data: (nullable): custom data passed to be passed to
+ *     @parse_name_func, or %NULL
+ * @parse_name_destroy: (nullable): function to be called when unregistering the
+ *     URI scheme, or when @vfs is disposed, to free the resources used
+ *     by the parse name lookup function
  *
- * Finishes an operation started with gxdp_documents_call_list().
+ * Registers @uri_func and @parse_name_func as the #GFile URI and parse name
+ * lookup functions for URIs with a scheme matching @scheme.
+ * Note that @scheme is registered only within the running application, as
+ * opposed to desktop-wide as it happens with GVfs backends.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * gxdp_documents_call_list_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_app_id: Argument to pass with the method invocation.
- * @out_docs: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * When a #GFile is requested with an URI containing @scheme (e.g. through
+ * g_file_new_for_uri()), @uri_func will be called to allow a custom
+ * constructor. The implementation of @uri_func should not be blocking, and
+ * must not call g_vfs_register_uri_scheme() or g_vfs_unregister_uri_scheme().
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.List">List()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * When g_file_parse_name() is called with a parse name obtained from such file,
+ * @parse_name_func will be called to allow the #GFile to be created again. In
+ * that case, it's responsibility of @parse_name_func to make sure the parse
+ * name matches what the custom #GFile implementation returned when
+ * g_file_get_parse_name() was previously called. The implementation of
+ * @parse_name_func should not be blocking, and must not call
+ * g_vfs_register_uri_scheme() or g_vfs_unregister_uri_scheme().
  *
- * See gxdp_documents_call_list() for the asynchronous version of this method.
+ * It's an error to call this function twice with the same scheme. To unregister
+ * a custom URI scheme, use g_vfs_unregister_uri_scheme().
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if @scheme was successfully registered, or %FALSE if a handler
+ *     for @scheme already exists.
+ * Since: 2.50
  */
 
 
 /**
- * gxdp_documents_call_lookup:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_filename: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_vfs_unregister_uri_scheme:
+ * @vfs: a #GVfs
+ * @scheme: an URI scheme, e.g. "http"
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Lookup">Lookup()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_lookup_finish() to get the result of the operation.
+ * Unregisters the URI handler for @scheme previously registered with
+ * g_vfs_register_uri_scheme().
  *
- * See gxdp_documents_call_lookup_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE if @scheme was successfully unregistered, or %FALSE if a
+ *     handler for @scheme does not exist.
+ * Since: 2.50
  */
 
 
 /**
- * gxdp_documents_call_lookup_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @out_doc_id: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_lookup().
- * @error: Return location for error or %NULL.
+ * g_volume_can_eject:
+ * @volume: a #GVolume
  *
- * Finishes an operation started with gxdp_documents_call_lookup().
+ * Checks if a volume can be ejected.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if the @volume can be ejected. %FALSE otherwise
  */
 
 
 /**
- * gxdp_documents_call_lookup_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_filename: Argument to pass with the method invocation.
- * @out_doc_id: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Lookup">Lookup()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_volume_can_mount:
+ * @volume: a #GVolume
  *
- * See gxdp_documents_call_lookup() for the asynchronous version of this method.
+ * Checks if a volume can be mounted.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if the @volume can be mounted. %FALSE otherwise
  */
 
 
 /**
- * gxdp_documents_call_revoke_permissions:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @arg_app_id: Argument to pass with the method invocation.
- * @arg_permissions: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_volume_eject:
+ * @volume: a #GVolume
+ * @flags: flags affecting the unmount if required for eject
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL
+ * @user_data: user data that gets passed to @callback
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.RevokePermissions">RevokePermissions()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_call_revoke_permissions_finish() to get the result of the operation.
+ * Ejects a volume. This is an asynchronous operation, and is
+ * finished by calling g_volume_eject_finish() with the @volume
+ * and #GAsyncResult returned in the @callback.
  *
- * See gxdp_documents_call_revoke_permissions_sync() for the synchronous, blocking version of this method.
+ * Deprecated: 2.22: Use g_volume_eject_with_operation() instead.
  */
 
 
 /**
- * gxdp_documents_call_revoke_permissions_finish:
- * @proxy: A #GXdpDocumentsProxy.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_call_revoke_permissions().
- * @error: Return location for error or %NULL.
+ * g_volume_eject_finish:
+ * @volume: pointer to a #GVolume
+ * @result: a #GAsyncResult
+ * @error: a #GError location to store an error, or %NULL to ignore
  *
- * Finishes an operation started with gxdp_documents_call_revoke_permissions().
+ * Finishes ejecting a volume. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE, %FALSE if operation failed
+ * Deprecated: 2.22: Use g_volume_eject_with_operation_finish() instead.
  */
 
 
 /**
- * gxdp_documents_call_revoke_permissions_sync:
- * @proxy: A #GXdpDocumentsProxy.
- * @arg_doc_id: Argument to pass with the method invocation.
- * @arg_app_id: Argument to pass with the method invocation.
- * @arg_permissions: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-Documents.RevokePermissions">RevokePermissions()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_volume_eject_with_operation:
+ * @volume: a #GVolume
+ * @flags: flags affecting the unmount if required for eject
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to
+ *     avoid user interaction
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL
+ * @user_data: user data passed to @callback
  *
- * See gxdp_documents_call_revoke_permissions() for the asynchronous version of this method.
+ * Ejects a volume. This is an asynchronous operation, and is
+ * finished by calling g_volume_eject_with_operation_finish() with the @volume
+ * and #GAsyncResult data returned in the @callback.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Since: 2.22
  */
 
 
 /**
- * gxdp_documents_complete_add:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @doc_id: Parameter to return.
+ * g_volume_eject_with_operation_finish:
+ * @volume: a #GVolume
+ * @result: a #GAsyncResult
+ * @error: a #GError location to store the error occurring, or %NULL
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Add">Add()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Finishes ejecting a volume. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: %TRUE if the volume was successfully ejected. %FALSE otherwise
+ * Since: 2.22
  */
 
 
 /**
- * gxdp_documents_complete_add_full:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @doc_ids: Parameter to return.
- * @extra_out: Parameter to return.
+ * g_volume_enumerate_identifiers:
+ * @volume: a #GVolume
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddFull">AddFull()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the kinds of [identifiers][volume-identifier] that @volume has.
+ * Use g_volume_get_identifier() to obtain the identifiers themselves.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (array zero-terminated=1) (transfer full): a %NULL-terminated array
+ *   of strings containing kinds of identifiers. Use g_strfreev() to free.
  */
 
 
 /**
- * gxdp_documents_complete_add_named:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @doc_id: Parameter to return.
+ * g_volume_get_activation_root:
+ * @volume: a #GVolume
+ *
+ * Gets the activation root for a #GVolume if it is known ahead of
+ * mount time. Returns %NULL otherwise. If not %NULL and if @volume
+ * is mounted, then the result of g_mount_get_root() on the
+ * #GMount object obtained from g_volume_get_mount() will always
+ * either be equal or a prefix of what this function returns. In
+ * other words, in code
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.AddNamed">AddNamed()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * |[<!-- language="C" -->
+ *   GMount *mount;
+ *   GFile *mount_root
+ *   GFile *volume_activation_root;
  *
- * This method will free @invocation, you cannot use it afterwards.
- */
-
-
-/**
- * gxdp_documents_complete_delete:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
+ *   mount = g_volume_get_mount (volume); // mounted, so never NULL
+ *   mount_root = g_mount_get_root (mount);
+ *   volume_activation_root = g_volume_get_activation_root (volume); // assume not NULL
+ * ]|
+ * then the expression
+ * |[<!-- language="C" -->
+ *   (g_file_has_prefix (volume_activation_root, mount_root) ||
+ *    g_file_equal (volume_activation_root, mount_root))
+ * ]|
+ * will always be %TRUE.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Delete">Delete()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Activation roots are typically used in #GVolumeMonitor
+ * implementations to find the underlying mount to shadow, see
+ * g_mount_is_shadowed() for more details.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (nullable) (transfer full): the activation root of @volume
+ *     or %NULL. Use g_object_unref() to free.
+ * Since: 2.18
  */
 
 
 /**
- * gxdp_documents_complete_get_mount_point:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @path: Parameter to return.
+ * g_volume_get_drive:
+ * @volume: a #GVolume
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GetMountPoint">GetMountPoint()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the drive for the @volume.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (transfer full) (nullable): a #GDrive or %NULL if @volume is not
+ *     associated with a drive. The returned object should be unreffed
+ *     with g_object_unref() when no longer needed.
  */
 
 
 /**
- * gxdp_documents_complete_grant_permissions:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * g_volume_get_icon:
+ * @volume: a #GVolume
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.GrantPermissions">GrantPermissions()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the icon for @volume.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (transfer full): a #GIcon.
+ *     The returned object should be unreffed with g_object_unref()
+ *     when no longer needed.
  */
 
 
 /**
- * gxdp_documents_complete_info:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @path: Parameter to return.
- * @apps: Parameter to return.
+ * g_volume_get_identifier:
+ * @volume: a #GVolume
+ * @kind: the kind of identifier to return
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Info">Info()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the identifier of the given kind for @volume.
+ * See the [introduction][volume-identifier] for more
+ * information about volume identifiers.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (nullable) (transfer full): a newly allocated string containing the
+ *     requested identifier, or %NULL if the #GVolume
+ *     doesn't have this kind of identifier
  */
 
 
 /**
- * gxdp_documents_complete_list:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @docs: Parameter to return.
+ * g_volume_get_mount:
+ * @volume: a #GVolume
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.List">List()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the mount for the @volume.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (transfer full) (nullable): a #GMount or %NULL if @volume isn't mounted.
+ *     The returned object should be unreffed with g_object_unref()
+ *     when no longer needed.
  */
 
 
 /**
- * gxdp_documents_complete_lookup:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @doc_id: Parameter to return.
+ * g_volume_get_name:
+ * @volume: a #GVolume
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.Lookup">Lookup()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the name of @volume.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: the name for the given @volume. The returned string should
+ *     be freed with g_free() when no longer needed.
  */
 
 
 /**
- * gxdp_documents_complete_revoke_permissions:
- * @object: A #GXdpDocuments.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * g_volume_get_sort_key:
+ * @volume: a #GVolume
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-Documents.RevokePermissions">RevokePermissions()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Gets the sort key for @volume, if any.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: (nullable): Sorting key for @volume or %NULL if no such key is available
+ * Since: 2.32
  */
 
 
 /**
- * gxdp_documents_get_version: (skip)
- * @object: A #GXdpDocuments.
- *
- * Gets the value of the <link linkend="gdbus-property-org-freedesktop-portal-Documents.version">"version"</link> D-Bus property.
+ * g_volume_get_symbolic_icon:
+ * @volume: a #GVolume
  *
- * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ * Gets the symbolic icon for @volume.
  *
- * Returns: The property value.
+ * Returns: (transfer full): a #GIcon.
+ *     The returned object should be unreffed with g_object_unref()
+ *     when no longer needed.
+ * Since: 2.34
  */
 
 
 /**
- * gxdp_documents_interface_info:
+ * g_volume_get_uuid:
+ * @volume: a #GVolume
  *
- * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-portal-Documents.top_of_page">org.freedesktop.portal.Documents</link> D-Bus interface.
+ * Gets the UUID for the @volume. The reference is typically based on
+ * the file system UUID for the volume in question and should be
+ * considered an opaque string. Returns %NULL if there is no UUID
+ * available.
  *
- * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ * Returns: (nullable) (transfer full): the UUID for @volume or %NULL if no UUID
+ *     can be computed.
+ *     The returned string should be freed with g_free()
+ *     when no longer needed.
  */
 
 
 /**
- * gxdp_documents_override_properties:
- * @klass: The class structure for a #GObject<!-- -->-derived class.
- * @property_id_begin: The property id to assign to the first overridden property.
+ * g_volume_monitor_adopt_orphan_mount:
+ * @mount: a #GMount object to find a parent for
  *
- * Overrides all #GObject properties in the #GXdpDocuments interface for a concrete class.
- * The properties are overridden in the order they are defined.
+ * This function should be called by any #GVolumeMonitor
+ * implementation when a new #GMount object is created that is not
+ * associated with a #GVolume object. It must be called just before
+ * emitting the @mount_added signal.
  *
- * Returns: The last property id.
- */
-
-
-/**
- * gxdp_documents_proxy_new:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
+ * If the return value is not %NULL, the caller must associate the
+ * returned #GVolume object with the #GMount. This involves returning
+ * it in its g_mount_get_volume() implementation. The caller must
+ * also listen for the "removed" signal on the returned object
+ * and give up its reference when handling that signal
  *
- * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-Documents.top_of_page">org.freedesktop.portal.Documents</link>. See g_dbus_proxy_new() for more details.
+ * Similary, if implementing g_volume_monitor_adopt_orphan_mount(),
+ * the implementor must take a reference to @mount and return it in
+ * its g_volume_get_mount() implemented. Also, the implementor must
+ * listen for the "unmounted" signal on @mount and give up its
+ * reference upon handling that signal.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_proxy_new_finish() to get the result of the operation.
+ * There are two main use cases for this function.
  *
- * See gxdp_documents_proxy_new_sync() for the synchronous, blocking version of this constructor.
- */
-
-
-/**
- * gxdp_documents_proxy_new_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_proxy_new().
- * @error: Return location for error or %NULL
+ * One is when implementing a user space file system driver that reads
+ * blocks of a block device that is already represented by the native
+ * volume monitor (for example a CD Audio file system driver). Such
+ * a driver will generate its own #GMount object that needs to be
+ * associated with the #GVolume object that represents the volume.
  *
- * Finishes an operation started with gxdp_documents_proxy_new().
+ * The other is for implementing a #GVolumeMonitor whose sole purpose
+ * is to return #GVolume objects representing entries in the users
+ * "favorite servers" list or similar.
  *
- * Returns: (transfer full) (type GXdpDocumentsProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: (transfer full): the #GVolume object that is the parent for @mount or %NULL
+ * if no wants to adopt the #GMount.
+ * Deprecated: 2.20: Instead of using this function, #GVolumeMonitor
+ * implementations should instead create shadow mounts with the URI of
+ * the mount they intend to adopt. See the proxy volume monitor in
+ * gvfs for an example of this. Also see g_mount_is_shadowed(),
+ * g_mount_shadow() and g_mount_unshadow() functions.
  */
 
 
 /**
- * gxdp_documents_proxy_new_for_bus:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
- *
- * Like gxdp_documents_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ * g_volume_monitor_get:
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_documents_proxy_new_for_bus_finish() to get the result of the operation.
+ * Gets the volume monitor used by gio.
  *
- * See gxdp_documents_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ * Returns: (transfer full): a reference to the #GVolumeMonitor used by gio. Call
+ *    g_object_unref() when done with it.
  */
 
 
 /**
- * gxdp_documents_proxy_new_for_bus_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_documents_proxy_new_for_bus().
- * @error: Return location for error or %NULL
+ * g_volume_monitor_get_connected_drives:
+ * @volume_monitor: a #GVolumeMonitor.
+ *
+ * Gets a list of drives connected to the system.
  *
- * Finishes an operation started with gxdp_documents_proxy_new_for_bus().
+ * The returned list should be freed with g_list_free(), after
+ * its elements have been unreffed with g_object_unref().
  *
- * Returns: (transfer full) (type GXdpDocumentsProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: (element-type GDrive) (transfer full): a #GList of connected #GDrive objects.
  */
 
 
 /**
- * gxdp_documents_proxy_new_for_bus_sync:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
- *
- * Like gxdp_documents_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
- *
- * The calling thread is blocked until a reply is received.
+ * g_volume_monitor_get_mount_for_uuid:
+ * @volume_monitor: a #GVolumeMonitor.
+ * @uuid: the UUID to look for
  *
- * See gxdp_documents_proxy_new_for_bus() for the asynchronous version of this constructor.
+ * Finds a #GMount object by its UUID (see g_mount_get_uuid())
  *
- * Returns: (transfer full) (type GXdpDocumentsProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: (transfer full): a #GMount or %NULL if no such mount is available.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * gxdp_documents_proxy_new_sync:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
- *
- * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-Documents.top_of_page">org.freedesktop.portal.Documents</link>. See g_dbus_proxy_new_sync() for more details.
+ * g_volume_monitor_get_mounts:
+ * @volume_monitor: a #GVolumeMonitor.
  *
- * The calling thread is blocked until a reply is received.
+ * Gets a list of the mounts on the system.
  *
- * See gxdp_documents_proxy_new() for the asynchronous version of this constructor.
+ * The returned list should be freed with g_list_free(), after
+ * its elements have been unreffed with g_object_unref().
  *
- * Returns: (transfer full) (type GXdpDocumentsProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: (element-type GMount) (transfer full): a #GList of #GMount objects.
  */
 
 
 /**
- * gxdp_documents_set_version: (skip)
- * @object: A #GXdpDocuments.
- * @value: The value to set.
+ * g_volume_monitor_get_volume_for_uuid:
+ * @volume_monitor: a #GVolumeMonitor.
+ * @uuid: the UUID to look for
  *
- * Sets the <link linkend="gdbus-property-org-freedesktop-portal-Documents.version">"version"</link> D-Bus property to @value.
+ * Finds a #GVolume object by its UUID (see g_volume_get_uuid())
  *
- * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ * Returns: (transfer full): a #GVolume or %NULL if no such volume is available.
+ *     Free the returned object with g_object_unref().
  */
 
 
 /**
- * gxdp_documents_skeleton_new:
+ * g_volume_monitor_get_volumes:
+ * @volume_monitor: a #GVolumeMonitor.
+ *
+ * Gets a list of the volumes on the system.
  *
- * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-Documents.top_of_page">org.freedesktop.portal.Documents</link>.
+ * The returned list should be freed with g_list_free(), after
+ * its elements have been unreffed with g_object_unref().
  *
- * Returns: (transfer full) (type GXdpDocumentsSkeleton): The skeleton object.
+ * Returns: (element-type GVolume) (transfer full): a #GList of #GVolume objects.
  */
 
 
 /**
- * gxdp_network_monitor_emit_changed:
- * @object: A #GXdpNetworkMonitor.
- * @arg_available: Argument to pass with the signal.
+ * g_volume_mount: (virtual mount_fn)
+ * @volume: a #GVolume
+ * @flags: flags affecting the operation
+ * @mount_operation: (nullable): a #GMountOperation or %NULL to avoid user interaction
+ * @cancellable: (nullable): optional #GCancellable object, %NULL to ignore
+ * @callback: (nullable): a #GAsyncReadyCallback, or %NULL
+ * @user_data: user data that gets passed to @callback
  *
- * Emits the <link linkend="gdbus-signal-org-freedesktop-portal-NetworkMonitor.changed">"changed"</link> D-Bus signal.
+ * Mounts a volume. This is an asynchronous operation, and is
+ * finished by calling g_volume_mount_finish() with the @volume
+ * and #GAsyncResult returned in the @callback.
  */
 
 
 /**
- * gxdp_network_monitor_get_available: (skip)
- * @object: A #GXdpNetworkMonitor.
+ * g_volume_mount_finish:
+ * @volume: a #GVolume
+ * @result: a #GAsyncResult
+ * @error: a #GError location to store an error, or %NULL to ignore
  *
- * Gets the value of the <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.available">"available"</link> D-Bus property.
+ * Finishes mounting a volume. If any errors occurred during the operation,
+ * @error will be set to contain the errors and %FALSE will be returned.
  *
- * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ * If the mount operation succeeded, g_volume_get_mount() on @volume
+ * is guaranteed to return the mount right after calling this
+ * function; there's no need to listen for the 'mount-added' signal on
+ * #GVolumeMonitor.
  *
- * Returns: The property value.
+ * Returns: %TRUE, %FALSE if operation failed
  */
 
 
 /**
- * gxdp_network_monitor_get_connectivity: (skip)
- * @object: A #GXdpNetworkMonitor.
- *
- * Gets the value of the <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.connectivity">"connectivity"</link> D-Bus property.
+ * g_volume_should_automount:
+ * @volume: a #GVolume
  *
- * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ * Returns whether the volume should be automatically mounted.
  *
- * Returns: The property value.
+ * Returns: %TRUE if the volume should be automatically mounted
  */
 
 
 /**
- * gxdp_network_monitor_get_metered: (skip)
- * @object: A #GXdpNetworkMonitor.
- *
- * Gets the value of the <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.metered">"metered"</link> D-Bus property.
+ * g_win32_input_stream_get_close_handle:
+ * @stream: a #GWin32InputStream
  *
- * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ * Returns whether the handle of @stream will be
+ * closed when the stream is closed.
  *
- * Returns: The property value.
+ * Returns: %TRUE if the handle is closed when done
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_network_monitor_interface_info:
+ * g_win32_input_stream_get_handle:
+ * @stream: a #GWin32InputStream
  *
- * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-portal-NetworkMonitor.top_of_page">org.freedesktop.portal.NetworkMonitor</link> D-Bus interface.
+ * Return the Windows file handle that the stream reads from.
  *
- * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ * Returns: The file handle of @stream
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_network_monitor_override_properties:
- * @klass: The class structure for a #GObject<!-- -->-derived class.
- * @property_id_begin: The property id to assign to the first overridden property.
+ * g_win32_input_stream_new:
+ * @handle: a Win32 file handle
+ * @close_handle: %TRUE to close the handle when done
  *
- * Overrides all #GObject properties in the #GXdpNetworkMonitor interface for a concrete class.
- * The properties are overridden in the order they are defined.
+ * Creates a new #GWin32InputStream for the given @handle.
+ *
+ * If @close_handle is %TRUE, the handle will be closed
+ * when the stream is closed.
  *
- * Returns: The last property id.
+ * Note that "handle" here means a Win32 HANDLE, not a "file descriptor"
+ * as used in the Windows C libraries.
+ *
+ * Returns: a new #GWin32InputStream
  */
 
 
 /**
- * gxdp_network_monitor_proxy_new:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
- *
- * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-NetworkMonitor.top_of_page">org.freedesktop.portal.NetworkMonitor</link>. See g_dbus_proxy_new() for more details.
+ * g_win32_input_stream_set_close_handle:
+ * @stream: a #GWin32InputStream
+ * @close_handle: %TRUE to close the handle when done
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_network_monitor_proxy_new_finish() to get the result of the operation.
+ * Sets whether the handle of @stream shall be closed
+ * when the stream is closed.
  *
- * See gxdp_network_monitor_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_network_monitor_proxy_new_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_network_monitor_proxy_new().
- * @error: Return location for error or %NULL
+ * g_win32_output_stream_get_close_handle:
+ * @stream: a #GWin32OutputStream
  *
- * Finishes an operation started with gxdp_network_monitor_proxy_new().
+ * Returns whether the handle of @stream will be closed when the
+ * stream is closed.
  *
- * Returns: (transfer full) (type GXdpNetworkMonitorProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: %TRUE if the handle is closed when done
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_network_monitor_proxy_new_for_bus:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
- *
- * Like gxdp_network_monitor_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ * g_win32_output_stream_get_handle:
+ * @stream: a #GWin32OutputStream
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_network_monitor_proxy_new_for_bus_finish() to get the result of the operation.
+ * Return the Windows handle that the stream writes to.
  *
- * See gxdp_network_monitor_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ * Returns: The handle descriptor of @stream
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_network_monitor_proxy_new_for_bus_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_network_monitor_proxy_new_for_bus().
- * @error: Return location for error or %NULL
+ * g_win32_output_stream_new:
+ * @handle: a Win32 file handle
+ * @close_handle: %TRUE to close the handle when done
+ *
+ * Creates a new #GWin32OutputStream for the given @handle.
  *
- * Finishes an operation started with gxdp_network_monitor_proxy_new_for_bus().
+ * If @close_handle, is %TRUE, the handle will be closed when the
+ * output stream is destroyed.
  *
- * Returns: (transfer full) (type GXdpNetworkMonitorProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: a new #GOutputStream
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_network_monitor_proxy_new_for_bus_sync:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
- *
- * Like gxdp_network_monitor_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
- *
- * The calling thread is blocked until a reply is received.
+ * g_win32_output_stream_set_close_handle:
+ * @stream: a #GWin32OutputStream
+ * @close_handle: %TRUE to close the handle when done
  *
- * See gxdp_network_monitor_proxy_new_for_bus() for the asynchronous version of this constructor.
+ * Sets whether the handle of @stream shall be closed when the stream
+ * is closed.
  *
- * Returns: (transfer full) (type GXdpNetworkMonitorProxy): The constructed proxy object or %NULL if @error is set.
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_network_monitor_proxy_new_sync:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
- *
- * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-NetworkMonitor.top_of_page">org.freedesktop.portal.NetworkMonitor</link>. See g_dbus_proxy_new_sync() for more details.
+ * g_win32_registry_key_erase_change_indicator:
+ * @key: (in) (transfer none): a #GWin32RegistryKey
  *
- * The calling thread is blocked until a reply is received.
+ * Erases change indicator of the @key.
  *
- * See gxdp_network_monitor_proxy_new() for the asynchronous version of this constructor.
+ * Subsequent calls to g_win32_registry_key_has_changed() will return %FALSE
+ * until the key is put on watch again by calling
+ * g_win32_registry_key_watch() again.
  *
- * Returns: (transfer full) (type GXdpNetworkMonitorProxy): The constructed proxy object or %NULL if @error is set.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_network_monitor_set_available: (skip)
- * @object: A #GXdpNetworkMonitor.
- * @value: The value to set.
+ * g_win32_registry_key_get_child:
+ * @key: (in) (transfer none): a parent #GWin32RegistryKey
+ * @subkey: (in) (transfer none): name of a child key to open (in UTF-8), relative to @key
+ * @error: (inout) (optional) (nullable): a pointer to a %NULL #GError, or %NULL
  *
- * Sets the <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.available">"available"</link> D-Bus property to @value.
+ * Opens a @subkey of the @key.
  *
- * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ * Returns: (nullable): a #GWin32RegistryKey or %NULL if can't be opened. Free
+ *                      with g_object_unref().
  */
 
 
 /**
- * gxdp_network_monitor_set_connectivity: (skip)
- * @object: A #GXdpNetworkMonitor.
- * @value: The value to set.
+ * g_win32_registry_key_get_child_w:
+ * @key: (in) (transfer none): a parent #GWin32RegistryKey
+ * @subkey: (in) (transfer none): name of a child key to open (in UTF-8), relative to @key
+ * @error: (inout) (optional) (nullable): a pointer to a %NULL #GError, or %NULL
  *
- * Sets the <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.connectivity">"connectivity"</link> D-Bus property to @value.
+ * Opens a @subkey of the @key.
  *
- * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ * Returns: (nullable): a #GWin32RegistryKey or %NULL if can't be opened. Free
+ *                      with g_object_unref().
  */
 
 
 /**
- * gxdp_network_monitor_set_metered: (skip)
- * @object: A #GXdpNetworkMonitor.
- * @value: The value to set.
+ * g_win32_registry_key_get_path:
+ * @key: (in) (transfer none): a #GWin32RegistryKey
  *
- * Sets the <link linkend="gdbus-property-org-freedesktop-portal-NetworkMonitor.metered">"metered"</link> D-Bus property to @value.
+ * Get full path to the key
  *
- * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ * Returns: (transfer none): a full path to the key (in UTF-8),
+ *     or %NULL if it can't be converted to UTF-8.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_network_monitor_skeleton_new:
+ * g_win32_registry_key_get_path_w:
+ * @key: (in) (transfer none): a #GWin32RegistryKey
  *
- * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-NetworkMonitor.top_of_page">org.freedesktop.portal.NetworkMonitor</link>.
+ * Get full path to the key
  *
- * Returns: (transfer full) (type GXdpNetworkMonitorSkeleton): The skeleton object.
+ * Returns: (transfer none): a full path to the key (in UTF-16)
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_call_open_file:
- * @proxy: A #GXdpOpenURIProxy.
- * @arg_parent_window: Argument to pass with the method invocation.
- * @arg_fd: Argument to pass with the method invocation.
- * @arg_options: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_win32_registry_key_get_value:
+ * @key: (in) (transfer none): a #GWin32RegistryKey
+ * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR
+ *     to G_WIN32_REGISTRY_VALUE_STR.
+ * @value_name: (in) (transfer none): name of the value to get (in UTF-8).
+ *   Empty string means the '(Default)' value.
+ * @value_type: (out) (optional): type of the value retrieved.
+ * @value_data: (out callee-allocates) (optional): contents of the value.
+ * @value_data_size: (out) (optional): size of the buffer pointed
+ *   by @value_data.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenFile">OpenFile()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_open_uri_call_open_file_finish() to get the result of the operation.
+ * Get data from a value of a key. String data is guaranteed to be
+ * appropriately terminated and will be in UTF-8.
  *
- * See gxdp_open_uri_call_open_file_sync() for the synchronous, blocking version of this method.
+ * Returns: %TRUE on success, %FALSE on failure.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_call_open_file_finish:
- * @proxy: A #GXdpOpenURIProxy.
- * @out_handle: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_open_uri_call_open_file().
- * @error: Return location for error or %NULL.
+ * g_win32_registry_key_get_value_w:
+ * @key: (in) (transfer none): a #GWin32RegistryKey
+ * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR
+ *     to G_WIN32_REGISTRY_VALUE_STR.
+ * @value_name: (in) (transfer none): name of the value to get (in UTF-16).
+ *   Empty string means the '(Default)' value.
+ * @value_type: (out) (optional): type of the value retrieved.
+ * @value_data: (out callee-allocates) (optional): contents of the value.
+ * @value_data_size: (out) (optional): size of the buffer pointed
+ *   by @value_data.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ *
+ * Get data from a value of a key.
  *
- * Finishes an operation started with gxdp_open_uri_call_open_file().
+ * Get data from a value of a key. String data is guaranteed to be
+ * appropriately terminated and will be in UTF-16.
+ *
+ * When calling with value_data == NULL (to get data size without getting
+ * the data itself) remember that returned size corresponds to possibly
+ * unterminated string data (if value is some kind of string), because
+ * termination cannot be checked and fixed unless the data is retreived
+ * too.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE on success, %FALSE on failure.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_call_open_file_sync:
- * @proxy: A #GXdpOpenURIProxy.
- * @arg_parent_window: Argument to pass with the method invocation.
- * @arg_fd: Argument to pass with the method invocation.
- * @arg_options: Argument to pass with the method invocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @out_handle: (out): Return location for return parameter or %NULL to ignore.
- * @out_fd_list: (out): Return location for a #GUnixFDList or %NULL.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenFile">OpenFile()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_win32_registry_key_has_changed:
+ * @key: (in) (transfer none): a #GWin32RegistryKey
  *
- * See gxdp_open_uri_call_open_file() for the asynchronous version of this method.
+ * Check the @key's status indicator.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if the @key was put under watch at some point and has changed
+ * since then, %FALSE if it either wasn't changed or wasn't watched at all.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_call_open_uri:
- * @proxy: A #GXdpOpenURIProxy.
- * @arg_parent_window: Argument to pass with the method invocation.
- * @arg_uri: Argument to pass with the method invocation.
- * @arg_options: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_win32_registry_key_new:
+ * @path: absolute full name of a key to open (in UTF-8)
+ * @error: (nullable): a pointer to a %NULL #GError, or %NULL
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenURI">OpenURI()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_open_uri_call_open_uri_finish() to get the result of the operation.
+ * Creates an object that represents a registry key specified by @path.
+ * @path must start with one of the following pre-defined names:
+ * - HKEY_CLASSES_ROOT
+ * - HKEY_CURRENT_CONFIG
+ * - HKEY_CURRENT_USER
+ * - HKEY_CURRENT_USER_LOCAL_SETTINGS
+ * - HKEY_LOCAL_MACHINE
+ * - HKEY_PERFORMANCE_DATA
+ * - HKEY_PERFORMANCE_NLSTEXT
+ * - HKEY_PERFORMANCE_TEXT
+ * - HKEY_USERS
+ * @path must not end with '\\'.
  *
- * See gxdp_open_uri_call_open_uri_sync() for the synchronous, blocking version of this method.
+ * Returns: (nullable) (transfer full): a #GWin32RegistryKey or %NULL if can't
+ *   be opened. Free with g_object_unref().
  */
 
 
 /**
- * gxdp_open_uri_call_open_uri_finish:
- * @proxy: A #GXdpOpenURIProxy.
- * @out_handle: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_open_uri_call_open_uri().
- * @error: Return location for error or %NULL.
+ * g_win32_registry_key_new_w:
+ * @path: (in) (transfer none): absolute full name of a key to open (in UTF-16)
+ * @error: (inout) (optional) (nullable): a pointer to a %NULL #GError, or %NULL
  *
- * Finishes an operation started with gxdp_open_uri_call_open_uri().
+ * Creates an object that represents a registry key specified by @path.
+ * @path must start with one of the following pre-defined names:
+ * - HKEY_CLASSES_ROOT
+ * - HKEY_CURRENT_CONFIG
+ * - HKEY_CURRENT_USER
+ * - HKEY_CURRENT_USER_LOCAL_SETTINGS
+ * - HKEY_LOCAL_MACHINE
+ * - HKEY_PERFORMANCE_DATA
+ * - HKEY_PERFORMANCE_NLSTEXT
+ * - HKEY_PERFORMANCE_TEXT
+ * - HKEY_USERS
+ * @path must not end with L'\\'.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: (nullable) (transfer full): a #GWin32RegistryKey or %NULL if can't
+ *   be opened. Free with g_object_unref().
  */
 
 
 /**
- * gxdp_open_uri_call_open_uri_sync:
- * @proxy: A #GXdpOpenURIProxy.
- * @arg_parent_window: Argument to pass with the method invocation.
- * @arg_uri: Argument to pass with the method invocation.
- * @arg_options: Argument to pass with the method invocation.
- * @out_handle: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
+ * g_win32_registry_key_watch:
+ * @key: (in) (transfer none): a #GWin32RegistryKey
+ * @watch_children: (in): %TRUE also watch the children of the @key, %FALSE
+ *     to watch the key only.
+ * @watch_flags: (in): specifies the types of changes to watch for.
+ * @callback: (in) (nullable): a function to invoke when a change occurs.
+ * @user_data: (in) (nullable): a pointer to pass to @callback on invocation.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenURI">OpenURI()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * Puts @key under a watch.
  *
- * See gxdp_open_uri_call_open_uri() for the asynchronous version of this method.
+ * When the key changes, an APC will be queued in the current thread. The APC
+ * will run when the current thread enters alertable state (GLib main loop
+ * should do that; if you are not using it, see MSDN documentation for W32API
+ * calls that put thread into alertable state). When it runs, it will
+ * atomically switch an indicator in the @key. If a callback was specified,
+ * it is invoked at that point. Subsequent calls to
+ * g_win32_registry_key_has_changed() will return %TRUE, and the callback (if
+ * it was specified) will not be invoked anymore.
+ * Calling g_win32_registry_key_erase_change_indicator() will reset the indicator,
+ * and g_win32_registry_key_has_changed() will start returning %FALSE.
+ * To resume the watch, call g_win32_registry_key_watch_for_changes() again.
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
- */
-
-
-/**
- * gxdp_open_uri_complete_open_file:
- * @object: A #GXdpOpenURI.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @fd_list: (allow-none): A #GUnixFDList or %NULL.
- * @handle: Parameter to return.
+ * Calling g_win32_registry_key_watch_for_changes() for a key that is already
+ * being watched is allowed and affects nothing.
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenFile">OpenFile()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * The fact that the key is being watched will be used internally to update
+ * key path (if it changes).
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: %TRUE on success, %FALSE on failure.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_complete_open_uri:
- * @object: A #GXdpOpenURI.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @handle: Parameter to return.
+ * g_win32_registry_subkey_iter_assign:
+ * @iter: a #GWin32RegistrySubkeyIter
+ * @other: another #GWin32RegistrySubkeyIter
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-OpenURI.OpenURI">OpenURI()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Assigns the value of @other to @iter.  This function
+ * is not useful in applications, because iterators can be assigned
+ * with `GWin32RegistrySubkeyIter i = j;`. The
+ * function is used by language bindings.
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_get_version: (skip)
- * @object: A #GXdpOpenURI.
- *
- * Gets the value of the <link linkend="gdbus-property-org-freedesktop-portal-OpenURI.version">"version"</link> D-Bus property.
+ * g_win32_registry_subkey_iter_clear:
+ * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
  *
- * Since this D-Bus property is readable, it is meaningful to use this function on both the client- and service-side.
+ * Frees internal buffers of a #GWin32RegistrySubkeyIter.
  *
- * Returns: The property value.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_interface_info:
+ * g_win32_registry_subkey_iter_copy:
+ * @iter: an iterator
  *
- * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-portal-OpenURI.top_of_page">org.freedesktop.portal.OpenURI</link> D-Bus interface.
+ * Creates a dynamically-allocated copy of an iterator. Dynamically-allocated
+ * state of the iterator is duplicated too.
  *
- * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ * Returns: (transfer full): a copy of the @iter,
+ * free with g_win32_registry_subkey_iter_free ()
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_override_properties:
- * @klass: The class structure for a #GObject<!-- -->-derived class.
- * @property_id_begin: The property id to assign to the first overridden property.
+ * g_win32_registry_subkey_iter_free:
+ * @iter: a dynamically-allocated iterator
  *
- * Overrides all #GObject properties in the #GXdpOpenURI interface for a concrete class.
- * The properties are overridden in the order they are defined.
+ * Free an iterator allocated on the heap. For iterators that are allocated
+ * on the stack use g_win32_registry_subkey_iter_clear () instead.
  *
- * Returns: The last property id.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_proxy_new:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
- *
- * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-OpenURI.top_of_page">org.freedesktop.portal.OpenURI</link>. See g_dbus_proxy_new() for more details.
+ * g_win32_registry_subkey_iter_get_name:
+ * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
+ * @subkey_name: (out callee-allocates) (transfer none): Pointer to a location
+ *     to store the name of a subkey (in UTF-8). Free with g_free().
+ * @subkey_name_len: (out) (optional): Pointer to a location to store the
+ *     length of @subkey_name, in gchars, excluding NUL-terminator.
+ *     %NULL if length is not needed.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_open_uri_proxy_new_finish() to get the result of the operation.
+ * Gets the name of the subkey at the @iter potision.
  *
- * See gxdp_open_uri_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ * Returns: %TRUE if the name was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_proxy_new_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_open_uri_proxy_new().
- * @error: Return location for error or %NULL
+ * g_win32_registry_subkey_iter_get_name_w:
+ * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
+ * @subkey_name: (out callee-allocates) (transfer none): Pointer to a location
+ *     to store the name of a subkey (in UTF-16).
+ * @subkey_name_len: (out) (optional) (transfer none): Pointer to a location
+ *     to store the length of @subkey_name, in gunichar2s, excluding
+ *     NUL-terminator.
+ *     %NULL if length is not needed.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Finishes an operation started with gxdp_open_uri_proxy_new().
+ * Same as g_win32_registry_subkey_iter_get_next(), but outputs UTF-16-encoded
+ * data, without converting it to UTF-8 first.
  *
- * Returns: (transfer full) (type GXdpOpenURIProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: %TRUE if the name was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_proxy_new_for_bus:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
+ * g_win32_registry_subkey_iter_init:
+ * @iter: (in) (transfer none): a pointer to a #GWin32RegistrySubkeyIter
+ * @key: (in) (transfer none): a #GWin32RegistryKey to iterate over
+ * @error: (inout) (optional) (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Like gxdp_open_uri_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ * Initialises (without allocating) a #GWin32RegistrySubkeyIter.  @iter may be
+ * completely uninitialised prior to this call; its old value is
+ * ignored.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_open_uri_proxy_new_for_bus_finish() to get the result of the operation.
+ * The iterator remains valid for as long as @key exists.
+ * Clean up its internal buffers with a call to
+ * g_win32_registry_subkey_iter_clear() when done.
  *
- * See gxdp_open_uri_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ * Returns: %TRUE if iterator was initialized successfully, %FALSE on error.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_proxy_new_for_bus_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_open_uri_proxy_new_for_bus().
- * @error: Return location for error or %NULL
+ * g_win32_registry_subkey_iter_n_subkeys:
+ * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
+ *
+ * Queries the number of subkeys items in the key that we are
+ * iterating over.  This is the total number of subkeys -- not the number
+ * of items remaining.
  *
- * Finishes an operation started with gxdp_open_uri_proxy_new_for_bus().
+ * This information is accurate at the point of iterator initialization,
+ * and may go out of sync with reality even while subkeys are enumerated.
  *
- * Returns: (transfer full) (type GXdpOpenURIProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: the number of subkeys in the key
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_proxy_new_for_bus_sync:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
+ * g_win32_registry_subkey_iter_next:
+ * @iter: (in) (transfer none): a #GWin32RegistrySubkeyIter
+ * @skip_errors: (in): %TRUE if iterator should silently ignore errors (such as
+ *     the actual number of subkeys being less than expected) and
+ *     proceed forward
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ *
+ * Moves iterator to the next subkey.
+ * Enumeration errors can be ignored if @skip_errors is %TRUE
  *
- * Like gxdp_open_uri_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ * Here is an example for iterating with g_win32_registry_subkey_iter_next():
+ * |[<!-- language="C" -->
+ *   // recursively iterate a key
+ *   void
+ *   iterate_key_recursive (GWin32RegistryKey *key)
+ *   {
+ *     GWin32RegistrySubkeyIter iter;
+ *     gchar *name;
+ *     GWin32RegistryKey *child;
+ *
+ *     if (!g_win32_registry_subkey_iter_init (&iter, key, NULL))
+ *       return;
+ *
+ *     while (g_win32_registry_subkey_iter_next (&iter, TRUE, NULL))
+ *       {
+ *         if (!g_win32_registry_subkey_iter_get_name (&iter, &name, NULL, NULL))
+ *           continue;
+ *
+ *         g_print ("subkey '%s'\n", name);
+ *         child = g_win32_registry_key_get_child (key, name, NULL);
  *
- * The calling thread is blocked until a reply is received.
+ *         if (child)
+ *           iterate_key_recursive (child);
+ *       }
  *
- * See gxdp_open_uri_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *     g_win32_registry_subkey_iter_clear (&iter);
+ *   }
+ * ]|
  *
- * Returns: (transfer full) (type GXdpOpenURIProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: %TRUE if next subkey info was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_proxy_new_sync:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
- *
- * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-OpenURI.top_of_page">org.freedesktop.portal.OpenURI</link>. See g_dbus_proxy_new_sync() for more details.
- *
- * The calling thread is blocked until a reply is received.
+ * g_win32_registry_value_iter_assign:
+ * @iter: a #GWin32RegistryValueIter
+ * @other: another #GWin32RegistryValueIter
  *
- * See gxdp_open_uri_proxy_new() for the asynchronous version of this constructor.
+ * Assigns the value of @other to @iter.  This function
+ * is not useful in applications, because iterators can be assigned
+ * with `GWin32RegistryValueIter i = j;`. The
+ * function is used by language bindings.
  *
- * Returns: (transfer full) (type GXdpOpenURIProxy): The constructed proxy object or %NULL if @error is set.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_set_version: (skip)
- * @object: A #GXdpOpenURI.
- * @value: The value to set.
+ * g_win32_registry_value_iter_clear:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
  *
- * Sets the <link linkend="gdbus-property-org-freedesktop-portal-OpenURI.version">"version"</link> D-Bus property to @value.
+ * Frees internal buffers of a #GWin32RegistryValueIter.
  *
- * Since this D-Bus property is not writable, it is only meaningful to use this function on the service-side.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_open_uri_skeleton_new:
+ * g_win32_registry_value_iter_copy:
+ * @iter: an iterator
  *
- * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-OpenURI.top_of_page">org.freedesktop.portal.OpenURI</link>.
+ * Creates a dynamically-allocated copy of an iterator. Dynamically-allocated
+ * state of the iterator is duplicated too.
  *
- * Returns: (transfer full) (type GXdpOpenURISkeleton): The skeleton object.
+ * Returns: (transfer full): a copy of the @iter,
+ * free with g_win32_registry_value_iter_free ().
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_call_lookup:
- * @proxy: A #GXdpProxyResolverProxy.
- * @arg_uri: Argument to pass with the method invocation.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
- * @user_data: User data to pass to @callback.
+ * g_win32_registry_value_iter_free:
+ * @iter: a dynamically-allocated iterator
  *
- * Asynchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-ProxyResolver.Lookup">Lookup()</link> D-Bus method on @proxy.
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_proxy_resolver_call_lookup_finish() to get the result of the operation.
+ * Free an iterator allocated on the heap. For iterators that are allocated
+ * on the stack use g_win32_registry_value_iter_clear () instead.
  *
- * See gxdp_proxy_resolver_call_lookup_sync() for the synchronous, blocking version of this method.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_call_lookup_finish:
- * @proxy: A #GXdpProxyResolverProxy.
- * @out_proxies: (out): Return location for return parameter or %NULL to ignore.
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_proxy_resolver_call_lookup().
- * @error: Return location for error or %NULL.
+ * g_win32_registry_value_iter_get_data:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to
+ *     G_WIN32_REGISTRY_VALUE_STR
+ * @value_data: (out callee-allocates) (optional) (transfer none): Pointer to a
+ *     location to store the data of the value (in UTF-8, if it's a string)
+ * @value_data_size: (out) (optional): Pointer to a location to store the length
+ *     of @value_data, in bytes (including any NUL-terminators, if it's a string).
+ *     %NULL if length is not needed
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Finishes an operation started with gxdp_proxy_resolver_call_lookup().
+ * Stores the data of the value currently being iterated over in @value_data,
+ * and its length - in @value_data_len (if not %NULL).
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if value data was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_call_lookup_sync:
- * @proxy: A #GXdpProxyResolverProxy.
- * @arg_uri: Argument to pass with the method invocation.
- * @out_proxies: (out): Return location for return parameter or %NULL to ignore.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL.
- *
- * Synchronously invokes the <link linkend="gdbus-method-org-freedesktop-portal-ProxyResolver.Lookup">Lookup()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ * g_win32_registry_value_iter_get_data_w:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ * @auto_expand: (in): %TRUE to automatically expand G_WIN32_REGISTRY_VALUE_EXPAND_STR to
+ *     G_WIN32_REGISTRY_VALUE_STR
+ * @value_data: (out callee-allocates) (optional) (transfer none): Pointer to a
+ *     location to store the data of the value (in UTF-16, if it's a string)
+ * @value_data_size: (out) (optional): Pointer to a location to store the size
+ *     of @value_data, in bytes (including any NUL-terminators, if it's a string).
+ *     %NULL if length is not needed.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * See gxdp_proxy_resolver_call_lookup() for the asynchronous version of this method.
+ * Stores the data of the value currently being iterated over in @value_data,
+ * and its length - in @value_data_len (if not %NULL).
  *
- * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ * Returns: %TRUE if value data was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_complete_lookup:
- * @object: A #GXdpProxyResolver.
- * @invocation: (transfer full): A #GDBusMethodInvocation.
- * @proxies: Parameter to return.
+ * g_win32_registry_value_iter_get_name:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ * @value_name: (out callee-allocates) (transfer none): Pointer to a location
+ *     to store the name of a value (in UTF-8).
+ * @value_name_len: (out) (optional): Pointer to a location to store the length
+ *     of @value_name, in gchars, excluding NUL-terminator.
+ *     %NULL if length is not needed.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-org-freedesktop-portal-ProxyResolver.Lookup">Lookup()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ * Stores the name of the value currently being iterated over in @value_name,
+ * and its length - in @value_name_len (if not %NULL).
  *
- * This method will free @invocation, you cannot use it afterwards.
+ * Returns: %TRUE if value name was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_interface_info:
+ * g_win32_registry_value_iter_get_name_w:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ * @value_name: (out callee-allocates) (transfer none): Pointer to a location
+ *     to store the name of a value (in UTF-16).
+ * @value_name_len: (out) (optional): Pointer to a location to store the length
+ *     of @value_name, in gunichar2s, excluding NUL-terminator.
+ *     %NULL if length is not needed.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Gets a machine-readable description of the <link linkend="gdbus-interface-org-freedesktop-portal-ProxyResolver.top_of_page">org.freedesktop.portal.ProxyResolver</link> D-Bus interface.
+ * Stores the name of the value currently being iterated over in @value_name,
+ * and its length - in @value_name (if not %NULL).
  *
- * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ * Returns: %TRUE if value name was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_override_properties:
- * @klass: The class structure for a #GObject<!-- -->-derived class.
- * @property_id_begin: The property id to assign to the first overridden property.
+ * g_win32_registry_value_iter_get_value_type:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ * @value_type: (out): Pointer to a location to store the type of
+ *     the value.
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Overrides all #GObject properties in the #GXdpProxyResolver interface for a concrete class.
- * The properties are overridden in the order they are defined.
+ * Stores the type of the value currently being iterated over in @value_type.
  *
- * Returns: The last property id.
+ * Returns: %TRUE if value type was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_proxy_new:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
+ * g_win32_registry_value_iter_init:
+ * @iter: (in) (transfer none): a pointer to a #GWin32RegistryValueIter
+ * @key: (in) (transfer none): a #GWin32RegistryKey to iterate over
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
  *
- * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-ProxyResolver.top_of_page">org.freedesktop.portal.ProxyResolver</link>. See g_dbus_proxy_new() for more details.
+ * Initialises (without allocating) a #GWin32RegistryValueIter.  @iter may be
+ * completely uninitialised prior to this call; its old value is
+ * ignored.
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_proxy_resolver_proxy_new_finish() to get the result of the operation.
+ * The iterator remains valid for as long as @key exists.
+ * Clean up its internal buffers with a call to
+ * g_win32_registry_value_iter_clear() when done.
  *
- * See gxdp_proxy_resolver_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ * Returns: %TRUE if iterator was initialized successfully, %FALSE on error.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_proxy_new_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_proxy_resolver_proxy_new().
- * @error: Return location for error or %NULL
+ * g_win32_registry_value_iter_n_values:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ *
+ * Queries the number of values items in the key that we are
+ * iterating over.  This is the total number of values -- not the number
+ * of items remaining.
  *
- * Finishes an operation started with gxdp_proxy_resolver_proxy_new().
+ * This information is accurate at the point of iterator initialization,
+ * and may go out of sync with reality even while values are enumerated.
  *
- * Returns: (transfer full) (type GXdpProxyResolverProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: the number of values in the key
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_proxy_new_for_bus:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
- * @user_data: User data to pass to @callback.
+ * g_win32_registry_value_iter_next:
+ * @iter: (in) (transfer none): a #GWin32RegistryValueIter
+ * @skip_errors: (in): %TRUE if iterator should silently ignore errors (such as
+ *     the actual number of values being less than expected) and
+ *     proceed forward
+ * @error: (nullable): a pointer to %NULL #GError, or %NULL
+ *
+ * Advances iterator to the next value in the key. If no more values remain then
+ * FALSE is returned.
+ * Enumeration errors can be ignored if @skip_errors is %TRUE
+ *
+ * Here is an example for iterating with g_win32_registry_value_iter_next():
+ * |[<!-- language="C" -->
+ *   // iterate values of a key
+ *   void
+ *   iterate_values_recursive (GWin32RegistryKey *key)
+ *   {
+ *     GWin32RegistryValueIter iter;
+ *     gchar *name;
+ *     GWin32RegistryValueType val_type;
+ *     gchar *val_data;
+ *
+ *     if (!g_win32_registry_value_iter_init (&iter, key, NULL))
+ *       return;
+ *
+ *     while (g_win32_registry_value_iter_next (&iter, TRUE, NULL))
+ *       {
+ *         if ((!g_win32_registry_value_iter_get_value_type (&iter, &value)) ||
+ *             ((val_type != G_WIN32_REGISTRY_VALUE_STR) &&
+ *              (val_type != G_WIN32_REGISTRY_VALUE_EXPAND_STR)))
+ *           continue;
  *
- * Like gxdp_proxy_resolver_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *         if (g_win32_registry_value_iter_get_value (&iter, TRUE, &name, NULL,
+ *                                                    &val_data, NULL, NULL))
+ *           g_print ("value '%s' = '%s'\n", name, val_data);
+ *       }
  *
- * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
- * You can then call gxdp_proxy_resolver_proxy_new_for_bus_finish() to get the result of the operation.
+ *     g_win32_registry_value_iter_clear (&iter);
+ *   }
+ * ]|
  *
- * See gxdp_proxy_resolver_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ * Returns: %TRUE if next value info was retrieved, %FALSE otherwise.
+ * Since: 2.46
  */
 
 
 /**
- * gxdp_proxy_resolver_proxy_new_for_bus_finish:
- * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to gxdp_proxy_resolver_proxy_new_for_bus().
- * @error: Return location for error or %NULL
+ * g_zlib_compressor_get_file_info:
+ * @compressor: a #GZlibCompressor
  *
- * Finishes an operation started with gxdp_proxy_resolver_proxy_new_for_bus().
+ * Returns the #GZlibCompressor:file-info property.
  *
- * Returns: (transfer full) (type GXdpProxyResolverProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: (transfer none): a #GFileInfo, or %NULL
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_proxy_resolver_proxy_new_for_bus_sync:
- * @bus_type: A #GBusType.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: A bus name (well-known or unique).
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
+ * g_zlib_compressor_new:
+ * @format: The format to use for the compressed data
+ * @level: compression level (0-9), -1 for default
+ *
+ * Creates a new #GZlibCompressor.
  *
- * Like gxdp_proxy_resolver_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ * Returns: a new #GZlibCompressor
+ * Since: 2.24
+ */
+
+
+/**
+ * g_zlib_compressor_set_file_info:
+ * @compressor: a #GZlibCompressor
+ * @file_info: (nullable): a #GFileInfo
  *
- * The calling thread is blocked until a reply is received.
+ * Sets @file_info in @compressor. If non-%NULL, and @compressor's
+ * #GZlibCompressor:format property is %G_ZLIB_COMPRESSOR_FORMAT_GZIP,
+ * it will be used to set the file name and modification time in
+ * the GZIP header of the compressed data.
  *
- * See gxdp_proxy_resolver_proxy_new_for_bus() for the asynchronous version of this constructor.
+ * Note: it is an error to call this function while a compression is in
+ * progress; it may only be called immediately after creation of @compressor,
+ * or after resetting it with g_converter_reset().
  *
- * Returns: (transfer full) (type GXdpProxyResolverProxy): The constructed proxy object or %NULL if @error is set.
+ * Since: 2.26
  */
 
 
 /**
- * gxdp_proxy_resolver_proxy_new_sync:
- * @connection: A #GDBusConnection.
- * @flags: Flags from the #GDBusProxyFlags enumeration.
- * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
- * @object_path: An object path.
- * @cancellable: (allow-none): A #GCancellable or %NULL.
- * @error: Return location for error or %NULL
+ * g_zlib_decompressor_get_file_info:
+ * @decompressor: a #GZlibDecompressor
  *
- * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-ProxyResolver.top_of_page">org.freedesktop.portal.ProxyResolver</link>. See g_dbus_proxy_new_sync() for more details.
+ * Retrieves the #GFileInfo constructed from the GZIP header data
+ * of compressed data processed by @compressor, or %NULL if @decompressor's
+ * #GZlibDecompressor:format property is not %G_ZLIB_COMPRESSOR_FORMAT_GZIP,
+ * or the header data was not fully processed yet, or it not present in the
+ * data stream at all.
  *
- * The calling thread is blocked until a reply is received.
+ * Returns: (transfer none): a #GFileInfo, or %NULL
+ * Since: 2.26
+ */
+
+
+/**
+ * g_zlib_decompressor_new:
+ * @format: The format to use for the compressed data
  *
- * See gxdp_proxy_resolver_proxy_new() for the asynchronous version of this constructor.
+ * Creates a new #GZlibDecompressor.
  *
- * Returns: (transfer full) (type GXdpProxyResolverProxy): The constructed proxy object or %NULL if @error is set.
+ * Returns: a new #GZlibDecompressor
+ * Since: 2.24
  */
 
 
 /**
- * gxdp_proxy_resolver_skeleton_new:
+ * get_viewable_logical_drives:
  *
- * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-portal-ProxyResolver.top_of_page">org.freedesktop.portal.ProxyResolver</link>.
+ * Returns the list of logical and viewable drives as defined by
+ * GetLogicalDrives() and the registry keys
+ * Software\Microsoft\Windows\CurrentVersion\Policies\Explorer under
+ * HKLM or HKCU. If neither key exists the result of
+ * GetLogicalDrives() is returned.
  *
- * Returns: (transfer full) (type GXdpProxyResolverSkeleton): The skeleton object.
+ * Returns: bitmask with same meaning as returned by GetLogicalDrives()
  */
 
 
index d12726a..66ab9a0 100644 (file)
 /**
  * G_GNUC_MALLOC:
  *
- * Expands to the GNU C malloc function attribute if the compiler is gcc.
- * Declaring a function as malloc enables better optimization of the function.
- * A function can have the malloc attribute if it returns a pointer which is
- * guaranteed to not alias with any other pointer when the function returns
- * (in practice, this means newly allocated memory).
+ * Expands to the
+ * [GNU C `malloc` function attribute](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-functions-that-behave-like-malloc)
+ * if the compiler is gcc.
+ * Declaring a function as `malloc` enables better optimization of the function,
+ * but must only be done if the allocation behaviour of the function is fully
+ * understood, otherwise miscompilation can result.
+ *
+ * A function can have the `malloc` attribute if it returns a pointer which is
+ * guaranteed to not alias with any other pointer valid when the function
+ * returns, and moreover no pointers to valid objects occur in any storage
+ * addressed by the returned pointer.
+ *
+ * In practice, this means that `G_GNUC_MALLOC` can be used with any function
+ * which returns unallocated or zeroed-out memory, but not with functions which
+ * return initialised structures containing other pointers, or with functions
+ * that reallocate memory. This definition changed in GLib 2.58 to match the
+ * stricter definition introduced around GCC 5.
  *
  * Place the attribute after the declaration, just before the semicolon.
  *
- * See the GNU C documentation for more details.
+ * See the
+ * [GNU C documentation](https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-functions-that-behave-like-malloc)
+ * for more details.
  *
  * Since: 2.6
  */
  *
  * Compares the two #GBytes values.
  *
- * This function can be used to sort GBytes instances in lexographical order.
+ * This function can be used to sort GBytes instances in lexicographical order.
+ *
+ * If @bytes1 and @bytes2 have different length but the shorter one is a
+ * prefix of the longer one then the shorter one is considered to be less than
+ * the longer one. Otherwise the first byte where both differ is used for
+ * comparison. If @bytes1 has a smaller value at that position it is
+ * considered less, otherwise greater than @bytes2.
  *
- * Returns: a negative value if bytes2 is lesser, a positive value if bytes2 is
- *          greater, and zero if bytes2 is equal to bytes1
+ * Returns: a negative value if @bytes1 is less than @bytes2, a positive value
+ *          if @bytes1 is greater than @bytes2, and zero if @bytes1 is equal to
+ *          @bytes2
  * Since: 2.32
  */
 
  * pointer is set to %NULL.
  *
  * A macro is also included that allows this function to be used without
- * pointer casts.
+ * pointer casts. This will mask any warnings about incompatible function types
+ * or calling conventions, so you must ensure that your @destroy function is
+ * compatible with being called as `GDestroyNotify` using the standard calling
+ * convention for the platform that GLib was compiled for; otherwise the program
+ * will experience undefined behaviour.
  *
  * Since: 2.34
  */
  * preferred for that instead, as it allows calling functions to perform actions
  * conditional on the type of error.
  *
- * Error messages are always fatal, resulting in a call to
- * abort() to terminate the application. This function will
+ * Error messages are always fatal, resulting in a call to G_BREAKPOINT()
+ * to terminate the application. This function will
  * result in a core dump; don't use it for errors you expect.
  * Using this function indicates a bug in your program, i.e.
  * an assertion failure.
  * container itself.
  *
  * @func, as a #GCopyFunc, takes two arguments, the data to be copied
- * and a @user_data pointer. It's safe to pass %NULL as user_data,
- * if the copy function takes only one argument.
+ * and a @user_data pointer. On common processor architectures, it's safe to
+ * pass %NULL as @user_data if the copy function takes only one argument. You
+ * may get compiler warnings from this though if compiling with GCC’s
+ * `-Wcast-function-type` warning.
  *
  * For instance, if @list holds a list of GObjects, you can do:
  * |[<!-- language="C" -->
  *
  * Logs an error or debugging message.
  *
- * If the log level has been set as fatal, the abort()
- * function is called to terminate the program.
+ * If the log level has been set as fatal, G_BREAKPOINT() is called
+ * to terminate the program. See the documentation for G_BREAKPOINT() for
+ * details of the debugging options this provides.
  *
  * If g_log_default_handler() is used as the log handler function, a new-line
  * character will automatically be appended to @..., and need not be entered
  * allows to install an alternate default log handler.
  * This is used if no log handler has been set for the particular log
  * domain and log level combination. It outputs the message to stderr
- * or stdout and if the log level is fatal it calls abort(). It automatically
+ * or stdout and if the log level is fatal it calls G_BREAKPOINT(). It automatically
  * prints a new-line character after the message, so one does not need to be
  * manually included in @message.
  *
  * Log a message with structured data. The message will be passed through to
  * the log writer set by the application using g_log_set_writer_func(). If the
  * message is fatal (i.e. its log level is %G_LOG_LEVEL_ERROR), the program will
- * be aborted at the end of this function. If the log writer returns
+ * be aborted by calling G_BREAKPOINT() at the end of this function. If the log writer returns
  * %G_LOG_WRITER_UNHANDLED (failure), no other fallback writers will be tried.
  * See the documentation for #GLogWriterFunc for information on chaining
  * writers.
  *
  * Logs an error or debugging message.
  *
- * If the log level has been set as fatal, the abort()
- * function is called to terminate the program.
+ * If the log level has been set as fatal, G_BREAKPOINT() is called
+ * to terminate the program. See the documentation for G_BREAKPOINT() for
+ * details of the debugging options this provides.
  *
  * If g_log_default_handler() is used as the log handler function, a new-line
  * character will automatically be appended to @..., and need not be entered
  * In contrast with g_slist_copy(), this function uses @func to make a copy of
  * each list element, in addition to copying the list container itself.
  *
- * @func, as a #GCopyFunc, takes two arguments, the data to be copied and a user
- * pointer. It's safe to pass #NULL as user_data, if the copy function takes only
- * one argument.
+ * @func, as a #GCopyFunc, takes two arguments, the data to be copied
+ * and a @user_data pointer. On common processor architectures, it's safe to
+ * pass %NULL as @user_data if the copy function takes only one argument. You
+ * may get compiler warnings from this though if compiling with GCC’s
+ * `-Wcast-function-type` warning.
  *
  * For instance, if @list holds a list of GObjects, you can do:
  * |[<!-- language="C" -->
  * g_slist_free_full (another_list, g_object_unref);
  * ]|
  *
- * Returns: a full copy of @list, use #g_slist_free_full to free it
+ * Returns: a full copy of @list, use g_slist_free_full() to free it
  * Since: 2.34
  */
 
  *
  * - `--debug-log`: Debug test logging output.
  *
+ * Since 2.58, if tests are compiled with `G_DISABLE_ASSERT` defined,
+ * g_test_init() will print an error and exit. This is to prevent no-op tests
+ * from being executed, as g_assert() is commonly (erroneously) used in unit
+ * tests, and is a no-op when compiled with `G_DISABLE_ASSERT`. Ensure your
+ * tests are compiled without `G_DISABLE_ASSERT` defined.
+ *
  * Since: 2.16
  */
 
  * particular code runs before or after a given test case, use
  * g_test_add(), which lets you specify setup and teardown functions.
  *
- * If all tests are skipped, this function will return 0 if
- * producing TAP output, or 77 (treated as "skip test" by Automake) otherwise.
+ * If all tests are skipped or marked as incomplete (expected failures),
+ * this function will return 0 if producing TAP output, or 77 (treated
+ * as "skip test" by Automake) otherwise.
  *
  * Returns: 0 on success, 1 on failure (assuming it returns at all),
- *   0 or 77 if all tests were skipped with g_test_skip()
+ *   0 or 77 if all tests were skipped with g_test_skip() and/or
+ *   g_test_incomplete()
  * Since: 2.16
  */
 
  * zone indicator. (In the absence of any time zone indication, the
  * timestamp is assumed to be in local time.)
  *
+ * Any leading or trailing space in @iso_date is ignored.
+ *
  * Returns: %TRUE if the conversion was successful.
  * Since: 2.12
  */
index 87f646a..1a4f3bc 100644 (file)
 
 /**
  * g_binding_unbind:
- * @binding: (transfer full): a #GBinding
+ * @binding: a #GBinding
  *
  * Explicitly releases the binding between the source and the target
  * property expressed by @binding.
index 11691f1..c9efc5d 100644 (file)
@@ -1 +1 @@
-__version__ = '1.57.2'
+__version__ = '1.58.0'
index c7be4f7..eef0f03 100644 (file)
@@ -29,7 +29,6 @@ import codecs
 from contextlib import contextmanager
 
 import giscanner
-from giscanner import message
 from giscanner.annotationparser import GtkDocCommentBlockParser, GtkDocCommentBlockWriter
 from giscanner.scannermain import (get_preprocessor_option_group,
                                    create_source_scanner,
@@ -81,8 +80,6 @@ def annotation_main(args):
     if options.packages:
         process_packages(options, options.packages)
 
-    logger = message.MessageLogger.get(namespace=None)
-
     ss = create_source_scanner(options, args)
 
     if options.extract:
index a1a57cc..a9a6e13 100644 (file)
@@ -202,6 +202,7 @@ class TypeUnknown(Type):
     def __init__(self):
         Type.__init__(self, _target_unknown=True)
 
+
 # Fundamental types, two special ones
 TYPE_NONE = Type(target_fundamental='none', ctype='void')
 TYPE_ANY = Type(target_fundamental='gpointer', ctype='gpointer')
index b6b45e6..c003828 100644 (file)
@@ -212,8 +212,6 @@ class CCompiler(object):
     def compile(self, pkg_config_cflags, cpp_includes, source, init_sections):
         extra_postargs = []
         includes = []
-        source_str = ''.join(source)
-        tmpdir_idx = source_str.rfind(os.sep, 0, source_str.rfind(os.sep))
         (include_paths, macros, extra_args) = \
             self._set_cpp_options(pkg_config_cflags)
 
index 966b33c..5efcf1f 100644 (file)
@@ -24,7 +24,6 @@ from __future__ import print_function
 from __future__ import unicode_literals
 
 import os
-import sys
 import argparse
 
 import giscanner
@@ -32,7 +31,7 @@ from .docwriter import DocWriter
 from .sectionparser import generate_sections_file, write_sections_file
 from .transformer import Transformer
 
-FORMATS = ('mallard', 'sections')
+FORMATS = ('devdocs', 'mallard', 'sections')
 
 
 def doc_main(args):
@@ -49,7 +48,7 @@ def doc_main(args):
                       help="Output language")
     parser.add_argument("-f", "--format",
                         action="store", dest="format",
-                        choices=FORMATS, default=FORMATS[0],
+                        choices=FORMATS, default=FORMATS[1],
                         help="Output format")
     parser.add_argument("-I", "--add-include-path",
                       action="append", dest="include_paths", default=[],
@@ -61,6 +60,9 @@ def doc_main(args):
     args = parser.parse_args(args[1:])
     if not args.output:
         raise SystemExit("missing output parameter")
+    if args.format not in FORMATS:
+        raise SystemExit("Unknown output format %s (supported: %s)" %
+            (args.format, ", ".join(FORMATS)))
 
     if 'UNINSTALLED_INTROSPECTION_SRCDIR' in os.environ:
         top_srcdir = os.environ['UNINSTALLED_INTROSPECTION_SRCDIR']
diff --git a/giscanner/doctemplates/devdocs/Gjs/_doc.tmpl b/giscanner/doctemplates/devdocs/Gjs/_doc.tmpl
new file mode 100644 (file)
index 0000000..dbdb825
--- /dev/null
@@ -0,0 +1,37 @@
+<%def name="format_documentation(node)">
+  % if node.version:
+    <p class="since-note">
+      New in version ${node.version}.
+      ${formatter.format_inline(node, node.version_doc)}
+    </p>
+  % endif
+  % if node.deprecated:
+    <p class="deprecated-note">
+      Deprecated since ${node.deprecated}.
+      ${formatter.format_inline(node, node.deprecated_doc)}
+    </p>
+  % endif
+  % if node.stability:
+    ## Not sure what this looks like in the wild
+    <p class="stability-note">
+      Stability: ${node.stability}.
+      ${formatter.format_inline(node, node.stability_doc)}
+    </p>
+  % endif
+
+  % if node.doc:
+    ${formatter.format(node, node.doc)}
+  % endif
+</%def>
+
+<%def name="deprecated_class(node)">
+  % if node.deprecated:
+    deprecated
+  % endif
+</%def>
+
+<%def name="introspectable(node)">
+  % if getattr(node, "introspectable", True):
+    ${caller.body()}
+  % endif
+</%def>
diff --git a/giscanner/doctemplates/devdocs/Gjs/_index.tmpl b/giscanner/doctemplates/devdocs/Gjs/_index.tmpl
new file mode 100644 (file)
index 0000000..f3d588a
--- /dev/null
@@ -0,0 +1,191 @@
+<%namespace name="doc" file="_doc.tmpl"/>
+
+<%
+  ancestors = []
+  if isinstance(node, ast.Class):
+    ancestors = formatter.get_inheritable_types(node)
+
+  fields = getattr(node, 'fields', [])
+  extra_fields = [getattr(f.anonymous_node, 'fields', []) for f in fields
+    if f.anonymous_node is not None]
+  extra_fields = [field for sublist in extra_fields for field in sublist]
+  non_private_fields = [f for f in fields + extra_fields
+      if not formatter.is_private_field(node, f)]
+
+  def get_ancestor_counts(*kinds):
+    counts = {}
+    for a in ancestors:
+      count = 0
+      for kind in kinds:
+        if kind == 'fields':
+          count += len(non_private_fields)
+        else:
+          count += len(getattr(a, kind, []))
+      if count:
+        counts[a] = count
+    return counts
+
+  def should_render(*kinds):
+    has_nonempty = False
+    for kind in kinds:
+      if kind == 'fields':
+        if non_private_fields:
+          has_nonempty = True
+      elif getattr(node, kind, []):
+        has_nonempty = True
+    return has_nonempty or get_ancestor_counts(*kinds)
+%>
+
+<%def name="inherited(*kinds)">
+  <% counts = get_ancestor_counts(*kinds) %>
+  % if counts:
+    <%
+      links = ', '.join(['{} ({})'.format(formatter.format_xref(a), count)
+        for a, count in counts.items()])
+    %>
+    ${formatter.format(node, '**Inherited:** ' + links)}
+  % endif
+</%def>
+
+<%def name="format_function_cell(m)">
+  <td class="${doc.deprecated_class(m)}">
+    <a href="#${formatter.make_anchor(m)}">
+      ${formatter.format_function_name(m)}<!-- no space
+    --></a><!-- no space
+    -->(${formatter.format_in_parameters(m)})
+  </td>
+</%def>
+
+% if should_render('static_methods', 'constructors', 'methods'):
+  <h2 id="index-methods">Methods</h2>
+  ${inherited('static_methods', 'constructors', 'methods')}
+  <%
+    static_methods = getattr(node, 'static_methods', []) + getattr(node, 'constructors', [])
+    methods = static_methods + getattr(node, 'methods', [])
+  %>
+  % if methods:
+    <table class="index">
+      <tbody>
+      % for m in methods:
+        <%doc:introspectable node="${m}">
+        <tr>
+          % if m in static_methods:
+            <td class="static-method-indicator">static</td>
+          % else:
+            <td></td>
+          % endif
+          ${format_function_cell(m)}
+        </tr>
+        </%doc:introspectable>
+      % endfor
+      </tbody>
+    </table>
+  % endif
+% endif
+
+% if should_render('virtual_methods'):
+  <h2 id="index-vfuncs">Virtual methods</h2>
+  ${inherited('virtual_methods')}
+  % if getattr(node, 'virtual_methods', []):
+    <table>
+      <tbody>
+      % for m in node.virtual_methods:
+        <%doc:introspectable node="${m}">
+        <tr>
+          ${format_function_cell(m)}
+        </tr>
+        </%doc:introspectable>
+      % endfor
+      </tbody>
+    </table>
+  % endif
+% endif
+
+% if should_render('properties'):
+  <h2 id="index-properties">Properties</h2>
+  ${inherited('properties')}
+  % if getattr(node, 'properties', []):
+    <table>
+      <thead>
+        <tr>
+          <th>Name</th>
+          <th>Type</th>
+          <th>Flags</th>
+        </tr>
+      </thead>
+      <tbody>
+      % for p in node.properties:
+        <%doc:introspectable node="${p}">
+        <tr>
+          <td class="${doc.deprecated_class(p)}">
+            <a href="#${formatter.make_anchor(p)}">${p.name}</a>
+          </td>
+          <td>${formatter.format_type(p.type)}</td>
+          <td>${formatter.format_property_flags(p, abbrev=True)}</td>
+        </tr>
+        </%doc:introspectable>
+      % endfor
+      </tbody>
+    </table>
+  % endif
+% endif
+
+% if should_render('signals'):
+  <h2 id="index-signals">Signals</h2>
+  ${inherited('signals')}
+  % if getattr(node, 'signals', []):
+    <table>
+      <tbody>
+      % for s in node.signals:
+        <%doc:introspectable node="${s}">
+        <tr>
+          <td class="${doc.deprecated_class(s)}">
+            <a href="#${formatter.make_anchor(s)}">${s.name}</a><!-- no space
+            -->(${formatter.format_in_parameters(s)})
+          </td>
+        </tr>
+        </%doc:introspectable>
+      % endfor
+      </tbody>
+    </table>
+  % endif
+% endif
+
+% if should_render('fields'):
+  <h2 id="index-fields">Fields</h2>
+  ${inherited('fields')}
+  % if non_private_fields:
+    <table>
+      <thead>
+        <tr>
+          <th>Name</th>
+          <th>Type</th>
+          <th>Access</th>
+          <th>Description</th>
+        </tr>
+      </thead>
+      <tbody>
+      % for f in non_private_fields:
+        <%doc:introspectable node="${f}">
+        <tr>
+          <td class="${doc.deprecated_class(f)}">
+            <span class="entry" href="#${formatter.make_anchor(f)}">
+              ${f.name}
+            </span>
+          </td>
+          <td>${formatter.format_type(f.type)}</td>
+          <td>${formatter.format_property_flags(f, abbrev=True)}</td>
+          ## Fields almost never warrant a detailed entry, we'll just make this
+          ## the entry to be indexed by DevDocs
+          <td>
+          % if f.doc:
+            ${formatter.format_inline(node, f.doc)}
+          % endif
+          </td>
+        </tr>
+        </%doc:introspectable>
+      % endfor
+      </tbody>
+    </table>
+  % endif
+% endif
diff --git a/giscanner/doctemplates/devdocs/Gjs/_method.tmpl b/giscanner/doctemplates/devdocs/Gjs/_method.tmpl
new file mode 100644 (file)
index 0000000..5752046
--- /dev/null
@@ -0,0 +1,71 @@
+<%namespace name="doc" file="_doc.tmpl"/>
+
+<%def name="describe_parameters(m, static=False, virtual=False)">
+  <dl>
+    % if static:
+      <dt>Type:</dt>
+      <dd>Static</dd>
+    % elif virtual:
+      <dt>Type:</dt>
+      <dd>Virtual</dd>
+    % endif
+    <%
+      in_params = formatter.get_in_parameters(m)
+      out_params = formatter.get_out_parameters(m)
+    %>
+    % if in_params:
+      <dt>Parameters:</dt>
+      <dd>
+        <ul>
+          % for p in in_params:
+            <li>
+              <strong>${p.argname}</strong>
+              (<code>${formatter.format_type(p.type)}</code>)
+              % if p.doc:
+                &mdash; ${formatter.format_inline(m, p.doc)}
+              % endif
+            </li>
+          % endfor
+        </ul>
+      </dd>
+    % endif
+    % if out_params:
+      <dt>Returns:</dt>
+      <dd>
+        <ul>
+          % for p in out_params:
+            <li>
+              % if len(out_params) > 1:
+                <strong>${p.argname}</strong>
+              % endif
+              (<code>${formatter.format_type(p.type)}</code>)
+              % if p.doc:
+                &mdash; ${formatter.format_inline(m, p.doc)}
+              % endif
+            </li>
+          % endfor
+        </ul>
+      </dd>
+    % endif
+    % if m.throws:
+      <dt>Throws exception:</dt>
+      <dd>Yes</dd>
+    % endif
+  </dl>
+</%def>
+
+<%def name="method(m, static=False, virtual=False)">
+  <%doc:introspectable node="${m}">
+    <% invocation = ", ".join(map(lambda p: p.argname, m.parameters)) %>
+  
+    <h3>
+      <span class="entry ${get_node_kind(m)} ${doc.deprecated_class(m)}"
+          id="${formatter.make_anchor(m)}">
+      ${formatter.format_function_name(m)}<!-- no space
+      --></span><!-- no space
+      -->(${formatter.format_in_parameters(m)})
+    </h3>
+    ${describe_parameters(m, static, virtual)}
+    ${doc.format_documentation(m)}
+  </%doc:introspectable>
+</%def>
diff --git a/giscanner/doctemplates/devdocs/Gjs/_methods.tmpl b/giscanner/doctemplates/devdocs/Gjs/_methods.tmpl
new file mode 100644 (file)
index 0000000..e876cd6
--- /dev/null
@@ -0,0 +1,4 @@
+<%namespace name="method" file="_method.tmpl"/>
+% for m in getattr(node, 'methods', []):
+  ${method.method(m)}
+% endfor
diff --git a/giscanner/doctemplates/devdocs/Gjs/_properties.tmpl b/giscanner/doctemplates/devdocs/Gjs/_properties.tmpl
new file mode 100644 (file)
index 0000000..a705472
--- /dev/null
@@ -0,0 +1,38 @@
+<%namespace name="doc" file="_doc.tmpl"/>
+<%!
+  def dash_to_underscore(string):
+    return '_'.join(string.split('-'))
+
+  def dash_to_camel(string):
+    words = string.split('-')
+    return ''.join([words[0]] + [word.title() for word in words[1:]])
+%>
+% if getattr(node, 'properties', []):
+  <h2>Property Details</h2>
+  % for p in node.properties:
+    <%doc:introspectable node="${p}">
+    <h3 class="entry property ${doc.deprecated_class(p)}"
+        id="${formatter.make_anchor(p)}">
+      ${p.name | dash_to_underscore}
+    </h3>
+    <dl>
+      % if p.name.lower() != p.name:
+        <dt>Names</dt>
+        <dd>
+          <code>${p.name}</code>, <code>${p.name | dash_to_underscore}</code>,
+          <code>${p.name | dash_to_camel}</code>
+        </dd>
+      % endif
+      <dt>Type</dt>
+      <dd><code>${formatter.format_type(p.type)}</code></dd>
+      ##<dt>Default value</dt>
+      ##<dd>Not currently stored in GIR</dd>
+      <dt>Flags</dt>
+      <dd>${formatter.format_property_flags(p)}</dd>
+    </dl>
+    % if p.doc:
+      ${doc.format_documentation(p)}
+    % endif
+    </%doc:introspectable>
+  % endfor
+% endif
diff --git a/giscanner/doctemplates/devdocs/Gjs/_signals.tmpl b/giscanner/doctemplates/devdocs/Gjs/_signals.tmpl
new file mode 100644 (file)
index 0000000..cda46bd
--- /dev/null
@@ -0,0 +1,22 @@
+<%namespace name="doc" file="_doc.tmpl"/>
+<%namespace name="method" file="_method.tmpl"/>
+% if getattr(node, 'signals', []):
+  <h2>Signal Details</h2>
+  % for s in node.signals:
+    <%doc:introspectable node="${s}">
+    <h3>
+      <span class="entry signal ${doc.deprecated_class(s)}"
+            id="${formatter.make_anchor(s)}">
+        ${s.name}<!-- no space
+      --></span><!--
+      -->(${formatter.format_in_parameters(s)})
+    </h3>
+    <dl>
+      <dt>Flags</dt>
+      <dd>${formatter.format_signal_flags(s)}</dd>
+      ${method.describe_parameters(s)}
+    </dl>
+    ${doc.format_documentation(s)}
+    </%doc:introspectable>
+  % endfor
+% endif
diff --git a/giscanner/doctemplates/devdocs/Gjs/_staticmethods.tmpl b/giscanner/doctemplates/devdocs/Gjs/_staticmethods.tmpl
new file mode 100644 (file)
index 0000000..dcd542e
--- /dev/null
@@ -0,0 +1,4 @@
+<%namespace name="method" file="_method.tmpl"/>
+% for m in getattr(node, 'static_methods', []) + getattr(node, 'constructors', []):
+  ${method.method(m, static=True)}
+% endfor
diff --git a/giscanner/doctemplates/devdocs/Gjs/_vfuncs.tmpl b/giscanner/doctemplates/devdocs/Gjs/_vfuncs.tmpl
new file mode 100644 (file)
index 0000000..2966ede
--- /dev/null
@@ -0,0 +1,6 @@
+<%namespace name="method" file="_method.tmpl"/>
+% if getattr(node, 'virtual_methods', []):
+  % for m in node.virtual_methods:
+    ${method.method(m, virtual=True)}
+  % endfor
+% endif
diff --git a/giscanner/doctemplates/devdocs/Gjs/base.tmpl b/giscanner/doctemplates/devdocs/Gjs/base.tmpl
new file mode 100644 (file)
index 0000000..913fa0c
--- /dev/null
@@ -0,0 +1,21 @@
+<%namespace name="doc" file="_doc.tmpl"/>
+<html>
+<body>
+  <section>
+    <h1 class="${page_kind} ${doc.deprecated_class(node)} ${self.extra_class()}">
+      ${formatter.format_page_name(node)}
+    </h1>
+    <%include file="_index.tmpl"/>
+    <h2>Details</h2>
+    ${doc.format_documentation(node)}
+    <%include file="_staticmethods.tmpl"/>
+    <%include file="_methods.tmpl"/>
+    <%include file="_vfuncs.tmpl"/>
+    <%include file="_signals.tmpl"/>
+    <%include file="_properties.tmpl"/>
+    ${self.body()}
+  </section>
+</body>
+</html>
+
+<%def name="extra_class()"/>
diff --git a/giscanner/doctemplates/devdocs/Gjs/callback.tmpl b/giscanner/doctemplates/devdocs/Gjs/callback.tmpl
new file mode 100644 (file)
index 0000000..2795ee3
--- /dev/null
@@ -0,0 +1,3 @@
+<%namespace name="method" file="_method.tmpl"/>
+<%inherit file="base.tmpl"/>
+${method.describe_parameters(node)}
diff --git a/giscanner/doctemplates/devdocs/Gjs/class.tmpl b/giscanner/doctemplates/devdocs/Gjs/class.tmpl
new file mode 100644 (file)
index 0000000..9d2b523
--- /dev/null
@@ -0,0 +1 @@
+<%inherit file="base.tmpl"/>
diff --git a/giscanner/doctemplates/devdocs/Gjs/default.tmpl b/giscanner/doctemplates/devdocs/Gjs/default.tmpl
new file mode 100644 (file)
index 0000000..4b08adf
--- /dev/null
@@ -0,0 +1,34 @@
+<%inherit file="base.tmpl"/>
+% if isinstance(node, ast.Constant):
+  <dl>
+    <dt>Value</dt>
+    <dd>
+      <code data-mime="application/javascript"><!--
+      -->${formatter.format_value(node)}</code>
+    </dd>
+  </dl>
+% endif
+% if isinstance(node, ast.Alias):
+  <dl>
+    <dt>Equivalent Type</dt>
+    <dd>
+      <code data-mime="application/javascript">
+        % if node.target.target_fundamental:
+          ${formatter.format_fundamental_type(node.target.target_fundamental)}
+        % else:
+          ${node.target.target_giname}
+        % endif
+      </code>
+    </dd>
+  </dl>
+% endif
+
+## This should belong in get_node_kind(), but we don't want to change the way
+## all the other templates work.
+<%def name="extra_class()">
+  % if isinstance(node, ast.Constant):
+    constant
+  % elif isinstance(node, ast.Alias):
+    alias
+  % endif
+</%def>
diff --git a/giscanner/doctemplates/devdocs/Gjs/enum.tmpl b/giscanner/doctemplates/devdocs/Gjs/enum.tmpl
new file mode 100644 (file)
index 0000000..a66cbef
--- /dev/null
@@ -0,0 +1,16 @@
+<%inherit file="base.tmpl"/>
+<ul>
+% for m in node.members:
+  <li>
+    <code>
+      <span class="entry" id="${formatter.make_anchor(m)}">
+        ${m.name.upper()}
+      </span>
+      = ${m.value}
+    </code>
+    % if m.doc:
+      &mdash; ${formatter.format_inline(node, m.doc)}
+    % endif
+  </li>
+% endfor
+</ul>
diff --git a/giscanner/doctemplates/devdocs/Gjs/function.tmpl b/giscanner/doctemplates/devdocs/Gjs/function.tmpl
new file mode 100644 (file)
index 0000000..2795ee3
--- /dev/null
@@ -0,0 +1,3 @@
+<%namespace name="method" file="_method.tmpl"/>
+<%inherit file="base.tmpl"/>
+${method.describe_parameters(node)}
diff --git a/giscanner/doctemplates/devdocs/Gjs/interface.tmpl b/giscanner/doctemplates/devdocs/Gjs/interface.tmpl
new file mode 100644 (file)
index 0000000..9d2b523
--- /dev/null
@@ -0,0 +1 @@
+<%inherit file="base.tmpl"/>
diff --git a/giscanner/doctemplates/devdocs/Gjs/namespace.tmpl b/giscanner/doctemplates/devdocs/Gjs/namespace.tmpl
new file mode 100644 (file)
index 0000000..8f5a4e7
--- /dev/null
@@ -0,0 +1,57 @@
+<%def name="get_types(n, types)">
+  <% nodes = [] %>
+  % for a in n.values():
+    % if isinstance(a, types):
+      % if formatter.should_render_node(a):
+        <% nodes.append(a) %>
+      % endif
+    % endif
+  % endfor
+  <% return nodes %>
+</%def>
+
+<%def name="render_list(nodes)">
+   <ul>
+  % for a in nodes:
+      <li>${formatter.format_inline(a, formatter.format_xref(a))}</li>
+  % endfor
+  </ul>
+</%def>
+
+<html>
+<body>
+  <section>
+    <h1 class="namespace">${node.name}</h1>
+  </section>
+  
+      <% nodes = get_types(node, (ast.Class, ast.Interface)) %>
+      % if len(nodes) > 0:
+         <h1>Classes</h1>
+        ${render_list(nodes)}
+      % endif
+  
+      <% nodes = get_types(node, (ast.Enum)) %>
+      % if len(nodes) > 0:
+         <h1>Enums</h1>
+        ${render_list(nodes)}
+      % endif
+  
+     <% nodes = get_types(node, (ast.Function)) %>
+      % if len(nodes) > 0:
+        <h1>Functions</h1>
+        ${render_list(nodes)}
+      % endif
+  
+      <% nodes = get_types(node, (ast.Constant)) %>
+      % if len(nodes) > 0:
+        <h1>Constants</h1>
+        ${render_list(nodes)}
+      % endif
+  
+      <% nodes = get_types(node, (ast.Property)) %>
+      % if len(nodes) > 0:
+        <h1>Properties</h1>
+        ${render_list(nodes)}
+      % endif
+</body>
+</html>
index d9c2ed5..a29ba37 100644 (file)
@@ -28,13 +28,42 @@ from __future__ import unicode_literals
 
 import os
 import re
+import sys
 import tempfile
 
 from xml.sax import saxutils
 from mako.lookup import TemplateLookup
+import markdown
+from markdown.extensions.headerid import HeaderIdExtension
 
 from . import ast, xmlwriter
 from .utils import to_underscores
+from .mdextensions import InlineMarkdown
+
+# Freely inspired from
+# https://github.com/GNOME/yelp-xsl/blob/master/js/syntax.html
+language_mimes = {
+    "bash-script": "application/x-shellscript",
+    "shell": "application/x-shellscript",
+    "csharp": "text/x-csharp",
+    "css": "text/css",
+    "diff": "text/xpatch",
+    "html": "text/html",
+    "java": "text/x-java",
+    "javascript": "application/javascript",
+    "lisp": "text/x-scheme",
+    "lua": "text-x-lua",
+    "c": "text/x-csrc",
+    "c++": "text/x-c++src",
+    "pascal": "text/x-pascal",
+    "perl": "application/x-perl",
+    "php": "application/x-php",
+    "plain": "text/plain",
+    "python": "text/x-python",
+    "ruby": "application/x-ruby",
+    "sql": "text/x-sql",
+    "yaml": "application/x-yaml",
+}
 
 
 def make_page_id(node, recursive=False):
@@ -166,6 +195,15 @@ class DocstringScanner(TemplatedScanner):
         specs = [
             ('!alpha', r'[a-zA-Z0-9_]+'),
             ('!alpha_dash', r'[a-zA-Z0-9_-]+'),
+            ('code_start_with_language',
+            r'\|\[\<!\-\-\s*language\s*\=\s*\"<<language_name:alpha>>\"\s*\-\-\>'),
+            ('code_start', r'\|\['),
+            ('code_end', r'\]\|'),
+            ('html_code_start', r'<code(.*?)>'),
+            ('html_code_end', r'</code>'),
+            ('markdown_code_toggle', r'\`'),
+            ('markdown_attr_start', r'\{'),
+            ('markdown_attr_end', r'\}'),
             ('property', r'#<<type_name:alpha>>:(<<property_name:alpha_dash>>)'),
             ('signal', r'#<<type_name:alpha>>::(<<signal_name:alpha_dash>>)'),
             ('type_name', r'#(<<type_name:alpha>>)'),
@@ -181,10 +219,18 @@ class DocFormatter(object):
     def __init__(self, transformer):
         self._transformer = transformer
         self._scanner = DocstringScanner()
+        # If we are processing a code block as defined by
+        # https://wiki.gnome.org/Projects/GTK%2B/DocumentationSyntax/Markdown
+        # we won't insert paragraphs and will respect new lines.
+        self._processing_code = False
+        self._processing_attr = False
 
     def escape(self, text):
         return saxutils.escape(text)
 
+    def unescape(self, text):
+        return saxutils.unescape(text)
+
     def should_render_node(self, node):
         if getattr(node, "private", False):
             return False
@@ -208,6 +254,7 @@ class DocFormatter(object):
             result += '  <p>'
             result += self.format_inline(node, para)
             result += '</p>'
+
         return result
 
     def _resolve_type(self, ident):
@@ -239,6 +286,8 @@ class DocFormatter(object):
         raise KeyError("Could not find %s" % (name, ))
 
     def _process_other(self, node, match, props):
+        if self._processing_code:
+            return match
         return self.escape(match)
 
     def _process_property(self, node, match, props):
@@ -266,11 +315,20 @@ class DocFormatter(object):
         return self.format_xref(signal)
 
     def _process_type_name(self, node, match, props):
-        type_ = self._resolve_type(props['type_name'])
-        if type_ is None:
+        if self._processing_attr:
             return match
 
-        return self.format_xref(type_)
+        ident = props['type_name']
+        type_ = self._resolve_type(ident)
+        plural = False
+        if type_ is None:
+            singularized = ident.rstrip("s")  # Try to remove plural
+            type_ = self._resolve_type(singularized)
+            plural = True
+            if type_ is None:
+                return match
+
+        return self.format_xref(type_, pluralize=plural)
 
     def _process_enum_value(self, node, match, props):
         member_name = props['member_name']
@@ -301,6 +359,79 @@ class DocFormatter(object):
 
         return self.format_xref(func)
 
+    # FIXME: the four spaces after newlines in the following functions are to
+    # keep Markdown happy. We pass the documentation string first through this
+    # templated scanner, which converts |[ ]| to <pre></pre>. Then in the case
+    # of DevDocs output, we pass the resulting string through Markdown; but
+    # Markdown will not respect the <pre> element and will treat the code as
+    # markup, converting asterisks into <em> etc. Putting four spaces at the
+    # start of each line makes Markdown recognize the code as code without
+    # affecting the normal HTML output too much.
+    #
+    # A better solution would be to replace DocstringScanner by Markdown
+    # entirely, implementing the custom markup with Markdown extensions.
+    #
+    # UPDATE: As a temporary fix for code blocks we will convert directly to ``` syntax.
+    #
+    # NOTES:
+    # _process_markdown_code_toggle:
+    #     Whenever we encounter ` we need to toggle whether we are escaping text as text inside
+    #     inline code blocks is unescaped
+    # _process_markdown_attr_(start|end):
+    #     Whenever we encounter { or } we must stop parsing type names as curly braces are used for
+    #     attributes in GIR files in addition to type declarations.
+    # _process_html_code_(start|end):
+    #     Whenever we encounter an HTML <code> block we must stop escaping text.
+    #
+    # TODO: Convert to markdown extensions.
+
+    def _process_markdown_code_toggle(self, node, match, props):
+        self._processing_code = not self._processing_code
+        return match
+
+    def _process_markdown_attr_start(self, node, match, props):
+        if not self._processing_code:
+            self._processing_attr = True
+        return match
+
+    def _process_markdown_attr_end(self, node, match, props):
+        if not self._processing_code:
+            self._processing_attr = False
+        return match
+
+    def _process_html_code_start(self, node, match, props):
+        self._processing_code = True
+        return match
+
+    def _process_html_code_end(self, node, match, props):
+        self._processing_code = False
+        return match
+
+    def _process_code_start(self, node, match, props):
+        self._processing_code = True
+        return '</p>\n```\n'
+
+    def _process_code_start_with_language(self, node, match, props):
+        self._processing_code = True
+        try:
+            return '</p>\n```' + props["language_name"].lower() + '\n'
+        except KeyError:
+            return '</p>\n```\n'
+
+    def _process_code_end(self, node, match, props):
+        self._processing_code = False
+        return '\n```\n<p>'
+
+    def _process_new_line(self, node, match, props):
+        if self._processing_code:
+            return '\n'
+        return '\n'
+
+    def _process_new_paragraph(self, node, match, props):
+        if self._processing_code:
+            return '\n\n'
+        return "</p><p>"
+
     def _process_token(self, node, tok):
         kind, match, props = tok
 
@@ -312,6 +443,16 @@ class DocFormatter(object):
             'enum_value': self._process_enum_value,
             'parameter': self._process_parameter,
             'function_call': self._process_function_call,
+            'code_start': self._process_code_start,
+            'code_start_with_language': self._process_code_start_with_language,
+            'code_end': self._process_code_end,
+            'html_code_start': self._process_html_code_start,
+            'html_code_end': self._process_html_code_end,
+            'markdown_code_toggle': self._process_markdown_code_toggle,
+            'markdown_attr_start': self._process_markdown_attr_start,
+            'markdown_attr_end': self._process_markdown_attr_end,
+            'new_line': self._process_new_line,
+            'new_paragraph': self._process_new_paragraph,
         }
 
         return dispatch[kind](node, match, props)
@@ -336,6 +477,9 @@ class DocFormatter(object):
     def format_type(self, type_, link=False):
         raise NotImplementedError
 
+    def format_value(self, node):
+        raise NotImplementedError
+
     def format_page_name(self, node):
         if isinstance(node, ast.Namespace):
             return node.name
@@ -352,33 +496,41 @@ class DocFormatter(object):
         else:
             return make_page_id(node)
 
-    def format_xref(self, node, **attrdict):
+    def format_xref(self, node, pluralize=False, **attrdict):
         if node is None or not hasattr(node, 'namespace'):
             attrs = [('xref', 'index')] + list(sorted(attrdict.items()))
             return xmlwriter.build_xml_tag('link', attrs)
         elif isinstance(node, ast.Member):
             # Enum/BitField members are linked to the main enum page.
-            return self.format_xref(node.parent, **attrdict) + '.' + node.name
+            return self.format_xref(node.parent, pluralize=pluralize, **attrdict) + '.' + node.name
         elif node.namespace is self._transformer.namespace:
-            return self.format_internal_xref(node, attrdict)
+            return self.format_internal_xref(node, attrdict, pluralize=pluralize)
         else:
-            return self.format_external_xref(node, attrdict)
+            return self.format_external_xref(node, attrdict, pluralize=pluralize)
 
-    def format_internal_xref(self, node, attrdict):
+    def format_internal_xref(self, node, attrdict, pluralize=False):
         attrs = [('xref', make_page_id(node))] + list(sorted(attrdict.items()))
-        return xmlwriter.build_xml_tag('link', attrs)
+        if not pluralize:
+            return xmlwriter.build_xml_tag('link', attrs)
+        else:
+            return xmlwriter.build_xml_tag('link', attrs, make_page_id(node) +
+            "s")
 
-    def format_external_xref(self, node, attrdict):
+    def format_external_xref(self, node, attrdict, pluralize=False):
         ns = node.namespace
         attrs = [('href', '../%s-%s/%s.html' % (ns.name, str(ns.version),
                                                 make_page_id(node)))]
         attrs += list(sorted(attrdict.items()))
-        return xmlwriter.build_xml_tag('link', attrs, self.format_page_name(node))
+        if not pluralize:
+            return xmlwriter.build_xml_tag('link', attrs, self.format_page_name(node))
+        else:
+            return xmlwriter.build_xml_tag('link', attrs,
+                    self.format_page_name(node) + "s")
 
     def field_is_writable(self, field):
         return True
 
-    def format_property_flags(self, property_, construct_only=False):
+    def format_property_flags(self, property_, construct_only=False, abbrev=False):
         flags = []
 
         if property_.readable and not construct_only:
@@ -392,6 +544,23 @@ class DocFormatter(object):
             if property_.construct_only:
                 flags.append("Construct Only")
 
+        if abbrev:
+            return "/".join([''.join([word[0] for word in flag.lower().split()])
+                for flag in flags])
+        return " / ".join(flags)
+
+    def format_signal_flags(self, signal):
+        flags = []
+        if signal.action:
+            flags.append("Action")
+        if signal.detailed:
+            flags.append("Detailed")
+        if signal.no_hooks:
+            flags.append("No Hooks")
+        if signal.no_recurse:
+            flags.append("No Recurse")
+        if signal.when:
+            flags.append("Run " + signal.when.capitalize())
         return " / ".join(flags)
 
     def to_underscores(self, node):
@@ -399,6 +568,8 @@ class DocFormatter(object):
             return node.name.replace('-', '_')
         elif node.name:
             return to_underscores(node.name)
+        elif isinstance(node, ast.Function) and node.moved_to:
+            return to_underscores(node.moved_to)
         elif isinstance(node, ast.Callback):
             return 'callback'
         elif isinstance(node, ast.Union):
@@ -422,6 +593,51 @@ class DocFormatter(object):
         parent_chain.reverse()
         return parent_chain
 
+    def get_inheritable_types(self, node):
+        """Return an ast.Node object for each type (ast.Class and ast.Interface
+        types) from which an ast.Class @node might inherit methods, properties,
+        and signals."""
+
+        assert isinstance(node, ast.Class)
+
+        parent_chain = self.get_class_hierarchy(node)
+        types = []
+        for p in parent_chain:
+            types += [self._transformer.lookup_typenode(t) for t in p.interfaces]
+        types += [t for t in parent_chain if t is not node]
+        return types
+
+    def is_private_field(self, node, f):
+        """Returns whether @f is a private field of @node (including a heuristic
+        that tries to determine whether the field is the parent instance field
+        or a private pointer but not marked as such.)"""
+
+        if f.private:
+            return True
+        if f.anonymous_node:
+            return True
+        if f.name == 'g_type_instance':
+            return True  # this field on GObject is not exposed
+
+        field_typenode = self._transformer.lookup_typenode(f.type)
+        if not field_typenode:
+            return False
+
+        if getattr(field_typenode, 'disguised', False):
+            return True  # guess that it's a pointer to a private struct
+            # this also catches fields of type GdkAtom, since that is disguised
+            # as well. Not sure whether that's correct or not.
+
+        if not isinstance(node, ast.Class):
+            return False  # parent instance heuristics only apply to classes
+
+        if node.parent_type:
+            parent_typenode = self._transformer.lookup_typenode(node.parent_type)
+            if field_typenode == parent_typenode:
+                return True  # guess that it's a parent instance field
+
+        return False
+
     def format_prerequisites(self, node):
         assert isinstance(node, ast.Interface)
 
@@ -721,6 +937,8 @@ class DocFormatterGjs(DocFormatterIntrospectableBase):
             return "void"
         elif type_.target_giname is not None:
             giname = type_.target_giname
+            if giname == 'Gdk.Atom':
+                return 'String'
             if giname in ('GLib.ByteArray', 'GLib.Bytes'):
                 return 'ByteArray'
             if giname == 'GObject.Value':
@@ -889,7 +1107,173 @@ class DocFormatterGjs(DocFormatterIntrospectableBase):
             return ', '.join(('%s: %s' % (p.argname, self.format_type(p.type)))
                              for p in construct_params)
 
+
+class DevDocsFormatterGjs(DocFormatterGjs):
+    output_format = "devdocs"
+    output_extension = ".html"
+
+    def _is_static_method(self, node):
+        if not hasattr(node.parent, "static_methods"):
+            return False
+        return node in node.parent.static_methods
+
+    def should_render_node(self, node):
+        # For DevDocs, we only want to render the top-level nodes.
+        if isinstance(node, (ast.Compound, ast.Boxed)):
+            self.resolve_gboxed_constructor(node)
+
+        if not super(DevDocsFormatterGjs, self).should_render_node(node):
+            return False
+
+        if isinstance(node, ast.Function) and not node.is_method and \
+           not node.is_constructor and not self._is_static_method(node):
+            return True  # module-level function
+        toplevel_types = [ast.Alias, ast.Bitfield, ast.Boxed, ast.Callback,
+            ast.Class, ast.Constant, ast.Enum, ast.Interface, ast.Namespace,
+            ast.Record, ast.Union]
+        for ast_type in toplevel_types:
+            if isinstance(node, ast_type):
+                return True
+
+        return False
+
+    def format_fundamental_type(self, name):
+        # Don't specify the C type after Number as the Mallard docs do; it's
+        # confusing to GJS newbies.
+        if name in ["gint8", "guint8", "gint16", "guint16", "gint32", "guint32",
+                    "gchar", "guchar", "gshort", "gint", "guint", "gfloat",
+                    "gdouble", "gsize", "gssize", "gintptr", "guintptr",
+                    "glong", "gulong", "gint64", "guint64", "long double",
+                    "long long", "unsigned long long"]:
+            return "Number"  # gsize and up cannot fully be represented in GJS
+        if name in ["none", "gpointer"]:
+            return "void"
+        if name in ["utf8", "gunichar", "filename"]:
+            return "String"
+        if name == "gboolean":
+            return "Boolean"
+        if name == "GType":
+            return "GObject.Type"
+        if name == "GVariant":
+            return "GLib.Variant"
+        return name
+
+    def format_value(self, node):
+        # Constants only have fundamental types?
+        type_ = node.value_type.target_fundamental
+        if type_ in ["utf8", "gunichar", "filename"]:
+            return repr(node.value)
+            # escapes quotes in the string; ought to be the same in Javascript
+        return node.value
+
+    def format(self, node, doc):
+        if doc is None:
+            return ''
+
+        cleaned_up_gtkdoc = super(DevDocsFormatterGjs, self).format_inline(node, doc)
+        return markdown.markdown(cleaned_up_gtkdoc, extensions=[
+            'markdown.extensions.fenced_code',
+            'markdown.extensions.nl2br',
+            'markdown.extensions.attr_list',
+            HeaderIdExtension(forceid=False)
+        ])
+
+    def format_function_name(self, func):
+        name = func.name
+        if func.shadows:
+            name = func.shadows
+
+        if isinstance(func, ast.VFunction):
+            return 'vfunc_' + name
+        return name
+
+    def format_page_name(self, node):
+        if isinstance(node, ast.Function) and node.parent is not None:
+            return node.parent.name + "." + self.format_function_name(node)
+        return super(DevDocsFormatterGjs, self).format_page_name(node)
+
+    def _write_xref_markdown(self, target, anchor=None, display_name=None, pluralize=False):
+        if display_name is None:
+            display_name = target
+        link = target + ".html"
+        if anchor is not None:
+            link += "#" + anchor
+        return "[{}]({}){}".format(display_name, link, 's' if pluralize else '')
+
+    def to_underscores(self, node):
+        try:
+            return super(DevDocsFormatterGjs, self).to_underscores(node)
+        except Exception as e:
+            if e.message == 'invalid node':
+                print('warning: invalid node in', node.parent.name,
+                    file=sys.stderr)
+                return node.parent.name + '_invalid_node'
+
+    def make_anchor(self, node):
+        style_class = get_node_kind(node)
+        return "{}-{}".format(style_class, self.to_underscores(node))
+
+    def _process_parameter(self, node, match, props):
+        # Display the instance parameter as "this" instead of whatever name it
+        # has in C.
+        if hasattr(node, 'instance_parameter') and \
+           node.instance_parameter is not None and \
+           props['param_name'] == node.instance_parameter.argname:
+            return '<code>this</code>'
+        return super(DevDocsFormatterGjs, self)._process_parameter(node, match, props)
+
+    def format_xref(self, node, pluralize=False, **attrdict):
+        if node is None or not hasattr(node, 'namespace'):
+            return self._write_xref_markdown('index')
+        if node.namespace is self._transformer.namespace:
+            return self.format_internal_xref(node, attrdict, pluralize=pluralize)
+        return self.format_external_xref(node, attrdict, pluralize=pluralize)
+
+    def format_internal_xref(self, node, attrdict, pluralize=False):
+        if not self.should_render_node(node):
+            # Non-toplevel nodes are linked to the main page.
+            page = make_page_id(node.parent)
+            name = node.name
+            if isinstance(node, ast.Member):
+                name = name.upper()
+            return self._write_xref_markdown(page, self.make_anchor(node),
+                                             page + "." + name,
+                                             pluralize=pluralize)
+        return self._write_xref_markdown(make_page_id(node), pluralize=pluralize)
+
+    def format_external_xref(self, node, attrdict, pluralize=False):
+        ns = node.namespace
+        slug = ns.name.lower() + str(ns.version).replace('.', '')
+        if not self.should_render_node(node):
+            target = 'gir:///%s/%s' % (slug, make_page_id(node.parent))
+            return self._write_xref_markdown(target, self.make_anchor(node),
+                                             self.format_page_name(node.parent),
+                                             pluralize=pluralize)
+        target = 'gir:///%s/%s' % (slug, make_page_id(node))
+        return self._write_xref_markdown(target, None,
+                                         self.format_page_name(node),
+                                         pluralize=pluralize)
+
+    def format_inline(self, node, para):
+        if para is None:
+            return ''
+        cleaned_up_gtkdoc = super(DevDocsFormatterGjs, self).format_inline(node, para)
+        return markdown.markdown(cleaned_up_gtkdoc, extensions=[
+            InlineMarkdown(),
+            'markdown.extensions.fenced_code',
+            'markdown.extensions.nl2br',
+            'markdown.extensions.attr_list',
+            HeaderIdExtension(forceid=False)
+        ])
+
+    def format_in_parameters(self, node):
+        return ', '.join(p.argname for p in self.get_in_parameters(node))
+
+
 LANGUAGES = {
+    "devdocs": {
+        "gjs": DevDocsFormatterGjs,
+    },
     "mallard": {
         "c": DocFormatterC,
         "python": DocFormatterPython,
@@ -910,6 +1294,7 @@ class DocWriter(object):
 
         self._formatter = formatter_class(self._transformer)
         self._language = self._formatter.language
+        self._output_format = output_format
 
         self._lookup = self._get_template_lookup()
 
@@ -968,6 +1353,7 @@ class DocWriter(object):
                                  node=node,
                                  page_id=page_id,
                                  page_kind=page_kind,
+                                 get_node_kind=get_node_kind,
                                  formatter=self._formatter,
                                  ast=ast)
 
index 494c7ff..2c668f5 100644 (file)
@@ -29,7 +29,6 @@ import sys
 import shlex
 import subprocess
 import tempfile
-from distutils.errors import LinkError
 
 from .gdumpparser import IntrospectionBinary
 from . import pkgconfig, utils
index a024f1a..c37357b 100644 (file)
 #endif
 #include <Python.h>
 #include "sourcescanner.h"
-#include <stdio.h>
+
+#ifdef _WIN32
+#include <fcntl.h>
+#include <io.h>
+#define WIN32_LEAN_AND_MEAN
+#define STRICT
+#include <windows.h>
+#endif
+
 #include <glib-object.h>
 
 #ifndef Py_TYPE
@@ -439,6 +447,90 @@ pygi_source_scanner_parse_file (PyGISourceScanner *self,
   if (!PyArg_ParseTuple (args, "i:SourceScanner.parse_file", &fd))
     return NULL;
 
+#ifdef _WIN32
+  /* The file descriptor passed to us is from the C library Python
+   * uses. That is msvcr71.dll for Python 2.5 and msvcr90.dll for
+   * Python 2.6, 2.7, 3.2 etc; and msvcr100.dll for Python 3.3 and 3.4.
+   * Python 3.5 and later is built with Visual Studio 2015, which uses
+   * the universal CRT, so we need to deal with urtbase.dll here instead.
+   * This code, at least if compiled with mingw, uses
+   * msvcrt.dll, so we cannot use the file descriptor directly. So
+   * perform appropriate magic.
+   */
+
+  /* If we are using the following combinations,
+   * we can use the file descriptors directly
+   * (Not if a build using WDK is used):
+   * Python 2.6.x/2.7.x with Visual C++ 2008
+   * Python 3.1.x/3.2.x with Visual C++ 2008
+   * Python 3.3.x/3.4.x with Visual C++ 2010
+   */
+
+  /* XXX: Somehow we cannot use the FD directly on Python 3.5+ even when
+   *      using Visual Studio 2015, so we currently need to use _get_osfhandle() when
+   *      in all cases on Python 3.5+
+   */
+
+#if (defined(_MSC_VER) && !defined(USE_WIN_DDK))
+#if (PY_MAJOR_VERSION==2 && PY_MINOR_VERSION>=6 && (_MSC_VER >= 1500 && _MSC_VER < 1600))
+#define MSVC_USE_FD_DIRECTLY 1
+#elif (PY_MAJOR_VERSION==3 && PY_MINOR_VERSION<=2 && (_MSC_VER >= 1500 && _MSC_VER < 1600))
+#define MSVC_USE_FD_DIRECTLY 1
+#elif (PY_MAJOR_VERSION==3 && PY_MINOR_VERSION<=4 && (_MSC_VER >= 1600 && _MSC_VER < 1700))
+#define MSVC_USE_FD_DIRECTLY 1
+#endif
+#endif
+
+#if !defined(MSVC_USE_FD_DIRECTLY) && !defined(__MINGW64_VERSION_MAJOR)
+  {
+#if defined(PY_MAJOR_VERSION) && PY_MAJOR_VERSION==2 && PY_MINOR_VERSION==5
+#define PYTHON_MSVCRXX_DLL "msvcr71.dll"
+#elif defined(PY_MAJOR_VERSION) && PY_MAJOR_VERSION==2 && PY_MINOR_VERSION==7
+#define PYTHON_MSVCRXX_DLL "msvcr90.dll"
+#elif defined(PY_MAJOR_VERSION) && PY_MAJOR_VERSION==3 && PY_MINOR_VERSION<=2
+#define PYTHON_MSVCRXX_DLL "msvcr90.dll"
+#elif defined(PY_MAJOR_VERSION) && PY_MAJOR_VERSION==3 &&  PY_MINOR_VERSION<=4
+#define PYTHON_MSVCRXX_DLL "msvcr100.dll"
+#elif defined(PY_MAJOR_VERSION) && PY_MAJOR_VERSION==3 && PY_MINOR_VERSION>=5
+#define PYTHON_MSVCRXX_DLL "ucrtbase.dll"
+#else
+#error This Python version not handled
+#endif
+    HMODULE msvcrxx;
+    intptr_t (*p__get_osfhandle) (int);
+    HANDLE handle;
+
+    msvcrxx = GetModuleHandle (PYTHON_MSVCRXX_DLL);
+    if (!msvcrxx)
+    {
+      g_print ("No " PYTHON_MSVCRXX_DLL " loaded.\n");
+      return NULL;
+    }
+
+    p__get_osfhandle = (intptr_t (*) (int)) GetProcAddress (msvcrxx, "_get_osfhandle");
+    if (!p__get_osfhandle)
+    {
+      g_print ("No _get_osfhandle found in " PYTHON_MSVCRXX_DLL ".\n");
+      return NULL;
+    }
+
+    handle = (HANDLE) p__get_osfhandle (fd);
+    if (!p__get_osfhandle)
+    {
+      g_print ("Could not get OS handle from " PYTHON_MSVCRXX_DLL " fd.\n");
+      return NULL;
+    }
+
+    fd = _open_osfhandle ((intptr_t) handle, _O_RDONLY);
+    if (fd == -1)
+    {
+      g_print ("Could not open C fd from OS handle.\n");
+      return NULL;
+    }
+  }
+#endif
+#endif
+
   fp = fdopen (fd, "r");
   if (!fp)
     {
index a7287ec..2103e54 100644 (file)
@@ -35,8 +35,7 @@ from .annotationparser import (ANN_ALLOW_NONE, ANN_ARRAY, ANN_ATTRIBUTES, ANN_CL
                                ANN_VFUNC, ANN_NULLABLE, ANN_OPTIONAL, ANN_NOT)
 from .annotationparser import (OPT_ARRAY_FIXED_SIZE, OPT_ARRAY_LENGTH, OPT_ARRAY_ZERO_TERMINATED,
                                OPT_OUT_CALLEE_ALLOCATES, OPT_OUT_CALLER_ALLOCATES,
-                               OPT_TRANSFER_CONTAINER, OPT_TRANSFER_FLOATING, OPT_TRANSFER_NONE,
-                               OPT_NOT_NULLABLE)
+                               OPT_TRANSFER_CONTAINER, OPT_TRANSFER_FLOATING, OPT_TRANSFER_NONE)
 
 from .utils import to_underscores_noprefix
 
@@ -515,7 +514,7 @@ class MainTransformer(object):
                 initially_unowned_type = ast.Type(target_giname='GObject.InitiallyUnowned')
                 try:
                     initially_unowned = self._transformer.lookup_typenode(initially_unowned_type)
-                except KeyError as e:
+                except KeyError:
                     message.error_node(node, "constructor found but GObject is not in includes")
                     return None
                 if initially_unowned and self._is_gi_subclass(typeval, initially_unowned_type):
diff --git a/giscanner/mdextensions.py b/giscanner/mdextensions.py
new file mode 100644 (file)
index 0000000..16af4fc
--- /dev/null
@@ -0,0 +1,13 @@
+from markdown.extensions import Extension
+from markdown.treeprocessors import Treeprocessor
+
+
+class RemoveOuterP(Treeprocessor):
+    def run(self, root):
+        if len(root) == 1 and root[0].tag == "p":
+            root[0].tag = "span"
+
+
+class InlineMarkdown(Extension):
+    def extendMarkdown(self, md, md_globals):
+        md.treeprocessors.add("remove_outer_p", RemoveOuterP(md), "_end")
index 86049da..d13eb80 100644 (file)
@@ -21,8 +21,7 @@
 import os
 import distutils
 
-from distutils.errors import (DistutilsExecError, CompileError, LibError,
-                              LinkError, UnknownFileError)
+from distutils.errors import DistutilsExecError, CompileError
 from distutils.ccompiler import CCompiler, gen_preprocess_options
 from distutils.dep_util import newer
 
index e0af993..ccb14e9 100644 (file)
@@ -30,7 +30,6 @@ import optparse
 import os
 import shutil
 import stat
-import subprocess
 import sys
 import tempfile
 import platform
@@ -391,7 +390,7 @@ def create_transformer(namespace, options):
             _error("Invalid include path '%s'" % (include, ))
         try:
             include_obj = Include.from_string(include)
-        except:
+        except Exception:
             _error("Malformed include '%s'\n" % (include, ))
         transformer.register_include(include_obj)
     for include_path in options.includes_uninstalled:
index 0577ced..aea05e6 100644 (file)
@@ -25,7 +25,6 @@ from __future__ import print_function
 from __future__ import unicode_literals
 
 import os
-import subprocess
 import tempfile
 
 from .libtoolimporter import LibtoolImporter
index 1a27aa3..335e229 100644 (file)
@@ -260,8 +260,8 @@ currently-scanned namespace is first."""
                                     stdin=subprocess.PIPE,
                                     stdout=subprocess.PIPE,
                                     stderr=subprocess.PIPE)
-            _name = name
             proc_name, err = proc.communicate(name.encode())
+            proc_name = proc_name.strip()
             if proc.returncode:
                 raise ValueError('filter: %r exited: %d with error: %s' %
                                  (self._symbol_filter_cmd, proc.returncode, err))
index f6cd0b4..67d6a17 100644 (file)
@@ -55,6 +55,7 @@ def break_on_debug_flag(flag):
         import pdb
         pdb.set_trace()
 
+
 # Copied from h2defs.py
 _upperstr_pat1 = re.compile(r'([^A-Z])([A-Z])')
 _upperstr_pat2 = re.compile(r'([A-Z][A-Z])([A-Z][0-9a-z])')
@@ -238,6 +239,9 @@ def makedirs(name, mode=0o777, exist_ok=False):
             # be happy if someone already created the path
             if e.errno != errno.EEXIST:
                 raise
+        cdir = os.path.curdir
+        if isinstance(tail, bytes):
+            cdir = os.path.curdir.encode("ascii")
         if tail == cdir:           # xxx/newdir/. exists if xxx/newdir exists
             return
     try:
@@ -260,7 +264,7 @@ def get_user_cache_dir(dir=None):
             xdg_cache_home = os.path.join(xdg_cache_home, dir)
         try:
             makedirs(xdg_cache_home, mode=0o755, exist_ok=True)
-        except:
+        except EnvironmentError:
             # Let's fall back to ~/.cache below
             pass
         else:
@@ -273,7 +277,7 @@ def get_user_cache_dir(dir=None):
             cachedir = os.path.join(cachedir, dir)
         try:
             makedirs(cachedir, mode=0o755, exist_ok=True)
-        except:
+        except EnvironmentError:
             return None
         else:
             return cachedir
index a65fc40..099f9e1 100755 (executable)
@@ -24,7 +24,6 @@ from __future__ import division
 from __future__ import print_function
 from __future__ import unicode_literals
 
-import os
 import sys
 
 from contextlib import contextmanager
index 1adf41d..91f4ef5 100644 (file)
@@ -21,4 +21,4 @@ Libs.private:
 
 Name: gobject-introspection
 Description: GObject Introspection
-Version: 1.57.2
+Version: 1.58.0
index 653ca96..179b8b9 100644 (file)
@@ -20,4 +20,4 @@ Libs.private:
 
 Name: gobject-introspection
 Description: GObject Introspection
-Version: 1.57.2
+Version: 1.58.0
index 1a4761f..7ec9532 100644 (file)
@@ -1,5 +1,5 @@
 project('gobject-introspection', 'c',
-  version: '1.57.2',
+  version: '1.58.0',
   meson_version: '>= 0.46.0',
   default_options: [
     'warning_level=1',
@@ -50,7 +50,7 @@ configure_file(
 
 # FIXME: Always bumped to match our version
 #glib_version = '>=2.@0@.@1@'.format(gi_versions[1], gi_versions[2])
-glib_version = '>= 2.57.2'
+glib_version = '>= 2.58.0'
 
 glib_dep = dependency('glib-2.0', version : glib_version,
   fallback: ['glib', 'libglib_dep'])
diff --git a/misc/pep8.py b/misc/pep8.py
deleted file mode 100644 (file)
index d7907e5..0000000
+++ /dev/null
@@ -1,2120 +0,0 @@
-#!/usr/bin/env python
-# pep8.py - Check Python source code formatting, according to PEP 8
-# Copyright (C) 2006-2009 Johann C. Rocholl <johann@rocholl.net>
-# Copyright (C) 2009-2014 Florent Xicluna <florent.xicluna@gmail.com>
-# Copyright (C) 2014 Ian Lee <ianlee1521@gmail.com>
-#
-# Permission is hereby granted, free of charge, to any person
-# obtaining a copy of this software and associated documentation files
-# (the "Software"), to deal in the Software without restriction,
-# including without limitation the rights to use, copy, modify, merge,
-# publish, distribute, sublicense, and/or sell copies of the Software,
-# and to permit persons to whom the Software is furnished to do so,
-# subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be
-# included in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
-# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-r"""
-Check Python source code formatting, according to PEP 8.
-
-For usage and a list of options, try this:
-$ python pep8.py -h
-
-This program and its regression test suite live here:
-http://github.com/jcrocholl/pep8
-
-Groups of errors and warnings:
-E errors
-W warnings
-100 indentation
-200 whitespace
-300 blank lines
-400 imports
-500 line length
-600 deprecation
-700 statements
-900 syntax error
-"""
-from __future__ import with_statement
-
-import os
-import sys
-import re
-import time
-import inspect
-import keyword
-import tokenize
-from optparse import OptionParser
-from fnmatch import fnmatch
-try:
-    from configparser import RawConfigParser
-    from io import TextIOWrapper
-except ImportError:
-    from ConfigParser import RawConfigParser
-
-__version__ = '1.6.2'
-
-DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__,.tox'
-DEFAULT_IGNORE = 'E121,E123,E126,E226,E24,E704'
-try:
-    if sys.platform == 'win32':
-        USER_CONFIG = os.path.expanduser(r'~\.pep8')
-    else:
-        USER_CONFIG = os.path.join(
-            os.getenv('XDG_CONFIG_HOME') or os.path.expanduser('~/.config'),
-            'pep8'
-        )
-except ImportError:
-    USER_CONFIG = None
-
-PROJECT_CONFIG = ('setup.cfg', 'tox.ini', '.pep8')
-TESTSUITE_PATH = os.path.join(os.path.dirname(__file__), 'testsuite')
-MAX_LINE_LENGTH = 79
-REPORT_FORMAT = {
-    'default': '%(path)s:%(row)d:%(col)d: %(code)s %(text)s',
-    'pylint': '%(path)s:%(row)d: [%(code)s] %(text)s',
-}
-
-PyCF_ONLY_AST = 1024
-SINGLETONS = frozenset(['False', 'None', 'True'])
-KEYWORDS = frozenset(keyword.kwlist + ['print']) - SINGLETONS
-UNARY_OPERATORS = frozenset(['>>', '**', '*', '+', '-'])
-ARITHMETIC_OP = frozenset(['**', '*', '/', '//', '+', '-'])
-WS_OPTIONAL_OPERATORS = ARITHMETIC_OP.union(['^', '&', '|', '<<', '>>', '%'])
-WS_NEEDED_OPERATORS = frozenset([
-    '**=', '*=', '/=', '//=', '+=', '-=', '!=', '<>', '<', '>',
-    '%=', '^=', '&=', '|=', '==', '<=', '>=', '<<=', '>>=', '='])
-WHITESPACE = frozenset(' \t')
-NEWLINE = frozenset([tokenize.NL, tokenize.NEWLINE])
-SKIP_TOKENS = NEWLINE.union([tokenize.INDENT, tokenize.DEDENT])
-# ERRORTOKEN is triggered by backticks in Python 3
-SKIP_COMMENTS = SKIP_TOKENS.union([tokenize.COMMENT, tokenize.ERRORTOKEN])
-BENCHMARK_KEYS = ['directories', 'files', 'logical lines', 'physical lines']
-
-INDENT_REGEX = re.compile(r'([ \t]*)')
-RAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*,')
-RERAISE_COMMA_REGEX = re.compile(r'raise\s+\w+\s*,.*,\s*\w+\s*$')
-ERRORCODE_REGEX = re.compile(r'\b[A-Z]\d{3}\b')
-DOCSTRING_REGEX = re.compile(r'u?r?["\']')
-EXTRANEOUS_WHITESPACE_REGEX = re.compile(r'[[({] | []}),;:]')
-WHITESPACE_AFTER_COMMA_REGEX = re.compile(r'[,;:]\s*(?:  |\t)')
-COMPARE_SINGLETON_REGEX = re.compile(r'\b(None|False|True)?\s*([=!]=)'
-                                     r'\s*(?(1)|(None|False|True))\b')
-COMPARE_NEGATIVE_REGEX = re.compile(r'\b(not)\s+[^][)(}{ ]+\s+(in|is)\s')
-COMPARE_TYPE_REGEX = re.compile(r'(?:[=!]=|is(?:\s+not)?)\s*type(?:s.\w+Type'
-                                r'|\s*\(\s*([^)]*[^ )])\s*\))')
-KEYWORD_REGEX = re.compile(r'(\s*)\b(?:%s)\b(\s*)' % r'|'.join(KEYWORDS))
-OPERATOR_REGEX = re.compile(r'(?:[^,\s])(\s*)(?:[-+*/|!<=>%&^]+)(\s*)')
-LAMBDA_REGEX = re.compile(r'\blambda\b')
-HUNK_REGEX = re.compile(r'^@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@.*$')
-
-# Work around Python < 2.6 behaviour, which does not generate NL after
-# a comment which is on a line by itself.
-COMMENT_WITH_NL = tokenize.generate_tokens(['#\n'].pop).send(None)[1] == '#\n'
-
-
-##############################################################################
-# Plugins (check functions) for physical lines
-##############################################################################
-
-
-def tabs_or_spaces(physical_line, indent_char):
-    r"""Never mix tabs and spaces.
-
-    The most popular way of indenting Python is with spaces only.  The
-    second-most popular way is with tabs only.  Code indented with a mixture
-    of tabs and spaces should be converted to using spaces exclusively.  When
-    invoking the Python command line interpreter with the -t option, it issues
-    warnings about code that illegally mixes tabs and spaces.  When using -tt
-    these warnings become errors.  These options are highly recommended!
-
-    Okay: if a == 0:\n        a = 1\n        b = 1
-    E101: if a == 0:\n        a = 1\n\tb = 1
-    """
-    indent = INDENT_REGEX.match(physical_line).group(1)
-    for offset, char in enumerate(indent):
-        if char != indent_char:
-            return offset, "E101 indentation contains mixed spaces and tabs"
-
-
-def tabs_obsolete(physical_line):
-    r"""For new projects, spaces-only are strongly recommended over tabs.
-
-    Okay: if True:\n    return
-    W191: if True:\n\treturn
-    """
-    indent = INDENT_REGEX.match(physical_line).group(1)
-    if '\t' in indent:
-        return indent.index('\t'), "W191 indentation contains tabs"
-
-
-def trailing_whitespace(physical_line):
-    r"""Trailing whitespace is superfluous.
-
-    The warning returned varies on whether the line itself is blank, for easier
-    filtering for those who want to indent their blank lines.
-
-    Okay: spam(1)\n#
-    W291: spam(1) \n#
-    W293: class Foo(object):\n    \n    bang = 12
-    """
-    physical_line = physical_line.rstrip('\n')    # chr(10), newline
-    physical_line = physical_line.rstrip('\r')    # chr(13), carriage return
-    physical_line = physical_line.rstrip('\x0c')  # chr(12), form feed, ^L
-    stripped = physical_line.rstrip(' \t\v')
-    if physical_line != stripped:
-        if stripped:
-            return len(stripped), "W291 trailing whitespace"
-        else:
-            return 0, "W293 blank line contains whitespace"
-
-
-def trailing_blank_lines(physical_line, lines, line_number, total_lines):
-    r"""Trailing blank lines are superfluous.
-
-    Okay: spam(1)
-    W391: spam(1)\n
-
-    However the last line should end with a new line (warning W292).
-    """
-    if line_number == total_lines:
-        stripped_last_line = physical_line.rstrip()
-        if not stripped_last_line:
-            return 0, "W391 blank line at end of file"
-        if stripped_last_line == physical_line:
-            return len(physical_line), "W292 no newline at end of file"
-
-
-def maximum_line_length(physical_line, max_line_length, multiline):
-    r"""Limit all lines to a maximum of 79 characters.
-
-    There are still many devices around that are limited to 80 character
-    lines; plus, limiting windows to 80 characters makes it possible to have
-    several windows side-by-side.  The default wrapping on such devices looks
-    ugly.  Therefore, please limit all lines to a maximum of 79 characters.
-    For flowing long blocks of text (docstrings or comments), limiting the
-    length to 72 characters is recommended.
-
-    Reports error E501.
-    """
-    line = physical_line.rstrip()
-    length = len(line)
-    if length > max_line_length and not noqa(line):
-        # Special case for long URLs in multi-line docstrings or comments,
-        # but still report the error when the 72 first chars are whitespaces.
-        chunks = line.split()
-        if ((len(chunks) == 1 and multiline) or
-            (len(chunks) == 2 and chunks[0] == '#')) and \
-                len(line) - len(chunks[-1]) < max_line_length - 7:
-            return
-        if hasattr(line, 'decode'):   # Python 2
-            # The line could contain multi-byte characters
-            try:
-                length = len(line.decode('utf-8'))
-            except UnicodeError:
-                pass
-        if length > max_line_length:
-            return (max_line_length, "E501 line too long "
-                    "(%d > %d characters)" % (length, max_line_length))
-
-
-##############################################################################
-# Plugins (check functions) for logical lines
-##############################################################################
-
-
-def blank_lines(logical_line, blank_lines, indent_level, line_number,
-                blank_before, previous_logical, previous_indent_level):
-    r"""Separate top-level function and class definitions with two blank lines.
-
-    Method definitions inside a class are separated by a single blank line.
-
-    Extra blank lines may be used (sparingly) to separate groups of related
-    functions.  Blank lines may be omitted between a bunch of related
-    one-liners (e.g. a set of dummy implementations).
-
-    Use blank lines in functions, sparingly, to indicate logical sections.
-
-    Okay: def a():\n    pass\n\n\ndef b():\n    pass
-    Okay: def a():\n    pass\n\n\n# Foo\n# Bar\n\ndef b():\n    pass
-
-    E301: class Foo:\n    b = 0\n    def bar():\n        pass
-    E302: def a():\n    pass\n\ndef b(n):\n    pass
-    E303: def a():\n    pass\n\n\n\ndef b(n):\n    pass
-    E303: def a():\n\n\n\n    pass
-    E304: @decorator\n\ndef a():\n    pass
-    """
-    if line_number < 3 and not previous_logical:
-        return  # Don't expect blank lines before the first line
-    if previous_logical.startswith('@'):
-        if blank_lines:
-            yield 0, "E304 blank lines found after function decorator"
-    elif blank_lines > 2 or (indent_level and blank_lines == 2):
-        yield 0, "E303 too many blank lines (%d)" % blank_lines
-    elif logical_line.startswith(('def ', 'class ', '@')):
-        if indent_level:
-            if not (blank_before or previous_indent_level < indent_level or
-                    DOCSTRING_REGEX.match(previous_logical)):
-                yield 0, "E301 expected 1 blank line, found 0"
-        elif blank_before != 2:
-            yield 0, "E302 expected 2 blank lines, found %d" % blank_before
-
-
-def extraneous_whitespace(logical_line):
-    r"""Avoid extraneous whitespace.
-
-    Avoid extraneous whitespace in these situations:
-    - Immediately inside parentheses, brackets or braces.
-    - Immediately before a comma, semicolon, or colon.
-
-    Okay: spam(ham[1], {eggs: 2})
-    E201: spam( ham[1], {eggs: 2})
-    E201: spam(ham[ 1], {eggs: 2})
-    E201: spam(ham[1], { eggs: 2})
-    E202: spam(ham[1], {eggs: 2} )
-    E202: spam(ham[1 ], {eggs: 2})
-    E202: spam(ham[1], {eggs: 2 })
-
-    E203: if x == 4: print x, y; x, y = y , x
-    E203: if x == 4: print x, y ; x, y = y, x
-    E203: if x == 4 : print x, y; x, y = y, x
-    """
-    line = logical_line
-    for match in EXTRANEOUS_WHITESPACE_REGEX.finditer(line):
-        text = match.group()
-        char = text.strip()
-        found = match.start()
-        if text == char + ' ':
-            # assert char in '([{'
-            yield found + 1, "E201 whitespace after '%s'" % char
-        elif line[found - 1] != ',':
-            code = ('E202' if char in '}])' else 'E203')  # if char in ',;:'
-            yield found, "%s whitespace before '%s'" % (code, char)
-
-
-def whitespace_around_keywords(logical_line):
-    r"""Avoid extraneous whitespace around keywords.
-
-    Okay: True and False
-    E271: True and  False
-    E272: True  and False
-    E273: True and\tFalse
-    E274: True\tand False
-    """
-    for match in KEYWORD_REGEX.finditer(logical_line):
-        before, after = match.groups()
-
-        if '\t' in before:
-            yield match.start(1), "E274 tab before keyword"
-        elif len(before) > 1:
-            yield match.start(1), "E272 multiple spaces before keyword"
-
-        if '\t' in after:
-            yield match.start(2), "E273 tab after keyword"
-        elif len(after) > 1:
-            yield match.start(2), "E271 multiple spaces after keyword"
-
-
-def missing_whitespace(logical_line):
-    r"""Each comma, semicolon or colon should be followed by whitespace.
-
-    Okay: [a, b]
-    Okay: (3,)
-    Okay: a[1:4]
-    Okay: a[:4]
-    Okay: a[1:]
-    Okay: a[1:4:2]
-    E231: ['a','b']
-    E231: foo(bar,baz)
-    E231: [{'a':'b'}]
-    """
-    line = logical_line
-    for index in range(len(line) - 1):
-        char = line[index]
-        if char in ',;:' and line[index + 1] not in WHITESPACE:
-            before = line[:index]
-            if char == ':' and before.count('[') > before.count(']') and \
-                    before.rfind('{') < before.rfind('['):
-                continue  # Slice syntax, no space required
-            if char == ',' and line[index + 1] == ')':
-                continue  # Allow tuple with only one element: (3,)
-            yield index, "E231 missing whitespace after '%s'" % char
-
-
-def indentation(logical_line, previous_logical, indent_char,
-                indent_level, previous_indent_level):
-    r"""Use 4 spaces per indentation level.
-
-    For really old code that you don't want to mess up, you can continue to
-    use 8-space tabs.
-
-    Okay: a = 1
-    Okay: if a == 0:\n    a = 1
-    E111:   a = 1
-    E114:   # a = 1
-
-    Okay: for item in items:\n    pass
-    E112: for item in items:\npass
-    E115: for item in items:\n# Hi\n    pass
-
-    Okay: a = 1\nb = 2
-    E113: a = 1\n    b = 2
-    E116: a = 1\n    # b = 2
-    """
-    c = 0 if logical_line else 3
-    tmpl = "E11%d %s" if logical_line else "E11%d %s (comment)"
-    if indent_level % 4:
-        yield 0, tmpl % (1 + c, "indentation is not a multiple of four")
-    indent_expect = previous_logical.endswith(':')
-    if indent_expect and indent_level <= previous_indent_level:
-        yield 0, tmpl % (2 + c, "expected an indented block")
-    elif not indent_expect and indent_level > previous_indent_level:
-        yield 0, tmpl % (3 + c, "unexpected indentation")
-
-
-def continued_indentation(logical_line, tokens, indent_level, hang_closing,
-                          indent_char, noqa, verbose):
-    r"""Continuation lines indentation.
-
-    Continuation lines should align wrapped elements either vertically
-    using Python's implicit line joining inside parentheses, brackets
-    and braces, or using a hanging indent.
-
-    When using a hanging indent these considerations should be applied:
-    - there should be no arguments on the first line, and
-    - further indentation should be used to clearly distinguish itself as a
-      continuation line.
-
-    Okay: a = (\n)
-    E123: a = (\n    )
-
-    Okay: a = (\n    42)
-    E121: a = (\n   42)
-    E122: a = (\n42)
-    E123: a = (\n    42\n    )
-    E124: a = (24,\n     42\n)
-    E125: if (\n    b):\n    pass
-    E126: a = (\n        42)
-    E127: a = (24,\n      42)
-    E128: a = (24,\n    42)
-    E129: if (a or\n    b):\n    pass
-    E131: a = (\n    42\n 24)
-    """
-    first_row = tokens[0][2][0]
-    nrows = 1 + tokens[-1][2][0] - first_row
-    if noqa or nrows == 1:
-        return
-
-    # indent_next tells us whether the next block is indented; assuming
-    # that it is indented by 4 spaces, then we should not allow 4-space
-    # indents on the final continuation line; in turn, some other
-    # indents are allowed to have an extra 4 spaces.
-    indent_next = logical_line.endswith(':')
-
-    row = depth = 0
-    valid_hangs = (4,) if indent_char != '\t' else (4, 8)
-    # remember how many brackets were opened on each line
-    parens = [0] * nrows
-    # relative indents of physical lines
-    rel_indent = [0] * nrows
-    # for each depth, collect a list of opening rows
-    open_rows = [[0]]
-    # for each depth, memorize the hanging indentation
-    hangs = [None]
-    # visual indents
-    indent_chances = {}
-    last_indent = tokens[0][2]
-    visual_indent = None
-    last_token_multiline = False
-    # for each depth, memorize the visual indent column
-    indent = [last_indent[1]]
-    if verbose >= 3:
-        print(">>> " + tokens[0][4].rstrip())
-
-    for token_type, text, start, end, line in tokens:
-
-        newline = row < start[0] - first_row
-        if newline:
-            row = start[0] - first_row
-            newline = not last_token_multiline and token_type not in NEWLINE
-
-        if newline:
-            # this is the beginning of a continuation line.
-            last_indent = start
-            if verbose >= 3:
-                print("... " + line.rstrip())
-
-            # record the initial indent.
-            rel_indent[row] = expand_indent(line) - indent_level
-
-            # identify closing bracket
-            close_bracket = (token_type == tokenize.OP and text in ']})')
-
-            # is the indent relative to an opening bracket line?
-            for open_row in reversed(open_rows[depth]):
-                hang = rel_indent[row] - rel_indent[open_row]
-                hanging_indent = hang in valid_hangs
-                if hanging_indent:
-                    break
-            if hangs[depth]:
-                hanging_indent = (hang == hangs[depth])
-            # is there any chance of visual indent?
-            visual_indent = (not close_bracket and hang > 0 and
-                             indent_chances.get(start[1]))
-
-            if close_bracket and indent[depth]:
-                # closing bracket for visual indent
-                if start[1] != indent[depth]:
-                    yield (start, "E124 closing bracket does not match "
-                           "visual indentation")
-            elif close_bracket and not hang:
-                # closing bracket matches indentation of opening bracket's line
-                if hang_closing:
-                    yield start, "E133 closing bracket is missing indentation"
-            elif indent[depth] and start[1] < indent[depth]:
-                if visual_indent is not True:
-                    # visual indent is broken
-                    yield (start, "E128 continuation line "
-                           "under-indented for visual indent")
-            elif hanging_indent or (indent_next and rel_indent[row] == 8):
-                # hanging indent is verified
-                if close_bracket and not hang_closing:
-                    yield (start, "E123 closing bracket does not match "
-                           "indentation of opening bracket's line")
-                hangs[depth] = hang
-            elif visual_indent is True:
-                # visual indent is verified
-                indent[depth] = start[1]
-            elif visual_indent in (text, str):
-                # ignore token lined up with matching one from a previous line
-                pass
-            else:
-                # indent is broken
-                if hang <= 0:
-                    error = "E122", "missing indentation or outdented"
-                elif indent[depth]:
-                    error = "E127", "over-indented for visual indent"
-                elif not close_bracket and hangs[depth]:
-                    error = "E131", "unaligned for hanging indent"
-                else:
-                    hangs[depth] = hang
-                    if hang > 4:
-                        error = "E126", "over-indented for hanging indent"
-                    else:
-                        error = "E121", "under-indented for hanging indent"
-                yield start, "%s continuation line %s" % error
-
-        # look for visual indenting
-        if (parens[row] and
-                token_type not in (tokenize.NL, tokenize.COMMENT) and
-                not indent[depth]):
-            indent[depth] = start[1]
-            indent_chances[start[1]] = True
-            if verbose >= 4:
-                print("bracket depth %s indent to %s" % (depth, start[1]))
-        # deal with implicit string concatenation
-        elif (token_type in (tokenize.STRING, tokenize.COMMENT) or
-              text in ('u', 'ur', 'b', 'br')):
-            indent_chances[start[1]] = str
-        # special case for the "if" statement because len("if (") == 4
-        elif not indent_chances and not row and not depth and text == 'if':
-            indent_chances[end[1] + 1] = True
-        elif text == ':' and line[end[1]:].isspace():
-            open_rows[depth].append(row)
-
-        # keep track of bracket depth
-        if token_type == tokenize.OP:
-            if text in '([{':
-                depth += 1
-                indent.append(0)
-                hangs.append(None)
-                if len(open_rows) == depth:
-                    open_rows.append([])
-                open_rows[depth].append(row)
-                parens[row] += 1
-                if verbose >= 4:
-                    print("bracket depth %s seen, col %s, visual min = %s" %
-                          (depth, start[1], indent[depth]))
-            elif text in ')]}' and depth > 0:
-                # parent indents should not be more than this one
-                prev_indent = indent.pop() or last_indent[1]
-                hangs.pop()
-                for d in range(depth):
-                    if indent[d] > prev_indent:
-                        indent[d] = 0
-                for ind in list(indent_chances):
-                    if ind >= prev_indent:
-                        del indent_chances[ind]
-                del open_rows[depth + 1:]
-                depth -= 1
-                if depth:
-                    indent_chances[indent[depth]] = True
-                for idx in range(row, -1, -1):
-                    if parens[idx]:
-                        parens[idx] -= 1
-                        break
-            assert len(indent) == depth + 1
-            if start[1] not in indent_chances:
-                # allow to line up tokens
-                indent_chances[start[1]] = text
-
-        last_token_multiline = (start[0] != end[0])
-        if last_token_multiline:
-            rel_indent[end[0] - first_row] = rel_indent[row]
-
-    if indent_next and expand_indent(line) == indent_level + 4:
-        pos = (start[0], indent[0] + 4)
-        if visual_indent:
-            code = "E129 visually indented line"
-        else:
-            code = "E125 continuation line"
-        yield pos, "%s with same indent as next logical line" % code
-
-
-def whitespace_before_parameters(logical_line, tokens):
-    r"""Avoid extraneous whitespace.
-
-    Avoid extraneous whitespace in the following situations:
-    - before the open parenthesis that starts the argument list of a
-      function call.
-    - before the open parenthesis that starts an indexing or slicing.
-
-    Okay: spam(1)
-    E211: spam (1)
-
-    Okay: dict['key'] = list[index]
-    E211: dict ['key'] = list[index]
-    E211: dict['key'] = list [index]
-    """
-    prev_type, prev_text, __, prev_end, __ = tokens[0]
-    for index in range(1, len(tokens)):
-        token_type, text, start, end, __ = tokens[index]
-        if (token_type == tokenize.OP and
-            text in '([' and
-            start != prev_end and
-            (prev_type == tokenize.NAME or prev_text in '}])') and
-            # Syntax "class A (B):" is allowed, but avoid it
-            (index < 2 or tokens[index - 2][1] != 'class') and
-                # Allow "return (a.foo for a in range(5))"
-                not keyword.iskeyword(prev_text)):
-            yield prev_end, "E211 whitespace before '%s'" % text
-        prev_type = token_type
-        prev_text = text
-        prev_end = end
-
-
-def whitespace_around_operator(logical_line):
-    r"""Avoid extraneous whitespace around an operator.
-
-    Okay: a = 12 + 3
-    E221: a = 4  + 5
-    E222: a = 4 +  5
-    E223: a = 4\t+ 5
-    E224: a = 4 +\t5
-    """
-    for match in OPERATOR_REGEX.finditer(logical_line):
-        before, after = match.groups()
-
-        if '\t' in before:
-            yield match.start(1), "E223 tab before operator"
-        elif len(before) > 1:
-            yield match.start(1), "E221 multiple spaces before operator"
-
-        if '\t' in after:
-            yield match.start(2), "E224 tab after operator"
-        elif len(after) > 1:
-            yield match.start(2), "E222 multiple spaces after operator"
-
-
-def missing_whitespace_around_operator(logical_line, tokens):
-    r"""Surround operators with a single space on either side.
-
-    - Always surround these binary operators with a single space on
-      either side: assignment (=), augmented assignment (+=, -= etc.),
-      comparisons (==, <, >, !=, <=, >=, in, not in, is, is not),
-      Booleans (and, or, not).
-
-    - If operators with different priorities are used, consider adding
-      whitespace around the operators with the lowest priorities.
-
-    Okay: i = i + 1
-    Okay: submitted += 1
-    Okay: x = x * 2 - 1
-    Okay: hypot2 = x * x + y * y
-    Okay: c = (a + b) * (a - b)
-    Okay: foo(bar, key='word', *args, **kwargs)
-    Okay: alpha[:-i]
-
-    E225: i=i+1
-    E225: submitted +=1
-    E225: x = x /2 - 1
-    E225: z = x **y
-    E226: c = (a+b) * (a-b)
-    E226: hypot2 = x*x + y*y
-    E227: c = a|b
-    E228: msg = fmt%(errno, errmsg)
-    """
-    parens = 0
-    need_space = False
-    prev_type = tokenize.OP
-    prev_text = prev_end = None
-    for token_type, text, start, end, line in tokens:
-        if token_type in SKIP_COMMENTS:
-            continue
-        if text in ('(', 'lambda'):
-            parens += 1
-        elif text == ')':
-            parens -= 1
-        if need_space:
-            if start != prev_end:
-                # Found a (probably) needed space
-                if need_space is not True and not need_space[1]:
-                    yield (need_space[0],
-                           "E225 missing whitespace around operator")
-                need_space = False
-            elif text == '>' and prev_text in ('<', '-'):
-                # Tolerate the "<>" operator, even if running Python 3
-                # Deal with Python 3's annotated return value "->"
-                pass
-            else:
-                if need_space is True or need_space[1]:
-                    # A needed trailing space was not found
-                    yield prev_end, "E225 missing whitespace around operator"
-                elif prev_text != '**':
-                    code, optype = 'E226', 'arithmetic'
-                    if prev_text == '%':
-                        code, optype = 'E228', 'modulo'
-                    elif prev_text not in ARITHMETIC_OP:
-                        code, optype = 'E227', 'bitwise or shift'
-                    yield (need_space[0], "%s missing whitespace "
-                           "around %s operator" % (code, optype))
-                need_space = False
-        elif token_type == tokenize.OP and prev_end is not None:
-            if text == '=' and parens:
-                # Allow keyword args or defaults: foo(bar=None).
-                pass
-            elif text in WS_NEEDED_OPERATORS:
-                need_space = True
-            elif text in UNARY_OPERATORS:
-                # Check if the operator is being used as a binary operator
-                # Allow unary operators: -123, -x, +1.
-                # Allow argument unpacking: foo(*args, **kwargs).
-                if (prev_text in '}])' if prev_type == tokenize.OP
-                        else prev_text not in KEYWORDS):
-                    need_space = None
-            elif text in WS_OPTIONAL_OPERATORS:
-                need_space = None
-
-            if need_space is None:
-                # Surrounding space is optional, but ensure that
-                # trailing space matches opening space
-                need_space = (prev_end, start != prev_end)
-            elif need_space and start == prev_end:
-                # A needed opening space was not found
-                yield prev_end, "E225 missing whitespace around operator"
-                need_space = False
-        prev_type = token_type
-        prev_text = text
-        prev_end = end
-
-
-def whitespace_around_comma(logical_line):
-    r"""Avoid extraneous whitespace after a comma or a colon.
-
-    Note: these checks are disabled by default
-
-    Okay: a = (1, 2)
-    E241: a = (1,  2)
-    E242: a = (1,\t2)
-    """
-    line = logical_line
-    for m in WHITESPACE_AFTER_COMMA_REGEX.finditer(line):
-        found = m.start() + 1
-        if '\t' in m.group():
-            yield found, "E242 tab after '%s'" % m.group()[0]
-        else:
-            yield found, "E241 multiple spaces after '%s'" % m.group()[0]
-
-
-def whitespace_around_named_parameter_equals(logical_line, tokens):
-    r"""Don't use spaces around the '=' sign in function arguments.
-
-    Don't use spaces around the '=' sign when used to indicate a
-    keyword argument or a default parameter value.
-
-    Okay: def complex(real, imag=0.0):
-    Okay: return magic(r=real, i=imag)
-    Okay: boolean(a == b)
-    Okay: boolean(a != b)
-    Okay: boolean(a <= b)
-    Okay: boolean(a >= b)
-    Okay: def foo(arg: int = 42):
-
-    E251: def complex(real, imag = 0.0):
-    E251: return magic(r = real, i = imag)
-    """
-    parens = 0
-    no_space = False
-    prev_end = None
-    annotated_func_arg = False
-    in_def = logical_line.startswith('def')
-    message = "E251 unexpected spaces around keyword / parameter equals"
-    for token_type, text, start, end, line in tokens:
-        if token_type == tokenize.NL:
-            continue
-        if no_space:
-            no_space = False
-            if start != prev_end:
-                yield (prev_end, message)
-        if token_type == tokenize.OP:
-            if text == '(':
-                parens += 1
-            elif text == ')':
-                parens -= 1
-            elif in_def and text == ':' and parens == 1:
-                annotated_func_arg = True
-            elif parens and text == ',' and parens == 1:
-                annotated_func_arg = False
-            elif parens and text == '=' and not annotated_func_arg:
-                no_space = True
-                if start != prev_end:
-                    yield (prev_end, message)
-            if not parens:
-                annotated_func_arg = False
-
-        prev_end = end
-
-
-def whitespace_before_comment(logical_line, tokens):
-    r"""Separate inline comments by at least two spaces.
-
-    An inline comment is a comment on the same line as a statement.  Inline
-    comments should be separated by at least two spaces from the statement.
-    They should start with a # and a single space.
-
-    Each line of a block comment starts with a # and a single space
-    (unless it is indented text inside the comment).
-
-    Okay: x = x + 1  # Increment x
-    Okay: x = x + 1    # Increment x
-    Okay: # Block comment
-    E261: x = x + 1 # Increment x
-    E262: x = x + 1  #Increment x
-    E262: x = x + 1  #  Increment x
-    E265: #Block comment
-    E266: ### Block comment
-    """
-    prev_end = (0, 0)
-    for token_type, text, start, end, line in tokens:
-        if token_type == tokenize.COMMENT:
-            inline_comment = line[:start[1]].strip()
-            if inline_comment:
-                if prev_end[0] == start[0] and start[1] < prev_end[1] + 2:
-                    yield (prev_end,
-                           "E261 at least two spaces before inline comment")
-            symbol, sp, comment = text.partition(' ')
-            bad_prefix = symbol not in '#:' and (symbol.lstrip('#')[:1] or '#')
-            if inline_comment:
-                if bad_prefix or comment[:1] in WHITESPACE:
-                    yield start, "E262 inline comment should start with '# '"
-            elif bad_prefix and (bad_prefix != '!' or start[0] > 1):
-                if bad_prefix != '#':
-                    yield start, "E265 block comment should start with '# '"
-                elif comment:
-                    yield start, "E266 too many leading '#' for block comment"
-        elif token_type != tokenize.NL:
-            prev_end = end
-
-
-def imports_on_separate_lines(logical_line):
-    r"""Imports should usually be on separate lines.
-
-    Okay: import os\nimport sys
-    E401: import sys, os
-
-    Okay: from subprocess import Popen, PIPE
-    Okay: from myclas import MyClass
-    Okay: from foo.bar.yourclass import YourClass
-    Okay: import myclass
-    Okay: import foo.bar.yourclass
-    """
-    line = logical_line
-    if line.startswith('import '):
-        found = line.find(',')
-        if -1 < found and ';' not in line[:found]:
-            yield found, "E401 multiple imports on one line"
-
-
-def module_imports_on_top_of_file(
-        logical_line, indent_level, checker_state, noqa):
-    r"""Imports are always put at the top of the file, just after any module
-    comments and docstrings, and before module globals and constants.
-
-    Okay: import os
-    Okay: # this is a comment\nimport os
-    Okay: '''this is a module docstring'''\nimport os
-    Okay: r'''this is a module docstring'''\nimport os
-    Okay: try:\n    import x\nexcept:\n    pass\nelse:\n    pass\nimport y
-    Okay: try:\n    import x\nexcept:\n    pass\nfinally:\n    pass\nimport y
-    E402: a=1\nimport os
-    E402: 'One string'\n"Two string"\nimport os
-    E402: a=1\nfrom sys import x
-
-    Okay: if x:\n    import os
-    """
-    def is_string_literal(line):
-        if line[0] in 'uUbB':
-            line = line[1:]
-        if line and line[0] in 'rR':
-            line = line[1:]
-        return line and (line[0] == '"' or line[0] == "'")
-
-    allowed_try_keywords = ('try', 'except', 'else', 'finally')
-
-    if indent_level:  # Allow imports in conditional statements or functions
-        return
-    if not logical_line:  # Allow empty lines or comments
-        return
-    if noqa:
-        return
-    line = logical_line
-    if line.startswith('import ') or line.startswith('from '):
-        if checker_state.get('seen_non_imports', False):
-            yield 0, "E402 module level import not at top of file"
-    elif any(line.startswith(kw) for kw in allowed_try_keywords):
-        # Allow try, except, else, finally keywords intermixed with imports in
-        # order to support conditional importing
-        return
-    elif is_string_literal(line):
-        # The first literal is a docstring, allow it. Otherwise, report error.
-        if checker_state.get('seen_docstring', False):
-            checker_state['seen_non_imports'] = True
-        else:
-            checker_state['seen_docstring'] = True
-    else:
-        checker_state['seen_non_imports'] = True
-
-
-def compound_statements(logical_line):
-    r"""Compound statements (on the same line) are generally discouraged.
-
-    While sometimes it's okay to put an if/for/while with a small body
-    on the same line, never do this for multi-clause statements.
-    Also avoid folding such long lines!
-
-    Always use a def statement instead of an assignment statement that
-    binds a lambda expression directly to a name.
-
-    Okay: if foo == 'blah':\n    do_blah_thing()
-    Okay: do_one()
-    Okay: do_two()
-    Okay: do_three()
-
-    E701: if foo == 'blah': do_blah_thing()
-    E701: for x in lst: total += x
-    E701: while t < 10: t = delay()
-    E701: if foo == 'blah': do_blah_thing()
-    E701: else: do_non_blah_thing()
-    E701: try: something()
-    E701: finally: cleanup()
-    E701: if foo == 'blah': one(); two(); three()
-    E702: do_one(); do_two(); do_three()
-    E703: do_four();  # useless semicolon
-    E704: def f(x): return 2*x
-    E731: f = lambda x: 2*x
-    """
-    line = logical_line
-    last_char = len(line) - 1
-    found = line.find(':')
-    while -1 < found < last_char:
-        before = line[:found]
-        if ((before.count('{') <= before.count('}') and   # {'a': 1} (dict)
-             before.count('[') <= before.count(']') and   # [1:2] (slice)
-             before.count('(') <= before.count(')'))):    # (annotation)
-            lambda_kw = LAMBDA_REGEX.search(before)
-            if lambda_kw:
-                before = line[:lambda_kw.start()].rstrip()
-                if before[-1:] == '=' and isidentifier(before[:-1].strip()):
-                    yield 0, ("E731 do not assign a lambda expression, use a "
-                              "def")
-                break
-            if before.startswith('def '):
-                yield 0, "E704 multiple statements on one line (def)"
-            else:
-                yield found, "E701 multiple statements on one line (colon)"
-        found = line.find(':', found + 1)
-    found = line.find(';')
-    while -1 < found:
-        if found < last_char:
-            yield found, "E702 multiple statements on one line (semicolon)"
-        else:
-            yield found, "E703 statement ends with a semicolon"
-        found = line.find(';', found + 1)
-
-
-def explicit_line_join(logical_line, tokens):
-    r"""Avoid explicit line join between brackets.
-
-    The preferred way of wrapping long lines is by using Python's implied line
-    continuation inside parentheses, brackets and braces.  Long lines can be
-    broken over multiple lines by wrapping expressions in parentheses.  These
-    should be used in preference to using a backslash for line continuation.
-
-    E502: aaa = [123, \\n       123]
-    E502: aaa = ("bbb " \\n       "ccc")
-
-    Okay: aaa = [123,\n       123]
-    Okay: aaa = ("bbb "\n       "ccc")
-    Okay: aaa = "bbb " \\n    "ccc"
-    Okay: aaa = 123  # \\
-    """
-    prev_start = prev_end = parens = 0
-    comment = False
-    backslash = None
-    for token_type, text, start, end, line in tokens:
-        if token_type == tokenize.COMMENT:
-            comment = True
-        if start[0] != prev_start and parens and backslash and not comment:
-            yield backslash, "E502 the backslash is redundant between brackets"
-        if end[0] != prev_end:
-            if line.rstrip('\r\n').endswith('\\'):
-                backslash = (end[0], len(line.splitlines()[-1]) - 1)
-            else:
-                backslash = None
-            prev_start = prev_end = end[0]
-        else:
-            prev_start = start[0]
-        if token_type == tokenize.OP:
-            if text in '([{':
-                parens += 1
-            elif text in ')]}':
-                parens -= 1
-
-
-def break_around_binary_operator(logical_line, tokens):
-    r"""
-    Avoid breaks before binary operators.
-
-    The preferred place to break around a binary operator is after the
-    operator, not before it.
-
-    W503: (width == 0\n + height == 0)
-    W503: (width == 0\n and height == 0)
-
-    Okay: (width == 0 +\n height == 0)
-    Okay: foo(\n    -x)
-    Okay: foo(x\n    [])
-    Okay: x = '''\n''' + ''
-    Okay: foo(x,\n    -y)
-    Okay: foo(x,  # comment\n    -y)
-    """
-    def is_binary_operator(token_type, text):
-        # The % character is strictly speaking a binary operator, but the
-        # common usage seems to be to put it next to the format parameters,
-        # after a line break.
-        return ((token_type == tokenize.OP or text in ['and', 'or']) and
-                text not in "()[]{},:.;@=%")
-
-    line_break = False
-    unary_context = True
-    for token_type, text, start, end, line in tokens:
-        if token_type == tokenize.COMMENT:
-            continue
-        if ('\n' in text or '\r' in text) and token_type != tokenize.STRING:
-            line_break = True
-        else:
-            if (is_binary_operator(token_type, text) and line_break and
-                    not unary_context):
-                yield start, "W503 line break before binary operator"
-            unary_context = text in '([{,;'
-            line_break = False
-
-
-def comparison_to_singleton(logical_line, noqa):
-    r"""Comparison to singletons should use "is" or "is not".
-
-    Comparisons to singletons like None should always be done
-    with "is" or "is not", never the equality operators.
-
-    Okay: if arg is not None:
-    E711: if arg != None:
-    E711: if None == arg:
-    E712: if arg == True:
-    E712: if False == arg:
-
-    Also, beware of writing if x when you really mean if x is not None --
-    e.g. when testing whether a variable or argument that defaults to None was
-    set to some other value.  The other value might have a type (such as a
-    container) that could be false in a boolean context!
-    """
-    match = not noqa and COMPARE_SINGLETON_REGEX.search(logical_line)
-    if match:
-        singleton = match.group(1) or match.group(3)
-        same = (match.group(2) == '==')
-
-        msg = "'if cond is %s:'" % (('' if same else 'not ') + singleton)
-        if singleton in ('None',):
-            code = 'E711'
-        else:
-            code = 'E712'
-            nonzero = ((singleton == 'True' and same) or
-                       (singleton == 'False' and not same))
-            msg += " or 'if %scond:'" % ('' if nonzero else 'not ')
-        yield match.start(2), ("%s comparison to %s should be %s" %
-                               (code, singleton, msg))
-
-
-def comparison_negative(logical_line):
-    r"""Negative comparison should be done using "not in" and "is not".
-
-    Okay: if x not in y:\n    pass
-    Okay: assert (X in Y or X is Z)
-    Okay: if not (X in Y):\n    pass
-    Okay: zz = x is not y
-    E713: Z = not X in Y
-    E713: if not X.B in Y:\n    pass
-    E714: if not X is Y:\n    pass
-    E714: Z = not X.B is Y
-    """
-    match = COMPARE_NEGATIVE_REGEX.search(logical_line)
-    if match:
-        pos = match.start(1)
-        if match.group(2) == 'in':
-            yield pos, "E713 test for membership should be 'not in'"
-        else:
-            yield pos, "E714 test for object identity should be 'is not'"
-
-
-def comparison_type(logical_line, noqa):
-    r"""Object type comparisons should always use isinstance().
-
-    Do not compare types directly.
-
-    Okay: if isinstance(obj, int):
-    E721: if type(obj) is type(1):
-
-    When checking if an object is a string, keep in mind that it might be a
-    unicode string too! In Python 2.3, str and unicode have a common base
-    class, basestring, so you can do:
-
-    Okay: if isinstance(obj, basestring):
-    Okay: if type(a1) is type(b1):
-    """
-    match = COMPARE_TYPE_REGEX.search(logical_line)
-    if match and not noqa:
-        inst = match.group(1)
-        if inst and isidentifier(inst) and inst not in SINGLETONS:
-            return  # Allow comparison for types which are not obvious
-        yield match.start(), "E721 do not compare types, use 'isinstance()'"
-
-
-def python_3000_has_key(logical_line, noqa):
-    r"""The {}.has_key() method is removed in Python 3: use the 'in' operator.
-
-    Okay: if "alph" in d:\n    print d["alph"]
-    W601: assert d.has_key('alph')
-    """
-    pos = logical_line.find('.has_key(')
-    if pos > -1 and not noqa:
-        yield pos, "W601 .has_key() is deprecated, use 'in'"
-
-
-def python_3000_raise_comma(logical_line):
-    r"""When raising an exception, use "raise ValueError('message')".
-
-    The older form is removed in Python 3.
-
-    Okay: raise DummyError("Message")
-    W602: raise DummyError, "Message"
-    """
-    match = RAISE_COMMA_REGEX.match(logical_line)
-    if match and not RERAISE_COMMA_REGEX.match(logical_line):
-        yield match.end() - 1, "W602 deprecated form of raising exception"
-
-
-def python_3000_not_equal(logical_line):
-    r"""New code should always use != instead of <>.
-
-    The older syntax is removed in Python 3.
-
-    Okay: if a != 'no':
-    W603: if a <> 'no':
-    """
-    pos = logical_line.find('<>')
-    if pos > -1:
-        yield pos, "W603 '<>' is deprecated, use '!='"
-
-
-def python_3000_backticks(logical_line):
-    r"""Backticks are removed in Python 3: use repr() instead.
-
-    Okay: val = repr(1 + 2)
-    W604: val = `1 + 2`
-    """
-    pos = logical_line.find('`')
-    if pos > -1:
-        yield pos, "W604 backticks are deprecated, use 'repr()'"
-
-
-##############################################################################
-# Helper functions
-##############################################################################
-
-
-if '' == ''.encode():
-    # Python 2: implicit encoding.
-    def readlines(filename):
-        """Read the source code."""
-        with open(filename, 'rU') as f:
-            return f.readlines()
-    isidentifier = re.compile(r'[a-zA-Z_]\w*$').match
-    stdin_get_value = sys.stdin.read
-else:
-    # Python 3
-    def readlines(filename):
-        """Read the source code."""
-        try:
-            with open(filename, 'rb') as f:
-                (coding, lines) = tokenize.detect_encoding(f.readline)
-                f = TextIOWrapper(f, coding, line_buffering=True)
-                return [l.decode(coding) for l in lines] + f.readlines()
-        except (LookupError, SyntaxError, UnicodeError):
-            # Fall back if file encoding is improperly declared
-            with open(filename, encoding='latin-1') as f:
-                return f.readlines()
-    isidentifier = str.isidentifier
-
-    def stdin_get_value():
-        return TextIOWrapper(sys.stdin.buffer, errors='ignore').read()
-noqa = re.compile(r'# no(?:qa|pep8)\b', re.I).search
-
-
-def expand_indent(line):
-    r"""Return the amount of indentation.
-
-    Tabs are expanded to the next multiple of 8.
-
-    >>> expand_indent('    ')
-    4
-    >>> expand_indent('\t')
-    8
-    >>> expand_indent('       \t')
-    8
-    >>> expand_indent('        \t')
-    16
-    """
-    if '\t' not in line:
-        return len(line) - len(line.lstrip())
-    result = 0
-    for char in line:
-        if char == '\t':
-            result = result // 8 * 8 + 8
-        elif char == ' ':
-            result += 1
-        else:
-            break
-    return result
-
-
-def mute_string(text):
-    """Replace contents with 'xxx' to prevent syntax matching.
-
-    >>> mute_string('"abc"')
-    '"xxx"'
-    >>> mute_string("'''abc'''")
-    "'''xxx'''"
-    >>> mute_string("r'abc'")
-    "r'xxx'"
-    """
-    # String modifiers (e.g. u or r)
-    start = text.index(text[-1]) + 1
-    end = len(text) - 1
-    # Triple quotes
-    if text[-3:] in ('"""', "'''"):
-        start += 2
-        end -= 2
-    return text[:start] + 'x' * (end - start) + text[end:]
-
-
-def parse_udiff(diff, patterns=None, parent='.'):
-    """Return a dictionary of matching lines."""
-    # For each file of the diff, the entry key is the filename,
-    # and the value is a set of row numbers to consider.
-    rv = {}
-    path = nrows = None
-    for line in diff.splitlines():
-        if nrows:
-            if line[:1] != '-':
-                nrows -= 1
-            continue
-        if line[:3] == '@@ ':
-            hunk_match = HUNK_REGEX.match(line)
-            (row, nrows) = [int(g or '1') for g in hunk_match.groups()]
-            rv[path].update(range(row, row + nrows))
-        elif line[:3] == '+++':
-            path = line[4:].split('\t', 1)[0]
-            if path[:2] == 'b/':
-                path = path[2:]
-            rv[path] = set()
-    return dict([(os.path.join(parent, path), rows)
-                 for (path, rows) in rv.items()
-                 if rows and filename_match(path, patterns)])
-
-
-def normalize_paths(value, parent=os.curdir):
-    """Parse a comma-separated list of paths.
-
-    Return a list of absolute paths.
-    """
-    if not value:
-        return []
-    if isinstance(value, list):
-        return value
-    paths = []
-    for path in value.split(','):
-        path = path.strip()
-        if '/' in path:
-            path = os.path.abspath(os.path.join(parent, path))
-        paths.append(path.rstrip('/'))
-    return paths
-
-
-def filename_match(filename, patterns, default=True):
-    """Check if patterns contains a pattern that matches filename.
-
-    If patterns is unspecified, this always returns True.
-    """
-    if not patterns:
-        return default
-    return any(fnmatch(filename, pattern) for pattern in patterns)
-
-
-def _is_eol_token(token):
-    return token[0] in NEWLINE or token[4][token[3][1]:].lstrip() == '\\\n'
-if COMMENT_WITH_NL:
-    def _is_eol_token(token, _eol_token=_is_eol_token):
-        return _eol_token(token) or (token[0] == tokenize.COMMENT and
-                                     token[1] == token[4])
-
-##############################################################################
-# Framework to run all checks
-##############################################################################
-
-
-_checks = {'physical_line': {}, 'logical_line': {}, 'tree': {}}
-
-
-def register_check(check, codes=None):
-    """Register a new check object."""
-    def _add_check(check, kind, codes, args):
-        if check in _checks[kind]:
-            _checks[kind][check][0].extend(codes or [])
-        else:
-            _checks[kind][check] = (codes or [''], args)
-    if inspect.isfunction(check):
-        args = inspect.getargspec(check)[0]
-        if args and args[0] in ('physical_line', 'logical_line'):
-            if codes is None:
-                codes = ERRORCODE_REGEX.findall(check.__doc__ or '')
-            _add_check(check, args[0], codes, args)
-    elif inspect.isclass(check):
-        if inspect.getargspec(check.__init__)[0][:2] == ['self', 'tree']:
-            _add_check(check, 'tree', codes, None)
-
-
-def init_checks_registry():
-    """Register all globally visible functions.
-
-    The first argument name is either 'physical_line' or 'logical_line'.
-    """
-    mod = inspect.getmodule(register_check)
-    for (name, function) in inspect.getmembers(mod, inspect.isfunction):
-        register_check(function)
-init_checks_registry()
-
-
-class Checker(object):
-    """Load a Python source file, tokenize it, check coding style."""
-
-    def __init__(self, filename=None, lines=None,
-                 options=None, report=None, **kwargs):
-        if options is None:
-            options = StyleGuide(kwargs).options
-        else:
-            assert not kwargs
-        self._io_error = None
-        self._physical_checks = options.physical_checks
-        self._logical_checks = options.logical_checks
-        self._ast_checks = options.ast_checks
-        self.max_line_length = options.max_line_length
-        self.multiline = False  # in a multiline string?
-        self.hang_closing = options.hang_closing
-        self.verbose = options.verbose
-        self.filename = filename
-        # Dictionary where a checker can store its custom state.
-        self._checker_states = {}
-        if filename is None:
-            self.filename = 'stdin'
-            self.lines = lines or []
-        elif filename == '-':
-            self.filename = 'stdin'
-            self.lines = stdin_get_value().splitlines(True)
-        elif lines is None:
-            try:
-                self.lines = readlines(filename)
-            except IOError:
-                (exc_type, exc) = sys.exc_info()[:2]
-                self._io_error = '%s: %s' % (exc_type.__name__, exc)
-                self.lines = []
-        else:
-            self.lines = lines
-        if self.lines:
-            ord0 = ord(self.lines[0][0])
-            if ord0 in (0xef, 0xfeff):  # Strip the UTF-8 BOM
-                if ord0 == 0xfeff:
-                    self.lines[0] = self.lines[0][1:]
-                elif self.lines[0][:3] == '\xef\xbb\xbf':
-                    self.lines[0] = self.lines[0][3:]
-        self.report = report or options.report
-        self.report_error = self.report.error
-
-    def report_invalid_syntax(self):
-        """Check if the syntax is valid."""
-        (exc_type, exc) = sys.exc_info()[:2]
-        if len(exc.args) > 1:
-            offset = exc.args[1]
-            if len(offset) > 2:
-                offset = offset[1:3]
-        else:
-            offset = (1, 0)
-        self.report_error(offset[0], offset[1] or 0,
-                          'E901 %s: %s' % (exc_type.__name__, exc.args[0]),
-                          self.report_invalid_syntax)
-
-    def readline(self):
-        """Get the next line from the input buffer."""
-        if self.line_number >= self.total_lines:
-            return ''
-        line = self.lines[self.line_number]
-        self.line_number += 1
-        if self.indent_char is None and line[:1] in WHITESPACE:
-            self.indent_char = line[0]
-        return line
-
-    def run_check(self, check, argument_names):
-        """Run a check plugin."""
-        arguments = []
-        for name in argument_names:
-            arguments.append(getattr(self, name))
-        return check(*arguments)
-
-    def init_checker_state(self, name, argument_names):
-        """ Prepares a custom state for the specific checker plugin."""
-        if 'checker_state' in argument_names:
-            self.checker_state = self._checker_states.setdefault(name, {})
-
-    def check_physical(self, line):
-        """Run all physical checks on a raw input line."""
-        self.physical_line = line
-        for name, check, argument_names in self._physical_checks:
-            self.init_checker_state(name, argument_names)
-            result = self.run_check(check, argument_names)
-            if result is not None:
-                (offset, text) = result
-                self.report_error(self.line_number, offset, text, check)
-                if text[:4] == 'E101':
-                    self.indent_char = line[0]
-
-    def build_tokens_line(self):
-        """Build a logical line from tokens."""
-        logical = []
-        comments = []
-        length = 0
-        prev_row = prev_col = mapping = None
-        for token_type, text, start, end, line in self.tokens:
-            if token_type in SKIP_TOKENS:
-                continue
-            if not mapping:
-                mapping = [(0, start)]
-            if token_type == tokenize.COMMENT:
-                comments.append(text)
-                continue
-            if token_type == tokenize.STRING:
-                text = mute_string(text)
-            if prev_row:
-                (start_row, start_col) = start
-                if prev_row != start_row:    # different row
-                    prev_text = self.lines[prev_row - 1][prev_col - 1]
-                    if prev_text == ',' or (prev_text not in '{[(' and
-                                            text not in '}])'):
-                        text = ' ' + text
-                elif prev_col != start_col:  # different column
-                    text = line[prev_col:start_col] + text
-            logical.append(text)
-            length += len(text)
-            mapping.append((length, end))
-            (prev_row, prev_col) = end
-        self.logical_line = ''.join(logical)
-        self.noqa = comments and noqa(''.join(comments))
-        return mapping
-
-    def check_logical(self):
-        """Build a line from tokens and run all logical checks on it."""
-        self.report.increment_logical_line()
-        mapping = self.build_tokens_line()
-
-        if not mapping:
-            return
-
-        (start_row, start_col) = mapping[0][1]
-        start_line = self.lines[start_row - 1]
-        self.indent_level = expand_indent(start_line[:start_col])
-        if self.blank_before < self.blank_lines:
-            self.blank_before = self.blank_lines
-        if self.verbose >= 2:
-            print(self.logical_line[:80].rstrip())
-        for name, check, argument_names in self._logical_checks:
-            if self.verbose >= 4:
-                print('   ' + name)
-            self.init_checker_state(name, argument_names)
-            for offset, text in self.run_check(check, argument_names) or ():
-                if not isinstance(offset, tuple):
-                    for token_offset, pos in mapping:
-                        if offset <= token_offset:
-                            break
-                    offset = (pos[0], pos[1] + offset - token_offset)
-                self.report_error(offset[0], offset[1], text, check)
-        if self.logical_line:
-            self.previous_indent_level = self.indent_level
-            self.previous_logical = self.logical_line
-        self.blank_lines = 0
-        self.tokens = []
-
-    def check_ast(self):
-        """Build the file's AST and run all AST checks."""
-        try:
-            tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
-        except (SyntaxError, TypeError):
-            return self.report_invalid_syntax()
-        for name, cls, __ in self._ast_checks:
-            checker = cls(tree, self.filename)
-            for lineno, offset, text, check in checker.run():
-                if not self.lines or not noqa(self.lines[lineno - 1]):
-                    self.report_error(lineno, offset, text, check)
-
-    def generate_tokens(self):
-        """Tokenize the file, run physical line checks and yield tokens."""
-        if self._io_error:
-            self.report_error(1, 0, 'E902 %s' % self._io_error, readlines)
-        tokengen = tokenize.generate_tokens(self.readline)
-        try:
-            for token in tokengen:
-                if token[2][0] > self.total_lines:
-                    return
-                self.maybe_check_physical(token)
-                yield token
-        except (SyntaxError, tokenize.TokenError):
-            self.report_invalid_syntax()
-
-    def maybe_check_physical(self, token):
-        """If appropriate (based on token), check current physical line(s)."""
-        # Called after every token, but act only on end of line.
-        if _is_eol_token(token):
-            # Obviously, a newline token ends a single physical line.
-            self.check_physical(token[4])
-        elif token[0] == tokenize.STRING and '\n' in token[1]:
-            # Less obviously, a string that contains newlines is a
-            # multiline string, either triple-quoted or with internal
-            # newlines backslash-escaped. Check every physical line in the
-            # string *except* for the last one: its newline is outside of
-            # the multiline string, so we consider it a regular physical
-            # line, and will check it like any other physical line.
-            #
-            # Subtleties:
-            # - we don't *completely* ignore the last line; if it contains
-            #   the magical "# noqa" comment, we disable all physical
-            #   checks for the entire multiline string
-            # - have to wind self.line_number back because initially it
-            #   points to the last line of the string, and we want
-            #   check_physical() to give accurate feedback
-            if noqa(token[4]):
-                return
-            self.multiline = True
-            self.line_number = token[2][0]
-            for line in token[1].split('\n')[:-1]:
-                self.check_physical(line + '\n')
-                self.line_number += 1
-            self.multiline = False
-
-    def check_all(self, expected=None, line_offset=0):
-        """Run all checks on the input file."""
-        self.report.init_file(self.filename, self.lines, expected, line_offset)
-        self.total_lines = len(self.lines)
-        if self._ast_checks:
-            self.check_ast()
-        self.line_number = 0
-        self.indent_char = None
-        self.indent_level = self.previous_indent_level = 0
-        self.previous_logical = ''
-        self.tokens = []
-        self.blank_lines = self.blank_before = 0
-        parens = 0
-        for token in self.generate_tokens():
-            self.tokens.append(token)
-            token_type, text = token[0:2]
-            if self.verbose >= 3:
-                if token[2][0] == token[3][0]:
-                    pos = '[%s:%s]' % (token[2][1] or '', token[3][1])
-                else:
-                    pos = 'l.%s' % token[3][0]
-                print('l.%s\t%s\t%s\t%r' %
-                      (token[2][0], pos, tokenize.tok_name[token[0]], text))
-            if token_type == tokenize.OP:
-                if text in '([{':
-                    parens += 1
-                elif text in '}])':
-                    parens -= 1
-            elif not parens:
-                if token_type in NEWLINE:
-                    if token_type == tokenize.NEWLINE:
-                        self.check_logical()
-                        self.blank_before = 0
-                    elif len(self.tokens) == 1:
-                        # The physical line contains only this token.
-                        self.blank_lines += 1
-                        del self.tokens[0]
-                    else:
-                        self.check_logical()
-                elif COMMENT_WITH_NL and token_type == tokenize.COMMENT:
-                    if len(self.tokens) == 1:
-                        # The comment also ends a physical line
-                        token = list(token)
-                        token[1] = text.rstrip('\r\n')
-                        token[3] = (token[2][0], token[2][1] + len(token[1]))
-                        self.tokens = [tuple(token)]
-                        self.check_logical()
-        if self.tokens:
-            self.check_physical(self.lines[-1])
-            self.check_logical()
-        return self.report.get_file_results()
-
-
-class BaseReport(object):
-    """Collect the results of the checks."""
-
-    print_filename = False
-
-    def __init__(self, options):
-        self._benchmark_keys = options.benchmark_keys
-        self._ignore_code = options.ignore_code
-        # Results
-        self.elapsed = 0
-        self.total_errors = 0
-        self.counters = dict.fromkeys(self._benchmark_keys, 0)
-        self.messages = {}
-
-    def start(self):
-        """Start the timer."""
-        self._start_time = time.time()
-
-    def stop(self):
-        """Stop the timer."""
-        self.elapsed = time.time() - self._start_time
-
-    def init_file(self, filename, lines, expected, line_offset):
-        """Signal a new file."""
-        self.filename = filename
-        self.lines = lines
-        self.expected = expected or ()
-        self.line_offset = line_offset
-        self.file_errors = 0
-        self.counters['files'] += 1
-        self.counters['physical lines'] += len(lines)
-
-    def increment_logical_line(self):
-        """Signal a new logical line."""
-        self.counters['logical lines'] += 1
-
-    def error(self, line_number, offset, text, check):
-        """Report an error, according to options."""
-        code = text[:4]
-        if self._ignore_code(code):
-            return
-        if code in self.counters:
-            self.counters[code] += 1
-        else:
-            self.counters[code] = 1
-            self.messages[code] = text[5:]
-        # Don't care about expected errors or warnings
-        if code in self.expected:
-            return
-        if self.print_filename and not self.file_errors:
-            print(self.filename)
-        self.file_errors += 1
-        self.total_errors += 1
-        return code
-
-    def get_file_results(self):
-        """Return the count of errors and warnings for this file."""
-        return self.file_errors
-
-    def get_count(self, prefix=''):
-        """Return the total count of errors and warnings."""
-        return sum([self.counters[key]
-                    for key in self.messages if key.startswith(prefix)])
-
-    def get_statistics(self, prefix=''):
-        """Get statistics for message codes that start with the prefix.
-
-        prefix='' matches all errors and warnings
-        prefix='E' matches all errors
-        prefix='W' matches all warnings
-        prefix='E4' matches all errors that have to do with imports
-        """
-        return ['%-7s %s %s' % (self.counters[key], key, self.messages[key])
-                for key in sorted(self.messages) if key.startswith(prefix)]
-
-    def print_statistics(self, prefix=''):
-        """Print overall statistics (number of errors and warnings)."""
-        for line in self.get_statistics(prefix):
-            print(line)
-
-    def print_benchmark(self):
-        """Print benchmark numbers."""
-        print('%-7.2f %s' % (self.elapsed, 'seconds elapsed'))
-        if self.elapsed:
-            for key in self._benchmark_keys:
-                print('%-7d %s per second (%d total)' %
-                      (self.counters[key] / self.elapsed, key,
-                       self.counters[key]))
-
-
-class FileReport(BaseReport):
-    """Collect the results of the checks and print only the filenames."""
-    print_filename = True
-
-
-class StandardReport(BaseReport):
-    """Collect and print the results of the checks."""
-
-    def __init__(self, options):
-        super(StandardReport, self).__init__(options)
-        self._fmt = REPORT_FORMAT.get(options.format.lower(),
-                                      options.format)
-        self._repeat = options.repeat
-        self._show_source = options.show_source
-        self._show_pep8 = options.show_pep8
-
-    def init_file(self, filename, lines, expected, line_offset):
-        """Signal a new file."""
-        self._deferred_print = []
-        return super(StandardReport, self).init_file(
-            filename, lines, expected, line_offset)
-
-    def error(self, line_number, offset, text, check):
-        """Report an error, according to options."""
-        code = super(StandardReport, self).error(line_number, offset,
-                                                 text, check)
-        if code and (self.counters[code] == 1 or self._repeat):
-            self._deferred_print.append(
-                (line_number, offset, code, text[5:], check.__doc__))
-        return code
-
-    def get_file_results(self):
-        """Print the result and return the overall count for this file."""
-        self._deferred_print.sort()
-        for line_number, offset, code, text, doc in self._deferred_print:
-            print(self._fmt % {
-                'path': self.filename,
-                'row': self.line_offset + line_number, 'col': offset + 1,
-                'code': code, 'text': text,
-            })
-            if self._show_source:
-                if line_number > len(self.lines):
-                    line = ''
-                else:
-                    line = self.lines[line_number - 1]
-                print(line.rstrip())
-                print(re.sub(r'\S', ' ', line[:offset]) + '^')
-            if self._show_pep8 and doc:
-                print('    ' + doc.strip())
-
-            # stdout is block buffered when not stdout.isatty().
-            # line can be broken where buffer boundary since other processes
-            # write to same file.
-            # flush() after print() to avoid buffer boundary.
-            # Typical buffer size is 8192. line written safely when
-            # len(line) < 8192.
-            sys.stdout.flush()
-        return self.file_errors
-
-
-class DiffReport(StandardReport):
-    """Collect and print the results for the changed lines only."""
-
-    def __init__(self, options):
-        super(DiffReport, self).__init__(options)
-        self._selected = options.selected_lines
-
-    def error(self, line_number, offset, text, check):
-        if line_number not in self._selected[self.filename]:
-            return
-        return super(DiffReport, self).error(line_number, offset, text, check)
-
-
-class StyleGuide(object):
-    """Initialize a PEP-8 instance with few options."""
-
-    def __init__(self, *args, **kwargs):
-        # build options from the command line
-        self.checker_class = kwargs.pop('checker_class', Checker)
-        parse_argv = kwargs.pop('parse_argv', False)
-        config_file = kwargs.pop('config_file', False)
-        parser = kwargs.pop('parser', None)
-        # build options from dict
-        options_dict = dict(*args, **kwargs)
-        arglist = None if parse_argv else options_dict.get('paths', None)
-        options, self.paths = process_options(
-            arglist, parse_argv, config_file, parser)
-        if options_dict:
-            options.__dict__.update(options_dict)
-            if 'paths' in options_dict:
-                self.paths = options_dict['paths']
-
-        self.runner = self.input_file
-        self.options = options
-
-        if not options.reporter:
-            options.reporter = BaseReport if options.quiet else StandardReport
-
-        options.select = tuple(options.select or ())
-        if not (options.select or options.ignore or
-                options.testsuite or options.doctest) and DEFAULT_IGNORE:
-            # The default choice: ignore controversial checks
-            options.ignore = tuple(DEFAULT_IGNORE.split(','))
-        else:
-            # Ignore all checks which are not explicitly selected
-            options.ignore = ('',) if options.select else tuple(options.ignore)
-        options.benchmark_keys = BENCHMARK_KEYS[:]
-        options.ignore_code = self.ignore_code
-        options.physical_checks = self.get_checks('physical_line')
-        options.logical_checks = self.get_checks('logical_line')
-        options.ast_checks = self.get_checks('tree')
-        self.init_report()
-
-    def init_report(self, reporter=None):
-        """Initialize the report instance."""
-        self.options.report = (reporter or self.options.reporter)(self.options)
-        return self.options.report
-
-    def check_files(self, paths=None):
-        """Run all checks on the paths."""
-        if paths is None:
-            paths = self.paths
-        report = self.options.report
-        runner = self.runner
-        report.start()
-        try:
-            for path in paths:
-                if os.path.isdir(path):
-                    self.input_dir(path)
-                elif not self.excluded(path):
-                    runner(path)
-        except KeyboardInterrupt:
-            print('... stopped')
-        report.stop()
-        return report
-
-    def input_file(self, filename, lines=None, expected=None, line_offset=0):
-        """Run all checks on a Python source file."""
-        if self.options.verbose:
-            print('checking %s' % filename)
-        fchecker = self.checker_class(
-            filename, lines=lines, options=self.options)
-        return fchecker.check_all(expected=expected, line_offset=line_offset)
-
-    def input_dir(self, dirname):
-        """Check all files in this directory and all subdirectories."""
-        dirname = dirname.rstrip('/')
-        if self.excluded(dirname):
-            return 0
-        counters = self.options.report.counters
-        verbose = self.options.verbose
-        filepatterns = self.options.filename
-        runner = self.runner
-        for root, dirs, files in os.walk(dirname):
-            if verbose:
-                print('directory ' + root)
-            counters['directories'] += 1
-            for subdir in sorted(dirs):
-                if self.excluded(subdir, root):
-                    dirs.remove(subdir)
-            for filename in sorted(files):
-                # contain a pattern that matches?
-                if ((filename_match(filename, filepatterns) and
-                     not self.excluded(filename, root))):
-                    runner(os.path.join(root, filename))
-
-    def excluded(self, filename, parent=None):
-        """Check if the file should be excluded.
-
-        Check if 'options.exclude' contains a pattern that matches filename.
-        """
-        if not self.options.exclude:
-            return False
-        basename = os.path.basename(filename)
-        if filename_match(basename, self.options.exclude):
-            return True
-        if parent:
-            filename = os.path.join(parent, filename)
-        filename = os.path.abspath(filename)
-        return filename_match(filename, self.options.exclude)
-
-    def ignore_code(self, code):
-        """Check if the error code should be ignored.
-
-        If 'options.select' contains a prefix of the error code,
-        return False.  Else, if 'options.ignore' contains a prefix of
-        the error code, return True.
-        """
-        if len(code) < 4 and any(s.startswith(code)
-                                 for s in self.options.select):
-            return False
-        return (code.startswith(self.options.ignore) and
-                not code.startswith(self.options.select))
-
-    def get_checks(self, argument_name):
-        """Get all the checks for this category.
-
-        Find all globally visible functions where the first argument name
-        starts with argument_name and which contain selected tests.
-        """
-        checks = []
-        for check, attrs in _checks[argument_name].items():
-            (codes, args) = attrs
-            if any(not (code and self.ignore_code(code)) for code in codes):
-                checks.append((check.__name__, check, args))
-        return sorted(checks)
-
-
-def get_parser(prog='pep8', version=__version__):
-    parser = OptionParser(prog=prog, version=version,
-                          usage="%prog [options] input ...")
-    parser.config_options = [
-        'exclude', 'filename', 'select', 'ignore', 'max-line-length',
-        'hang-closing', 'count', 'format', 'quiet', 'show-pep8',
-        'show-source', 'statistics', 'verbose']
-    parser.add_option('-v', '--verbose', default=0, action='count',
-                      help="print status messages, or debug with -vv")
-    parser.add_option('-q', '--quiet', default=0, action='count',
-                      help="report only file names, or nothing with -qq")
-    parser.add_option('-r', '--repeat', default=True, action='store_true',
-                      help="(obsolete) show all occurrences of the same error")
-    parser.add_option('--first', action='store_false', dest='repeat',
-                      help="show first occurrence of each error")
-    parser.add_option('--exclude', metavar='patterns', default=DEFAULT_EXCLUDE,
-                      help="exclude files or directories which match these "
-                           "comma separated patterns (default: %default)")
-    parser.add_option('--filename', metavar='patterns', default='*.py',
-                      help="when parsing directories, only check filenames "
-                           "matching these comma separated patterns "
-                           "(default: %default)")
-    parser.add_option('--select', metavar='errors', default='',
-                      help="select errors and warnings (e.g. E,W6)")
-    parser.add_option('--ignore', metavar='errors', default='',
-                      help="skip errors and warnings (e.g. E4,W) "
-                           "(default: %s)" % DEFAULT_IGNORE)
-    parser.add_option('--show-source', action='store_true',
-                      help="show source code for each error")
-    parser.add_option('--show-pep8', action='store_true',
-                      help="show text of PEP 8 for each error "
-                           "(implies --first)")
-    parser.add_option('--statistics', action='store_true',
-                      help="count errors and warnings")
-    parser.add_option('--count', action='store_true',
-                      help="print total number of errors and warnings "
-                           "to standard error and set exit code to 1 if "
-                           "total is not null")
-    parser.add_option('--max-line-length', type='int', metavar='n',
-                      default=MAX_LINE_LENGTH,
-                      help="set maximum allowed line length "
-                           "(default: %default)")
-    parser.add_option('--hang-closing', action='store_true',
-                      help="hang closing bracket instead of matching "
-                           "indentation of opening bracket's line")
-    parser.add_option('--format', metavar='format', default='default',
-                      help="set the error format [default|pylint|<custom>]")
-    parser.add_option('--diff', action='store_true',
-                      help="report only lines changed according to the "
-                           "unified diff received on STDIN")
-    group = parser.add_option_group("Testing Options")
-    if os.path.exists(TESTSUITE_PATH):
-        group.add_option('--testsuite', metavar='dir',
-                         help="run regression tests from dir")
-        group.add_option('--doctest', action='store_true',
-                         help="run doctest on myself")
-    group.add_option('--benchmark', action='store_true',
-                     help="measure processing speed")
-    return parser
-
-
-def read_config(options, args, arglist, parser):
-    """Read and parse configurations
-
-    If a config file is specified on the command line with the "--config"
-    option, then only it is used for configuration.
-
-    Otherwise, the user configuration (~/.config/pep8) and any local
-    configurations in the current directory or above will be merged together
-    (in that order) using the read method of ConfigParser.
-    """
-    config = RawConfigParser()
-
-    cli_conf = options.config
-
-    local_dir = os.curdir
-
-    if cli_conf and os.path.isfile(cli_conf):
-        if options.verbose:
-            print('cli configuration: %s' % cli_conf)
-        config.read(cli_conf)
-    else:
-        if USER_CONFIG and os.path.isfile(USER_CONFIG):
-            if options.verbose:
-                print('user configuration: %s' % USER_CONFIG)
-            config.read(USER_CONFIG)
-
-        parent = tail = args and os.path.abspath(os.path.commonprefix(args))
-        while tail:
-            if config.read(os.path.join(parent, fn) for fn in PROJECT_CONFIG):
-                local_dir = parent
-                if options.verbose:
-                    print('local configuration: in %s' % parent)
-                break
-            (parent, tail) = os.path.split(parent)
-
-    pep8_section = parser.prog
-    if config.has_section(pep8_section):
-        option_list = dict([(o.dest, o.type or o.action)
-                            for o in parser.option_list])
-
-        # First, read the default values
-        (new_options, __) = parser.parse_args([])
-
-        # Second, parse the configuration
-        for opt in config.options(pep8_section):
-            if opt.replace('_', '-') not in parser.config_options:
-                print("  unknown option '%s' ignored" % opt)
-                continue
-            if options.verbose > 1:
-                print("  %s = %s" % (opt, config.get(pep8_section, opt)))
-            normalized_opt = opt.replace('-', '_')
-            opt_type = option_list[normalized_opt]
-            if opt_type in ('int', 'count'):
-                value = config.getint(pep8_section, opt)
-            elif opt_type == 'string':
-                value = config.get(pep8_section, opt)
-                if normalized_opt == 'exclude':
-                    value = normalize_paths(value, local_dir)
-            else:
-                assert opt_type in ('store_true', 'store_false')
-                value = config.getboolean(pep8_section, opt)
-            setattr(new_options, normalized_opt, value)
-
-        # Third, overwrite with the command-line options
-        (options, __) = parser.parse_args(arglist, values=new_options)
-    options.doctest = options.testsuite = False
-    return options
-
-
-def process_options(arglist=None, parse_argv=False, config_file=None,
-                    parser=None):
-    """Process options passed either via arglist or via command line args.
-
-    Passing in the ``config_file`` parameter allows other tools, such as flake8
-    to specify their own options to be processed in pep8.
-    """
-    if not parser:
-        parser = get_parser()
-    if not parser.has_option('--config'):
-        group = parser.add_option_group("Configuration", description=(
-            "The project options are read from the [%s] section of the "
-            "tox.ini file or the setup.cfg file located in any parent folder "
-            "of the path(s) being processed.  Allowed options are: %s." %
-            (parser.prog, ', '.join(parser.config_options))))
-        group.add_option('--config', metavar='path', default=config_file,
-                         help="user config file location")
-    # Don't read the command line if the module is used as a library.
-    if not arglist and not parse_argv:
-        arglist = []
-    # If parse_argv is True and arglist is None, arguments are
-    # parsed from the command line (sys.argv)
-    (options, args) = parser.parse_args(arglist)
-    options.reporter = None
-
-    if options.ensure_value('testsuite', False):
-        args.append(options.testsuite)
-    elif not options.ensure_value('doctest', False):
-        if parse_argv and not args:
-            if options.diff or any(os.path.exists(name)
-                                   for name in PROJECT_CONFIG):
-                args = ['.']
-            else:
-                parser.error('input not specified')
-        options = read_config(options, args, arglist, parser)
-        options.reporter = parse_argv and options.quiet == 1 and FileReport
-
-    options.filename = options.filename and options.filename.split(',')
-    options.exclude = normalize_paths(options.exclude)
-    options.select = options.select and options.select.split(',')
-    options.ignore = options.ignore and options.ignore.split(',')
-
-    if options.diff:
-        options.reporter = DiffReport
-        stdin = stdin_get_value()
-        options.selected_lines = parse_udiff(stdin, options.filename, args[0])
-        args = sorted(options.selected_lines)
-
-    return options, args
-
-
-def _main():
-    """Parse options and run checks on Python source."""
-    import signal
-
-    # Handle "Broken pipe" gracefully
-    try:
-        signal.signal(signal.SIGPIPE, lambda signum, frame: sys.exit(1))
-    except AttributeError:
-        pass    # not supported on Windows
-
-    pep8style = StyleGuide(parse_argv=True)
-    options = pep8style.options
-    if options.doctest or options.testsuite:
-        from testsuite.support import run_tests
-        report = run_tests(pep8style)
-    else:
-        report = pep8style.check_files()
-    if options.statistics:
-        report.print_statistics()
-    if options.benchmark:
-        report.print_benchmark()
-    if options.testsuite and not options.quiet:
-        report.print_results()
-    if report.total_errors:
-        if options.count:
-            sys.stderr.write(str(report.total_errors) + '\n')
-        sys.exit(1)
-
-if __name__ == '__main__':
-    _main()
diff --git a/misc/pyflakes.py b/misc/pyflakes.py
deleted file mode 100644 (file)
index fa818b1..0000000
+++ /dev/null
@@ -1,542 +0,0 @@
-# -*- test-case-name: pyflakes -*-
-# (c) 2005-2008 Divmod, Inc.
-# See LICENSE file for details
-
-import __builtin__
-import compiler
-import sys
-import os
-
-from compiler import ast
-
-
-class Message(object):
-    message = ''
-    message_args = ()
-
-    def __init__(self, filename, lineno):
-        self.filename = filename
-        self.lineno = lineno
-
-    def __str__(self):
-        return '%s:%s: %s' % (self.filename,
-                              self.lineno,
-                              self.message % self.message_args)
-
-
-class UnusedImport(Message):
-    message = '%r imported but unused'
-
-    def __init__(self, filename, lineno, name):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, )
-
-
-class RedefinedWhileUnused(Message):
-    message = 'redefinition of unused %r from line %r'
-
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class ImportShadowedByLoopVar(Message):
-    message = 'import %r from line %r shadowed by loop variable'
-
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class ImportStarUsed(Message):
-    message = "'from %s import *' used; unable to detect undefined names"
-
-    def __init__(self, filename, lineno, modname):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (modname, )
-
-
-class UndefinedName(Message):
-    message = 'undefined name %r'
-
-    def __init__(self, filename, lineno, name):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, )
-
-
-class UndefinedLocal(Message):
-    message = ("local variable %r (defined in enclosing scope on line %r) "
-               "referenced before assignment")
-
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class DuplicateArgument(Message):
-    message = 'duplicate argument %r in function definition'
-
-    def __init__(self, filename, lineno, name):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, )
-
-
-class RedefinedFunction(Message):
-    message = 'redefinition of function %r from line %r'
-
-    def __init__(self, filename, lineno, name, orig_lineno):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (name, orig_lineno)
-
-
-class LateFutureImport(Message):
-    message = 'future import(s) %r after other statements'
-
-    def __init__(self, filename, lineno, names):
-        Message.__init__(self, filename, lineno)
-        self.message_args = (names, )
-
-
-class Binding(object):
-    """
-    @ivar used: pair of (L{Scope}, line-number) indicating the scope and
-                line number that this binding was last used
-    """
-
-    def __init__(self, name, source):
-        self.name = name
-        self.source = source
-        self.used = False
-
-    def __str__(self):
-        return self.name
-
-    def __repr__(self):
-        return '<%s object %r from line %r at 0x%x>' % (
-            self.__class__.__name__,
-            self.name,
-            self.source.lineno,
-            id(self))
-
-
-class UnBinding(Binding):
-    '''Created by the 'del' operator.'''
-
-
-class Importation(Binding):
-
-    def __init__(self, name, source):
-        name = name.split('.')[0]
-        super(Importation, self).__init__(name, source)
-
-
-class Assignment(Binding):
-    pass
-
-
-class FunctionDefinition(Binding):
-    pass
-
-
-class Scope(dict):
-    importStarred = False       # set to True when import * is found
-
-    def __repr__(self):
-        return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self),
-                                    dict.__repr__(self))
-
-    def __init__(self):
-        super(Scope, self).__init__()
-
-
-class ClassScope(Scope):
-    pass
-
-
-class FunctionScope(Scope):
-    """
-    I represent a name scope for a function.
-
-    @ivar globals: Names declared 'global' in this function.
-    """
-
-    def __init__(self):
-        super(FunctionScope, self).__init__()
-        self.globals = {}
-
-
-class ModuleScope(Scope):
-    pass
-
-
-class Checker(object):
-    nodeDepth = 0
-    traceTree = False
-
-    def __init__(self, tree, filename='(none)'):
-        self.deferred = []
-        self.dead_scopes = []
-        self.messages = []
-        self.filename = filename
-        self.scopeStack = [ModuleScope()]
-        self.futuresAllowed = True
-
-        self.handleChildren(tree)
-        for handler, scope in self.deferred:
-            self.scopeStack = scope
-            handler()
-        del self.scopeStack[1:]
-        self.popScope()
-        self.check_dead_scopes()
-
-    def defer(self, callable):
-        '''Schedule something to be called after just before completion.
-
-        This is used for handling function bodies, which must be deferred
-        because code later in the file might modify the global scope. When
-        `callable` is called, the scope at the time this is called will be
-        restored, however it will contain any new bindings added to it.
-        '''
-        self.deferred.append((callable, self.scopeStack[:]))
-
-    def scope(self):
-        return self.scopeStack[-1]
-    scope = property(scope)
-
-    def popScope(self):
-        self.dead_scopes.append(self.scopeStack.pop())
-
-    def check_dead_scopes(self):
-        for scope in self.dead_scopes:
-            for importation in scope.itervalues():
-                if (isinstance(importation, Importation) and
-                    not importation.used):
-                    self.report(UnusedImport,
-                                importation.source.lineno, importation.name)
-
-    def pushFunctionScope(self):
-        self.scopeStack.append(FunctionScope())
-
-    def pushClassScope(self):
-        self.scopeStack.append(ClassScope())
-
-    def report(self, messageClass, *args, **kwargs):
-        self.messages.append(messageClass(self.filename, *args, **kwargs))
-
-    def handleChildren(self, tree):
-        for node in tree.getChildNodes():
-            self.handleNode(node)
-
-    def handleNode(self, node):
-        if self.traceTree:
-            print '  ' * self.nodeDepth + node.__class__.__name__
-        self.nodeDepth += 1
-        nodeType = node.__class__.__name__.upper()
-        if nodeType not in ('STMT', 'FROM'):
-            self.futuresAllowed = False
-        try:
-            handler = getattr(self, nodeType)
-            handler(node)
-        finally:
-            self.nodeDepth -= 1
-        if self.traceTree:
-            print '  ' * self.nodeDepth + 'end ' + node.__class__.__name__
-
-    def ignore(self, node):
-        pass
-
-    STMT = PRINT = PRINTNL = TUPLE = LIST = ASSTUPLE = ASSATTR = \
-    ASSLIST = GETATTR = SLICE = SLICEOBJ = IF = CALLFUNC = DISCARD = \
-    RETURN = ADD = MOD = SUB = NOT = UNARYSUB = INVERT = ASSERT = COMPARE = \
-    SUBSCRIPT = AND = OR = TRYEXCEPT = RAISE = YIELD = DICT = LEFTSHIFT = \
-    RIGHTSHIFT = KEYWORD = TRYFINALLY = WHILE = EXEC = MUL = DIV = POWER = \
-    FLOORDIV = BITAND = BITOR = BITXOR = LISTCOMPFOR = LISTCOMPIF = \
-    AUGASSIGN = BACKQUOTE = UNARYADD = GENEXPR = GENEXPRFOR = GENEXPRIF = \
-    IFEXP = handleChildren
-
-    CONST = PASS = CONTINUE = BREAK = ELLIPSIS = ignore
-
-    def addBinding(self, lineno, value, reportRedef=True):
-        '''Called when a binding is altered.
-
-        - `lineno` is the line of the statement responsible for the change
-        - `value` is the optional new value, a Binding instance, associated
-          with the binding; if None, the binding is deleted if it exists.
-        - if `reportRedef` is True (default), rebinding while unused will be
-          reported.
-        '''
-        if (isinstance(self.scope.get(value.name), FunctionDefinition)
-                    and isinstance(value, FunctionDefinition)):
-            self.report(RedefinedFunction,
-                        lineno, value.name,
-                        self.scope[value.name].source.lineno)
-
-        if not isinstance(self.scope, ClassScope):
-            for scope in self.scopeStack[::-1]:
-                if (isinstance(scope.get(value.name), Importation)
-                        and not scope[value.name].used
-                        and reportRedef):
-
-                    self.report(RedefinedWhileUnused,
-                                lineno, value.name,
-                                scope[value.name].source.lineno)
-
-        if isinstance(value, UnBinding):
-            try:
-                del self.scope[value.name]
-            except KeyError:
-                self.report(UndefinedName, lineno, value.name)
-        else:
-            self.scope[value.name] = value
-
-    def WITH(self, node):
-        """
-        Handle C{with} by adding bindings for the name or tuple of names it
-        puts into scope and by continuing to process the suite within the
-        statement.
-        """
-        # for "with foo as bar", there is no AssName node for "bar".
-        # Instead, there is a Name node. If the "as" expression assigns to
-        # a tuple, it will instead be a AssTuple node of Name nodes.
-        #
-        # Of course these are assignments, not references, so we have to
-        # handle them as a special case here.
-
-        self.handleNode(node.expr)
-
-        if isinstance(node.vars, ast.AssTuple):
-            varNodes = node.vars.nodes
-        elif node.vars is not None:
-            varNodes = [node.vars]
-        else:
-            varNodes = []
-
-        for varNode in varNodes:
-            self.addBinding(varNode.lineno, Assignment(varNode.name, varNode))
-
-        self.handleChildren(node.body)
-
-    def GLOBAL(self, node):
-        """
-        Keep track of globals declarations.
-        """
-        if isinstance(self.scope, FunctionScope):
-            self.scope.globals.update(dict.fromkeys(node.names))
-
-    def LISTCOMP(self, node):
-        for qual in node.quals:
-            self.handleNode(qual)
-        self.handleNode(node.expr)
-
-    GENEXPRINNER = LISTCOMP
-
-    def FOR(self, node):
-        """
-        Process bindings for loop variables.
-        """
-        vars = []
-
-        def collectLoopVars(n):
-            if hasattr(n, 'name'):
-                vars.append(n.name)
-            else:
-                for c in n.getChildNodes():
-                    collectLoopVars(c)
-
-        collectLoopVars(node.assign)
-        for varn in vars:
-            if (isinstance(self.scope.get(varn), Importation)
-                    # unused ones will get an unused import warning
-                    and self.scope[varn].used):
-                self.report(ImportShadowedByLoopVar,
-                            node.lineno, varn, self.scope[varn].source.lineno)
-
-        self.handleChildren(node)
-
-    def NAME(self, node):
-        """
-        Locate the name in locals / function / globals scopes.
-        """
-        # try local scope
-        importStarred = self.scope.importStarred
-        try:
-            self.scope[node.name].used = (self.scope, node.lineno)
-        except KeyError:
-            pass
-        else:
-            return
-
-        # try enclosing function scopes
-
-        for scope in self.scopeStack[-2:0:-1]:
-            importStarred = importStarred or scope.importStarred
-            if not isinstance(scope, FunctionScope):
-                continue
-            try:
-                scope[node.name].used = (self.scope, node.lineno)
-            except KeyError:
-                pass
-            else:
-                return
-
-        # try global scope
-
-        importStarred = importStarred or self.scopeStack[0].importStarred
-        try:
-            self.scopeStack[0][node.name].used = (self.scope, node.lineno)
-        except KeyError:
-            if ((not hasattr(__builtin__, node.name))
-                    and node.name not in ['__file__']
-                    and not importStarred):
-                self.report(UndefinedName, node.lineno, node.name)
-
-    def FUNCTION(self, node):
-        if getattr(node, "decorators", None) is not None:
-            self.handleChildren(node.decorators)
-        self.addBinding(node.lineno, FunctionDefinition(node.name, node))
-        self.LAMBDA(node)
-
-    def LAMBDA(self, node):
-        for default in node.defaults:
-            self.handleNode(default)
-
-        def runFunction():
-            args = []
-
-            def addArgs(arglist):
-                for arg in arglist:
-                    if isinstance(arg, tuple):
-                        addArgs(arg)
-                    else:
-                        if arg in args:
-                            self.report(DuplicateArgument, node.lineno, arg)
-                        args.append(arg)
-
-            self.pushFunctionScope()
-            addArgs(node.argnames)
-            for name in args:
-                self.addBinding(node.lineno, Assignment(name, node),
-                                reportRedef=False)
-            self.handleNode(node.code)
-            self.popScope()
-
-        self.defer(runFunction)
-
-    def CLASS(self, node):
-        self.addBinding(node.lineno, Assignment(node.name, node))
-        for baseNode in node.bases:
-            self.handleNode(baseNode)
-        self.pushClassScope()
-        self.handleChildren(node.code)
-        self.popScope()
-
-    def ASSNAME(self, node):
-        if node.flags == 'OP_DELETE':
-            if (isinstance(self.scope, FunctionScope) and
-                node.name in self.scope.globals):
-                del self.scope.globals[node.name]
-            else:
-                self.addBinding(node.lineno, UnBinding(node.name, node))
-        else:
-            # if the name hasn't already been defined in the current scope
-            if (isinstance(self.scope, FunctionScope) and
-                node.name not in self.scope):
-                # for each function or module scope above us
-                for scope in self.scopeStack[:-1]:
-                    if not isinstance(scope, (FunctionScope, ModuleScope)):
-                        continue
-                    # if the name was defined in that scope, and the name has
-                    # been accessed already in the current scope, and hasn't
-                    # been declared global
-                    if (node.name in scope
-                            and scope[node.name].used
-                            and scope[node.name].used[0] is self.scope
-                            and node.name not in self.scope.globals):
-                        # then it's probably a mistake
-                        self.report(UndefinedLocal,
-                                    scope[node.name].used[1],
-                                    node.name,
-                                    scope[node.name].source.lineno)
-                        break
-
-            self.addBinding(node.lineno, Assignment(node.name, node))
-
-    def ASSIGN(self, node):
-        self.handleNode(node.expr)
-        for subnode in node.nodes[::-1]:
-            self.handleNode(subnode)
-
-    def IMPORT(self, node):
-        for name, alias in node.names:
-            name = alias or name
-            importation = Importation(name, node)
-            self.addBinding(node.lineno, importation)
-
-    def FROM(self, node):
-        if node.modname == '__future__':
-            if not self.futuresAllowed:
-                self.report(LateFutureImport,
-                            node.lineno, [n[0] for n in node.names])
-        else:
-            self.futuresAllowed = False
-
-        for name, alias in node.names:
-            if name == '*':
-                self.scope.importStarred = True
-                self.report(ImportStarUsed, node.lineno, node.modname)
-                continue
-            name = alias or name
-            importation = Importation(name, node)
-            if node.modname == '__future__':
-                importation.used = (self.scope, node.lineno)
-            self.addBinding(node.lineno, importation)
-
-
-def check(codeString, filename):
-    try:
-        tree = compiler.parse(codeString)
-    except (SyntaxError, IndentationError):
-        value = sys.exc_info()[1]
-        try:
-            (lineno, offset, line) = value[1][1:]
-        except IndexError:
-            print >> sys.stderr, 'could not compile %r' % (filename, )
-            return 1
-        if line.endswith("\n"):
-            line = line[:-1]
-        print >> sys.stderr, '%s:%d: could not compile' % (filename, lineno)
-        print >> sys.stderr, line
-        print >> sys.stderr, " " * (offset-2), "^"
-        return 1
-    else:
-        w = Checker(tree, filename)
-        w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno))
-        for warning in w.messages:
-            print warning
-        return len(w.messages)
-
-
-def checkPath(filename):
-    if os.path.exists(filename):
-        return check(file(filename, 'U').read(), filename)
-
-
-def main(args):
-    warnings = 0
-    if args:
-        for arg in args:
-            if os.path.isdir(arg):
-                for dirpath, dirnames, filenames in os.walk(arg):
-                    for filename in filenames:
-                        if filename.endswith('.py'):
-                            warnings += checkPath(
-                                os.path.join(dirpath, filename))
-            else:
-                warnings += checkPath(arg)
-    else:
-        warnings += check(sys.stdin.read(), '<stdin>')
-
-    return warnings > 0
-
-if __name__ == '__main__':
-    sys.exit(main(sys.argv[1:]))
index b561582..1508256 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -145,7 +145,9 @@ am__v_at_0 = @
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/libeverything_1_0_la-everything.Plo \
+       ./$(DEPDIR)/libgimarshallingtests_1_0_la-gimarshallingtests.Plo
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -218,7 +220,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       check recheck distdir
+       check recheck distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -725,8 +727,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 $(top_srcdir)/common.mk $(am__empty):
 
@@ -751,8 +753,14 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeverything_1_0_la-everything.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgimarshallingtests_1_0_la-gimarshallingtests.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libeverything_1_0_la-everything.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgimarshallingtests_1_0_la-gimarshallingtests.Plo@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -1038,7 +1046,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        fi;                                                             \
        $$success || exit 1
 
-check-TESTS:
+check-TESTS: 
        @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -1088,7 +1096,10 @@ GIMarshallingTests-1.0.typelib.log: GIMarshallingTests-1.0.typelib
 @am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
@@ -1194,7 +1205,8 @@ clean: clean-recursive
 clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-recursive
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/libeverything_1_0_la-everything.Plo
+       -rm -f ./$(DEPDIR)/libgimarshallingtests_1_0_la-gimarshallingtests.Plo
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -1240,7 +1252,8 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/libeverything_1_0_la-everything.Plo
+       -rm -f ./$(DEPDIR)/libgimarshallingtests_1_0_la-gimarshallingtests.Plo
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1262,20 +1275,21 @@ uninstall-am: uninstall-testsDATA
 .MAKE: $(am__recursive_targets) all check check-am install install-am \
        install-strip
 
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-       check-TESTS check-am clean clean-generic clean-libtool \
-       cscopelist-am ctags ctags-am distclean distclean-compile \
-       distclean-generic distclean-libtool distclean-tags distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       install-testsDATA installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
-       uninstall uninstall-am uninstall-testsDATA
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--depfiles check check-TESTS check-am clean clean-generic \
+       clean-libtool cscopelist-am ctags ctags-am distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip install-testsDATA installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       recheck tags tags-am uninstall uninstall-am \
+       uninstall-testsDATA
 
 .PRECIOUS: Makefile
 
index 2191f87..2f618d5 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -183,7 +183,9 @@ am__v_at_0 = @
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/gitestoffsets-gitestoffsets.Po \
+       ./$(DEPDIR)/liboffsets_la-offsets.Plo
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -756,8 +758,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 $(top_srcdir)/common.mk $(top_srcdir)/Makefile.introspection $(am__empty):
 
@@ -783,8 +785,14 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitestoffsets-gitestoffsets.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffsets_la-offsets.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitestoffsets-gitestoffsets.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/liboffsets_la-offsets.Plo@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -1009,7 +1017,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        fi;                                                             \
        $$success || exit 1
 
-check-TESTS:
+check-TESTS: 
        @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -1052,7 +1060,10 @@ gitestoffsets.log: gitestoffsets$(EXEEXT)
 @am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
@@ -1129,7 +1140,8 @@ clean: clean-am
 clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/gitestoffsets-gitestoffsets.Po
+       -rm -f ./$(DEPDIR)/liboffsets_la-offsets.Plo
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -1175,7 +1187,8 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/gitestoffsets-gitestoffsets.Po
+       -rm -f ./$(DEPDIR)/liboffsets_la-offsets.Plo
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1196,9 +1209,9 @@ uninstall-am:
 
 .MAKE: all check check-am install install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-       clean-generic clean-libtool cscopelist-am ctags ctags-am \
-       distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
+       check-am clean clean-generic clean-libtool cscopelist-am ctags \
+       ctags-am distclean distclean-compile distclean-generic \
        distclean-libtool distclean-tags distdir dvi dvi-am html \
        html-am info info-am install install-am install-data \
        install-data-am install-dvi install-dvi-am install-exec \
index ae027b3..b05402e 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -141,7 +141,11 @@ am__v_at_0 = @
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/gitestrepo-gitestrepo.Po \
+       ./$(DEPDIR)/giteststructinfo-giteststructinfo.Po \
+       ./$(DEPDIR)/gitestthrows-gitestthrows.Po \
+       ./$(DEPDIR)/gitypelibtest-gitypelibtest.Po
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -624,8 +628,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
@@ -659,10 +663,16 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitestrepo-gitestrepo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/giteststructinfo-giteststructinfo.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitestthrows-gitestthrows.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitypelibtest-gitypelibtest.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitestrepo-gitestrepo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/giteststructinfo-giteststructinfo.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitestthrows-gitestthrows.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gitypelibtest-gitypelibtest.Po@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -922,7 +932,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        fi;                                                             \
        $$success || exit 1
 
-check-TESTS:
+check-TESTS: 
        @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -986,7 +996,10 @@ gitypelibtest.log: gitypelibtest$(EXEEXT)
 @am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
@@ -1060,7 +1073,10 @@ clean: clean-am
 clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-am
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/gitestrepo-gitestrepo.Po
+       -rm -f ./$(DEPDIR)/giteststructinfo-giteststructinfo.Po
+       -rm -f ./$(DEPDIR)/gitestthrows-gitestthrows.Po
+       -rm -f ./$(DEPDIR)/gitypelibtest-gitypelibtest.Po
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -1106,7 +1122,10 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-am
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/gitestrepo-gitestrepo.Po
+       -rm -f ./$(DEPDIR)/giteststructinfo-giteststructinfo.Po
+       -rm -f ./$(DEPDIR)/gitestthrows-gitestthrows.Po
+       -rm -f ./$(DEPDIR)/gitypelibtest-gitypelibtest.Po
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1127,9 +1146,9 @@ uninstall-am:
 
 .MAKE: check-am install-am install-strip
 
-.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
-       clean-generic clean-libtool cscopelist-am ctags ctags-am \
-       distclean distclean-compile distclean-generic \
+.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-TESTS \
+       check-am clean clean-generic clean-libtool cscopelist-am ctags \
+       ctags-am distclean distclean-compile distclean-generic \
        distclean-libtool distclean-tags distdir dvi dvi-am html \
        html-am info info-am install install-am install-data \
        install-data-am install-dvi install-dvi-am install-exec \
index f707585..9da301f 100644 (file)
@@ -242,6 +242,7 @@ TESTS_ENVIRONMENT = env srcdir=$(srcdir) top_srcdir=$(top_srcdir) builddir=$(bui
 LOG_COMPILER = $(PYTHON) $(top_srcdir)/tests/gi-tester
 
 EXTRA_DIST += \
+       meson.build \
        $(PYTESTS) \
        Regress-1.0-C-expected                                  \
        Regress-1.0-Gjs-expected                                \
index c6a15d1..dd57335 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -221,7 +221,16 @@ am__v_at_0 = @
 am__v_at_1 = 
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
-am__depfiles_maybe = depfiles
+am__maybe_remake_depfiles = depfiles
+am__depfiles_remade = ./$(DEPDIR)/barapp.Po ./$(DEPDIR)/gettype.Plo \
+       ./$(DEPDIR)/gtkfrob.Plo \
+       ./$(DEPDIR)/libregress_la-annotation.Plo \
+       ./$(DEPDIR)/libregress_la-drawable.Plo \
+       ./$(DEPDIR)/libregress_la-foo.Plo \
+       ./$(DEPDIR)/libregress_la-regress.Plo \
+       ./$(DEPDIR)/libsletter_la-sletter.Plo \
+       ./$(DEPDIR)/libwarnlib_la-warnlib.Plo ./$(DEPDIR)/typedefs.Plo \
+       ./$(DEPDIR)/utility.Plo
 am__mv = mv -f
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
        $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
@@ -298,7 +307,7 @@ am__recursive_targets = \
   $(RECURSIVE_CLEAN_TARGETS) \
   $(am__extra_recursive_targets)
 AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
-       check recheck distdir
+       check recheck distdir distdir-am
 am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 # Read a list of newline-separated strings from the standard input,
 # and print each of them once, without duplicates.  Input order is
@@ -863,9 +872,9 @@ INTROSPECTION_GIRS = $(GIRS)
 EXTRA_DIST = $(EXPECTEDGIRS) headeronly.h Headeronly-1.0-expected.gir \
        identfilter.py identfilter.h Identfilter-1.0-expected.gir \
        symbolfilter.py symbolfilter.h Symbolfilter-1.0-expected.gir \
-       $(PYTESTS) Regress-1.0-C-expected Regress-1.0-Gjs-expected \
-       Regress-1.0-Python-expected Regress-1.0-sections-expected.txt \
-       $(NULL)
+       meson.build $(PYTESTS) Regress-1.0-C-expected \
+       Regress-1.0-Gjs-expected Regress-1.0-Python-expected \
+       Regress-1.0-sections-expected.txt $(NULL)
 SLetter_1_0_gir_LIBS = libsletter.la
 SLetter_1_0_gir_CFLAGS = $(GI_SCANNER_CFLAGS)
 SLetter_1_0_gir_INCLUDES = Gio-2.0
@@ -953,8 +962,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 $(top_srcdir)/common.mk $(top_srcdir)/Makefile.introspection $(am__empty):
 
@@ -998,17 +1007,23 @@ mostlyclean-compile:
 distclean-compile:
        -rm -f *.tab.c
 
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/barapp.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettype.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkfrob.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-annotation.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-drawable.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-foo.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-regress.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsletter_la-sletter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libwarnlib_la-warnlib.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typedefs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utility.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/barapp.Po@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettype.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkfrob.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-annotation.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-drawable.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-foo.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libregress_la-regress.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsletter_la-sletter.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libwarnlib_la-warnlib.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/typedefs.Plo@am__quote@ # am--include-marker
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utility.Plo@am__quote@ # am--include-marker
+
+$(am__depfiles_remade):
+       @$(MKDIR_P) $(@D)
+       @echo '# dummy' >$@-t && $(am__mv) $@-t $@
+
+am--depfiles: $(am__depfiles_remade)
 
 .c.o:
 @am__fastdepCC_TRUE@   $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -1322,7 +1337,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        fi;                                                             \
        $$success || exit 1
 
-check-TESTS:
+check-TESTS: 
        @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -1554,7 +1569,10 @@ test_xmlwriter.py.log: test_xmlwriter.py
 @am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
@@ -1657,7 +1675,17 @@ clean: clean-recursive
 clean-am: clean-generic clean-libtool mostlyclean-am
 
 distclean: distclean-recursive
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/barapp.Po
+       -rm -f ./$(DEPDIR)/gettype.Plo
+       -rm -f ./$(DEPDIR)/gtkfrob.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-annotation.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-drawable.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-foo.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-regress.Plo
+       -rm -f ./$(DEPDIR)/libsletter_la-sletter.Plo
+       -rm -f ./$(DEPDIR)/libwarnlib_la-warnlib.Plo
+       -rm -f ./$(DEPDIR)/typedefs.Plo
+       -rm -f ./$(DEPDIR)/utility.Plo
        -rm -f Makefile
 distclean-am: clean-am distclean-compile distclean-generic \
        distclean-tags
@@ -1703,7 +1731,17 @@ install-ps-am:
 installcheck-am:
 
 maintainer-clean: maintainer-clean-recursive
-       -rm -rf ./$(DEPDIR)
+               -rm -f ./$(DEPDIR)/barapp.Po
+       -rm -f ./$(DEPDIR)/gettype.Plo
+       -rm -f ./$(DEPDIR)/gtkfrob.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-annotation.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-drawable.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-foo.Plo
+       -rm -f ./$(DEPDIR)/libregress_la-regress.Plo
+       -rm -f ./$(DEPDIR)/libsletter_la-sletter.Plo
+       -rm -f ./$(DEPDIR)/libwarnlib_la-warnlib.Plo
+       -rm -f ./$(DEPDIR)/typedefs.Plo
+       -rm -f ./$(DEPDIR)/utility.Plo
        -rm -f Makefile
 maintainer-clean-am: distclean-am maintainer-clean-generic
 
@@ -1724,20 +1762,21 @@ uninstall-am: uninstall-testsDATA
 
 .MAKE: $(am__recursive_targets) check-am install-am install-strip
 
-.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
-       check-TESTS check-am clean clean-generic clean-libtool \
-       cscopelist-am ctags ctags-am distclean distclean-compile \
-       distclean-generic distclean-libtool distclean-tags distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       install-testsDATA installcheck installcheck-am installdirs \
-       installdirs-am maintainer-clean maintainer-clean-generic \
-       mostlyclean mostlyclean-compile mostlyclean-generic \
-       mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \
-       uninstall uninstall-am uninstall-testsDATA
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--depfiles check check-TESTS check-am clean clean-generic \
+       clean-libtool cscopelist-am ctags ctags-am distclean \
+       distclean-compile distclean-generic distclean-libtool \
+       distclean-tags distdir dvi dvi-am html html-am info info-am \
+       install install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip install-testsDATA installcheck installcheck-am \
+       installdirs installdirs-am maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+       recheck tags tags-am uninstall uninstall-am \
+       uninstall-testsDATA
 
 .PRECIOUS: Makefile
 
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-byte_array.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-byte_array.page
new file mode 100644 (file)
index 0000000..fa7fbe2
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-byte_array"
+      type="topic"
+      style="field"
+      xmlns="http://projectmallard.org/1.0/"
+      xmlns:api="http://projectmallard.org/experimental/api/"
+      xmlns:ui="http://projectmallard.org/1.0/ui/">
+  <info>
+    <link xref="Regress.TestObj" group="field" type="guide"/>
+  </info>
+  <title>Regress.TestObj->byte_array</title>
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-byte_array.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-byte_array.page
new file mode 100644 (file)
index 0000000..fa7fbe2
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-byte_array"
+      type="topic"
+      style="field"
+      xmlns="http://projectmallard.org/1.0/"
+      xmlns:api="http://projectmallard.org/experimental/api/"
+      xmlns:ui="http://projectmallard.org/1.0/ui/">
+  <info>
+    <link xref="Regress.TestObj" group="field" type="guide"/>
+  </info>
+  <title>Regress.TestObj->byte_array</title>
+
+
+</page>
index ad6af89..f69b851 100644 (file)
@@ -3709,6 +3709,11 @@ raise an error.</doc>
       <field name="name_conflict">
         <type name="gint" c:type="gint"/>
       </field>
+      <field name="byte_array">
+        <array name="GLib.ByteArray" c:type="GByteArray*">
+          <type name="guint8" c:type="guint8"/>
+        </array>
+      </field>
       <field name="function_ptr">
         <callback name="function_ptr">
           <return-value transfer-ownership="none">
index 8dd3c0e..c4e9440 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -660,8 +660,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 $(top_srcdir)/common.mk $(am__empty):
 
@@ -806,7 +806,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        fi;                                                             \
        $$success || exit 1
 
-check-TESTS:
+check-TESTS: 
        @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -856,7 +856,10 @@ test_patterns.py.log: test_patterns.py
 @am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
diff --git a/tests/scanner/meson.build b/tests/scanner/meson.build
new file mode 100644 (file)
index 0000000..ea7e9e5
--- /dev/null
@@ -0,0 +1,21 @@
+
+scanner_test_env = environment()
+scanner_test_env.append('PYTHONPATH', join_paths(meson.current_build_dir(), '../../'))
+
+scanner_test_files = [
+  'test_shlibs.py',
+]
+
+# FIXME: MSVC
+if cc.get_id() != 'msvc'
+  scanner_test_files += [
+    'test_sourcescanner.py',
+    'test_transformer.py',
+    'test_xmlwriter.py',
+    'test_pkgconfig.py',
+    ]
+endif
+
+foreach f : scanner_test_files 
+  test(f, python, args: files(f), env: scanner_test_env)
+endforeach
index 2302209..330a8d1 100644 (file)
@@ -2165,6 +2165,10 @@ regress_test_obj_set_property (GObject      *object,
       self->name_conflict = g_value_get_int (value);
       break;
 
+    case PROP_TEST_OBJ_BYTE_ARRAY:
+      self->byte_array = g_value_get_boxed (value);
+      break;
+
     default:
       /* We don't have any other property... */
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -2226,6 +2230,10 @@ regress_test_obj_get_property (GObject    *object,
       g_value_set_int (value, self->name_conflict);
       break;
 
+    case PROP_TEST_OBJ_BYTE_ARRAY:
+      g_value_set_boxed (value, self->byte_array);
+      break;
+
     default:
       /* We don't have any other property... */
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
index f07d162..f0885f2 100644 (file)
@@ -780,6 +780,7 @@ struct _RegressTestObj
   char* string;
   GType gtype;
   gint name_conflict;
+  GByteArray *byte_array;
 
   /* < private > */
   void (*function_ptr) (void);
index cca0bf8..e81dedb 100644 (file)
@@ -27,9 +27,7 @@ import contextlib
 import os
 import sys
 import tempfile
-import tempfile
 import textwrap
-import time
 import unittest
 
 from giscanner import pkgconfig
index 467f0c5..c0fb2d6 100644 (file)
@@ -9,11 +9,6 @@ import os
 import sys
 import textwrap
 
-if sys.version_info.major < 3:
-    import __builtin__ as builtins
-else:
-    import builtins
-
 
 os.environ['GI_SCANNER_DISABLE_CACHE'] = '1'
 
@@ -380,7 +375,7 @@ class TestNestedStructs(unittest.TestCase):
         self.assertEqual(len(node.fields), 1)
 
         simple = self.namespace.get('SimpleStruct')
-        self.assertTrue(node is not None)
+        self.assertTrue(simple is not None)
 
         field = node.fields[0]
         self.assertTrue(field is not None)
index 583972e..54b1fef 100644 (file)
@@ -1,7 +1,7 @@
-# Makefile.in generated by automake 1.15.1 from Makefile.am.
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
 # @configure_input@
 
-# Copyright (C) 1994-2017 Free Software Foundation, Inc.
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
 
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -616,8 +616,8 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
          *config.status*) \
            cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
          *) \
-           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
        esac;
 $(top_srcdir)/common.mk $(am__empty):
 
@@ -762,7 +762,7 @@ $(TEST_SUITE_LOG): $(TEST_LOGS)
        fi;                                                             \
        $$success || exit 1
 
-check-TESTS:
+check-TESTS: 
        @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
        @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
        @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
@@ -931,7 +931,10 @@ unresolved-type.h.log: unresolved-type.h
 @am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
 @am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
-distdir: $(DISTFILES)
+distdir: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
index 6b0ae7d..f17c888 100644 (file)
@@ -157,4 +157,5 @@ def check(args):
                              "warning:\n%s" % (filename,
                                                _diff([expected_warning], [emitted_warning])))
 
+
 sys.exit(check(sys.argv[1:]))
index 39b1b3d..ed33d16 100755 (executable)
@@ -1,4 +1,4 @@
-#!/usr/bin/env @PYTHON@
+#!@PYTHON_CMD@
 # -*- Mode: Python -*-
 # GObject-Introspection - a framework for introspecting GObject libraries
 # Copyright (C) 2008  Johan Dahlin
@@ -25,6 +25,7 @@ from __future__ import unicode_literals
 
 import os
 import sys
+import sysconfig
 
 if sys.version_info.major < 3:
     import __builtin__ as builtins
@@ -61,7 +62,11 @@ builtins.__dict__['DATADIR'] = datadir
 
 # Again, relative paths first so that the installation prefix is relocatable
 pylibdir = os.path.abspath(os.path.join(filedir, '..', 'lib', 'gobject-introspection'))
-if not os.path.isfile(os.path.join(pylibdir, 'giscanner', '_giscanner.so')):
+
+# EXT_SUFFIX for py3 SO for py2
+py_mod_suffix = sysconfig.get_config_var('EXT_SUFFIX') or sysconfig.get_config_var('SO')
+
+if not os.path.isfile(os.path.join(pylibdir, 'giscanner', '_giscanner' + py_mod_suffix)):
     # Running uninstalled?
     builddir = os.getenv('UNINSTALLED_INTROSPECTION_BUILDDIR', None)
     if builddir is not None:
index 7347266..912eb6b 100644 (file)
@@ -9,13 +9,18 @@ if get_option('doctool')
   tools += [['g-ir-doc-tool', 'docmain', 'doc_main']]
 endif
 
-python_name = 'python@0@'.format(python.language_version().split('.')[0])
+if cc.get_id() == 'msvc'
+  python_cmd = python.get_variable('prefix') + '\\python.exe'
+else
+  python_cmd = '/usr/bin/env python@0@'.format(python.language_version().split('.')[0])
+endif
+
 tool_output = []
 foreach tool : tools
   tools_conf = configuration_data()
   tools_conf.set('libdir', libdir_abs)
   tools_conf.set('datarootdir', datadir_abs)
-  tools_conf.set('PYTHON', python_name)
+  tools_conf.set('PYTHON_CMD', python_cmd)
 
   tools_conf.set('TOOL_MODULE', tool[1])
   tools_conf.set('TOOL_FUNCTION', tool[2])