summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-09-04 16:13:21 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-09-04 16:13:21 +0000
commita194122be492fbddd8748fe323a648434a866c36 (patch)
treef39293588b7922faa40f0c6b985a031f8f5cf0ae
parent8a2a9f9db169eaaf2a7eede18e0ceba0af44345f (diff)
parent85d02d59f101f9eb37829b16a81890ef9801824a (diff)
downloadgobject-introspection-baserock/jonathan/fix-giscanner.tar.gz
merge with GOBJECT_INTROSPECTION_1_37_6baserock/jonathan/fix-giscanner
-rw-r--r--.gitignore55
-rw-r--r--Makefile-gir.am8
-rw-r--r--Makefile-girepository.am5
-rw-r--r--Makefile-giscanner.am71
-rw-r--r--Makefile-msvcproj.am205
-rw-r--r--Makefile.am23
-rw-r--r--Makefile.introspection6
-rw-r--r--build/Makefile.am1
-rw-r--r--build/win32/Makefile.am16
-rw-r--r--build/win32/Regress.def272
-rw-r--r--build/win32/annotation.def48
-rw-r--r--build/win32/create_nonglib_gir.py72
-rw-r--r--build/win32/everything.def106
-rw-r--r--build/win32/foo.def48
-rw-r--r--build/win32/gengir.bat284
-rw-r--r--build/win32/gettype.def6
-rw-r--r--build/win32/gimarshallingtests.def583
-rw-r--r--build/win32/gtkfrob.def2
-rw-r--r--build/win32/sletter.def4
-rw-r--r--build/win32/test_gir_cmd.txt117
-rw-r--r--build/win32/testinherit.def6
-rw-r--r--build/win32/utility.def4
-rw-r--r--build/win32/vs10/Makefile.am47
-rw-r--r--build/win32/vs10/README.txt88
-rw-r--r--build/win32/vs10/_giscanner.vcxproj182
-rw-r--r--build/win32/vs10/_giscanner.vcxproj.filters31
-rw-r--r--build/win32/vs10/annotation.vcxproj175
-rw-r--r--build/win32/vs10/annotation.vcxproj.filters22
-rw-r--r--build/win32/vs10/cmph-bdz-test.vcxproj174
-rw-r--r--build/win32/vs10/cmph-bdz-test.vcxproj.filters22
-rw-r--r--build/win32/vs10/cmph.vcxproj.filtersin20
-rw-r--r--build/win32/vs10/cmph.vcxprojin135
-rw-r--r--build/win32/vs10/everything.vcxproj201
-rw-r--r--build/win32/vs10/everything.vcxproj.filters22
-rw-r--r--build/win32/vs10/foo.vcxproj181
-rw-r--r--build/win32/vs10/foo.vcxproj.filters22
-rw-r--r--build/win32/vs10/g-ir-compiler.vcxproj.filtersin21
-rw-r--r--build/win32/vs10/g-ir-compiler.vcxprojin184
-rw-r--r--build/win32/vs10/g-ir-generate.vcxproj170
-rw-r--r--build/win32/vs10/g-ir-generate.vcxproj.filters25
-rw-r--r--build/win32/vs10/generate_typelibs.vcxproj103
-rw-r--r--build/win32/vs10/gettype.vcxproj175
-rw-r--r--build/win32/vs10/gettype.vcxproj.filters22
-rw-r--r--build/win32/vs10/gimarshallingtests.vcxproj175
-rw-r--r--build/win32/vs10/gimarshallingtests.vcxproj.filters22
-rw-r--r--build/win32/vs10/gir.propsin228
-rw-r--r--build/win32/vs10/girepository.vcxproj.filtersin20
-rw-r--r--build/win32/vs10/girepository.vcxprojin201
-rw-r--r--build/win32/vs10/glib-print.vcxproj169
-rw-r--r--build/win32/vs10/glib-print.vcxproj.filters22
-rw-r--r--build/win32/vs10/gobject-introspection.sln206
-rw-r--r--build/win32/vs10/gtkfrob.vcxproj175
-rw-r--r--build/win32/vs10/gtkfrob.vcxproj.filters22
-rw-r--r--build/win32/vs10/install.vcxproj124
-rw-r--r--build/win32/vs10/regress.vcxproj179
-rw-r--r--build/win32/vs10/regress.vcxproj.filters22
-rw-r--r--build/win32/vs10/sletter.vcxproj175
-rw-r--r--build/win32/vs10/sletter.vcxproj.filters22
-rw-r--r--build/win32/vs10/testinherit.vcxproj175
-rw-r--r--build/win32/vs10/testinherit.vcxproj.filters22
-rw-r--r--build/win32/vs10/utility.vcxproj175
-rw-r--r--build/win32/vs10/utility.vcxproj.filters22
-rw-r--r--build/win32/vs9/Makefile.am30
-rw-r--r--build/win32/vs9/README.txt88
-rw-r--r--build/win32/vs9/_giscanner.vcproj193
-rw-r--r--build/win32/vs9/annotation.vcproj186
-rw-r--r--build/win32/vs9/cmph-bdz-test.vcproj179
-rw-r--r--build/win32/vs9/cmph.vcprojin143
-rw-r--r--build/win32/vs9/everything.vcproj190
-rw-r--r--build/win32/vs9/foo.vcproj186
-rw-r--r--build/win32/vs9/g-ir-compiler.vcprojin185
-rw-r--r--build/win32/vs9/g-ir-generate.vcproj175
-rw-r--r--build/win32/vs9/generate_typelibs.vcproj74
-rw-r--r--build/win32/vs9/gettype.vcproj186
-rw-r--r--build/win32/vs9/gimarshallingtests.vcproj186
-rw-r--r--build/win32/vs9/gir.vspropsin170
-rw-r--r--build/win32/vs9/girepository.vcprojin234
-rw-r--r--build/win32/vs9/glib-print.vcproj174
-rw-r--r--build/win32/vs9/gobject-introspection.sln239
-rw-r--r--build/win32/vs9/gtkfrob.vcproj186
-rw-r--r--build/win32/vs9/install.vcproj77
-rw-r--r--build/win32/vs9/regress.vcproj190
-rw-r--r--build/win32/vs9/sletter.vcproj186
-rw-r--r--build/win32/vs9/testinherit.vcproj186
-rw-r--r--build/win32/vs9/utility.vcproj186
-rw-r--r--common.mk7
-rw-r--r--config.h.win32.in136
-rw-r--r--configure.ac85
-rw-r--r--docs/g-ir-scanner.14
-rw-r--r--docs/reference/Makefile.am2
-rw-r--r--docs/reference/gi-docs.sgml1
-rw-r--r--docs/reference/gi-overview.xml1
-rw-r--r--docs/reference/gi-sections.txt1
-rw-r--r--docs/reference/gi-struct-hierarchy.xml1
-rw-r--r--examples/glib-print.c66
-rw-r--r--gir/gio-2.0.c2509
-rw-r--r--gir/glib-2.0.c1093
-rw-r--r--gir/gobject-2.0.c222
-rw-r--r--gir/win32-1.0.gir19
-rw-r--r--girepository/cmph-bdz-test.c1
-rwxr-xr-xgirepository/cmph/bdz.c19
-rwxr-xr-xgirepository/cmph/bdz_ph.c12
-rw-r--r--girepository/cmph/bmz.c29
-rw-r--r--girepository/cmph/bmz8.c24
-rwxr-xr-xgirepository/cmph/brz.c173
-rw-r--r--girepository/cmph/chd.c8
-rw-r--r--girepository/cmph/chd_ph.c11
-rw-r--r--girepository/cmph/chm.c26
-rw-r--r--girepository/cmph/compressed_rank.c16
-rw-r--r--girepository/cmph/compressed_seq.c42
-rw-r--r--girepository/cmph/fch.c43
-rw-r--r--girepository/gdump.c9
-rw-r--r--girepository/gi-dump-types.c2
-rw-r--r--girepository/gibaseinfo.c25
-rw-r--r--girepository/gienuminfo.c12
-rw-r--r--girepository/girepository-private.h9
-rw-r--r--girepository/girepository.c117
-rw-r--r--girepository/girepository.h1
-rw-r--r--girepository/girepository.symbols196
-rw-r--r--girepository/girffi.c2
-rw-r--r--girepository/girmodule.c3
-rw-r--r--girepository/girnode.c15
-rw-r--r--girepository/girnode.h2
-rw-r--r--girepository/giroffsets.c4
-rw-r--r--girepository/girparser.c85
-rw-r--r--girepository/gitypelib-internal.h8
-rw-r--r--girepository/gitypelib.c241
-rw-r--r--girepository/gthash-test.c1
-rw-r--r--girepository/gthash.c2
-rw-r--r--giscanner/annotationmain.py1
-rw-r--r--giscanner/annotationparser.py556
-rw-r--r--giscanner/annotationpatterns.py808
-rw-r--r--giscanner/ast.py152
-rw-r--r--giscanner/cachestore.py21
-rw-r--r--giscanner/codegen.py12
-rw-r--r--giscanner/collections/__init__.py22
-rw-r--r--giscanner/collections/ordereddict.py120
-rw-r--r--giscanner/docmain.py26
-rw-r--r--giscanner/doctemplates/C/class.tmpl2
-rw-r--r--giscanner/doctemplates/C/constructor.tmpl1
-rw-r--r--giscanner/doctemplates/C/default.tmpl1
-rw-r--r--giscanner/doctemplates/C/enum.tmpl2
-rw-r--r--giscanner/doctemplates/C/function.tmpl61
-rw-r--r--giscanner/doctemplates/C/method.tmpl1
-rw-r--r--giscanner/doctemplates/C/namespace.tmpl1
-rw-r--r--giscanner/doctemplates/C/property.tmpl5
-rw-r--r--giscanner/doctemplates/C/record.tmpl1
-rw-r--r--giscanner/doctemplates/C/signal.tmpl5
-rw-r--r--giscanner/doctemplates/C/vfunc.tmpl4
-rw-r--r--giscanner/doctemplates/Gjs/class.tmpl18
-rw-r--r--giscanner/doctemplates/Gjs/constructor.tmpl1
-rw-r--r--giscanner/doctemplates/Gjs/default.tmpl1
-rw-r--r--giscanner/doctemplates/Gjs/enum.tmpl13
-rw-r--r--giscanner/doctemplates/Gjs/function.tmpl48
-rw-r--r--giscanner/doctemplates/Gjs/method.tmpl1
-rw-r--r--giscanner/doctemplates/Gjs/namespace.tmpl2
-rw-r--r--giscanner/doctemplates/Gjs/property.tmpl10
-rw-r--r--giscanner/doctemplates/Gjs/record.tmpl2
-rw-r--r--giscanner/doctemplates/Gjs/signal.tmpl37
-rw-r--r--giscanner/doctemplates/Gjs/vfunc.tmpl27
-rw-r--r--giscanner/doctemplates/Python/class.tmpl17
-rw-r--r--giscanner/doctemplates/Python/constructor.tmpl1
-rw-r--r--giscanner/doctemplates/Python/default.tmpl1
-rw-r--r--giscanner/doctemplates/Python/enum.tmpl13
-rw-r--r--giscanner/doctemplates/Python/function.tmpl53
-rw-r--r--giscanner/doctemplates/Python/method.tmpl1
-rw-r--r--giscanner/doctemplates/Python/namespace.tmpl2
-rw-r--r--giscanner/doctemplates/Python/property.tmpl10
-rw-r--r--giscanner/doctemplates/Python/record.tmpl2
-rw-r--r--giscanner/doctemplates/Python/signal.tmpl42
-rw-r--r--giscanner/doctemplates/Python/vfunc.tmpl33
-rw-r--r--giscanner/doctemplates/base.tmpl29
-rw-r--r--giscanner/doctemplates/class.tmpl40
-rw-r--r--giscanner/doctemplates/namespace.tmpl19
-rw-r--r--giscanner/docwriter.py644
-rw-r--r--giscanner/dumper.py117
-rw-r--r--giscanner/gdumpparser.py23
-rw-r--r--giscanner/girparser.py158
-rw-r--r--giscanner/girwriter.py81
-rw-r--r--giscanner/giscannermodule.c104
-rw-r--r--giscanner/introspectablepass.py56
-rw-r--r--giscanner/libtoolimporter.py2
-rw-r--r--giscanner/maintransformer.py247
-rw-r--r--giscanner/mallard-C-class.tmpl48
-rw-r--r--giscanner/mallard-C-default.tmpl11
-rw-r--r--giscanner/mallard-C-enum.tmpl12
-rw-r--r--giscanner/mallard-C-function.tmpl95
-rw-r--r--giscanner/mallard-C-namespace.tmpl19
-rw-r--r--giscanner/mallard-C-property.tmpl13
-rw-r--r--giscanner/mallard-C-record.tmpl12
-rw-r--r--giscanner/mallard-C-signal.tmpl13
-rw-r--r--giscanner/mallard-C-vfunc.tmpl35
-rw-r--r--giscanner/mallard-Python-class.tmpl66
-rw-r--r--giscanner/mallard-Python-default.tmpl11
-rw-r--r--giscanner/mallard-Python-enum.tmpl23
-rw-r--r--giscanner/mallard-Python-function.tmpl88
-rw-r--r--giscanner/mallard-Python-namespace.tmpl19
-rw-r--r--giscanner/mallard-Python-property.tmpl16
-rw-r--r--giscanner/mallard-Python-record.tmpl12
-rw-r--r--giscanner/mallard-Python-signal.tmpl52
-rw-r--r--giscanner/mallard-Python-vfunc.tmpl56
-rw-r--r--giscanner/mallardwriter.py392
-rw-r--r--giscanner/message.py18
-rw-r--r--giscanner/odict.py45
-rw-r--r--giscanner/scannerlexer.l36
-rwxr-xr-xgiscanner/scannermain.py102
-rw-r--r--giscanner/scannerparser.y11
-rw-r--r--giscanner/sectionparser.py152
-rw-r--r--giscanner/shlibs.py9
-rw-r--r--giscanner/sourcescanner.c25
-rw-r--r--giscanner/sourcescanner.h2
-rw-r--r--giscanner/sourcescanner.py35
-rw-r--r--giscanner/testcodegen.py3
-rw-r--r--giscanner/transformer.py177
-rw-r--r--giscanner/utils.py11
-rwxr-xr-xgiscanner/xmlwriter.py54
-rw-r--r--m4/python.m417
-rw-r--r--misc/pep8.py1884
-rwxr-xr-xmisc/pre-commit86
-rw-r--r--tests/Makefile.am10
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-property-example.page13
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-signal-example.page13
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-vfunc.page27
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.method.page81
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.new.page30
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.page46
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/DocExamples.ObjClass.page12
-rw-r--r--tests/doctool/DocExamples-1.0-C-expected/index.page19
-rw-r--r--tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-property-example.page16
-rw-r--r--tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-signal-example.page40
-rw-r--r--tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-vfunc.page27
-rw-r--r--tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.method.page78
-rw-r--r--tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.page53
-rw-r--r--tests/doctool/DocExamples-1.0-Python-expected/index.page19
-rw-r--r--tests/doctool/Makefile.am45
-rw-r--r--tests/doctool/doc-examples-obj.c127
-rw-r--r--tests/doctool/doc-examples-obj.h64
-rw-r--r--tests/gimarshallingtests.c3709
-rw-r--r--tests/gimarshallingtests.h247
-rwxr-xr-xtests/offsets/gen-gitestoffsets2
-rw-r--r--tests/repository/Makefile.am7
-rw-r--r--tests/repository/gitestrepo.c2
-rw-r--r--tests/repository/gitestthrows.c2
-rw-r--r--tests/repository/gitypelibtest.c376
-rw-r--r--tests/scanner/Annotation-1.0-expected.gir853
-rw-r--r--tests/scanner/Bar-1.0-expected.gir4
-rw-r--r--tests/scanner/Foo-1.0-expected.gir275
-rw-r--r--tests/scanner/GetType-1.0-expected.gir19
-rw-r--r--tests/scanner/GtkFrob-1.0-expected.gir1
-rw-r--r--tests/scanner/Makefile.am174
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.ATestError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AliasedTestBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationBitfield.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationForeachFunc.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationListCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationNotifyFunc.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-attribute-signal.page44
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page39
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-function-property.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-list-signal.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-property.page27
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-signal.page41
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-tab-property.page28
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.allow_none.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleeowns.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleesowns.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_n.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_nz.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.create_object.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.do_not_use.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.extra_annos.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.foreach.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_hash.page49
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_objects.page50
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_strings.page49
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.hidden_self.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout2.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout3.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.notrans.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.out.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.parse_args.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data2.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data3.page67
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.string_out.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.use_buffer.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch.page67
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch_full.page75
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.with_voidp.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.AnnotationStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooASingle.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooAddressType.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.add.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.new.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.get_contained_type.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.page61
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.some_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEnumFullname.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEnumNoType.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.returnv.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooError.quark.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEvent.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEventAny.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooEventExpose.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsNoType.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsType.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.copy.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooInterface-do_regress_foo.page43
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.do_regress_foo.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.page55
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.static_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.do_regress_foo.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject-hidden.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject-read_fn.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject-signal.page44
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject-string.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject-virtual_method.page43
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.a_global_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.append_new_stack_layer.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.dup_name.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.external_type.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_default.page41
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_name.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.handle_glyph.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.is_it_time_yet.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_as_super.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_cookie.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.read.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.skipped_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.static_meth.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.take_all.page63
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.various.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObject.virtual_method.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.read_fn.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.virtual_method.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooObjectCookie.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooOtherObject.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.add.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.new.page76
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSkippable.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooStackLayer.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy-event.page35
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy_event.page38
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_bar.page38
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_baz.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_bar.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_baz.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.page55
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.destroy_event.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_bar.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_baz.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.page61
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooSubobjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooThingWithArray.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooUnion.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooUtilityStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooVarargsCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.FooXEvent.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.IntSet.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.LikeGnomeKeyringPasswordSchema.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.set_name.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.PtrArrayAlias.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.SkippedStructure.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.quark.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.copy.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.equals.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor1.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor2.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor3.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.copy.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.new.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.copy.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.free.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.get_magic.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.new.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackArray.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackFull.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackGError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackHashtable.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackOwnedGError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackUserData.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestDEFError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.param.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestEnumNoGEnum.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestEnumUnsigned.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestError.quark.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFlags.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.page61
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFloatingClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.page55
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.ref.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.unref.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectCopyFunction.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectFinalizeFunction.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.new.page50
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_origin.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_size.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawableClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInheritPixmapObjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInterface.page55
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestInterfaceIface.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-all.page35
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-allow_none_vfunc.page43
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-bare.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-boxed.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-cleanup.page35
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-double.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-first.page35
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-float.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-gtype.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table-old.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-int.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list-old.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-matrix.page45
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page44
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-prop.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-foreign-struct.page39
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-hash-prop.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-int64-prop.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-intarray-ret.page39
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-obj.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-strv.page39
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-uint64-prop.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-string.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test-with-static-scope-arg.page39
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test.page35
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.constructor.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.do_matrix.page59
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_foreign_struct.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_int64.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_obj.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_uint64.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.forced_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method_callback.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_callback.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_from_file.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.null_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.set_bare.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_inout_param.page111
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_out_param.page111
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_param.page111
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val.page111
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val_no_out.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_0.page102
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_1.page102
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved1.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved2.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.allow_none_vfunc.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.matrix.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.quark.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateEnum.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestReferenceEnum.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.const_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.copy.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.equals.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.copy.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.clone.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.parse.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.clone.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructC.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructD.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructE.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructE__some_union__union.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructF.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.frob.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.instance_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.page61
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.unset_bare.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestSubObjClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestTypeGUInt64.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x-testbool.page26
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.get_testbool.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.new.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.set_testbool.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.static_method.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021xClass.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.VaListAlias.page25
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.aliased_caller_alloc.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_attribute_func.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_custom_destroy.page67
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_get_source_file.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_init.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_invalid_regress_annotation.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_ptr_array.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_array.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_filename.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_set_source_file.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_space_after_comment_bug631690.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_array_length.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_test_parsing_bug630862.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.annotation_versioned.page41
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.atest_error_quark.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_async_ready_callback.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_destroy_notify_callback.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_init.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_method_external_references.page75
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_not_a_constructor_new.page41
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_skip_me.page49
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant_ptr.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_array.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_param.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_retval.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_param.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_retval.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array_with_g.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_qualifier.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_type.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback2.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback3.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.func_obj_null_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.global_get_flags_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.has_parameter_named_attrs.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.introspectable_via_alias.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.not_introspectable_via_alias.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.random_function_with_skipped_structure.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.set_abort_on_error.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_out_objects.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint16_in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint32_in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint64_in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint8_in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_gtype_in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_full_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_inout.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_none_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_in.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_out.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_out.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_async_ready_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_boolean.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_false.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_true.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_full_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_none_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_callback_async.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify.page67
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify_no_user_data.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_async.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_notifications.page42
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_callback_user_data.page58
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_closure.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_closure_one_arg.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_closure_variant.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_date_in_gvalue.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_def_error_quark.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_double.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_filename_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_float.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_garray_container_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_garray_full_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gerror_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_container_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_everything_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return2.page41
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in2.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return2.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_container_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_everything_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in2.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return2.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_container_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_everything_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in2.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return2.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gtype.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_as.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_asv.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_i.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_s.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_v.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_hash_table_callback.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_int.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_int16.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_int32.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_int64.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_int8.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_int_out_utf8.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_int_value_arg.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_long.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_multi_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_multi_double_args.page66
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_multiline_doc_comments.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_nested_parameter.page73
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_null_gerror_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_owned_gerror_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_short.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_simple_callback.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_size.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_skip_unannotated_callback.page49
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ssize.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in_gvalue.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_c.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_container.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_strv_outarg.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_timet.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_0.page93
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_1.page93
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_2.page120
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_uint.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_uint16.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_uint32.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_uint64.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_uint8.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ulong.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_unichar.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_unsigned_enum_param.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_ushort.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_inout.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_nonconst_return.page40
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_in.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_nonconst_return.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_out.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_value_get_fundamental_object.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_value_return.page48
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_value_set_fundamental_object.page57
-rw-r--r--tests/scanner/Regress-1.0-C-expected/Regress.test_versioning.page41
-rw-r--r--tests/scanner/Regress-1.0-C-expected/index.page32
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.ATestError.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AliasedTestBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationBitfield.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationForeachFunc.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationListCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationNotifyFunc.page26
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-attribute-signal.page47
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-function-property.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-list-signal.page40
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-property.page30
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-signal.page41
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-tab-property.page31
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.allow_none.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleeowns.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleesowns.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_n.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_nz.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.create_object.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.do_not_use.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.extra_annos.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.foreach.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_hash.page43
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_objects.page44
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_strings.page43
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.hidden_self.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout2.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout3.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.method.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.notrans.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.out.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.page67
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.parse_args.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data2.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data3.page47
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.string_out.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.use_buffer.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.watch_full.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.with_voidp.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooASingle.page31
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooAddressType.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.add.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.new.page58
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.get_contained_type.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.method.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.page66
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.some_method.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.method.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumFullname.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumNoType.page43
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.method.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.returnv.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventAny.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventExpose.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsNoType.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsType.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.copy.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface-do_regress_foo.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.do_regress_foo.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.page60
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.static_method.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-read_fn.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-signal.page47
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-string.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-virtual_method.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.a_global_method.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.append_new_stack_layer.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.dup_name.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.external_type.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_default.page43
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_name.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.handle_glyph.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.is_it_time_yet.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new_as_super.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.page66
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.read.page54
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.static_meth.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.various.page54
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.virtual_method.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObjectCookie.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooOtherObject.page63
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.add.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStackLayer.page63
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy-event.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy_event.page31
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_bar.page31
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_baz.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_bar.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_baz.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.page60
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.page66
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooThingWithArray.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUtilityStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.FooXEvent.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeGnomeKeyringPasswordSchema.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.set_name.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.PtrArrayAlias.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.copy.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.equals.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor1.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor2.page58
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor3.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.copy.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.new.page58
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.copy.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.free.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.get_magic.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.new.page58
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackArray.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackFull.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackGError.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackHashtable.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackOwnedGError.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackUserData.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestDEFError.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.page43
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.param.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumNoGEnum.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumUnsigned.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFlags.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.page66
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.page60
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.ref.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.unref.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectCopyFunction.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectFinalizeFunction.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.new.page52
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.page63
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_origin.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_size.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.page63
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritPixmapObjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInterface.page60
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-all.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-allow_none_vfunc.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-bare.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-boxed.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-cleanup.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-double.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-first.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-float.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-gtype.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table-old.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-int.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list-old.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-matrix.page41
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-prop.page40
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-foreign-struct.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-hash-prop.page40
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-int64-prop.page44
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-intarray-ret.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-obj.page40
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-strv.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-uint64-prop.page44
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-string.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test-with-static-scope-arg.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test.page35
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.constructor.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.do_matrix.page52
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_foreign_struct.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_int64.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_obj.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_uint64.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.forced_method.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_callback.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_from_file.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.null_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.page75
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.set_bare.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_inout_param.page82
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_out_param.page82
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_param.page82
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val.page82
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val_no_out.page51
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_0.page62
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_1.page66
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateEnum.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestReferenceEnum.page51
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.const_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.copy.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.equals.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.copy.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.clone.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.parse.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.clone.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructC.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructD.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructF.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.frob.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.instance_method.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.page66
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.unset_bare.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestTypeGUInt64.page25
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x-testbool.page29
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.get_testbool.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.new.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.page65
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.set_testbool.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.static_method.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.aliased_caller_alloc.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_attribute_func.page58
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_custom_destroy.page47
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_get_source_file.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_init.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_invalid_regress_annotation.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_ptr_array.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_array.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_filename.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_set_source_file.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_space_after_comment_bug631690.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_array_length.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated_out.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_test_parsing_bug630862.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_versioned.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.atest_error_quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_async_ready_callback.page54
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_destroy_notify_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_init.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_method_external_references.page70
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_not_a_constructor_new.page43
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_array.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_param.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_retval.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_param.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_retval.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array_with_g.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_qualifier.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_type.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.func_obj_null_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.global_get_flags_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.has_parameter_named_attrs.page55
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.introspectable_via_alias.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.set_abort_on_error.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_callback.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_out_objects.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint16_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint32_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint64_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint8_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gtype_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_full_out.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_inout.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_none_out.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_async_ready_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_false.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_true.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_full_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_none_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_async.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify.page51
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify_no_user_data.page51
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_async.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_notifications.page44
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_user_data.page51
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_one_arg.page58
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_variant.page58
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_date_in_gvalue.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_def_error_quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_double.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_filename_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_float.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_full_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gerror_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return2.page43
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in2.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return2.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in2.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return2.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in2.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return2.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gtype.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_as.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_asv.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_i.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_s.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_v.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_hash_table_callback.page54
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int16.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int32.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int64.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int8.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_out_utf8.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_value_arg.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_long.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_callback.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_double_args.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multiline_doc_comments.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_nested_parameter.page71
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_null_gerror_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_owned_gerror_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_short.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_simple_callback.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_size.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ssize.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in_gvalue.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_c.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_container.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_outarg.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_timet.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_0.page62
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_1.page66
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_2.page70
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint16.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint32.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint64.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint8.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ulong.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unichar.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unsigned_enum_param.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ushort.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_inout.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_nonconst_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_in.page46
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_nonconst_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_out.page38
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_value_return.page50
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/Regress.test_versioning.page39
-rw-r--r--tests/scanner/Regress-1.0-Gjs-expected/index.page32
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.ATestError.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AliasedTestBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationBitfield.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationForeachFunc.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationListCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationNotifyFunc.page26
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-attribute-signal.page53
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page45
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-function-property.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-list-signal.page46
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-property.page30
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-signal.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-tab-property.page31
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.allow_none.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleeowns.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleesowns.page67
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_n.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_nz.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.create_object.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.do_not_use.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.extra_annos.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.foreach.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_hash.page52
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_objects.page53
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_strings.page52
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.hidden_self.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.in.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout2.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout3.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.method.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.notrans.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.out.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.page62
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.parse_args.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data2.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data3.page64
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.string_out.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.use_buffer.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.watch_full.page71
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.with_voidp.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooASingle.page31
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooAddressType.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.add.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.get_contained_type.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.method.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.page65
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.some_method.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.method.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumFullname.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumNoType.page43
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.method.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.returnv.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooError.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEvent.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEventAny.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooEventExpose.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsNoType.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsType.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.copy.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface-do_regress_foo.page40
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.do_regress_foo.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.static_method.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-read_fn.page44
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-signal.page53
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-string.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-virtual_method.page44
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.a_global_method.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.append_new_stack_layer.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.dup_name.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.external_type.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_default.page43
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_name.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.handle_glyph.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.is_it_time_yet.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.page62
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.read.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.static_meth.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.various.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.virtual_method.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooObjectCookie.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooOtherObject.page62
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.add.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooStackLayer.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy-event.page41
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy_event.page36
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_bar.page36
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_baz.page44
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_bar.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_baz.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooSubobject.page65
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooThingWithArray.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooUnion.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooUtilityStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.FooXEvent.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.LikeGnomeKeyringPasswordSchema.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.set_name.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.PtrArrayAlias.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.copy.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.equals.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.copy.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedC.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.copy.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.free.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.get_magic.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackArray.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackFull.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackGError.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackHashtable.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackOwnedGError.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackUserData.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestDEFError.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.page43
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.param.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumNoGEnum.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumUnsigned.page35
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestError.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFlags.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFloating.page65
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.ref.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.unref.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectCopyFunction.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectFinalizeFunction.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalSubObject.page62
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_origin.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_size.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.page62
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritPixmapObjectClass.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestInterface.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-all.page41
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-allow_none_vfunc.page40
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-bare.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-boxed.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-cleanup.page41
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-double.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-first.page41
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-float.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-gtype.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table-old.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-int.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list-old.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-matrix.page46
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page49
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-prop.page46
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-foreign-struct.page45
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-hash-prop.page46
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-int64-prop.page50
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-intarray-ret.page45
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-obj.page46
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-strv.page45
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-uint64-prop.page50
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-string.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test-with-static-scope-arg.page45
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test.page41
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.do_matrix.page61
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_foreign_struct.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_int64.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_obj.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_uint64.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.forced_method.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method_callback.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.null_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.page62
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.set_bare.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_inout_param.page107
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_out_param.page107
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_param.page107
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val.page107
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val_no_out.page60
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method_callback.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_0.page95
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_1.page99
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateEnum.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateStruct.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestReferenceEnum.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.const_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.copy.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.equals.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.copy.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleCallback.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.clone.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.parse.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.clone.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructC.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructD.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE__some_union__union.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructF.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.frob.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.instance_method.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.page65
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.unset_bare.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestTypeGUInt64.page25
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x-testbool.page29
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.get_testbool.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.page62
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.set_testbool.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.static_method.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.aliased_caller_alloc.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_attribute_func.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_custom_destroy.page64
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_get_source_file.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_init.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_invalid_regress_annotation.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_ptr_array.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_array.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_filename.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_set_source_file.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_space_after_comment_bug631690.page38
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_array_length.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_test_parsing_bug630862.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.annotation_versioned.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.atest_error_quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_async_ready_callback.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_destroy_notify_callback.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_init.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_method_external_references.page71
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_not_a_constructor_new.page43
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_array.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_param.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_retval.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_param.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_retval.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array_with_g.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_qualifier.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_type.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.func_obj_null_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.global_get_flags_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.has_parameter_named_attrs.page56
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.introspectable_via_alias.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.set_abort_on_error.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_callback.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_out_objects.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_in.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint16_in.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint32_in.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint64_in.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint8_in.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gtype_in.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_full_out.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_in.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_inout.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_none_out.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_in.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_out.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_out.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_async_ready_callback.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_false.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_true.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_full_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_none_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_callback.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_async.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify.page68
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify_no_user_data.page60
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_async.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_notifications.page44
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_user_data.page60
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_closure.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_one_arg.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_variant.page59
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_date_in_gvalue.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_def_error_quark.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_double.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_filename_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_float.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_full_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gerror_callback.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return2.page43
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in2.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return2.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in2.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return2.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_container_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_everything_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in2.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return2.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gtype.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_as.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_asv.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_i.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_s.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_v.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_hash_table_callback.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_int.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_int16.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_int32.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_int64.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_int8.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_int_out_utf8.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_int_value_arg.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_long.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_callback.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_double_args.page63
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_multiline_doc_comments.page38
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_nested_parameter.page72
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_null_gerror_callback.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_owned_gerror_callback.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_short.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_simple_callback.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_size.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ssize.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in_gvalue.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_c.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_container.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_outarg.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_timet.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_0.page87
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_1.page91
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_2.page111
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_uint.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_uint16.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_uint32.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_uint64.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_uint8.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ulong.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_unichar.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_unsigned_enum_param.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_ushort.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_inout.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_nonconst_return.page42
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_in.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out.page47
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_nonconst_return.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_out.page55
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_value_return.page51
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/Regress.test_versioning.page39
-rw-r--r--tests/scanner/Regress-1.0-Python-expected/index.page32
-rw-r--r--tests/scanner/Regress-1.0-expected.gir3184
-rw-r--r--tests/scanner/Regress-1.0-sections-expected.txt362
-rw-r--r--tests/scanner/SLetter-1.0-expected.gir20
-rw-r--r--tests/scanner/TestInherit-1.0-expected.gir12
-rw-r--r--tests/scanner/Utility-1.0-expected.gir22
-rw-r--r--tests/scanner/WarnLib-1.0-expected.gir94
-rw-r--r--tests/scanner/annotation.c346
-rw-r--r--tests/scanner/annotation.h152
-rw-r--r--tests/scanner/annotationparser/README51
-rw-r--r--tests/scanner/annotationparser/gi/annotation_allow_none.xml47
-rw-r--r--tests/scanner/annotationparser/gi/annotation_array.xml277
-rw-r--r--tests/scanner/annotationparser/gi/annotation_closure.xml74
-rw-r--r--tests/scanner/annotationparser/gi/annotation_constructor.xml21
-rw-r--r--tests/scanner/annotationparser/gi/annotation_destroy.xml46
-rw-r--r--tests/scanner/annotationparser/gi/annotation_element_type.xml126
-rw-r--r--tests/scanner/annotationparser/gi/annotation_foreign.xml22
-rw-r--r--tests/scanner/annotationparser/gi/annotation_get_value_func.xml30
-rw-r--r--tests/scanner/annotationparser/gi/annotation_in.xml52
-rw-r--r--tests/scanner/annotationparser/gi/annotation_in_out.xml54
-rw-r--r--tests/scanner/annotationparser/gi/annotation_method.xml28
-rw-r--r--tests/scanner/annotationparser/gi/annotation_out.xml110
-rw-r--r--tests/scanner/annotationparser/gi/annotation_ref_func.xml30
-rw-r--r--tests/scanner/annotationparser/gi/annotation_rename_to.xml52
-rw-r--r--tests/scanner/annotationparser/gi/annotation_scope.xml106
-rw-r--r--tests/scanner/annotationparser/gi/annotation_set_value_func.xml30
-rw-r--r--tests/scanner/annotationparser/gi/annotation_skip.xml43
-rw-r--r--tests/scanner/annotationparser/gi/annotation_transfer.xml162
-rw-r--r--tests/scanner/annotationparser/gi/annotation_type.xml84
-rw-r--r--tests/scanner/annotationparser/gi/annotation_unref_func.xml30
-rw-r--r--tests/scanner/annotationparser/gi/annotation_value.xml30
-rw-r--r--tests/scanner/annotationparser/gi/annotation_virtual.xml47
-rw-r--r--tests/scanner/annotationparser/gi/syntax.xml136
-rw-r--r--tests/scanner/annotationparser/gi/syntax_identifier.xml304
-rw-r--r--tests/scanner/annotationparser/gi/syntax_nested_tags.xml43
-rw-r--r--tests/scanner/annotationparser/gi/syntax_paragraph_breaks.xml239
-rw-r--r--tests/scanner/annotationparser/gi/tag_deprecated.xml43
-rw-r--r--tests/scanner/annotationparser/gi/tag_description.xml21
-rw-r--r--tests/scanner/annotationparser/gi/tag_returns.xml76
-rw-r--r--tests/scanner/annotationparser/gi/tag_since.xml43
-rw-r--r--tests/scanner/annotationparser/gi/tag_stability.xml81
-rw-r--r--tests/scanner/annotationparser/gtkdoc/annotations/tester.c.xml344
-rw-r--r--tests/scanner/annotationparser/gtkdoc/annotations/tester.h.xml31
-rw-r--r--tests/scanner/annotationparser/gtkdoc/bugs/tester.c.xml765
-rw-r--r--tests/scanner/annotationparser/gtkdoc/bugs/tester.h.xml677
-rw-r--r--tests/scanner/annotationparser/gtkdoc/empty/tester.c.xml53
-rw-r--r--tests/scanner/annotationparser/gtkdoc/fail/tester.c.xml162
-rw-r--r--tests/scanner/annotationparser/gtkdoc/fail/tester.h.xml205
-rw-r--r--tests/scanner/annotationparser/gtkdoc/gobject/giface.c.xml147
-rw-r--r--tests/scanner/annotationparser/gtkdoc/gobject/giface.h.xml119
-rw-r--r--tests/scanner/annotationparser/gtkdoc/gobject/gobject.c.xml416
-rw-r--r--tests/scanner/annotationparser/gtkdoc/gobject/gobject.h.xml158
-rw-r--r--tests/scanner/annotationparser/gtkdoc/gobject/gtypes.c.xml36
-rw-r--r--tests/scanner/annotationparser/gtkdoc/gobject/gtypes.h.xml84
-rw-r--r--tests/scanner/annotationparser/test_parser.py298
-rw-r--r--tests/scanner/annotationparser/test_patterns.py618
-rw-r--r--tests/scanner/barapp.c1
-rw-r--r--tests/scanner/drawable.c22
-rw-r--r--tests/scanner/drawable.h30
-rw-r--r--tests/scanner/foo.c500
-rw-r--r--tests/scanner/foo.h438
-rw-r--r--tests/scanner/gettype.c14
-rw-r--r--tests/scanner/regress.c126
-rw-r--r--tests/scanner/regress.h50
-rw-r--r--tests/scanner/warnlib.c33
-rw-r--r--tests/scanner/warnlib.h36
-rw-r--r--tests/warn/Makefile.am10
-rw-r--r--tests/warn/annotationparser.h11
-rw-r--r--tests/warn/invalid-element-type.h10
-rw-r--r--tests/warn/missing-element-type.h8
-rw-r--r--tests/warn/unknown-parameter.h20
-rw-r--r--tests/warn/warningtester.py19
-rwxr-xr-xtests/warn/warntestrunner8
-rw-r--r--tools/compiler.c2
-rw-r--r--tools/generate.c2
1622 files changed, 90388 insertions, 8403 deletions
diff --git a/.gitignore b/.gitignore
index f71ec463..1ed05a4a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,7 @@ compile
config.guess
config.h
config.h.in
+config.h.win32
config.log
config.status
config.sub
@@ -58,6 +59,7 @@ gthash-test
scannerlexer.c
scannerparser.c
scannerparser.h
+test-driver
tests/Everything-1.0.gir
tests/GIMarshallingTests-1.0.gir
tests/everything-stamp.h
@@ -67,16 +69,14 @@ tests/offsets/gitestoffsets.c
tests/repository/gitestrepo
tests/repository/gitestthrows
tests/repository/gitypelibtest
-tests/scanner/Annotation-1.0.gir
tests/scanner/Bar-1.0.gir
-tests/scanner/Foo-1.0.gir
tests/scanner/GetType-1.0.gir
tests/scanner/GtkFrob-1.0.gir
tests/scanner/Headeronly-1.0.gir
tests/scanner/Regress-1.0.gir
tests/scanner/SLetter-1.0.gir
-tests/scanner/TestInherit-1.0.gir
tests/scanner/Utility-1.0.gir
+tests/scanner/WarnLib-1.0.gir
tests/scanner/barapp
tests/doctool/DocExamples-1.0.gir
tests/offsets/Offsets-1.0.gir
@@ -85,4 +85,53 @@ tests/offsets/offsets.compiled
tests/offsets/offsets.introspected
tests/doctool/DocExamples-1.0-C
tests/doctool/DocExamples-1.0-Python
+tests/*/*.log
+tests/*/*.trs
.make-check-passed
+
+# tarballs
+*.tar.xz
+
+# Generated Visual Studio project files
+build/win32/vs10/cmph.vcxproj
+build/win32/vs10/cmph.vcxproj.filters
+build/win32/vs10/gir.props
+build/win32/vs10/g-ir-compiler.vcxproj
+build/win32/vs10/g-ir-compiler.vcxproj.filters
+build/win32/vs10/girepository.vcxproj
+build/win32/vs10/girepository.vcxproj.filters
+build/win32/vs9/cmph.vcproj
+build/win32/vs9/gir.vsprops
+build/win32/vs9/g-ir-compiler.vcproj
+build/win32/vs9/girepository.vcproj
+
+#yelp-build
+*.html
+C.css
+jquery.js
+jquery.syntax.js
+jquery.syntax.core.js
+jquery.syntax.brush.python.js
+jquery.syntax.layout.yelp.js
+yelp.js
+
+#GTK-Doc output
+docs/reference/html
+docs/reference/xml
+docs/reference/gi.args
+docs/reference/gi.hierarchy
+docs/reference/gi.interfaces
+docs/reference/gi.prerequisites
+docs/reference/gi.signals
+docs/reference/gi-decl.txt
+docs/reference/gi-decl-list.txt
+docs/reference/gi-undeclared.txt
+docs/reference/gi-undocumented.txt
+docs/reference/gi-unused.txt
+docs/reference/version.xml
+
+#g-ir-doc-tool tests
+*.page
+!tests/scanner/*-expected/*.page
+*-sections.txt
+!tests/scanner/*-sections-expected.txt
diff --git a/Makefile-gir.am b/Makefile-gir.am
index 10a4fb03..dfff294a 100644
--- a/Makefile-gir.am
+++ b/Makefile-gir.am
@@ -1,8 +1,8 @@
BUILT_GIRSOURCES =
SUBSTITUTED_GIRSOURCES =
-STATIC_GIRSOURCES = \
- gir/DBus-1.0.gir \
+STATIC_GIRSOURCES = \
+ gir/DBus-1.0.gir \
gir/DBusGLib-1.0.gir \
gir/fontconfig-2.0.gir \
gir/freetype2-2.0.gir \
@@ -11,7 +11,8 @@ STATIC_GIRSOURCES = \
gir/xft-2.0.gir \
gir/xlib-2.0.gir \
gir/xfixes-4.0.gir \
- gir/xrandr-1.3.gir
+ gir/xrandr-1.3.gir \
+ gir/win32-1.0.gir
EXTRA_DIST += $(STATIC_GIRSOURCES)
gir/cairo-1.0.gir: gir/cairo-1.0.gir.in Makefile
@@ -37,6 +38,7 @@ gir/xft-2.0.typelib: g-ir-compiler
gir/xlib-2.0.typelib: g-ir-compiler
gir/xfixes-4.0.typelib: g-ir-compiler
gir/xrandr-1.3.typelib: g-ir-compiler
+gir/win32-1.0.typelib: g-ir-compiler
# glib with source (to enable documentation)
if WITH_GLIBSRC
diff --git a/Makefile-girepository.am b/Makefile-girepository.am
index 2c07b3ab..11549d44 100644
--- a/Makefile-girepository.am
+++ b/Makefile-girepository.am
@@ -72,7 +72,10 @@ libgirepository_1_0_la_SOURCES = \
libgirepository_1_0_la_CPPFLAGS = $(GIREPO_CFLAGS) -I$(top_srcdir)/girepository -DG_IREPOSITORY_COMPILATION
libgirepository_1_0_la_LIBADD = libgirepository-gthash.la $(GIREPO_LIBS)
-libgirepository_1_0_la_LDFLAGS = -no-undefined -version-number 1:0:0 -export-symbols-regex '^gi?_'
+libgirepository_1_0_la_LDFLAGS = \
+ $(EXTRA_LINK_FLAGS) \
+ -no-undefined -version-number 1:0:0 \
+ -export-symbols $(srcdir)/girepository/girepository.symbols
gdumpdir = $(datadir)/gobject-introspection-1.0/
gdump_DATA = girepository/gdump.c
diff --git a/Makefile-giscanner.am b/Makefile-giscanner.am
index d4d2a620..47750864 100644
--- a/Makefile-giscanner.am
+++ b/Makefile-giscanner.am
@@ -26,51 +26,76 @@ libgiscanner_la_CFLAGS = $(GOBJECT_CFLAGS) $(GIO_CFLAGS)
# Python module
pkgpyexecdir = $(pkglibdir)/giscanner
pkgpyexec_LTLIBRARIES = _giscanner.la
-pkgpyexec_PYTHON = \
+pkgpyexec_PYTHON = \
giscanner/__init__.py \
giscanner/annotationmain.py \
giscanner/annotationparser.py \
- giscanner/annotationpatterns.py \
giscanner/ast.py \
giscanner/cachestore.py \
giscanner/codegen.py \
- giscanner/docmain.py \
+ giscanner/docmain.py \
+ giscanner/docwriter.py \
giscanner/dumper.py \
giscanner/introspectablepass.py \
giscanner/girparser.py \
giscanner/girwriter.py \
giscanner/gdumpparser.py \
giscanner/libtoolimporter.py \
- giscanner/odict.py \
- giscanner/mallardwriter.py \
- giscanner/mallard-C-class.tmpl \
- giscanner/mallard-C-default.tmpl \
- giscanner/mallard-C-enum.tmpl \
- giscanner/mallard-C-function.tmpl \
- giscanner/mallard-C-namespace.tmpl \
- giscanner/mallard-C-property.tmpl \
- giscanner/mallard-C-record.tmpl \
- giscanner/mallard-C-signal.tmpl \
- giscanner/mallard-C-vfunc.tmpl \
- giscanner/mallard-Python-class.tmpl \
- giscanner/mallard-Python-default.tmpl \
- giscanner/mallard-Python-enum.tmpl \
- giscanner/mallard-Python-function.tmpl \
- giscanner/mallard-Python-namespace.tmpl \
- giscanner/mallard-Python-property.tmpl \
- giscanner/mallard-Python-record.tmpl \
- giscanner/mallard-Python-signal.tmpl \
- giscanner/mallard-Python-vfunc.tmpl \
giscanner/maintransformer.py \
giscanner/message.py \
giscanner/shlibs.py \
giscanner/scannermain.py \
+ giscanner/sectionparser.py \
giscanner/sourcescanner.py \
giscanner/testcodegen.py \
giscanner/transformer.py \
giscanner/utils.py \
giscanner/xmlwriter.py
+collectionsdir = $(pkgpyexecdir)/collections
+collections_PYTHON = \
+ giscanner/collections/__init__.py \
+ giscanner/collections/ordereddict.py
+
+templatedir = $(pkglibdir)
+nobase_dist_template_DATA = \
+ giscanner/doctemplates/base.tmpl \
+ giscanner/doctemplates/class.tmpl \
+ giscanner/doctemplates/namespace.tmpl \
+ giscanner/doctemplates/C/class.tmpl \
+ giscanner/doctemplates/C/constructor.tmpl \
+ giscanner/doctemplates/C/default.tmpl \
+ giscanner/doctemplates/C/enum.tmpl \
+ giscanner/doctemplates/C/function.tmpl \
+ giscanner/doctemplates/C/method.tmpl \
+ giscanner/doctemplates/C/namespace.tmpl \
+ giscanner/doctemplates/C/property.tmpl \
+ giscanner/doctemplates/C/record.tmpl \
+ giscanner/doctemplates/C/signal.tmpl \
+ giscanner/doctemplates/C/vfunc.tmpl \
+ giscanner/doctemplates/Python/class.tmpl \
+ giscanner/doctemplates/Python/constructor.tmpl \
+ giscanner/doctemplates/Python/default.tmpl \
+ giscanner/doctemplates/Python/enum.tmpl \
+ giscanner/doctemplates/Python/function.tmpl \
+ giscanner/doctemplates/Python/method.tmpl \
+ giscanner/doctemplates/Python/namespace.tmpl \
+ giscanner/doctemplates/Python/property.tmpl \
+ giscanner/doctemplates/Python/record.tmpl \
+ giscanner/doctemplates/Python/signal.tmpl \
+ giscanner/doctemplates/Python/vfunc.tmpl \
+ giscanner/doctemplates/Gjs/class.tmpl \
+ giscanner/doctemplates/Gjs/constructor.tmpl \
+ giscanner/doctemplates/Gjs/default.tmpl \
+ giscanner/doctemplates/Gjs/enum.tmpl \
+ giscanner/doctemplates/Gjs/function.tmpl \
+ giscanner/doctemplates/Gjs/method.tmpl \
+ giscanner/doctemplates/Gjs/namespace.tmpl \
+ giscanner/doctemplates/Gjs/property.tmpl \
+ giscanner/doctemplates/Gjs/record.tmpl \
+ giscanner/doctemplates/Gjs/signal.tmpl \
+ giscanner/doctemplates/Gjs/vfunc.tmpl
+
_giscanner_la_CFLAGS = \
$(PYTHON_INCLUDES) \
$(GOBJECT_CFLAGS) \
diff --git a/Makefile-msvcproj.am b/Makefile-msvcproj.am
new file mode 100644
index 00000000..a9eb88c5
--- /dev/null
+++ b/Makefile-msvcproj.am
@@ -0,0 +1,205 @@
+# This is to fill in Visual C++ projects for projects which add/remove
+# sources from them every now and then.
+
+# --------------------------
+# cmph (static lib) projects
+# --------------------------
+./build/win32/vs9/cmph.vcproj: $(top_srcdir)/build/win32/vs9/cmph.vcprojin
+ for F in `echo $(libcmph_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <File RelativePath="..\..\..\'$$F'" />' \
+ ;; \
+ esac; \
+ done >cmph.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs9/cmph.vcprojin >$@
+ rm cmph.sourcefiles
+
+./build/win32/vs10/cmph.vcxproj: $(top_srcdir)/build/win32/vs10/cmph.vcxprojin
+ for F in `echo $(libcmph_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\'$$F'" />' \
+ ;; \
+ esac; \
+ done >cmph.vs10.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/cmph.vcxprojin >$@
+ rm cmph.vs10.sourcefiles
+
+./build/win32/vs10/cmph.vcxproj.filters: $(top_srcdir)/build/win32/vs10/cmph.vcxproj.filtersin
+ for F in `echo $(libcmph_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\'$$F'"><Filter>Sources</Filter></ClCompile>' \
+ ;; \
+ esac; \
+ done >cmph.vs10.sourcefiles.filters
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/cmph.vcxproj.filtersin >$@
+ rm cmph.vs10.sourcefiles.filters
+
+# -------------------------
+# girepository DLL projects
+# -------------------------
+./build/win32/vs9/girepository.vcproj: $(top_srcdir)/build/win32/vs9/girepository.vcprojin ./build/win32/vs9/gir.vs9.install
+ for F in `echo $(libgirepository_1_0_la_SOURCES) $(libgirepository_gthash_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <File RelativePath="..\..\..\'$$F'" />' \
+ ;; \
+ esac; \
+ done >girepository.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs9/girepository.vcprojin >$@
+ rm girepository.sourcefiles
+
+./build/win32/vs10/girepository.vcxproj: $(top_srcdir)/build/win32/vs10/girepository.vcxprojin ./build/win32/vs10/gir.vs10.install
+ for F in `echo $(libgirepository_1_0_la_SOURCES) $(libgirepository_gthash_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\'$$F'" />' \
+ ;; \
+ esac; \
+ done >girepository.vs10.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/girepository.vcxprojin >$@
+ rm girepository.vs10.sourcefiles
+
+./build/win32/vs10/girepository.vcxproj.filters: $(top_srcdir)/build/win32/vs10/girepository.vcxproj.filtersin
+ for F in `echo $(libgirepository_1_0_la_SOURCES) $(libgirepository_gthash_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\'$$F'"><Filter>Sources</Filter></ClCompile>' \
+ ;; \
+ esac; \
+ done >girepository.vs10.sourcefiles.filters
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/girepository.vcxproj.filtersin >$@
+ rm girepository.vs10.sourcefiles.filters
+
+# ------------------------------------
+# g-ir-compiler.exe projects
+# (We integrate the
+# libgirepository_internals_la_SOURCES
+# and
+# libgirepository_gthash_la_SOURCES
+# here)
+# ------------------------------------
+./build/win32/vs9/g-ir-compiler.vcproj: $(top_srcdir)/build/win32/vs9/g-ir-compiler.vcprojin
+ for F in `echo $(libgirepository_gthash_la_SOURCES) $(libgirepository_internals_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <File RelativePath="..\..\..\'$$F'" />' \
+ ;; \
+ esac; \
+ done >g-ir-compiler.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs9/g-ir-compiler.vcprojin >$@
+ rm g-ir-compiler.sourcefiles
+
+./build/win32/vs10/g-ir-compiler.vcxproj: $(top_srcdir)/build/win32/vs10/g-ir-compiler.vcxprojin
+ for F in `echo $(libgirepository_gthash_la_SOURCES) $(libgirepository_internals_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\'$$F'" />' \
+ ;; \
+ esac; \
+ done >g-ir-compiler.vs10.sourcefiles
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/g-ir-compiler.vcxprojin >$@
+ rm g-ir-compiler.vs10.sourcefiles
+
+./build/win32/vs10/g-ir-compiler.vcxproj.filters: $(top_srcdir)/build/win32/vs10/g-ir-compiler.vcxproj.filtersin
+ for F in `echo $(libgirepository_gthash_la_SOURCES) $(libgirepository_internals_la_SOURCES) | tr '/' '\\'`; do \
+ case $$F in \
+ *.c) echo ' <ClCompile Include="..\..\..\'$$F'"><Filter>Sources</Filter></ClCompile>' \
+ ;; \
+ esac; \
+ done >g-ir-compiler.vs10.sourcefiles.filters
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/g-ir-compiler.vcxproj.filtersin >$@
+ rm g-ir-compiler.vs10.sourcefiles.filters
+
+#--------------------------------
+# Generate the "lists" of headers
+# and Python scripts to install
+#--------------------------------
+./build/win32/vs9/gir.vs9.install:
+ echo 'mkdir $$(CopyDir)\include\gobject-introspection-$$(GIApiVersion)\girepository&#x0D;&#x0A;' >./build/win32/vs9/gir.vs9.install
+ echo '' >>./build/win32/vs9/gir.vs9.install
+ for F in `echo $(girepo_HEADERS) | tr '/' '\\'`; do \
+ case $$F in \
+ *.h) echo 'copy ..\..\..\'$$F' $$(CopyDir)\include\gobject-introspection-$$(GIApiVersion)\girepository&#x0D;&#x0A;' \
+ ;; \
+ esac; \
+ done >>./build/win32/vs9/gir.vs9.install
+ echo '' >>./build/win32/vs9/gir.vs9.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner&#x0D;&#x0A;' >>./build/win32/vs9/gir.vs9.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\collections&#x0D;&#x0A;' >>./build/win32/vs9/gir.vs9.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates&#x0D;&#x0A;' >>./build/win32/vs9/gir.vs9.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\C&#x0D;&#x0A;' >>./build/win32/vs9/gir.vs9.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Gjs&#x0D;&#x0A;' >>./build/win32/vs9/gir.vs9.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Python&#x0D;&#x0A;' >>./build/win32/vs9/gir.vs9.install
+ echo '' >>./build/win32/vs9/gir.vs9.install
+ for F in `echo $(pkgpyexec_PYTHON) $(collections_PYTHON) $(nobase_dist_template_DATA) | tr '/' '\\'`; do \
+ case $$F in \
+ giscanner\\doctemplates\\C\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\C&#x0D;&#x0A;' \
+ ;; \
+ giscanner\\doctemplates\\Gjs\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Gjs&#x0D;&#x0A;' \
+ ;; \
+ giscanner\\doctemplates\\Python\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Python&#x0D;&#x0A;' \
+ ;; \
+ giscanner\\doctemplates\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates&#x0D;&#x0A;' \
+ ;; \
+ giscanner\\collections\\*.py) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\collections&#x0D;&#x0A;' \
+ ;; \
+ giscanner\\*.py) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner&#x0D;&#x0A;' \
+ ;; \
+ esac; \
+ done >>./build/win32/vs9/gir.vs9.install
+
+./build/win32/vs10/gir.vs10.install:
+ echo 'mkdir $$(CopyDir)\include\gobject-introspection-$$(GIApiVersion)\girepository' >./build/win32/vs10/gir.vs10.install
+ echo '' >>./build/win32/vs10/gir.vs10.install
+ for F in `echo $(girepo_HEADERS) | tr '/' '\\'`; do \
+ case $$F in \
+ *.h) echo 'copy ..\..\..\'$$F' $$(CopyDir)\include\gobject-introspection-$$(GIApiVersion)\girepository' && \
+ echo '' \
+ ;; \
+ esac; \
+ done >>./build/win32/vs10/gir.vs10.install
+ echo '' >>./build/win32/vs10/gir.vs10.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\collections' >>./build/win32/vs10/gir.vs10.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates' >>./build/win32/vs10/gir.vs10.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\C' >>./build/win32/vs10/gir.vs10.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Gjs' >>./build/win32/vs10/gir.vs10.install
+ echo 'mkdir $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Python' >>./build/win32/vs10/gir.vs10.install
+ echo '' >>./build/win32/vs10/gir.vs10.install
+ for F in `echo $(pkgpyexec_PYTHON) $(collections_PYTHON) $(nobase_dist_template_DATA) | tr '/' '\\'`; do \
+ case $$F in \
+ giscanner\\doctemplates\\C\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\C' \
+ ;; \
+ giscanner\\doctemplates\\Gjs\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Gjs' \
+ ;; \
+ giscanner\\doctemplates\\Python\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates\Python' \
+ ;; \
+ giscanner\\doctemplates\\*.tmpl) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\doctemplates' \
+ ;; \
+ giscanner\\collections\\*.py) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner\collections' \
+ ;; \
+ giscanner\\*.py) echo 'copy ..\..\..\'$$F' $$(CopyDir)\lib\gobject-introspection\giscanner' && \
+ echo '' \
+ ;; \
+ esac; \
+ done >>./build/win32/vs10/gir.vs10.install
+
+./build/win32/vs9/gir.vsprops: ./build/win32/vs9/gir.vs9.install $(top_srcdir)/build/win32/vs9/gir.vspropsin
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs9/gir.vspropsin >$@
+ rm ./build/win32/vs9/gir.vs9.install
+
+./build/win32/vs10/gir.props: ./build/win32/vs10/gir.vs10.install $(top_srcdir)/build/win32/vs10/gir.propsin
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/gir.propsin >$@
+ rm ./build/win32/vs10/gir.vs10.install
+
+GENERATED_MSVC_FILES = \
+ ./build/win32/vs9/girepository.vcproj \
+ ./build/win32/vs10/girepository.vcxproj \
+ ./build/win32/vs10/girepository.vcxproj.filters \
+ ./build/win32/vs9/g-ir-compiler.vcproj \
+ ./build/win32/vs10/g-ir-compiler.vcxproj \
+ ./build/win32/vs10/g-ir-compiler.vcxproj.filters \
+ ./build/win32/vs9/cmph.vcproj \
+ ./build/win32/vs10/cmph.vcxproj \
+ ./build/win32/vs10/cmph.vcxproj.filters \
+ config.h.win32
+
+EXTRA_DIST += \
+ ./girepository/girepository.symbols \
+ $(GENERATED_MSVC_FILES)
+
+CLEANFILES += $(GENERATED_MSVC_FILES)
diff --git a/Makefile.am b/Makefile.am
index a36c200a..c04c05a0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -21,14 +21,15 @@ include Makefile-giscanner.am
include Makefile-examples.am
include Makefile-gir.am
include Makefile-tools.am
+include Makefile-msvcproj.am
## Process this file with automake to produce Makefile.in
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
-SUBDIRS = . docs tests
+SUBDIRS = . docs tests build
DIST_SUBDIRS = m4 $(SUBDIRS)
-DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-doctool
man_MANS += \
docs/g-ir-compiler.1 \
@@ -52,20 +53,22 @@ EXTRA_DIST += \
$(man_MANS) \
$(m4_DATA) \
misc/pep8.py \
- misc/pre-commit \
misc/pyflakes.py
+# Default pep8.py --exclude + emacs backup files
+PEP8_EXCLUDES=--exclude='.svn,CVS,.bzr,.hg,.git,__pycache__,.\#*'
+
check-local:
gtester --verbose $(GTESTER_PROGS)
- @test ! -d $(top_srcdir)/.git || (test -f $(top_srcdir)/.git/hooks/pre-commit || (echo -e "ERROR: missing \
- pre-commit hook.\n\ncopy misc/pre-commit to .git/hooks"; false))
- @test ! -d $(top_srcdir)/.git || (test -x $(top_srcdir)/.git/hooks/pre-commit || (echo -e "ERROR: pre-commit \
- is not executable\n\nrun chmod +x .git/hooks/pre-commit"; false))
@echo "TEST: PEP-8 INQUISITION"
- @find $(top_srcdir)/giscanner -name \*.py | sort | uniq | xargs $(PYTHON) $(top_srcdir)/misc/pep8.py --repeat --exclude=config.py
+ @find $(top_srcdir)/giscanner -name \*.py | sort | uniq | xargs \
+ $(PYTHON) $(top_srcdir)/misc/pep8.py --max-line-length=99 --ignore=E128 $(PEP8_EXCLUDES)
+ @find $(top_srcdir)/tests -name \*.py | sort | uniq | xargs \
+ $(PYTHON) $(top_srcdir)/misc/pep8.py --ignore=E127,E501 $(PEP8_EXCLUDES)
@echo "TEST: Annotation pattern programs"
- $(PYTHON) $(top_srcdir)/giscanner/annotationpatterns.py
- @touch $(top_builddir)/.make-check-passed
+ PYTHONPATH="$(top_builddir):$(top_srcdir)" $(PYTHON) $(top_srcdir)/tests/scanner/annotationparser/test_patterns.py
+ @echo "TEST: GTK-Doc Annotation Parser"
+ PYTHONPATH="$(top_builddir):$(top_srcdir)" $(PYTHON) $(top_srcdir)/tests/scanner/annotationparser/test_parser.py
check-pyflakes:
@echo " CHECK Pyflakes"
diff --git a/Makefile.introspection b/Makefile.introspection
index 567d5e96..bcfecba4 100644
--- a/Makefile.introspection
+++ b/Makefile.introspection
@@ -75,14 +75,14 @@ _gir_verbosity = $(if $(AM_DEFAULT_VERBOSITY),$(AM_DEFAULT_VERBOSITY),1)
_gir_silent_scanner_prefix = $(_gir_silent_scanner_prefix_$(V))
_gir_silent_scanner_prefix_ = $(_gir_silent_scanner_prefix_$(_gir_verbosity))
-_gir_silent_scanner_prefix_0 = @echo " GISCAN $(1)";
+_gir_silent_scanner_prefix_0 = @echo " GISCAN $(1)";
_gir_silent_scanner_opts = $(_gir_silent_scanner_opts_$(V))
_gir_silent_scanner_opts_ = $(_gir_silent_scanner_opts_$(_gir_verbosity))
_gir_silent_scanner_opts_0 = --quiet
_gir_silent_compiler = $(_gir_silent_compiler_$(V))
_gir_silent_compiler_ = $(_gir_silent_compiler_$(_gir_verbosity))
-_gir_silent_compiler_0 = @echo " GICOMP $(1)";
+_gir_silent_compiler_0 = @echo " GICOMP $(1)";
#
# Creates a GIR by scanning C headers/sources
@@ -142,7 +142,9 @@ $(1): $$($(_gir_name)_FILES)
$(_gir_program) \
$(_gir_libraries) \
$($(_gir_name)_SCANNERFLAGS) \
+ --cflags-begin \
$($(_gir_name)_CFLAGS) \
+ --cflags-end \
$($(_gir_name)_LDFLAGS) \
$$^ \
--output $(1)
diff --git a/build/Makefile.am b/build/Makefile.am
new file mode 100644
index 00000000..0f81afe3
--- /dev/null
+++ b/build/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = win32
diff --git a/build/win32/Makefile.am b/build/win32/Makefile.am
new file mode 100644
index 00000000..f404aa16
--- /dev/null
+++ b/build/win32/Makefile.am
@@ -0,0 +1,16 @@
+SUBDIRS = vs9 vs10
+
+EXTRA_DIST = \
+ annotation.def \
+ everything.def \
+ foo.def \
+ gengir.bat \
+ create_nonglib_gir.py \
+ gettype.def \
+ gimarshallingtests.def \
+ gtkfrob.def \
+ Regress.def \
+ sletter.def \
+ testinherit.def \
+ test_gir_cmd.txt \
+ utility.def
diff --git a/build/win32/Regress.def b/build/win32/Regress.def
new file mode 100644
index 00000000..693f053f
--- /dev/null
+++ b/build/win32/Regress.def
@@ -0,0 +1,272 @@
+EXPORTS
+regress_set_abort_on_error
+regress_test_boolean
+regress_test_boolean_true
+regress_test_boolean_false
+regress_test_int8
+regress_test_uint8
+regress_test_int16
+regress_test_uint16
+regress_test_int32
+regress_test_uint32
+regress_test_int64
+regress_test_uint64
+regress_test_short
+regress_test_ushort
+regress_test_int
+regress_test_uint
+regress_test_long
+regress_test_ulong
+regress_test_ssize
+regress_test_size
+regress_test_float
+regress_test_double
+regress_test_unichar
+regress_test_timet
+regress_test_gtype
+regress_test_utf8_const_return
+regress_test_utf8_nonconst_return
+regress_test_utf8_const_in
+regress_test_utf8_out
+regress_test_utf8_inout
+regress_test_filename_return
+regress_test_utf8_null_in
+regress_test_utf8_null_out
+
+regress_test_int_out_utf8
+
+
+regress_test_multi_double_args
+regress_test_utf8_out_out
+regress_test_utf8_out_nonconst_return
+
+
+regress_test_strv_in
+regress_test_array_int_in
+regress_test_array_int_out
+regress_test_array_int_inout
+regress_test_array_gint8_in
+regress_test_array_gint16_in
+regress_test_array_gint32_in
+regress_test_array_gint64_in
+regress_test_array_gtype_in
+regress_test_strv_out_container
+regress_test_strv_out
+regress_test_strv_out_c
+regress_test_strv_outarg
+regress_test_array_fixed_size_int_in
+regress_test_array_fixed_size_int_out
+regress_test_array_fixed_size_int_return
+
+
+regress_test_array_int_full_out
+regress_test_array_int_none_out
+regress_test_array_int_null_in
+regress_test_array_int_null_out
+
+
+regress_test_glist_nothing_return
+regress_test_glist_nothing_return2
+regress_test_glist_container_return
+regress_test_glist_everything_return
+regress_test_glist_nothing_in
+regress_test_glist_nothing_in2
+regress_test_glist_null_in
+regress_test_glist_null_out
+
+
+regress_test_gslist_nothing_return
+regress_test_gslist_nothing_return2
+regress_test_gslist_container_return
+regress_test_gslist_everything_return
+regress_test_gslist_nothing_in
+regress_test_gslist_nothing_in2
+regress_test_gslist_null_in
+regress_test_gslist_null_out
+
+
+regress_test_ghash_null_return
+regress_test_ghash_nothing_return
+regress_test_ghash_nothing_return2
+regress_test_ghash_gvalue_return
+regress_test_ghash_gvalue_in
+regress_test_ghash_container_return
+regress_test_ghash_everything_return
+regress_test_ghash_null_in
+regress_test_ghash_null_out
+regress_test_ghash_nothing_in
+regress_test_ghash_nothing_in2
+regress_test_ghash_nested_everything_return
+regress_test_ghash_nested_everything_return2
+
+
+regress_test_garray_container_return
+regress_test_garray_full_return
+
+
+
+
+regress_test_closure
+regress_test_closure_one_arg
+regress_test_closure_variant
+
+
+regress_test_int_value_arg
+regress_test_value_return
+
+
+regress_test_cairo_context_full_return
+regress_test_cairo_context_none_in
+
+regress_test_cairo_surface_none_return
+regress_test_cairo_surface_full_return
+regress_test_cairo_surface_none_in
+regress_test_cairo_surface_full_out
+
+regress_test_gvariant_i
+regress_test_gvariant_s
+regress_test_gvariant_asv
+regress_test_gvariant_v
+regress_test_gvariant_as
+regress_test_enum_get_type
+regress_test_enum_unsigned_get_type
+regress_test_flags_get_type
+
+
+regress_test_enum_param
+regress_test_unsigned_enum_param
+
+regress_global_get_flags_out
+regress_test_struct_a_clone
+regress_test_struct_a_parse
+
+regress_test_struct_b_clone
+
+
+regress_test_simple_boxed_a_get_gtype
+regress_test_simple_boxed_a_copy
+regress_test_simple_boxed_a_equals
+regress_test_simple_boxed_a_const_return
+
+regress_test_simple_boxed_b_get_type
+regress_test_simple_boxed_b_copy
+
+regress_test_boxed_get_type
+regress_test_boxed_new
+regress_test_boxed_new_alternative_constructor1
+regress_test_boxed_new_alternative_constructor2
+regress_test_boxed_new_alternative_constructor3
+
+regress_test_boxed_copy
+
+
+regress_test_boxed_b_get_type
+regress_test_boxed_b_new
+regress_test_boxed_b_copy
+
+regress_test_boxed_c_get_type
+regress_test_boxed_c_new
+
+regress_test_boxed_d_get_type
+regress_test_boxed_d_new
+regress_test_boxed_d_copy
+regress_test_boxed_d_free
+regress_test_boxed_d_get_magic
+
+regress_test_obj_get_type
+regress_test_obj_new
+regress_constructor
+regress_test_obj_new_from_file
+regress_test_obj_set_bare
+regress_test_obj_emit_sig_with_obj
+regress_test_obj_emit_sig_with_foreign_struct
+regress_test_obj_emit_sig_with_int64
+regress_test_obj_emit_sig_with_uint64
+regress_test_obj_instance_method
+regress_test_obj_static_method
+regress_forced_method
+
+regress_test_array_fixed_out_objects
+regress_test_obj_torture_signature_0
+regress_test_obj_torture_signature_1
+regress_test_obj_skip_return_val
+regress_test_obj_skip_return_val_no_out
+regress_test_obj_skip_param
+regress_test_obj_skip_out_param
+regress_test_obj_skip_inout_param
+regress_test_obj_do_matrix
+regress_func_obj_null_in
+regress_test_obj_null_out
+regress_test_sub_obj_get_type
+regress_test_sub_obj_new
+regress_test_sub_obj_unset_bare
+regress_test_sub_obj_instance_method
+regress_test_skip_unannotated_callback
+
+regress_test_fundamental_object_get_type
+regress_test_fundamental_object_ref
+regress_test_fundamental_object_unref
+regress_test_value_set_fundamental_object
+regress_test_value_get_fundamental_object
+regress_test_fundamental_sub_object_get_type
+
+regress_test_fundamental_sub_object_new
+
+
+regress_test_simple_callback
+regress_test_callback
+regress_test_multi_callback
+regress_test_array_callback
+regress_test_callback_user_data
+regress_test_callback_destroy_notify
+regress_test_callback_destroy_notify_no_user_data
+regress_test_callback_thaw_notifications
+
+regress_test_callback_async
+regress_test_callback_thaw_async
+
+regress_test_async_ready_callback
+
+regress_test_obj_instance_method_callback
+regress_test_obj_static_method_callback
+regress_test_obj_new_callback
+regress_test_hash_table_callback
+regress_test_gerror_callback
+regress_test_null_gerror_callback
+regress_test_owned_gerror_callback
+regress_test_interface_get_type
+
+regress_test_wi_802_1x_get_type
+regress_test_wi_802_1x_new
+regress_test_wi_802_1x_get_testbool
+regress_test_wi_802_1x_set_testbool
+regress_test_wi_802_1x_static_method
+
+regress_test_floating_get_type
+regress_test_floating_new
+
+regress_test_torture_signature_0
+regress_test_torture_signature_1
+regress_test_torture_signature_2
+regress_test_date_in_gvalue
+regress_test_strv_in_gvalue
+
+regress_test_multiline_doc_comments
+regress_test_nested_parameter
+
+regress_introspectable_via_alias
+regress_not_introspectable_via_alias
+regress_aliased_caller_alloc
+
+regress_atest_error_quark
+regress_test_def_error_quark
+regress_test_unconventional_error_quark
+regress_test_abc_error_quark
+regress_test_error_quark
+regress_test_boxed_c_get_type
+regress_test_unconventional_error_get_type
+regress_test_abc_error_get_type
+regress_test_error_get_type
+
+
+regress_test_versioning
diff --git a/build/win32/annotation.def b/build/win32/annotation.def
new file mode 100644
index 00000000..27452281
--- /dev/null
+++ b/build/win32/annotation.def
@@ -0,0 +1,48 @@
+EXPORTS
+regress_annotation_object_get_type
+regress_annotation_object_method
+regress_annotation_object_out
+regress_annotation_object_create_object
+regress_annotation_object_allow_none
+regress_annotation_object_notrans
+regress_annotation_object_inout
+regress_annotation_object_inout2
+regress_annotation_object_inout3
+regress_annotation_object_in
+regress_annotation_object_calleeowns
+regress_annotation_object_calleesowns
+regress_annotation_object_get_strings
+regress_annotation_object_get_hash
+regress_annotation_object_with_voidp
+regress_annotation_object_get_objects
+regress_annotation_object_use_buffer
+regress_annotation_object_compute_sum
+regress_annotation_object_compute_sum_n
+regress_annotation_object_compute_sum_nz
+regress_annotation_object_parse_args
+regress_annotation_object_string_out
+regress_annotation_object_foreach
+regress_annotation_object_set_data
+regress_annotation_object_set_data2
+regress_annotation_object_set_data3
+regress_annotation_object_do_not_use
+regress_annotation_object_watch
+regress_annotation_object_watch_full
+regress_annotation_object_hidden_self
+regress_annotation_init
+regress_annotation_return_array
+regress_annotation_versioned
+regress_annotation_string_zero_terminated
+regress_annotation_string_zero_terminated_out
+regress_annotation_string_array_length
+regress_annotation_object_extra_annos
+regress_annotation_custom_destroy
+regress_annotation_get_source_file
+regress_annotation_set_source_file
+regress_annotation_attribute_func
+regress_annotation_invalid_regress_annotation
+regress_annotation_ptr_array
+regress_annotation_test_parsing_bug630862
+regress_annotation_space_after_comment_bug631690
+regress_annotation_return_filename
+regress_annotation_transfer_floating
diff --git a/build/win32/create_nonglib_gir.py b/build/win32/create_nonglib_gir.py
new file mode 100644
index 00000000..e3df7148
--- /dev/null
+++ b/build/win32/create_nonglib_gir.py
@@ -0,0 +1,72 @@
+#!/usr/bin/python
+#
+# Expand the bundled *.gir.in files
+# for use in Visual C++ builds of G-I
+#
+# Author: Fan, Chun-wei
+# Date: January 21, 2013
+#
+# (Adapted from setup.py in
+# $(glib_src_root)/build/win32/setup.py written by Shixin Zeng)
+
+import os
+import sys
+import re
+import string
+import subprocess
+import optparse
+
+def process_in(src, dest, vars):
+ RE_VARS = re.compile(r'%(\w+?)%')
+ with open(src, 'r') as s:
+ with open(dest, 'w') as d:
+ for i in s:
+ i = RE_VARS.sub(lambda x: str(vars[x.group(1)]), i)
+ d.write(i)
+
+def get_vsver(vsver):
+ return {
+ '9': '9',
+ '10': '10',
+ '11': '11',
+ '2008': '9',
+ '2010': '10',
+ '2012': '11',
+ }.get(vsver, '0')
+
+def parent_dir(path):
+ if not os.path.isabs(path):
+ path = os.path.abspath(path)
+ if os.path.isfile(path):
+ path = os.path.dirname(path)
+ return os.path.split(path)[0]
+
+def setup_vars_cairo(src, dest, vsver):
+ vars = {}
+ vars['CAIRO_GIR_PACKAGE'] = 'cairo-gobject'
+ vars['CAIRO_SHARED_LIBRARY'] = '%s-vs%s.dll' % (vars['CAIRO_GIR_PACKAGE'], vsver)
+ process_in (src, dest, vars)
+
+def main(argv):
+ parser = optparse.OptionParser()
+ parser.add_option('--vsver', dest='vsver', action='store', help='Version of Visual Studio used, 9 or 2008 for VS 2008, 10 or 2010 for VS2010, 11 or 2012 for VS2012')
+ opt, args = parser.parse_args(argv)
+ if opt.vsver is None:
+ print ('vsver must be specified. Please use %s -h to see the valid values' % os.path.basename(__file__))
+ sys.exit()
+ vsver = get_vsver(opt.vsver)
+ if vsver is '0':
+ print ('You must specify a valid vsver. Please use %s -h to see the valid values' % os.path.basename(__file__))
+ sys.exit()
+
+ # Get the srcroot and the path where the bundled .gir files reside in the package
+ srcroot = parent_dir(parent_dir(__file__))
+ preset_gir_path = os.path.join(srcroot, 'gir')
+
+ # Set up variables in cairo-1.0.gir.in to produce cairo-1.0.gir
+ setup_vars_cairo(os.path.join(preset_gir_path, 'cairo-1.0.gir.in'),
+ os.path.join(preset_gir_path, 'cairo-1.0.gir'),
+ vsver)
+
+if __name__ == '__main__':
+ sys.exit(main(sys.argv))
diff --git a/build/win32/everything.def b/build/win32/everything.def
new file mode 100644
index 00000000..e15f2fdc
--- /dev/null
+++ b/build/win32/everything.def
@@ -0,0 +1,106 @@
+EXPORTS
+everything_nullfunc
+everything_const_return_gboolean
+everything_const_return_gint8
+everything_const_return_guint8
+everything_const_return_gint16
+everything_const_return_guint16
+everything_const_return_gint32
+everything_const_return_guint32
+everything_const_return_gint64
+everything_const_return_guint64
+everything_const_return_gchar
+everything_const_return_gshort
+everything_const_return_gushort
+everything_const_return_gint
+everything_const_return_guint
+everything_const_return_glong
+everything_const_return_gulong
+everything_const_return_gsize
+everything_const_return_gssize
+everything_const_return_gintptr
+everything_const_return_guintptr
+everything_const_return_gfloat
+everything_const_return_gdouble
+everything_const_return_gunichar
+everything_const_return_GType
+everything_const_return_utf8
+everything_const_return_filename
+everything_oneparam_gboolean
+everything_oneparam_gint8
+everything_oneparam_guint8
+everything_oneparam_gint16
+everything_oneparam_guint16
+everything_oneparam_gint32
+everything_oneparam_guint32
+everything_oneparam_gint64
+everything_oneparam_guint64
+everything_oneparam_gchar
+everything_oneparam_gshort
+everything_oneparam_gushort
+everything_oneparam_gint
+everything_oneparam_guint
+everything_oneparam_glong
+everything_oneparam_gulong
+everything_oneparam_gsize
+everything_oneparam_gssize
+everything_oneparam_gintptr
+everything_oneparam_guintptr
+everything_oneparam_gfloat
+everything_oneparam_gdouble
+everything_oneparam_gunichar
+everything_oneparam_GType
+everything_oneparam_utf8
+everything_oneparam_filename
+everything_one_outparam_gboolean
+everything_one_outparam_gint8
+everything_one_outparam_guint8
+everything_one_outparam_gint16
+everything_one_outparam_guint16
+everything_one_outparam_gint32
+everything_one_outparam_guint32
+everything_one_outparam_gint64
+everything_one_outparam_guint64
+everything_one_outparam_gchar
+everything_one_outparam_gshort
+everything_one_outparam_gushort
+everything_one_outparam_gint
+everything_one_outparam_guint
+everything_one_outparam_glong
+everything_one_outparam_gulong
+everything_one_outparam_gsize
+everything_one_outparam_gssize
+everything_one_outparam_gintptr
+everything_one_outparam_guintptr
+everything_one_outparam_gfloat
+everything_one_outparam_gdouble
+everything_one_outparam_gunichar
+everything_one_outparam_GType
+everything_one_outparam_utf8
+everything_one_outparam_filename
+everything_passthrough_one_gboolean
+everything_passthrough_one_gint8
+everything_passthrough_one_guint8
+everything_passthrough_one_gint16
+everything_passthrough_one_guint16
+everything_passthrough_one_gint32
+everything_passthrough_one_guint32
+everything_passthrough_one_gint64
+everything_passthrough_one_guint64
+everything_passthrough_one_gchar
+everything_passthrough_one_gshort
+everything_passthrough_one_gushort
+everything_passthrough_one_gint
+everything_passthrough_one_guint
+everything_passthrough_one_glong
+everything_passthrough_one_gulong
+everything_passthrough_one_gsize
+everything_passthrough_one_gssize
+everything_passthrough_one_gintptr
+everything_passthrough_one_guintptr
+everything_passthrough_one_gfloat
+everything_passthrough_one_gdouble
+everything_passthrough_one_gunichar
+everything_passthrough_one_GType
+everything_passthrough_one_utf8
+everything_passthrough_one_filename
diff --git a/build/win32/foo.def b/build/win32/foo.def
new file mode 100644
index 00000000..cba3e2a2
--- /dev/null
+++ b/build/win32/foo.def
@@ -0,0 +1,48 @@
+EXPORTS
+regress_foo_interface_do_regress_foo
+regress_foo_interface_static_method
+regress_foo_sub_interface_get_type
+regress_foo_sub_interface_do_bar
+regress_foo_sub_interface_do_baz
+regress_foo_init
+regress_foo_object_get_type
+regress_foo_object_new
+regress_foo_object_external_type
+regress_foo_object_new_as_super
+regress_foo_object_take_all
+regress_foo_object_new_cookie
+regress_foo_object_is_it_time_yet
+regress_foo_object_get_name
+regress_foo_object_dup_name
+regress_foo_object_read
+regress_foo_object_skipped_method
+regress_foo_subobject_get_type
+regress_foo_object_get_default
+regress_foo_buffer_get_type
+regress_foo_buffer_some_method
+regress_foo_other_object_get_type
+regress_foo_not_a_constructor_new
+regress_foo_enum_type_get_type
+regress_foo_flags_type_get_type
+regress_foo_boxed_get_type
+regress_foo_boxed_new
+regress_foo_boxed_method
+regress_foo_dbus_data_get_type
+regress_foo_rectangle_add
+regress_foo_rectangle_new
+regress_foo_brect_get_type
+regress_foo_bunion_get_type
+regress_foo_test_string_array
+regress_foo_test_string_array_with_g
+regress_foo_test_array
+regress_foo_test_varargs_callback
+regress_foo_test_varargs_callback2
+regress_foo_test_varargs_callback3
+regress_foo_error_get_type
+regress_foo_error_quark
+regress_foo_some_variant
+regress_foo_skip_me
+regress_foo_foreign_struct_new
+regress_foo_foreign_struct_copy
+regress_foo_object_append_new_stack_layer
+regress_foo_interface_get_type
diff --git a/build/win32/gengir.bat b/build/win32/gengir.bat
new file mode 100644
index 00000000..453b45e7
--- /dev/null
+++ b/build/win32/gengir.bat
@@ -0,0 +1,284 @@
+@echo off
+
+setlocal EnableDelayedExpansion
+
+rem Needed environmental variables:
+rem PLAT: Windows platform-Win32 (i.e. x86) or x64 (i.e. x86-64)
+rem CONF: Configuration Type, Release or Debug
+rem VSVER: Visual C++ version used
+
+rem Check the environemental variables...
+if /i "%PLAT%" == "Win32" goto PLAT_OK
+if /i "%PLAT%" == "x64" goto PLAT_OK
+if /i "%PLAT%" == "x86" (
+ set PLAT=Win32
+ goto PLAT_OK
+)
+if /i "%PLAT%" == "x86-64" (
+ set PLAT=x64
+ goto PLAT_OK
+)
+goto ERR_PLAT
+:PLAT_OK
+if %VSVER% == 9 goto VSVER_OK
+if %VSVER% == 10 goto VSVER_OK
+if %VSVER% == 11 goto VSVER_OK
+goto ERR_VSVER
+:VSVER_OK
+if /i "%CONF%" == "Release" goto CONF_OK
+if /i "%CONF%" == "Debug" goto CONF_OK
+goto ERR_CONF
+:CONF_OK
+if "%BASEDIR%" == "" goto ERR_BASEDIR
+if not exist %BASEDIR% goto ERR_BASEDIR
+
+
+set BINDIR=..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\bin
+set PATH=%BINDIR%;%PATH%
+set PYTHONPATH=..\..;%BINDIR%
+
+set UNINSTALLED_INTROSPECTION_SRCDIR=..\..
+echo Setup .bat for generating GLib .gir's...
+
+rem =====================================================
+rem Feed the "installed" GLib headers into a listing file
+rem =====================================================
+echo %BASEDIR%\lib\glib-2.0\include\glibconfig.h> glib_list
+for /f %%a in ('dir /b %BASEDIR%\include\glib-2.0\glib\*.h') do (
+ echo %BASEDIR%\include\glib-2.0\glib\%%a>> glib_list
+)
+echo %BASEDIR%\include\glib-2.0\gobject\glib-types.h>> glib_list
+echo ..\..\gir\glib-2.0.c>> glib_list
+
+rem ========================================================
+rem Feed the "installed" GObject headers into a listing file
+rem ========================================================
+
+if exist gobject_list del gobject_list
+for /f %%a in ('dir /b %BASEDIR%\include\glib-2.0\gobject\*.h') do (
+ if not %%a == glib-types.h (
+ echo %BASEDIR%\include\glib-2.0\gobject\%%a>> gobject_list
+ )
+)
+echo ..\..\gir\gobject-2.0.c>> gobject_list
+
+rem =====================================================
+rem Feed the "installed" Gio headers into a listing file
+rem =====================================================
+
+for /f %%a in ('dir /b %BASEDIR%\include\gio-win32-2.0\gio\*.h') do (
+ echo %BASEDIR%\include\gio-win32-2.0\gio\%%a> gio_list
+)
+
+for /f %%a in ('dir /b %BASEDIR%\include\glib-2.0\gio\*.h') do (
+ if not %%a == gsettingsbackend.h (
+ echo %BASEDIR%\include\glib-2.0\gio\%%a>> gio_list
+ )
+)
+echo ..\..\gir\gio-2.0.c>> gio_list
+
+rem =================================================================================================
+rem Begin setup of glib_gir.bat to create GLib-2.0.gir
+rem (The ^^ is necessary to span the command to multiple lines on Windows cmd.exe!)
+rem =================================================================================================
+
+echo echo Generating GLib-2.0.gir...> glib_gir.bat
+echo @echo on>> glib_gir.bat
+echo.>> glib_gir.bat
+rem ================================================================
+rem Setup the command line flags to g-ir-scanner for GLib-2.0.gir...
+rem ================================================================
+echo python ..\..\tools\g-ir-scanner --verbose -I..\.. --add-include-path=..\.. ^^>> glib_gir.bat
+echo --add-include-path=..\..\gir --add-include-path=. --namespace=GLib --nsversion=2.0 ^^>> glib_gir.bat
+echo --no-libtool --pkg=glib-2.0 --include=win32-1.0 --library=glib-2-vs%VSVER% --library=gobject-2-vs%VSVER% ^^>> glib_gir.bat
+echo --external-library --reparse-validate --identifier-prefix=G --symbol-prefix=g ^^>> glib_gir.bat
+echo --symbol-prefix=glib --c-include="glib.h" -I%BASEDIR%\include\glib-2.0 ^^>> glib_gir.bat
+echo -I%BASEDIR%\lib\glib-2.0\include -I%BASEDIR%\include -DGETTEXT_PACKAGE=Dummy ^^>> glib_gir.bat
+echo -DGLIB_COMPILATION -D__G_I18N_LIB_H__ ^^>> glib_gir.bat
+echo --filelist=glib_list ^^>> glib_gir.bat
+echo -o GLib-2.0.gir>> glib_gir.bat
+echo.>> glib_gir.bat
+
+echo Completed setup of .bat for generating GLib-2.0.gir.
+echo.>> glib_gir.bat
+
+rem ===================================================
+rem Finish setup of glib_gir.bat to create GLib-2.0.gir
+rem ===================================================
+
+rem ====================================================================
+rem Next, begin the setup for the glib_gir.bat to create GModule-2.0.gir
+rem ====================================================================
+echo echo Generating GModule-2.0.gir...>> glib_gir.bat
+echo.>> glib_gir.bat
+
+rem ===================================================================
+rem Setup the command line flags to g-ir-scanner for GModule-2.0.gir...
+rem ===================================================================
+
+echo python ..\..\tools\g-ir-scanner --verbose -I..\.. --add-include-path=..\.. ^^>> glib_gir.bat
+echo --add-include-path=..\..\gir --add-include-path=. --namespace=GModule --nsversion=2.0 ^^>> glib_gir.bat
+echo --no-libtool --include=GLib-2.0 --pkg=gmodule-2.0 --library=gmodule-2-vs%VSVER% ^^>> glib_gir.bat
+echo --external-library --reparse-validate --identifier-prefix=G --c-include="gmodule.h" ^^>> glib_gir.bat
+echo -I%BASEDIR%\include\glib-2.0 -I%BASEDIR%\lib\glib-2.0\include -I%BASEDIR%\include ^^>> glib_gir.bat
+echo %BASEDIR%\include\glib-2.0\gmodule.h -o GModule-2.0.gir>> glib_gir.bat
+echo.>> glib_gir.bat
+
+echo Completed setup of .bat for generating GModule-2.0.gir.
+echo.>> glib_gir.bat
+
+rem ======================================================
+rem Finish setup of glib_gir.bat to create GModule-2.0.gir
+rem ======================================================
+
+rem ====================================================================
+rem Next, begin the setup for the glib_gir.bat to create GObject-2.0.gir
+rem ====================================================================
+
+echo echo Generating GObject-2.0.gir...>> glib_gir.bat
+echo.>> glib_gir.bat
+
+rem ===================================================================
+rem Setup the command line flags to g-ir-scanner for GObject-2.0.gir...
+rem ===================================================================
+
+echo python ..\..\tools\g-ir-scanner --verbose -I..\.. --add-include-path=..\.. ^^>> glib_gir.bat
+echo --add-include-path=..\..\gir --add-include-path=. --namespace=GObject --nsversion=2.0 ^^>> glib_gir.bat
+echo --no-libtool --include=GLib-2.0 --pkg=gobject-2.0 --library=gobject-2-vs%VSVER% ^^>> glib_gir.bat
+echo --external-library --reparse-validate --identifier-prefix=G --c-include="glib-gobject.h" ^^>> glib_gir.bat
+echo -I%BASEDIR%/include/glib-2.0 -I%BASEDIR%/lib/glib-2.0/include -I%BASEDIR%/include ^^>> glib_gir.bat
+echo -DGOBJECT_COMPILATION ^^>> glib_gir.bat
+echo --filelist=gobject_list -o GObject-2.0.gir>> glib_gir.bat
+echo.>> glib_gir.bat
+
+echo Completed setup of .bat for generating GObject-2.0.gir.
+echo.>> glib_gir.bat
+rem ======================================================
+rem Finish setup of glib_gir.bat to create GObject-2.0.gir
+rem ======================================================
+
+rem ================================================================
+rem Next, begin the setup for the glib_gir.bat to create Gio-2.0.gir
+rem ================================================================
+echo echo Generating Gio-2.0.gir...>> glib_gir.bat
+echo.>> glib_gir.bat
+
+rem ===============================================================
+rem Setup the command line flags to g-ir-scanner for Gio-2.0.gir...
+rem ===============================================================
+echo python ..\..\tools\g-ir-scanner --verbose -I..\.. --add-include-path=..\.. ^^>> glib_gir.bat
+echo --add-include-path=..\..\gir --add-include-path=. --namespace=Gio --nsversion=2.0 ^^>> glib_gir.bat
+echo --no-libtool --pkg=gio-2.0 --pkg=gio-windows-2.0 --include=GObject-2.0 ^^>> glib_gir.bat
+echo --library=gio-2-vs%VSVER% --external-library --reparse-validate --warn-all ^^>> glib_gir.bat
+echo --identifier-prefix=G --include=GLib-2.0 --c-include="gio/gio.h" -DGIO_COMPILATION ^^>> glib_gir.bat
+echo -I%BASEDIR%\include\glib-2.0 -I%BASEDIR%\lib\glib-2.0\include ^^>> glib_gir.bat
+echo -I%BASEDIR%\include ^^>> glib_gir.bat
+echo --filelist=gio_list ^^>> glib_gir.bat
+echo -o Gio-2.0.gir>> glib_gir.bat
+echo.>> glib_gir.bat
+
+echo Completed setup of .bat for generating Gio-2.0.gir.
+echo.>> glib_gir.bat
+rem ==================================================
+rem Finish setup of glib_gir.bat to create Gio-2.0.gir
+rem ==================================================
+
+rem =========================================================================
+rem Next, begin the setup for the glib_gir.bat to create GIRepository-2.0.gir
+rem =========================================================================
+copy /b %BINDIR%\girepository-1.0.lib %BINDIR%\girepository-2.0.lib
+echo echo Generating GIRepository-2.0.gir...>> glib_gir.bat
+echo.>> glib_gir.bat
+
+rem ========================================================================
+rem Setup the command line flags to g-ir-scanner for GIRepository-2.0.gir...
+rem ========================================================================
+echo python ..\..\tools\g-ir-scanner --verbose --warn-all ^^>> glib_gir.bat
+echo --add-include-path=..\..\gir --add-include-path=. --namespace=GIRepository --nsversion=2.0 ^^>> glib_gir.bat
+echo --identifier-prefix=GI --symbol-prefix=g --c-include="girepository.h" --add-include-path=. ^^>> glib_gir.bat
+echo --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 ^^>> glib_gir.bat
+echo --library=girepository-1-vs%VSVER% -I..\..\girepository -I..\.. -I%BASEDIR%\include ^^>> glib_gir.bat
+echo -I%BASEDIR%\include\glib-2.0 -I%BASEDIR%\lib\glib-2.0\include -DGI_COMPILATION ^^>> glib_gir.bat
+echo ..\..\girepository\girepository.h ^^>> glib_gir.bat
+echo ..\..\girepository\girepository.c ^^>> glib_gir.bat
+
+for /f %%a in ('dir /b ..\..\girepository\gi*info.c') do (
+ echo ..\..\girepository\%%a ^^>> glib_gir.bat
+)
+
+for /f %%a in ('dir /b ..\..\girepository\gi*info.h') do (
+ echo ..\..\girepository\%%a ^^>> glib_gir.bat
+)
+
+echo ..\..\girepository\gitypelib.h ^^>> glib_gir.bat
+echo ..\..\girepository\gitypes.h ^^>> glib_gir.bat
+echo -o GIRepository-2.0.gir>> glib_gir.bat
+echo.>> glib_gir.bat
+
+echo Completed setup of .bat for generating GIRepository-2.0.gir.
+echo.>> glib_gir.bat
+rem ===========================================================
+rem Finish setup of glib_gir.bat to create GIRepository-2.0.gir
+rem ===========================================================
+
+rem =======================
+rem Now generate the .gir's
+rem =======================
+CALL glib_gir.bat
+
+@echo off
+rem =======
+rem Cleanup
+rem =======
+rem del %BINDIR%\girepository-2.0.lib
+del gio_list
+del gobject_list
+del glib_list
+del glib_gir.bat
+goto DO_COMPILE_GIR
+:ERR_PLAT
+echo You need to specify a valid Platform [set PLAT=Win32 or PLAT=x64]
+goto DONE
+:ERR_VSVER
+echo You need to specify your Visual Studio version [set VSVER=9 or VSVER=10 or VSVER=11]
+goto DONE
+:ERR_CONF
+echo You need to specify a valid Configuration [set CONF=Release or CONF=Debug]
+goto DONE
+:ERR_BASEDIR
+echo You need to specify a valid BASEDIR.
+goto DONE
+:DO_COMPILE_GIR
+rem Now compile the generated .gir files
+g-ir-compiler --includedir=. --includedir=..\..\gir --debug --verbose GLib-2.0.gir -o GLib-2.0.typelib
+g-ir-compiler --includedir=. --includedir=..\..\gir --debug --verbose GModule-2.0.gir -o GModule-2.0.typelib
+g-ir-compiler --includedir=. --includedir=..\..\gir --debug --verbose GObject-2.0.gir -o GObject-2.0.typelib
+g-ir-compiler --includedir=. --includedir=..\..\gir --debug --verbose Gio-2.0.gir -o Gio-2.0.typelib
+g-ir-compiler --includedir=. --includedir=..\..\gir --debug --verbose GIRepository-2.0.gir -o GIRepository-2.0.typelib
+
+rem Now process the bundled .gir files
+python create_nonglib_gir.py --vsver=%VSVER%
+set CURRDIR=%CD%
+cd ..\..\gir
+g-ir-compiler --includedir=. --debug --verbose cairo-1.0.gir -o cairo-1.0.typelib
+g-ir-compiler --includedir=. --debug --verbose freetype2-2.0.gir -o freetype2-2.0.typelib
+g-ir-compiler --includedir=. --debug --verbose GL-1.0.gir -o GL-1.0.typelib
+g-ir-compiler --includedir=. --debug --verbose libxml2-2.0.gir -o libxml2-2.0.typelib
+g-ir-compiler --includedir=. --debug --verbose win32-1.0.gir -o win32-1.0.typelib
+cd %CURRDIR%
+
+rem Copy the generated .girs and .typelibs to their appropriate places
+
+mkdir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0
+move /y *.gir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0\
+copy /y ..\..\gir\freetype2-2.0.gir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0\
+copy /y ..\..\gir\GL-1.0.gir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0\
+copy /y ..\..\gir\libxml2-2.0.gir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0\
+copy /y ..\..\gir\cairo-1.0.gir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0\
+copy /y ..\..\gir\win32-1.0.gir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\share\gir-1.0\
+
+mkdir ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\lib\girepository-1.0
+move /y *.typelib ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\lib\girepository-1.0\
+move /y ..\..\gir\*.typelib ..\..\build\win32\vs%VSVER%\%CONF%\%PLAT%\lib\girepository-1.0\
+:DONE
+
diff --git a/build/win32/gettype.def b/build/win32/gettype.def
new file mode 100644
index 00000000..401cb333
--- /dev/null
+++ b/build/win32/gettype.def
@@ -0,0 +1,6 @@
+EXPORTS
+gettype_object_get_type
+gettype_object_new
+gettype_object_nonmeta1_get_type
+gettype_object_nonmeta2_get_type
+gettype_object_nonmeta_get_gtype
diff --git a/build/win32/gimarshallingtests.def b/build/win32/gimarshallingtests.def
new file mode 100644
index 00000000..268284dc
--- /dev/null
+++ b/build/win32/gimarshallingtests.def
@@ -0,0 +1,583 @@
+EXPORTS
+gi_marshalling_tests_boolean_return_true
+gi_marshalling_tests_boolean_return_false
+gi_marshalling_tests_boolean_in_true
+gi_marshalling_tests_boolean_in_false
+gi_marshalling_tests_boolean_out_true
+gi_marshalling_tests_boolean_out_false
+gi_marshalling_tests_boolean_inout_true_false
+gi_marshalling_tests_boolean_inout_false_true
+
+gi_marshalling_tests_int8_return_max
+gi_marshalling_tests_int8_return_min
+gi_marshalling_tests_int8_in_max
+gi_marshalling_tests_int8_in_min
+gi_marshalling_tests_int8_out_max
+gi_marshalling_tests_int8_out_min
+gi_marshalling_tests_int8_inout_max_min
+gi_marshalling_tests_int8_inout_min_max
+gi_marshalling_tests_uint8_return
+gi_marshalling_tests_uint8_in
+gi_marshalling_tests_uint8_out
+gi_marshalling_tests_uint8_inout
+gi_marshalling_tests_int16_return_max
+gi_marshalling_tests_int16_return_min
+gi_marshalling_tests_int16_in_max
+gi_marshalling_tests_int16_in_min
+gi_marshalling_tests_int16_out_max
+gi_marshalling_tests_int16_out_min
+gi_marshalling_tests_int16_inout_max_min
+gi_marshalling_tests_int16_inout_min_max
+gi_marshalling_tests_uint16_return
+gi_marshalling_tests_uint16_in
+gi_marshalling_tests_uint16_out
+gi_marshalling_tests_uint16_inout
+gi_marshalling_tests_int32_return_max
+gi_marshalling_tests_int32_return_min
+
+gi_marshalling_tests_int32_in_max
+gi_marshalling_tests_int32_in_min
+
+gi_marshalling_tests_int32_out_max
+gi_marshalling_tests_int32_out_min
+
+gi_marshalling_tests_int32_inout_max_min
+gi_marshalling_tests_int32_inout_min_max
+
+
+gi_marshalling_tests_uint32_return
+
+gi_marshalling_tests_uint32_in
+
+gi_marshalling_tests_uint32_out
+gi_marshalling_tests_uint32_inout
+
+
+gi_marshalling_tests_int64_return_max
+gi_marshalling_tests_int64_return_min
+
+gi_marshalling_tests_int64_in_max
+gi_marshalling_tests_int64_in_min
+
+gi_marshalling_tests_int64_out_max
+gi_marshalling_tests_int64_out_min
+
+gi_marshalling_tests_int64_inout_max_min
+gi_marshalling_tests_int64_inout_min_max
+
+
+gi_marshalling_tests_uint64_return
+
+gi_marshalling_tests_uint64_in
+
+gi_marshalling_tests_uint64_out
+gi_marshalling_tests_uint64_inout
+
+
+gi_marshalling_tests_short_return_max
+gi_marshalling_tests_short_return_min
+
+gi_marshalling_tests_short_in_max
+gi_marshalling_tests_short_in_min
+
+gi_marshalling_tests_short_out_max
+gi_marshalling_tests_short_out_min
+
+gi_marshalling_tests_short_inout_max_min
+gi_marshalling_tests_short_inout_min_max
+
+
+gi_marshalling_tests_ushort_return
+
+gi_marshalling_tests_ushort_in
+
+gi_marshalling_tests_ushort_out
+gi_marshalling_tests_ushort_inout
+
+
+gi_marshalling_tests_int_return_max
+gi_marshalling_tests_int_return_min
+
+gi_marshalling_tests_int_in_max
+gi_marshalling_tests_int_in_min
+
+gi_marshalling_tests_int_out_max
+gi_marshalling_tests_int_out_min
+
+gi_marshalling_tests_int_inout_max_min
+gi_marshalling_tests_int_inout_min_max
+
+
+gi_marshalling_tests_uint_return
+
+gi_marshalling_tests_uint_in
+
+gi_marshalling_tests_uint_out
+gi_marshalling_tests_uint_inout
+
+
+gi_marshalling_tests_long_return_max
+gi_marshalling_tests_long_return_min
+
+gi_marshalling_tests_long_in_max
+gi_marshalling_tests_long_in_min
+
+gi_marshalling_tests_long_out_max
+gi_marshalling_tests_long_out_min
+
+gi_marshalling_tests_long_inout_max_min
+gi_marshalling_tests_long_inout_min_max
+
+
+gi_marshalling_tests_ulong_return
+
+gi_marshalling_tests_ulong_in
+
+gi_marshalling_tests_ulong_out
+gi_marshalling_tests_ulong_inout
+
+
+gi_marshalling_tests_ssize_return_max
+gi_marshalling_tests_ssize_return_min
+
+gi_marshalling_tests_ssize_in_max
+gi_marshalling_tests_ssize_in_min
+
+gi_marshalling_tests_ssize_out_max
+gi_marshalling_tests_ssize_out_min
+
+gi_marshalling_tests_ssize_inout_max_min
+gi_marshalling_tests_ssize_inout_min_max
+
+
+gi_marshalling_tests_size_return
+
+gi_marshalling_tests_size_in
+
+gi_marshalling_tests_size_out
+gi_marshalling_tests_size_inout
+gi_marshalling_tests_float_return
+
+gi_marshalling_tests_float_in
+
+gi_marshalling_tests_float_out
+
+gi_marshalling_tests_float_inout
+
+
+gi_marshalling_tests_double_return
+
+gi_marshalling_tests_double_in
+
+gi_marshalling_tests_double_out
+
+gi_marshalling_tests_double_inout
+
+gi_marshalling_tests_time_t_return
+
+gi_marshalling_tests_time_t_in
+
+gi_marshalling_tests_time_t_out
+
+gi_marshalling_tests_time_t_inout
+
+gi_marshalling_tests_gtype_return
+
+gi_marshalling_tests_gtype_string_return
+
+gi_marshalling_tests_gtype_in
+
+gi_marshalling_tests_gtype_string_in
+
+gi_marshalling_tests_gtype_out
+
+gi_marshalling_tests_gtype_string_out
+
+gi_marshalling_tests_gtype_inout
+
+gi_marshalling_tests_utf8_none_return
+gi_marshalling_tests_utf8_full_return
+
+gi_marshalling_tests_utf8_none_in
+gi_marshalling_tests_utf8_none_out
+gi_marshalling_tests_utf8_full_out
+
+gi_marshalling_tests_utf8_dangling_out
+
+gi_marshalling_tests_utf8_none_inout
+gi_marshalling_tests_utf8_full_inout
+gi_marshalling_tests_utf8_as_uint8array_in
+
+gi_marshalling_tests_filename_list_return
+
+
+gi_marshalling_tests_enum_returnv
+
+gi_marshalling_tests_enum_in
+
+gi_marshalling_tests_enum_out
+
+gi_marshalling_tests_enum_inout
+
+
+gi_marshalling_tests_genum_get_type
+gi_marshalling_tests_genum_returnv
+
+gi_marshalling_tests_genum_in
+
+gi_marshalling_tests_genum_out
+
+gi_marshalling_tests_genum_inout
+
+gi_marshalling_tests_flags_get_type
+
+gi_marshalling_tests_flags_returnv
+
+gi_marshalling_tests_flags_in
+gi_marshalling_tests_flags_in_zero
+
+gi_marshalling_tests_flags_out
+
+gi_marshalling_tests_flags_inout
+
+gi_marshalling_tests_no_type_flags_returnv
+
+gi_marshalling_tests_no_type_flags_in
+gi_marshalling_tests_no_type_flags_in_zero
+
+gi_marshalling_tests_no_type_flags_out
+
+gi_marshalling_tests_no_type_flags_inout
+
+gi_marshalling_tests_init_function
+
+gi_marshalling_tests_array_fixed_int_return
+gi_marshalling_tests_array_fixed_short_return
+
+gi_marshalling_tests_array_fixed_int_in
+gi_marshalling_tests_array_fixed_short_in
+
+gi_marshalling_tests_array_fixed_out
+
+gi_marshalling_tests_array_fixed_out_struct
+
+gi_marshalling_tests_array_fixed_inout
+
+gi_marshalling_tests_array_in_nonzero_nonlen
+
+gi_marshalling_tests_array_return
+gi_marshalling_tests_array_return_etc
+
+gi_marshalling_tests_array_in
+gi_marshalling_tests_array_in_len_before
+gi_marshalling_tests_array_in_len_zero_terminated
+gi_marshalling_tests_array_string_in
+gi_marshalling_tests_array_uint8_in
+gi_marshalling_tests_array_struct_in
+gi_marshalling_tests_array_struct_take_in
+gi_marshalling_tests_array_struct_value_in
+gi_marshalling_tests_array_simple_struct_in
+gi_marshalling_tests_multi_array_key_value_in
+gi_marshalling_tests_array_enum_in
+gi_marshalling_tests_array_in_guint64_len
+gi_marshalling_tests_array_in_guint8_len
+
+gi_marshalling_tests_array_out
+gi_marshalling_tests_array_out_etc
+
+gi_marshalling_tests_array_inout
+gi_marshalling_tests_array_inout_etc
+
+
+gi_marshalling_tests_array_zero_terminated_return
+gi_marshalling_tests_array_zero_terminated_return_null
+gi_marshalling_tests_array_zero_terminated_return_struct
+
+gi_marshalling_tests_array_zero_terminated_in
+
+gi_marshalling_tests_array_zero_terminated_out
+
+gi_marshalling_tests_array_zero_terminated_inout
+
+gi_marshalling_tests_array_gvariant_none_in
+
+gi_marshalling_tests_array_gvariant_container_in
+
+gi_marshalling_tests_array_gvariant_full_in
+
+
+gi_marshalling_tests_garray_int_none_return
+gi_marshalling_tests_garray_uint64_none_return
+gi_marshalling_tests_garray_utf8_none_return
+gi_marshalling_tests_garray_utf8_container_return
+gi_marshalling_tests_garray_utf8_full_return
+
+gi_marshalling_tests_garray_int_none_in
+gi_marshalling_tests_garray_uint64_none_in
+gi_marshalling_tests_garray_utf8_none_in
+
+gi_marshalling_tests_garray_utf8_none_out
+gi_marshalling_tests_garray_utf8_container_out
+gi_marshalling_tests_garray_utf8_full_out
+gi_marshalling_tests_garray_utf8_full_out_caller_allocated
+
+gi_marshalling_tests_garray_utf8_none_inout
+gi_marshalling_tests_garray_utf8_container_inout
+gi_marshalling_tests_garray_utf8_full_inout
+
+
+gi_marshalling_tests_gptrarray_utf8_none_return
+gi_marshalling_tests_gptrarray_utf8_container_return
+gi_marshalling_tests_gptrarray_utf8_full_return
+
+gi_marshalling_tests_gptrarray_utf8_none_in
+
+gi_marshalling_tests_gptrarray_utf8_none_out
+gi_marshalling_tests_gptrarray_utf8_container_out
+gi_marshalling_tests_gptrarray_utf8_full_out
+
+gi_marshalling_tests_gptrarray_utf8_none_inout
+gi_marshalling_tests_gptrarray_utf8_container_inout
+gi_marshalling_tests_gptrarray_utf8_full_inout
+
+
+gi_marshalling_tests_bytearray_full_return
+gi_marshalling_tests_bytearray_none_in
+
+
+gi_marshalling_tests_gstrv_return
+gi_marshalling_tests_gstrv_in
+gi_marshalling_tests_gstrv_out
+gi_marshalling_tests_gstrv_inout
+
+
+
+gi_marshalling_tests_glist_int_none_return
+gi_marshalling_tests_glist_uint32_none_return
+gi_marshalling_tests_glist_utf8_none_return
+gi_marshalling_tests_glist_utf8_container_return
+gi_marshalling_tests_glist_utf8_full_return
+
+gi_marshalling_tests_glist_int_none_in
+gi_marshalling_tests_glist_uint32_none_in
+gi_marshalling_tests_glist_utf8_none_in
+
+gi_marshalling_tests_glist_utf8_none_out
+gi_marshalling_tests_glist_utf8_container_out
+gi_marshalling_tests_glist_utf8_full_out
+
+gi_marshalling_tests_glist_utf8_none_inout
+gi_marshalling_tests_glist_utf8_container_inout
+gi_marshalling_tests_glist_utf8_full_inout
+
+
+
+gi_marshalling_tests_gslist_int_none_return
+gi_marshalling_tests_gslist_utf8_none_return
+gi_marshalling_tests_gslist_utf8_container_return
+gi_marshalling_tests_gslist_utf8_full_return
+
+gi_marshalling_tests_gslist_int_none_in
+gi_marshalling_tests_gslist_utf8_none_in
+
+gi_marshalling_tests_gslist_utf8_none_out
+gi_marshalling_tests_gslist_utf8_container_out
+gi_marshalling_tests_gslist_utf8_full_out
+
+gi_marshalling_tests_gslist_utf8_none_inout
+gi_marshalling_tests_gslist_utf8_container_inout
+gi_marshalling_tests_gslist_utf8_full_inout
+
+
+
+gi_marshalling_tests_ghashtable_int_none_return
+gi_marshalling_tests_ghashtable_utf8_none_return
+gi_marshalling_tests_ghashtable_utf8_container_return
+gi_marshalling_tests_ghashtable_utf8_full_return
+
+gi_marshalling_tests_ghashtable_int_none_in
+gi_marshalling_tests_ghashtable_utf8_none_in
+
+gi_marshalling_tests_ghashtable_utf8_none_out
+gi_marshalling_tests_ghashtable_utf8_container_out
+gi_marshalling_tests_ghashtable_utf8_full_out
+
+gi_marshalling_tests_ghashtable_utf8_none_inout
+gi_marshalling_tests_ghashtable_utf8_container_inout
+gi_marshalling_tests_ghashtable_utf8_full_inout
+
+gi_marshalling_tests_gvalue_return
+
+gi_marshalling_tests_gvalue_in
+gi_marshalling_tests_gvalue_in_with_type
+gi_marshalling_tests_gvalue_int64_in
+gi_marshalling_tests_gvalue_int64_out
+
+gi_marshalling_tests_gvalue_in_enum
+
+gi_marshalling_tests_gvalue_out
+gi_marshalling_tests_gvalue_out_caller_allocates
+
+gi_marshalling_tests_gvalue_inout
+
+gi_marshalling_tests_gvalue_flat_array
+
+gi_marshalling_tests_return_gvalue_flat_array
+
+gi_marshalling_tests_gvalue_flat_array_round_trip
+gi_marshalling_tests_gclosure_in
+gi_marshalling_tests_gclosure_return
+
+
+gi_marshalling_tests_callback_return_value_only
+
+
+gi_marshalling_tests_callback_one_out_parameter
+
+
+gi_marshalling_tests_callback_multiple_out_parameters
+
+
+gi_marshalling_tests_callback_return_value_and_one_out_parameter
+
+gi_marshalling_tests_callback_return_value_and_multiple_out_parameters
+gi_marshalling_tests_pointer_in_return
+
+
+gi_marshalling_tests_simple_struct_returnv
+
+gi_marshalling_tests_simple_struct_inv
+
+gi_marshalling_tests_simple_struct_method
+
+gi_marshalling_tests_pointer_struct_get_type
+
+gi_marshalling_tests_pointer_struct_returnv
+
+gi_marshalling_tests_pointer_struct_inv
+
+gi_marshalling_tests_boxed_struct_get_type
+
+gi_marshalling_tests_boxed_struct_new
+
+gi_marshalling_tests_boxed_struct_returnv
+
+gi_marshalling_tests_boxed_struct_inv
+
+gi_marshalling_tests_boxed_struct_out
+
+gi_marshalling_tests_boxed_struct_inout
+gi_marshalling_tests_union_get_type
+
+gi_marshalling_tests_union_returnv
+
+gi_marshalling_tests_union_inv
+
+
+gi_marshalling_tests_union_method
+gi_marshalling_tests_object_get_type
+gi_marshalling_tests_object_static_method
+gi_marshalling_tests_object_method
+gi_marshalling_tests_object_overridden_method
+gi_marshalling_tests_object_new
+
+gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_none
+gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_full
+gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_none
+gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_full
+gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_none
+gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_full
+
+gi_marshalling_tests_object_method_array_in
+gi_marshalling_tests_object_method_array_out
+gi_marshalling_tests_object_method_array_inout
+gi_marshalling_tests_object_method_array_return
+
+gi_marshalling_tests_object_method_int8_in
+gi_marshalling_tests_object_method_int8_out
+gi_marshalling_tests_object_method_int8_arg_and_out_caller
+gi_marshalling_tests_object_method_int8_arg_and_out_callee
+gi_marshalling_tests_object_method_str_arg_out_ret
+gi_marshalling_tests_object_method_with_default_implementation
+;gi_marshalling_tests_object_method_variant_array_in ;unimplemented
+
+gi_marshalling_tests_object_vfunc_return_value_only
+gi_marshalling_tests_object_vfunc_one_out_parameter
+gi_marshalling_tests_object_vfunc_multiple_out_parameters
+gi_marshalling_tests_object_vfunc_caller_allocated_out_parameter
+gi_marshalling_tests_object_vfunc_array_out_parameter
+gi_marshalling_tests_object_vfunc_return_value_and_one_out_parameter
+gi_marshalling_tests_object_vfunc_return_value_and_multiple_out_parameters
+gi_marshalling_tests_object_vfunc_meth_with_error
+
+gi_marshalling_tests_object_none_return
+gi_marshalling_tests_object_full_return
+
+gi_marshalling_tests_object_none_in
+
+
+gi_marshalling_tests_object_none_out
+gi_marshalling_tests_object_full_out
+
+gi_marshalling_tests_object_none_inout
+gi_marshalling_tests_object_full_inout
+
+gi_marshalling_tests_object_int8_in
+gi_marshalling_tests_object_int8_out
+
+gi_marshalling_tests_object_vfunc_with_callback
+gi_marshalling_tests_object_call_vfunc_with_callback
+
+
+
+
+gi_marshalling_tests_sub_object_get_type
+
+gi_marshalling_tests_sub_object_sub_method
+gi_marshalling_tests_sub_object_overwritten_method
+gi_marshalling_tests_sub_sub_object_get_type
+gi_marshalling_tests_interface_get_type
+
+gi_marshalling_tests_interface_test_int8_in
+
+gi_marshalling_tests_test_interface_test_int8_in
+
+gi_marshalling_tests_interface2_get_type
+
+
+gi_marshalling_tests_int_out_out
+gi_marshalling_tests_int_three_in_three_out
+gi_marshalling_tests_int_return_out
+
+
+gi_marshalling_tests_gerror
+gi_marshalling_tests_gerror_array_in
+gi_marshalling_tests_gerror_out
+gi_marshalling_tests_gerror_out_transfer_none
+gi_marshalling_tests_gerror_return
+
+gi_marshalling_tests_overrides_struct_get_type
+
+gi_marshalling_tests_overrides_struct_new
+
+gi_marshalling_tests_overrides_struct_method
+
+gi_marshalling_tests_overrides_struct_returnv
+gi_marshalling_tests_overrides_object_get_type
+
+gi_marshalling_tests_overrides_object_new
+
+gi_marshalling_tests_overrides_object_method
+
+gi_marshalling_tests_overrides_object_returnv
+gi_marshalling_tests_properties_object_get_type
+gi_marshalling_tests_properties_object_new
+gi_marshalling_tests_interface3_get_type
+gi_marshalling_tests_interface3_test_variant_array_in
+
+gi_marshalling_tests_param_spec_return
+gi_marshalling_tests_param_spec_out
+gi_marshalling_tests_param_spec_in_bool
+
+gi_marshalling_tests_gbytes_full_return
+gi_marshalling_tests_gbytes_none_in \ No newline at end of file
diff --git a/build/win32/gtkfrob.def b/build/win32/gtkfrob.def
new file mode 100644
index 00000000..79dce040
--- /dev/null
+++ b/build/win32/gtkfrob.def
@@ -0,0 +1,2 @@
+EXPORTS
+gtk_frob_language_manager_get_default
diff --git a/build/win32/sletter.def b/build/win32/sletter.def
new file mode 100644
index 00000000..a4a547e8
--- /dev/null
+++ b/build/win32/sletter.def
@@ -0,0 +1,4 @@
+EXPORTS
+s_hello
+s_spawn_error_quark
+s_dbus_error_quark
diff --git a/build/win32/test_gir_cmd.txt b/build/win32/test_gir_cmd.txt
new file mode 100644
index 00000000..1db732cf
--- /dev/null
+++ b/build/win32/test_gir_cmd.txt
@@ -0,0 +1,117 @@
+These are command lines that can be used to generate the .gir files for the various test DLLs
+(paste and run each line in the cmd.exe window that you used to launch the Visual C++ projects).
+
+Run each line in the root folder of the gobject-introspection sources after you have successfully
+built the projects corresponding to your Visual C++ version and configuration.
+
+--------------------------------
+------ Visual Studio 2008 ------
+--------------------------------
+
+------------------
+--- 32-bit/x86 ---
+------------------
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=Utility --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=utility-1-vs9 --c-include="utility.h" --warn-error -I.\tests\scanner .\tests\scanner\utility.c .\tests\scanner\utility.h -o Utility-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=Annotation --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=annotation-1-vs9 --c-include="annotation.h" --warn-error -I.\tests\scanner .\tests\scanner\annotation.c .\tests\scanner\annotation.h -o Annotation-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=Foo --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Gio-2.0 --include=Utility-1.0 --library=foo-1-vs9 --c-include="foo.h" --warn-error -I.\tests\scanner .\tests\scanner\foo.c .\tests\scanner\foo.h -o Foo-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=TestInherit --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=testinherit-1-vs9 --c-include="drawable.h" --warn-error -I.\tests\scanner .\tests\scanner\drawable.c .\tests\scanner\drawable.h -o TestInherit-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=GetType --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gettype-1-vs9 --c-include="gettype.h" --identifier-prefix=GetType --symbol-prefix=gettype -I.\tests\scanner .\tests\scanner\gettype.c .\tests\scanner\gettype.h -o GetType-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=GtkFrob --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gtkfrob-1-vs9 --identifier-prefix=Gtk --symbol-prefix=gtk_frob --warn-error -I.\tests\scanner .\tests\scanner\gtkfrob.c .\tests\scanner\gtkfrob.h -o GtkFrob-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=.\gir --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=Regress --nsversion=1.0 --no-libtool --include=cairo-1.0 --include=Gio-2.0 --library=regress-1-vs9 --c-include="regress.h" --warn-error -I.\tests\scanner -Ic:\progra~2\micros~1.0\vc\include .\tests\scanner\regress.c .\tests\scanner\regress.h -o Regress-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --namespace=SLetter --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=sletter-1-vs9 --identifier-prefix=S --c-include="sletter.h" --warn-error -I.\tests\scanner .\tests\scanner\sletter.c .\tests\scanner\sletter.h -o SLetter-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --add-include-path=$(top_builddir) --include=Gio-2.0 --library=everything-1-vs9 --output=Everything-1.0.gir .\tests\everything.h .\tests\everything.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=GIMarshallingTests --symbol-prefix=gi_marshalling_tests --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=gimarshallingtests-1-vs9 --output=GIMarshallingTests-1.0.gir --c-include="tests/gimarshallingtests.h" .\tests\gimarshallingtests.h .\tests\gimarshallingtests.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\Win32\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=everything-1-vs9 --output=Everything-1.0.gir --c-include="tests/everything.h" .\tests\everything.h .\tests\everything.c
+
+---------------------
+--- 64-bit/x86-64 ---
+---------------------
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=Utility --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=utility-1-vs9 --c-include="utility.h" --warn-error -I.\tests\scanner .\tests\scanner\utility.c .\tests\scanner\utility.h -o Utility-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=Annotation --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=annotation-1-vs9 --c-include="annotation.h" --warn-error -I.\tests\scanner .\tests\scanner\annotation.c .\tests\scanner\annotation.h -o Annotation-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=Foo --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Gio-2.0 --include=Utility-1.0 --library=foo-1-vs9 --c-include="foo.h" --warn-error -I.\tests\scanner .\tests\scanner\foo.c .\tests\scanner\foo.h -o Foo-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=TestInherit --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=testinherit-1-vs9 --c-include="drawable.h" --warn-error -I.\tests\scanner .\tests\scanner\drawable.c .\tests\scanner\drawable.h -o TestInherit-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=GetType --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gettype-1-vs9 --c-include="gettype.h" --identifier-prefix=GetType --symbol-prefix=gettype -I.\tests\scanner .\tests\scanner\gettype.c .\tests\scanner\gettype.h -o GetType-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=GtkFrob --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gtkfrob-1-vs9 --identifier-prefix=Gtk --symbol-prefix=gtk_frob --warn-error -I.\tests\scanner .\tests\scanner\gtkfrob.c .\tests\scanner\gtkfrob.h -o GtkFrob-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=.\gir --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=Regress --nsversion=1.0 --no-libtool --include=cairo-1.0 --include=Gio-2.0 --library=regress-1-vs9 --c-include="regress.h" --warn-error -I.\tests\scanner -Ic:\progra~2\micros~1.0\vc\include .\tests\scanner\regress.c .\tests\scanner\regress.h -o Regress-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --namespace=SLetter --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=sletter-1-vs9 --identifier-prefix=S --c-include="sletter.h" --warn-error -I.\tests\scanner .\tests\scanner\sletter.c .\tests\scanner\sletter.h -o SLetter-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --add-include-path=$(top_builddir) --include=Gio-2.0 --library=everything-1-vs9 --output=Everything-1.0.gir .\tests\everything.h .\tests\everything.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=GIMarshallingTests --symbol-prefix=gi_marshalling_tests --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=gimarshallingtests-1-vs9 --output=GIMarshallingTests-1.0.gir --c-include="tests/gimarshallingtests.h" .\tests\gimarshallingtests.h .\tests\gimarshallingtests.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs9\x64\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=everything-1-vs9 --output=Everything-1.0.gir --c-include="tests/everything.h" .\tests\everything.h .\tests\everything.c
+
+--------------------------------
+------ Visual Studio 2010 ------
+--------------------------------
+
+------------------
+--- 32-bit/x86 ---
+------------------
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=Utility --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=utility-1-vs10 --c-include="utility.h" --warn-error -I.\tests\scanner .\tests\scanner\utility.c .\tests\scanner\utility.h -o Utility-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=Annotation --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=annotation-1-vs10 --c-include="annotation.h" --warn-error -I.\tests\scanner .\tests\scanner\annotation.c .\tests\scanner\annotation.h -o Annotation-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=Foo --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Gio-2.0 --include=Utility-1.0 --library=foo-1-vs10 --c-include="foo.h" --warn-error -I.\tests\scanner .\tests\scanner\foo.c .\tests\scanner\foo.h -o Foo-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=TestInherit --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=testinherit-1-vs10 --c-include="drawable.h" --warn-error -I.\tests\scanner .\tests\scanner\drawable.c .\tests\scanner\drawable.h -o TestInherit-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=GetType --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gettype-1-vs10 --c-include="gettype.h" --identifier-prefix=GetType --symbol-prefix=gettype -I.\tests\scanner .\tests\scanner\gettype.c .\tests\scanner\gettype.h -o GetType-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=GtkFrob --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gtkfrob-1-vs10 --identifier-prefix=Gtk --symbol-prefix=gtk_frob --warn-error -I.\tests\scanner .\tests\scanner\gtkfrob.c .\tests\scanner\gtkfrob.h -o GtkFrob-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=.\gir --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=Regress --nsversion=1.0 --no-libtool --include=cairo-1.0 --include=Gio-2.0 --library=regress-1-vs10 --c-include="regress.h" --warn-error -I.\tests\scanner -Ic:\progra~2\micros~1.0\vc\include .\tests\scanner\regress.c .\tests\scanner\regress.h -o Regress-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --namespace=SLetter --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=sletter-1-vs10 --identifier-prefix=S --c-include="sletter.h" --warn-error -I.\tests\scanner .\tests\scanner\sletter.c .\tests\scanner\sletter.h -o SLetter-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --add-include-path=$(top_builddir) --include=Gio-2.0 --library=everything-1-vs10 --output=Everything-1.0.gir .\tests\everything.h .\tests\everything.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=GIMarshallingTests --symbol-prefix=gi_marshalling_tests --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=gimarshallingtests-1-vs10 --output=GIMarshallingTests-1.0.gir --c-include="tests/gimarshallingtests.h" .\tests\gimarshallingtests.h .\tests\gimarshallingtests.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\Win32\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=everything-1-vs10 --output=Everything-1.0.gir --c-include="tests/everything.h" .\tests\everything.h .\tests\everything.c
+
+---------------------
+--- 64-bit/x86-64 ---
+---------------------
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=Utility --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=utility-1-vs10 --c-include="utility.h" --warn-error -I.\tests\scanner .\tests\scanner\utility.c .\tests\scanner\utility.h -o Utility-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=Annotation --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=annotation-1-vs10 --c-include="annotation.h" --warn-error -I.\tests\scanner .\tests\scanner\annotation.c .\tests\scanner\annotation.h -o Annotation-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=Foo --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Gio-2.0 --include=Utility-1.0 --library=foo-1-vs10 --c-include="foo.h" --warn-error -I.\tests\scanner .\tests\scanner\foo.c .\tests\scanner\foo.h -o Foo-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=TestInherit --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --include=Utility-1.0 --library=testinherit-1-vs10 --c-include="drawable.h" --warn-error -I.\tests\scanner .\tests\scanner\drawable.c .\tests\scanner\drawable.h -o TestInherit-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=GetType --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gettype-1-vs10 --c-include="gettype.h" --identifier-prefix=GetType --symbol-prefix=gettype -I.\tests\scanner .\tests\scanner\gettype.c .\tests\scanner\gettype.h -o GetType-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=GtkFrob --nsversion=1.0 --no-libtool --pkg=gobject-2.0 --include=GObject-2.0 --library=gtkfrob-1-vs10 --identifier-prefix=Gtk --symbol-prefix=gtk_frob --warn-error -I.\tests\scanner .\tests\scanner\gtkfrob.c .\tests\scanner\gtkfrob.h -o GtkFrob-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=.\gir --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=Regress --nsversion=1.0 --no-libtool --include=cairo-1.0 --include=Gio-2.0 --library=regress-1-vs10 --c-include="regress.h" --warn-error -I.\tests\scanner -Ic:\progra~2\micros~1.0\vc\include .\tests\scanner\regress.c .\tests\scanner\regress.h -o Regress-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --namespace=SLetter --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=sletter-1-vs10 --identifier-prefix=S --c-include="sletter.h" --warn-error -I.\tests\scanner .\tests\scanner\sletter.c .\tests\scanner\sletter.h -o SLetter-1.0.gir
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --add-include-path=$(top_builddir) --include=Gio-2.0 --library=everything-1-vs10 --output=Everything-1.0.gir .\tests\everything.h .\tests\everything.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=GIMarshallingTests --symbol-prefix=gi_marshalling_tests --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=gimarshallingtests-1-vs10 --output=GIMarshallingTests-1.0.gir --c-include="tests/gimarshallingtests.h" .\tests\gimarshallingtests.h .\tests\gimarshallingtests.c
+
+python tools\g-ir-scanner --verbose --add-include-path=..\vs10\x64\share\gir-1.0 --warn-all --warn-error --reparse-validate --namespace=Everything --nsversion=1.0 --no-libtool --include=Gio-2.0 --library=everything-1-vs10 --output=Everything-1.0.gir --c-include="tests/everything.h" .\tests\everything.h .\tests\everything.c
diff --git a/build/win32/testinherit.def b/build/win32/testinherit.def
new file mode 100644
index 00000000..8881dab7
--- /dev/null
+++ b/build/win32/testinherit.def
@@ -0,0 +1,6 @@
+EXPORTS
+regress_test_inherit_drawable_get_type
+regress_test_inherit_drawable_do_foo
+regress_test_inherit_drawable_get_origin
+regress_test_inherit_drawable_get_size
+regress_test_inherit_drawable_do_foo_maybe_throw
diff --git a/build/win32/utility.def b/build/win32/utility.def
new file mode 100644
index 00000000..e0614fe6
--- /dev/null
+++ b/build/win32/utility.def
@@ -0,0 +1,4 @@
+EXPORTS
+utility_object_get_type
+utility_object_watch_dir
+utility_dir_foreach
diff --git a/build/win32/vs10/Makefile.am b/build/win32/vs10/Makefile.am
new file mode 100644
index 00000000..0046bc44
--- /dev/null
+++ b/build/win32/vs10/Makefile.am
@@ -0,0 +1,47 @@
+EXTRA_DIST = \
+ gobject-introspection.sln \
+ girepository.vcxprojin \
+ girepository.vcxproj.filtersin \
+ gir.propsin \
+ gir.props \
+ annotation.vcxproj \
+ annotation.vcxproj.filters \
+ cmph-bdz-test.vcxproj \
+ cmph-bdz-test.vcxproj.filters \
+ cmph.vcxprojin \
+ cmph.vcxproj.filtersin \
+ everything.vcxproj \
+ everything.vcxproj.filters \
+ foo.vcxproj \
+ foo.vcxproj.filters \
+ g-ir-compiler.vcxprojin \
+ g-ir-compiler.vcxproj.filtersin \
+ g-ir-generate.vcxproj \
+ g-ir-generate.vcxproj.filters \
+ gettype.vcxproj \
+ gettype.vcxproj.filters \
+ gimarshallingtests.vcxproj \
+ gimarshallingtests.vcxproj.filters \
+ glib-print.vcxproj \
+ glib-print.vcxproj.filters \
+ gtkfrob.vcxproj \
+ gtkfrob.vcxproj.filters \
+ regress.vcxproj \
+ regress.vcxproj.filters \
+ sletter.vcxproj \
+ sletter.vcxproj.filters \
+ testinherit.vcxproj \
+ testinherit.vcxproj.filters \
+ utility.vcxproj \
+ utility.vcxproj.filters \
+ _giscanner.vcxproj \
+ _giscanner.vcxproj.filters \
+ generate_typelibs.vcxproj \
+ install.vcxproj \
+ README.txt
+
+gir.props: $(top_srcdir)/build/win32/vs10/gir.propsin gir.vs10.install
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs10/gir.propsin >$@
+ rm gir.vs10.install
+
+CLEANFILES = gir.props
diff --git a/build/win32/vs10/README.txt b/build/win32/vs10/README.txt
new file mode 100644
index 00000000..06f216ec
--- /dev/null
+++ b/build/win32/vs10/README.txt
@@ -0,0 +1,88 @@
+Please do not compile this package (gobject-introspection) in paths that contain
+spaces in them-as strange problems may occur during compilation or during
+the use of the library.
+
+Please refer to the following GNOME Live! page for more detailed
+instructions on building gobject-introsecption and its dependencies
+with Visual C++:
+
+https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
+
+This VS10 solution and the projects it includes are intented to be used
+in a gobject-introspection source tree unpacked from a tarball. In a git checkout you
+first need to use some Unix-like environment, which will do the work for you.
+
+The required dependencies are Python 2.6 or later, GLib and LibFFI. It is recommended
+that GLib is built with Visual C++ 2010 to avoid problems cause by usage of different CRTs
+
+Please refer to the README.txt file in $(GLib_src_root)\build\win32\vs10 on how to build
+GLib using Visual C++ 2010
+
+For LibFFI, please get version 3.0.10 or later, as Visual C++ build support
+was added in the 3.0.10 release series. Please see the README file that
+comes with the LibFFI source package for more details on how to build LibFFI
+on Visual C++-please note that the mozilla-build package from Mozilla is needed
+in order to build LibFFI on Windows.
+
+For Python, retrieving the official Windows binaries for 2.6 or later from
+http://www.python.org will do the job-be sure that the Python version that
+you downloaded matches the configuration of your build (win32 or x64/amd64).
+
+For building the Regress test project, cairo (and possibly cairo-gobject support)
+is needed.
+
+Set up the source tree as follows under some arbitrary top
+folder <root>:
+
+<root>\<this-gobject-introspection-source-tree>
+<root>\vs10\<PlatformName>
+
+*this* file you are now reading is thus located at
+<root>\<this-glib-source-tree>\build\win32\vs10\README.
+
+<PlatformName> is either Win32 or x64, as in VS10 project files.
+
+For LibFFI, one should also put the generated ffi.h and ffitarget.h
+into <root>\vs10\<PlatformName>\include\ and the compiled static libffi.lib
+(or copy libffi-convenience.lib into libffi.lib) into
+<root>\vs10\<PlatformName>\lib\.
+
+The libintl.h that is used for building GLib needs to be in
+<root>\vs10\<PlatformName>\include, if not already done so
+
+You will also need a working GCC/MinGW compiler installation
+in order to generate the .gir and .typelib files. One may be
+obtained from the mingw or the mingw64 project.
+
+A working pkg-config tool is also required-it may be obtained from
+http://www.gtk.org/download/win32.php [32-bit]
+http://www.gtk.org/download/win64.php [64-bit]
+
+*** Note! ***
+Please note that due to numerous possible configurations on Python, some environmental
+variables need to be set before launching the gobject-introsection.sln solution file.
+
+These variables are namely:
+PYTHONDIR: Root installation folder of your Python interpretor, where python.exe is
+ located. Currently only Python 2.6.x and 2.7.x is supported.
+ It must match your build configuration (Win32 or x64/amd64)
+PKG_CONFIG_PATH: Location of the .pc (pkg-config) files, especially for the GLib .pc files.
+MINGWDIR: Root installation folder for your Windows GCC (such as MinGW). For example,
+ if your gcc executable (gcc.exe) is in c:\mingw\bin, use "set MINGWDIR=c:\mingw"
+*** End of Note! ***
+
+The "install" project will copy build results and headers into their
+appropriate location under <root>\vs10\<PlatformName>. For instance,
+built DLLs go into <root>\vs10\<PlatformName>\bin, built LIBs into
+<root>\vs10\<PlatformName>\lib and gobject-introspection headers into
+<root>\vs10\<PlatformName>\include\gobject-introsection-1.0.
+
+The generated .gir files will end up in <root>\vs10\<PlatformName>\share\gir-1.0
+and .typelib files will end up in <root>\vs10\<PlatformName>\lib\girepository-1.0
+
+This is then from where
+project files higher in the stack are supposed to look for them, not
+from a specific gobject-introspection source tree.
+
+--Tor Lillqvist <tml@iki.fi>
+--Updated by Chun-wei Fan <fanc999@gmail.com>
diff --git a/build/win32/vs10/_giscanner.vcxproj b/build/win32/vs10/_giscanner.vcxproj
new file mode 100644
index 00000000..07f2611a
--- /dev/null
+++ b/build/win32/vs10/_giscanner.vcxproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{8311394F-9114-4C97-80F2-51BCABA054C9}</ProjectGuid>
+ <RootNamespace>_giscanner</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\giscanner;$(PYTHONDIR)\include;$(PYTHONDIR)\PC;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles);io.h</ForcedIncludeFiles>
+ <PreprocessorDefinitions>_DEBUG;YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(ProjectName).pyd</OutputFile>
+ <AdditionalLibraryDirectories>$(PYTHONDIR)\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\giscanner;$(PYTHONDIR)\include;$(PYTHONDIR)\PC;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles);io.h</ForcedIncludeFiles>
+ <PreprocessorDefinitions>YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(ProjectName).pyd</OutputFile>
+ <AdditionalLibraryDirectories>$(PYTHONDIR)\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\giscanner;$(PYTHONDIR)\include;$(PYTHONDIR)\PC;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles);io.h</ForcedIncludeFiles>
+ <PreprocessorDefinitions>_DEBUG;YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(ProjectName).pyd</OutputFile>
+ <AdditionalLibraryDirectories>$(PYTHONDIR)\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\giscanner;$(PYTHONDIR)\include;$(PYTHONDIR)\PC;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ForcedIncludeFiles>%(ForcedIncludeFiles);io.h</ForcedIncludeFiles>
+ <PreprocessorDefinitions>YY_NO_UNISTD_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(ProjectName).pyd</OutputFile>
+ <AdditionalLibraryDirectories>$(PYTHONDIR)\libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\giscanner\giscannermodule.c" />
+ <ClCompile Include="..\..\..\scannerlexer.c" />
+ <ClCompile Include="..\..\..\scannerparser.c" />
+ <ClCompile Include="..\..\..\giscanner\sourcescanner.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/_giscanner.vcxproj.filters b/build/win32/vs10/_giscanner.vcxproj.filters
new file mode 100644
index 00000000..5a17d2d7
--- /dev/null
+++ b/build/win32/vs10/_giscanner.vcxproj.filters
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\giscanner\giscannermodule.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\scannerlexer.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\scannerparser.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\giscanner\sourcescanner.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/annotation.vcxproj b/build/win32/vs10/annotation.vcxproj
new file mode 100644
index 00000000..b732cadf
--- /dev/null
+++ b/build/win32/vs10/annotation.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A70C7D31-0019-45D9-9537-BB1DB5F31886}</ProjectGuid>
+ <RootNamespace>annotation</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\annotation.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/annotation.vcxproj.filters b/build/win32/vs10/annotation.vcxproj.filters
new file mode 100644
index 00000000..42779bd6
--- /dev/null
+++ b/build/win32/vs10/annotation.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\annotation.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/cmph-bdz-test.vcxproj b/build/win32/vs10/cmph-bdz-test.vcxproj
new file mode 100644
index 00000000..e5308e80
--- /dev/null
+++ b/build/win32/vs10/cmph-bdz-test.vcxproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}</ProjectGuid>
+ <RootNamespace>cmphbdztest</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\girepository\cmph;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\girepository\cmph;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\girepository\cmph;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\girepository\cmph;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\girepository\cmph-bdz-test.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="cmph.vcxproj">
+ <Project>{442c007e-d901-41da-9706-5db4afb4c06b}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/cmph-bdz-test.vcxproj.filters b/build/win32/vs10/cmph-bdz-test.vcxproj.filters
new file mode 100644
index 00000000..40858f29
--- /dev/null
+++ b/build/win32/vs10/cmph-bdz-test.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\girepository\cmph-bdz-test.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/cmph.vcxproj.filtersin b/build/win32/vs10/cmph.vcxproj.filtersin
new file mode 100644
index 00000000..072d32ac
--- /dev/null
+++ b/build/win32/vs10/cmph.vcxproj.filtersin
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+#include "cmph.vs10.sourcefiles.filters"
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/cmph.vcxprojin b/build/win32/vs10/cmph.vcxprojin
new file mode 100644
index 00000000..1bdbe642
--- /dev/null
+++ b/build/win32/vs10/cmph.vcxprojin
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{442C007E-D901-41DA-9706-5DB4AFB4C06B}</ProjectGuid>
+ <RootNamespace>cmph</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>__x86_64__;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+#include "cmph.vs10.sourcefiles"
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/everything.vcxproj b/build/win32/vs10/everything.vcxproj
new file mode 100644
index 00000000..fe135282
--- /dev/null
+++ b/build/win32/vs10/everything.vcxproj
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{2986281A-BD41-4BD1-8B43-25B7D7E7F234}</ProjectGuid>
+ <RootNamespace>everything</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>
+ $(GenEverythingH)
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>
+ $(GenEverythingH)
+ </Command>
+ </PreBuildEvent>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>
+ $(GenEverythingH)
+ </Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>
+ $(GenEverythingH)
+ </Command>
+ </PreBuildEvent>
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\everything.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="_giscanner.vcxproj">
+ <Project>{8311394f-9114-4c97-80f2-51bcaba054c9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/everything.vcxproj.filters b/build/win32/vs10/everything.vcxproj.filters
new file mode 100644
index 00000000..c284b239
--- /dev/null
+++ b/build/win32/vs10/everything.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\everything.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/foo.vcxproj b/build/win32/vs10/foo.vcxproj
new file mode 100644
index 00000000..480f11e1
--- /dev/null
+++ b/build/win32/vs10/foo.vcxproj
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}</ProjectGuid>
+ <RootNamespace>foo</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\foo.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="girepository.vcxproj">
+ <Project>{23e28245-8fc7-4b41-b1c5-8785bd4366a7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/foo.vcxproj.filters b/build/win32/vs10/foo.vcxproj.filters
new file mode 100644
index 00000000..df097fef
--- /dev/null
+++ b/build/win32/vs10/foo.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\foo.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/g-ir-compiler.vcxproj.filtersin b/build/win32/vs10/g-ir-compiler.vcxproj.filtersin
new file mode 100644
index 00000000..0e1860d2
--- /dev/null
+++ b/build/win32/vs10/g-ir-compiler.vcxproj.filtersin
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+#include "g-ir-compiler.vs10.sourcefiles.filters"
+ <ClCompile Include="..\..\..\tools\compiler.c"><Filter>Sources</Filter></ClCompile>
+ </ItemGroup>
+</Project>
diff --git a/build/win32/vs10/g-ir-compiler.vcxprojin b/build/win32/vs10/g-ir-compiler.vcxprojin
new file mode 100644
index 00000000..b1f507ae
--- /dev/null
+++ b/build/win32/vs10/g-ir-compiler.vcxprojin
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}</ProjectGuid>
+ <RootNamespace>gircompiler</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;FFI_BUILDING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;FFI_BUILDING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>FFI_BUILDING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MinSpace</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <WholeProgramOptimization>false</WholeProgramOptimization>
+ <PreprocessorDefinitions>FFI_BUILDING;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+#include "g-ir-compiler.vs10.sourcefiles"
+ <ClCompile Include="..\..\..\tools\compiler.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="cmph.vcxproj">
+ <Project>{442c007e-d901-41da-9706-5db4afb4c06b}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="girepository.vcxproj">
+ <Project>{23e28245-8fc7-4b41-b1c5-8785bd4366a7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project>
diff --git a/build/win32/vs10/g-ir-generate.vcxproj b/build/win32/vs10/g-ir-generate.vcxproj
new file mode 100644
index 00000000..60d468f9
--- /dev/null
+++ b/build/win32/vs10/g-ir-generate.vcxproj
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}</ProjectGuid>
+ <RootNamespace>girgenerate</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tools\generate.c" />
+ <ClCompile Include="..\..\..\girepository\girwriter.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="girepository.vcxproj">
+ <Project>{23e28245-8fc7-4b41-b1c5-8785bd4366a7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/g-ir-generate.vcxproj.filters b/build/win32/vs10/g-ir-generate.vcxproj.filters
new file mode 100644
index 00000000..db77dd15
--- /dev/null
+++ b/build/win32/vs10/g-ir-generate.vcxproj.filters
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tools\generate.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\..\girepository\girwriter.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/generate_typelibs.vcxproj b/build/win32/vs10/generate_typelibs.vcxproj
new file mode 100644
index 00000000..8fe6789b
--- /dev/null
+++ b/build/win32/vs10/generate_typelibs.vcxproj
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{BE771349-F11E-42AE-A23F-DA083FDC6FB8}</ProjectGuid>
+ <RootNamespace>generate_typelibs</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>$(GenerateGIR)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>$(GenerateGIR)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>$(GenerateGIR)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>$(GenerateGIR)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ProjectReference Include="g-ir-compiler.vcxproj">
+ <Project>{5dcb55ce-f32c-4c77-8bf4-b4dad3ec7774}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="_giscanner.vcxproj">
+ <Project>{8311394f-9114-4c97-80f2-51bcaba054c9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/gettype.vcxproj b/build/win32/vs10/gettype.vcxproj
new file mode 100644
index 00000000..197e1c92
--- /dev/null
+++ b/build/win32/vs10/gettype.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}</ProjectGuid>
+ <RootNamespace>gettype</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\gettype.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/gettype.vcxproj.filters b/build/win32/vs10/gettype.vcxproj.filters
new file mode 100644
index 00000000..5f0fb5bf
--- /dev/null
+++ b/build/win32/vs10/gettype.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\gettype.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/gimarshallingtests.vcxproj b/build/win32/vs10/gimarshallingtests.vcxproj
new file mode 100644
index 00000000..d87fa7c4
--- /dev/null
+++ b/build/win32/vs10/gimarshallingtests.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{E2F8D205-0A53-4D40-9169-CE1EF2AAF203}</ProjectGuid>
+ <RootNamespace>gimarshallingtests</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\gimarshallingtests.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/gimarshallingtests.vcxproj.filters b/build/win32/vs10/gimarshallingtests.vcxproj.filters
new file mode 100644
index 00000000..5da4a33a
--- /dev/null
+++ b/build/win32/vs10/gimarshallingtests.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\gimarshallingtests.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/gir.propsin b/build/win32/vs10/gir.propsin
new file mode 100644
index 00000000..47c855c3
--- /dev/null
+++ b/build/win32/vs10/gir.propsin
@@ -0,0 +1,228 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup Label="UserMacros">
+ <GlibEtcInstallRoot>$(SolutionDir)\..\..\..\..\vs10\$(Platform)</GlibEtcInstallRoot>
+ <VSVER>10</VSVER>
+ <BASE_GI_DIR>$(SolutionDir)\..\..\..</BASE_GI_DIR>
+ <CopyDir>$(GlibEtcInstallRoot)</CopyDir>
+ <GIApiVersion>1.0</GIApiVersion>
+ <DefDir>$(SolutionDir)$(Configuration)\$(Platform)\obj\$(ProjectName)</DefDir>
+ <GenerateGIRDef>
+ echo EXPORTS &gt; $(DefDir)\girepository.def
+
+ cl -EP ..\..\..\girepository\girepository.symbols &gt;&gt; $(DefDir)\girepository.def
+ </GenerateGIRDef>
+ <GenEverythingH>
+if exist ..\..\..\tests\everything.h goto DONE_GEN_EVERYTHING_C
+
+cd ..\..\..\tests
+
+set PATH=$(GlibEtcInstallRoot)\bin;$(SolutionDir)$(Configuration)\$(PlatformName)\bin;%PYTHONDIR%;%PATH%
+
+set PYTHONPATH=$(SolutionDir)$(Configuration)\$(PlatformName)\bin;$(BASE_GI_DIR)
+
+set UNINSTALLED_INTROSPECTION_SRCDIR=$(BASE_GI_DIR)
+
+python ..\tools\g-ir-scanner --verbose -I. --add-include-path=..\ --add-include-path=..\gir --generate-typelib-tests=Everything,everything.h,everything.c
+
+cd $(SolutionDir)
+
+:DONE_GEN_EVERYTHING_C
+ </GenEverythingH>
+ <GenerateGIR>
+@echo off
+
+set CC=cl
+
+if "$(MINGWDIR)" == "" goto ERR_NOGCC
+
+if "$(PYTHONDIR)" == "" goto ERR_NOPYPATH
+
+if "$(PKG_CONFIG_PATH)" == "" goto ERR_NOPKGCONFIG
+
+
+set PYTHONPATH=$(SolutionDir)$(Configuration)\$(PlatformName)\bin\;$(BASE_GI_DIR)
+
+set UNINSTALLED_INTROSPECTION_SRCDIR=$(BASE_GI_DIR)
+
+set PATH=$(GlibEtcInstallRoot)\bin;$(SolutionDir)$(Configuration)\$(PlatformName)\bin\;$(PATH);$(PYTHONDIR);$(MINGWDIR)\bin
+
+set LIB=$(GlibEtcInstallRoot)\lib;$(SolutionDir)$(Configuration)\$(PlatformName)\bin\;$(LIB);$(PYTHONDIR)\libs
+
+set INCLUDE=$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(INCLUDE);$(PYTHONDIR)\include
+
+
+set PLAT=$(Platform)
+
+set CONF=$(Configuration)
+
+set BASEDIR=$(GlibEtcInstallRoot)
+
+set VSVER=$(VSVER)
+
+
+cd ..
+
+call gengir.bat
+
+cd .\vs$(VSVER)
+
+goto DONE
+
+
+:ERR_NOGCC
+
+echo You need a Windows GCC installation to preprocess the headers to generate .gir files
+
+echo Please set MINGWDIR accordingly before launching the Project
+
+goto DONE
+
+
+:ERR_NOPYPATH
+
+echo You need a Python installation to build the Python module and run the Python scripts to generate .gir files
+
+echo The Python installation needs to correspond to the configuration of your build, i.e. Win32 or x64
+
+echo Please set PYTHONDIR accordingly before launching the Project
+
+goto DONE
+
+
+:ERR_NOPKGCONFIG
+
+echo You need pkg-config and need to set PKG_CONFIG_PATH to point to pkgconfig (.pc) files to generate .gir files
+
+echo Please set PKG_CONFIG_PATH accordingly before launching the Project
+
+goto DONE
+
+
+:DONE
+
+ </GenerateGIR>
+ <LibGILibtoolCompatibleDllPrefix>lib</LibGILibtoolCompatibleDllPrefix>
+ <LibGILibtoolCompatibleDllSuffix>-$(GIApiVersion)-0</LibGILibtoolCompatibleDllSuffix>
+ <LibGISeparateVS10DllPrefix />
+ <LibGISeparateVS10DllSuffix>-1-vs10</LibGISeparateVS10DllSuffix>
+ <LibGIDllPrefix>$(LibGISeparateVS10DllPrefix)</LibGIDllPrefix>
+ <LibGIDllSuffix>$(LibGISeparateVS10DllSuffix)</LibGIDllSuffix>
+ <GIDoInstall>
+mkdir $(CopyDir)
+
+mkdir $(CopyDir)\bin
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\$(LibGIDllPrefix)girepository$(LibGIDllSuffix).dll $(CopyDir)\bin
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\g-ir-compiler.exe $(CopyDir)\bin
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\g-ir-generate.exe $(CopyDir)\bin
+
+copy ..\..\..\tools\g-ir-annotation-tool $(CopyDir)\bin
+
+copy ..\..\..\tools\g-ir-doc-tool $(CopyDir)\bin
+
+copy ..\..\..\tools\g-ir-scanner $(CopyDir)\bin
+
+
+#include "gir.vs10.install"
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\_giscanner.pyd $(CopyDir)\lib\gobject-introspection\giscanner
+
+
+mkdir $(CopyDir)\share\gir-$(GIApiVersion)
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\share\gir-$(GIApiVersion)\*.gir $(CopyDir)\share\gir-$(GIApiVersion)
+
+mkdir $(CopyDir)\share\gobject-introspection-$(GIApiVersion)
+
+copy ..\..\..\girepository\gdump.c $(CopyDir)\share\gobject-introspection-$(GIApiVersion)
+
+
+mkdir $(CopyDir)\lib\girepository-$(GIApiVersion)
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\bin\girepository-$(GIApiVersion).lib $(CopyDir)\lib
+
+copy $(SolutionDir)$(Configuration)\$(Platform)\lib\girepository-$(GIApiVersion)\*.typelib $(CopyDir)\lib\girepository-$(GIApiVersion)
+
+</GIDoInstall>
+ </PropertyGroup>
+ <PropertyGroup>
+ <_PropertySheetDisplayName>giprops</_PropertySheetDisplayName>
+ <OutDir>$(SolutionDir)$(Configuration)\$(PlatformName)\bin\</OutDir>
+ <IntDir>$(SolutionDir)$(Configuration)\$(PlatformName)\obj\$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup>
+ <ClCompile>
+ <AdditionalIncludeDirectories>..\..\..;..\..\..\girepository;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\lib\glib-2.0\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>HAVE_CONFIG_H;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <ForcedIncludeFiles>msvc_recommended_pragmas.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>gio-2.0.lib;gobject-2.0.lib;gmodule-2.0.lib;gthread-2.0.lib;glib-2.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>$(GlibEtcInstallRoot)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Link>
+ <PreBuildEvent>
+ <Command>
+if not exist ..\..\..\config.h copy ..\..\..\config.h.win32 ..\..\..\config.h
+
+if not exist ..\..\..\tools\g-ir-scanner copy ..\..\..\tools\g-ir-scanner.in ..\..\..\tools\g-ir-scanner
+
+if not exist ..\..\..\tools\g-ir-doc-tool copy ..\..\..\tools\g-ir-doc-tool.in ..\..\..\tools\g-ir-doc-tool
+
+if not exist ..\..\..\tools\g-ir-annotation-tool copy ..\..\..\tools\g-ir-annotation-tool.in ..\..\..\tools\g-ir-annotation-tool
+</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <BuildMacro Include="GlibEtcInstallRoot">
+ <Value>$(GlibEtcInstallRoot)</Value>
+ </BuildMacro>
+ <BuildMacro Include="VSVER">
+ <Value>$(VSVER)</Value>
+ </BuildMacro>
+ <BuildMacro Include="BASE_GI_DIR">
+ <Value>$(BASE_GI_DIR)</Value>
+ </BuildMacro>
+ <BuildMacro Include="CopyDir">
+ <Value>$(CopyDir)</Value>
+ </BuildMacro>
+ <BuildMacro Include="GIApiVersion">
+ <Value>$(GIApiVersion)</Value>
+ </BuildMacro>
+ <BuildMacro Include="DefDir">
+ <Value>$(DefDir)</Value>
+ </BuildMacro>
+ <BuildMacro Include="GenerateGIRDef">
+ <Value>$(GenerateGIRDef)</Value>
+ </BuildMacro>
+ <BuildMacro Include="GenEverythingH">
+ <Value>$(GenEverythingH)</Value>
+ </BuildMacro>
+ <BuildMacro Include="GenerateGIR">
+ <Value>$(GenerateGIR)</Value>
+ </BuildMacro>
+ <BuildMacro Include="LibGILibtoolCompatibleDllPrefix">
+ <Value>$(LibGILibtoolCompatibleDllPrefix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="LibGILibtoolCompatibleDllSuffix">
+ <Value>$(LibGILibtoolCompatibleDllSuffix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="LibGISeparateVS10DllPrefix">
+ <Value>$(LibGISeparateVS10DllPrefix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="LibGISeparateVS10DllSuffix">
+ <Value>$(LibGISeparateVS10DllSuffix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="LibGIDllPrefix">
+ <Value>$(LibGIDllPrefix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="LibGIDllSuffix">
+ <Value>$(LibGIDllSuffix)</Value>
+ </BuildMacro>
+ <BuildMacro Include="GIDoInstall">
+ <Value>$(GIDoInstall)</Value>
+ </BuildMacro>
+ </ItemGroup>
+</Project>
diff --git a/build/win32/vs10/girepository.vcxproj.filtersin b/build/win32/vs10/girepository.vcxproj.filtersin
new file mode 100644
index 00000000..ccc6895c
--- /dev/null
+++ b/build/win32/vs10/girepository.vcxproj.filtersin
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+#include "girepository.vs10.sourcefiles.filters"
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/girepository.vcxprojin b/build/win32/vs10/girepository.vcxprojin
new file mode 100644
index 00000000..ef8b96f9
--- /dev/null
+++ b/build/win32/vs10/girepository.vcxprojin
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{23E28245-8FC7-4B41-B1C5-8785BD4366A7}</ProjectGuid>
+ <RootNamespace>girepository</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\girepository;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Command>$(GenerateGIRDef)</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>$(IntDir)girepository.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\girepository;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Command>$(GenerateGIRDef)</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>$(IntDir)girepository.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>..\..\..\girepository;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_DEBUG;G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Command>$(GenerateGIRDef)</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>$(IntDir)girepository.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <AdditionalIncludeDirectories>..\..\..\girepository;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <PreLinkEvent>
+ <Command>$(GenerateGIRDef)</Command>
+ </PreLinkEvent>
+ <Link>
+ <AdditionalDependencies>libffi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>$(IntDir)girepository.def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+#include "girepository.vs10.sourcefiles"
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="cmph.vcxproj">
+ <Project>{442c007e-d901-41da-9706-5db4afb4c06b}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/glib-print.vcxproj b/build/win32/vs10/glib-print.vcxproj
new file mode 100644
index 00000000..57dc430b
--- /dev/null
+++ b/build/win32/vs10/glib-print.vcxproj
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}</ProjectGuid>
+ <RootNamespace>glibprint</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Console</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\examples\glib-print.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="girepository.vcxproj">
+ <Project>{23e28245-8fc7-4b41-b1c5-8785bd4366a7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/glib-print.vcxproj.filters b/build/win32/vs10/glib-print.vcxproj.filters
new file mode 100644
index 00000000..124e6781
--- /dev/null
+++ b/build/win32/vs10/glib-print.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\examples\glib-print.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/gobject-introspection.sln b/build/win32/vs10/gobject-introspection.sln
new file mode 100644
index 00000000..916cbb8c
--- /dev/null
+++ b/build/win32/vs10/gobject-introspection.sln
@@ -0,0 +1,206 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmph", "cmph.vcxproj", "{442C007E-D901-41DA-9706-5DB4AFB4C06B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmph-bdz-test", "cmph-bdz-test.vcxproj", "{E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "girepository", "girepository.vcxproj", "{23E28245-8FC7-4B41-B1C5-8785BD4366A7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_giscanner", "_giscanner.vcxproj", "{8311394F-9114-4C97-80F2-51BCABA054C9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-print", "glib-print.vcxproj", "{2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g-ir-generate", "g-ir-generate.vcxproj", "{F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g-ir-compiler", "g-ir-compiler.vcxproj", "{5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gimarshallingtests", "gimarshallingtests.vcxproj", "{E2F8D205-0A53-4D40-9169-CE1EF2AAF203}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regress", "regress.vcxproj", "{0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utility", "utility.vcxproj", "{A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "annotation", "annotation.vcxproj", "{A70C7D31-0019-45D9-9537-BB1DB5F31886}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foo", "foo.vcxproj", "{CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testinherit", "testinherit.vcxproj", "{3F2C9F08-7FB7-4465-BF24-84E083EC4913}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettype", "gettype.vcxproj", "{F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtkfrob", "gtkfrob.vcxproj", "{95C833D3-6EC2-493D-969A-6082E5495F66}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sletter", "sletter.vcxproj", "{86A35E44-E4C8-4628-87E9-942D136D72BC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "everything", "everything.vcxproj", "{2986281A-BD41-4BD1-8B43-25B7D7E7F234}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_typelibs", "generate_typelibs.vcxproj", "{BE771349-F11E-42AE-A23F-DA083FDC6FB8}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcxproj", "{2093D218-190E-4194-9421-3BA7CBF33B10}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|Win32.Build.0 = Debug|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|x64.ActiveCfg = Debug|x64
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|x64.Build.0 = Debug|x64
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|Win32.ActiveCfg = Release|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|Win32.Build.0 = Release|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|x64.ActiveCfg = Release|x64
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|x64.Build.0 = Release|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|Win32.Build.0 = Debug|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|x64.ActiveCfg = Debug|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|x64.Build.0 = Debug|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|Win32.ActiveCfg = Release|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|Win32.Build.0 = Release|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|x64.ActiveCfg = Release|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|x64.Build.0 = Release|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|Win32.Build.0 = Debug|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|x64.ActiveCfg = Debug|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|x64.Build.0 = Debug|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|Win32.ActiveCfg = Release|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|Win32.Build.0 = Release|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|x64.ActiveCfg = Release|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|x64.Build.0 = Release|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|Win32.Build.0 = Debug|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|x64.ActiveCfg = Debug|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|x64.Build.0 = Debug|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|Win32.ActiveCfg = Release|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|Win32.Build.0 = Release|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|x64.ActiveCfg = Release|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|x64.Build.0 = Release|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|Win32.Build.0 = Debug|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|x64.ActiveCfg = Debug|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|x64.Build.0 = Debug|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|Win32.ActiveCfg = Release|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|Win32.Build.0 = Release|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|x64.ActiveCfg = Release|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|x64.Build.0 = Release|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|Win32.Build.0 = Debug|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|x64.ActiveCfg = Debug|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|x64.Build.0 = Debug|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|Win32.ActiveCfg = Release|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|Win32.Build.0 = Release|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|x64.ActiveCfg = Release|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|x64.Build.0 = Release|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|Win32.Build.0 = Debug|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|x64.ActiveCfg = Debug|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|x64.Build.0 = Debug|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|Win32.ActiveCfg = Release|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|Win32.Build.0 = Release|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|x64.ActiveCfg = Release|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|x64.Build.0 = Release|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|Win32.Build.0 = Debug|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|x64.ActiveCfg = Debug|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|x64.Build.0 = Debug|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|Win32.ActiveCfg = Release|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|Win32.Build.0 = Release|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|x64.ActiveCfg = Release|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|x64.Build.0 = Release|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|Win32.Build.0 = Debug|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|x64.ActiveCfg = Debug|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|x64.Build.0 = Debug|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|Win32.ActiveCfg = Release|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|Win32.Build.0 = Release|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|x64.ActiveCfg = Release|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|x64.Build.0 = Release|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|Win32.Build.0 = Debug|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|x64.ActiveCfg = Debug|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|x64.Build.0 = Debug|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|Win32.ActiveCfg = Release|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|Win32.Build.0 = Release|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|x64.ActiveCfg = Release|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|x64.Build.0 = Release|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|Win32.Build.0 = Debug|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|x64.ActiveCfg = Debug|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|x64.Build.0 = Debug|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|Win32.ActiveCfg = Release|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|Win32.Build.0 = Release|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|x64.ActiveCfg = Release|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|x64.Build.0 = Release|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|Win32.Build.0 = Debug|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|x64.ActiveCfg = Debug|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|x64.Build.0 = Debug|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|Win32.ActiveCfg = Release|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|Win32.Build.0 = Release|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|x64.ActiveCfg = Release|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|x64.Build.0 = Release|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|Win32.Build.0 = Debug|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|x64.ActiveCfg = Debug|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|x64.Build.0 = Debug|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|Win32.ActiveCfg = Release|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|Win32.Build.0 = Release|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|x64.ActiveCfg = Release|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|x64.Build.0 = Release|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|Win32.Build.0 = Debug|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|x64.ActiveCfg = Debug|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|x64.Build.0 = Debug|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|Win32.ActiveCfg = Release|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|Win32.Build.0 = Release|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|x64.ActiveCfg = Release|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|x64.Build.0 = Release|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|Win32.ActiveCfg = Debug|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|Win32.Build.0 = Debug|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|x64.ActiveCfg = Debug|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|x64.Build.0 = Debug|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|Win32.ActiveCfg = Release|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|Win32.Build.0 = Release|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|x64.ActiveCfg = Release|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|x64.Build.0 = Release|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|Win32.Build.0 = Debug|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|x64.ActiveCfg = Debug|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|x64.Build.0 = Debug|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|Win32.ActiveCfg = Release|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|Win32.Build.0 = Release|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|x64.ActiveCfg = Release|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|x64.Build.0 = Release|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|Win32.Build.0 = Debug|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|x64.ActiveCfg = Debug|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|x64.Build.0 = Debug|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|Win32.ActiveCfg = Release|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|Win32.Build.0 = Release|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|x64.ActiveCfg = Release|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|x64.Build.0 = Release|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|Win32.Build.0 = Debug|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|x64.ActiveCfg = Debug|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|x64.Build.0 = Debug|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|Win32.ActiveCfg = Release|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|Win32.Build.0 = Release|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|x64.ActiveCfg = Release|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|x64.Build.0 = Release|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.Build.0 = Debug|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.ActiveCfg = Release|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.Build.0 = Release|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.ActiveCfg = Release|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/build/win32/vs10/gtkfrob.vcxproj b/build/win32/vs10/gtkfrob.vcxproj
new file mode 100644
index 00000000..efbbb63c
--- /dev/null
+++ b/build/win32/vs10/gtkfrob.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{95C833D3-6EC2-493D-969A-6082E5495F66}</ProjectGuid>
+ <RootNamespace>gtkfrob</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\gtkfrob.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/gtkfrob.vcxproj.filters b/build/win32/vs10/gtkfrob.vcxproj.filters
new file mode 100644
index 00000000..16be2b88
--- /dev/null
+++ b/build/win32/vs10/gtkfrob.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\gtkfrob.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/install.vcxproj b/build/win32/vs10/install.vcxproj
new file mode 100644
index 00000000..976590e0
--- /dev/null
+++ b/build/win32/vs10/install.vcxproj
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{2093D218-190E-4194-9421-3BA7CBF33B10}</ProjectGuid>
+ <RootNamespace>install</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Utility</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(GlibEtcInstallRoot)\</OutDir>
+ <ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(GlibEtcInstallRoot)\</OutDir>
+ <ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(GlibEtcInstallRoot)\</OutDir>
+ <ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(GlibEtcInstallRoot)\</OutDir>
+ <ExtensionsToDeleteOnClean Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <PreBuildEvent>
+ <Command>$(GIDoInstall)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <PreBuildEvent>
+ <Command>$(GIDoInstall)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <PreBuildEvent>
+ <Command>$(GIDoInstall)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <PreBuildEvent>
+ <Command>$(GIDoInstall)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ProjectReference Include="g-ir-compiler.vcxproj">
+ <Project>{5dcb55ce-f32c-4c77-8bf4-b4dad3ec7774}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="g-ir-generate.vcxproj">
+ <Project>{f4e6621f-a7dd-4863-8ccf-ba04dfc601e3}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="generate_typelibs.vcxproj">
+ <Project>{be771349-f11e-42ae-a23f-da083fdc6fb8}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="girepository.vcxproj">
+ <Project>{23e28245-8fc7-4b41-b1c5-8785bd4366a7}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ <ProjectReference Include="_giscanner.vcxproj">
+ <Project>{8311394f-9114-4c97-80f2-51bcaba054c9}</Project>
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
+ </ProjectReference>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/regress.vcxproj b/build/win32/vs10/regress.vcxproj
new file mode 100644
index 00000000..f4b7e288
--- /dev/null
+++ b/build/win32/vs10/regress.vcxproj
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}</ProjectGuid>
+ <RootNamespace>regress</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>cairo-gobject.lib;cairo.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>cairo-gobject.lib;cairo.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>cairo-gobject.lib;cairo.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <AdditionalDependencies>cairo-gobject.lib;cairo.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\regress.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/regress.vcxproj.filters b/build/win32/vs10/regress.vcxproj.filters
new file mode 100644
index 00000000..2d6a34e3
--- /dev/null
+++ b/build/win32/vs10/regress.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\regress.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/sletter.vcxproj b/build/win32/vs10/sletter.vcxproj
new file mode 100644
index 00000000..bfaea789
--- /dev/null
+++ b/build/win32/vs10/sletter.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{86A35E44-E4C8-4628-87E9-942D136D72BC}</ProjectGuid>
+ <RootNamespace>sletter</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\sletter.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/sletter.vcxproj.filters b/build/win32/vs10/sletter.vcxproj.filters
new file mode 100644
index 00000000..3d42dfa4
--- /dev/null
+++ b/build/win32/vs10/sletter.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\sletter.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/testinherit.vcxproj b/build/win32/vs10/testinherit.vcxproj
new file mode 100644
index 00000000..65c914b8
--- /dev/null
+++ b/build/win32/vs10/testinherit.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{3F2C9F08-7FB7-4465-BF24-84E083EC4913}</ProjectGuid>
+ <RootNamespace>testinherit</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\drawable.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/testinherit.vcxproj.filters b/build/win32/vs10/testinherit.vcxproj.filters
new file mode 100644
index 00000000..d001332c
--- /dev/null
+++ b/build/win32/vs10/testinherit.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\drawable.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/utility.vcxproj b/build/win32/vs10/utility.vcxproj
new file mode 100644
index 00000000..8ef0fe82
--- /dev/null
+++ b/build/win32/vs10/utility.vcxproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}</ProjectGuid>
+ <RootNamespace>utility</RootNamespace>
+ <Keyword>Win32Proj</Keyword>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <CharacterSet>MultiByte</CharacterSet>
+ <PlatformToolset>v100</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ <Import Project="gir.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MinimalRebuild>true</MinimalRebuild>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <TargetEnvironment>X64</TargetEnvironment>
+ </Midl>
+ <ClCompile>
+ <Optimization>MaxSpeed</Optimization>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <Link>
+ <OutputFile>$(OutDir)$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll</OutputFile>
+ <ModuleDefinitionFile>..\$(ProjectName).def</ModuleDefinitionFile>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <SubSystem>Windows</SubSystem>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(TargetDir)$(ProjectName)-$(GIApiVersion).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\utility.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs10/utility.vcxproj.filters b/build/win32/vs10/utility.vcxproj.filters
new file mode 100644
index 00000000..fbd9b657
--- /dev/null
+++ b/build/win32/vs10/utility.vcxproj.filters
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Sources">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Headers">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\..\tests\scanner\utility.c">
+ <Filter>Sources</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/build/win32/vs9/Makefile.am b/build/win32/vs9/Makefile.am
new file mode 100644
index 00000000..ed82cbca
--- /dev/null
+++ b/build/win32/vs9/Makefile.am
@@ -0,0 +1,30 @@
+EXTRA_DIST = \
+ gobject-introspection.sln \
+ girepository.vcprojin \
+ gir.vspropsin \
+ gir.vsprops \
+ annotation.vcproj \
+ cmph-bdz-test.vcproj \
+ cmph.vcprojin \
+ everything.vcproj \
+ foo.vcproj \
+ g-ir-compiler.vcprojin \
+ g-ir-generate.vcproj \
+ generate_typelibs.vcproj \
+ gettype.vcproj \
+ gimarshallingtests.vcproj \
+ glib-print.vcproj \
+ gtkfrob.vcproj \
+ install.vcproj \
+ regress.vcproj \
+ sletter.vcproj \
+ testinherit.vcproj \
+ utility.vcproj \
+ _giscanner.vcproj \
+ README.txt
+
+gir.vsprops: $(top_srcdir)/build/win32/vs9/gir.vspropsin gir.vs9.install
+ $(CPP) -P - <$(top_srcdir)/build/win32/vs9/gir.vspropsin >$@
+ rm gir.vs9.install
+
+CLEANFILES = gir.vsprops
diff --git a/build/win32/vs9/README.txt b/build/win32/vs9/README.txt
new file mode 100644
index 00000000..579e5ece
--- /dev/null
+++ b/build/win32/vs9/README.txt
@@ -0,0 +1,88 @@
+Please do not compile this package (gobject-introspection) in paths that contain
+spaces in them-as strange problems may occur during compilation or during
+the use of the library.
+
+Please refer to the following GNOME Live! page for more detailed
+instructions on building gobject-introsecption and its dependencies
+with Visual C++:
+
+https://live.gnome.org/GTK%2B/Win32/MSVCCompilationOfGTKStack
+
+This VS9 solution and the projects it includes are intented to be used
+in a gobject-introspection source tree unpacked from a tarball. In a git checkout you
+first need to use some Unix-like environment, which will do the work for you.
+
+The required dependencies are Python 2.6 or later, GLib and LibFFI. It is recommended
+that GLib is built with Visual C++ 2008 to avoid problems cause by usage of different CRTs
+
+Please refer to the README.txt file in $(GLib_src_root)\build\win32\vs9 on how to build
+GLib using Visual C++ 2008
+
+For LibFFI, please get version 3.0.10 or later, as Visual C++ build support
+was added in the 3.0.10 release series. Please see the README file that
+comes with the LibFFI source package for more details on how to build LibFFI
+on Visual C++-please note that the mozilla-build package from Mozilla is needed
+in order to build LibFFI on Windows.
+
+For Python, retrieving the official Windows binaries for 2.6 or later from
+http://www.python.org will do the job-be sure that the Python version that
+you downloaded matches the configuration of your build (win32 or x64/amd64).
+
+For building the Regress test project, cairo (and possibly cairo-gobject support)
+is needed.
+
+Set up the source tree as follows under some arbitrary top
+folder <root>:
+
+<root>\<this-gobject-introspection-source-tree>
+<root>\vs9\<PlatformName>
+
+*this* file you are now reading is thus located at
+<root>\<this-glib-source-tree>\build\win32\vs9\README.
+
+<PlatformName> is either Win32 or x64, as in VS9 project files.
+
+For LibFFI, one should also put the generated ffi.h and ffitarget.h
+into <root>\vs9\<PlatformName>\include\ and the compiled static libffi.lib
+(or copy libffi-convenience.lib into libffi.lib) into
+<root>\vs9\<PlatformName>\lib\.
+
+The libintl.h that is used for building GLib needs to be in
+<root>\vs9\<PlatformName>\include, if not already done so
+
+You will also need a working GCC/MinGW compiler installation
+in order to generate the .gir and .typelib files. One may be
+obtained from the mingw or the mingw64 project.
+
+A working pkg-config tool is also required-it may be obtained from
+http://www.gtk.org/download/win32.php [32-bit]
+http://www.gtk.org/download/win64.php [64-bit]
+
+*** Note! ***
+Please note that due to numerous possible configurations on Python, some environmental
+variables need to be set before launching the gobject-introsection.sln solution file.
+
+These variables are namely:
+PYTHONDIR: Root installation folder of your Python interpretor, where python.exe is
+ located. Currently only Python 2.6.x and 2.7.x is supported.
+ It must match your build configuration (Win32 or x64/amd64)
+PKG_CONFIG_PATH: Location of the .pc (pkg-config) files, especially for the GLib .pc files.
+MINGWDIR: Root installation folder for your Windows GCC (such as MinGW). For example,
+ if your gcc executable (gcc.exe) is in c:\mingw\bin, use "set MINGWDIR=c:\mingw"
+*** End of Note! ***
+
+The "install" project will copy build results and headers into their
+appropriate location under <root>\vs9\<PlatformName>. For instance,
+built DLLs go into <root>\vs9\<PlatformName>\bin, built LIBs into
+<root>\vs9\<PlatformName>\lib and gobject-introspection headers into
+<root>\vs9\<PlatformName>\include\gobject-introsection-1.0.
+
+The generated .gir files will end up in <root>\vs9\<PlatformName>\share\gir-1.0
+and .typelib files will end up in <root>\vs9\<PlatformName>\lib\girepository-1.0
+
+This is then from where
+project files higher in the stack are supposed to look for them, not
+from a specific gobject-introspection source tree.
+
+--Tor Lillqvist <tml@iki.fi>
+--Updated by Chun-wei Fan <fanc999@gmail.com>
diff --git a/build/win32/vs9/_giscanner.vcproj b/build/win32/vs9/_giscanner.vcproj
new file mode 100644
index 00000000..3619a2fb
--- /dev/null
+++ b/build/win32/vs9/_giscanner.vcproj
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="_giscanner"
+ ProjectGUID="{8311394F-9114-4C97-80F2-51BCABA054C9}"
+ RootNamespace="_giscanner"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\giscanner;;$(PYTHONDIR)\include;$(PYTHONDIR)\PC"
+ ForcedIncludeFiles="msvc_recommended_pragmas.h;io.h"
+ PreprocessorDefinitions="_DEBUG;YY_NO_UNISTD_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).pyd"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(PYTHONDIR)\libs"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\giscanner;;$(PYTHONDIR)\include;$(PYTHONDIR)\PC"
+ ForcedIncludeFiles="msvc_recommended_pragmas.h;io.h"
+ PreprocessorDefinitions="YY_NO_UNISTD_H"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).pyd"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="$(PYTHONDIR)\libs"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\giscanner;;$(PYTHONDIR)\include;$(PYTHONDIR)\PC"
+ ForcedIncludeFiles="msvc_recommended_pragmas.h;io.h"
+ PreprocessorDefinitions="_DEBUG;YY_NO_UNISTD_H"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).pyd"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="$(PYTHONDIR)\libs"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\giscanner;;$(PYTHONDIR)\include;$(PYTHONDIR)\PC"
+ ForcedIncludeFiles="msvc_recommended_pragmas.h;io.h"
+ PreprocessorDefinitions="YY_NO_UNISTD_H"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(ProjectName).pyd"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="$(PYTHONDIR)\libs"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\giscanner\giscannermodule.c" />
+ <File RelativePath="..\..\..\scannerlexer.c" />
+ <File RelativePath="..\..\..\scannerparser.c" />
+ <File RelativePath="..\..\..\giscanner\sourcescanner.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/annotation.vcproj b/build/win32/vs9/annotation.vcproj
new file mode 100644
index 00000000..81045941
--- /dev/null
+++ b/build/win32/vs9/annotation.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="annotation"
+ ProjectGUID="{A70C7D31-0019-45D9-9537-BB1DB5F31886}"
+ RootNamespace="annotation"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\annotation.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/cmph-bdz-test.vcproj b/build/win32/vs9/cmph-bdz-test.vcproj
new file mode 100644
index 00000000..0bd8106b
--- /dev/null
+++ b/build/win32/vs9/cmph-bdz-test.vcproj
@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="cmph-bdz-test"
+ ProjectGUID="{E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}"
+ RootNamespace="cmphbdztest"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\girepository\cmph"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\girepository\cmph"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ WholeProgramOptimization="false"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\girepository\cmph"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\girepository\cmph"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\girepository\cmph-bdz-test.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/cmph.vcprojin b/build/win32/vs9/cmph.vcprojin
new file mode 100644
index 00000000..ff56d375
--- /dev/null
+++ b/build/win32/vs9/cmph.vcprojin
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="cmph"
+ ProjectGUID="{442C007E-D901-41DA-9706-5DB4AFB4C06B}"
+ RootNamespace="cmph"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;__x86_64__"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="4"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ EnableMinimalRebuild="true"
+ PreprocessorDefinitions="__x86_64__"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+#include "cmph.sourcefiles"
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/everything.vcproj b/build/win32/vs9/everything.vcproj
new file mode 100644
index 00000000..c8f1eace
--- /dev/null
+++ b/build/win32/vs9/everything.vcproj
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="everything"
+ ProjectGUID="{2986281A-BD41-4BD1-8B43-25B7D7E7F234}"
+ RootNamespace="everything"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenEverythingH)"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenEverythingH)"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenEverythingH)"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenEverythingH)"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\everything.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/foo.vcproj b/build/win32/vs9/foo.vcproj
new file mode 100644
index 00000000..3a2aeef2
--- /dev/null
+++ b/build/win32/vs9/foo.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="foo"
+ ProjectGUID="{CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}"
+ RootNamespace="foo"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\foo.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/g-ir-compiler.vcprojin b/build/win32/vs9/g-ir-compiler.vcprojin
new file mode 100644
index 00000000..f08b9195
--- /dev/null
+++ b/build/win32/vs9/g-ir-compiler.vcprojin
@@ -0,0 +1,185 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="g-ir-compiler"
+ ProjectGUID="{5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}"
+ RootNamespace="gircompiler"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;FFI_BUILDING"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG;FFI_BUILDING"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions="FFI_BUILDING"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ EnableIntrinsicFunctions="true"
+ EnableMinimalRebuild="true"
+ WholeProgramOptimization="false"
+ PreprocessorDefinitions="FFI_BUILDING"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="0"
+ LinkTimeCodeGeneration="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+#include "g-ir-compiler.sourcefiles"
+ <File RelativePath="..\..\..\tools\compiler.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/g-ir-generate.vcproj b/build/win32/vs9/g-ir-generate.vcproj
new file mode 100644
index 00000000..0e5973a4
--- /dev/null
+++ b/build/win32/vs9/g-ir-generate.vcproj
@@ -0,0 +1,175 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="g-ir-generate"
+ ProjectGUID="{F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}"
+ RootNamespace="girgenerate"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tools\generate.c" />
+ <File RelativePath="..\..\..\girepository\girwriter.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/generate_typelibs.vcproj b/build/win32/vs9/generate_typelibs.vcproj
new file mode 100644
index 00000000..e8b0059e
--- /dev/null
+++ b/build/win32/vs9/generate_typelibs.vcproj
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="generate_typelibs"
+ ProjectGUID="{BE771349-F11E-42AE-A23F-DA083FDC6FB8}"
+ RootNamespace="generate_typelibs"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenerateGIR)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenerateGIR)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenerateGIR)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="10"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GenerateGIR)"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/gettype.vcproj b/build/win32/vs9/gettype.vcproj
new file mode 100644
index 00000000..5806277c
--- /dev/null
+++ b/build/win32/vs9/gettype.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="gettype"
+ ProjectGUID="{F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}"
+ RootNamespace="gettype"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\gettype.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/gimarshallingtests.vcproj b/build/win32/vs9/gimarshallingtests.vcproj
new file mode 100644
index 00000000..eb970926
--- /dev/null
+++ b/build/win32/vs9/gimarshallingtests.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="gimarshallingtests"
+ ProjectGUID="{E2F8D205-0A53-4D40-9169-CE1EF2AAF203}"
+ RootNamespace="gimarshallingtests"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\gimarshallingtests.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/gir.vspropsin b/build/win32/vs9/gir.vspropsin
new file mode 100644
index 00000000..a42b214b
--- /dev/null
+++ b/build/win32/vs9/gir.vspropsin
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioPropertySheet
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="giprops"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\obj\$(ProjectName)\"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories="..\..\..;..\..\..\girepository;$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\include\glib-2.0;$(GlibEtcInstallRoot)\lib\glib-2.0\include"
+ PreprocessorDefinitions="HAVE_CONFIG_H;WIN32"
+ ForcedIncludeFiles="msvc_recommended_pragmas.h"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="gio-2.0.lib gobject-2.0.lib gmodule-2.0.lib gthread-2.0.lib glib-2.0.lib"
+ AdditionalLibraryDirectories="$(GlibEtcInstallRoot)\lib"
+ />
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="
+if not exist ..\..\..\config.h copy ..\..\..\config.h.win32 ..\..\..\config.h&#x0D;&#x0A;
+if not exist ..\..\..\tools\g-ir-scanner copy ..\..\..\tools\g-ir-scanner.in ..\..\..\tools\g-ir-scanner&#x0D;&#x0A;
+if not exist ..\..\..\tools\g-ir-doc-tool copy ..\..\..\tools\g-ir-doc-tool.in ..\..\..\tools\g-ir-doc-tool&#x0D;&#x0A;
+if not exist ..\..\..\tools\g-ir-annotation-tool copy ..\..\..\tools\g-ir-annotation-tool.in ..\..\..\tools\g-ir-annotation-tool&#x0D;&#x0A;
+"
+ />
+ <UserMacro
+ Name="GlibEtcInstallRoot"
+ Value="$(SolutionDir)\..\..\..\..\vs9\$(PlatformName)"
+ />
+ <UserMacro
+ Name="VSVER"
+ Value="9"
+ />
+ <UserMacro
+ Name="BASE_GI_DIR"
+ Value="$(SolutionDir)\..\..\.."
+ />
+ <UserMacro
+ Name="CopyDir"
+ Value="$(GlibEtcInstallRoot)"
+ />
+ <UserMacro
+ Name="GIApiVersion"
+ Value="1.0"
+ />
+ <UserMacro
+ Name="DefDir"
+ Value="$(SolutionDir)$(ConfigurationName)\$(PlatformName)\obj\$(ProjectName)"
+ />
+ <UserMacro
+ Name="GenerateGIRDef"
+ Value="
+ echo EXPORTS &gt; $(DefDir)\girepository.def&#x0D;&#x0A;
+ cl -EP ..\..\..\girepository\girepository.symbols &gt;&gt; $(DefDir)\girepository.def&#x0D;&#x0A;
+ "
+ />
+ <UserMacro
+ Name="GenEverythingH"
+ Value="
+if exist ..\..\..\tests\everything.h goto DONE_GEN_EVERYTHING_C&#x0D;&#x0A;
+cd ..\..\..\tests&#x0D;&#x0A;
+set PATH=$(GlibEtcInstallRoot)\bin;$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin;%PYTHONDIR%;%PATH%&#x0D;&#x0A;
+set PYTHONPATH=$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin;$(BASE_GI_DIR)&#x0D;&#x0A;
+set UNINSTALLED_INTROSPECTION_SRCDIR=$(BASE_GI_DIR)&#x0D;&#x0A;
+python ..\tools\g-ir-scanner --verbose -I. --add-include-path=..\ --add-include-path=..\gir --generate-typelib-tests=Everything,everything.h,everything.c&#x0D;&#x0A;
+cd $(SolutionDir)&#x0D;&#x0A;
+:DONE_GEN_EVERYTHING_C&#x0D;&#x0A;
+ "
+ />
+ <UserMacro
+ Name="GenerateGIR"
+ Value="
+@echo off&#x0D;&#x0A;
+set CC=cl&#x0D;&#x0A;
+if &quot;$(MINGWDIR)&quot; == &quot;&quot; goto ERR_NOGCC&#x0D;&#x0A;
+if &quot;$(PYTHONDIR)&quot; == &quot;&quot; goto ERR_NOPYPATH&#x0D;&#x0A;
+if &quot;$(PKG_CONFIG_PATH)&quot; == &quot;&quot; goto ERR_NOPKGCONFIG&#x0D;&#x0A;
+
+set PYTHONPATH=$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin;$(BASE_GI_DIR)&#x0D;&#x0A;
+set UNINSTALLED_INTROSPECTION_SRCDIR=$(BASE_GI_DIR)&#x0D;&#x0A;
+set PATH=$(GlibEtcInstallRoot)\bin;$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin;$(PATH);$(PYTHONDIR);$(MINGWDIR)\bin&#x0D;&#x0A;
+set LIB=$(GlibEtcInstallRoot)\lib;$(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin;$(LIB);$(PYTHONDIR)\libs&#x0D;&#x0A;
+set INCLUDE=$(GlibEtcInstallRoot)\include;$(GlibEtcInstallRoot)\lib\glib-2.0\include;$(INCLUDE);$(PYTHONDIR)\include&#x0D;&#x0A;
+
+set PLAT=$(PlatformName)&#x0D;&#x0A;
+set CONF=$(ConfigurationName)&#x0D;&#x0A;
+set BASEDIR=$(GlibEtcInstallRoot)&#x0D;&#x0A;
+set VSVER=$(VSVER)&#x0D;&#x0A;
+
+cd ..&#x0D;&#x0A;
+call gengir.bat&#x0D;&#x0A;
+cd .\vs$(VSVER)&#x0D;&#x0A;
+goto DONE&#x0D;&#x0A;
+
+:ERR_NOGCC&#x0D;&#x0A;
+echo You need a Windows GCC installation to preprocess the headers to generate .gir files&#x0D;&#x0A;
+echo Please set MINGWDIR accordingly before launching the Project&#x0D;&#x0A;
+goto DONE&#x0D;&#x0A;
+
+:ERR_NOPYPATH&#x0D;&#x0A;
+echo You need a Python installation to build the Python module and run the Python scripts to generate .gir files&#x0D;&#x0A;
+echo The Python installation needs to correspond to the configuration of your build, i.e. Win32 or x64&#x0D;&#x0A;
+echo Please set PYTHONDIR accordingly before launching the Project&#x0D;&#x0A;
+goto DONE&#x0D;&#x0A;
+
+:ERR_NOPKGCONFIG&#x0D;&#x0A;
+echo You need pkg-config and need to set PKG_CONFIG_PATH to point to pkgconfig (.pc) files to generate .gir files&#x0D;&#x0A;
+echo Please set PKG_CONFIG_PATH accordingly before launching the Project&#x0D;&#x0A;
+goto DONE&#x0D;&#x0A;
+
+:DONE&#x0D;&#x0A;
+ "
+ />
+ <UserMacro
+ Name="LibGILibtoolCompatibleDllPrefix"
+ Value="lib"
+ />
+ <UserMacro
+ Name="LibGILibtoolCompatibleDllSuffix"
+ Value="-$(GIApiVersion)-0"
+ />
+ <UserMacro
+ Name="LibGISeparateVS9DllPrefix"
+ Value=""
+ />
+ <UserMacro
+ Name="LibGISeparateVS9DllSuffix"
+ Value="-1-vs9"
+ />
+ <!-- Change these two to LibGILibtoolCompatibleDllPrefix and
+ LibGILibtoolCompatibleDllSuffix if that is what you want -->
+ <UserMacro
+ Name="LibGIDllPrefix"
+ Value="$(LibGISeparateVS9DllPrefix)"
+ />
+ <UserMacro
+ Name="LibGIDllSuffix"
+ Value="$(LibGISeparateVS9DllSuffix)"
+ />
+ <UserMacro
+ Name="GIDoInstall"
+ Value="
+mkdir $(CopyDir)&#x0D;&#x0A;
+mkdir $(CopyDir)\bin&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\$(LibGIDllPrefix)girepository$(LibGIDllSuffix).dll $(CopyDir)\bin&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\g-ir-compiler.exe $(CopyDir)\bin&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\g-ir-generate.exe $(CopyDir)\bin&#x0D;&#x0A;
+copy ..\..\..\tools\g-ir-annotation-tool $(CopyDir)\bin&#x0D;&#x0A;
+copy ..\..\..\tools\g-ir-doc-tool $(CopyDir)\bin&#x0D;&#x0A;
+copy ..\..\..\tools\g-ir-scanner $(CopyDir)\bin&#x0D;&#x0A;
+
+#include "gir.vs9.install"
+
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\_giscanner.pyd $(CopyDir)\lib\gobject-introspection\giscanner&#x0D;&#x0A;
+
+mkdir $(CopyDir)\share\gir-$(GIApiVersion)&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\share\gir-$(GIApiVersion)\*.gir $(CopyDir)\share\gir-$(GIApiVersion)&#x0D;&#x0A;
+
+mkdir $(CopyDir)\share\gobject-introspection-$(GIApiVersion)&#x0D;&#x0A;
+copy ..\..\..\girepository\gdump.c $(CopyDir)\share\gobject-introspection-$(GIApiVersion)&#x0D;&#x0A;
+
+mkdir $(CopyDir)\lib\girepository-$(GIApiVersion)&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\bin\girepository-$(GIApiVersion).lib $(CopyDir)\lib&#x0D;&#x0A;
+copy $(SolutionDir)$(ConfigurationName)\$(PlatformName)\lib\girepository-$(GIApiVersion)\*.typelib $(CopyDir)\lib\girepository-$(GIApiVersion)&#x0D;&#x0A;
+"
+ />
+</VisualStudioPropertySheet>
diff --git a/build/win32/vs9/girepository.vcprojin b/build/win32/vs9/girepository.vcprojin
new file mode 100644
index 00000000..12436213
--- /dev/null
+++ b/build/win32/vs9/girepository.vcprojin
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="girepository"
+ ProjectGUID="{23E28245-8FC7-4B41-B1C5-8785BD4366A7}"
+ RootNamespace="girepository"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\girepository"
+ PreprocessorDefinitions="_DEBUG;G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="$(GenerateGIRDef)"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="$(IntDir)\girepository.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\girepository"
+ PreprocessorDefinitions="G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="$(GenerateGIRDef)"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="$(IntDir)\girepository.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\girepository"
+ PreprocessorDefinitions="_DEBUG;G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="$(GenerateGIRDef)"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="$(IntDir)\girepository.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="..\..\..\girepository"
+ PreprocessorDefinitions="G_IREPOSITORY_COMPILATION;FFI_BUILDING;DLL_EXPORT"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ CommandLine="$(GenerateGIRDef)"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="libffi.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="$(IntDir)\girepository.def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+#include "girepository.sourcefiles"
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/glib-print.vcproj b/build/win32/vs9/glib-print.vcproj
new file mode 100644
index 00000000..0491ebac
--- /dev/null
+++ b/build/win32/vs9/glib-print.vcproj
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="glib-print"
+ ProjectGUID="{2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}"
+ RootNamespace="glibprint"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="1"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\examples\glib-print.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/gobject-introspection.sln b/build/win32/vs9/gobject-introspection.sln
new file mode 100644
index 00000000..68eaf25c
--- /dev/null
+++ b/build/win32/vs9/gobject-introspection.sln
@@ -0,0 +1,239 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmph", "cmph.vcproj", "{442C007E-D901-41DA-9706-5DB4AFB4C06B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cmph-bdz-test", "cmph-bdz-test.vcproj", "{E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}"
+ ProjectSection(ProjectDependencies) = postProject
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B} = {442C007E-D901-41DA-9706-5DB4AFB4C06B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "girepository", "girepository.vcproj", "{23E28245-8FC7-4B41-B1C5-8785BD4366A7}"
+ ProjectSection(ProjectDependencies) = postProject
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B} = {442C007E-D901-41DA-9706-5DB4AFB4C06B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_giscanner", "_giscanner.vcproj", "{8311394F-9114-4C97-80F2-51BCABA054C9}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glib-print", "glib-print.vcproj", "{2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}"
+ ProjectSection(ProjectDependencies) = postProject
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7} = {23E28245-8FC7-4B41-B1C5-8785BD4366A7}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g-ir-generate", "g-ir-generate.vcproj", "{F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}"
+ ProjectSection(ProjectDependencies) = postProject
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7} = {23E28245-8FC7-4B41-B1C5-8785BD4366A7}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g-ir-compiler", "g-ir-compiler.vcproj", "{5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}"
+ ProjectSection(ProjectDependencies) = postProject
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7} = {23E28245-8FC7-4B41-B1C5-8785BD4366A7}
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B} = {442C007E-D901-41DA-9706-5DB4AFB4C06B}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gimarshallingtests", "gimarshallingtests.vcproj", "{E2F8D205-0A53-4D40-9169-CE1EF2AAF203}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regress", "regress.vcproj", "{0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utility", "utility.vcproj", "{A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "annotation", "annotation.vcproj", "{A70C7D31-0019-45D9-9537-BB1DB5F31886}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "foo", "foo.vcproj", "{CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}"
+ ProjectSection(ProjectDependencies) = postProject
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7} = {23E28245-8FC7-4B41-B1C5-8785BD4366A7}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testinherit", "testinherit.vcproj", "{3F2C9F08-7FB7-4465-BF24-84E083EC4913}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gettype", "gettype.vcproj", "{F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtkfrob", "gtkfrob.vcproj", "{95C833D3-6EC2-493D-969A-6082E5495F66}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sletter", "sletter.vcproj", "{86A35E44-E4C8-4628-87E9-942D136D72BC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "everything", "everything.vcproj", "{2986281A-BD41-4BD1-8B43-25B7D7E7F234}"
+ ProjectSection(ProjectDependencies) = postProject
+ {8311394F-9114-4C97-80F2-51BCABA054C9} = {8311394F-9114-4C97-80F2-51BCABA054C9}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate_typelibs", "generate_typelibs.vcproj", "{BE771349-F11E-42AE-A23F-DA083FDC6FB8}"
+ ProjectSection(ProjectDependencies) = postProject
+ {8311394F-9114-4C97-80F2-51BCABA054C9} = {8311394F-9114-4C97-80F2-51BCABA054C9}
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774} = {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "install", "install.vcproj", "{2093D218-190E-4194-9421-3BA7CBF33B10}"
+ ProjectSection(ProjectDependencies) = postProject
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3} = {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7} = {23E28245-8FC7-4B41-B1C5-8785BD4366A7}
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8} = {BE771349-F11E-42AE-A23F-DA083FDC6FB8}
+ {8311394F-9114-4C97-80F2-51BCABA054C9} = {8311394F-9114-4C97-80F2-51BCABA054C9}
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774} = {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|Win32.Build.0 = Debug|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|x64.ActiveCfg = Debug|x64
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Debug|x64.Build.0 = Debug|x64
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|Win32.ActiveCfg = Release|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|Win32.Build.0 = Release|Win32
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|x64.ActiveCfg = Release|x64
+ {442C007E-D901-41DA-9706-5DB4AFB4C06B}.Release|x64.Build.0 = Release|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|Win32.Build.0 = Debug|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|x64.ActiveCfg = Debug|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Debug|x64.Build.0 = Debug|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|Win32.ActiveCfg = Release|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|Win32.Build.0 = Release|Win32
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|x64.ActiveCfg = Release|x64
+ {E41F378B-CCDD-4B1C-89C3-6D2C950FAF1A}.Release|x64.Build.0 = Release|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|Win32.ActiveCfg = Debug|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|Win32.Build.0 = Debug|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|x64.ActiveCfg = Debug|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Debug|x64.Build.0 = Debug|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|Win32.ActiveCfg = Release|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|Win32.Build.0 = Release|Win32
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|x64.ActiveCfg = Release|x64
+ {23E28245-8FC7-4B41-B1C5-8785BD4366A7}.Release|x64.Build.0 = Release|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|Win32.Build.0 = Debug|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|x64.ActiveCfg = Debug|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Debug|x64.Build.0 = Debug|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|Win32.ActiveCfg = Release|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|Win32.Build.0 = Release|Win32
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|x64.ActiveCfg = Release|x64
+ {8311394F-9114-4C97-80F2-51BCABA054C9}.Release|x64.Build.0 = Release|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|Win32.Build.0 = Debug|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|x64.ActiveCfg = Debug|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Debug|x64.Build.0 = Debug|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|Win32.ActiveCfg = Release|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|Win32.Build.0 = Release|Win32
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|x64.ActiveCfg = Release|x64
+ {2CCD6E09-08E7-44B9-92E6-42F0A5DBBC8B}.Release|x64.Build.0 = Release|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|Win32.Build.0 = Debug|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|x64.ActiveCfg = Debug|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Debug|x64.Build.0 = Debug|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|Win32.ActiveCfg = Release|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|Win32.Build.0 = Release|Win32
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|x64.ActiveCfg = Release|x64
+ {F4E6621F-A7DD-4863-8CCF-BA04DFC601E3}.Release|x64.Build.0 = Release|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|Win32.ActiveCfg = Debug|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|Win32.Build.0 = Debug|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|x64.ActiveCfg = Debug|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Debug|x64.Build.0 = Debug|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|Win32.ActiveCfg = Release|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|Win32.Build.0 = Release|Win32
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|x64.ActiveCfg = Release|x64
+ {5DCB55CE-F32C-4C77-8BF4-B4DAD3EC7774}.Release|x64.Build.0 = Release|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|Win32.Build.0 = Debug|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|x64.ActiveCfg = Debug|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Debug|x64.Build.0 = Debug|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|Win32.ActiveCfg = Release|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|Win32.Build.0 = Release|Win32
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|x64.ActiveCfg = Release|x64
+ {E2F8D205-0A53-4D40-9169-CE1EF2AAF203}.Release|x64.Build.0 = Release|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|Win32.ActiveCfg = Debug|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|Win32.Build.0 = Debug|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|x64.ActiveCfg = Debug|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Debug|x64.Build.0 = Debug|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|Win32.ActiveCfg = Release|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|Win32.Build.0 = Release|Win32
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|x64.ActiveCfg = Release|x64
+ {0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}.Release|x64.Build.0 = Release|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|Win32.Build.0 = Debug|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|x64.ActiveCfg = Debug|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Debug|x64.Build.0 = Debug|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|Win32.ActiveCfg = Release|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|Win32.Build.0 = Release|Win32
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|x64.ActiveCfg = Release|x64
+ {A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}.Release|x64.Build.0 = Release|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|Win32.Build.0 = Debug|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|x64.ActiveCfg = Debug|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Debug|x64.Build.0 = Debug|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|Win32.ActiveCfg = Release|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|Win32.Build.0 = Release|Win32
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|x64.ActiveCfg = Release|x64
+ {A70C7D31-0019-45D9-9537-BB1DB5F31886}.Release|x64.Build.0 = Release|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|Win32.ActiveCfg = Debug|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|Win32.Build.0 = Debug|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|x64.ActiveCfg = Debug|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Debug|x64.Build.0 = Debug|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|Win32.ActiveCfg = Release|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|Win32.Build.0 = Release|Win32
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|x64.ActiveCfg = Release|x64
+ {CD6291E9-2FFA-4D71-94EB-6D1EDD52F1D1}.Release|x64.Build.0 = Release|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|Win32.ActiveCfg = Debug|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|Win32.Build.0 = Debug|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|x64.ActiveCfg = Debug|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Debug|x64.Build.0 = Debug|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|Win32.ActiveCfg = Release|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|Win32.Build.0 = Release|Win32
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|x64.ActiveCfg = Release|x64
+ {3F2C9F08-7FB7-4465-BF24-84E083EC4913}.Release|x64.Build.0 = Release|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|Win32.ActiveCfg = Debug|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|Win32.Build.0 = Debug|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|x64.ActiveCfg = Debug|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Debug|x64.Build.0 = Debug|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|Win32.ActiveCfg = Release|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|Win32.Build.0 = Release|Win32
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|x64.ActiveCfg = Release|x64
+ {F7DCF92C-A570-4E0B-A357-2FF90E5FF1BA}.Release|x64.Build.0 = Release|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|Win32.ActiveCfg = Debug|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|Win32.Build.0 = Debug|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|x64.ActiveCfg = Debug|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Debug|x64.Build.0 = Debug|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|Win32.ActiveCfg = Release|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|Win32.Build.0 = Release|Win32
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|x64.ActiveCfg = Release|x64
+ {95C833D3-6EC2-493D-969A-6082E5495F66}.Release|x64.Build.0 = Release|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|Win32.Build.0 = Debug|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|x64.ActiveCfg = Debug|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Debug|x64.Build.0 = Debug|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|Win32.ActiveCfg = Release|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|Win32.Build.0 = Release|Win32
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|x64.ActiveCfg = Release|x64
+ {86A35E44-E4C8-4628-87E9-942D136D72BC}.Release|x64.Build.0 = Release|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|Win32.Build.0 = Debug|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|x64.ActiveCfg = Debug|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Debug|x64.Build.0 = Debug|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|Win32.ActiveCfg = Release|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|Win32.Build.0 = Release|Win32
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|x64.ActiveCfg = Release|x64
+ {2986281A-BD41-4BD1-8B43-25B7D7E7F234}.Release|x64.Build.0 = Release|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|Win32.ActiveCfg = Debug|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|Win32.Build.0 = Debug|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|x64.ActiveCfg = Debug|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Debug|x64.Build.0 = Debug|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|Win32.ActiveCfg = Release|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|Win32.Build.0 = Release|Win32
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|x64.ActiveCfg = Release|x64
+ {BE771349-F11E-42AE-A23F-DA083FDC6FB8}.Release|x64.Build.0 = Release|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|Win32.Build.0 = Debug|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.ActiveCfg = Debug|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Debug|x64.Build.0 = Debug|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.ActiveCfg = Release|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|Win32.Build.0 = Release|Win32
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.ActiveCfg = Release|x64
+ {2093D218-190E-4194-9421-3BA7CBF33B10}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/build/win32/vs9/gtkfrob.vcproj b/build/win32/vs9/gtkfrob.vcproj
new file mode 100644
index 00000000..c9cc0727
--- /dev/null
+++ b/build/win32/vs9/gtkfrob.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="gtkfrob"
+ ProjectGUID="{95C833D3-6EC2-493D-969A-6082E5495F66}"
+ RootNamespace="gtkfrob"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\gtkfrob.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/install.vcproj b/build/win32/vs9/install.vcproj
new file mode 100644
index 00000000..04cda9c7
--- /dev/null
+++ b/build/win32/vs9/install.vcproj
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="install"
+ ProjectGUID="{2093D218-190E-4194-9421-3BA7CBF33B10}"
+ RootNamespace="install"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ InheritedPropertySheets=".\gir.vsprops"
+ OutputDirectory="$(GlibEtcInstallRoot)"
+ ConfigurationType="10"
+ CharacterSet="2"
+ DeleteExtensionsOnClean=""
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GIDoInstall)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ InheritedPropertySheets=".\gir.vsprops"
+ OutputDirectory="$(GlibEtcInstallRoot)"
+ ConfigurationType="10"
+ CharacterSet="2"
+ DeleteExtensionsOnClean=""
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GIDoInstall)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ InheritedPropertySheets=".\gir.vsprops"
+ OutputDirectory="$(GlibEtcInstallRoot)"
+ ConfigurationType="10"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ DeleteExtensionsOnClean=""
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GIDoInstall)"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ InheritedPropertySheets=".\gir.vsprops"
+ OutputDirectory="$(GlibEtcInstallRoot)"
+ ConfigurationType="10"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ DeleteExtensionsOnClean=""
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ CommandLine="$(GIDoInstall)"
+ />
+ </Configuration>
+ </Configurations>
+</VisualStudioProject>
diff --git a/build/win32/vs9/regress.vcproj b/build/win32/vs9/regress.vcproj
new file mode 100644
index 00000000..6f557353
--- /dev/null
+++ b/build/win32/vs9/regress.vcproj
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="regress"
+ ProjectGUID="{0A4F3C2B-DEF6-4EEF-A9E7-60E975722B60}"
+ RootNamespace="regress"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="cairo-gobject.lib cairo.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="cairo-gobject.lib cairo.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="cairo-gobject.lib cairo.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="cairo-gobject.lib cairo.lib"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\regress.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/sletter.vcproj b/build/win32/vs9/sletter.vcproj
new file mode 100644
index 00000000..706166b2
--- /dev/null
+++ b/build/win32/vs9/sletter.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="sletter"
+ ProjectGUID="{86A35E44-E4C8-4628-87E9-942D136D72BC}"
+ RootNamespace="sletter"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\sletter.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/testinherit.vcproj b/build/win32/vs9/testinherit.vcproj
new file mode 100644
index 00000000..fd62b906
--- /dev/null
+++ b/build/win32/vs9/testinherit.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="testinherit"
+ ProjectGUID="{3F2C9F08-7FB7-4465-BF24-84E083EC4913}"
+ RootNamespace="testinherit"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\drawable.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/win32/vs9/utility.vcproj b/build/win32/vs9/utility.vcproj
new file mode 100644
index 00000000..7d510324
--- /dev/null
+++ b/build/win32/vs9/utility.vcproj
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="big5"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="utility"
+ ProjectGUID="{A1F07FDB-20BB-441E-A4D5-6C2CD3D69214}"
+ RootNamespace="utility"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="1"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="_DEBUG"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="2"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ ConfigurationType="2"
+ InheritedPropertySheets=".\gir.vsprops"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ PreprocessorDefinitions=""
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="$(OutDir)\$(LibGIDllPrefix)$(ProjectName)$(LibGIDllSuffix).dll"
+ LinkIncremental="1"
+ ModuleDefinitionFile="..\$(ProjectName).def"
+ GenerateDebugInformation="true"
+ SubSystem="2"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ ImportLibrary="$(TargetDir)$(ProjectName)-$(GIApiVersion).lib"
+ TargetMachine="17"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File RelativePath="..\..\..\tests\scanner\utility.c" />
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/common.mk b/common.mk
index 052d5b4b..28b73c7e 100644
--- a/common.mk
+++ b/common.mk
@@ -9,6 +9,7 @@
INTROSPECTION_SCANNER = \
env PATH=.libs:$(PATH) \
LPATH=.libs \
+ CC="$(CC)" \
PYTHONPATH=$(top_builddir):$(top_srcdir) \
UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) \
UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
@@ -39,3 +40,9 @@ INTROSPECTION_DOCTOOL = \
UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) \
UNINSTALLED_INTROSPECTION_BUILDDIR=$(top_builddir) \
$(top_builddir)/g-ir-doc-tool
+
+INTROSPECTION_DOCTOOL_ARGS = \
+ --add-include-path=$(srcdir) \
+ --add-include-path=$(top_srcdir)/gir \
+ --add-include-path=$(builddir) \
+ --add-include-path=$(top_builddir)
diff --git a/config.h.win32.in b/config.h.win32.in
new file mode 100644
index 00000000..3bc66f23
--- /dev/null
+++ b/config.h.win32.in
@@ -0,0 +1,136 @@
+/* config.h.in. Generated from configure.ac by autoheader. */
+
+/* Director prefix for gir installation */
+#define GIR_DIR "/some/dynamically/constructed/dir"
+
+/* Name of the gir directory */
+#define GIR_SUFFIX "@GIR_SUFFIX@"
+
+/* Directory prefix for typelib installation */
+#define GOBJECT_INTROSPECTION_LIBDIR "/some/dynamically/constructed/dir"
+
+/* Define to 1 if you have the `backtrace' function. */
+/* #undef HAVE_BACKTRACE */
+
+/* Define to 1 if you have the `backtrace_symbols' function. */
+/* #undef HAVE_BACKTRACE_SYMBOLS */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #undef HAVE_DLFCN_H */
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#ifndef _MSC_VER
+#define HAVE_INTTYPES_H 1
+#endif
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+/* #undef HAVE_LIBDL */
+
+/* Define to 1 if you have the `memchr' function. */
+#define HAVE_MEMCHR 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#if (!defined (_MSC_VER) || (_MSC_VER >= 1600))
+#define HAVE_STDINT_H 1
+#endif
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#ifndef _MSC_VER
+#define HAVE_STRINGS_H 1
+#endif
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strspn' function. */
+#define HAVE_STRSPN 1
+
+/* Define to 1 if you have the `strstr' function. */
+#define HAVE_STRSTR 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the `strtoull' function. */
+#ifndef _MSC_VER
+#define HAVE_STRTOULL 1
+#endif
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#ifndef _MSC_VER
+#define HAVE_UNISTD_H 1
+#endif
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+/* #undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#define PACKAGE "gobject-introspection"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "gobject-introspection"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "gojbect-introspection @PACKAGE_VERSION@"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "gobject-introspection"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "@PACKAGE_VERSION@"
+
+/* Define to the platform's shared library suffix */
+#define SHLIB_SUFFIX ".dll"
+
+/* The size of `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 4
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "@PACKAGE_VERSION@"
+
+/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a
+ `char[]'. */
+#define YYTEXT_POINTER 1
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
diff --git a/configure.ac b/configure.ac
index b67c0953..5b1e746f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,11 +3,9 @@
dnl the gi version number
m4_define(gi_major_version, 1)
-m4_define(gi_minor_version, 34)
-m4_define(gi_micro_version, 2)
-dnl If set, leave this empty after bumping gi_micro_version
-m4_define(gi_oops_version, )
-m4_define(gi_version, [gi_major_version.gi_minor_version.gi_micro_version]m4_ifval(gi_oops_version, .gi_oops_version))
+m4_define(gi_minor_version, 37)
+m4_define(gi_micro_version, 6)
+m4_define(gi_version, gi_major_version.gi_minor_version.gi_micro_version)
AC_PREREQ([2.63])
AC_INIT([gobject-introspection],
@@ -39,6 +37,7 @@ AM_CONDITIONAL(OS_WIN32, [test "x$os_win32" = "xyes"])
# Checks for programs.
AC_PROG_CC
AM_PROG_CC_C_O
+AC_PROG_MKDIR_P
# Initialize libtool
LT_PREREQ([2.2])
@@ -125,31 +124,25 @@ 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.34.1])
+PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.36.0])
PKG_CHECK_MODULES(GOBJECT, [gobject-2.0])
PKG_CHECK_MODULES(GMODULE, [gmodule-2.0])
PKG_CHECK_MODULES(GIO, [gio-2.0])
PKG_CHECK_MODULES(GIO_UNIX, [gio-unix-2.0], have_gio_unix=true, have_gio_unix=false)
AM_CONDITIONAL(HAVE_GIO_UNIX, test x$have_gio_unix = xtrue)
-AC_ARG_ENABLE(tests,
- AS_HELP_STRING([--disable-tests], [disable test libraries]),
- enable_tests=$enableval,
- enable_tests=maybe)
+# Prefer cairo-gobject if we have it
+AC_ARG_WITH(cairo,
+ AS_HELP_STRING([--with-cairo], [Use cairo @<:@default=maybe@:>@]),
+ [], [with_cairo=maybe])
-AS_IF([test x${enable_tests} != xno], [
+AS_IF([test x${with_cairo} != xno], [
PKG_CHECK_MODULES(CAIRO, [cairo cairo-gobject], have_cairo=yes, have_cairo=no)
- AS_IF([test x$have_cairo != xyes], [
- AS_IF([ test x$enable_tests = xmaybe ], [
- enable_tests=no
- ], [
- AC_MSG_ERROR([Tests enabled but cairo not found; pass --disable-tests or install cairo])
- ])
- ], [
- enable_tests=yes
+ AS_IF([ test x$have_cairo = xno && test x$with_cairo = xyes ], [
+ AC_MSG_ERROR([cairo enabled but not found])
])
])
-AM_CONDITIONAL(BUILD_TESTS, test x$enable_tests != xno)
+AM_CONDITIONAL(HAVE_CAIRO, test x$have_cairo = xyes)
case "$host" in
*-*-darwin*)
@@ -254,7 +247,7 @@ AC_CHECK_FUNCS([memchr strchr strspn strstr strtol strtoull])
AC_CHECK_FUNCS([backtrace backtrace_symbols])
# Python
-AM_PATH_PYTHON([2.5])
+AM_PATH_PYTHON([2.6])
case "$host" in
*-*-mingw*)
# Change backslashes to forward slashes in pyexecdir to avoid
@@ -269,10 +262,16 @@ fi
dnl Not enabled by default until 3.6 cycle when we can propose mako as
dnl an external dependency
-AC_ARG_ENABLE(doctool,[ --enable-doctool enable g-ir-doctool ], enable_doctool=$enableval,enable_doctool=no)
-if test x$enable_doctool != xno; then
- AM_CHECK_PYMOD(mako,,,[AC_MSG_ERROR(Could not find python module: mako)])
-fi
+AC_ARG_ENABLE(doctool,[ --disable-doctool disable g-ir-doctool ],,enable_doctool=auto)
+AS_IF([ test x$enable_doctool != xno], [
+ AM_CHECK_PYMOD(mako,,have_python_mako=yes,have_python_mako=no)
+])
+AS_IF([ test x$enable_doctool = xauto && test x$have_python_mako = xyes ],
+ [ enable_doctool=yes ],
+ [ test x$enable_doctool = xauto && test x$have_python_mako = xno ],
+ [ enable_doctool=no ],
+ [ test x$enable_doctool = xyes && test x$have_python_mako = xno ],
+ [ AC_MSG_ERROR([Python mako module not found]) ])
AM_CONDITIONAL(BUILD_DOCTOOL, test x$enable_doctool != xno)
# Glib documentation
@@ -288,7 +287,28 @@ AM_CONDITIONAL(WITH_GLIBSRC, test x"$GLIBSRC" != x)
AC_SUBST(GLIBSRC)
AC_MSG_RESULT([$GLIBSRC])
+dnl
+dnl Check for -Bsymbolic-functions linker flag used to avoid
+dnl intra-library PLT jumps, if available.
+dnl
+AC_ARG_ENABLE(Bsymbolic,
+ [AS_HELP_STRING([--disable-Bsymbolic],
+ [avoid linking with -Bsymbolic])],,
+ [SAVED_LDFLAGS="${LDFLAGS}"
+ AC_MSG_CHECKING([for -Bsymbolic-functions linker flag])
+ LDFLAGS=-Wl,-Bsymbolic-functions
+ AC_TRY_LINK([], [int main (void) { return 0; }],
+ AC_MSG_RESULT(yes)
+ enable_Bsymbolic=yes,
+ AC_MSG_RESULT(no)
+ enable_Bsymbolic=no)
+ LDFLAGS="${SAVED_LDFLAGS}"])
+
+if test "x${enable_Bsymbolic}" = "xyes"; then
+ EXTRA_LINK_FLAGS=-Wl,-Bsymbolic-functions
+fi
+AC_SUBST(EXTRA_LINK_FLAGS)
AC_CONFIG_FILES([
Makefile
@@ -298,16 +318,13 @@ tests/offsets/Makefile
tests/scanner/Makefile
tests/repository/Makefile
tests/warn/Makefile
-tests/doctool/Makefile
docs/Makefile
docs/reference/Makefile
gobject-introspection-1.0.pc
-gobject-introspection-no-export-1.0.pc])
+gobject-introspection-no-export-1.0.pc
+config.h.win32
+build/Makefile
+build/win32/Makefile
+build/win32/vs9/Makefile
+build/win32/vs10/Makefile])
AC_OUTPUT
-
-echo "
- gobject-introspection $VERSION
- ===============
-
- tests: ${enable_tests}
-"
diff --git a/docs/g-ir-scanner.1 b/docs/g-ir-scanner.1
index 847c78b8..591df47b 100644
--- a/docs/g-ir-scanner.1
+++ b/docs/g-ir-scanner.1
@@ -80,7 +80,7 @@ eg 2.0 for Gtk+, not 2.12.7.
.B \-p, --program=PROGRAM
Specifies a binary that will be introspected. This means that the
*_get_type() functions in it will be called for GObject data types.
-The binary must be modified to take a --introspect= option, and
+The binary must be modified to take a --introspect-dump= option, and
to pass the argument to this function to g_irepository_dump.
.TP
.B \--program-arg=ARG
@@ -131,7 +131,7 @@ Be verbose, include some debugging information.
.TP
.SH ENVIRONMENT VARIABLES
The g-ir-scanner uses the XDG_DATA_DIRS variable to check for dirs,
-the gir's are located in XDG_DATA_DIRS/share/gir-1.0. It is normally
+the girs are located in XDG_DATA_DIRS/gir-1.0. It is normally
set on a distribution so you shouldn't need to set it yourself.
The variable GI_SCANNER_DISABLE_CACHE ensures that the scanner will
diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am
index 19c9affa..c3157be3 100644
--- a/docs/reference/Makefile.am
+++ b/docs/reference/Makefile.am
@@ -13,7 +13,7 @@ DOC_SOURCE_DIR=$(top_srcdir)/girepository
SCAN_OPTIONS=
# Extra options to supply to gtkdoc-mkdb
-MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space=g
+MKDB_OPTIONS=--sgml-mode --output-format=xml --name-space=g --ignore-files=cmph
# Used for dependencies
HFILE_GLOB=$(top_srcdir)/girepository/*.h
diff --git a/docs/reference/gi-docs.sgml b/docs/reference/gi-docs.sgml
index 4d743c9a..2f8bf861 100644
--- a/docs/reference/gi-docs.sgml
+++ b/docs/reference/gi-docs.sgml
@@ -4,7 +4,6 @@
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
-<!--ENTITY index-Objects-Grouped SYSTEM "objects_grouped.sgml"-->
<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
<bookinfo>
<title>GObject Introspection Reference Manual</title>
diff --git a/docs/reference/gi-overview.xml b/docs/reference/gi-overview.xml
index b624a884..0943b8e5 100644
--- a/docs/reference/gi-overview.xml
+++ b/docs/reference/gi-overview.xml
@@ -4,7 +4,6 @@
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
-<!--ENTITY index-Objects-Grouped SYSTEM "objects_grouped.sgml"-->
<refentry id="gi-overview">
<refmeta>
<refentrytitle role="top_of_page" id="gi-overview.top_of_page">Introspection Overview</refentrytitle>
diff --git a/docs/reference/gi-sections.txt b/docs/reference/gi-sections.txt
index b7565a13..8b880cf8 100644
--- a/docs/reference/gi-sections.txt
+++ b/docs/reference/gi-sections.txt
@@ -7,6 +7,7 @@ GIRepositoryLoadFlags
GITypelib
g_irepository_get_default
g_irepository_prepend_search_path
+g_irepository_prepend_library_path
g_irepository_get_search_path
g_irepository_load_typelib
g_irepository_is_registered
diff --git a/docs/reference/gi-struct-hierarchy.xml b/docs/reference/gi-struct-hierarchy.xml
index 7b63c548..eea51282 100644
--- a/docs/reference/gi-struct-hierarchy.xml
+++ b/docs/reference/gi-struct-hierarchy.xml
@@ -4,7 +4,6 @@
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
<!ENTITY version SYSTEM "version.xml">
]>
-<!--ENTITY index-Objects-Grouped SYSTEM "objects_grouped.sgml"-->
<refentry id="gi-struct-hierarchy">
<refmeta>
<refentrytitle role="top_of_page" id="gi-struct-hierarchy.top_of_page">Struct hierarchy</refentrytitle>
diff --git a/examples/glib-print.c b/examples/glib-print.c
index f187f76c..4e117d9d 100644
--- a/examples/glib-print.c
+++ b/examples/glib-print.c
@@ -1,46 +1,48 @@
#include <girepository.h>
-int main(void)
+int
+main (void)
{
- GIRepository *repository;
- GError *error = NULL;
- GIBaseInfo *base_info;
- GIArgument in_args[5];
- GIArgument retval;
-
- g_type_init();
-
- repository = g_irepository_get_default();
- g_irepository_require(repository, "GLib", "2.0", 0, &error);
- if (error) {
- g_error("ERROR: %s\n", error->message);
+ GIRepository *repository;
+ GError *error = NULL;
+ GIBaseInfo *base_info;
+ GIArgument in_args[5];
+ GIArgument retval;
+
+ repository = g_irepository_get_default ();
+ g_irepository_require (repository, "GLib", "2.0", 0, &error);
+ if (error)
+ {
+ g_error ("ERROR: %s\n", error->message);
return 1;
}
- base_info = g_irepository_find_by_name(repository, "GLib", "assertion_message");
- if (!base_info) {
- g_error("ERROR: %s\n", "Could not find GLib.warn_message");
+ base_info = g_irepository_find_by_name (repository, "GLib", "assertion_message");
+ if (!base_info)
+ {
+ g_error ("ERROR: %s\n", "Could not find GLib.warn_message");
return 1;
}
- in_args[0].v_pointer = "domain";
- in_args[1].v_pointer = "glib-print.c";
- in_args[2].v_pointer = "30";
- in_args[3].v_pointer = "main";
- in_args[4].v_pointer = "hello world";
-
- if (!g_function_info_invoke ((GIFunctionInfo *)base_info,
- (const GIArgument*)&in_args,
- 5,
- NULL,
- 0,
- &retval,
- &error)) {
- g_error("ERROR: %s\n", error->message);
+ in_args[0].v_pointer = "domain";
+ in_args[1].v_pointer = "glib-print.c";
+ in_args[2].v_pointer = "30";
+ in_args[3].v_pointer = "main";
+ in_args[4].v_pointer = "hello world";
+
+ if (!g_function_info_invoke ((GIFunctionInfo *) base_info,
+ (const GIArgument *) &in_args,
+ 5,
+ NULL,
+ 0,
+ &retval,
+ &error))
+ {
+ g_error ("ERROR: %s\n", error->message);
return 1;
}
- g_base_info_unref (base_info);
+ g_base_info_unref (base_info);
- return 0;
+ return 0;
}
diff --git a/gir/gio-2.0.c b/gir/gio-2.0.c
index b763786e..89ec0e0d 100644
--- a/gir/gio-2.0.c
+++ b/gir/gio-2.0.c
@@ -261,6 +261,13 @@
/**
+ * GBytesIcon:bytes:
+ *
+ * The bytes containing the icon.
+ */
+
+
+/**
* GCancellable::cancelled:
* @cancellable: a #GCancellable.
*
@@ -1868,6 +1875,89 @@
/**
+ * GPropertyAction:
+ *
+ * This type is opaque.
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GPropertyAction:enabled:
+ *
+ * If @action is currently enabled.
+ *
+ * If the action is disabled then calls to g_action_activate() and
+ * g_action_change_state() have no effect.
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GPropertyAction:name:
+ *
+ * The name of the action. This is mostly meaningful for identifying
+ * the action once it has been added to a #GActionMap.
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GPropertyAction:object:
+ *
+ * The object to wrap a property on.
+ *
+ * The object must be a non-%NULL #GObject with properties.
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GPropertyAction:parameter-type:
+ *
+ * The type of the parameter that must be given when activating the
+ * action.
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GPropertyAction:property-name:
+ *
+ * The name of the property to wrap on the object.
+ *
+ * The property must exist on the passed-in object and it must be
+ * readable and writable (and not construct-only).
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GPropertyAction:state:
+ *
+ * The state of the action, or %NULL if the action is stateless.
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GPropertyAction:state-type:
+ *
+ * The #GVariantType of the state that the action has, or %NULL if the
+ * action is stateless.
+ *
+ * Since: 2.38
+ */
+
+
+/**
* GProxyAddress:
*
* A #GInetSocketAddress representing a connection via a proxy server
@@ -1897,6 +1987,25 @@
/**
+ * GProxyAddressEnumerator:default-port:
+ *
+ * The default port to use if #GProxyAddressEnumerator:uri does not
+ * specify one.
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * GProxyAddressEnumerator:proxy-resolver:
+ *
+ * The proxy resolver to use.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* GRemoteActionGroupInterface:
* @activate_action_full: the virtual function pointer for g_remote_action_group_activate_action_full()
* @change_action_state_full: the virtual function pointer for g_remote_action_group_change_action_state_full()
@@ -2213,9 +2322,78 @@
/**
+ * GSimpleProxyResolver:default-proxy:
+ *
+ * The default proxy URI that will be used for any URI that doesn't
+ * match #GSimpleProxyResolver:ignore-hosts, and doesn't match any
+ * of the schemes set with g_simple_proxy_resolver_set_uri_proxy().
+ *
+ * Note that as a special case, if this URI starts with
+ * "<literal>socks://</literal>", #GSimpleProxyResolver will treat
+ * it as referring to all three of the <literal>socks5</literal>,
+ * <literal>socks4a</literal>, and <literal>socks4</literal> proxy
+ * types.
+ */
+
+
+/**
+ * GSimpleProxyResolver:ignore-hosts:
+ *
+ * A list of hostnames and IP addresses that the resolver should
+ * allow direct connections to.
+ *
+ * Entries can be in one of 4 formats:
+ *
+ * <itemizedlist>
+ * <listitem>
+ * A hostname, such as "<literal>example.com</literal>",
+ * "<literal>.example.com</literal>", or
+ * "<literal>*.example.com</literal>", any of which match
+ * "<literal>example.com</literal>" or any subdomain of it.
+ * </listitem>
+ * <listitem>
+ * An IPv4 or IPv6 address, such as
+ * "<literal>192.168.1.1</literal>", which matches only
+ * that address.
+ * </listitem>
+ * <listitem>
+ * A hostname or IP address followed by a port, such as
+ * "<literal>example.com:80</literal>", which matches whatever
+ * the hostname or IP address would match, but only for URLs
+ * with the (explicitly) indicated port. In the case of an IPv6
+ * address, the address part must appear in brackets:
+ * "<literal>[::1]:443</literal>"
+ * </listitem>
+ * <listitem>
+ * An IP address range, given by a base address and prefix length,
+ * such as "<literal>fe80::/10</literal>", which matches any
+ * address in that range.
+ * </listitem>
+ * </itemizedlist>
+ *
+ * Note that when dealing with Unicode hostnames, the matching is
+ * done against the ASCII form of the name.
+ *
+ * Also note that hostname exclusions apply only to connections made
+ * to hosts identified by name, and IP address exclusions apply only
+ * to connections made to hosts identified by address. That is, if
+ * <literal>example.com</literal> has an address of
+ * <literal>192.168.1.1</literal>, and the :ignore-hosts list
+ * contains only "<literal>192.168.1.1</literal>", then a connection
+ * to "<literal>example.com</literal>" (eg, via a #GNetworkAddress)
+ * will use the proxy, and a connection to
+ * "<literal>192.168.1.1</literal>" (eg, via a #GInetSocketAddress)
+ * will not.
+ *
+ * These rules match the "ignore-hosts"/"noproxy" rules most
+ * commonly used by other applications.
+ */
+
+
+/**
* GSocket:broadcast:
*
- * Whether the socket should allow sending to and receiving from broadcast addresses.
+ * Whether the socket should allow sending to broadcast addresses.
*
* Since: 2.32
*/
@@ -2366,6 +2544,15 @@
/**
+ * GSocketClient:proxy-resolver:
+ *
+ * The proxy resolver to use
+ *
+ * Since: 2.36
+ */
+
+
+/**
* GSocketService::incoming:
* @service: the #GSocketService
* @connection: a new #GSocketConnection object
@@ -2392,6 +2579,41 @@
/**
+ * GTask:
+ *
+ * The opaque object representing a synchronous or asynchronous task
+ * and its result.
+ */
+
+
+/**
+ * GTaskThreadFunc:
+ * @task: the #GTask
+ * @source_object: (type GObject): @task's source object
+ * @task_data: @task's task data
+ * @cancellable: @task's #GCancellable, or %NULL
+ *
+ * The prototype for a task function to be run in a thread via
+ * g_task_run_in_thread() or g_task_run_in_thread_sync().
+ *
+ * If the return-on-cancel flag is set on @task, and @cancellable gets
+ * cancelled, then the #GTask will be completed immediately (as though
+ * g_task_return_error_if_cancelled() had been called), without
+ * waiting for the task function to complete. However, the task
+ * function will continue running in its thread in the background. The
+ * function therefore needs to be careful about how it uses
+ * externally-visible state in this case. See
+ * g_task_set_return_on_cancel() for more details.
+ *
+ * Other than in that case, @task will be completed when the
+ * #GTaskThreadFunc returns, <emphasis>not</emphasis> when it calls
+ * a <literal>g_task_return_</literal> function.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* GTestDBus:
*
* The #GTestDBus structure contains only private data and
@@ -3698,13 +3920,13 @@
*
* for (l = self->priv->init_results; l != NULL; l = l->next)
* {
- * GSimpleAsyncResult *simple = l->data;
+ * GTask *task = l->data;
*
- * if (!self->priv->success)
- * g_simple_async_result_set_error (simple, ...);
- *
- * g_simple_async_result_complete (simple);
- * g_object_unref (simple);
+ * if (self->priv->success)
+ * g_task_return_boolean (task, TRUE);
+ * else
+ * g_task_return_new_error (task, ...);
+ * g_object_unref (task);
* }
*
* g_list_free (self->priv->init_results);
@@ -3719,31 +3941,28 @@
* gpointer user_data)
* {
* Foo *self = FOO (initable);
- * GSimpleAsyncResult *simple;
+ * GTask *task;
*
- * simple = g_simple_async_result_new (G_OBJECT (initable)
- * callback,
- * user_data,
- * foo_init_async);
+ * task = g_task_new (initable, cancellable, callback, user_data);
*
* switch (self->priv->state)
* {
* case NOT_INITIALIZED:
* _foo_get_ready (self);
* self->priv->init_results = g_list_append (self->priv->init_results,
- * simple);
+ * task);
* self->priv->state = INITIALIZING;
* break;
* case INITIALIZING:
* self->priv->init_results = g_list_append (self->priv->init_results,
- * simple);
+ * task);
* break;
* case INITIALIZED:
* if (!self->priv->success)
- * g_simple_async_result_set_error (simple, ...);
- *
- * g_simple_async_result_complete_in_idle (simple);
- * g_object_unref (simple);
+ * g_task_return_new_error (task, ...);
+ * else
+ * g_task_return_boolean (task, TRUE);
+ * g_object_unref (task);
* break;
* }
* }
@@ -3753,14 +3972,9 @@
* GAsyncResult *result,
* GError **error)
* {
- * g_return_val_if_fail (g_simple_async_result_is_valid (result,
- * G_OBJECT (initable), foo_init_async), FALSE);
+ * g_return_val_if_fail (g_task_is_valid (result, initable), FALSE);
*
- * if (g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (result),
- * error))
- * return FALSE;
- *
- * return TRUE;
+ * return g_task_propagate_boolean (G_TASK (result), error);
* }
*
* static void
@@ -3780,7 +3994,7 @@
* SECTION:gasyncresult
* @short_description: Asynchronous Function Results
* @include: gio/gio.h
- * @see_also: #GSimpleAsyncResult
+ * @see_also: #GTask
*
* Provides a base class for implementing asynchronous function results.
*
@@ -3812,7 +4026,7 @@
* |[
* void _theoretical_frobnitz_async (Theoretical *t,
* GCancellable *c,
- * GAsyncReadyCallback *cb,
+ * GAsyncReadyCallback cb,
* gpointer u);
*
* gboolean _theoretical_frobnitz_finish (Theoretical *t,
@@ -3853,6 +4067,16 @@
* The callback for an asynchronous operation is called only once, and is
* always called, even in the case of a cancelled operation. On cancellation
* the result is a %G_IO_ERROR_CANCELLED error.
+ *
+ * <para id="io-priority"><indexterm><primary>I/O
+ * priority</primary></indexterm> Many I/O-related asynchronous
+ * operations have a priority parameter, which is used in certain
+ * cases to determine the order in which operations are executed. They
+ * are <emphasis>not</emphasis> used to determine system-wide I/O
+ * scheduling. Priorities are integers, with lower numbers indicating
+ * higher priority. It is recommended to choose priorities between
+ * %G_PRIORITY_LOW and %G_PRIORITY_HIGH, with %G_PRIORITY_DEFAULT as a
+ * default. </para>
*/
@@ -3903,6 +4127,19 @@
/**
+ * SECTION:gbytesicon
+ * @short_description: An icon stored in memory as a GBytes
+ * @include: gio/gio.h
+ * @see_also: #GIcon, #GLoadableIcon, #GBytes
+ *
+ * #GBytesIcon specifies an image held in memory in a common format (usually
+ * png) to be used as icon.
+ *
+ * Since: 2.38
+ */
+
+
+/**
* SECTION:gcancellable
* @short_description: Thread-safe Operation Cancellation Stack
* @include: gio/gio.h
@@ -4211,7 +4448,10 @@
* </programlisting></example>
* With this setup, a D-Bus peer can transparently pass e.g. %FOO_BAR_ERROR_ANOTHER_ERROR and
* other peers will see the D-Bus error name <literal>org.project.Foo.Bar.Error.AnotherError</literal>.
- * If the other peer is using GDBus, the peer will see also %FOO_BAR_ERROR_ANOTHER_ERROR instead
+ *
+ * If the other peer is using GDBus, and has registered the association with
+ * g_dbus_error_register_error_domain() in advance (e.g. by invoking the %FOO_BAR_ERROR quark
+ * generation itself in the previous example) the peer will see also %FOO_BAR_ERROR_ANOTHER_ERROR instead
* of %G_IO_ERROR_DBUS_ERROR. Note that GDBus clients can still recover
* <literal>org.project.Foo.Bar.Error.AnotherError</literal> using g_dbus_error_get_remote_error().
*
@@ -4545,7 +4785,7 @@
/**
* SECTION:gdbusutils
* @title: D-Bus Utilities
- * @short_description: Various utilities related to D-Bus.
+ * @short_description: Various utilities related to D-Bus
* @include: gio/gio.h
*
* Various utility routines related to D-Bus.
@@ -4579,7 +4819,7 @@
* #GDrive is a container class for #GVolume objects that stem from
* the same piece of media. As such, #GDrive abstracts a drive with
* (or without) removable media and provides operations for querying
- * whether media is available, determing whether media change is
+ * whether media is available, determining whether media change is
* automatically detected and ejecting the media.
*
* If the #GDrive reports that media isn't automatically detected, one
@@ -4726,7 +4966,7 @@
* File attributes in GIO consist of a list of key-value pairs.
*
* Keys are strings that contain a key namespace and a key name, separated
- * by a colon, e.g. "namespace:keyname". Namespaces are included to sort
+ * by a colon, e.g. "namespace::keyname". Namespaces are included to sort
* key-value pairs by namespaces for relevance. Keys can be retrived
* using wildcards, e.g. "standard::*" will return all of the keys in the
* "standard" namespace.
@@ -4820,7 +5060,7 @@
* <para><table>
* <title>GFileAttributes Built-in Keys and Value Types</title>
* <tgroup cols='3' align='left'><thead>
- * <row><entry>Enum Value</entry><entry>Namespace:Key</entry><entry>Value Type</entry></row>
+ * <row><entry>Enum Value</entry><entry>Namespace::Key</entry><entry>Value Type</entry></row>
* </thead><tbody>
* <row><entry>%G_FILE_ATTRIBUTE_STANDARD_TYPE</entry><entry>standard::type</entry><entry>uint32 (#GFileType)</entry></row>
* <row><entry>%G_FILE_ATTRIBUTE_STANDARD_IS_HIDDEN</entry><entry>standard::is-hidden</entry><entry>boolean</entry></row>
@@ -4932,6 +5172,17 @@
* version will return a list of #GFileInfo<!---->s, whereas the
* synchronous will only return the next file in the enumerator.
*
+ * The ordering of returned files is unspecified for non-Unix
+ * platforms; for more information, see g_dir_read_name(). On Unix,
+ * when operating on local files, returned files will be sorted by
+ * inode number. Effectively you can assume that the ordering of
+ * returned files will be stable between successive calls (and
+ * applications) assuming the directory is unchanged.
+ *
+ * If your application needs a specific ordering, such as by name or
+ * modification time, you will have to implement that in your
+ * application code.
+ *
* To close a #GFileEnumerator, use g_file_enumerator_close(), or
* its asynchronous version, g_file_enumerator_close_async(). Once
* a #GFileEnumerator is closed, no further actions may be performed
@@ -5129,12 +5380,22 @@
*
* To check if two #GIcons are equal, see g_icon_equal().
*
- * For serializing a #GIcon, use g_icon_to_string() and
- * g_icon_new_for_string().
+ * For serializing a #GIcon, use g_icon_serialize() and
+ * g_icon_deserialize().
+ *
+ * If you want to consume #GIcon (for example, in a toolkit) you must
+ * be prepared to handle at least the three following cases:
+ * #GLoadableIcon, #GThemedIcon and #GEmblemedIcon. It may also make
+ * sense to have fast-paths for other cases (like handling #GdkPixbuf
+ * directly, for example) but all compliant #GIcon implementations
+ * outside of GIO must implement #GLoadableIcon.
*
* 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().
+ * implementations you need to ensure that your new implementation also
+ * implements #GLoadableIcon. Additionally, you must provide an
+ * implementation of g_icon_serialize() that gives a result that is
+ * understood by g_icon_deserialize(), yielding one of the built-in icon
+ * types.
*/
@@ -5249,17 +5510,13 @@
* @short_description: I/O Scheduler
* @include: gio/gio.h
*
+ * <note><para>
+ * As of GLib 2.36, the <literal>g_io_scheduler</literal> methods
+ * are deprecated in favor of #GThreadPool and #GTask.
+ * </para></note>
+ *
* Schedules asynchronous I/O operations. #GIOScheduler integrates
* into the main event loop (#GMainLoop) and uses threads.
- *
- * <para id="io-priority"><indexterm><primary>I/O priority</primary></indexterm>
- * Each I/O operation has a priority, and the scheduler uses the priorities
- * to determine the order in which operations are executed. They are
- * <emphasis>not</emphasis> used to determine system-wide I/O scheduling.
- * Priorities are integers, with lower numbers indicating higher priority.
- * It is recommended to choose priorities between %G_PRIORITY_LOW and
- * %G_PRIORITY_HIGH, with %G_PRIORITY_DEFAULT as a default.
- * </para>
*/
@@ -5523,7 +5780,7 @@
*
* Unmounting a #GMount instance is an asynchronous operation. For
* more information about asynchronous operations, see #GAsyncResult
- * and #GSimpleAsyncResult. To unmount a #GMount instance, first call
+ * and #GTask. To unmount a #GMount instance, first call
* g_mount_unmount_with_operation() with (at least) the #GMount instance and a
* #GAsyncReadyCallback. The callback will be fired when the
* operation has resolved (either with success or failure), and a
@@ -5573,6 +5830,33 @@
/**
+ * SECTION:gnetworking
+ * @title: gnetworking.h
+ * @short_description: System networking includes
+ * @include: gio/gnetworking.h
+ *
+ * The <literal>gnetworking.h</literal> header can be included to get
+ * various low-level networking-related system headers, automatically
+ * taking care of certain portability issues for you.
+ *
+ * This can be used, for example, if you want to call setsockopt()
+ * on a #GSocket.
+ *
+ * Note that while WinSock has many of the same APIs as the
+ * traditional UNIX socket API, most of them behave at least slightly
+ * differently (particularly with respect to error handling). If you
+ * want your code to work under both UNIX and Windows, you will need
+ * to take these differences into account.
+ *
+ * Also, under glibc, certain non-portable functions are only visible
+ * in the headers if you define <literal>_GNU_SOURCE</literal> before
+ * including them. Note that this symbol must be defined before
+ * including <emphasis>any</emphasis> headers, or it may not take
+ * effect.
+ */
+
+
+/**
* SECTION:gnetworkmonitor
* @title: GNetworkMonitor
* @short_description: Network status monitor
@@ -5672,7 +5956,7 @@
/**
* SECTION:gpollableutils
- * @short_description: #GPollableInputStream / #GPollableOutputStream utilities
+ * @short_description: Utilities for pollable streams
* @include: gio/gio.h
*
* Utility functions for #GPollableInputStream and
@@ -5681,6 +5965,68 @@
/**
+ * SECTION:gpropertyaction
+ * @title: GPropertyAction
+ * @short_description: A GAction reflecting a GObject property
+ *
+ * A #GPropertyAction is a way to get a #GAction with a state value
+ * reflecting and controlling the value of a #GObject property.
+ *
+ * The state of the action will correspond to the value of the property.
+ * Changing it will change the property (assuming the requested value
+ * matches the requirements as specified in the #GParamSpec).
+ *
+ * Only the most common types are presently supported. Booleans are
+ * mapped to booleans, strings to strings, signed/unsigned integers to
+ * int32/uint32 and floats and doubles to doubles.
+ *
+ * If the property is an enum then the state will be string-typed and
+ * conversion will automatically be performed between the enum value and
+ * "nick" string as per the #GEnumValue table.
+ *
+ * Flags types are not currently supported.
+ *
+ * Properties of object types, boxed types and pointer types are not
+ * supported and probably never will be.
+ *
+ * Properties of #GVariant types are not currently supported.
+ *
+ * If the property is boolean-valued then the action will have a NULL
+ * parameter type, and activating the action (with no parameter) will
+ * toggle the value of the property.
+ *
+ * In all other cases, the parameter type will correspond to the type of
+ * the property.
+ *
+ * The general idea here is to reduce the number of locations where a
+ * particular piece of state is kept (and therefore has to be
+ * synchronised between). #GPropertyAction does not have a separate
+ * state that is kept in sync with the property value -- its state
+ * <em>is</em> the property value.
+ *
+ * For example, it might be useful to create a #GAction corresponding to
+ * the "visible-child-name" property of a #GtkStack so that the current
+ * page can be switched from a menu. The active radio indication in the
+ * menu is then directly determined from the active page of the
+ * #GtkStack.
+ *
+ * An anti-example would be binding the "active-id" property on a
+ * #GtkComboBox. This is because the state of the combobox itself is
+ * probably uninteresting and is actually being used to control
+ * something else.
+ *
+ * Another anti-example would be to bind to the "visible-child-name"
+ * property of a #GtkStack if this value is actually stored in
+ * #GSettings. In that case, the real source of the value is
+ * #GSettings. If you want a #GAction to control a setting stored in
+ * #GSettings, see g_settings_create_action() instead, and possibly
+ * combine its use with g_settings_bind().
+ *
+ * Since: 2.38
+ */
+
+
+/**
* SECTION:gproxy
* @short_description: Interface for proxy handling
*
@@ -5717,7 +6063,7 @@
/**
* SECTION:gremoteactiongroup
* @title: GRemoteActionGroup
- * @short_description: a #GActionGroup that interacts with other processes
+ * @short_description: A GActionGroup that interacts with other processes
*
* The GRemoteActionGroup interface is implemented by #GActionGroup
* instances that either transmit action invocations to other processes
@@ -6095,7 +6441,7 @@
/**
* SECTION:gsettingsschema
- * @short_description: introspecting and controlling the loading of GSettings schemas
+ * @short_description: Introspecting and controlling the loading of GSettings schemas
*
* The #GSettingsSchemaSource and #GSettingsSchema APIs provide a
* mechanism for advanced control over the loading of schemas and a
@@ -6221,10 +6567,12 @@
* @include: gio/gio.h
* @see_also: #GAsyncResult
*
- * Implements #GAsyncResult for simple cases. Most of the time, this
- * will be all an application needs, and will be used transparently.
- * Because of this, #GSimpleAsyncResult is used throughout GIO for
- * handling asynchronous functions.
+ * <note><para>
+ * As of GLib 2.36, #GSimpleAsyncResult is deprecated in favor of
+ * #GTask, which provides a simpler API.
+ * </para></note>
+ *
+ * #GSimpleAsyncResult implements #GAsyncResult.
*
* GSimpleAsyncResult handles #GAsyncReadyCallback<!-- -->s, error
* reporting, operation cancellation and the final state of an operation,
@@ -6405,10 +6753,29 @@
/**
+ * SECTION:gsimpleproxyresolver
+ * @short_description: Simple proxy resolver implementation
+ * @include: gio/gio.h
+ * @see_also: g_socket_client_set_proxy_resolver()
+ *
+ * #GSimpleProxyResolver is a simple #GProxyResolver implementation
+ * that handles a single default proxy, multiple URI-scheme-specific
+ * proxies, and a list of hosts that proxies should not be used for.
+ *
+ * #GSimpleProxyResolver is never the default proxy resolver, but it
+ * can be used as the base class for another proxy resolver
+ * implementation, or it can be created and used manually, such as
+ * with g_socket_client_set_proxy_resolver().
+ *
+ * Since: 2.36
+ */
+
+
+/**
* SECTION:gsocket
* @short_description: Low-level socket object
* @include: gio/gio.h
- * @see_also: #GInitable
+ * @see_also: #GInitable, <link linkend="gio-gnetworking.h">gnetworking.h</link>
*
* A #GSocket is a low-level networking primitive. It is a more or less
* direct mapping of the BSD socket API in a portable GObject based API.
@@ -6519,7 +6886,7 @@
* GSocketAddress *sockaddr;
* GError *conn_error = NULL;
*
- * addr = g_network_address_new ("www.gnome.org", 80);
+ * addr = g_network_address_new (hostname, port);
* enumerator = g_socket_connectable_enumerate (addr);
* g_object_unref (addr);
*
@@ -6696,6 +7063,534 @@
/**
+ * SECTION:gtask
+ * @short_description: Cancellable synchronous or asynchronous task and result
+ * @include: gio/gio.h
+ * @see_also: #GAsyncResult
+ *
+ * <para>
+ * A #GTask represents and manages a cancellable "task".
+ * </para>
+ * <refsect2>
+ * <title>Asynchronous operations</title>
+ * <para>
+ * The most common usage of #GTask is as a #GAsyncResult, to
+ * manage data during an asynchronous operation. You call
+ * g_task_new() in the "start" method, followed by
+ * g_task_set_task_data() and the like if you need to keep some
+ * additional data associated with the task, and then pass the
+ * task object around through your asynchronous operation.
+ * Eventually, you will call a method such as
+ * g_task_return_pointer() or g_task_return_error(), which will
+ * save the value you give it and then invoke the task's callback
+ * function (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 use g_task_propagate_pointer() or the like to extract
+ * the return value.
+ * </para>
+ * <example id="gtask-async"><title>GTask as a GAsyncResult</title>
+ * <programlisting>
+ * typedef struct {
+ * CakeFrostingType frosting;
+ * char *message;
+ * } DecorationData;
+ *
+ * static void
+ * decoration_data_free (DecorationData *decoration)
+ * {
+ * g_free (decoration->message);
+ * g_slice_free (DecorationData, decoration);
+ * }
+ *
+ * static void
+ * baked_cb (Cake *cake,
+ * gpointer user_data)
+ * {
+ * GTask *task = user_data;
+ * DecorationData *decoration = g_task_get_task_data (task);
+ * GError *error = NULL;
+ *
+ * if (cake == NULL)
+ * {
+ * g_task_return_new_error (task, BAKER_ERROR, BAKER_ERROR_NO_FLOUR,
+ * "Go to the supermarket");
+ * g_object_unref (task);
+ * return;
+ * }
+ *
+ * if (!cake_decorate (cake, decoration->frosting, decoration->message, &error))
+ * {
+ * g_object_unref (cake);
+ * /&ast; g_task_return_error() takes ownership of error &ast;/
+ * g_task_return_error (task, error);
+ * g_object_unref (task);
+ * return;
+ * }
+ *
+ * g_task_return_pointer (result, cake, g_object_unref);
+ * g_object_unref (task);
+ * }
+ *
+ * void
+ * baker_bake_cake_async (Baker *self,
+ * guint radius,
+ * CakeFlavor flavor,
+ * CakeFrostingType frosting,
+ * const char *message,
+ * GCancellable *cancellable,
+ * GAsyncReadyCallback callback,
+ * gpointer user_data)
+ * {
+ * GTask *task;
+ * DecorationData *decoration;
+ * Cake *cake;
+ *
+ * task = g_task_new (self, cancellable, callback, user_data);
+ * if (radius < 3)
+ * {
+ * g_task_return_new_error (task, BAKER_ERROR, BAKER_ERROR_TOO_SMALL,
+ * "%ucm radius cakes are silly",
+ * radius);
+ * g_object_unref (task);
+ * return;
+ * }
+ *
+ * cake = _baker_get_cached_cake (self, radius, flavor, frosting, message);
+ * if (cake != NULL)
+ * {
+ * /&ast; _baker_get_cached_cake() returns a reffed cake &ast;/
+ * g_task_return_pointer (task, cake, g_object_unref);
+ * g_object_unref (task);
+ * return;
+ * }
+ *
+ * decoration = g_slice_new (DecorationData);
+ * decoration->frosting = frosting;
+ * decoration->message = g_strdup (message);
+ * g_task_set_task_data (task, decoration, (GDestroyNotify) decoration_data_free);
+ *
+ * _baker_begin_cake (self, radius, flavor, cancellable, baked_cb, task);
+ * }
+ *
+ * Cake *
+ * baker_bake_cake_finish (Baker *self,
+ * GAsyncResult *result,
+ * GError **error)
+ * {
+ * g_return_val_if_fail (g_task_is_valid (result, self), NULL);
+ *
+ * return g_task_propagate_pointer (G_TASK (result), error);
+ * }
+ * </programlisting>
+ * </example>
+ * </refsect2>
+ * <refsect2>
+ * <title>Chained asynchronous operations</title>
+ * <para>
+ * #GTask also tries to simplify asynchronous operations that
+ * internally chain together several smaller asynchronous
+ * operations. g_task_get_cancellable(), g_task_get_context(), and
+ * g_task_get_priority() allow you to get back the task's
+ * #GCancellable, #GMainContext, and <link
+ * linkend="io-priority">I/O priority</link> when starting a new
+ * subtask, so you don't have to keep track of them yourself.
+ * g_task_attach_source() simplifies the case of waiting for a
+ * source to fire (automatically using the correct #GMainContext
+ * and priority).
+ * </para>
+ * <example id="gtask-chained"><title>Chained asynchronous operations</title>
+ * <programlisting>
+ * typedef struct {
+ * Cake *cake;
+ * CakeFrostingType frosting;
+ * char *message;
+ * } BakingData;
+ *
+ * static void
+ * decoration_data_free (BakingData *bd)
+ * {
+ * if (bd->cake)
+ * g_object_unref (bd->cake);
+ * g_free (bd->message);
+ * g_slice_free (BakingData, bd);
+ * }
+ *
+ * static void
+ * decorated_cb (Cake *cake,
+ * GAsyncResult *result,
+ * gpointer user_data)
+ * {
+ * GTask *task = user_data;
+ * GError *error = NULL;
+ *
+ * if (!cake_decorate_finish (cake, result, &error))
+ * {
+ * g_object_unref (cake);
+ * g_task_return_error (task, error);
+ * g_object_unref (task);
+ * return;
+ * }
+ *
+ * /&ast; baking_data_free() will drop its ref on the cake, so
+ * &ast; we have to take another here to give to the caller.
+ * &ast;/
+ * g_task_return_pointer (result, g_object_ref (cake), g_object_unref);
+ * g_object_unref (task);
+ * }
+ *
+ * static void
+ * decorator_ready (gpointer user_data)
+ * {
+ * GTask *task = user_data;
+ * BakingData *bd = g_task_get_task_data (task);
+ *
+ * cake_decorate_async (bd->cake, bd->frosting, bd->message,
+ * g_task_get_cancellable (task),
+ * decorated_cb, task);
+ * }
+ *
+ * static void
+ * baked_cb (Cake *cake,
+ * gpointer user_data)
+ * {
+ * GTask *task = user_data;
+ * BakingData *bd = g_task_get_task_data (task);
+ * GError *error = NULL;
+ *
+ * if (cake == NULL)
+ * {
+ * g_task_return_new_error (task, BAKER_ERROR, BAKER_ERROR_NO_FLOUR,
+ * "Go to the supermarket");
+ * g_object_unref (task);
+ * return;
+ * }
+ *
+ * bd->cake = cake;
+ *
+ * /&ast; Bail out now if the user has already cancelled &ast;/
+ * if (g_task_return_error_if_cancelled (g_task_get_cancellable (task)))
+ * {
+ * g_object_unref (task);
+ * return;
+ * }
+ *
+ * if (cake_decorator_available (cake))
+ * decorator_ready (task);
+ * else
+ * {
+ * GSource *source;
+ *
+ * source = cake_decorator_wait_source_new (cake);
+ * /&ast; Attach @source to @task's GMainContext and have it call
+ * &ast; decorator_ready() when it is ready.
+ * &ast;/
+ * g_task_attach_source (task, source,
+ * G_CALLBACK (decorator_ready));
+ * g_source_unref (source);
+ * }
+ * }
+ *
+ * void
+ * baker_bake_cake_async (Baker *self,
+ * guint radius,
+ * CakeFlavor flavor,
+ * CakeFrostingType frosting,
+ * const char *message,
+ * gint priority,
+ * GCancellable *cancellable,
+ * GAsyncReadyCallback callback,
+ * gpointer user_data)
+ * {
+ * GTask *task;
+ * BakingData *bd;
+ *
+ * task = g_task_new (self, cancellable, callback, user_data);
+ * g_task_set_priority (task, priority);
+ *
+ * bd = g_slice_new0 (BakingData);
+ * bd->frosting = frosting;
+ * bd->message = g_strdup (message);
+ * g_task_set_task_data (task, bd, (GDestroyNotify) baking_data_free);
+ *
+ * _baker_begin_cake (self, radius, flavor, cancellable, baked_cb, task);
+ * }
+ *
+ * Cake *
+ * baker_bake_cake_finish (Baker *self,
+ * GAsyncResult *result,
+ * GError **error)
+ * {
+ * g_return_val_if_fail (g_task_is_valid (result, self), NULL);
+ *
+ * return g_task_propagate_pointer (G_TASK (result), error);
+ * }
+ * </programlisting>
+ * </example>
+ * </refsect2>
+ * <refsect2>
+ * <title>Asynchronous operations from synchronous ones</title>
+ * <para>
+ * You can use g_task_run_in_thread() to turn a synchronous
+ * operation into an asynchronous one, by running it in a thread
+ * which will then dispatch the result back to the caller's
+ * #GMainContext when it completes.
+ * </para>
+ * <example id="gtask-run-in-thread"><title>g_task_run_in_thread()</title>
+ * <programlisting>
+ * typedef struct {
+ * guint radius;
+ * CakeFlavor flavor;
+ * CakeFrostingType frosting;
+ * char *message;
+ * } CakeData;
+ *
+ * static void
+ * cake_data_free (CakeData *cake_data)
+ * {
+ * g_free (cake_data->message);
+ * g_slice_free (CakeData, cake_data);
+ * }
+ *
+ * static void
+ * bake_cake_thread (GTask *task,
+ * gpointer source_object,
+ * gpointer task_data,
+ * GCancellable *cancellable)
+ * {
+ * Baker *self = source_object;
+ * CakeData *cake_data = task_data;
+ * Cake *cake;
+ * GError *error = NULL;
+ *
+ * cake = bake_cake (baker, cake_data->radius, cake_data->flavor,
+ * cake_data->frosting, cake_data->message,
+ * cancellable, &error);
+ * if (cake)
+ * g_task_return_pointer (task, cake, g_object_unref);
+ * else
+ * g_task_return_error (task, error);
+ * }
+ *
+ * void
+ * baker_bake_cake_async (Baker *self,
+ * guint radius,
+ * CakeFlavor flavor,
+ * CakeFrostingType frosting,
+ * const char *message,
+ * GCancellable *cancellable,
+ * GAsyncReadyCallback callback,
+ * gpointer user_data)
+ * {
+ * CakeData *cake_data;
+ * GTask *task;
+ *
+ * cake_data = g_slice_new (CakeData);
+ * cake_data->radius = radius;
+ * cake_data->flavor = flavor;
+ * cake_data->frosting = frosting;
+ * cake_data->message = g_strdup (message);
+ * task = g_task_new (self, cancellable, callback, user_data);
+ * g_task_set_task_data (task, cake_data, (GDestroyNotify) cake_data_free);
+ * g_task_run_in_thread (task, bake_cake_thread);
+ * }
+ *
+ * Cake *
+ * baker_bake_cake_finish (Baker *self,
+ * GAsyncResult *result,
+ * GError **error)
+ * {
+ * g_return_val_if_fail (g_task_is_valid (result, self), NULL);
+ *
+ * return g_task_propagate_pointer (G_TASK (result), error);
+ * }
+ * </programlisting>
+ * </example>
+ * </refsect2>
+ * <refsect2>
+ * <title>Adding cancellability to uncancellable tasks</title>
+ * <para>
+ * Finally, g_task_run_in_thread() and g_task_run_in_thread_sync()
+ * can be used to turn an uncancellable operation into a
+ * cancellable one. If you call g_task_set_return_on_cancel(),
+ * passing %TRUE, then if the task's #GCancellable is cancelled,
+ * it will return control back to the caller immediately, while
+ * allowing the task thread to continue running in the background
+ * (and simply discarding its result when it finally does finish).
+ * Provided that the task thread is careful about how it uses
+ * locks and other externally-visible resources, this allows you
+ * to make "GLib-friendly" asynchronous and cancellable
+ * synchronous variants of blocking APIs.
+ * </para>
+ * <example id="gtask-cancellable"><title>g_task_set_return_on_cancel()</title>
+ * <programlisting>
+ * static void
+ * bake_cake_thread (GTask *task,
+ * gpointer source_object,
+ * gpointer task_data,
+ * GCancellable *cancellable)
+ * {
+ * Baker *self = source_object;
+ * CakeData *cake_data = task_data;
+ * Cake *cake;
+ * GError *error = NULL;
+ *
+ * cake = bake_cake (baker, cake_data->radius, cake_data->flavor,
+ * cake_data->frosting, cake_data->message,
+ * &error);
+ * if (error)
+ * {
+ * g_task_return_error (task, error);
+ * return;
+ * }
+ *
+ * /&ast; If the task has already been cancelled, then we don't
+ * &ast; want to add the cake to the cake cache. Likewise, we don't
+ * &ast; want to have the task get cancelled in the middle of
+ * &ast; updating the cache. g_task_set_return_on_cancel() will
+ * &ast; return %TRUE here if it managed to disable return-on-cancel,
+ * &ast; or %FALSE if the task was cancelled before it could.
+ * &ast;/
+ * if (g_task_set_return_on_cancel (task, FALSE))
+ * {
+ * /&ast; If the caller cancels at this point, their
+ * &ast; GAsyncReadyCallback won't be invoked until we return,
+ * &ast; so we don't have to worry that this code will run at
+ * &ast; the same time as that code does. But if there were
+ * &ast; other functions that might look at the cake cache,
+ * &ast; then we'd probably need a GMutex here as well.
+ * &ast;/
+ * baker_add_cake_to_cache (baker, cake);
+ * g_task_return_pointer (task, cake, g_object_unref);
+ * }
+ * }
+ *
+ * void
+ * baker_bake_cake_async (Baker *self,
+ * guint radius,
+ * CakeFlavor flavor,
+ * CakeFrostingType frosting,
+ * const char *message,
+ * GCancellable *cancellable,
+ * GAsyncReadyCallback callback,
+ * gpointer user_data)
+ * {
+ * CakeData *cake_data;
+ * GTask *task;
+ *
+ * cake_data = g_slice_new (CakeData);
+ * /&ast; ... &ast;/
+ *
+ * task = g_task_new (self, cancellable, callback, user_data);
+ * g_task_set_task_data (task, cake_data, (GDestroyNotify) cake_data_free);
+ * g_task_set_return_on_cancel (task, TRUE);
+ * g_task_run_in_thread (task, bake_cake_thread);
+ * }
+ *
+ * Cake *
+ * baker_bake_cake_sync (Baker *self,
+ * guint radius,
+ * CakeFlavor flavor,
+ * CakeFrostingType frosting,
+ * const char *message,
+ * GCancellable *cancellable,
+ * GError **error)
+ * {
+ * CakeData *cake_data;
+ * GTask *task;
+ * Cake *cake;
+ *
+ * cake_data = g_slice_new (CakeData);
+ * /&ast; ... &ast;/
+ *
+ * task = g_task_new (self, cancellable, NULL, NULL);
+ * g_task_set_task_data (task, cake_data, (GDestroyNotify) cake_data_free);
+ * g_task_set_return_on_cancel (task, TRUE);
+ * g_task_run_in_thread_sync (task, bake_cake_thread);
+ *
+ * cake = g_task_propagate_pointer (task, error);
+ * g_object_unref (task);
+ * return cake;
+ * }
+ * </programlisting>
+ * </example>
+ * </refsect2>
+ * <refsect2>
+ * <title>Porting from <literal>GSimpleAsyncResult</literal></title>
+ * <para>
+ * #GTask's API attempts to be simpler than #GSimpleAsyncResult's
+ * in several ways:
+ * </para>
+ * <itemizedlist>
+ * <listitem><para>
+ * You can save task-specific data with g_task_set_task_data(), and
+ * retrieve it later with g_task_get_task_data(). This replaces the
+ * abuse of g_simple_async_result_set_op_res_gpointer() for the same
+ * purpose with #GSimpleAsyncResult.
+ * </para></listitem>
+ * <listitem><para>
+ * In addition to the task data, #GTask also keeps track of the
+ * <link linkend="io-priority">priority</link>, #GCancellable, and
+ * #GMainContext associated with the task, so tasks that consist of
+ * a chain of simpler asynchronous operations will have easy access
+ * to those values when starting each sub-task.
+ * </para></listitem>
+ * <listitem><para>
+ * g_task_return_error_if_cancelled() provides simplified
+ * handling for cancellation. In addition, cancellation
+ * overrides any other #GTask return value by default, like
+ * #GSimpleAsyncResult does when
+ * g_simple_async_result_set_check_cancellable() is called.
+ * (You can use g_task_set_check_cancellable() to turn off that
+ * behavior.) On the other hand, g_task_run_in_thread()
+ * guarantees that it will always run your
+ * <literal>task_func</literal>, even if the task's #GCancellable
+ * is already cancelled before the task gets a chance to run;
+ * you can start your <literal>task_func</literal> with a
+ * g_task_return_error_if_cancelled() check if you need the
+ * old behavior.
+ * </para></listitem>
+ * <listitem><para>
+ * The "return" methods (eg, g_task_return_pointer())
+ * automatically cause the task to be "completed" as well, and
+ * there is no need to worry about the "complete" vs "complete
+ * in idle" distinction. (#GTask automatically figures out
+ * whether the task's callback can be invoked directly, or
+ * if it needs to be sent to another #GMainContext, or delayed
+ * until the next iteration of the current #GMainContext.)
+ * </para></listitem>
+ * <listitem><para>
+ * The "finish" functions for #GTask-based operations are generally
+ * much simpler than #GSimpleAsyncResult ones, normally consisting
+ * of only a single call to g_task_propagate_pointer() or the like.
+ * Since g_task_propagate_pointer() "steals" the return value from
+ * the #GTask, it is not necessary to juggle pointers around to
+ * prevent it from being freed twice.
+ * </para></listitem>
+ * <listitem><para>
+ * With #GSimpleAsyncResult, it was common to call
+ * g_simple_async_result_propagate_error() from the
+ * <literal>_finish()</literal> wrapper function, and have
+ * virtual method implementations only deal with successful
+ * returns. This behavior is deprecated, because it makes it
+ * difficult for a subclass to chain to a parent class's async
+ * methods. Instead, the wrapper function should just be a
+ * simple wrapper, and the virtual method should call an
+ * appropriate <literal>g_task_propagate_</literal> function.
+ * Note that wrapper methods can now use
+ * g_async_result_legacy_propagate_error() to do old-style
+ * #GSimpleAsyncResult error-returning behavior, and
+ * g_async_result_is_tagged() to check if a result is tagged as
+ * having come from the <literal>_async()</literal> wrapper
+ * function (for "short-circuit" results, such as when passing
+ * 0 to g_input_stream_read_async()).
+ * </para></listitem>
+ * </itemizedlist>
+ * </refsect2>
+ */
+
+
+/**
* SECTION:gtcpconnection
* @title: GTcpConnection
* @short_description: A TCP GSocketConnection
@@ -6711,7 +7606,7 @@
/**
* SECTION:gtcpwrapperconnection
* @title: GTcpWrapperConnection
- * @short_description: wrapper for non-GSocketConnection-based, GSocket-based GIOStreams
+ * @short_description: Wrapper for non-GSocketConnection-based, GSocket-based GIOStreams
* @see_also: #GSocketConnection.
*
* A #GTcpWrapperConnection can be used to wrap a #GIOStream that is
@@ -6729,7 +7624,83 @@
* @short_description: D-Bus testing helper
* @include: gio/gio.h
*
- * Helper to test D-Bus code wihtout messing up with user' session bus.
+ * A helper class for testing code which uses D-Bus without touching the user's
+ * session bus.
+ *
+ * <refsect2 id="gio-D-Bus-Test-Scaffolding">
+ * <title>Creating unit tests using GTestDBus</title>
+ * <para>
+ * Testing of D-Bus services can be tricky because normally we only ever run
+ * D-Bus services over an existing instance of the D-Bus daemon thus we
+ * usually don't activate D-Bus services that are not yet installed into the
+ * target system. The #GTestDBus object makes this easier for us by taking care
+ * of the lower level tasks such as running a private D-Bus daemon and looking
+ * up uninstalled services in customizable locations, typically in your source code tree.
+ * </para>
+ * <para>
+ * The first thing you will need is a separate service description file for the
+ * D-Bus daemon. Typically a 'services' subdirectory of your 'tests' directory
+ * is a good place to put this file.
+ * </para>
+ * <para>
+ * The service file should list your service along with an absolute path to the
+ * uninstalled service executable in your source tree. Using autotools we would
+ * achieve this by adding a file such as 'my-server.service.in' in the services
+ * directory and have it processed by configure.
+ * <informalexample><programlisting>
+ * [D-BUS Service]
+ * Name=org.gtk.GDBus.Examples.ObjectManager
+ * Exec=@abs_top_builddir@/gio/tests/gdbus-example-objectmanager-server
+ * </programlisting></informalexample>
+ * You will also need to indicate this service directory in your test
+ * fixtures, so you will need to pass the path while compiling your
+ * test cases. Typically this is done with autotools with an added
+ * preprocessor flag specified to compile your tests such as:
+ * <informalexample><programlisting>
+ * -DTEST_SERVICES=\""$(abs_top_builddir)/tests/services"\"
+ * </programlisting></informalexample>
+ * </para>
+ * <para>
+ * Once you have a service definition file which is local to your source tree,
+ * you can proceed to setup a GTest fixture using the GTestDBus scaffolding.
+ * <example id="gdbus-test-fixture">
+ * <title>Test Fixture for D-Bus services</title>
+ * <programlisting>
+ * <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="text" href="../../../../gio/tests/gdbus-test-fixture.c">
+ * <xi:fallback>FIXME: MISSING XINCLUDE CONTENT</xi:fallback>
+ * </xi:include>
+ * </programlisting>
+ * </example>
+ * </para>
+ * <para>
+ * Note that these examples only deal with isolating the D-Bus aspect of your
+ * service. To successfully run isolated unit tests on your service you may need
+ * some additional modifications to your test case fixture. For example; if your
+ * service uses GSettings and installs a schema then it is important that your test service
+ * not load the schema in the ordinary installed location (chances are that your service
+ * and schema files are not yet installed, or worse; there is an older version of the
+ * schema file sitting in the install location).
+ * </para>
+ * <para>
+ * Most of the time we can work around these obstacles using the environment. Since the
+ * environment is inherited by the D-Bus daemon created by GTestDBus and then in turn
+ * inherited by any services the D-Bus daemon activates, using the setup routine for your
+ * fixture is a practical place to help sandbox your runtime environment. For the rather
+ * typical GSettings case we can work around this by setting GSETTINGS_SCHEMA_DIR to the
+ * in tree directory holding your schemas in the above fixture_setup() routine.
+ * </para>
+ * <para>
+ * The GSettings schemas need to be locally pre-compiled for this to work. This can be achieved
+ * by compiling the schemas locally as a step before running test cases, an autotools setup might
+ * do the following in the directory holding schemas:
+ * <informalexample><programlisting>
+ * all-am:
+ * $(GLIB_COMPILE_SCHEMAS) .
+ *
+ * CLEANFILES += gschemas.compiled
+ * </programlisting></informalexample>
+ * </para>
+ * </refsect2>
*/
@@ -6810,8 +7781,6 @@
* @title: GTlsBackend
* @short_description: TLS backend implementation
* @include: gio/gio.h
- *
- *
*/
@@ -6877,7 +7846,7 @@
* @include: gio/gio.h
*
* #GTlsFileDatabase is implemented by #GTlsDatabase objects which load
- * their certificate information from a file. It is in interface which
+ * their certificate information from a file. It is an interface which
* TLS library specific subtypes implement.
*
* Since: 2.30
@@ -7110,9 +8079,9 @@
*
* Mounting a #GVolume instance is an asynchronous operation. For more
* information about asynchronous operations, see #GAsyncResult and
- * #GSimpleAsyncResult. To mount a #GVolume, first call
- * g_volume_mount() with (at least) the #GVolume instance, optionally
- * a #GMountOperation object and a #GAsyncReadyCallback.
+ * #GTask. To mount a #GVolume, first call g_volume_mount() with (at
+ * least) the #GVolume instance, optionally a #GMountOperation object
+ * and a #GAsyncReadyCallback.
*
* Typically, one will only want to pass %NULL for the
* #GMountOperation if automounting all volumes when a desktop session
@@ -8685,6 +9654,31 @@
/**
+ * _g_io_module_get_default_type:
+ * @extension_point: the name of an extension point
+ * @envvar: (allow-none): the name of an environment variable to override the default implementation.
+ * @is_supported_offset: a vtable offset, or zero
+ *
+ * Retrieves the default class implementing @extension_point.
+ *
+ * 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.
+ *
+ * The result is cached after it is generated the first time, and
+ * the function is thread-safe.
+ *
+ * Returns: (transfer none): an object implementing @extension_point, or %NULL if there are no usable implementations.
+ */
+
+
+/**
* g_action_activate:
* @action: a #GAction
* @parameter: (allow-none): the parameter to the activation
@@ -8695,6 +9689,8 @@
* the parameter type given at construction time). If the parameter
* type was %NULL then @parameter must also be %NULL.
*
+ * If the @parameter GVariant is floating, it is consumed.
+ *
* Since: 2.28
*/
@@ -9125,7 +10121,7 @@
/**
* g_action_map_add_action_entries:
* @action_map: a #GActionMap
- * @entries: a pointer to the first item in an array of #GActionEntry structs
+ * @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
*
@@ -9202,6 +10198,82 @@
/**
+ * g_action_name_is_valid:
+ * @action_name: an potential action name
+ *
+ * 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.
+ *
+ * It is an error to call this function with a non-utf8 @action_name.
+ * @action_name must not be %NULL.
+ *
+ * Returns: %TRUE if @action_name is valid
+ * Since: 2.38
+ */
+
+
+/**
+ * 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.
+ *
+ * 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 '.'.
+ *
+ * Returns: %TRUE if successful, else %FALSE with @error set
+ * Since: 2.38
+ */
+
+
+/**
+ * g_action_print_detailed_name:
+ * @action_name: a valid action name
+ * @target_value: (allow-none): 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_action_name(). It will produce a string that
+ * can be parsed back to the @action_name and @target_value by that
+ * function.
+ *
+ * See that function for the types of strings that will be printed by
+ * this function.
+ *
+ * Returns: a detailed format string
+ * Since: 2.38
+ */
+
+
+/**
* g_app_info_add_supports_type:
* @appinfo: a #GAppInfo.
* @content_type: a string.
@@ -9751,6 +10823,23 @@
/**
+ * g_application_command_line_create_file_for_arg:
+ * @cmdline: a #GApplicationCommandLine
+ * @arg: an argument from @cmdline
+ *
+ * Creates a #GFile corresponding to a filename that was given as part
+ * of the invocation of @cmdline.
+ *
+ * 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): a new #GFile
+ * Since: 2.36
+ */
+
+
+/**
* g_application_command_line_get_arguments:
* @cmdline: a #GApplicationCommandLine
* @argc: (out) (allow-none): the length of the arguments array, or %NULL
@@ -9852,6 +10941,26 @@
/**
+ * 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.
+ *
+ * You must only call this function once per commandline invocation.
+ *
+ * Returns: (transfer full): a #GInputStream for stdin
+ * Since: 2.34
+ */
+
+
+/**
* g_application_command_line_getenv:
* @cmdline: a #GApplicationCommandLine
* @name: the environment variable to get
@@ -10111,14 +11220,31 @@
/**
+ * 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).
+ *
+ * To cancel the busy indication, use g_application_unmark_busy().
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_application_new:
* @application_id: (allow-none): the application id
* @flags: the application flags
*
* Creates a new #GApplication instance.
*
- * This function calls g_type_init() for you.
- *
* If non-%NULL, the application id must be valid. See
* g_application_id_is_valid().
*
@@ -10297,9 +11423,19 @@
* non-zero then the default main context is iterated until the use count
* falls to zero, at which point 0 is returned.
*
- * If the %G_APPLICATION_IS_SERVICE flag is set, then the exiting at
- * use count of zero is delayed for a while (ie: the instance stays
- * around to provide its <emphasis>service</emphasis> to others).
+ * 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.
+ *
+ * This function sets the prgname (g_set_prgname()), if not already set,
+ * to the basename of argv[0]. Since 2.38, if %G_APPLICATION_IS_SERVICE
+ * is specified, the prgname is set to the application ID. The main
+ * impact of this is is that the wmclass of windows created by Gtk+ will
+ * be set accordingly, which helps the window manager determine which
+ * application is showing the window.
*
* Returns: the exit status
* Since: 2.28
@@ -10386,6 +11522,22 @@
/**
+ * g_application_unmark_busy:
+ * @application: a #GApplication
+ *
+ * Decreases the busy count of @application.
+ *
+ * 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_async_initable_init_async:
* @initable: a #GAsyncInitable.
* @io_priority: the <link linkend="io-priority">I/O priority</link> of the operation.
@@ -10475,7 +11627,7 @@
* Finishes the async construction for the various g_async_initable_new
* calls, returning the created object or %NULL on error.
*
- * Returns: (transfer full): a newly created #GObject, or %NULL on error. Free with g_object_unref().
+ * Returns: (type GObject.Object) (transfer full): a newly created #GObject, or %NULL on error. Free with g_object_unref().
* Since: 2.22
*/
@@ -11117,6 +12269,28 @@
/**
+ * g_bytes_icon_get_bytes:
+ * @icon: a #GIcon.
+ *
+ * Gets the #GBytes associated with the given @icon.
+ *
+ * Returns: (transfer none): a #GBytes, or %NULL.
+ * Since: 2.38
+ */
+
+
+/**
+ * g_bytes_icon_new:
+ * @bytes: a #GBytes.
+ *
+ * Creates a new icon for a bytes.
+ *
+ * Returns: (transfer full) (type GBytesIcon): a #GIcon for the given @bytes, or %NULL on error.
+ * Since: 2.38
+ */
+
+
+/**
* g_cancellable_cancel:
* @cancellable: a #GCancellable object.
*
@@ -11736,6 +12910,23 @@
/**
+ * g_credentials_get_unix_pid:
+ * @credentials: A #GCredentials
+ * @error: Return location for error or %NULL.
+ *
+ * Tries to get the UNIX process 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 process ID.
+ *
+ * Returns: The UNIX process ID, or -1 if @error is set.
+ * Since: 2.36
+ */
+
+
+/**
* g_credentials_get_unix_user:
* @credentials: A #GCredentials
* @error: Return location for error or %NULL.
@@ -12386,6 +13577,23 @@
/**
+ * 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.
+ *
+ * For instance, if @string is <code>/run/bus-for-:0</code>,
+ * this function would return <code>/run/bus-for-%3A0</code>,
+ * which could be used in a D-Bus address like
+ * <code>unix:nonce-tcp:host=127.0.0.1,port=42,noncefile=/run/bus-for-%3A0</code>.
+ *
+ * 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: (allow-none): A #GCancellable or %NULL.
@@ -12461,7 +13669,7 @@
*
* Looks up the value of an annotation.
*
- * This cost of this function is O(n) in number of annotations.
+ * The cost of this function is O(n) in number of annotations.
*
* Returns: The value or %NULL if not found. Do not free, it is owned by @annotations.
* Since: 2.26
@@ -12910,7 +14118,7 @@
* The implemented D-Bus API should be considered private.
* It is subject to change in the future.
*
- * An object path can only have one action group exported on it. If this
+ * 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).
*
@@ -13545,6 +14753,11 @@
* 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.
+ *
* Returns: A subscription identifier that can be used with g_dbus_connection_signal_unsubscribe().
* Since: 2.26
*/
@@ -14011,7 +15224,7 @@
*
* Looks up information about a method.
*
- * This cost of this function is O(n) in number of methods unless
+ * The cost of this function is O(n) in number of methods unless
* g_dbus_interface_info_cache_build() has been used on @info.
*
* Returns: (transfer none): A #GDBusMethodInfo or %NULL if not found. Do not free, it is owned by @info.
@@ -14026,7 +15239,7 @@
*
* Looks up information about a property.
*
- * This cost of this function is O(n) in number of properties unless
+ * The cost of this function is O(n) in number of properties unless
* g_dbus_interface_info_cache_build() has been used on @info.
*
* Returns: (transfer none): A #GDBusPropertyInfo or %NULL if not found. Do not free, it is owned by @info.
@@ -14041,7 +15254,7 @@
*
* Looks up information about a signal.
*
- * This cost of this function is O(n) in number of signals unless
+ * The cost of this function is O(n) in number of signals unless
* g_dbus_interface_info_cache_build() has been used on @info.
*
* Returns: (transfer none): A #GDBusSignalInfo or %NULL if not found. Do not free, it is owned by @info.
@@ -14209,7 +15422,7 @@
* @interface_: A #GDBusInterfaceSkeleton.
* @connection: A #GDBusConnection.
*
- * Checks if @interface_ is export on @connection.
+ * Checks if @interface_ is exported on @connection.
*
* Returns: %TRUE if @interface_ is exported on @connection, %FALSE otherwise.
* Since: 2.32
@@ -15025,6 +16238,11 @@
*
* 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
*/
@@ -15054,6 +16272,11 @@
*
* 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
*/
@@ -15094,6 +16317,27 @@
/**
+ * 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.
*
@@ -15271,7 +16515,7 @@
*
* Looks up information about an interface.
*
- * This cost of this function is O(n) in number of interfaces.
+ * The cost of this function is O(n) in number of interfaces.
*
* Returns: (transfer none): A #GDBusInterfaceInfo or %NULL if not found. Do not free, it is owned by @info.
* Since: 2.26
@@ -15382,7 +16626,8 @@
* g_dbus_object_manager_client_get_name:
* @manager: A #GDBusObjectManagerClient
*
- * Gets the name that @manager is for.
+ * 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
@@ -15508,7 +16753,7 @@
* g_dbus_object_manager_client_new_sync:
* @connection: A #GDBusConnection.
* @flags: Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.
- * @name: The owner of the control object (unique or well-known name).
+ * @name: (allow-none): 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: (allow-none): A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.
* @get_proxy_type_user_data: User data to pass to @get_proxy_type_func.
@@ -16435,6 +17680,36 @@
/**
+ * 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.
+ *
+ * This corresponds to the "Name" key within the keyfile group for the
+ * action.
+ *
+ * Returns: (transfer full): the locale-specific action name
+ * Since: 2.38
+ */
+
+
+/**
+ * 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.
+ *
+ * The @key is looked up in the "Desktop Entry" group.
+ *
+ * Returns: the boolean value, or %FALSE if the key is not found
+ * Since: 2.36
+ */
+
+
+/**
* g_desktop_app_info_get_categories:
* @info: a #GDesktopAppInfo
*
@@ -16536,6 +17811,59 @@
/**
+ * g_desktop_app_info_get_string:
+ * @info: a #GDesktopAppInfo
+ * @key: the key to look up
+ *
+ * Looks up a string value in the keyfile backing @info.
+ *
+ * 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_desktop_app_info_has_key:
+ * @info: a #GDesktopAppInfo
+ * @key: the key to look up
+ *
+ * Returns whether @key exists in the "Desktop Entry" group
+ * of the keyfile backing @info.
+ *
+ * Returns: %TRUE if the @key exists
+ * 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: (allow-none): a #GAppLaunchContext
+ *
+ * Activates the named application action.
+ *
+ * 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_desktop_app_info_launch_uris_as_manager:
* @appinfo: a #GDesktopAppInfo
* @uris: (element-type utf8): List of URIs
@@ -16552,21 +17880,36 @@
* launch applications. Ordinary applications should use
* g_app_info_launch_uris().
*
- * In contrast to g_app_info_launch_uris(), all processes created will
- * always be run directly as children as if by the UNIX fork()/exec()
- * calls.
+ * If the application is launched via traditional UNIX fork()/exec()
+ * 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.
*
- * This guarantee allows additional control over the exact environment
- * of the child processes, which is provided via a setup function
- * @user_setup, as well as the process identifier of each child process
- * via @pid_callback. See g_spawn_async() for more information about the
- * semantics of the @user_setup function.
+ * 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_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.
+ *
+ * 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_desktop_app_info_lookup_get_default_for_uri_scheme:
* @lookup: a #GDesktopAppInfoLookup
* @uri_scheme: a string containing a URI scheme.
@@ -17637,6 +18980,7 @@
* Finishes deleting a file started with g_file_delete_async().
*
* Virtual: delete_file_finish
+ * Returns: %TRUE if the file was deleted. %FALSE otherwise.
* Since: 2.34
*/
@@ -17766,7 +19110,7 @@
* returned.
*
* 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_FILE_ERROR_NOTDIR
+ * 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 #GFileEnumerator if successful, %NULL on error. Free the returned object with g_object_unref().
@@ -17865,6 +19209,27 @@
/**
+ * g_file_enumerator_get_child:
+ * @enumerator: a #GFileEnumerator
+ * @info: a #GFileInfo gotten from g_file_enumerator_next_file() or the async equivalents.
+ *
+ * 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 convenience method that's equivalent to:
+ * |[
+ * 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_enumerator_get_container:
* @enumerator: a #GFileEnumerator
*
@@ -17906,6 +19271,9 @@
* 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.
@@ -17918,7 +19286,7 @@
* g_file_enumerator_next_files_async:
* @enumerator: a #GFileEnumerator.
* @num_files: the number of file info objects to request
- * @io_priority: the <link linkend="gioscheduler">io priority</link> of the request.
+ * @io_priority: the <link linkend="io-priority">io priority</link> of the request.
* @cancellable: (allow-none): 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
@@ -17927,6 +19295,9 @@
* 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
@@ -18466,6 +19837,19 @@
/**
+ * g_file_info_get_deletion_date:
+ * @info: a #GFileInfo.
+ *
+ * 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: a #GDateTime, or %NULL.
+ * Since: 2.36
+ */
+
+
+/**
* g_file_info_get_display_name:
* @info: a #GFileInfo.
*
@@ -19223,6 +20607,36 @@
/**
+ * g_file_make_directory_async:
+ * @file: input #GFile
+ * @io_priority: the <link linkend="io-priority">I/O priority</link> of the request
+ * @cancellable: (allow-none): 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 creates a directory.
+ *
+ * Virtual: make_directory_async
+ * Since: 2.38
+ */
+
+
+/**
+ * g_file_make_directory_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
+ *
+ * Finishes an asynchronous directory creation, started with
+ * g_file_make_directory_async().
+ *
+ * Virtual: make_directory_finish
+ * Returns: %TRUE on successful directory creation, %FALSE otherwise.
+ * Since: 2.38
+ */
+
+
+/**
* g_file_make_directory_with_parents:
* @file: input #GFile
* @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore
@@ -19308,6 +20722,12 @@
* triggering the cancellable object from another thread. If the operation
* was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
*
+ * 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().
+ *
* Virtual: monitor_dir
* Returns: (transfer full): a #GFileMonitor for the given @file, or %NULL on error. Free the returned object with g_object_unref().
*/
@@ -19344,6 +20764,14 @@
* 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().
*/
@@ -19507,6 +20935,28 @@
/**
+ * g_file_new_for_commandline_arg_and_cwd:
+ * @arg: a command line string
+ * @cwd: 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.
+ *
+ * See also g_application_command_line_create_file_for_arg().
+ *
+ * Returns: (transfer full): a new #GFile
+ * Since: 2.36
+ */
+
+
+/**
* g_file_new_for_path:
* @path: a string containing a relative or absolute path. The string must be encoded in the glib filename encoding.
*
@@ -20492,7 +21942,7 @@
* triggering the cancellable object from another thread. If the operation
* was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
*
- * Returns: %TRUE if there was any error, %FALSE otherwise.
+ * Returns: %FALSE if there was any error, %TRUE otherwise.
*/
@@ -20666,11 +22116,42 @@
* triggering the cancellable object from another thread. If the operation
* was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
*
+ * Virtual: trash
* Returns: %TRUE on successful trash, %FALSE otherwise.
*/
/**
+ * g_file_trash_async:
+ * @file: input #GFile
+ * @io_priority: the <link linkend="io-priority">I/O priority</link> of the request
+ * @cancellable: (allow-none): 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 sends @file to the Trash location, if possible.
+ *
+ * Virtual: trash_async
+ * Since: 2.38
+ */
+
+
+/**
+ * g_file_trash_finish:
+ * @file: input #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
+ *
+ * Finishes an asynchronous file trashing operation, started with
+ * g_file_trash_async().
+ *
+ * Virtual: trash_finish
+ * Returns: %TRUE on successful trash, %FALSE otherwise.
+ * Since: 2.38
+ */
+
+
+/**
* g_file_unmount_mountable:
* @file: input #GFile
* @flags: flags affecting the operation
@@ -20850,6 +22331,17 @@
/**
+ * g_icon_deserialize:
+ * @value: a #GVariant created with g_icon_serialize()
+ *
+ * Deserializes a #GIcon previously serialized using g_icon_serialize().
+ *
+ * Returns: (transfer full): a #GIcon, or %NULL when deserialization fails.
+ * Since: 2.38
+ */
+
+
+/**
* g_icon_equal:
* @icon1: (allow-none): pointer to the first #GIcon.
* @icon2: (allow-none): pointer to the second #GIcon.
@@ -20889,6 +22381,21 @@
/**
+ * 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.
+ *
+ * Returns: (transfer full): a #GVariant, or %NULL when serialization fails.
+ * Since: 2.38
+ */
+
+
+/**
* g_icon_to_string:
* @icon: a #GIcon.
*
@@ -21342,7 +22849,7 @@
* similar to g_object_new() but also initializes the object
* and returns %NULL, setting an error on failure.
*
- * Returns: (transfer full): a newly allocated #GObject, or %NULL on error
+ * Returns: (type GObject.Object) (transfer full): a newly allocated #GObject, or %NULL on error
* Since: 2.22
*/
@@ -21359,7 +22866,7 @@
* similar to g_object_new_valist() but also initializes the object
* and returns %NULL, setting an error on failure.
*
- * Returns: (transfer full): a newly allocated #GObject, or %NULL on error
+ * Returns: (type GObject.Object) (transfer full): a newly allocated #GObject, or %NULL on error
* Since: 2.22
*/
@@ -21376,7 +22883,7 @@
* similar to g_object_newv() but also initializes the object
* and returns %NULL, setting an error on failure.
*
- * Returns: (transfer full): a newly allocated #GObject, or %NULL on error
+ * Returns: (type GObject.Object) (transfer full): a newly allocated #GObject, or %NULL on error
* Since: 2.22
*/
@@ -21479,7 +22986,7 @@
/**
* g_input_stream_read:
* @stream: a #GInputStream.
- * @buffer: a buffer to read data into (which should be at least count bytes long).
+ * @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: (allow-none): optional #GCancellable object, %NULL to ignore.
* @error: location to store the error occurring, or %NULL to ignore
@@ -21510,7 +23017,7 @@
/**
* g_input_stream_read_all:
* @stream: a #GInputStream.
- * @buffer: a buffer to read data into (which should be at least count bytes long).
+ * @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: (allow-none): optional #GCancellable object, %NULL to ignore.
@@ -21537,7 +23044,7 @@
/**
* g_input_stream_read_async:
* @stream: A #GInputStream.
- * @buffer: a buffer to read data into (which should be at least count bytes long).
+ * @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 <link linkend="io-priority">I/O priority</link> of the request.
* @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
@@ -22030,6 +23537,8 @@
*
* 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.
*/
@@ -22045,6 +23554,7 @@
* blocking the I/O job).
*
* Returns: The return value of @func
+ * Deprecated: Use g_main_context_invoke().
*/
@@ -22064,6 +23574,8 @@
* on to this function you have to ensure that it is not freed before
* @func is called, either by passing %NULL as @notify to
* g_io_scheduler_push_job() or by using refcounting for @user_data.
+ *
+ * Deprecated: Use g_main_context_invoke().
*/
@@ -22072,7 +23584,7 @@
* @job_func: a #GIOSchedulerJobFunc.
* @user_data: data to pass to @job_func
* @notify: (allow-none): a #GDestroyNotify for @user_data, or %NULL
- * @io_priority: the <link linkend="gioscheduler">I/O priority</link> of the request.
+ * @io_priority: the <link linkend="io-priority">I/O priority</link> of the request.
* @cancellable: optional #GCancellable object, %NULL to ignore.
*
* Schedules the I/O job to run in another thread.
@@ -22083,6 +23595,8 @@
* If @cancellable is not %NULL, it can be used to cancel the I/O job
* by calling g_cancellable_cancel() or by calling
* g_io_scheduler_cancel_all_jobs().
+ *
+ * Deprecated: use #GThreadPool or g_task_run_in_thread()
*/
@@ -22508,6 +24022,16 @@
/**
+ * g_memory_output_stream_new_resizable:
+ *
+ * Creates a new #GMemoryOutputStream, using g_realloc() and g_free()
+ * for memory allocation.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_memory_output_stream_steal_as_bytes:
* @ostream: a #GMemoryOutputStream
*
@@ -23085,14 +24609,8 @@
*
* Sets the "action" and possibly the "target" attribute of @menu_item.
*
- * If @detailed_action contains a double colon ("::") then it is used as
- * a separator between an action name and a target string. In this
- * case, this call is equivalent to calling
- * g_menu_item_set_action_and_target() with the part before the "::" and
- * with a string-type #GVariant containing the part following the "::".
- *
- * If @detailed_action doesn't contain "::" then the action is set to
- * the given string (verbatim) and the target value is unset.
+ * 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
@@ -23106,6 +24624,28 @@
/**
+ * 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').
+ *
+ * If @icon is %NULL then the icon is unset.
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_menu_item_set_label:
* @menu_item: a #GMenuItem
* @label: (allow-none): the label to set, or %NULL to unset
@@ -23485,6 +25025,16 @@
/**
+ * g_menu_remove_all:
+ * @menu: a #GMenu
+ *
+ * Removes all items in the menu.
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_mount_can_eject:
* @mount: a #GMount.
*
@@ -24305,6 +25855,18 @@
/**
+ * g_networking_init:
+ *
+ * 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.36
+ */
+
+
+/**
* g_null_settings_backend_new:
*
* Creates a readonly #GSettingsBackend.
@@ -25197,6 +26759,26 @@
/**
+ * g_property_action_new:
+ * @name: the name of the action to create
+ * @object: the object that has the property to wrap
+ * @property_name: the name of the property
+ *
+ * Creates a #GAction corresponding to the value of property
+ * @property_name on @object.
+ *
+ * The property must be existent and readable and writable (and not
+ * construct-only).
+ *
+ * This function takes a reference on @object and doesn't release it
+ * until the action is destroyed.
+ *
+ * Returns: a new #GPropertyAction
+ * Since: 2.38
+ */
+
+
+/**
* g_proxy_address_get_destination_hostname:
* @proxy: a #GProxyAddress
*
@@ -27401,6 +28983,7 @@
* and adding them to the action group.
*
* Since: 2.30
+ * Deprecated: 2.38: Use g_action_map_add_action_entries()
*/
@@ -27417,6 +29000,7 @@
* The action group takes its own reference on @action.
*
* Since: 2.28
+ * Deprecated: 2.38: Use g_action_map_add_action()
*/
@@ -27431,6 +29015,7 @@
*
* Returns: (transfer none): a #GAction, or %NULL
* Since: 2.28
+ * Deprecated: 2.38: Use g_action_map_lookup_action()
*/
@@ -27454,6 +29039,7 @@
* 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()
*/
@@ -27520,6 +29106,8 @@
* 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
*/
@@ -27884,6 +29472,73 @@
/**
+ * g_simple_proxy_resolver_new:
+ * @default_proxy: (allow-none): the default proxy to use, eg "socks://192.168.1.1"
+ * @ignore_hosts: (allow-none): an optional list of hosts/IP addresses to not use a proxy for.
+ *
+ * Creates a new #GSimpleProxyResolver. See
+ * #GSimpleProxyResolver:default-proxy and
+ * #GSimpleProxyResolver:ignore-hosts for more details on how the
+ * arguments are interpreted.
+ *
+ * Returns: a new #GSimpleProxyResolver
+ * Since: 2.36
+ */
+
+
+/**
+ * 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().
+ *
+ * If @default_proxy starts with "<literal>socks://</literal>",
+ * #GSimpleProxyResolver will treat it as referring to all three of
+ * the <literal>socks5</literal>, <literal>socks4a</literal>, and
+ * <literal>socks4</literal> proxy types.
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * 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
+ *
+ * Sets the list of ignored hosts.
+ *
+ * See #GSimpleProxyResolver:ignore-hosts for more details on how the
+ * @ignore_hosts argument is interpreted.
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * 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
+ *
+ * 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.
+ *
+ * As with #GSimpleProxyResolver:default-proxy, if @proxy starts with
+ * "<literal>socks://</literal>", #GSimpleProxyResolver will treat it
+ * as referring to all three of the <literal>socks5</literal>,
+ * <literal>socks4a</literal>, and <literal>socks4</literal> proxy
+ * types.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_socket_accept:
* @socket: a #GSocket.
* @cancellable: (allow-none): a %GCancellable or %NULL
@@ -28030,14 +29685,20 @@
* In certain situations, you may also want to bind a socket that will be
* used to initiate connections, though this is not normally required.
*
- * @allow_reuse should be %TRUE for server sockets (sockets that you will
- * eventually call g_socket_accept() on), and %FALSE for client sockets.
- * (Specifically, if it is %TRUE, then g_socket_bind() will set the
- * %SO_REUSEADDR flag on the socket, allowing it to bind @address even if
- * that address was previously used by another socket that has not yet been
- * fully cleaned-up by the kernel. Failing to set this flag on a server
- * socket may cause the bind call to return %G_IO_ERROR_ADDRESS_IN_USE if
- * the server program is stopped and then immediately restarted.)
+ * If @socket is a TCP socket, then @allow_reuse controls the setting
+ * of the <literal>SO_REUSEADDR</literal> 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.)
+ *
+ * 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
@@ -28397,6 +30058,19 @@
/**
+ * g_socket_client_get_proxy_resolver:
+ * @client: a #GSocketClient.
+ *
+ * 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().
+ *
+ * Returns: (transfer none): The #GProxyResolver being used by @client.
+ * Since: 2.36
+ */
+
+
+/**
* g_socket_client_get_socket_type:
* @client: a #GSocketClient.
*
@@ -28466,6 +30140,8 @@
* #GProxyResolver to determine if a proxy protocol such as SOCKS is
* needed, and automatically do the necessary proxy negotiation.
*
+ * See also g_socket_client_set_proxy_resolver().
+ *
* Since: 2.26
*/
@@ -28522,6 +30198,23 @@
/**
+ * g_socket_client_set_proxy_resolver:
+ * @client: a #GSocketClient.
+ * @proxy_resolver: (allow-none): a #GProxyResolver, or %NULL for the default.
+ *
+ * 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.
+ *
+ * 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)
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_socket_client_set_socket_type:
* @client: a #GSocketClient.
* @type: a #GSocketType
@@ -29045,7 +30738,7 @@
*
* Gets the broadcast setting on @socket; if %TRUE,
* it is possible to send packets to broadcast
- * addresses or receive from broadcast addresses.
+ * addresses.
*
* Returns: the broadcast setting on @socket
* Since: 2.32
@@ -29165,6 +30858,34 @@
/**
+ * g_socket_get_option:
+ * @socket: a #GSocket
+ * @level: the "API level" of the option (eg, <literal>SOL_SOCKET</literal>)
+ * @optname: the "name" of the option (eg, <literal>SO_BROADCAST</literal>)
+ * @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
+ * <literal>getsockopt ()</literal>. (If you need to fetch a
+ * non-integer-valued option, you will need to call
+ * <literal>getsockopt ()</literal> directly.)
+ *
+ * The <link linkend="gio-gnetworking.h"><literal>&lt;gio/gnetworking.h&gt;</literal></link>
+ * 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.
+ *
+ * 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 (<literal>errno</literal> or <literal>WSAGetLastError ()</literal>) will still be set to the result of the <literal>getsockopt ()</literal> call.
+ * Since: 2.36
+ */
+
+
+/**
* g_socket_get_protocol:
* @socket: a #GSocket.
*
@@ -29605,7 +31326,7 @@
/**
* g_socket_receive:
* @socket: a #GSocket
- * @buffer: a buffer to read data into (which should be at least @size bytes long).
+ * @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: (allow-none): a %GCancellable or %NULL
* @error: #GError for error reporting, or %NULL to ignore.
@@ -29739,7 +31460,7 @@
/**
* g_socket_receive_with_blocking:
* @socket: a #GSocket
- * @buffer: a buffer to read data into (which should be at least @size bytes long).
+ * @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: (allow-none): a %GCancellable or %NULL
@@ -29950,10 +31671,10 @@
/**
* g_socket_set_broadcast:
* @socket: a #GSocket.
- * @broadcast: whether @socket should allow sending to and receiving from broadcast addresses
+ * @broadcast: whether @socket should allow sending to broadcast addresses
*
- * Sets whether @socket should allow sending to and receiving from
- * broadcast addresses. This is %FALSE by default.
+ * Sets whether @socket should allow sending to broadcast addresses.
+ * This is %FALSE by default.
*
* Since: 2.32
*/
@@ -30028,6 +31749,30 @@
/**
+ * g_socket_set_option:
+ * @socket: a #GSocket
+ * @level: the "API level" of the option (eg, <literal>SOL_SOCKET</literal>)
+ * @optname: the "name" of the option (eg, <literal>SO_BROADCAST</literal>)
+ * @value: the value to set the option to
+ * @error: #GError for error reporting, or %NULL to ignore.
+ *
+ * Sets the value of an integer-valued option on @socket, as with
+ * <literal>setsockopt ()</literal>. (If you need to set a
+ * non-integer-valued option, you will need to call
+ * <literal>setsockopt ()</literal> directly.)
+ *
+ * The <link linkend="gio-gnetworking.h"><literal>&lt;gio/gnetworking.h&gt;</literal></link>
+ * 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.
+ *
+ * Returns: success or failure. On failure, @error will be set, and the system error value (<literal>errno</literal> or <literal>WSAGetLastError ()</literal>) will still be set to the result of the <literal>setsockopt ()</literal> call.
+ * Since: 2.36
+ */
+
+
+/**
* g_socket_set_timeout:
* @socket: a #GSocket.
* @timeout: the timeout for @socket, in seconds, or 0 for none
@@ -30259,6 +32004,528 @@
/**
+ * 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 <link
+ * linkend="io-priority">priority</link>, and sets @source's callback
+ * to @callback, with @task as the callback's
+ * <literal>user_data</literal>.
+ *
+ * This takes a reference on @task until @source is destroyed.
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_cancellable:
+ * @task: a #GTask
+ *
+ * Gets @task's #GCancellable
+ *
+ * Returns: (transfer none): @task's #GCancellable
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_check_cancellable:
+ * @task: the #GTask
+ *
+ * Gets @task's check-cancellable flag. See
+ * g_task_set_check_cancellable() for more details.
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_context:
+ * @task: a #GTask
+ *
+ * Gets the #GMainContext that @task will return its result in (that
+ * is, the context that was the <link
+ * linkend="g-main-context-push-thread-default">thread-default main
+ * context</link> at the point when @task was created).
+ *
+ * This will always return a non-%NULL value, even if the task's
+ * context is the default #GMainContext.
+ *
+ * Returns: (transfer none): @task's #GMainContext
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_priority:
+ * @task: a #GTask
+ *
+ * Gets @task's priority
+ *
+ * Returns: @task's priority
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_return_on_cancel:
+ * @task: the #GTask
+ *
+ * Gets @task's return-on-cancel flag. See
+ * g_task_set_return_on_cancel() for more details.
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_source_object:
+ * @task: a #GTask
+ *
+ * Gets the source object from @task. Like
+ * g_async_result_get_source_object(), but does not ref the object.
+ *
+ * Returns: (transfer none) (type GObject): @task's source object, or %NULL
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_source_tag:
+ * @task: a #GTask
+ *
+ * Gets @task's source tag. See g_task_set_source_tag().
+ *
+ * Returns: (transfer none): @task's source tag
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_get_task_data:
+ * @task: a #GTask
+ *
+ * Gets @task's <literal>task_data</literal>.
+ *
+ * Returns: (transfer none): @task's <literal>task_data</literal>.
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_had_error:
+ * @task: a #GTask.
+ *
+ * Tests if @task resulted in an error.
+ *
+ * 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: (allow-none) (type GObject): the source object expected to be associated with the task
+ *
+ * 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: %TRUE if @result and @source_object are valid, %FALSE if not
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_new:
+ * @source_object: (allow-none) (type GObject): the #GObject that owns this task, or %NULL.
+ * @cancellable: (allow-none): optional #GCancellable object, %NULL to ignore.
+ * @callback: (scope async): a #GAsyncReadyCallback.
+ * @callback_data: (closure): user data passed to @callback.
+ *
+ * Creates a #GTask acting on @source_object, which will eventually be
+ * used to invoke @callback in the current <link
+ * linkend="g-main-context-push-thread-default">thread-default main
+ * context</link>.
+ *
+ * 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().
+ *
+ * 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.
+ *
+ * Returns: a #GTask.
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_propagate_boolean:
+ * @task: a #GTask.
+ * @error: return location for a #GError
+ *
+ * Gets the result of @task as a #gboolean.
+ *
+ * If the task resulted in an error, or was cancelled, then this will
+ * instead return %FALSE and set @error.
+ *
+ * Since this method transfers ownership of the return value (or
+ * error) to the caller, you may only call it once.
+ *
+ * Returns: the task result, or %FALSE on error
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_propagate_int:
+ * @task: a #GTask.
+ * @error: return location for a #GError
+ *
+ * Gets the result of @task as an integer (#gssize).
+ *
+ * If the task resulted in an error, or was cancelled, then this will
+ * instead return -1 and set @error.
+ *
+ * Since this method transfers ownership of the return value (or
+ * error) to the caller, you may only call it once.
+ *
+ * Returns: the task result, or -1 on error
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_propagate_pointer:
+ * @task: a #GTask
+ * @error: return location for a #GError
+ *
+ * Gets the result of @task as a pointer, and transfers ownership
+ * of that value to the caller.
+ *
+ * If the task resulted in an error, or was cancelled, then this will
+ * instead return %NULL and set @error.
+ *
+ * Since this method transfers ownership of the return value (or
+ * error) to the caller, you may only call it once.
+ *
+ * Returns: (transfer full): the task result, or %NULL on error
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_report_error:
+ * @source_object: (allow-none) (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
+ *
+ * Creates a #GTask and then immediately calls g_task_return_error()
+ * on it. Use this in the wrapper function of an asynchronous method
+ * when you want to avoid even calling the virtual method. You can
+ * then use g_async_result_is_tagged() in the finish method wrapper to
+ * check if the result there is tagged as having been created by the
+ * wrapper method, and deal with it appropriately if so.
+ *
+ * See also g_task_report_new_error().
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_report_new_error:
+ * @source_object: (allow-none) (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.
+ *
+ * See also g_task_report_error().
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_return_boolean:
+ * @task: a #GTask.
+ * @result: the #gboolean result of a task function.
+ *
+ * Sets @task's result to @result and completes the task (see
+ * g_task_return_pointer() for more discussion of exactly what this
+ * means).
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_return_error:
+ * @task: a #GTask.
+ * @error: (transfer full): the #GError result of a task function.
+ *
+ * Sets @task's result to @error (which @task assumes ownership of)
+ * and completes the task (see g_task_return_pointer() for more
+ * discussion of exactly what this means).
+ *
+ * Note that since the task takes ownership of @error, and since the
+ * task may be completed before returning from g_task_return_error(),
+ * you cannot assume that @error is still valid after calling this.
+ * Call g_error_copy() on the error if you need to keep a local copy
+ * as well.
+ *
+ * See also g_task_return_new_error().
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_return_error_if_cancelled:
+ * @task: a #GTask
+ *
+ * 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: %TRUE if @task has been cancelled, %FALSE if not
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_return_int:
+ * @task: a #GTask.
+ * @result: the integer (#gssize) result of a task function.
+ *
+ * Sets @task's result to @result and completes the task (see
+ * g_task_return_pointer() for more discussion of exactly what this
+ * means).
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * 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.
+ *
+ * Sets @task's result to a new #GError created from @domain, @code,
+ * @format, and the remaining arguments, and completes the task (see
+ * g_task_return_pointer() for more discussion of exactly what this
+ * means).
+ *
+ * See also g_task_return_error().
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * g_task_return_pointer:
+ * @task: a #GTask
+ * @result: (allow-none) (transfer full): the pointer result of a task function
+ * @result_destroy: (allow-none): 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().
+ *
+ * "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_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.
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * 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
+ * <literal>callback</literal>, but note that even if the task does
+ * have a callback, it will not be invoked when @task_func returns.
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * 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.
+ *
+ * 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_task_set_priority:
+ * @task: the #GTask
+ * @priority: the <link linkend="io-priority">priority</link> of the request.
+ *
+ * Sets @task's priority. If you do not call this, it will default to
+ * %G_PRIORITY_DEFAULT.
+ *
+ * This will affect the priority of #GSources created with
+ * g_task_attach_source() and the scheduling of tasks run in threads,
+ * and can also be explicitly retrieved later via
+ * g_task_get_priority().
+ *
+ * Since: 2.36
+ */
+
+
+/**
+ * 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().
+ *
+ * If @return_on_cancel is %TRUE, then cancelling @task's
+ * #GCancellable will immediately cause it to return, as though the
+ * task's #GTaskThreadFunc had called
+ * g_task_return_error_if_cancelled() and then returned.
+ *
+ * This allows you to create a cancellable wrapper around an
+ * uninterruptable function. The #GTaskThreadFunc just needs to be
+ * careful that it does not modify any externally-visible state after
+ * it has been cancelled. To do that, the thread should call
+ * g_task_set_return_on_cancel() again to (atomically) set
+ * return-on-cancel %FALSE before making externally-visible changes;
+ * if the task gets cancelled before the return-on-cancel flag could
+ * be changed, g_task_set_return_on_cancel() will indicate this by
+ * returning %FALSE.
+ *
+ * You can disable and re-enable this flag multiple times if you wish.
+ * If the task's #GCancellable is cancelled while return-on-cancel is
+ * %FALSE, then calling g_task_set_return_on_cancel() to set it %TRUE
+ * again will cause the task to be cancelled at that point.
+ *
+ * If the task's #GCancellable is already cancelled before you call
+ * g_task_run_in_thread()/g_task_run_in_thread_sync(), then the
+ * #GTaskThreadFunc will still be run (for consistency), but the task
+ * will also be completed right away.
+ *
+ * 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_task_set_source_tag:
+ * @task: the #GTask
+ * @source_tag: an opaque pointer indicating the source of this task
+ *
+ * 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.36
+ */
+
+
+/**
+ * g_task_set_task_data:
+ * @task: the #GTask
+ * @task_data: (allow-none): task-specific data
+ * @task_data_destroy: (allow-none): #GDestroyNotify for @task_data
+ *
+ * Sets @task's task data (freeing the existing task data, if any).
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_tcp_connection_get_graceful_disconnect:
* @connection: a #GTcpConnection
*
@@ -30395,7 +32662,7 @@
* @self: a #GTestDBus
*
* Start a dbus-daemon instance and set DBUS_SESSION_BUS_ADDRESS. After this
- * call, it is safe for unit tests to start sending messages on the session bug.
+ * call, it is safe for unit tests to start sending messages on the session bus.
*
* If this function is called from setup callback of g_test_add(),
* g_test_dbus_down() must be called in its teardown callback.
@@ -31318,7 +33585,7 @@
* Finish an asynchronous lookup of certificates. See
* g_tls_database_lookup_certificates_issued_by() for more information.
*
- * Returns: (transfer full): a newly allocated list of #GTlsCertificate objects. Use g_object_unref() on each certificate, and g_list_free() on the release the list.
+ * 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
*/
diff --git a/gir/glib-2.0.c b/gir/glib-2.0.c
index 2966d1b5..a01b5d27 100644
--- a/gir/glib-2.0.c
+++ b/gir/glib-2.0.c
@@ -429,7 +429,7 @@
* @G_FILE_ERROR_NFILE: There are too many distinct file openings in the entire system.
* @G_FILE_ERROR_BADF: Bad file descriptor; for example, I/O on a descriptor that has been closed or reading from a descriptor open only for writing (or vice versa).
* @G_FILE_ERROR_INVAL: Invalid argument. This is used to indicate various kinds of problems with passing the wrong argument to a library function.
- * @G_FILE_ERROR_PIPE: Broken pipe; there is no process reading from the other end of a pipe. Every library function that returns this error code also generates a `SIGPIPE' signal; this signal terminates the program if not handled or blocked. Thus, your program will never actually see this code unless it has handled or blocked `SIGPIPE'.
+ * @G_FILE_ERROR_PIPE: Broken pipe; there is no process reading from the other end of a pipe. Every library function that returns this error code also generates a 'SIGPIPE' signal; this signal terminates the program if not handled or blocked. Thus, your program will never actually see this code unless it has handled or blocked 'SIGPIPE'.
* @G_FILE_ERROR_AGAIN: Resource temporarily unavailable; the call might work if you try again later.
* @G_FILE_ERROR_INTR: Interrupted function call; an asynchronous signal occurred and prevented completion of the call. When this happens, you should try the call again.
* @G_FILE_ERROR_IO: Input/output error; usually used for physical read or write errors. i.e. the disk or other physical device hardware is returning errors.
@@ -1761,6 +1761,32 @@
/**
+ * GTestFileType:
+ * @G_TEST_DIST: a file that was included in the distribution tarball
+ * @G_TEST_BUILT: a file that was built on the compiling machine
+ *
+ * The type of file to return the filename for, when used with
+ * g_test_build_filename().
+ *
+ * These two options correspond rather directly to the 'dist' and
+ * 'built' terminology that automake uses and are explicitly used to
+ * distinguish between the 'srcdir' and 'builddir' being separate. All
+ * files in your project should either be dist (in the
+ * <literal>DIST_EXTRA</literal> or <literal>dist_schema_DATA</literal>
+ * sense, in which case they will always be in the srcdir) or built (in
+ * the <literal>BUILT_SOURCES</literal> sense, in which case they will
+ * always be in the builddir).
+ *
+ * Note: as a general rule of automake, files that are generated only as
+ * part of the build-from-git process (but then are distributed with the
+ * tarball) always go in srcdir (even if doing a srcdir != builddir
+ * build from git) and are considered as distributed files.
+ *
+ * Since: 2.38
+ */
+
+
+/**
* GTestFixtureFunc:
* @fixture: the test fixture
* @user_data: the data provided when registering the test
@@ -1790,6 +1816,19 @@
/**
+ * GTestSubprocessFlags:
+ * @G_TEST_SUBPROCESS_INHERIT_STDIN: If this flag is given, the child process will inherit the parent's stdin. Otherwise, the child's stdin is redirected to <filename>/dev/null</filename>.
+ * @G_TEST_SUBPROCESS_INHERIT_STDOUT: If this flag is given, the child process will inherit the parent's stdout. Otherwise, the child's stdout will not be visible, but it will be captured to allow later tests with g_test_trap_assert_stdout().
+ * @G_TEST_SUBPROCESS_INHERIT_STDERR: If this flag is given, the child process will inherit the parent's stderr. Otherwise, the child's stderr will not be visible, but it will be captured to allow later tests with g_test_trap_assert_stderr().
+ *
+ * Flags to pass to g_test_trap_subprocess() to control input and output.
+ *
+ * Note that in contrast with g_test_trap_fork(), the default is to
+ * not show stdout and stderr.
+ */
+
+
+/**
* GTestSuite:
*
* An opaque structure representing a test suite.
@@ -1800,10 +1839,12 @@
* GTestTrapFlags:
* @G_TEST_TRAP_SILENCE_STDOUT: Redirect stdout of the test child to <filename>/dev/null</filename> so it cannot be observed on the console during test runs. The actual output is still captured though to allow later tests with g_test_trap_assert_stdout().
* @G_TEST_TRAP_SILENCE_STDERR: Redirect stderr of the test child to <filename>/dev/null</filename> so it cannot be observed on the console during test runs. The actual output is still captured though to allow later tests with g_test_trap_assert_stderr().
- * @G_TEST_TRAP_INHERIT_STDIN: If this flag is given, stdin of the forked child process is shared with stdin of its parent process. It is redirected to <filename>/dev/null</filename> otherwise.
+ * @G_TEST_TRAP_INHERIT_STDIN: If this flag is given, stdin of the child process is shared with stdin of its parent process. It is redirected to <filename>/dev/null</filename> otherwise.
*
* Test traps are guards around forked tests.
* These flags determine what traps to set.
+ *
+ * Deprecated: #GTestTrapFlags is used only with g_test_trap_fork(), which is deprecated. g_test_trap_subprocess() uses #GTestTrapSubprocessFlags.
*/
@@ -1898,7 +1939,7 @@
/**
* GTimeZone:
*
- * #GDateTime is an opaque structure whose members cannot be accessed
+ * #GTimeZone is an opaque structure whose members cannot be accessed
* directly.
*
* Since: 2.26
@@ -2877,7 +2918,7 @@
* format function the same as they would have been for the unmodified
* string).
*
- * Place the attribute after the function declaration, just after the
+ * Place the attribute after the function declaration, just before the
* semicolon.
*
* See the GNU C documentation for more details.
@@ -6434,50 +6475,14 @@
*
* To destroy a #GHashTable use g_hash_table_destroy().
*
- * <example>
- * <title>Using a GHashTable as a set</title>
- * <para>
- * A common use-case for hash tables is to store information about
- * a set of keys, without associating any particular value with each
+ * A common use-case for hash tables is to store information about a
+ * set of keys, without associating any particular value with each
* key. GHashTable optimizes one way of doing so: If you store only
* key-value pairs where key == value, then GHashTable does not
* allocate memory to store the values, which can be a considerable
- * space saving, if your set is large.
- * </para>
- * <programlisting>
- * GHashTable *
- * set_new (GHashFunc hash_func,
- * GEqualFunc equal_func,
- * GDestroyNotify destroy)
- * {
- * return g_hash_table_new_full (hash_func, equal_func, destroy, NULL);
- * }
- *
- * void
- * set_add (GHashTable *set,
- * gpointer element)
- * {
- * g_hash_table_replace (set, element, element);
- * }
- *
- * gboolean
- * set_contains (GHashTable *set,
- * gpointer element)
- * {
- * return g_hash_table_lookup_extended (set, element, NULL, NULL);
- * }
- *
- * gboolean
- * set_remove (GHashTable *set,
- * gpointer element)
- * {
- * return g_hash_table_remove (set, element);
- * }
- * </programlisting>
- * </example>
- *
- * As of version 2.32, there is also a g_hash_table_add() function to
- * add a key to a #GHashTable that is being used as a set.
+ * space saving, if your set is large. The functions
+ * g_hash_table_add() and g_hash_table_contains() are designed to be
+ * used when using #GHashTable this way.
*/
@@ -6522,16 +6527,21 @@
* easy-to-use form.
*
* In order to use these macros in an application, you must include
- * <filename>glib/gi18n.h</filename>. For use in a library, must include
+ * <filename>glib/gi18n.h</filename>. For use in a library, you must include
* <filename>glib/gi18n-lib.h</filename> <emphasis>after</emphasis> defining
* the GETTEXT_PACKAGE macro suitably for your library:
* |[
* &num;define GETTEXT_PACKAGE "gtk20"
* &num;include &lt;glib/gi18n-lib.h&gt;
* ]|
- * Note that you also have to call setlocale() and textdomain() (as well as
- * bindtextdomain() and bind_textdomain_codeset()) early on in your main()
- * to make gettext() work.
+ * For an application, note that you also have to call bindtextdomain(),
+ * bind_textdomain_codeset(), textdomain() and setlocale() early on in your
+ * main() to make gettext() work.
+ *
+ * For a library, you only have to call bindtextdomain() and
+ * bind_textdomain_codeset() in your initialization function. If your library
+ * doesn't have an initialization function, you can call the functions before
+ * the first translated message.
*
* The gettext manual covers details of how to set up message extraction
* with xgettext.
@@ -7355,8 +7365,6 @@
* SECTION:shell
* @title: Shell-related Utilities
* @short_description: shell-like commandline handling
- *
- *
*/
@@ -7364,8 +7372,6 @@
* SECTION:spawn
* @Short_description: process launching
* @Title: Spawning Processes
- *
- *
*/
@@ -8715,11 +8721,10 @@
* @cmp: The comparison operator to use. One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another floating point number
*
- * Debugging macro to terminate the application with a warning
- * message if a floating point number comparison fails.
+ * Debugging macro to compare two floating point numbers.
*
* The effect of <literal>g_assert_cmpfloat (n1, op, n2)</literal> is
- * the same as <literal>g_assert (n1 op n2)</literal>. The advantage
+ * the same as <literal>g_assert_true (n1 op n2)</literal>. The advantage
* of this macro is that it can produce a message that includes the
* actual values of @n1 and @n2.
*
@@ -8733,8 +8738,7 @@
* @cmp: The comparison operator to use. One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another unsigned integer
*
- * Debugging macro to terminate the application with a warning
- * message if an unsigned integer comparison fails.
+ * Debugging macro to compare to unsigned integers.
*
* This is a variant of g_assert_cmpuint() that displays the numbers
* in hexadecimal notation in the message.
@@ -8749,11 +8753,10 @@
* @cmp: The comparison operator to use. One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another integer
*
- * Debugging macro to terminate the application with a warning
- * message if an integer comparison fails.
+ * Debugging macro to compare two integers.
*
* The effect of <literal>g_assert_cmpint (n1, op, n2)</literal> is
- * the same as <literal>g_assert (n1 op n2)</literal>. The advantage
+ * the same as <literal>g_assert_true (n1 op n2)</literal>. The advantage
* of this macro is that it can produce a message that includes the
* actual values of @n1 and @n2.
*
@@ -8767,12 +8770,13 @@
* @cmp: The comparison operator to use. One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @s2: another string (may be %NULL)
*
- * Debugging macro to terminate the application with a warning
- * message if a string comparison fails. The strings are compared
- * using g_strcmp0().
+ * Debugging macro to compare two strings. If the comparison fails,
+ * an error message is logged and the application is either terminated
+ * or the testcase marked as failed.
+ * The strings are compared using g_strcmp0().
*
* The effect of <literal>g_assert_cmpstr (s1, op, s2)</literal> is
- * the same as <literal>g_assert (g_strcmp0 (s1, s2) op 0)</literal>.
+ * the same as <literal>g_assert_true (g_strcmp0 (s1, s2) op 0)</literal>.
* The advantage of this macro is that it can produce a message that
* includes the actual values of @s1 and @s2.
*
@@ -8790,11 +8794,10 @@
* @cmp: The comparison operator to use. One of ==, !=, &lt;, &gt;, &lt;=, &gt;=.
* @n2: another unsigned integer
*
- * Debugging macro to terminate the application with a warning
- * message if an unsigned integer comparison fails.
+ * Debugging macro to compare two unsigned integers.
*
* The effect of <literal>g_assert_cmpuint (n1, op, n2)</literal> is
- * the same as <literal>g_assert (n1 op n2)</literal>. The advantage
+ * the same as <literal>g_assert_true (n1 op n2)</literal>. The advantage
* of this macro is that it can produce a message that includes the
* actual values of @n1 and @n2.
*
@@ -8808,11 +8811,11 @@
* @dom: the expected error domain (a #GQuark)
* @c: the expected error code
*
- * Debugging macro to terminate the application with a warning
- * message if a method has not returned the correct #GError.
+ * Debugging macro to check that a method has returned
+ * the correct #GError.
*
* The effect of <literal>g_assert_error (err, dom, c)</literal> is
- * the same as <literal>g_assert (err != NULL &amp;&amp; err->domain
+ * the same as <literal>g_assert_true (err != NULL &amp;&amp; err->domain
* == dom &amp;&amp; err->code == c)</literal>. The advantage of this
* macro is that it can produce a message that includes the incorrect
* error message and code.
@@ -8826,14 +8829,29 @@
/**
+ * g_assert_false:
+ * @expr: the expression to check
+ *
+ * Debugging macro to check an expression is false.
+ *
+ * If the assertion fails (i.e. the expression is not false),
+ * an error message is logged and the application is either
+ * terminated or the testcase marked as failed.
+ *
+ * See g_test_set_nonfatal_assertions().
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_assert_no_error:
* @err: a #GError, possibly %NULL
*
- * Debugging macro to terminate the application with a warning
- * message if a method has returned a #GError.
+ * Debugging macro to check that a #GError is not set.
*
* The effect of <literal>g_assert_no_error (err)</literal> is
- * the same as <literal>g_assert (err == NULL)</literal>. The advantage
+ * the same as <literal>g_assert_true (err == NULL)</literal>. The advantage
* of this macro is that it can produce a message that includes
* the error message and code.
*
@@ -8854,6 +8872,38 @@
/**
+ * g_assert_null:
+ * @expr: the expression to check
+ *
+ * Debugging macro to check an expression is %NULL.
+ *
+ * If the assertion fails (i.e. the expression is not %NULL),
+ * an error message is logged and the application is either
+ * terminated or the testcase marked as failed.
+ *
+ * See g_test_set_nonfatal_assertions().
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * g_assert_true:
+ * @expr: the expression to check
+ *
+ * Debugging macro to check that an expression is true.
+ *
+ * If the assertion fails (i.e. the expression is not true),
+ * an error message is logged and the application is either
+ * terminated or the testcase marked as failed.
+ *
+ * See g_test_set_nonfatal_assertions().
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_async_queue_length:
* @queue: a #GAsyncQueue.
*
@@ -9557,7 +9607,9 @@
* @text: zero-terminated string with base64 text to decode
* @out_len: (out): The length of the decoded data is written here
*
- * Decode a sequence of Base-64 encoded text into binary data
+ * Decode a sequence of Base-64 encoded text into binary data. Note
+ * that the returned binary data is not necessarily zero-terminated,
+ * so it should not be used as a character string.
*
* Returns: (transfer full) (array length=out_len) (element-type guint8): newly allocated buffer containing the binary data that @text represents. The returned buffer must be freed with g_free().
* Since: 2.12
@@ -9860,9 +9912,9 @@
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
* @name: an application's name
- * @exec: (allow-none): location for the command line of the application, or %NULL
- * @count: (allow-none): return location for the registration count, or %NULL
- * @stamp: (allow-none): return location for the last registration time, or %NULL
+ * @exec: (allow-none) (out): return location for the command line of the application, or %NULL
+ * @count: (allow-none) (out): return location for the registration count, or %NULL
+ * @stamp: (allow-none) (out): return location for the last registration time, or %NULL
* @error: return location for a #GError, or %NULL
*
* Gets the registration informations of @app_name for the bookmark for
@@ -9888,7 +9940,7 @@
* g_bookmark_file_get_applications:
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
- * @length: (allow-none): return location of the length of the returned list, or %NULL
+ * @length: (allow-none) (out): return location of the length of the returned list, or %NULL
* @error: return location for a #GError, or %NULL
*
* Retrieves the names of the applications that have registered the
@@ -9897,7 +9949,7 @@
* In the event the URI cannot be found, %NULL is returned and
* @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
*
- * Returns: a newly allocated %NULL-terminated array of strings. Use g_strfreev() to free it.
+ * Returns: (array length=length) (transfer full): a newly allocated %NULL-terminated array of strings. Use g_strfreev() to free it.
* Since: 2.12
*/
@@ -9922,7 +9974,7 @@
* g_bookmark_file_get_groups:
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
- * @length: (allow-none): return location for the length of the returned string, or %NULL
+ * @length: (allow-none) (out): return location for the length of the returned string, or %NULL
* @error: return location for a #GError, or %NULL
*
* Retrieves the list of group names of the bookmark for @uri.
@@ -9933,7 +9985,7 @@
* The returned array is %NULL terminated, so @length may optionally
* be %NULL.
*
- * Returns: a newly allocated %NULL-terminated array of group names. Use g_strfreev() to free it.
+ * Returns: (array length=length) (transfer full): a newly allocated %NULL-terminated array of group names. Use g_strfreev() to free it.
* Since: 2.12
*/
@@ -9942,8 +9994,8 @@
* g_bookmark_file_get_icon:
* @bookmark: a #GBookmarkFile
* @uri: a valid URI
- * @href: (allow-none): return location for the icon's location or %NULL
- * @mime_type: (allow-none): return location for the icon's MIME type or %NULL
+ * @href: (allow-none) (out): return location for the icon's location or %NULL
+ * @mime_type: (allow-none) (out): return location for the icon's MIME type or %NULL
* @error: return location for a #GError or %NULL
*
* Gets the icon of the bookmark for @uri.
@@ -10040,13 +10092,13 @@
/**
* g_bookmark_file_get_uris:
* @bookmark: a #GBookmarkFile
- * @length: (allow-none): return location for the number of returned URIs, or %NULL
+ * @length: (allow-none) (out): return location for the number of returned URIs, or %NULL
*
* Returns all URIs of the bookmarks in the bookmark file @bookmark.
* The array of returned URIs will be %NULL-terminated, so @length may
* optionally be %NULL.
*
- * Returns: a newly allocated %NULL-terminated array of strings. Use g_strfreev() to free it.
+ * Returns: (array length=length) (transfer full): a newly allocated %NULL-terminated array of strings. Use g_strfreev() to free it.
* Since: 2.12
*/
@@ -10445,7 +10497,7 @@
/**
* g_bookmark_file_to_data:
* @bookmark: a #GBookmarkFile
- * @length: (allow-none): return location for the length of the returned string, or %NULL
+ * @length: (allow-none) (out): return location for the length of the returned string, or %NULL
* @error: return location for a #GError, or %NULL
*
* This function outputs @bookmark as a string.
@@ -11010,7 +11062,7 @@
/**
- * g_checksum_get_digest:
+ * g_checksum_get_digest: (skip)
* @checksum: a #GChecksum
* @buffer: output buffer
* @digest_len: an inout parameter. The caller initializes it to the size of @buffer. After the call it contains the length of the digest.
@@ -11059,7 +11111,7 @@
* will be closed and it won't be possible to call g_checksum_update()
* on it anymore.
*
- * Returns: the newly created #GChecksum, or %NULL. Use g_checksum_free() to free the memory allocated by it.
+ * Returns: (transfer full): the newly created #GChecksum, or %NULL. Use g_checksum_free() to free the memory allocated by it.
* Since: 2.16
*/
@@ -11088,7 +11140,7 @@
/**
* g_checksum_update:
* @checksum: a #GChecksum
- * @data: buffer used to compute the checksum
+ * @data: (array length=length) (element-type guint8): buffer used to compute the checksum
* @length: size of the buffer, or -1 if it is a null-terminated string.
*
* Feeds @data into an existing #GChecksum. The checksum must still be
@@ -11186,9 +11238,9 @@
* g_spawn_close_pid() in the callback function for the source.
*
* Note further that using g_child_watch_source_new() is not
- * compatible with calling <literal>waitpid(-1)</literal> in
- * the application. Calling waitpid() for individual pids will
- * still work fine.
+ * compatible with calling <literal>waitpid</literal> with a
+ * nonpositive first argument in the application. Calling waitpid()
+ * for individual pids will still work fine.
*
* Returns: the newly-created child watch source
* Since: 2.4
@@ -11249,6 +11301,21 @@
/**
+ * g_close:
+ * @fd: A file descriptor
+ * @error: a #GError
+ *
+ * This wraps the close() call; in case of error, %errno will be
+ * preserved, but the error will also be stored as a #GError in @error.
+ *
+ * Besides using #GError, there is another major reason to prefer this
+ * function over the call provided by the system; on Unix, it will
+ * attempt to correctly handle %EINTR, which has platform-specific
+ * semantics.
+ */
+
+
+/**
* g_compute_checksum_for_bytes:
* @checksum_type: a #GChecksumType
* @data: binary blob to compute the digest of
@@ -11267,7 +11334,7 @@
/**
* g_compute_checksum_for_data:
* @checksum_type: a #GChecksumType
- * @data: binary blob to compute the digest of
+ * @data: (array length=length) (element-type guint8): binary blob to compute the digest of
* @length: length of @data
*
* Computes the checksum for a binary @data of @length. This is a
@@ -11396,6 +11463,8 @@
* @mutex: a #GMutex that is currently locked
*
* Atomically releases @mutex and waits until @cond is signalled.
+ * When this function returns, @mutex is locked again and owned by the
+ * calling thread.
*
* When using condition variables, it is possible that a spurious wakeup
* may occur (ie: g_cond_wait() returns even though g_cond_signal() was
@@ -12605,7 +12674,7 @@
*
* Calculates the difference in time between @end and @begin. The
* #GTimeSpan that is returned is effectively @end - @begin (ie:
- * positive if the first simparameter is larger).
+ * positive if the first parameter is larger).
*
* Returns: the difference between the two #GDateTime, as a time span expressed in microseconds.
* Since: 2.26
@@ -14551,31 +14620,31 @@
/**
* g_get_home_dir:
*
- * Gets the current user's home directory as defined in the
- * password database.
+ * Gets the current user's home directory.
*
- * Note that in contrast to traditional UNIX tools, this function
- * prefers <filename>passwd</filename> entries over the <envar>HOME</envar>
- * environment variable.
+ * As with most UNIX tools, this function will return the value of the
+ * <envar>HOME</envar> environment variable if it is set to an existing
+ * absolute path name, falling back to the <filename>passwd</filename>
+ * file in the case that it is unset.
*
- * One of the reasons for this decision is that applications in many
- * cases need special handling to deal with the case where
- * <envar>HOME</envar> is
- * <simplelist>
- * <member>Not owned by the user</member>
- * <member>Not writeable</member>
- * <member>Not even readable</member>
- * </simplelist>
- * Since applications are in general <emphasis>not</emphasis> written
- * to deal with these situations it was considered better to make
- * g_get_home_dir() not pay attention to <envar>HOME</envar> and to
- * return the real home directory for the user. If applications
- * want to pay attention to <envar>HOME</envar>, they can do:
- * |[
- * const char *homedir = g_getenv ("HOME");
- * if (!homedir)
- * homedir = g_get_home_dir (<!-- -->);
- * ]|
+ * If the path given in <envar>HOME</envar> is non-absolute, does not
+ * exist, or is not a directory, the result is undefined.
+ *
+ * <note><para>
+ * Before version 2.36 this function would ignore the
+ * <envar>HOME</envar> environment variable, taking the value from the
+ * <filename>passwd</filename> database instead. This was changed to
+ * increase the compatibility of GLib with other programs (and the XDG
+ * basedir specification) and to increase testability of programs
+ * based on GLib (by making it easier to run them from test
+ * frameworks).
+ * </para><para>
+ * If your program has a strong requirement for either the new or the
+ * old behaviour (and if you don't wish to increase your GLib
+ * dependency to ensure that the new behaviour is in effect) then you
+ * should either directly check the <envar>HOME</envar> environment
+ * variable yourself or unset it before calling any functions in GLib.
+ * </para></note>
*
* Returns: the current user's home directory
*/
@@ -14668,6 +14737,19 @@
/**
+ * g_get_num_processors:
+ *
+ * Determine the approximate number of threads that the system will
+ * schedule simultaneously for this process. This is intended to be
+ * used as a parameter to g_thread_pool_new() for CPU bound tasks and
+ * similar cases.
+ *
+ * Returns: Number of schedulable threads, always greater than 0
+ * Since: 2.36
+ */
+
+
+/**
* g_get_prgname:
*
* Gets the name of the program. This name should <emphasis>not</emphasis>
@@ -14775,12 +14857,19 @@
/**
* g_get_tmp_dir:
*
- * Gets the directory to use for temporary files. This is found from
- * inspecting the environment variables <envar>TMPDIR</envar>,
- * <envar>TMP</envar>, and <envar>TEMP</envar> in that order. If none
- * of those are defined "/tmp" is returned on UNIX and "C:\" on Windows.
- * The encoding of the returned string is system-defined. On Windows,
- * it is always UTF-8. The return value is never %NULL or the empty string.
+ * Gets the directory to use for temporary files.
+ *
+ * On UNIX, this is taken from the <envar>TMPDIR</envar> environment
+ * variable. If the variable is not set, <literal>P_tmpdir</literal> is
+ * used, as defined by the system C library. Failing that, a hard-coded
+ * default of "/tmp" is returned.
+ *
+ * On Windows, the <envar>TEMP</envar> environment variable is used,
+ * with the root directory of the Windows installation (eg: "C:\") used
+ * as a default.
+ *
+ * The encoding of the returned string is system-defined. On Windows, it
+ * is always UTF-8. The return value is never %NULL or the empty string.
*
* Returns: the directory to use for temporary files.
*/
@@ -15054,8 +15143,8 @@
* g_hash_table_get_keys:
* @hash_table: a #GHashTable
*
- * Retrieves every key inside @hash_table. The returned data
- * is valid until @hash_table is modified.
+ * Retrieves every key inside @hash_table. The returned data is valid
+ * until changes to the hash release those keys.
*
* Returns: a #GList containing all the keys inside the hash table. The content of the list is owned by the hash table and should not be modified or freed. Use g_list_free() when done using the list.
* Since: 2.14
@@ -16119,8 +16208,6 @@
/**
* g_io_channel_error_quark:
*
- *
- *
* Returns: the quark used as %G_IO_CHANNEL_ERROR
*/
@@ -16326,7 +16413,7 @@
/**
* g_io_channel_read_unichar:
* @channel: a #GIOChannel
- * @thechar: a location to return a character
+ * @thechar: (out): a location to return a character
* @error: a location to return an error of type #GConvertError or #GIOChannelError
*
* Reads a Unicode character from @channel.
@@ -16930,7 +17017,7 @@
* returned array is %NULL-terminated, so @length may optionally
* be %NULL.
*
- * Returns: (array length=length zero-terminated=1) (element-type utf8) (transfer full): a newly allocated %NULL-terminated string array or %NULL if the key isn't found. The string array should be freed with g_strfreev().
+ * Returns: (array zero-terminated=1 length=length) (element-type utf8) (transfer full): a newly allocated %NULL-terminated string array or %NULL if the key isn't found. The string array should be freed with g_strfreev().
* Since: 2.6
*/
@@ -16982,7 +17069,7 @@
* event that the @group_name cannot be found, %NULL is returned
* and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
*
- * Returns: (array length=length zero-terminated=1) (element-type utf8) (transfer full): a %NULL-terminated string array or %NULL if the specified key cannot be found. The array should be freed with g_strfreev().
+ * Returns: (array zero-terminated=1 length=length) (element-type utf8) (transfer full): a %NULL-terminated string array or %NULL if the specified key cannot be found. The array should be freed with g_strfreev().
* Since: 2.6
*/
@@ -17352,7 +17439,7 @@
* @group_name: a group name
* @key: a key
* @locale: a locale identifier
- * @list: (array length=length zero-terminated=1): a %NULL-terminated array of locale string values
+ * @list: (array zero-terminated=1 length=length): a %NULL-terminated array of locale string values
* @length: the length of @list
*
* Associates a list of string values for @key and @locale under
@@ -17385,7 +17472,7 @@
* @key_file: a #GKeyFile
* @group_name: a group name
* @key: a key
- * @list: (array length=length zero-terminated=1) (element-type utf8): an array of string values
+ * @list: (array zero-terminated=1 length=length) (element-type utf8): an array of string values
* @length: number of string values in @list
*
* Associates a list of string values for @key under @group_name.
@@ -18182,7 +18269,7 @@
*
* Adds a file descriptor to the set of file descriptors polled for
* this context. This will very seldom be used directly. Instead
- * a typical event source will use g_source_add_poll() instead.
+ * a typical event source will use g_source_add_unix_fd() instead.
*/
@@ -18560,8 +18647,34 @@
* g_main_context_wakeup:
* @context: a #GMainContext
*
- * If @context is currently waiting in a poll(), interrupt
- * the poll(), and continue the iteration process.
+ * If @context is currently blocking in g_main_context_iteration()
+ * waiting for a source to become ready, cause it to stop blocking
+ * and return. Otherwise, cause the next invocation of
+ * g_main_context_iteration() to return without blocking.
+ *
+ * This API is useful for low-level control over #GMainContext; for
+ * example, integrating it with main loop implementations such as
+ * #GMainLoop.
+ *
+ * Another related use for this function is when implementing a main
+ * loop with a termination condition, computed from multiple threads:
+ *
+ * |[
+ * #define NUM_TASKS 10
+ * static volatile gint tasks_remaining = NUM_TASKS;
+ * ...
+ *
+ * while (g_atomic_int_get (&tasks_remaining) != 0)
+ * g_main_context_iteration (NULL, TRUE);
+ * ]|
+ *
+ * Then in a thread:
+ * |[
+ * perform_work();
+ *
+ * if (g_atomic_int_dec_and_test (&tasks_remaining))
+ * g_main_context_wakeup (NULL);
+ * ]|
*/
@@ -19292,6 +19405,28 @@
/**
+ * g_markup_parse_context_ref:
+ * @context: a #GMarkupParseContext
+ *
+ * Increases the reference count of @context.
+ *
+ * Returns: the same @context
+ * Since: 2.36
+ */
+
+
+/**
+ * g_markup_parse_context_unref:
+ * @context: a #GMarkupParseContext
+ *
+ * Decreases the reference count of @context. When its reference count
+ * drops to 0, it is freed.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_markup_printf_escaped:
* @format: printf() style format string
* @...: the arguments to insert in the format string
@@ -19566,19 +19701,11 @@
* stops at the partial match.
* When both #G_REGEX_MATCH_PARTIAL_SOFT and #G_REGEX_MATCH_PARTIAL_HARD
* are set, the latter takes precedence.
- * See <ulink>man:pcrepartial</ulink> for more information on partial matching.
*
- * Because of the way certain internal optimizations are implemented
- * the partial matching algorithm cannot be used with all patterns.
- * So repeated single characters such as "a{2,4}" and repeated single
- * meta-sequences such as "\d+" are not permitted if the maximum number
- * of occurrences is greater than one. Optional items such as "\d?"
- * (where the maximum is one) are permitted. Quantifiers with any values
- * are permitted after parentheses, so the invalid examples above can be
- * coded thus "(a){2,4}" and "(\d)+". If #G_REGEX_MATCH_PARTIAL or
- * #G_REGEX_MATCH_PARTIAL_HARD is set
- * for a pattern that does not conform to the restrictions, matching
- * functions return an error.
+ * There were formerly some restrictions on the pattern for partial matching.
+ * The restrictions no longer apply.
+ *
+ * See <ulink>man:pcrepartial</ulink> for more information on partial matching.
*
* Returns: %TRUE if the match was partial, %FALSE otherwise
* Since: 2.14
@@ -20556,7 +20683,7 @@
/**
* g_option_context_new:
- * @parameter_string: a string which is displayed in the first line of <option>--help</option> output, after the usage summary <literal><replaceable>programname</replaceable> [OPTION...]</literal>
+ * @parameter_string: (allow-none): a string which is displayed in the first line of <option>--help</option> output, after the usage summary <literal><replaceable>programname</replaceable> [OPTION...]</literal>
*
* Creates a new option context.
*
@@ -22480,6 +22607,19 @@
/**
+ * g_regex_get_max_lookbehind:
+ * @regex: a #GRegex structure
+ *
+ * Gets the number of characters in the longest lookbehind assertion in the
+ * pattern. This information is useful when doing multi-segment matching using
+ * the partial matching facilities.
+ *
+ * Returns: the number of characters in the longest lookbehind assertion.
+ * Since: 2.38
+ */
+
+
+/**
* g_regex_get_pattern:
* @regex: a #GRegex structure
*
@@ -23815,7 +23955,7 @@
* doing unsorted insertions.
* </para></note>
*
- * Returns: an #GSequenceIter pointing to the position of the first item found equal to @data according to @cmp_func and @cmp_data.
+ * Returns: an #GSequenceIter pointing to the position of the first item found equal to @data according to @cmp_func and @cmp_data, or %NULL if no such item exists.
* Since: 2.28
*/
@@ -23843,7 +23983,7 @@
* doing unsorted insertions.
* </para></note>
*
- * Returns: an #GSequenceIter pointing to the position of the first item found equal to @data according to @cmp_func and @cmp_data.
+ * Returns: an #GSequenceIter pointing to the position of the first item found equal to @data according to @cmp_func and @cmp_data, or %NULL if no such item exists.
* Since: 2.28
*/
@@ -25001,6 +25141,32 @@
* event source. The event source's check function will typically test
* the @revents field in the #GPollFD struct and return %TRUE if events need
* to be processed.
+ *
+ * Using this API forces the linear scanning of event sources on each
+ * main loop iteration. Newly-written event sources should try to use
+ * g_source_add_unix_fd() instead of this API.
+ */
+
+
+/**
+ * g_source_add_unix_fd:
+ * @source: a #GSource
+ * @fd: the fd to monitor
+ * @events: an event mask
+ *
+ * Monitors @fd for the IO events in @events.
+ *
+ * The tag returned by this function can be used to remove or modify the
+ * monitoring of the fd using g_source_remove_unix_fd() or
+ * g_source_modify_unix_fd().
+ *
+ * It is not necessary to remove the fd before destroying the source; it
+ * will be cleaned up automatically.
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Returns: an opaque tag
+ * Since: 2.36
*/
@@ -25103,6 +25269,20 @@
/**
+ * g_source_get_ready_time:
+ * @source: a #GSource
+ *
+ * Gets the "ready time" of @source, as set by
+ * g_source_set_ready_time().
+ *
+ * Any time before the current monotonic time (including 0) is an
+ * indication that the source will fire immediately.
+ *
+ * Returns: the monotonic ready time, -1 for "never"
+ */
+
+
+/**
* g_source_get_time:
* @source: a #GSource
*
@@ -25190,6 +25370,25 @@
/**
+ * g_source_modify_unix_fd:
+ * @source: a #GSource
+ * @tag: the tag from g_source_add_unix_fd()
+ * @new_events: the new event mask to watch
+ *
+ * Updates the event mask to watch for the fd identified by @tag.
+ *
+ * @tag is the tag returned from g_source_add_unix_fd().
+ *
+ * If you want to remove a fd, don't set its event mask to zero.
+ * Instead, call g_source_remove_unix_fd().
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_source_new:
* @source_funcs: structure containing functions that implement the sources behavior.
* @struct_size: size of the #GSource structure to create.
@@ -25208,6 +25407,24 @@
/**
+ * g_source_query_unix_fd:
+ * @source: a #GSource
+ * @tag: the tag from g_source_add_unix_fd()
+ *
+ * Queries the events reported for the fd corresponding to @tag on
+ * @source during the last poll.
+ *
+ * The return value of this function is only defined when the function
+ * is called from the check or dispatch functions for @source.
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Returns: the conditions reported on the fd
+ * Since: 2.36
+ */
+
+
+/**
* g_source_ref:
* @source: a #GSource
*
@@ -25282,6 +25499,23 @@
/**
+ * g_source_remove_unix_fd:
+ * @source: a #GSource
+ * @tag: the tag from g_source_add_unix_fd()
+ *
+ * Reverses the effect of a previous call to g_source_add_unix_fd().
+ *
+ * You only need to call this if you want to remove an fd from being
+ * watched while keeping the same source around. In the normal case you
+ * will just want to destroy the source.
+ *
+ * As the name suggests, this function is not available on Windows.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_source_set_callback:
* @source: the source
* @func: a callback function
@@ -25387,6 +25621,32 @@
/**
+ * g_source_set_ready_time:
+ * @source: a #GSource
+ * @ready_time: the monotonic time at which the source will be ready, 0 for "immediately", -1 for "never"
+ *
+ * Sets a #GSource to be dispatched when the given monotonic time is
+ * reached (or passed). If the monotonic time is in the past (as it
+ * always will be if @ready_time is 0) then the source will be
+ * dispatched immediately.
+ *
+ * If @ready_time is -1 then the source is never woken up on the basis
+ * of the passage of time.
+ *
+ * Dispatching the source does not reset the ready time. You should do
+ * so yourself, from the source dispatch function.
+ *
+ * Note that if you have a pair of sources where the ready time of one
+ * suggests that it will be delivered first but the priority for the
+ * other suggests that it would be delivered first, and the ready time
+ * for both sources is reached during the same main context iteration
+ * then the order of dispatch is undefined.
+ *
+ * Since: 2.36
+ */
+
+
+/**
* g_source_unref:
* @source: a #GSource
*
@@ -25760,7 +26020,7 @@
* passing %NULL for @standard_output and @standard_error.
*
* If @exit_status is non-%NULL, the platform-specific exit status of
- * the child is stored there; see the doucumentation of
+ * the child is stored there; see the documentation of
* g_spawn_check_exit_status() for how to use and interpret this.
* Note that it is invalid to pass %G_SPAWN_DO_NOT_REAP_CHILD in
* @flags.
@@ -26818,7 +27078,7 @@
* characters of the strings.
*
* Returns: 0 if the strings match, a negative value if @s1 &lt; @s2, or a positive value if @s1 &gt; @s2.
- * Deprecated: 2.2: The problem with g_strncasecmp() is that it does the comparison by calling toupper()/tolower(). These functions are locale-specific and operate on single bytes. However, it is impossible to handle things correctly from an I18N standpoint by operating on bytes, since characters may be multibyte. Thus g_strncasecmp() is broken if your string is guaranteed to be ASCII, since it's locale-sensitive, and it's broken if your string is localized, since it doesn't work on many encodings at all, including UTF-8, EUC-JP, etc. There are therefore two replacement functions: g_ascii_strncasecmp(), which only works on ASCII and is not locale-sensitive, and g_utf8_casefold(), which is good for case-insensitive sorting of UTF-8.
+ * Deprecated: 2.2: The problem with g_strncasecmp() is that it does the comparison by calling toupper()/tolower(). These functions are locale-specific and operate on single bytes. However, it is impossible to handle things correctly from an I18N standpoint by operating on bytes, since characters may be multibyte. Thus g_strncasecmp() is broken if your string is guaranteed to be ASCII, since it's locale-sensitive, and it's broken if your string is localized, since it doesn't work on many encodings at all, including UTF-8, EUC-JP, etc. There are therefore two replacement techniques: g_ascii_strncasecmp(), which only works on ASCII and is not locale-sensitive, and g_utf8_casefold() followed by strcmp() on the resulting strings, which is good for case-insensitive sorting of UTF-8.
*/
@@ -27064,6 +27324,11 @@
* slash-separated portions of @testpath. The @test_data argument
* will be passed as first argument to @test_func.
*
+ * If @testpath includes the component "subprocess" anywhere in it,
+ * the test will be skipped by default, and only run if explicitly
+ * required via the <option>-p</option> command-line option or
+ * g_test_trap_subprocess().
+ *
* Since: 2.16
*/
@@ -27092,6 +27357,11 @@
* created on the fly and added to the root fixture, based on the
* slash-separated portions of @testpath.
*
+ * If @testpath includes the component "subprocess" anywhere in it,
+ * the test will be skipped by default, and only run if explicitly
+ * required via the <option>-p</option> command-line option or
+ * g_test_trap_subprocess().
+ *
* Since: 2.16
*/
@@ -27140,6 +27410,40 @@
/**
+ * g_test_build_filename:
+ * @file_type: the type of file (built vs. distributed)
+ * @first_path: the first segment of the pathname
+ * @...: %NULL-terminated additional path segments
+ *
+ * Creates the pathname to a data file that is required for a test.
+ *
+ * This function is conceptually similar to g_build_filename() except
+ * that the first argument has been replaced with a #GTestFileType
+ * argument.
+ *
+ * The data file should either have been distributed with the module
+ * containing the test (%G_TEST_DIST) or built as part of the build
+ * system of that module (%G_TEST_BUILT).
+ *
+ * In order for this function to work in srcdir != builddir situations,
+ * the G_TEST_SRCDIR and G_TEST_BUILDDIR environment variables need to
+ * have been defined. As of 2.38, this is done by the Makefile.decl
+ * included in GLib. Please ensure that your copy is up to date before
+ * using this function.
+ *
+ * In case neither variable is set, this function will fall back to
+ * using the dirname portion of argv[0], possibly removing ".libs".
+ * This allows for casual running of tests directly from the commandline
+ * in the srcdir == builddir case and should also support running of
+ * installed tests, assuming the data files have been installed in the
+ * same relative path as the test binary.
+ *
+ * Returns: the path of the file, to be freed using g_free()
+ * Since: 2.38
+ */
+
+
+/**
* g_test_create_case:
* @test_name: the name for the test case
* @data_size: the size of the fixture data structure
@@ -27204,15 +27508,15 @@
* &ast; context is already owned by another thread.
* &ast;/
* g_test_expect_message (G_LOG_DOMAIN,
- * G_LOG_LEVEL_CRITICIAL,
- * "assertion.*acquired_context.*failed");
+ * G_LOG_LEVEL_CRITICAL,
+ * "assertion*acquired_context*failed");
* g_main_context_push_thread_default (bad_context);
* g_test_assert_expected_messages ();
* ]|
*
* Note that you cannot use this to test g_error() messages, since
* g_error() intentionally never returns even if the program doesn't
- * abort; use g_test_trap_fork() in this case.
+ * abort; use g_test_trap_subprocess() in this case.
*
* Since: 2.34
*/
@@ -27240,6 +27544,64 @@
/**
+ * g_test_failed:
+ *
+ * Returns whether a test has already failed. This will
+ * be the case when g_test_fail(), g_test_incomplete()
+ * or g_test_skip() have been called, but also if an
+ * assertion has failed.
+ *
+ * This can be useful to return early from a test if
+ * continuing after a failed assertion might be harmful.
+ *
+ * The return value of this function is only meaningful
+ * if it is called from inside a test function.
+ *
+ * Returns: %TRUE if the test has failed
+ * Since: 2.38
+ */
+
+
+/**
+ * g_test_get_dir:
+ * @file_type: the type of file (built vs. distributed)
+ *
+ * Gets the pathname of the directory containing test files of the type
+ * specified by @file_type.
+ *
+ * This is approximately the same as calling g_test_build_filename("."),
+ * but you don't need to free the return value.
+ *
+ * Returns: the path of the directory, owned by GLib
+ * Since: 2.38
+ */
+
+
+/**
+ * g_test_get_filename:
+ * @file_type: the type of file (built vs. distributed)
+ * @first_path: the first segment of the pathname
+ * @...: %NULL-terminated additional path segments
+ *
+ * Gets the pathname to a data file that is required for a test.
+ *
+ * This is the same as g_test_build_filename() with two differences.
+ * The first difference is that must only use this function from within
+ * a testcase function. The second difference is that you need not free
+ * the return value -- it will be automatically freed when the testcase
+ * finishes running.
+ *
+ * It is safe to use this function from a thread inside of a testcase
+ * but you must ensure that all such uses occur before the main testcase
+ * function returns (ie: it is best to ensure that all threads have been
+ * joined).
+ *
+ * Returns: the path, automatically freed at the end of the testcase
+ * Since: 2.38
+ */
+
+
+/**
* g_test_get_root:
*
* Get the toplevel test suite for the test path API.
@@ -27250,6 +27612,25 @@
/**
+ * g_test_incomplete:
+ * @msg: (allow-none): explanation
+ *
+ * Indicates that a test failed because of some incomplete
+ * functionality. This function can be called multiple times
+ * from the same test.
+ *
+ * Calling this function will not stop the test from running, you
+ * need to return from the test function yourself. So you can
+ * produce additional diagnostic messages or even continue running
+ * the test.
+ *
+ * If not called from inside a test, this function does nothing.
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_test_init:
* @argc: Address of the @argc parameter of the main() function. Changed if any arguments were handled.
* @argv: Address of the @argv parameter of main(). Any parameters understood by g_test_init() stripped before return.
@@ -27284,6 +27665,8 @@
* <term><option>-p <replaceable>TESTPATH</replaceable></option></term>
* <listitem><para>
* Execute all tests matching <replaceable>TESTPATH</replaceable>.
+ * This can also be used to force a test to run that would otherwise
+ * be skipped (ie, a test whose name contains "/subprocess").
* </para></listitem>
* </varlistentry>
* <varlistentry>
@@ -27314,8 +27697,8 @@
* <term>undefined</term>
* <listitem><para>
* Tests for undefined behaviour, may provoke programming errors
- * under g_test_trap_fork() to check that appropriate assertions
- * or warnings are given
+ * under g_test_trap_subprocess() or g_test_expect_messages() to check
+ * that appropriate assertions or warnings are given
* </para></listitem>
* </varlistentry>
* <varlistentry>
@@ -27338,6 +27721,16 @@
/**
+ * g_test_initialized:
+ *
+ * Returns %TRUE if g_test_init() has been called.
+ *
+ * Returns: %TRUE if g_test_init() has been called.
+ * Since: 2.36
+ */
+
+
+/**
* g_test_log_buffer_free:
*
* Internal function for gtester to free test log messages, no ABI guarantees provided.
@@ -27608,6 +28001,42 @@
/**
+ * g_test_set_nonfatal_assertions:
+ *
+ * Changes the behaviour of g_assert_cmpstr(), g_assert_cmpint(),
+ * g_assert_cmpuint(), g_assert_cmphex(), g_assert_cmpfloat(),
+ * g_assert_true(), g_assert_false(), g_assert_null(), g_assert_no_error(),
+ * g_assert_error(), g_test_assert_expected_messages() and the various
+ * g_test_trap_assert_*() macros to not abort to program, but instead
+ * call g_test_fail() and continue.
+ *
+ * Note that the g_assert_not_reached() and g_assert() are not
+ * affected by this.
+ *
+ * This function can only be called after g_test_init().
+ *
+ * Since: 2.38
+ */
+
+
+/**
+ * g_test_skip:
+ * @msg: (allow-none): explanation
+ *
+ * Indicates that a test was skipped.
+ *
+ * Calling this function will not stop the test from running, you
+ * need to return from the test function yourself. So you can
+ * produce additional diagnostic messages or even continue running
+ * the test.
+ *
+ * If not called from inside a test, this function does nothing.
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_test_slow:
*
* Returns %TRUE if tests are run in slow mode.
@@ -27619,6 +28048,17 @@
/**
+ * g_test_subprocess:
+ *
+ * Returns %TRUE (after g_test_init() has been called) if the test
+ * program is running under g_test_trap_subprocess().
+ *
+ * Returns: %TRUE if the test program is running under g_test_trap_subprocess().
+ * Since: 2.38
+ */
+
+
+/**
* g_test_suite_add:
* @suite: a #GTestSuite
* @test_case: a #GTestCase
@@ -27683,13 +28123,13 @@
/**
* g_test_trap_assert_failed:
*
- * Assert that the last forked test failed.
- * See g_test_trap_fork().
+ * Assert that the last test subprocess failed.
+ * See g_test_trap_subprocess().
*
* This is sometimes used to test situations that are formally considered to
* be undefined behaviour, like inputs that fail a g_return_if_fail()
* check. In these situations you should skip the entire test, including the
- * call to g_test_trap_fork(), unless g_test_undefined() returns %TRUE
+ * call to g_test_trap_subprocess(), unless g_test_undefined() returns %TRUE
* to indicate that undefined behaviour may be tested.
*
* Since: 2.16
@@ -27699,8 +28139,8 @@
/**
* g_test_trap_assert_passed:
*
- * Assert that the last forked test passed.
- * See g_test_trap_fork().
+ * Assert that the last test subprocess passed.
+ * See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -27710,14 +28150,15 @@
* g_test_trap_assert_stderr:
* @serrpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stderr output of the last forked test
- * matches @serrpattern. See g_test_trap_fork().
+ * Assert that the stderr output of the last test subprocess
+ * matches @serrpattern. See g_test_trap_subprocess().
*
- * This is sometimes used to test situations that are formally considered to
- * be undefined behaviour, like inputs that fail a g_return_if_fail()
- * check. In these situations you should skip the entire test, including the
- * call to g_test_trap_fork(), unless g_test_undefined() returns %TRUE
- * to indicate that undefined behaviour may be tested.
+ * This is sometimes used to test situations that are formally
+ * considered to be undefined behaviour, like code that hits a
+ * g_assert() or g_error(). In these situations you should skip the
+ * entire test, including the call to g_test_trap_subprocess(), unless
+ * g_test_undefined() returns %TRUE to indicate that undefined
+ * behaviour may be tested.
*
* Since: 2.16
*/
@@ -27727,8 +28168,8 @@
* g_test_trap_assert_stderr_unmatched:
* @serrpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stderr output of the last forked test
- * does not match @serrpattern. See g_test_trap_fork().
+ * Assert that the stderr output of the last test subprocess
+ * does not match @serrpattern. See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -27738,8 +28179,8 @@
* g_test_trap_assert_stdout:
* @soutpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stdout output of the last forked test matches
- * @soutpattern. See g_test_trap_fork().
+ * Assert that the stdout output of the last test subprocess matches
+ * @soutpattern. See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -27749,8 +28190,8 @@
* g_test_trap_assert_stdout_unmatched:
* @soutpattern: a glob-style <link linkend="glib-Glob-style-pattern-matching">pattern</link>
*
- * Assert that the stdout output of the last forked test
- * does not match @soutpattern. See g_test_trap_fork().
+ * Assert that the stdout output of the last test subprocess
+ * does not match @soutpattern. See g_test_trap_subprocess().
*
* Since: 2.16
*/
@@ -27762,8 +28203,10 @@
* @test_trap_flags: Flags to modify forking behaviour.
*
* Fork the current test program to execute a test case that might
- * not return or that might abort. The forked test case is aborted
- * and considered failing if its run time exceeds @usec_timeout.
+ * not return or that might abort.
+ *
+ * If @usec_timeout is non-0, the forked test case is aborted and
+ * considered failing if its run time exceeds it.
*
* The forking behavior can be configured with the #GTestTrapFlags flags.
*
@@ -27782,25 +28225,24 @@
* g_printerr ("some stderr text: semagic43\n");
* exit (0); /&ast; successful test run &ast;/
* }
- * g_test_trap_assert_passed();
+ * g_test_trap_assert_passed ();
* g_test_trap_assert_stdout ("*somagic17*");
* g_test_trap_assert_stderr ("*semagic43*");
* }
* ]|
*
- * This function is implemented only on Unix platforms.
- *
* Returns: %TRUE for the forked child and %FALSE for the executing parent process.
* Since: 2.16
+ * Deprecated: This function is implemented only on Unix platforms, and is not always reliable due to problems inherent in fork-without-exec. Use g_test_trap_subprocess() instead.
*/
/**
* g_test_trap_has_passed:
*
- * Check the result of the last g_test_trap_fork() call.
+ * Check the result of the last g_test_trap_subprocess() call.
*
- * Returns: %TRUE if the last forked child terminated successfully.
+ * Returns: %TRUE if the last test subprocess terminated successfully.
* Since: 2.16
*/
@@ -27808,20 +28250,91 @@
/**
* g_test_trap_reached_timeout:
*
- * Check the result of the last g_test_trap_fork() call.
+ * Check the result of the last g_test_trap_subprocess() call.
*
- * Returns: %TRUE if the last forked child got killed due to a fork timeout.
+ * Returns: %TRUE if the last test subprocess got killed due to a timeout.
* Since: 2.16
*/
/**
+ * g_test_trap_subprocess:
+ * @test_path: Test to run in a subprocess
+ * @usec_timeout: Timeout for the subprocess test in micro seconds.
+ * @test_flags: Flags to modify subprocess behaviour.
+ *
+ * Respawns the test program to run only @test_path in a subprocess.
+ * This can be used for a test case that might not return, or that
+ * might abort. @test_path will normally be the name of the parent
+ * test, followed by "<literal>/subprocess/</literal>" and then a name
+ * for the specific subtest (or just ending with
+ * "<literal>/subprocess</literal>" if the test only has one child
+ * test); tests with names of this form will automatically be skipped
+ * in the parent process.
+ *
+ * If @usec_timeout is non-0, the test subprocess is aborted and
+ * considered failing if its run time exceeds it.
+ *
+ * The subprocess behavior can be configured with the
+ * #GTestSubprocessFlags flags.
+ *
+ * You can use methods such as g_test_trap_assert_passed(),
+ * g_test_trap_assert_failed(), and g_test_trap_assert_stderr() to
+ * check the results of the subprocess. (But note that
+ * g_test_trap_assert_stdout() and g_test_trap_assert_stderr()
+ * cannot be used if @test_flags specifies that the child should
+ * inherit the parent stdout/stderr.)
+ *
+ * If your <literal>main ()</literal> needs to behave differently in
+ * the subprocess, you can call g_test_subprocess() (after calling
+ * g_test_init()) to see whether you are in a subprocess.
+ *
+ * The following example tests that calling
+ * <literal>my_object_new(1000000)</literal> will abort with an error
+ * message.
+ *
+ * |[
+ * static void
+ * test_create_large_object_subprocess (void)
+ * {
+ * my_object_new (1000000);
+ * }
+ *
+ * static void
+ * test_create_large_object (void)
+ * {
+ * g_test_trap_subprocess ("/myobject/create_large_object/subprocess", 0, 0);
+ * g_test_trap_assert_failed ();
+ * g_test_trap_assert_stderr ("*ERROR*too large*");
+ * }
+ *
+ * int
+ * main (int argc, char **argv)
+ * {
+ * g_test_init (&argc, &argv, NULL);
+ *
+ * g_test_add_func ("/myobject/create_large_object",
+ * test_create_large_object);
+ * /&ast; Because of the '/subprocess' in the name, this test will
+ * &ast; not be run by the g_test_run () call below.
+ * &ast;/
+ * g_test_add_func ("/myobject/create_large_object/subprocess",
+ * test_create_large_object_subprocess);
+ *
+ * return g_test_run ();
+ * }
+ * ]|
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_test_undefined:
*
* Returns %TRUE if tests may provoke assertions and other formally-undefined
- * behaviour under g_test_trap_fork(), to verify that appropriate warnings
- * are given. It can be useful to turn this off if running tests under
- * valgrind.
+ * behaviour, to verify that appropriate warnings are given. It might, in some
+ * cases, be useful to turn this off if running tests under valgrind.
*
* Returns: %TRUE if tests may provoke programming errors
*/
@@ -27886,7 +28399,7 @@
/**
* g_thread_new:
- * @name: a name for the new thread
+ * @name: (allow-none): an (optional) name for the new thread
* @func: a function to execute in the new thread
* @data: an argument to supply to the new thread
*
@@ -27897,6 +28410,7 @@
* with g_thread_join().
*
* The @name can be useful for discriminating threads in a debugger.
+ * It is not used for other purposes and does not have to be unique.
* Some systems restrict the length of @name to 16 bytes.
*
* If the thread can not be created the program aborts. See
@@ -28189,7 +28703,7 @@
/**
* g_thread_try_new:
- * @name: a name for the new thread
+ * @name: (allow-none): an (optional) name for the new thread
* @func: a function to execute in the new thread
* @data: an argument to supply to the new thread
* @error: return location for error, or %NULL
@@ -28403,20 +28917,50 @@
* something that would pass as a valid value for the
* <varname>TZ</varname> environment variable (including %NULL).
*
+ * In Windows, @identifier can also be the unlocalized name of a time
+ * zone for standard time, for example "Pacific Standard Time".
+ *
* Valid RFC3339 time offsets are <literal>"Z"</literal> (for UTC) or
* <literal>"±hh:mm"</literal>. ISO 8601 additionally specifies
- * <literal>"±hhmm"</literal> and <literal>"±hh"</literal>.
- *
- * The <varname>TZ</varname> environment variable typically corresponds
- * to the name of a file in the zoneinfo database, but there are many
- * other possibilities. Note that those other possibilities are not
- * currently implemented, but are planned.
+ * <literal>"±hhmm"</literal> and <literal>"±hh"</literal>. Offsets are
+ * time values to be added to Coordinated Universal Time (UTC) to get
+ * the local time.
+ *
+ * In Unix, the <varname>TZ</varname> environment variable typically
+ * corresponds to the name of a file in the zoneinfo database, or
+ * string in "std offset [dst [offset],start[/time],end[/time]]"
+ * (POSIX) format. There are no spaces in the specification. The
+ * name of standard and daylight savings time zone must be three or more
+ * alphabetic characters. Offsets are time values to be added to local
+ * time to get Coordinated Universal Time (UTC) and should be
+ * <literal>"[±]hh[[:]mm[:ss]]"</literal>. Dates are either
+ * <literal>"Jn"</literal> (Julian day with n between 1 and 365, leap
+ * years not counted), <literal>"n"</literal> (zero-based Julian day
+ * with n between 0 and 365) or <literal>"Mm.w.d"</literal> (day d
+ * (0 <= d <= 6) of week w (1 <= w <= 5) of month m (1 <= m <= 12), day
+ * 0 is a Sunday). Times are in local wall clock time, the default is
+ * 02:00:00.
+ *
+ * In Windows, the "tzn[+|–]hh[:mm[:ss]][dzn]" format is used, but also
+ * accepts POSIX format. The Windows format uses US rules for all time
+ * zones; daylight savings time is 60 minutes behind the standard time
+ * with date and time of change taken from Pacific Standard Time.
+ * Offsets are time values to be added to the local time to get
+ * Coordinated Universal Time (UTC).
*
* g_time_zone_new_local() calls this function with the value of the
* <varname>TZ</varname> environment variable. This function itself is
* independent of the value of <varname>TZ</varname>, but if @identifier
* is %NULL then <filename>/etc/localtime</filename> will be consulted
- * to discover the correct timezone.
+ * to discover the correct time zone on Unix and the registry will be
+ * consulted or GetTimeZoneInformation() will be used to get the local
+ * time zone on Windows.
+ *
+ * If intervals are not available, only time zone rules from
+ * <varname>TZ</varname> environment variable or other means, then they
+ * will be computed from year 1900 to 2037. If the maximum year for the
+ * rules is available and it is greater than 2037, then it will followed
+ * instead.
*
* See <ulink
* url='http://tools.ietf.org/html/rfc3339#section-5.6'>RFC3339
@@ -28425,7 +28969,10 @@
* full list of valid time offsets. See <ulink
* url='http://www.gnu.org/s/libc/manual/html_node/TZ-Variable.html'>The
* GNU C Library manual</ulink> for an explanation of the possible
- * values of the <varname>TZ</varname> environment variable.
+ * values of the <varname>TZ</varname> environment variable. See <ulink
+ * url='http://msdn.microsoft.com/en-us/library/ms912391%28v=winembedded.11%29.aspx'>
+ * Microsoft Time Zone Index Values</ulink> for the list of time zones
+ * on Windows.
*
* You should release the return value by calling g_time_zone_unref()
* when you are done with it.
@@ -29673,6 +30220,68 @@
/**
+ * g_unix_fd_add:
+ * @fd: a file descriptor
+ * @condition: IO conditions to watch for on @fd
+ * @function: a #GPollFDFunc
+ * @user_data: data to pass to @function
+ *
+ * Sets a function to be called when the IO condition, as specified by
+ * @condition becomes true for @fd.
+ *
+ * @function will be called when the specified IO condition becomes
+ * %TRUE. The function is expected to clear whatever event caused the
+ * IO condition to become true and return %TRUE in order to be notified
+ * when it happens again. If @function returns %FALSE then the watch
+ * will be cancelled.
+ *
+ * The return value of this function can be passed to g_source_remove()
+ * to cancel the watch at any time that it exists.
+ *
+ * The source will never close the fd -- you must do it yourself.
+ *
+ * Returns: the ID (greater than 0) of the event source
+ * Since: 2.36
+ */
+
+
+/**
+ * g_unix_fd_add_full:
+ * @priority: the priority of the source
+ * @fd: a file descriptor
+ * @condition: IO conditions to watch for on @fd
+ * @function: a #GUnixFDSourceFunc
+ * @user_data: data to pass to @function
+ * @notify: function to call when the idle is removed, or %NULL
+ *
+ * Sets a function to be called when the IO condition, as specified by
+ * @condition becomes true for @fd.
+ *
+ * This is the same as g_unix_fd_add(), except that it allows you to
+ * specify a non-default priority and a provide a #GDestroyNotify for
+ * @user_data.
+ *
+ * Returns: the ID (greater than 0) of the event source
+ * Since: 2.36
+ */
+
+
+/**
+ * g_unix_fd_source_new:
+ * @fd: a file descriptor
+ * @condition: IO conditions to watch for on @fd
+ *
+ * Creates a #GSource to watch for a particular IO condition on a file
+ * descriptor.
+ *
+ * The source will never close the fd -- you must do it yourself.
+ *
+ * Returns: the newly created #GSource
+ * Since: 2.36
+ */
+
+
+/**
* g_unix_open_pipe:
* @fds: Array of two integers
* @flags: Bitfield of file descriptor flags, see "man 2 fcntl"
@@ -29737,6 +30346,7 @@
* using g_source_remove().
*
* Returns: An ID (greater than 0) for the event source
+ * Rename to: g_unix_signal_add
* Since: 2.30
*/
@@ -29746,11 +30356,15 @@
* @signum: A signal number
*
* Create a #GSource that will be dispatched upon delivery of the UNIX
- * signal @signum. Currently only <literal>SIGHUP</literal>,
- * <literal>SIGINT</literal>, and <literal>SIGTERM</literal> can
- * be monitored. Note that unlike the UNIX default, all sources which
- * have created a watch will be dispatched, regardless of which
- * underlying thread invoked g_unix_signal_source_new().
+ * signal @signum. In GLib versions before 2.36, only
+ * <literal>SIGHUP</literal>, <literal>SIGINT</literal>,
+ * <literal>SIGTERM</literal> can be monitored. In GLib 2.36,
+ * <literal>SIGUSR1</literal> and <literal>SIGUSR2</literal> were
+ * added.
+ *
+ * Note that unlike the UNIX default, all sources which have created a
+ * watch will be dispatched, regardless of which underlying thread
+ * invoked g_unix_signal_source_new().
*
* For example, an effective use of this function is to handle <literal>SIGTERM</literal>
* cleanly; flushing any outstanding files, and then calling
@@ -29821,7 +30435,7 @@
/**
* g_uri_escape_string:
* @unescaped: the unescaped input string.
- * @reserved_chars_allowed: a string of reserved characters that are allowed to be used, or %NULL.
+ * @reserved_chars_allowed: (allow-none): a string of reserved characters that are allowed to be used, or %NULL.
* @allow_utf8: %TRUE if the result can include UTF-8 characters.
*
* Escapes a string for use in a URI.
@@ -29888,7 +30502,7 @@
/**
* g_uri_unescape_string:
* @escaped_string: an escaped string to be unescaped.
- * @illegal_characters: an optional string of illegal characters not to be allowed.
+ * @illegal_characters: (allow-none): a string of illegal characters not to be allowed, or %NULL.
*
* Unescapes a whole escaped string.
*
@@ -30757,7 +31371,7 @@
*
* The return value must be freed using g_free().
*
- * Returns: (transfer full) (array length=length zero-terminated=1) (element-type guint8): a newly allocated string
+ * Returns: (transfer full) (array zero-terminated=1 length=length) (element-type guint8): a newly allocated string
* Since: 2.26
*/
@@ -31038,6 +31652,20 @@
/**
+ * g_variant_get_data_as_bytes:
+ * @value: a #GVariant
+ *
+ * Returns a pointer to the serialised form of a #GVariant instance.
+ * The semantics of this function are exactly the same as
+ * g_variant_get_data(), except that the returned #GBytes holds
+ * a reference to the variant data.
+ *
+ * Returns: (transfer full): A new #GBytes representing the variant data
+ * Since: 2.36
+ */
+
+
+/**
* g_variant_get_double:
* @value: a double #GVariant instance
*
@@ -32011,6 +32639,23 @@
/**
+ * g_variant_new_from_bytes:
+ * @type: a #GVariantType
+ * @bytes: a #GBytes
+ * @trusted: if the contents of @bytes are trusted
+ *
+ * Constructs a new serialised-mode #GVariant instance. This is the
+ * inner interface for creation of new serialised values that gets
+ * called from various functions in gvariant.c.
+ *
+ * A reference is taken on @bytes.
+ *
+ * Returns: (transfer none): a new #GVariant with a floating reference
+ * Since: 2.36
+ */
+
+
+/**
* g_variant_new_from_data:
* @type: a definite #GVariantType
* @data: (array length=size) (element-type guint8): the serialised data
@@ -32213,6 +32858,22 @@
/**
+ * g_variant_new_printf: (skip)
+ * @format_string: a printf-style format string
+ * @...: arguments for @format_string
+ *
+ * Creates a string-type GVariant using printf formatting.
+ *
+ * This is similar to calling g_strdup_printf() and then
+ * g_variant_new_string() but it saves a temporary variable and an
+ * unnecessary copy.
+ *
+ * Returns: (transfer none): a floating reference to a new string #GVariant instance
+ * Since: 2.38
+ */
+
+
+/**
* g_variant_new_signature:
* @signature: a normal C nul-terminated string
*
@@ -32254,6 +32915,26 @@
/**
+ * g_variant_new_take_string: (skip)
+ * @string: a normal utf8 nul-terminated string
+ *
+ * Creates a string #GVariant with the contents of @string.
+ *
+ * @string must be valid utf8.
+ *
+ * This function consumes @string. g_free() will be called on @string
+ * when it is no longer required.
+ *
+ * You must not modify or access @string in any other way after passing
+ * it to this function. It is even possible that @string is immediately
+ * freed.
+ *
+ * Returns: (transfer none): a floating reference to a new string #GVariant instance
+ * Since: 2.38
+ */
+
+
+/**
* g_variant_new_tuple:
* @children: (array length=n_children): the items to make the tuple out of
* @n_children: the length of @children
diff --git a/gir/gobject-2.0.c b/gir/gobject-2.0.c
index 81e65a32..941b838d 100644
--- a/gir/gobject-2.0.c
+++ b/gir/gobject-2.0.c
@@ -210,6 +210,11 @@
* either one of the #GObject instances it refers to are finalized, or when
* the #GBinding instance loses its last reference.
*
+ * <note><para>Bindings for languages with garbage collection can use
+ * g_binding_unbind() to explicitly release a binding between the source
+ * and target properties, instead of relying on the last reference on the
+ * binding, source, and target instances to drop.</para></note>
+ *
* #GBinding is available since GObject 2.26
*/
@@ -328,8 +333,6 @@
* GValue b = G_VALUE_INIT;
* const gchar *message;
*
- * g_type_init ();
- *
* /&ast; The GValue starts empty &ast;/
* g_assert (!G_VALUE_HOLDS_STRING (&amp;a));
*
@@ -391,9 +394,7 @@
*
* The GType API is the foundation of the GObject system. It provides the
* facilities for registering and managing all fundamental data types,
- * user-defined object and interface types. Before using any GType
- * or GObject functions, g_type_init() must be called to initialize the
- * type system.
+ * user-defined object and interface types.
*
* For type creation and registration purposes, all types fall into one of
* two categories: static or dynamic. Static types are never loaded or
@@ -590,7 +591,8 @@
* /&ast; restore floating state &ast;/
* if (was_floating)
* g_object_force_floating (object);
- * g_object_unref (object); /&ast; release previously acquired reference &ast;/
+ * else
+ * g_object_unref (object); /&ast; release previously acquired reference &ast;/
* ]|
*/
@@ -767,6 +769,22 @@
/**
+ * g_binding_unbind:
+ * @binding: a #GBinding
+ *
+ * Explicitly releases the binding between the source and the target
+ * property expressed by @binding.
+ *
+ * <note>This function will release the reference that is being held on
+ * the @binding instance; if you want to hold on to the #GBinding instance
+ * after calling g_binding_unbind(), you will need to hold a reference
+ * to it.</note>
+ *
+ * Since: 2.38
+ */
+
+
+/**
* g_boxed_copy:
* @boxed_type: The type of @src_boxed.
* @src_boxed: The boxed structure to be copied.
@@ -2429,7 +2447,7 @@
*
* If the previous value was replaced then ownership of the
* old value (@oldval) is passed to the caller, including
- * the registred destroy notify for it (passed out in @old_destroy).
+ * the registered destroy notify for it (passed out in @old_destroy).
* Its up to the caller to free this as he wishes, which may
* or may not include using @old_destroy as sometimes replacement
* should not destroy the object in the normal way.
@@ -2459,7 +2477,7 @@
*
* If the previous value was replaced then ownership of the
* old value (@oldval) is passed to the caller, including
- * the registred destroy notify for it (passed out in @old_destroy).
+ * the registered destroy notify for it (passed out in @old_destroy).
* Its up to the caller to free this as he wishes, which may
* or may not include using @old_destroy as sometimes replacement
* should not destroy the object in the normal way.
@@ -2701,7 +2719,20 @@
/**
- * g_param_spec_boolean: (skip)
+ * g_param_get_default_value:
+ * @param: a #GParamSpec
+ *
+ * Gets the default value of @param as a pointer to a #GValue.
+ *
+ * The #GValue will remain value for the life of @param.
+ *
+ * Returns: a pointer to a #GValue which must not be modified
+ * Since: 2.38
+ */
+
+
+/**
+ * g_param_spec_boolean:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2713,12 +2744,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_boxed: (skip)
+ * g_param_spec_boxed:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2730,12 +2761,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_char: (skip)
+ * g_param_spec_char:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2746,12 +2777,12 @@
*
* Creates a new #GParamSpecChar instance specifying a %G_TYPE_CHAR property.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_double: (skip)
+ * g_param_spec_double:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2765,12 +2796,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_enum: (skip)
+ * g_param_spec_enum:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2783,12 +2814,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_flags: (skip)
+ * g_param_spec_flags:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2801,12 +2832,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_float: (skip)
+ * g_param_spec_float:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2819,7 +2850,7 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
@@ -2885,7 +2916,7 @@
/**
- * g_param_spec_gtype: (skip)
+ * g_param_spec_gtype:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2898,12 +2929,12 @@
* See g_param_spec_internal() for details on property names.
*
* Since: 2.10
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_int: (skip)
+ * g_param_spec_int:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2916,12 +2947,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_int64: (skip)
+ * g_param_spec_int64:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2934,7 +2965,7 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
@@ -2969,7 +3000,7 @@
/**
- * g_param_spec_long: (skip)
+ * g_param_spec_long:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2982,12 +3013,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_object: (skip)
+ * g_param_spec_object:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -2999,7 +3030,7 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
@@ -3018,7 +3049,7 @@
/**
- * g_param_spec_param: (skip)
+ * g_param_spec_param:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3030,12 +3061,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_pointer: (skip)
+ * g_param_spec_pointer:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3045,7 +3076,7 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
@@ -3201,7 +3232,7 @@
/**
- * g_param_spec_string: (skip)
+ * g_param_spec_string:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3212,12 +3243,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_uchar: (skip)
+ * g_param_spec_uchar:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3228,12 +3259,12 @@
*
* Creates a new #GParamSpecUChar instance specifying a %G_TYPE_UCHAR property.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_uint: (skip)
+ * g_param_spec_uint:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3246,12 +3277,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_uint64: (skip)
+ * g_param_spec_uint64:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3265,12 +3296,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_ulong: (skip)
+ * g_param_spec_ulong:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3284,12 +3315,12 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
/**
- * g_param_spec_unichar: (skip)
+ * g_param_spec_unichar:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
@@ -3302,7 +3333,7 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: a newly created parameter specification
+ * Returns: (transfer full): a newly created parameter specification
*/
@@ -3334,12 +3365,12 @@
/**
- * g_param_spec_variant: (skip)
+ * g_param_spec_variant:
* @name: canonical name of the property specified
* @nick: nick name for the property specified
* @blurb: description of the property specified
* @type: a #GVariantType
- * @default_value: (allow-none): a #GVariant of type @type to use as the default value, or %NULL
+ * @default_value: (allow-none) (transfer full): a #GVariant of type @type to use as the default value, or %NULL
* @flags: flags for the property specified
*
* Creates a new #GParamSpecVariant instance specifying a #GVariant
@@ -3349,7 +3380,7 @@
*
* See g_param_spec_internal() for details on property names.
*
- * Returns: the newly created #GParamSpec
+ * Returns: (transfer full): the newly created #GParamSpec
* Since: 2.26
*/
@@ -3591,24 +3622,10 @@
* ensures that the @gobject stays alive during the call to @c_handler
* by temporarily adding a reference count to @gobject.
*
- * Note that there is a bug in GObject that makes this function
- * much less useful than it might seem otherwise. Once @gobject is
- * disposed, the callback will no longer be called, but, the signal
- * handler is <emphasis>not</emphasis> currently disconnected. If the
- * @instance is itself being freed at the same time than this doesn't
- * matter, since the signal will automatically be removed, but
- * if @instance persists, then the signal handler will leak. You
- * should not remove the signal yourself because in a future versions of
- * GObject, the handler <emphasis>will</emphasis> automatically
- * be disconnected.
- *
- * It's possible to work around this problem in a way that will
- * continue to work with future versions of GObject by checking
- * that the signal handler is still connected before disconnected it:
- * <informalexample><programlisting>
- * if (g_signal_handler_is_connected (instance, id))
- * g_signal_handler_disconnect (instance, id);
- * </programlisting></informalexample>
+ * When the @gobject is destroyed the signal handler will be automatically
+ * disconnected. Note that this is not currently threadsafe (ie:
+ * emitting a signal while @gobject is being destroyed in another thread
+ * is not safe).
*
* Returns: the handler id.
*/
@@ -4032,7 +4049,7 @@
*
* Overrides the class closure (i.e. the default handler) for the
* given signal for emissions on instances of @instance_type with
- * callabck @class_handler. @instance_type must be derived from the
+ * callback @class_handler. @instance_type must be derived from the
* type to which the signal belongs.
*
* See g_signal_chain_from_overridden() and
@@ -4277,7 +4294,7 @@
* structures.
*
* Note that the accumulated size of the private structures of
- * a type and all its parent types cannot excced 64 KiB.
+ * a type and all its parent types cannot exceed 64 KiB.
*
* This function should be called in the type's class_init() function.
* The private structure can be retrieved using the
@@ -4337,6 +4354,24 @@
/**
+ * g_type_class_get_instance_private_offset: (skip)
+ * @g_class: a #GTypeClass
+ *
+ * Gets the offset of the private data for instances of @g_class.
+ *
+ * This is how many bytes you should add to the instance pointer of a
+ * class in order to get the private data for the type represented by
+ * @g_class.
+ *
+ * You can only call this function after you have registered a private
+ * data area for @g_class using g_type_class_add_private().
+ *
+ * Returns: the offset, in bytes
+ * Since: 2.38
+ */
+
+
+/**
* g_type_class_peek:
* @type: Type ID of a classed type.
*
@@ -4592,19 +4627,27 @@
/**
- * g_type_init:
+ * g_type_get_type_registration_serial:
*
- * Prior to any use of the type system, g_type_init() has to be called
- * to initialize the type system and assorted other code portions
- * (such as the various fundamental type implementations or the signal
- * system).
+ * Returns an opaque serial number that represents the state of the set of
+ * registered types. Any time a type is registered this serial changes,
+ * which means you can cache information based on type lookups (such as
+ * g_type_from_name()) and know if the cache is still valid at a later
+ * time by comparing the current serial with the one at the type lookup.
*
- * This function is idempotent: If you call it multiple times, all but
- * the first calls will be silently ignored.
+ * Since: 2.36
+ * Returns: An unsigned int, representing the state of type registrations.
+ */
+
+
+/**
+ * g_type_init:
*
- * There is no way to undo the effect of g_type_init().
+ * This function used to initialise the type system. Since GLib 2.36,
+ * the type system is initialised automatically and this function does
+ * nothing.
*
- * Since version 2.24 this also initializes the thread system
+ * Deprecated: 2.36: the type system is now initialised automatically
*/
@@ -4612,9 +4655,14 @@
* g_type_init_with_debug_flags:
* @debug_flags: Bitwise combination of #GTypeDebugFlags values for debugging purposes.
*
- * Similar to g_type_init(), but additionally sets debug flags.
+ * This function used to initialise the type system with debugging
+ * flags. Since GLib 2.36, the type system is initialised automatically
+ * and this function does nothing.
*
- * This function is idempotent.
+ * If you need to enable debugging features, use the GOBJECT_DEBUG
+ * environment variable.
+ *
+ * Deprecated: 2.36: the type system is now initialised automatically
*/
@@ -5159,7 +5207,8 @@
* Sort @value_array using @compare_func to compare the elements according to
* the semantics of #GCompareFunc.
*
- * The current implementation uses Quick-Sort as sorting algorithm.
+ * The current implementation uses the same sorting algorithm as standard
+ * C qsort() function.
*
* Returns: (transfer none): the #GValueArray passed in as @value_array
* Deprecated: 2.32: Use #GArray and g_array_sort().
@@ -5175,7 +5224,8 @@
* Sort @value_array using @compare_func to compare the elements according
* to the semantics of #GCompareDataFunc.
*
- * The current implementation uses Quick-Sort as sorting algorithm.
+ * The current implementation uses the same sorting algorithm as standard
+ * C qsort() function.
*
* Rename to: g_value_array_sort
* Returns: (transfer none): the #GValueArray passed in as @value_array
@@ -5492,8 +5542,6 @@
* g_value_peek_pointer:
* @value: An initialized #GValue structure.
*
- *
- *
* Returns: (transfer none): the value contents as pointer. This function asserts that g_value_fits_pointer() returned %TRUE for the passed in value. This is an internal function introduced mainly for C marshallers.
*/
@@ -5936,8 +5984,6 @@
/**
* g_variant_get_gtype:
*
- *
- *
* Since: 2.24
* Deprecated: 2.26
*/
diff --git a/gir/win32-1.0.gir b/gir/win32-1.0.gir
new file mode 100644
index 00000000..ac9db850
--- /dev/null
+++ b/gir/win32-1.0.gir
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
+ <namespace name="win32" version="1.0"
+ c:identifier-prefixes=""
+ c:symbol-prefixes="Win32">
+ <alias name="HWND" c:type="HWND">
+ <type name="guint" c:type="guint"/>
+ </alias>
+ <alias name="HICON" c:type="HICON">
+ <type name="gulong" c:type="gulong"/>
+ </alias>
+ <alias name="HGDIOBJ" c:type="HGDIOBJ">
+ <type name="gulong" c:type="gulong"/>
+ </alias>
+ </namespace>
+</repository>
+
diff --git a/girepository/cmph-bdz-test.c b/girepository/cmph-bdz-test.c
index fdff9d17..92c445f8 100644
--- a/girepository/cmph-bdz-test.c
+++ b/girepository/cmph-bdz-test.c
@@ -128,7 +128,6 @@ main(int argc, char **argv)
{
gint ret;
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/cmph-bdz/search", test_search);
diff --git a/girepository/cmph/bdz.c b/girepository/cmph/bdz.c
index a385b152..81cd7151 100755
--- a/girepository/cmph/bdz.c
+++ b/girepository/cmph/bdz.c
@@ -489,6 +489,10 @@ int bdz_dump(cmph_t *mphf, FILE *fd)
cmph_uint32 buflen;
register size_t nbytes;
bdz_data_t *data = (bdz_data_t *)mphf->data;
+ cmph_uint32 sizeg;
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
__cmph_dump(mphf, fd);
hash_state_dump(data->hl, &buf, &buflen);
@@ -501,7 +505,7 @@ int bdz_dump(cmph_t *mphf, FILE *fd)
nbytes = fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(&(data->r), sizeof(cmph_uint32), (size_t)1, fd);
- cmph_uint32 sizeg = (cmph_uint32)ceil(data->n/4.0);
+ sizeg = (cmph_uint32)ceil(data->n/4.0);
nbytes = fwrite(data->g, sizeof(cmph_uint8)*sizeg, (size_t)1, fd);
nbytes = fwrite(&(data->k), sizeof(cmph_uint32), (size_t)1, fd);
@@ -509,12 +513,11 @@ int bdz_dump(cmph_t *mphf, FILE *fd)
nbytes = fwrite(&(data->ranktablesize), sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(data->ranktable, sizeof(cmph_uint32)*(data->ranktablesize), (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
#ifdef DEBUG
- cmph_uint32 i;
fprintf(stderr, "G: ");
for (i = 0; i < data->n; ++i) fprintf(stderr, "%u ", GETVALUE(data->g, i));
fprintf(stderr, "\n");
@@ -528,6 +531,9 @@ void bdz_load(FILE *f, cmph_t *mphf)
cmph_uint32 buflen, sizeg;
register size_t nbytes;
bdz_data_t *bdz = (bdz_data_t *)malloc(sizeof(bdz_data_t));
+#ifdef DEBUG
+ cmph_uint32 i = 0;
+#endif
DEBUGP("Loading bdz mphf\n");
mphf->data = bdz;
@@ -554,13 +560,13 @@ void bdz_load(FILE *f, cmph_t *mphf)
bdz->ranktable = (cmph_uint32 *)calloc((size_t)bdz->ranktablesize, sizeof(cmph_uint32));
nbytes = fread(bdz->ranktable, sizeof(cmph_uint32)*(bdz->ranktablesize), (size_t)1, f);
- if (nbytes == 0 && ferror(f)) {
+ if (nbytes == 0 && ferror(f)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return;
}
#ifdef DEBUG
- cmph_uint32 i = 0;
+ i = 0;
fprintf(stderr, "G: ");
for (i = 0; i < bdz->n; ++i) fprintf(stderr, "%u ", GETVALUE(bdz->g,i));
fprintf(stderr, "\n");
@@ -639,6 +645,7 @@ void bdz_pack(cmph_t *mphf, void *packed_mphf)
{
bdz_data_t *data = (bdz_data_t *)mphf->data;
cmph_uint8 * ptr = packed_mphf;
+ cmph_uint32 sizeg;
// packing hl type
CMPH_HASH hl_type = hash_get_type(data->hl);
@@ -665,7 +672,7 @@ void bdz_pack(cmph_t *mphf, void *packed_mphf)
*ptr++ = data->b;
// packing g
- cmph_uint32 sizeg = (cmph_uint32)ceil(data->n/4.0);
+ sizeg = (cmph_uint32)ceil(data->n/4.0);
memcpy(ptr, data->g, sizeof(cmph_uint8)*sizeg);
}
diff --git a/girepository/cmph/bdz_ph.c b/girepository/cmph/bdz_ph.c
index 2e986071..2095f116 100755
--- a/girepository/cmph/bdz_ph.c
+++ b/girepository/cmph/bdz_ph.c
@@ -452,6 +452,10 @@ int bdz_ph_dump(cmph_t *mphf, FILE *fd)
cmph_uint32 sizeg = 0;
register size_t nbytes;
bdz_ph_data_t *data = (bdz_ph_data_t *)mphf->data;
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
+
__cmph_dump(mphf, fd);
hash_state_dump(data->hl, &buf, &buflen);
@@ -466,12 +470,11 @@ int bdz_ph_dump(cmph_t *mphf, FILE *fd)
sizeg = (cmph_uint32)ceil(data->n/5.0);
nbytes = fwrite(data->g, sizeof(cmph_uint8)*sizeg, (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
#ifdef DEBUG
- cmph_uint32 i;
fprintf(stderr, "G: ");
for (i = 0; i < data->n; ++i) fprintf(stderr, "%u ", GETVALUE(data->g, i));
fprintf(stderr, "\n");
@@ -506,7 +509,7 @@ void bdz_ph_load(FILE *f, cmph_t *mphf)
bdz_ph->g = (cmph_uint8 *)calloc((size_t)sizeg, sizeof(cmph_uint8));
nbytes = fread(bdz_ph->g, sizeg*sizeof(cmph_uint8), (size_t)1, f);
- if (nbytes == 0 && ferror(f)) {
+ if (nbytes == 0 && ferror(f)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
}
return;
@@ -556,6 +559,7 @@ void bdz_ph_pack(cmph_t *mphf, void *packed_mphf)
{
bdz_ph_data_t *data = (bdz_ph_data_t *)mphf->data;
cmph_uint8 * ptr = packed_mphf;
+ cmph_uint32 sizeg;
// packing hl type
CMPH_HASH hl_type = hash_get_type(data->hl);
@@ -571,7 +575,7 @@ void bdz_ph_pack(cmph_t *mphf, void *packed_mphf)
ptr += sizeof(data->r);
// packing g
- cmph_uint32 sizeg = (cmph_uint32)ceil(data->n/5.0);
+ sizeg = (cmph_uint32)ceil(data->n/5.0);
memcpy(ptr, data->g, sizeof(cmph_uint8)*sizeg);
}
diff --git a/girepository/cmph/bmz.c b/girepository/cmph/bmz.c
index 9c6cea00..9573825a 100644
--- a/girepository/cmph/bmz.c
+++ b/girepository/cmph/bmz.c
@@ -450,6 +450,10 @@ int bmz_dump(cmph_t *mphf, FILE *fd)
cmph_uint32 two = 2; //number of hash functions
bmz_data_t *data = (bmz_data_t *)mphf->data;
register size_t nbytes;
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
+
__cmph_dump(mphf, fd);
nbytes = fwrite(&two, sizeof(cmph_uint32), (size_t)1, fd);
@@ -470,12 +474,11 @@ int bmz_dump(cmph_t *mphf, FILE *fd)
nbytes = fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(data->g, sizeof(cmph_uint32)*(data->n), (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
#ifdef DEBUG
- cmph_uint32 i;
fprintf(stderr, "G: ");
for (i = 0; i < data->n; ++i) fprintf(stderr, "%u ", data->g[i]);
fprintf(stderr, "\n");
@@ -515,10 +518,11 @@ void bmz_load(FILE *f, cmph_t *mphf)
bmz->g = (cmph_uint32 *)malloc(sizeof(cmph_uint32)*bmz->n);
nbytes = fread(bmz->g, bmz->n*sizeof(cmph_uint32), (size_t)1, f);
- if (nbytes == 0 && ferror(f)) {
+ if (nbytes == 0 && ferror(f)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return;
}
+
#ifdef DEBUG
fprintf(stderr, "G: ");
for (i = 0; i < bmz->n; ++i) fprintf(stderr, "%u ", bmz->g[i]);
@@ -559,6 +563,7 @@ void bmz_pack(cmph_t *mphf, void *packed_mphf)
bmz_data_t *data = (bmz_data_t *)mphf->data;
cmph_uint8 * ptr = packed_mphf;
+ CMPH_HASH h2_type;
// packing h1 type
CMPH_HASH h1_type = hash_get_type(data->hashes[0]);
@@ -570,7 +575,7 @@ void bmz_pack(cmph_t *mphf, void *packed_mphf)
ptr += hash_state_packed_size(h1_type);
// packing h2 type
- CMPH_HASH h2_type = hash_get_type(data->hashes[1]);
+ h2_type = hash_get_type(data->hashes[1]);
*((cmph_uint32 *) ptr) = h2_type;
ptr += sizeof(cmph_uint32);
@@ -612,18 +617,22 @@ cmph_uint32 bmz_search_packed(void *packed_mphf, const char *key, cmph_uint32 ke
{
register cmph_uint8 *h1_ptr = packed_mphf;
register CMPH_HASH h1_type = *((cmph_uint32 *)h1_ptr);
+ register cmph_uint8 *h2_ptr;
+ register CMPH_HASH h2_type;
+ register cmph_uint32 *g_ptr, n, h1, h2;
+
h1_ptr += 4;
- register cmph_uint8 *h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
- register CMPH_HASH h2_type = *((cmph_uint32 *)h2_ptr);
+ h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
+ h2_type = *((cmph_uint32 *)h2_ptr);
h2_ptr += 4;
- register cmph_uint32 *g_ptr = (cmph_uint32 *)(h2_ptr + hash_state_packed_size(h2_type));
+ g_ptr = (cmph_uint32 *)(h2_ptr + hash_state_packed_size(h2_type));
- register cmph_uint32 n = *g_ptr++;
+ n = *g_ptr++;
- register cmph_uint32 h1 = hash_packed(h1_ptr, h1_type, key, keylen) % n;
- register cmph_uint32 h2 = hash_packed(h2_ptr, h2_type, key, keylen) % n;
+ h1 = hash_packed(h1_ptr, h1_type, key, keylen) % n;
+ h2 = hash_packed(h2_ptr, h2_type, key, keylen) % n;
if (h1 == h2 && ++h2 > n) h2 = 0;
return (g_ptr[h1] + g_ptr[h2]);
}
diff --git a/girepository/cmph/bmz8.c b/girepository/cmph/bmz8.c
index 206c48c4..15853c00 100644
--- a/girepository/cmph/bmz8.c
+++ b/girepository/cmph/bmz8.c
@@ -483,7 +483,7 @@ int bmz8_dump(cmph_t *mphf, FILE *fd)
nbytes = fwrite(&(data->m), sizeof(cmph_uint8), (size_t)1, fd);
nbytes = fwrite(data->g, sizeof(cmph_uint8)*(data->n), (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
@@ -528,10 +528,11 @@ void bmz8_load(FILE *f, cmph_t *mphf)
bmz8->g = (cmph_uint8 *)malloc(sizeof(cmph_uint8)*bmz8->n);
nbytes = fread(bmz8->g, bmz8->n*sizeof(cmph_uint8), (size_t)1, f);
- if (nbytes == 0 && ferror(f)) {
+ if (nbytes == 0 && ferror(f)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return;
}
+
#ifdef DEBUG
fprintf(stderr, "G: ");
for (i = 0; i < bmz8->n; ++i) fprintf(stderr, "%u ", bmz8->g[i]);
@@ -571,6 +572,7 @@ void bmz8_pack(cmph_t *mphf, void *packed_mphf)
{
bmz8_data_t *data = (bmz8_data_t *)mphf->data;
cmph_uint8 * ptr = packed_mphf;
+ CMPH_HASH h2_type;
// packing h1 type
CMPH_HASH h1_type = hash_get_type(data->hashes[0]);
@@ -582,7 +584,7 @@ void bmz8_pack(cmph_t *mphf, void *packed_mphf)
ptr += hash_state_packed_size(h1_type);
// packing h2 type
- CMPH_HASH h2_type = hash_get_type(data->hashes[1]);
+ h2_type = hash_get_type(data->hashes[1]);
*((cmph_uint32 *) ptr) = h2_type;
ptr += sizeof(cmph_uint32);
@@ -623,18 +625,22 @@ cmph_uint8 bmz8_search_packed(void *packed_mphf, const char *key, cmph_uint32 ke
{
register cmph_uint8 *h1_ptr = packed_mphf;
register CMPH_HASH h1_type = *((cmph_uint32 *)h1_ptr);
+ register cmph_uint8 *h2_ptr;
+ register CMPH_HASH h2_type;
+ register cmph_uint8 *g_ptr, n, h1, h2;
+
h1_ptr += 4;
- register cmph_uint8 *h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
- register CMPH_HASH h2_type = *((cmph_uint32 *)h2_ptr);
+ h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
+ h2_type = *((cmph_uint32 *)h2_ptr);
h2_ptr += 4;
- register cmph_uint8 *g_ptr = h2_ptr + hash_state_packed_size(h2_type);
+ g_ptr = h2_ptr + hash_state_packed_size(h2_type);
- register cmph_uint8 n = *g_ptr++;
+ n = *g_ptr++;
- register cmph_uint8 h1 = (cmph_uint8)(hash_packed(h1_ptr, h1_type, key, keylen) % n);
- register cmph_uint8 h2 = (cmph_uint8)(hash_packed(h2_ptr, h2_type, key, keylen) % n);
+ h1 = (cmph_uint8)(hash_packed(h1_ptr, h1_type, key, keylen) % n);
+ h2 = (cmph_uint8)(hash_packed(h2_ptr, h2_type, key, keylen) % n);
DEBUGP("key: %s h1: %u h2: %u\n", key, h1, h2);
if (h1 == h2 && ++h2 > n) h2 = 0;
return (cmph_uint8)(g_ptr[h1] + g_ptr[h2]);
diff --git a/girepository/cmph/brz.c b/girepository/cmph/brz.c
index f0c91c4b..cd35c8d8 100755
--- a/girepository/cmph/brz.c
+++ b/girepository/cmph/brz.c
@@ -128,9 +128,10 @@ cmph_t *brz_new(cmph_config_t *mph, double c)
brz_data_t *brzf = NULL;
cmph_uint32 i;
cmph_uint32 iterations = 20;
+ brz_config_data_t *brz;
DEBUGP("c: %f\n", c);
- brz_config_data_t *brz = (brz_config_data_t *)mph->data;
+ brz = (brz_config_data_t *)mph->data;
switch(brz->algo) // validating restrictions over parameter c.
{
case CMPH_BMZ8:
@@ -252,13 +253,14 @@ static int brz_gen_mphf(cmph_config_t *mph)
/* Buffers management */
if (memory_usage + keylen + sizeof(keylen) > brz->memory_availability) // flush buffers
{
+ cmph_uint32 value, sum, keylen1;
if(mph->verbosity)
{
fprintf(stderr, "Flushing %u\n", nkeys_in_buffer);
}
- cmph_uint32 value = buckets_size[0];
- cmph_uint32 sum = 0;
- cmph_uint32 keylen1 = 0;
+ value = buckets_size[0];
+ sum = 0;
+ keylen1 = 0;
buckets_size[0] = 0;
for(i = 1; i < brz->k; i++)
{
@@ -312,14 +314,16 @@ static int brz_gen_mphf(cmph_config_t *mph)
mph->key_source->dispose(mph->key_source->data, key, keylen);
}
if (memory_usage != 0) // flush buffers
- {
+ {
+ cmph_uint32 value;
+ cmph_uint32 sum, keylen1;
if(mph->verbosity)
{
fprintf(stderr, "Flushing %u\n", nkeys_in_buffer);
}
- cmph_uint32 value = buckets_size[0];
- cmph_uint32 sum = 0;
- cmph_uint32 keylen1 = 0;
+ value = buckets_size[0];
+ sum = 0;
+ keylen1 = 0;
buckets_size[0] = 0;
for(i = 1; i < brz->k; i++)
{
@@ -371,7 +375,7 @@ static int brz_gen_mphf(cmph_config_t *mph)
nbytes = fwrite(&(brz->algo), sizeof(brz->algo), (size_t)1, brz->mphf_fd);
nbytes = fwrite(&(brz->k), sizeof(cmph_uint32), (size_t)1, brz->mphf_fd); // number of MPHFs
nbytes = fwrite(brz->size, sizeof(cmph_uint8)*(brz->k), (size_t)1, brz->mphf_fd);
- if (nbytes == 0 && ferror(brz->mphf_fd)) {
+ if (nbytes == 0 && ferror(brz->mphf_fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
@@ -579,7 +583,7 @@ int brz_dump(cmph_t *mphf, FILE *fd)
// Dumping m and the vector offset.
nbytes = fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(data->offset, sizeof(cmph_uint32)*(data->k), (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
@@ -648,24 +652,26 @@ void brz_load(FILE *f, cmph_t *mphf)
nbytes = fread(&(brz->m), sizeof(cmph_uint32), (size_t)1, f);
brz->offset = (cmph_uint32 *)malloc(sizeof(cmph_uint32)*brz->k);
nbytes = fread(brz->offset, sizeof(cmph_uint32)*(brz->k), (size_t)1, f);
- if (nbytes == 0 && ferror(f)) {
+ if (nbytes == 0 && ferror(f)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
}
+
return;
}
static cmph_uint32 brz_bmz8_search(brz_data_t *brz, const char *key, cmph_uint32 keylen, cmph_uint32 * fingerprint)
{
register cmph_uint32 h0;
+ register cmph_uint32 m, n, h1, h2;
+ register cmph_uint8 mphf_bucket;
hash_vector(brz->h0, key, keylen, fingerprint);
h0 = fingerprint[2] % brz->k;
- register cmph_uint32 m = brz->size[h0];
- register cmph_uint32 n = (cmph_uint32)ceil(brz->c * m);
- register cmph_uint32 h1 = hash(brz->h1[h0], key, keylen) % n;
- register cmph_uint32 h2 = hash(brz->h2[h0], key, keylen) % n;
- register cmph_uint8 mphf_bucket;
+ m = brz->size[h0];
+ n = (cmph_uint32)ceil(brz->c * m);
+ h1 = hash(brz->h1[h0], key, keylen) % n;
+ h2 = hash(brz->h2[h0], key, keylen) % n;
if (h1 == h2 && ++h2 >= n) h2 = 0;
mphf_bucket = (cmph_uint8)(brz->g[h0][h1] + brz->g[h0][h2]);
@@ -678,17 +684,20 @@ static cmph_uint32 brz_bmz8_search(brz_data_t *brz, const char *key, cmph_uint32
static cmph_uint32 brz_fch_search(brz_data_t *brz, const char *key, cmph_uint32 keylen, cmph_uint32 * fingerprint)
{
register cmph_uint32 h0;
+ register cmph_uint32 m, b, h1, h2;
+ register double p1, p2;
+ register cmph_uint8 mphf_bucket;
hash_vector(brz->h0, key, keylen, fingerprint);
h0 = fingerprint[2] % brz->k;
- register cmph_uint32 m = brz->size[h0];
- register cmph_uint32 b = fch_calc_b(brz->c, m);
- register double p1 = fch_calc_p1(m);
- register double p2 = fch_calc_p2(b);
- register cmph_uint32 h1 = hash(brz->h1[h0], key, keylen) % m;
- register cmph_uint32 h2 = hash(brz->h2[h0], key, keylen) % m;
- register cmph_uint8 mphf_bucket = 0;
+ m = brz->size[h0];
+ b = fch_calc_b(brz->c, m);
+ p1 = fch_calc_p1(m);
+ p2 = fch_calc_p2(b);
+ h1 = hash(brz->h1[h0], key, keylen) % m;
+ h2 = hash(brz->h2[h0], key, keylen) % m;
+ mphf_bucket = 0;
h1 = mixh10h11h12(b, p1, p2, h1);
mphf_bucket = (cmph_uint8)((h2 + brz->g[h0][h1]) % m);
return (mphf_bucket + brz->offset[h0]);
@@ -741,13 +750,20 @@ void brz_pack(cmph_t *mphf, void *packed_mphf)
brz_data_t *data = (brz_data_t *)mphf->data;
cmph_uint8 * ptr = packed_mphf;
cmph_uint32 i,n;
+ CMPH_HASH h0_type, h1_type, h2_type;
+#if defined (__ia64) || defined (__x86_64__)
+ cmph_uint64 * g_is_ptr;
+#else
+ cmph_uint32 * g_is_ptr;
+#endif
+ cmph_uint8 * g_i;
// packing internal algo type
memcpy(ptr, &(data->algo), sizeof(data->algo));
ptr += sizeof(data->algo);
// packing h0 type
- CMPH_HASH h0_type = hash_get_type(data->h0);
+ h0_type = hash_get_type(data->h0);
memcpy(ptr, &h0_type, sizeof(h0_type));
ptr += sizeof(h0_type);
@@ -764,12 +780,12 @@ void brz_pack(cmph_t *mphf, void *packed_mphf)
ptr += sizeof(data->c);
// packing h1 type
- CMPH_HASH h1_type = hash_get_type(data->h1[0]);
+ h1_type = hash_get_type(data->h1[0]);
memcpy(ptr, &h1_type, sizeof(h1_type));
ptr += sizeof(h1_type);
// packing h2 type
- CMPH_HASH h2_type = hash_get_type(data->h2[0]);
+ h2_type = hash_get_type(data->h2[0]);
memcpy(ptr, &h2_type, sizeof(h2_type));
ptr += sizeof(h2_type);
@@ -782,12 +798,12 @@ void brz_pack(cmph_t *mphf, void *packed_mphf)
ptr += sizeof(cmph_uint32)*data->k;
#if defined (__ia64) || defined (__x86_64__)
- cmph_uint64 * g_is_ptr = (cmph_uint64 *)ptr;
+ g_is_ptr = (cmph_uint64 *)ptr;
#else
- cmph_uint32 * g_is_ptr = (cmph_uint32 *)ptr;
+ g_is_ptr = (cmph_uint32 *)ptr;
#endif
- cmph_uint8 * g_i = (cmph_uint8 *) (g_is_ptr + data->k);
+ g_i = (cmph_uint8 *) (g_is_ptr + data->k);
for(i = 0; i < data->k; i++)
{
@@ -835,6 +851,7 @@ cmph_uint32 brz_packed_size(cmph_t *mphf)
CMPH_HASH h0_type = hash_get_type(data->h0);
CMPH_HASH h1_type = hash_get_type(data->h1[0]);
CMPH_HASH h2_type = hash_get_type(data->h2[0]);
+ cmph_uint32 n;
size = (cmph_uint32)(2*sizeof(CMPH_ALGO) + 3*sizeof(CMPH_HASH) + hash_state_packed_size(h0_type) + sizeof(cmph_uint32) +
sizeof(double) + sizeof(cmph_uint8)*data->k + sizeof(cmph_uint32)*data->k);
// pointers to g_is
@@ -847,7 +864,7 @@ cmph_uint32 brz_packed_size(cmph_t *mphf)
size += hash_state_packed_size(h1_type) * data->k;
size += hash_state_packed_size(h2_type) * data->k;
- cmph_uint32 n = 0;
+ n = 0;
for(i = 0; i < data->k; i++)
{
switch(data->algo)
@@ -871,47 +888,57 @@ static cmph_uint32 brz_bmz8_search_packed(cmph_uint32 *packed_mphf, const char *
{
register CMPH_HASH h0_type = *packed_mphf++;
register cmph_uint32 *h0_ptr = packed_mphf;
+ register cmph_uint32 k, h0, m, n, h1, h2;
+ register cmph_uint32 *offset;
+ register double c;
+ register CMPH_HASH h1_type, h2_type;
+ register cmph_uint8 * size;
+#if defined (__ia64) || defined (__x86_64__)
+ register cmph_uint64 * g_is_ptr;
+#else
+ register cmph_uint32 * g_is_ptr;
+#endif
+ register cmph_uint8 *h1_ptr, *h2_ptr, *g;
+ register cmph_uint8 mphf_bucket;
+
packed_mphf = (cmph_uint32 *)(((cmph_uint8 *)packed_mphf) + hash_state_packed_size(h0_type));
- register cmph_uint32 k = *packed_mphf++;
+ k = *packed_mphf++;
- register double c = (double)(*((cmph_uint64*)packed_mphf));
+ c = (double)(*((cmph_uint64*)packed_mphf));
packed_mphf += 2;
- register CMPH_HASH h1_type = *packed_mphf++;
+ h1_type = *packed_mphf++;
- register CMPH_HASH h2_type = *packed_mphf++;
+ h2_type = *packed_mphf++;
- register cmph_uint8 * size = (cmph_uint8 *) packed_mphf;
+ size = (cmph_uint8 *) packed_mphf;
packed_mphf = (cmph_uint32 *)(size + k);
- register cmph_uint32 * offset = packed_mphf;
+ offset = packed_mphf;
packed_mphf += k;
- register cmph_uint32 h0;
hash_vector_packed(h0_ptr, h0_type, key, keylen, fingerprint);
h0 = fingerprint[2] % k;
- register cmph_uint32 m = size[h0];
- register cmph_uint32 n = (cmph_uint32)ceil(c * m);
+ m = size[h0];
+ n = (cmph_uint32)ceil(c * m);
#if defined (__ia64) || defined (__x86_64__)
- register cmph_uint64 * g_is_ptr = (cmph_uint64 *)packed_mphf;
+ g_is_ptr = (cmph_uint64 *)packed_mphf;
#else
- register cmph_uint32 * g_is_ptr = packed_mphf;
+ g_is_ptr = packed_mphf;
#endif
- register cmph_uint8 * h1_ptr = (cmph_uint8 *) g_is_ptr[h0];
+ h1_ptr = (cmph_uint8 *) g_is_ptr[h0];
- register cmph_uint8 * h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
+ h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
- register cmph_uint8 * g = h2_ptr + hash_state_packed_size(h2_type);
+ g = h2_ptr + hash_state_packed_size(h2_type);
- register cmph_uint32 h1 = hash_packed(h1_ptr, h1_type, key, keylen) % n;
- register cmph_uint32 h2 = hash_packed(h2_ptr, h2_type, key, keylen) % n;
-
- register cmph_uint8 mphf_bucket;
+ h1 = hash_packed(h1_ptr, h1_type, key, keylen) % n;
+ h2 = hash_packed(h2_ptr, h2_type, key, keylen) % n;
if (h1 == h2 && ++h2 >= n) h2 = 0;
mphf_bucket = (cmph_uint8)(g[h1] + g[h2]);
@@ -925,49 +952,59 @@ static cmph_uint32 brz_fch_search_packed(cmph_uint32 *packed_mphf, const char *k
register CMPH_HASH h0_type = *packed_mphf++;
register cmph_uint32 *h0_ptr = packed_mphf;
+ register cmph_uint32 k, h0, m, b, h1, h2;
+ register double c, p1, p2;
+ register CMPH_HASH h1_type, h2_type;
+ register cmph_uint8 *size, *h1_ptr, *h2_ptr, *g;
+ register cmph_uint32 *offset;
+#if defined (__ia64) || defined (__x86_64__)
+ register cmph_uint64 * g_is_ptr;
+#else
+ register cmph_uint32 * g_is_ptr;
+#endif
+ register cmph_uint8 mphf_bucket;
+
packed_mphf = (cmph_uint32 *)(((cmph_uint8 *)packed_mphf) + hash_state_packed_size(h0_type));
- register cmph_uint32 k = *packed_mphf++;
+ k = *packed_mphf++;
- register double c = (double)(*((cmph_uint64*)packed_mphf));
+ c = (double)(*((cmph_uint64*)packed_mphf));
packed_mphf += 2;
- register CMPH_HASH h1_type = *packed_mphf++;
+ h1_type = *packed_mphf++;
- register CMPH_HASH h2_type = *packed_mphf++;
+ h2_type = *packed_mphf++;
- register cmph_uint8 * size = (cmph_uint8 *) packed_mphf;
+ size = (cmph_uint8 *) packed_mphf;
packed_mphf = (cmph_uint32 *)(size + k);
- register cmph_uint32 * offset = packed_mphf;
+ offset = packed_mphf;
packed_mphf += k;
- register cmph_uint32 h0;
-
hash_vector_packed(h0_ptr, h0_type, key, keylen, fingerprint);
h0 = fingerprint[2] % k;
- register cmph_uint32 m = size[h0];
- register cmph_uint32 b = fch_calc_b(c, m);
- register double p1 = fch_calc_p1(m);
- register double p2 = fch_calc_p2(b);
+ m = size[h0];
+ b = fch_calc_b(c, m);
+ p1 = fch_calc_p1(m);
+ p2 = fch_calc_p2(b);
#if defined (__ia64) || defined (__x86_64__)
- register cmph_uint64 * g_is_ptr = (cmph_uint64 *)packed_mphf;
+ g_is_ptr = (cmph_uint64 *)packed_mphf;
#else
- register cmph_uint32 * g_is_ptr = packed_mphf;
+ g_is_ptr = packed_mphf;
#endif
- register cmph_uint8 * h1_ptr = (cmph_uint8 *) g_is_ptr[h0];
+ h1_ptr = (cmph_uint8 *) g_is_ptr[h0];
- register cmph_uint8 * h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
+ h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
- register cmph_uint8 * g = h2_ptr + hash_state_packed_size(h2_type);
+ g = h2_ptr + hash_state_packed_size(h2_type);
- register cmph_uint32 h1 = hash_packed(h1_ptr, h1_type, key, keylen) % m;
- register cmph_uint32 h2 = hash_packed(h2_ptr, h2_type, key, keylen) % m;
+ h1 = hash_packed(h1_ptr, h1_type, key, keylen) % m;
+ h2 = hash_packed(h2_ptr, h2_type, key, keylen) % m;
- register cmph_uint8 mphf_bucket = 0;
+ mphf_bucket = 0;
h1 = mixh10h11h12(b, p1, p2, h1);
mphf_bucket = (cmph_uint8)((h2 + g[h1]) % m);
return (mphf_bucket + offset[h0]);
diff --git a/girepository/cmph/chd.c b/girepository/cmph/chd.c
index 71579ee3..46aec52d 100644
--- a/girepository/cmph/chd.c
+++ b/girepository/cmph/chd.c
@@ -190,9 +190,10 @@ void chd_load(FILE *fd, cmph_t *mphf)
DEBUGP("Loading Compressed rank structure, which has %u bytes\n", chd->packed_cr_size);
chd->packed_cr = (cmph_uint8 *) calloc((size_t)chd->packed_cr_size, (size_t)1);
nbytes = fread(chd->packed_cr, chd->packed_cr_size, (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
}
+
}
int chd_dump(cmph_t *mphf, FILE *fd)
@@ -207,13 +208,14 @@ int chd_dump(cmph_t *mphf, FILE *fd)
nbytes = fwrite(&data->packed_chd_phf_size, sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(data->packed_chd_phf, data->packed_chd_phf_size, (size_t)1, fd);
- DEBUGP("Dumping compressed rank structure with %u bytes to disk\n", buflen);
+ DEBUGP("Dumping compressed rank structure with %u bytes to disk\n", data->packed_cr_size);
nbytes = fwrite(&data->packed_cr_size, sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(data->packed_cr, data->packed_cr_size, (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
+
return 1;
}
diff --git a/girepository/cmph/chd_ph.c b/girepository/cmph/chd_ph.c
index 6cd9437a..8356bded 100644
--- a/girepository/cmph/chd_ph.c
+++ b/girepository/cmph/chd_ph.c
@@ -193,8 +193,9 @@ void chd_ph_config_set_hashfuncs(cmph_config_t *mph, CMPH_HASH *hashfuncs)
void chd_ph_config_set_b(cmph_config_t *mph, cmph_uint32 keys_per_bucket)
{
+ chd_ph_config_data_t *chd_ph;
assert(mph);
- chd_ph_config_data_t *chd_ph = (chd_ph_config_data_t *)mph->data;
+ chd_ph = (chd_ph_config_data_t *)mph->data;
if(keys_per_bucket < 1 || keys_per_bucket >= 15)
{
keys_per_bucket = 4;
@@ -205,8 +206,9 @@ void chd_ph_config_set_b(cmph_config_t *mph, cmph_uint32 keys_per_bucket)
void chd_ph_config_set_keys_per_bin(cmph_config_t *mph, cmph_uint32 keys_per_bin)
{
+ chd_ph_config_data_t *chd_ph;
assert(mph);
- chd_ph_config_data_t *chd_ph = (chd_ph_config_data_t *)mph->data;
+ chd_ph = (chd_ph_config_data_t *)mph->data;
if(keys_per_bin <= 1 || keys_per_bin >= 128)
{
keys_per_bin = 1;
@@ -860,9 +862,10 @@ void chd_ph_load(FILE *fd, cmph_t *mphf)
DEBUGP("Reading n and nbuckets\n");
nbytes = fread(&(chd_ph->n), sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fread(&(chd_ph->nbuckets), sizeof(cmph_uint32), (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
}
+
}
int chd_ph_dump(cmph_t *mphf, FILE *fd)
@@ -889,7 +892,7 @@ int chd_ph_dump(cmph_t *mphf, FILE *fd)
// dumping n and nbuckets
nbytes = fwrite(&(data->n), sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(&(data->nbuckets), sizeof(cmph_uint32), (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
diff --git a/girepository/cmph/chm.c b/girepository/cmph/chm.c
index 3af8c806..36a07a0d 100644
--- a/girepository/cmph/chm.c
+++ b/girepository/cmph/chm.c
@@ -226,7 +226,7 @@ int chm_dump(cmph_t *mphf, FILE *fd)
nbytes = fwrite(&(data->m), sizeof(cmph_uint32), (size_t)1, fd);
nbytes = fwrite(data->g, sizeof(cmph_uint32)*data->n, (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
@@ -270,7 +270,7 @@ void chm_load(FILE *f, cmph_t *mphf)
chm->g = (cmph_uint32 *)malloc(sizeof(cmph_uint32)*chm->n);
nbytes = fread(chm->g, chm->n*sizeof(cmph_uint32), (size_t)1, f);
- if (nbytes == 0 && ferror(f)) {
+ if (nbytes == 0 && ferror(f)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return;
}
@@ -313,6 +313,7 @@ void chm_pack(cmph_t *mphf, void *packed_mphf)
{
chm_data_t *data = (chm_data_t *)mphf->data;
cmph_uint8 * ptr = packed_mphf;
+ CMPH_HASH h2_type;
// packing h1 type
CMPH_HASH h1_type = hash_get_type(data->hashes[0]);
@@ -324,7 +325,7 @@ void chm_pack(cmph_t *mphf, void *packed_mphf)
ptr += hash_state_packed_size(h1_type);
// packing h2 type
- CMPH_HASH h2_type = hash_get_type(data->hashes[1]);
+ h2_type = hash_get_type(data->hashes[1]);
*((cmph_uint32 *) ptr) = h2_type;
ptr += sizeof(cmph_uint32);
@@ -370,19 +371,24 @@ cmph_uint32 chm_search_packed(void *packed_mphf, const char *key, cmph_uint32 ke
{
register cmph_uint8 *h1_ptr = packed_mphf;
register CMPH_HASH h1_type = *((cmph_uint32 *)h1_ptr);
+ register cmph_uint8 *h2_ptr;
+ register CMPH_HASH h2_type;
+ register cmph_uint32 *g_ptr;
+ register cmph_uint32 n, m, h1, h2;
+
h1_ptr += 4;
- register cmph_uint8 *h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
- register CMPH_HASH h2_type = *((cmph_uint32 *)h2_ptr);
+ h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
+ h2_type = *((cmph_uint32 *)h2_ptr);
h2_ptr += 4;
- register cmph_uint32 *g_ptr = (cmph_uint32 *)(h2_ptr + hash_state_packed_size(h2_type));
+ g_ptr = (cmph_uint32 *)(h2_ptr + hash_state_packed_size(h2_type));
- register cmph_uint32 n = *g_ptr++;
- register cmph_uint32 m = *g_ptr++;
+ n = *g_ptr++;
+ m = *g_ptr++;
- register cmph_uint32 h1 = hash_packed(h1_ptr, h1_type, key, keylen) % n;
- register cmph_uint32 h2 = hash_packed(h2_ptr, h2_type, key, keylen) % n;
+ h1 = hash_packed(h1_ptr, h1_type, key, keylen) % n;
+ h2 = hash_packed(h2_ptr, h2_type, key, keylen) % n;
DEBUGP("key: %s h1: %u h2: %u\n", key, h1, h2);
if (h1 == h2 && ++h2 >= n) h2 = 0;
DEBUGP("key: %s g[h1]: %u g[h2]: %u edges: %u\n", key, g_ptr[h1], g_ptr[h2], m);
diff --git a/girepository/cmph/compressed_rank.c b/girepository/cmph/compressed_rank.c
index 822b2e15..8019dbe5 100644
--- a/girepository/cmph/compressed_rank.c
+++ b/girepository/cmph/compressed_rank.c
@@ -83,9 +83,9 @@ cmph_uint32 compressed_rank_query(compressed_rank_t * cr, cmph_uint32 idx)
return cr->n;
}
- val_quot = idx >> cr->rem_r;
- rems_mask = (1U << cr->rem_r) - 1U;
- val_rem = idx & rems_mask;
+ val_quot = idx >> cr->rem_r;
+ rems_mask = (1U << cr->rem_r) - 1U;
+ val_rem = idx & rems_mask;
if(val_quot == 0)
{
rank = sel_res = 0;
@@ -128,6 +128,9 @@ void compressed_rank_dump(compressed_rank_t * cr, char **buf, cmph_uint32 *bufle
register cmph_uint32 pos = 0;
char * buf_sel = 0;
cmph_uint32 buflen_sel = 0;
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
*buflen = 4*(cmph_uint32)sizeof(cmph_uint32) + sel_size + vals_rems_size;
@@ -164,7 +167,7 @@ void compressed_rank_dump(compressed_rank_t * cr, char **buf, cmph_uint32 *bufle
memcpy(*buf + pos, buf_sel, buflen_sel);
#ifdef DEBUG
- cmph_uint32 i = 0;
+ i = 0;
for(i = 0; i < buflen_sel; i++)
{
DEBUGP("pos = %u -- buf_sel[%u] = %u\n", pos, i, *(*buf + pos + i));
@@ -192,6 +195,9 @@ void compressed_rank_load(compressed_rank_t * cr, const char *buf, cmph_uint32 b
register cmph_uint32 pos = 0;
cmph_uint32 buflen_sel = 0;
register cmph_uint32 vals_rems_size = 0;
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
// loading max_val, n, and rem_r
memcpy(&(cr->max_val), buf, sizeof(cmph_uint32));
@@ -213,7 +219,7 @@ void compressed_rank_load(compressed_rank_t * cr, const char *buf, cmph_uint32 b
select_load(&cr->sel, buf + pos, buflen_sel);
#ifdef DEBUG
- cmph_uint32 i = 0;
+ i = 0;
for(i = 0; i < buflen_sel; i++)
{
DEBUGP("pos = %u -- buf_sel[%u] = %u\n", pos, i, *(buf + pos + i));
diff --git a/girepository/cmph/compressed_seq.c b/girepository/cmph/compressed_seq.c
index e558196d..e5191fd5 100644
--- a/girepository/cmph/compressed_seq.c
+++ b/girepository/cmph/compressed_seq.c
@@ -167,6 +167,9 @@ void compressed_seq_dump(compressed_seq_t * cs, char ** buf, cmph_uint32 * bufle
register cmph_uint32 pos = 0;
char * buf_sel = 0;
cmph_uint32 buflen_sel = 0;
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
*buflen = 4*(cmph_uint32)sizeof(cmph_uint32) + sel_size + length_rems_size + store_table_size;
@@ -202,8 +205,8 @@ void compressed_seq_dump(compressed_seq_t * cs, char ** buf, cmph_uint32 * bufle
DEBUGP("buflen_sel = %u\n", buflen_sel);
memcpy(*buf + pos, buf_sel, buflen_sel);
- #ifdef DEBUG
- cmph_uint32 i = 0;
+ #ifdef DEBUG
+ i = 0;
for(i = 0; i < buflen_sel; i++)
{
DEBUGP("pos = %u -- buf_sel[%u] = %u\n", pos, i, *(*buf + pos + i));
@@ -215,7 +218,7 @@ void compressed_seq_dump(compressed_seq_t * cs, char ** buf, cmph_uint32 * bufle
// dumping length_rems
memcpy(*buf + pos, cs->length_rems, length_rems_size);
- #ifdef DEBUG
+ #ifdef DEBUG
for(i = 0; i < length_rems_size; i++)
{
DEBUGP("pos = %u -- length_rems_size = %u -- length_rems[%u] = %u\n", pos, length_rems_size, i, *(*buf + pos + i));
@@ -226,7 +229,7 @@ void compressed_seq_dump(compressed_seq_t * cs, char ** buf, cmph_uint32 * bufle
// dumping store_table
memcpy(*buf + pos, cs->store_table, store_table_size);
- #ifdef DEBUG
+ #ifdef DEBUG
for(i = 0; i < store_table_size; i++)
{
DEBUGP("pos = %u -- store_table_size = %u -- store_table[%u] = %u\n", pos, store_table_size, i, *(*buf + pos + i));
@@ -241,6 +244,9 @@ void compressed_seq_load(compressed_seq_t * cs, const char * buf, cmph_uint32 bu
cmph_uint32 buflen_sel = 0;
register cmph_uint32 length_rems_size = 0;
register cmph_uint32 store_table_size = 0;
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
// loading n, rem_r and total_length
memcpy(&(cs->n), buf, sizeof(cmph_uint32));
@@ -261,8 +267,8 @@ void compressed_seq_load(compressed_seq_t * cs, const char * buf, cmph_uint32 bu
DEBUGP("buflen_sel = %u\n", buflen_sel);
select_load(&cs->sel, buf + pos, buflen_sel);
- #ifdef DEBUG
- cmph_uint32 i = 0;
+ #ifdef DEBUG
+ i = 0;
for(i = 0; i < buflen_sel; i++)
{
DEBUGP("pos = %u -- buf_sel[%u] = %u\n", pos, i, *(buf + pos + i));
@@ -280,7 +286,7 @@ void compressed_seq_load(compressed_seq_t * cs, const char * buf, cmph_uint32 bu
length_rems_size *= 4;
memcpy(cs->length_rems, buf + pos, length_rems_size);
- #ifdef DEBUG
+ #ifdef DEBUG
for(i = 0; i < length_rems_size; i++)
{
DEBUGP("pos = %u -- length_rems_size = %u -- length_rems[%u] = %u\n", pos, length_rems_size, i, *(buf + pos + i));
@@ -298,7 +304,7 @@ void compressed_seq_load(compressed_seq_t * cs, const char * buf, cmph_uint32 bu
store_table_size *= 4;
memcpy(cs->store_table, buf + pos, store_table_size);
- #ifdef DEBUG
+ #ifdef DEBUG
for(i = 0; i < store_table_size; i++)
{
DEBUGP("pos = %u -- store_table_size = %u -- store_table[%u] = %u\n", pos, store_table_size, i, *(buf + pos + i));
@@ -336,19 +342,19 @@ cmph_uint32 compressed_seq_query_packed(void * cs_packed, cmph_uint32 idx)
register cmph_uint32 *ptr = (cmph_uint32 *)cs_packed;
register cmph_uint32 n = *ptr++;
register cmph_uint32 rem_r = *ptr++;
+ register cmph_uint32 buflen_sel, length_rems_size, enc_idx, enc_length;
+ // compressed sequence query computation
+ register cmph_uint32 rems_mask, stored_value, sel_res;
+ register cmph_uint32 *sel_packed, *length_rems, *store_table;
+
ptr++; // skipping total_length
// register cmph_uint32 total_length = *ptr++;
- register cmph_uint32 buflen_sel = *ptr++;
- register cmph_uint32 * sel_packed = ptr;
- register cmph_uint32 * length_rems = (ptr += (buflen_sel >> 2));
- register cmph_uint32 length_rems_size = BITS_TABLE_SIZE(n, rem_r);
- register cmph_uint32 * store_table = (ptr += length_rems_size);
+ buflen_sel = *ptr++;
+ sel_packed = ptr;
+ length_rems = (ptr += (buflen_sel >> 2));
+ length_rems_size = BITS_TABLE_SIZE(n, rem_r);
+ store_table = (ptr += length_rems_size);
- // compressed sequence query computation
- register cmph_uint32 enc_idx, enc_length;
- register cmph_uint32 rems_mask;
- register cmph_uint32 stored_value;
- register cmph_uint32 sel_res;
rems_mask = (1U << rem_r) - 1U;
diff --git a/girepository/cmph/fch.c b/girepository/cmph/fch.c
index f6e16e34..33b959e2 100644
--- a/girepository/cmph/fch.c
+++ b/girepository/cmph/fch.c
@@ -10,6 +10,7 @@
#include <assert.h>
#include <string.h>
#include <errno.h>
+
#define INDEX 0 /* alignment index within a bucket */
//#define DEBUG
#include "debug.h"
@@ -320,6 +321,10 @@ int fch_dump(cmph_t *mphf, FILE *fd)
register size_t nbytes;
fch_data_t *data = (fch_data_t *)mphf->data;
+
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
__cmph_dump(mphf, fd);
hash_state_dump(data->h1, &buf, &buflen);
@@ -340,12 +345,11 @@ int fch_dump(cmph_t *mphf, FILE *fd)
nbytes = fwrite(&(data->p1), sizeof(double), (size_t)1, fd);
nbytes = fwrite(&(data->p2), sizeof(double), (size_t)1, fd);
nbytes = fwrite(data->g, sizeof(cmph_uint32)*(data->b), (size_t)1, fd);
- if (nbytes == 0 && ferror(fd)) {
+ if (nbytes == 0 && ferror(fd)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return 0;
}
#ifdef DEBUG
- cmph_uint32 i;
fprintf(stderr, "G: ");
for (i = 0; i < data->b; ++i) fprintf(stderr, "%u ", data->g[i]);
fprintf(stderr, "\n");
@@ -359,6 +363,9 @@ void fch_load(FILE *f, cmph_t *mphf)
cmph_uint32 buflen;
register size_t nbytes;
fch_data_t *fch = (fch_data_t *)malloc(sizeof(fch_data_t));
+#ifdef DEBUG
+ cmph_uint32 i;
+#endif
//DEBUGP("Loading fch mphf\n");
mphf->data = fch;
@@ -392,12 +399,12 @@ void fch_load(FILE *f, cmph_t *mphf)
fch->g = (cmph_uint32 *)malloc(sizeof(cmph_uint32)*fch->b);
nbytes = fread(fch->g, fch->b*sizeof(cmph_uint32), (size_t)1, f);
- if (nbytes == 0 && ferror(f)) {
+ if (nbytes == 0 && ferror(f)) {
fprintf(stderr, "ERROR: %s\n", strerror(errno));
return;
}
+
#ifdef DEBUG
- cmph_uint32 i;
fprintf(stderr, "G: ");
for (i = 0; i < fch->b; ++i) fprintf(stderr, "%u ", fch->g[i]);
fprintf(stderr, "\n");
@@ -436,6 +443,7 @@ void fch_pack(cmph_t *mphf, void *packed_mphf)
// packing h1 type
CMPH_HASH h1_type = hash_get_type(data->h1);
+ CMPH_HASH h2_type;
*((cmph_uint32 *) ptr) = h1_type;
ptr += sizeof(cmph_uint32);
@@ -444,7 +452,7 @@ void fch_pack(cmph_t *mphf, void *packed_mphf)
ptr += hash_state_packed_size(h1_type);
// packing h2 type
- CMPH_HASH h2_type = hash_get_type(data->h2);
+ h2_type = hash_get_type(data->h2);
*((cmph_uint32 *) ptr) = h2_type;
ptr += sizeof(cmph_uint32);
@@ -499,27 +507,32 @@ cmph_uint32 fch_search_packed(void *packed_mphf, const char *key, cmph_uint32 ke
{
register cmph_uint8 *h1_ptr = packed_mphf;
register CMPH_HASH h1_type = *((cmph_uint32 *)h1_ptr);
+ register cmph_uint8 *h2_ptr;
+ register CMPH_HASH h2_type;
+ register cmph_uint32 *g_ptr;
+ register cmph_uint32 m, b, h1, h2;
+ register double p1, p2;
+
h1_ptr += 4;
- register cmph_uint8 *h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
- register CMPH_HASH h2_type = *((cmph_uint32 *)h2_ptr);
+ h2_ptr = h1_ptr + hash_state_packed_size(h1_type);
+ h2_type = *((cmph_uint32 *)h2_ptr);
h2_ptr += 4;
- register cmph_uint32 *g_ptr = (cmph_uint32 *)(h2_ptr + hash_state_packed_size(h2_type));
+ g_ptr = (cmph_uint32 *)(h2_ptr + hash_state_packed_size(h2_type));
- register cmph_uint32 m = *g_ptr++;
+ m = *g_ptr++;
- register cmph_uint32 b = *g_ptr++;
+ b = *g_ptr++;
- register double p1 = (double)(*((cmph_uint64 *)g_ptr));
+ p1 = (double)(*((cmph_uint64 *)g_ptr));
g_ptr += 2;
- register double p2 = (double)(*((cmph_uint64 *)g_ptr));
+ p2 = (double)(*((cmph_uint64 *)g_ptr));
g_ptr += 2;
- register cmph_uint32 h1 = hash_packed(h1_ptr, h1_type, key, keylen) % m;
- register cmph_uint32 h2 = hash_packed(h2_ptr, h2_type, key, keylen) % m;
-
+ h1 = hash_packed(h1_ptr, h1_type, key, keylen) % m;
+ h2 = hash_packed(h2_ptr, h2_type, key, keylen) % m;
h1 = mixh10h11h12 (b, p1, p2, h1);
return (h2 + g_ptr[h1]) % m;
}
diff --git a/girepository/gdump.c b/girepository/gdump.c
index 7e02d391..a72841fe 100644
--- a/girepository/gdump.c
+++ b/girepository/gdump.c
@@ -38,6 +38,9 @@
#include <string.h>
static void
+escaped_printf (GOutputStream *out, const char *fmt, ...) G_GNUC_PRINTF (2, 3);
+
+static void
escaped_printf (GOutputStream *out, const char *fmt, ...)
{
char *str;
@@ -422,8 +425,10 @@ dump_error_quark (GQuark quark, const char *symbol, GOutputStream *out)
*
* Argument specified is a comma-separated pair of filenames; i.e. of
* the form "input.txt,output.xml". The input file should be a
- * UTF-8 Unix-line-ending text file, with each line containing the name
- * of a GType _get_type function.
+ * UTF-8 Unix-line-ending text file, with each line containing either
+ * "get-type:" followed by the name of a GType _get_type function, or
+ * "error-quark:" followed by the name of an error quark function. No
+ * extra whitespace is allowed.
*
* The output file should already exist, but be empty. This function will
* overwrite its contents.
diff --git a/girepository/gi-dump-types.c b/girepository/gi-dump-types.c
index 13e7ae68..69d8b12d 100644
--- a/girepository/gi-dump-types.c
+++ b/girepository/gi-dump-types.c
@@ -10,8 +10,6 @@ main (int argc,
GOutputStream *stdout;
GModule *self;
- g_type_init ();
-
stdout = g_unix_output_stream_new (1, FALSE);
self = g_module_open (NULL, 0);
diff --git a/girepository/gibaseinfo.c b/girepository/gibaseinfo.c
index ff9c9395..37893e6c 100644
--- a/girepository/gibaseinfo.c
+++ b/girepository/gibaseinfo.c
@@ -226,7 +226,7 @@ g_base_info_ref (GIBaseInfo *info)
GIRealInfo *rinfo = (GIRealInfo*)info;
g_assert (rinfo->ref_count != INVALID_REFCOUNT);
- ((GIRealInfo*)info)->ref_count++;
+ g_atomic_int_inc (&rinfo->ref_count);
return info;
}
@@ -244,21 +244,20 @@ g_base_info_unref (GIBaseInfo *info)
GIRealInfo *rinfo = (GIRealInfo*)info;
g_assert (rinfo->ref_count > 0 && rinfo->ref_count != INVALID_REFCOUNT);
- rinfo->ref_count--;
- if (!rinfo->ref_count)
- {
- if (rinfo->container && ((GIRealInfo *) rinfo->container)->ref_count != INVALID_REFCOUNT)
- g_base_info_unref (rinfo->container);
+ if (!g_atomic_int_dec_and_test (&rinfo->ref_count))
+ return;
- if (rinfo->repository)
- g_object_unref (rinfo->repository);
+ if (rinfo->container && ((GIRealInfo *) rinfo->container)->ref_count != INVALID_REFCOUNT)
+ g_base_info_unref (rinfo->container);
- if (rinfo->type == GI_INFO_TYPE_UNRESOLVED)
- g_slice_free (GIUnresolvedInfo, (GIUnresolvedInfo *) rinfo);
- else
- g_slice_free (GIRealInfo, rinfo);
- }
+ if (rinfo->repository)
+ g_object_unref (rinfo->repository);
+
+ if (rinfo->type == GI_INFO_TYPE_UNRESOLVED)
+ g_slice_free (GIUnresolvedInfo, (GIUnresolvedInfo *) rinfo);
+ else
+ g_slice_free (GIRealInfo, rinfo);
}
/**
diff --git a/girepository/gienuminfo.c b/girepository/gienuminfo.c
index a9b7c1df..400a56d6 100644
--- a/girepository/gienuminfo.c
+++ b/girepository/gienuminfo.c
@@ -67,6 +67,18 @@ g_enum_info_get_n_values (GIEnumInfo *info)
return blob->n_values;
}
+/**
+ * g_enum_info_get_error_domain:
+ * @info: a #GIEnumInfo
+ *
+ * Obtain the string form of the quark for the error domain associated with
+ * this enum, if any.
+ *
+ * Returns: (transfer none): the string form of the error domain associated
+ * with this enum, or %NULL.
+ *
+ * Since: 1.29.17
+ */
const gchar *
g_enum_info_get_error_domain (GIEnumInfo *info)
{
diff --git a/girepository/girepository-private.h b/girepository/girepository-private.h
index 275776d8..bbd34e3e 100644
--- a/girepository/girepository-private.h
+++ b/girepository/girepository-private.h
@@ -33,6 +33,11 @@
typedef struct _GIRealInfo GIRealInfo;
+/* We changed a gint32 -> gint in the structure below, which should be
+ * valid everywhere we care about.
+ */
+G_STATIC_ASSERT (sizeof (int) == sizeof (gint32));
+
/*
* We just use one structure for all of the info object
* types; in general, we should be reading data directly
@@ -43,7 +48,7 @@ struct _GIRealInfo
{
/* Keep this part in sync with GIUnresolvedInfo below */
gint32 type;
- gint32 ref_count;
+ volatile gint ref_count;
GIRepository *repository;
GIBaseInfo *container;
@@ -62,7 +67,7 @@ struct _GIUnresolvedInfo
{
/* Keep this part in sync with GIBaseInfo above */
gint32 type;
- gint32 ref_count;
+ volatile gint ref_count;
GIRepository *repository;
GIBaseInfo *container;
diff --git a/girepository/girepository.c b/girepository/girepository.c
index b5c30297..0922fb09 100644
--- a/girepository/girepository.c
+++ b/girepository/girepository.c
@@ -35,7 +35,6 @@
#include "config.h"
-static GStaticMutex globals_lock = G_STATIC_MUTEX_INIT;
static GIRepository *default_repository = NULL;
static GSList *search_path = NULL;
static GSList *override_search_path = NULL;
@@ -134,12 +133,13 @@ g_irepository_class_init (GIRepositoryClass *class)
static void
init_globals (void)
{
- g_static_mutex_lock (&globals_lock);
+ static gsize initialized = 0;
+
+ if (!g_once_init_enter (&initialized))
+ return;
if (default_repository == NULL)
- {
- default_repository = g_object_new (G_TYPE_IREPOSITORY, NULL);
- }
+ default_repository = g_object_new (G_TYPE_IREPOSITORY, NULL);
if (search_path == NULL)
{
@@ -184,7 +184,7 @@ init_globals (void)
search_path = g_slist_reverse (search_path);
}
- g_static_mutex_unlock (&globals_lock);
+ g_once_init_leave (&initialized, 1);
}
void
@@ -593,28 +593,39 @@ g_irepository_get_info (GIRepository *repository,
}
typedef struct {
- GIRepository *repository;
- GType type;
-
- gboolean fastpass;
+ const gchar *gtype_name;
GITypelib *result_typelib;
- DirEntry *result;
+ gboolean found_prefix;
} FindByGTypeData;
-static void
-find_by_gtype_foreach (gpointer key,
- gpointer value,
- gpointer datap)
+static DirEntry *
+find_by_gtype (GHashTable *table, FindByGTypeData *data, gboolean check_prefix)
{
- GITypelib *typelib = (GITypelib*)value;
- FindByGTypeData *data = datap;
+ GHashTableIter iter;
+ gpointer key, value;
+ DirEntry *ret;
- if (data->result != NULL)
- return;
+ g_hash_table_iter_init (&iter, table);
+ while (g_hash_table_iter_next (&iter, &key, &value))
+ {
+ GITypelib *typelib = (GITypelib*)value;
+ if (check_prefix)
+ {
+ if (!g_typelib_matches_gtype_name_prefix (typelib, data->gtype_name))
+ continue;
- data->result = g_typelib_get_dir_entry_by_gtype (typelib, data->fastpass, data->type);
- if (data->result)
- data->result_typelib = typelib;
+ data->found_prefix = TRUE;
+ }
+
+ ret = g_typelib_get_dir_entry_by_gtype_name (typelib, data->gtype_name);
+ if (ret)
+ {
+ data->result_typelib = typelib;
+ return ret;
+ }
+ }
+
+ return NULL;
}
/**
@@ -637,6 +648,7 @@ g_irepository_find_by_gtype (GIRepository *repository,
{
FindByGTypeData data;
GIBaseInfo *cached;
+ DirEntry *entry;
repository = get_repository (repository);
@@ -646,30 +658,55 @@ g_irepository_find_by_gtype (GIRepository *repository,
if (cached != NULL)
return g_base_info_ref (cached);
- data.repository = repository;
- data.fastpass = TRUE;
- data.type = gtype;
+ data.gtype_name = g_type_name (gtype);
data.result_typelib = NULL;
- data.result = NULL;
+ data.found_prefix = FALSE;
+
+ /* There is a corner case regarding GdkRectangle. GdkRectangle is a
+ * boxed type, but it is just an alias to boxed struct
+ * CairoRectangleInt. Scanner automatically converts all references
+ * to GdkRectangle to CairoRectangleInt, so GdkRectangle does not
+ * appear in the typelibs at all, although user code might query it.
+ * So if we get such query, we also change it to lookup of
+ * CairoRectangleInt.
+ * https://bugzilla.gnome.org/show_bug.cgi?id=655423
+ */
+ if (G_UNLIKELY (!strcmp (data.gtype_name, "GdkRectangle")))
+ data.gtype_name = "CairoRectangleInt";
+
+ /* Inside each typelib, we include the "C prefix" which acts as
+ * a namespace mechanism. For GtkTreeView, the C prefix is Gtk.
+ * Given the assumption that GTypes for a library also use the
+ * C prefix, we know we can skip examining a typelib if our
+ * target type does not have this typelib's C prefix. Use this
+ * assumption as our first attempt at locating the DirEntry.
+ */
+ entry = find_by_gtype (repository->priv->typelibs, &data, TRUE);
+ if (entry == NULL)
+ entry = find_by_gtype (repository->priv->lazy_typelibs, &data, TRUE);
- g_hash_table_foreach (repository->priv->typelibs, find_by_gtype_foreach, &data);
- if (data.result == NULL)
- g_hash_table_foreach (repository->priv->lazy_typelibs, find_by_gtype_foreach, &data);
+ /* If we have no result, but we did find a typelib claiming to
+ * offer bindings for such a prefix, bail out now on the assumption
+ * that a more exhaustive search would not produce any results.
+ */
+ if (entry == NULL && data.found_prefix)
+ return NULL;
- /* We do two passes; see comment in find_interface */
- if (data.result == NULL)
- {
- data.fastpass = FALSE;
- g_hash_table_foreach (repository->priv->typelibs, find_by_gtype_foreach, &data);
- }
- if (data.result == NULL)
- g_hash_table_foreach (repository->priv->lazy_typelibs, find_by_gtype_foreach, &data);
+ /* Not ever class library necessarily specifies a correct c_prefix,
+ * so take a second pass. This time we will try a global lookup,
+ * ignoring prefixes.
+ * See http://bugzilla.gnome.org/show_bug.cgi?id=564016
+ */
+ if (entry == NULL)
+ entry = find_by_gtype (repository->priv->typelibs, &data, FALSE);
+ if (entry == NULL)
+ entry = find_by_gtype (repository->priv->lazy_typelibs, &data, FALSE);
- if (data.result != NULL)
+ if (entry != NULL)
{
- cached = _g_info_new_full (data.result->blob_type,
+ cached = _g_info_new_full (entry->blob_type,
repository,
- NULL, data.result_typelib, data.result->offset);
+ NULL, data.result_typelib, entry->offset);
g_hash_table_insert (repository->priv->info_by_gtype,
(gpointer) gtype,
diff --git a/girepository/girepository.h b/girepository/girepository.h
index eb990a27..2b2b1713 100644
--- a/girepository/girepository.h
+++ b/girepository/girepository.h
@@ -90,6 +90,7 @@ typedef enum
GType g_irepository_get_type (void) G_GNUC_CONST;
GIRepository *g_irepository_get_default (void);
void g_irepository_prepend_search_path (const char *directory);
+void g_irepository_prepend_library_path (const char *directory);
GSList * g_irepository_get_search_path (void);
const char * g_irepository_load_typelib (GIRepository *repository,
GITypelib *typelib,
diff --git a/girepository/girepository.symbols b/girepository/girepository.symbols
new file mode 100644
index 00000000..5f01adff
--- /dev/null
+++ b/girepository/girepository.symbols
@@ -0,0 +1,196 @@
+g_arg_info_get_closure
+g_arg_info_get_destroy
+g_arg_info_get_direction
+g_arg_info_get_ownership_transfer
+g_arg_info_get_scope
+g_arg_info_get_type
+g_arg_info_is_caller_allocates
+g_arg_info_is_optional
+g_arg_info_is_return_value
+g_arg_info_is_skip
+g_arg_info_load_type
+g_arg_info_may_be_null
+g_base_info_equal
+g_base_info_get_attribute
+g_base_info_get_container
+g_base_info_get_name
+g_base_info_get_namespace
+g_base_info_get_type
+g_base_info_get_typelib
+g_base_info_gtype_get_type
+g_base_info_is_deprecated
+g_base_info_iterate_attributes
+g_base_info_ref
+g_base_info_unref
+g_info_new
+g_callable_info_can_throw_gerror
+g_callable_info_get_arg
+g_callable_info_get_caller_owns
+g_callable_info_get_n_args
+g_callable_info_get_return_attribute
+g_callable_info_get_return_type
+g_callable_info_invoke
+g_callable_info_iterate_return_attributes
+g_callable_info_is_method
+g_callable_info_load_arg
+g_callable_info_load_return_type
+g_callable_info_may_return_null
+g_callable_info_skip_return
+g_constant_info_free_value
+g_constant_info_get_type
+g_constant_info_get_value
+g_enum_info_get_error_domain
+g_enum_info_get_method
+g_enum_info_get_n_methods
+g_enum_info_get_n_values
+g_enum_info_get_storage_type
+g_enum_info_get_value
+g_value_info_get_value
+g_field_info_get_field
+g_field_info_get_flags
+g_field_info_get_offset
+g_field_info_get_size
+g_field_info_get_type
+g_field_info_set_field
+g_function_info_get_flags
+g_function_info_get_property
+g_function_info_get_symbol
+g_function_info_get_vfunc
+g_function_info_invoke
+g_invoke_error_quark
+g_interface_info_find_method
+g_interface_info_find_signal
+g_interface_info_find_vfunc
+g_interface_info_get_constant
+g_interface_info_get_iface_struct
+g_interface_info_get_method
+g_interface_info_get_n_constants
+g_interface_info_get_n_methods
+g_interface_info_get_n_prerequisites
+g_interface_info_get_n_properties
+g_interface_info_get_prerequisite
+g_interface_info_get_n_signals
+g_interface_info_get_n_vfuncs
+g_interface_info_get_property
+g_interface_info_get_signal
+g_interface_info_get_vfunc
+g_object_info_find_method
+g_object_info_find_method_using_interfaces
+g_object_info_find_signal
+g_object_info_find_vfunc
+g_object_info_find_vfunc_using_interfaces
+g_object_info_get_abstract
+g_object_info_get_class_struct
+g_object_info_get_constant
+g_object_info_get_field
+g_object_info_get_fundamental
+g_object_info_get_get_value_function
+g_object_info_get_get_value_function_pointer
+g_object_info_get_interface
+g_object_info_get_method
+g_object_info_get_n_constants
+g_object_info_get_n_fields
+g_object_info_get_n_interfaces
+g_object_info_get_n_methods
+g_object_info_get_n_properties
+g_object_info_get_n_signals
+g_object_info_get_n_vfuncs
+g_object_info_get_parent
+g_object_info_get_property
+g_object_info_get_ref_function
+g_object_info_get_ref_function_pointer
+g_object_info_get_set_value_function
+g_object_info_get_set_value_function_pointer
+g_object_info_get_signal
+g_object_info_get_type_init
+g_object_info_get_type_name
+g_object_info_get_unref_function
+g_object_info_get_unref_function_pointer
+g_object_info_get_vfunc
+g_property_info_get_flags
+g_property_info_get_ownership_transfer
+g_property_info_get_type
+g_registered_type_info_get_g_type
+g_registered_type_info_get_type_init
+g_registered_type_info_get_type_name
+gi_cclosure_marshal_generic
+g_irepository_dump
+g_irepository_enumerate_versions
+g_irepository_error_quark
+g_irepository_find_by_error_domain
+g_irepository_find_by_gtype
+g_irepository_find_by_name
+g_irepository_get_c_prefix
+g_irepository_get_default
+g_irepository_get_dependencies
+g_irepository_get_info
+g_irepository_get_loaded_namespaces
+g_irepository_get_n_infos
+g_irepository_get_option_group
+g_irepository_get_search_path
+g_irepository_get_shared_library
+g_irepository_get_type
+g_irepository_get_typelib_path
+g_irepository_get_version
+g_irepository_is_registered
+g_irepository_load_typelib
+g_irepository_prepend_library_path
+g_irepository_prepend_search_path
+g_irepository_require
+g_irepository_require_private
+gi_type_info_extract_ffi_return_value
+gi_type_tag_get_ffi_type
+g_callable_info_free_closure
+g_callable_info_prepare_closure
+g_function_info_prep_invoker
+g_function_invoker_destroy
+g_function_invoker_new_for_address
+g_type_info_get_ffi_type
+g_signal_info_get_class_closure
+g_signal_info_get_flags
+g_signal_info_true_stops_emit
+g_struct_info_find_method
+g_struct_info_get_alignment
+g_struct_info_get_field
+g_struct_info_get_method
+g_struct_info_get_n_fields
+g_struct_info_get_n_methods
+g_struct_info_get_size
+g_struct_info_is_foreign
+g_struct_info_is_gtype_struct
+g_type_info_is_pointer
+g_type_info_is_zero_terminated
+g_type_info_get_array_fixed_size
+g_type_info_get_array_length
+g_type_info_get_array_type
+g_type_info_get_interface
+g_type_info_get_param_type
+g_type_info_get_tag
+g_type_tag_to_string
+g_info_type_to_string
+g_typelib_check_sanity
+g_typelib_error_quark
+g_typelib_free
+g_typelib_get_namespace
+g_typelib_new_from_const_memory
+g_typelib_new_from_mapped_file
+g_typelib_new_from_memory
+g_typelib_symbol
+g_typelib_validate
+g_union_info_find_method
+g_union_info_get_alignment
+g_union_info_get_discriminator
+g_union_info_get_discriminator_offset
+g_union_info_get_discriminator_type
+g_union_info_get_field
+g_union_info_get_method
+g_union_info_get_n_fields
+g_union_info_get_n_methods
+g_union_info_get_size
+g_union_info_is_discriminated
+g_vfunc_info_get_address
+g_vfunc_info_get_invoker
+g_vfunc_info_get_flags
+g_vfunc_info_get_offset
+g_vfunc_info_get_signal
+g_vfunc_info_invoke
diff --git a/girepository/girffi.c b/girepository/girffi.c
index ec710c37..f4c80eaa 100644
--- a/girepository/girffi.c
+++ b/girepository/girffi.c
@@ -26,7 +26,9 @@
#include <errno.h>
#include <string.h>
+#ifdef HAVE_UNISTD_H
#include <unistd.h>
+#endif
#include "girffi.h"
#include "girepository.h"
#include "girepository-private.h"
diff --git a/girepository/girmodule.c b/girepository/girmodule.c
index af71f369..05c8987f 100644
--- a/girepository/girmodule.c
+++ b/girepository/girmodule.c
@@ -261,8 +261,9 @@ add_directory_index_section (guint8 *data, GIrModule *module, guint32 *offset2)
for (i = 0; i < n_interfaces; i++)
{
+ const char *str;
entry = (DirEntry *)&data[header->directory + (i * header->entry_blob_size)];
- const char *str = (const char *) (&data[entry->name]);
+ str = (const char *) (&data[entry->name]);
_gi_typelib_hash_builder_add_string (dirindex_builder, str, i);
}
diff --git a/girepository/girnode.c b/girepository/girnode.c
index 881aa9be..afb71e57 100644
--- a/girepository/girnode.c
+++ b/girepository/girnode.c
@@ -28,6 +28,11 @@
#include "girnode.h"
#include "gitypelib-internal.h"
+#ifdef _MSC_VER
+#define strtoll _strtoi64
+#define strtoull _strtoui64
+#endif
+
static gulong string_count = 0;
static gulong unique_string_count = 0;
static gulong string_size = 0;
@@ -228,7 +233,7 @@ _g_ir_node_free (GIrNode *node)
_g_ir_node_free ((GIrNode *)type->parameter_type1);
_g_ir_node_free ((GIrNode *)type->parameter_type2);
- g_free (type->interface);
+ g_free (type->giinterface);
g_strfreev (type->errors);
}
@@ -1244,7 +1249,7 @@ serialize_type (GIrTypelibBuild *build,
GIrNode *iface;
gchar *name;
- iface = find_entry_node (build, node->interface, NULL);
+ iface = find_entry_node (build, node->giinterface, NULL);
if (iface)
{
if (iface->type == G_IR_NODE_XREF)
@@ -1253,8 +1258,8 @@ serialize_type (GIrTypelibBuild *build,
}
else
{
- g_warning ("Interface for type reference %s not found", node->interface);
- name = node->interface;
+ g_warning ("Interface for type reference %s not found", node->giinterface);
+ name = node->giinterface;
}
g_string_append_printf (str, "%s%s", name,
@@ -1483,7 +1488,7 @@ _g_ir_node_build_typelib (GIrNode *node,
iface->reserved = 0;
iface->tag = type->tag;
iface->reserved2 = 0;
- iface->interface = find_entry (build, type->interface);
+ iface->interface = find_entry (build, type->giinterface);
}
break;
diff --git a/girepository/girnode.h b/girepository/girnode.h
index d89847ac..07b084c4 100644
--- a/girepository/girnode.h
+++ b/girepository/girnode.h
@@ -133,7 +133,7 @@ struct _GIrNodeType
GIrNodeType *parameter_type1;
GIrNodeType *parameter_type2;
- gchar *interface;
+ gchar *giinterface;
gchar **errors;
};
diff --git a/girepository/giroffsets.c b/girepository/giroffsets.c
index e3c9d7f5..368332ea 100644
--- a/girepository/giroffsets.c
+++ b/girepository/giroffsets.c
@@ -190,10 +190,10 @@ get_interface_size_alignment (GIrTypelibBuild *build,
{
GIrNode *iface;
- iface = _g_ir_find_node (build, ((GIrNode*)type)->module, type->interface);
+ iface = _g_ir_find_node (build, ((GIrNode*)type)->module, type->giinterface);
if (!iface)
{
- _g_ir_module_fatal (build, 0, "Can't resolve type '%s' for %s", type->interface, who);
+ _g_ir_module_fatal (build, 0, "Can't resolve type '%s' for %s", type->giinterface, who);
*size = -1;
*alignment = -1;
return FALSE;
diff --git a/girepository/girparser.c b/girepository/girparser.c
index fa0de1f8..f96cfb1e 100644
--- a/girepository/girparser.c
+++ b/girepository/girparser.c
@@ -36,6 +36,24 @@
*/
#define SUPPORTED_GIR_VERSION "1.2"
+#ifdef G_OS_WIN32
+
+#include <windows.h>
+
+#ifdef GIR_DIR
+#undef GIR_DIR
+#endif
+
+/* GIR_DIR is used only in code called just once,
+ * so no problem leaking this
+ */
+#define GIR_DIR \
+ g_build_filename (g_win32_get_package_installation_directory_of_module(NULL), \
+ "share", \
+ GIR_SUFFIX, \
+ NULL)
+#endif
+
struct _GIrParser
{
gchar **includes;
@@ -77,7 +95,6 @@ typedef enum
STATE_ALIAS, /* 30 */
STATE_TYPE,
STATE_ATTRIBUTE,
- STATE_DOC,
STATE_PASSTHROUGH
} ParseState;
@@ -324,15 +341,20 @@ state_switch (ParseContext *ctx, ParseState newstate)
g_assert (ctx->state != newstate);
ctx->prev_state = ctx->state;
ctx->state = newstate;
+
+ if (ctx->state == STATE_PASSTHROUGH)
+ ctx->unknown_depth = 1;
}
static GIrNode *
pop_node (ParseContext *ctx)
{
+ GSList *top;
+ GIrNode *node;
g_assert (ctx->node_stack != 0);
- GSList *top = ctx->node_stack;
- GIrNode *node = top->data;
+ top = ctx->node_stack;
+ node = top->data;
g_debug ("popping node %d %s", node->type, node->name);
ctx->node_stack = top->next;
@@ -359,7 +381,8 @@ typedef struct {
} IntegerAliasInfo;
static IntegerAliasInfo integer_aliases[] = {
- { "gchar", SIZEOF_CHAR, 0 },
+ { "gchar", SIZEOF_CHAR, 1 },
+ { "guchar", SIZEOF_CHAR, 0 },
{ "gshort", SIZEOF_SHORT, 1 },
{ "gushort", SIZEOF_SHORT, 0 },
{ "gint", SIZEOF_INT, 1 },
@@ -552,8 +575,8 @@ parse_type_internal (GIrModule *module,
if (*str == '<')
{
- (str)++;
char *tmp, *end;
+ (str)++;
end = strchr (str, '>');
tmp = g_strndup (str, end - str);
@@ -565,9 +588,10 @@ parse_type_internal (GIrModule *module,
}
else
{
+ const char *start;
type->tag = GI_TYPE_TAG_INTERFACE;
type->is_interface = TRUE;
- const char *start = str;
+ start = str;
/* must be an interface type */
while (g_ascii_isalnum (*str) ||
@@ -577,7 +601,7 @@ parse_type_internal (GIrModule *module,
*str == ':')
(str)++;
- type->interface = g_strndup (start, str - start);
+ type->giinterface = g_strndup (start, str - start);
}
if (next)
@@ -703,10 +727,7 @@ introspectable_prelude (GMarkupParseContext *context,
if (introspectable)
state_switch (ctx, new_state);
else
- {
- state_switch (ctx, STATE_PASSTHROUGH);
- ctx->unknown_depth = 1;
- }
+ state_switch (ctx, STATE_PASSTHROUGH);
return introspectable;
}
@@ -1965,7 +1986,7 @@ start_type (GMarkupParseContext *context,
* doesn't look like a pointer, but is internally.
*/
if (typenode->tag == GI_TYPE_TAG_INTERFACE &&
- is_disguised_structure (ctx, typenode->interface))
+ is_disguised_structure (ctx, typenode->giinterface))
pointer_depth++;
if (pointer_depth > 0)
@@ -2095,22 +2116,6 @@ end_type (ParseContext *ctx)
}
static gboolean
-start_doc (GMarkupParseContext *context,
- const gchar *element_name,
- const gchar **attribute_names,
- const gchar **attribute_values,
- ParseContext *ctx,
- GError **error)
-{
- if (strcmp (element_name, "doc") != 0)
- return FALSE;
-
- state_switch (ctx, STATE_DOC);
-
- return TRUE;
-}
-
-static gboolean
start_attribute (GMarkupParseContext *context,
const gchar *element_name,
const gchar **attribute_names,
@@ -2743,9 +2748,11 @@ start_element_handler (GMarkupParseContext *context,
attribute_names, attribute_values,
ctx, error))
goto out;
- else if (start_doc (context, element_name, attribute_names,
- attribute_values, ctx, error))
- goto out;
+ if (strcmp (element_name, "doc") == 0)
+ {
+ state_switch (ctx, STATE_PASSTHROUGH);
+ goto out;
+ }
break;
case 'e':
@@ -2824,6 +2831,11 @@ start_element_handler (GMarkupParseContext *context,
attribute_names, attribute_values,
ctx, error))
goto out;
+ else if (strcmp (element_name, "instance-parameter") == 0)
+ {
+ state_switch (ctx, STATE_PASSTHROUGH);
+ goto out;
+ }
else if (strcmp (element_name, "c:include") == 0)
{
state_switch (ctx, STATE_C_INCLUDE);
@@ -2860,6 +2872,9 @@ start_element_handler (GMarkupParseContext *context,
version = find_attribute ("version", attribute_names, attribute_values);
shared_library = find_attribute ("shared-library", attribute_names, attribute_values);
cprefix = find_attribute ("c:identifier-prefixes", attribute_names, attribute_values);
+ /* Backwards compatibility; vala currently still generates this */
+ if (cprefix == NULL)
+ cprefix = find_attribute ("c:prefix", attribute_names, attribute_values);
if (name == NULL)
MISSING_ATTRIBUTE (context, error, element_name, "name");
@@ -3006,7 +3021,6 @@ start_element_handler (GMarkupParseContext *context,
ctx->file_path, line_number, char_number, element_name,
ctx->state);
state_switch (ctx, STATE_PASSTHROUGH);
- ctx->unknown_depth = 1;
}
out:
@@ -3391,13 +3405,6 @@ end_element_handler (GMarkupParseContext *context,
}
break;
- case STATE_DOC:
- if (strcmp ("doc", element_name) == 0)
- {
- state_switch (ctx, ctx->prev_state);
- }
- break;
-
case STATE_PASSTHROUGH:
ctx->unknown_depth -= 1;
g_assert (ctx->unknown_depth >= 0);
diff --git a/girepository/gitypelib-internal.h b/girepository/gitypelib-internal.h
index 04662b4a..ac71008d 100644
--- a/girepository/gitypelib-internal.h
+++ b/girepository/gitypelib-internal.h
@@ -1126,13 +1126,15 @@ DirEntry *g_typelib_get_dir_entry (GITypelib *typelib,
DirEntry *g_typelib_get_dir_entry_by_name (GITypelib *typelib,
const char *name);
-DirEntry *g_typelib_get_dir_entry_by_gtype (GITypelib *typelib,
- gboolean fastpass,
- GType gtype);
+DirEntry *g_typelib_get_dir_entry_by_gtype_name (GITypelib *typelib,
+ const gchar *gtype_name);
DirEntry *g_typelib_get_dir_entry_by_error_domain (GITypelib *typelib,
GQuark error_domain);
+gboolean g_typelib_matches_gtype_name_prefix (GITypelib *typelib,
+ const gchar *gtype_name);
+
void g_typelib_check_sanity (void);
#define g_typelib_get_string(typelib,offset) ((const gchar*)&(typelib->data)[(offset)])
diff --git a/girepository/gitypelib.c b/girepository/gitypelib.c
index 2af17e96..d88924a6 100644
--- a/girepository/gitypelib.c
+++ b/girepository/gitypelib.c
@@ -198,55 +198,17 @@ g_typelib_get_dir_entry_by_name (GITypelib *typelib,
}
DirEntry *
-g_typelib_get_dir_entry_by_gtype (GITypelib *typelib,
- gboolean fastpass,
- GType gtype)
+g_typelib_get_dir_entry_by_gtype_name (GITypelib *typelib,
+ const gchar *gtype_name)
{
Header *header = (Header *)typelib->data;
- guint n_entries = header->n_local_entries;
- const char *gtype_name = g_type_name (gtype);
- DirEntry *entry;
guint i;
- const char *c_prefix;
-
- /* There is a corner case regarding GdkRectangle. GdkRectangle is a
- boxed type, but it is just an alias to boxed struct
- CairoRectangleInt. Scanner automatically converts all references
- to GdkRectangle to CairoRectangleInt, so GdkRectangle does not
- appear in the typelibs at all, although user code might query it.
- So if we get such query, we also change it to lookup of
- CairoRectangleInt.
- https://bugzilla.gnome.org/show_bug.cgi?id=655423 */
- if (!fastpass && !strcmp (gtype_name, "GdkRectangle"))
- gtype_name = "CairoRectangleInt";
-
- /* Inside each typelib, we include the "C prefix" which acts as
- * a namespace mechanism. For GtkTreeView, the C prefix is Gtk.
- * Given the assumption that GTypes for a library also use the
- * C prefix, we know we can skip examining a typelib if our
- * target type does not have this typelib's C prefix.
- *
- * However, not every class library necessarily conforms to this,
- * e.g. Clutter has Cogl inside it. So, we split this into two
- * passes. First we try a lookup, skipping things which don't
- * have the prefix. If that fails then we try a global lookup,
- * ignoring the prefix.
- *
- * See http://bugzilla.gnome.org/show_bug.cgi?id=564016
- */
- c_prefix = g_typelib_get_string (typelib, header->c_prefix);
- if (fastpass && c_prefix != NULL)
- {
- if (g_ascii_strncasecmp (c_prefix, gtype_name, strlen (c_prefix)) != 0)
- return NULL;
- }
- for (i = 1; i <= n_entries; i++)
+ for (i = 1; i <= header->n_local_entries; i++)
{
RegisteredTypeBlob *blob;
const char *type;
-
- entry = g_typelib_get_dir_entry (typelib, i);
+ DirEntry *entry = g_typelib_get_dir_entry (typelib, i);
if (!BLOB_IS_REGISTERED_TYPE (entry))
continue;
@@ -261,6 +223,110 @@ g_typelib_get_dir_entry_by_gtype (GITypelib *typelib,
return NULL;
}
+typedef struct {
+ const char *s;
+ const char *separator;
+ gsize sep_len;
+ GString buf;
+} StrSplitIter;
+
+static void
+strsplit_iter_init (StrSplitIter *iter,
+ const char *s,
+ const char *separator)
+{
+ iter->s = s;
+ iter->separator = separator;
+ iter->sep_len = strlen (separator);
+ iter->buf.str = NULL;
+ iter->buf.len = 0;
+ iter->buf.allocated_len = 0;
+}
+
+static gboolean
+strsplit_iter_next (StrSplitIter *iter,
+ char **out_val)
+{
+ const char *s = iter->s;
+ const char *next;
+ gsize len;
+
+ if (!s)
+ return FALSE;
+ next = strstr (s, iter->separator);
+ if (next)
+ {
+ iter->s = next + iter->sep_len;
+ len = next - s;
+ }
+ else
+ {
+ iter->s = NULL;
+ len = strlen (s);
+ }
+ if (len == 0)
+ {
+ *out_val = "";
+ }
+ else
+ {
+ g_string_overwrite_len (&iter->buf, 0, s, (gssize)len);
+ *out_val = iter->buf.str;
+ }
+ return TRUE;
+}
+
+static void
+strsplit_iter_clear (StrSplitIter *iter)
+{
+ g_free (iter->buf.str);
+}
+
+gboolean
+g_typelib_matches_gtype_name_prefix (GITypelib *typelib,
+ const gchar *gtype_name)
+{
+ Header *header = (Header *)typelib->data;
+ const char *c_prefix;
+ gchar *prefix;
+ gboolean ret = FALSE;
+ StrSplitIter split_iter;
+ gsize gtype_name_len;
+
+ c_prefix = g_typelib_get_string (typelib, header->c_prefix);
+ if (c_prefix == NULL || strlen (c_prefix) == 0)
+ return FALSE;
+
+ gtype_name_len = strlen (gtype_name);
+
+ /* c_prefix is a comma separated string of supported prefixes
+ * in the typelib.
+ * We match the specified gtype_name if the gtype_name starts
+ * with the prefix, and is followed by a capital letter.
+ * For example, a typelib offering the 'Gdk' prefix does match
+ * GdkX11Cursor, however a typelib offering the 'G' prefix does not.
+ */
+ strsplit_iter_init (&split_iter, c_prefix, ",");
+ while (strsplit_iter_next (&split_iter, &prefix))
+ {
+ size_t len = strlen (prefix);
+
+ if (gtype_name_len < len)
+ continue;
+
+ if (strncmp (prefix, gtype_name, len) != 0)
+ continue;
+
+ if (g_ascii_isupper (gtype_name[len]))
+ {
+ ret = TRUE;
+ break;
+ }
+ }
+ strsplit_iter_clear (&split_iter);
+ return ret;
+}
+
DirEntry *
g_typelib_get_dir_entry_by_error_domain (GITypelib *typelib,
GQuark error_domain)
@@ -2062,6 +2128,72 @@ g_typelib_error_quark (void)
return quark;
}
+static GSList *library_paths;
+
+/**
+ * g_irepository_prepend_library_path:
+ * @directory: (type filename): a single directory to scan for shared libraries
+ *
+ * Prepends @directory to the search path that is used to
+ * search shared libraries referenced by imported namespaces.
+ * Multiple calls to this function all contribute to the final
+ * list of paths.
+ * The list of paths is unique and shared for all #GIRepository
+ * instances across the process, but it doesn't affect namespaces
+ * imported before the call.
+ *
+ * If the library is not found in the directories configured
+ * in this way, loading will fall back to the system library
+ * path (ie. LD_LIBRARY_PATH and DT_RPATH in ELF systems).
+ * See the documentation of your dynamic linker for full details.
+ *
+ * Since: 1.35.8
+ */
+void
+g_irepository_prepend_library_path (const char *directory)
+{
+ library_paths = g_slist_prepend (library_paths,
+ g_strdup (directory));
+}
+
+/* Note on the GModule flags used by this function:
+
+ * Glade's autoconnect feature and OpenGL's extension mechanism
+ * as used by Clutter rely on g_module_open(NULL) to work as a means of
+ * accessing the app's symbols. This keeps us from using
+ * G_MODULE_BIND_LOCAL. BIND_LOCAL may have other issues as well;
+ * in general libraries are not expecting multiple copies of
+ * themselves and are not expecting to be unloaded. So we just
+ * load modules globally for now.
+ */
+static GModule *
+load_one_shared_library (const char *shlib)
+{
+ GSList *p;
+ GModule *m;
+
+ if (!g_path_is_absolute (shlib))
+ {
+ /* First try in configured library paths */
+ for (p = library_paths; p; p = p->next)
+ {
+ char *path = g_build_filename (p->data, shlib, NULL);
+
+ m = g_module_open (path, G_MODULE_BIND_LAZY);
+
+ g_free (path);
+ if (m != NULL)
+ return m;
+ }
+ }
+
+ /* Then try loading from standard paths */
+ /* Do not attempt to fix up shlib to replace .la with .so:
+ it's done by GModule anyway.
+ */
+ return g_module_open (shlib, G_MODULE_BIND_LAZY);
+}
+
static void
_g_typelib_do_dlopen (GITypelib *typelib)
{
@@ -2091,30 +2223,7 @@ _g_typelib_do_dlopen (GITypelib *typelib)
{
GModule *module;
- /* Glade's autoconnect feature and OpenGL's extension mechanism
- * as used by Clutter rely on g_module_open(NULL) to work as a means of
- * accessing the app's symbols. This keeps us from using
- * G_MODULE_BIND_LOCAL. BIND_LOCAL may have other issues as well;
- * in general libraries are not expecting multiple copies of
- * themselves and are not expecting to be unloaded. So we just
- * load modules globally for now.
- */
-
- module = g_module_open (shlibs[i], G_MODULE_BIND_LAZY);
-
- if (module == NULL)
- {
- GString *shlib_full = g_string_new (shlibs[i]);
-
- module = g_module_open (shlib_full->str, G_MODULE_BIND_LAZY);
- if (module == NULL)
- {
- g_string_overwrite (shlib_full, strlen (shlib_full->str)-2, SHLIB_SUFFIX);
- module = g_module_open (shlib_full->str, G_MODULE_BIND_LAZY);
- }
-
- g_string_free (shlib_full, TRUE);
- }
+ module = load_one_shared_library (shlibs[i]);
if (module == NULL)
{
diff --git a/girepository/gthash-test.c b/girepository/gthash-test.c
index ea811e35..faeb2dc5 100644
--- a/girepository/gthash-test.c
+++ b/girepository/gthash-test.c
@@ -56,7 +56,6 @@ test_build_retrieve (void)
int
main(int argc, char **argv)
{
- g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/gthash/build-retrieve", test_build_retrieve);
diff --git a/girepository/gthash.c b/girepository/gthash.c
index b50ea6f0..ecc3b104 100644
--- a/girepository/gthash.c
+++ b/girepository/gthash.c
@@ -29,7 +29,7 @@
#define ALIGN_VALUE(this, boundary) \
(( ((unsigned long)(this)) + (((unsigned long)(boundary)) -1)) & (~(((unsigned long)(boundary))-1)))
-/**
+/*
* String hashing in the typelib. We have a set of static (fixed) strings,
* and given one, we need to find its index number. This problem is perfect
* hashing: http://en.wikipedia.org/wiki/Perfect_hashing
diff --git a/giscanner/annotationmain.py b/giscanner/annotationmain.py
index 4df6e831..304f5a32 100644
--- a/giscanner/annotationmain.py
+++ b/giscanner/annotationmain.py
@@ -26,6 +26,7 @@ from giscanner.scannermain import (get_preprocessor_option_group,
create_source_scanner,
process_packages)
+
def annotation_main(args):
parser = optparse.OptionParser('%prog [options] sources')
diff --git a/giscanner/annotationparser.py b/giscanner/annotationparser.py
index 2ac1b0eb..a0657dc4 100644
--- a/giscanner/annotationparser.py
+++ b/giscanner/annotationparser.py
@@ -20,18 +20,13 @@
#
-# AnnotationParser - extract annotations from gtk-doc comments
+# AnnotationParser - extract annotations from GTK-Doc comment blocks
import re
from . import message
-from .annotationpatterns import (COMMENT_START_RE, COMMENT_END_RE,
- COMMENT_ASTERISK_RE, EMPTY_LINE_RE,
- SECTION_RE, SYMBOL_RE, PROPERTY_RE, SIGNAL_RE,
- PARAMETER_RE, DESCRIPTION_TAG_RE, TAG_RE,
- MULTILINE_ANNOTATION_CONTINUATION_RE)
-from .odict import odict
+from .collections import OrderedDict
# GTK-Doc comment block parts
@@ -53,6 +48,7 @@ TAG_STABILITY = 'stability'
TAG_DEPRECATED = 'deprecated'
TAG_RETURNS = 'returns'
TAG_RETURNVALUE = 'return value'
+TAG_DESCRIPTION = 'description'
TAG_ATTRIBUTES = 'attributes'
TAG_RENAME_TO = 'rename to'
TAG_TYPE = 'type'
@@ -68,6 +64,7 @@ _ALL_TAGS = [TAG_VFUNC,
TAG_DEPRECATED,
TAG_RETURNS,
TAG_RETURNVALUE,
+ TAG_DESCRIPTION,
TAG_ATTRIBUTES,
TAG_RENAME_TO,
TAG_TYPE,
@@ -137,15 +134,254 @@ OPT_TRANSFER_FULL = 'full'
OPT_TRANSFER_FLOATING = 'floating'
+#The following regular expression programs are built to:
+# - match (or substitute) a single comment block line at a time;
+# - support (but remains untested) LOCALE and UNICODE modes.
+
+# Program matching the start of a comment block.
+#
+# Results in 0 symbolic groups.
+COMMENT_START_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ / # 1 forward slash character
+ \*{2} # exactly 2 asterisk characters
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+# Program matching the end of a comment block. We need to take care
+# of comment ends that aren't on their own line for legacy support
+# reasons. See https://bugzilla.gnome.org/show_bug.cgi?id=689354
+#
+# Results in 1 symbolic group:
+# - group 1 = description
+COMMENT_END_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<description>.*?) # description text
+ [^\S\n\r]* # 0 or more whitespace characters
+ \*+ # 1 or more asterisk characters
+ / # 1 forward slash character
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+# Program matching the ' * ' at the beginning of every
+# line inside a comment block.
+#
+# Results in 0 symbolic groups.
+COMMENT_ASTERISK_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ \* # 1 asterisk character
+ [^\S\n\r]? # 0 or 1 whitespace characters. Careful,
+ # removing more than 1 whitespace
+ # character would break embedded
+ # example program indentation
+ ''',
+ re.VERBOSE)
+
+# Program matching the indentation at the beginning of every
+# line (stripped from the ' * ') inside a comment block.
+#
+# Results in 1 symbolic group:
+# - group 1 = indentation
+COMMENT_INDENTATION_RE = re.compile(
+ r'''
+ ^
+ (?P<indentation>[^\S\n\r]*) # 0 or more whitespace characters
+ .*
+ $
+ ''',
+ re.VERBOSE)
+
+# Program matching an empty line.
+#
+# Results in 0 symbolic groups.
+EMPTY_LINE_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+# Program matching SECTION identifiers.
+#
+# Results in 2 symbolic groups:
+# - group 1 = colon
+# - group 2 = section_name
+SECTION_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ SECTION # SECTION
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<colon>:?) # colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<section_name>\w\S+)? # section name
+ [^\S\n\r]* # 0 or more whitespace characters
+ $
+ ''',
+ re.VERBOSE)
+
+# Program matching symbol (function, constant, struct and enum) identifiers.
+#
+# Results in 3 symbolic groups:
+# - group 1 = symbol_name
+# - group 2 = colon
+# - group 3 = annotations
+SYMBOL_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<symbol_name>[\w-]*\w) # symbol name
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<colon>:?) # colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+# Program matching property identifiers.
+#
+# Results in 4 symbolic groups:
+# - group 1 = class_name
+# - group 2 = property_name
+# - group 3 = colon
+# - group 4 = annotations
+PROPERTY_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<class_name>[\w]+) # class name
+ [^\S\n\r]* # 0 or more whitespace characters
+ :{1} # required colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<property_name>[\w-]*\w) # property name
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<colon>:?) # colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+# Program matching signal identifiers.
+#
+# Results in 4 symbolic groups:
+# - group 1 = class_name
+# - group 2 = signal_name
+# - group 3 = colon
+# - group 4 = annotations
+SIGNAL_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<class_name>[\w]+) # class name
+ [^\S\n\r]* # 0 or more whitespace characters
+ :{2} # 2 required colons
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<signal_name>[\w-]*\w) # signal name
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<colon>:?) # colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+# Program matching parameters.
+#
+# Results in 4 symbolic groups:
+# - group 1 = parameter_name
+# - group 2 = annotations
+# - group 3 = colon
+# - group 4 = description
+PARAMETER_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ @ # @ character
+ (?P<parameter_name>[\w-]*\w|\.\.\.) # parameter name
+ [^\S\n\r]* # 0 or more whitespace characters
+ :{1} # required colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
+ (?P<colon>:?) # colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<description>.*?) # description
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+# Program matching tags.
+#
+# Results in 4 symbolic groups:
+# - group 1 = tag_name
+# - group 2 = annotations
+# - group 3 = colon
+# - group 4 = description
+_all_tags = '|'.join(_ALL_TAGS).replace(' ', '\\ ')
+TAG_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<tag_name>''' + _all_tags + r''') # tag name
+ [^\S\n\r]* # 0 or more whitespace characters
+ :{1} # required colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
+ (?P<colon>:?) # colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<description>.*?) # description
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE | re.IGNORECASE)
+
+# Program matching multiline annotation continuations.
+# This is used on multiline parameters and tags (but not on the first line) to
+# generate warnings about invalid annotations spanning multiple lines.
+#
+# Results in 3 symbolic groups:
+# - group 2 = annotations
+# - group 3 = colon
+# - group 4 = description
+MULTILINE_ANNOTATION_CONTINUATION_RE = re.compile(
+ r'''
+ ^ # start
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
+ (?P<colon>:) # colon
+ [^\S\n\r]* # 0 or more whitespace characters
+ (?P<description>.*?) # description
+ [^\S\n\r]* # 0 or more whitespace characters
+ $ # end
+ ''',
+ re.VERBOSE)
+
+
class DocBlock(object):
def __init__(self, name):
self.name = name
self.options = DocOptions()
self.value = None
- self.tags = odict()
+ self.tags = OrderedDict()
self.comment = None
- self.params = odict()
+ self.params = OrderedDict()
self.position = None
def __cmp__(self, other):
@@ -154,16 +390,6 @@ class DocBlock(object):
def __repr__(self):
return '<DocBlock %r %r>' % (self.name, self.options)
- def set_position(self, position):
- self.position = position
- self.options.position = position
-
- def get_tag(self, name):
- return self.tags.get(name)
-
- def get_param(self, name):
- return self.params.get(name)
-
def to_gtk_doc(self):
options = ''
if self.options:
@@ -175,9 +401,10 @@ class DocBlock(object):
lines[0] += options
for param in self.params.values():
lines.append(param.to_gtk_doc_param())
- lines.append('')
- for l in self.comment.split('\n'):
- lines.append(l)
+ if self.comment:
+ lines.append('')
+ for l in self.comment.split('\n'):
+ lines.append(l)
if self.tags:
lines.append('')
for tag in self.tags.values():
@@ -229,8 +456,8 @@ class DocTag(object):
s = 'one value'
else:
s = '%d values' % (n_params, )
- if ((n_params > 0 and (value is None or value.length() != n_params)) or
- n_params == 0 and value is not None):
+ if ((n_params > 0 and (value is None or value.length() != n_params))
+ or n_params == 0 and value is not None):
if value is None:
length = 0
else:
@@ -250,7 +477,7 @@ class DocTag(object):
if value is None:
return
- for name, v in value.all().iteritems():
+ for name, v in value.all().items():
if name in [OPT_ARRAY_ZERO_TERMINATED, OPT_ARRAY_FIXED_SIZE]:
try:
int(v)
@@ -279,7 +506,7 @@ class DocTag(object):
if value is not None and value.length() > 1:
message.warn(
'closure takes at most 1 value, %d given' % (
- value.length()), self.position)
+ value.length(), ), self.position)
def _validate_element_type(self, option, value):
self._validate_option(option, value, required=True)
@@ -291,7 +518,7 @@ class DocTag(object):
if value.length() > 2:
message.warn(
'element-type takes at most 2 values, %d given' % (
- value.length()), self.position)
+ value.length(), ), self.position)
return
def _validate_out(self, option, value):
@@ -300,30 +527,26 @@ class DocTag(object):
if value.length() > 1:
message.warn(
'out annotation takes at most 1 value, %d given' % (
- value.length()), self.position)
+ value.length(), ), self.position)
return
value_str = value.one()
if value_str not in [OPT_OUT_CALLEE_ALLOCATES,
OPT_OUT_CALLER_ALLOCATES]:
message.warn("out annotation value is invalid: %r" % (
- value_str), self.position)
+ value_str, ), self.position)
return
- def set_position(self, position):
- self.position = position
- self.options.position = position
-
def _get_gtk_doc_value(self):
def serialize_one(option, value, fmt, fmt2):
if value:
if type(value) != str:
value = ' '.join((serialize_one(k, v, '%s=%s', '%s')
- for k, v in value.all().iteritems()))
+ for k, v in value.all().items()))
return fmt % (option, value)
else:
return fmt2 % (option, )
annotations = []
- for option, value in self.options.iteritems():
+ for option, value in self.options.items():
annotations.append(
serialize_one(option, value, '(%s %s)', '(%s)'))
if annotations:
@@ -345,8 +568,7 @@ class DocTag(object):
# validation below is most certainly going to fail.
return
- for option in self.options:
- value = self.options[option]
+ for option, value in self.options.items():
if option == OPT_ALLOW_NONE:
self._validate_option(option, value, n_params=0)
elif option == OPT_ARRAY:
@@ -399,6 +621,7 @@ class DocTag(object):
class DocOptions(object):
def __init__(self):
self.values = []
+ self.position = None
def __repr__(self):
return '<DocOptions %r>' % (self.values, )
@@ -429,7 +652,7 @@ class DocOptions(object):
if key == item:
yield value
- def iteritems(self):
+ def items(self):
return iter(self.values)
@@ -438,7 +661,7 @@ class DocOption(object):
def __init__(self, tag, option):
self.tag = tag
self._array = []
- self._dict = {}
+ self._dict = OrderedDict()
# (annotation option1=value1 option2=value2) etc
for p in option.split(' '):
if '=' in p:
@@ -477,7 +700,8 @@ class AnnotationParser(object):
:class:`DocTag`, :class:`DocOptions` and :class:`DocOption` objects. This
parser tries to accept malformed input whenever possible and does not emit
syntax errors. However, it does emit warnings at the slightest indication
- of malformed input when possible.
+ of malformed input when possible. It is usually a good idea to heed these
+ warnings as malformed input is known to result in invalid GTK-Doc output.
A GTK-Doc comment block can be constructed out of multiple parts that can
be combined to write different types of documentation.
@@ -489,42 +713,52 @@ class AnnotationParser(object):
.. code-block:: c
/**
- * identifier_name: [annotations]
- * @parameter_name: [annotations:] [description]
+ * identifier_name [:annotations]
+ * @parameter_name [:annotations] [:description]
*
- * description
- * tag_name: [annotations:] [description]
+ * comment_block_description
+ * tag_name [:annotations] [:description]
*/
- - Parts and fields cannot span multiple lines, except for parameter descriptions,
- tag descriptions and comment block descriptions.
- - There has to be exactly 1 `identifier` part on the first line of the
- comment block which consists of:
- * an `identifier_name` field
- * an optional `annotations` field
- - There can be 0 or more `parameter` parts following the `identifier` part,
- each consisting of:
- * a `parameter_name` filed
- * an optional `annotations` field
- * an optional `description` field
- - An empty lines signals the end of the `parameter` parts and the beginning
- of the (free form) comment block `description` part.
- - There can be 0 or 1 `description` parts following the `description` part.
- - There can be 0 or more `tag` parts following the `description` part,
- each consisting of:
- * a `tag_name` field
- * an optional `annotations` field
- * an optional `description` field
+ The order in which the different parts have to be specified is important::
+
+ - There has to be exactly 1 `identifier` part on the first line of the
+ comment block which consists of:
+ * an `identifier_name` field
+ * an optional `annotations` field
+ - Followed by 0 or more `parameters` parts, each consisting of:
+ * a `parameter_name` field
+ * an optional `annotations` field
+ * an optional `description` field
+ - Followed by at least 1 empty line signaling the beginning of
+ the `comment_block_description` part
+ - Followed by an optional `comment block description` part.
+ - Followed by 0 or more `tag` parts, each consisting of:
+ * a `tag_name` field
+ * an optional `annotations` field
+ * an optional `description` field
+
+ Additionally, the following restrictions are in effect::
+
+ - Parts can optionally be separated by an empty line, except between
+ the `parameter` parts and the `comment block description` part where
+ an empty line is required (see above).
+ - Parts and fields cannot span multiple lines, except for
+ `parameter descriptions`, `tag descriptions` and the
+ `comment_block_description` fields.
+ - `parameter descriptions` fields can not span multiple paragraphs.
+ - `tag descriptions` and `comment block description` fields can
+ span multiple paragraphs.
.. NOTE:: :class:`AnnotationParser` functionality is heavily based on gtkdoc-mkdb's
- `ScanSourceFile()`_ function and is currently in sync with gtk-doc
- commit `b41641b`_.
+ `ScanSourceFile()`_ function and is currently in sync with GTK-Doc
+ commit `47abcd5`_.
- .. _types of documentation:
+ .. _GTK-Doc's documentation:
http://developer.gnome.org/gtk-doc-manual/1.18/documenting.html.en
.. _ScanSourceFile():
http://git.gnome.org/browse/gtk-doc/tree/gtkdoc-mkdb.in#n3722
- .. _b41641b: b41641bd75f870afff7561ceed8a08456da57565
+ .. _47abcd5: 47abcd53b8489ebceec9e394676512a181c1f1f6
"""
def parse(self, comments):
@@ -532,22 +766,32 @@ class AnnotationParser(object):
Parses multiple GTK-Doc comment blocks.
:param comments: a list of (comment, filename, lineno) tuples
- :returns: a list of :class:`DocBlock` or ``None`` objects
+ :returns: a dictionary mapping identifier names to :class:`DocBlock` objects
"""
comment_blocks = {}
for comment in comments:
- comment_block = self.parse_comment_block(comment)
+ try:
+ comment_block = self.parse_comment_block(comment)
+ except Exception:
+ message.warn('unrecoverable parse error, please file a GObject-Introspection '
+ 'bug report including the complete comment block at the '
+ 'indicated location.', message.Position(comment[1], comment[2]))
+ continue
if comment_block is not None:
+ # Note: previous versions of this parser did not check
+ # if an identifier was already stored in comment_blocks,
+ # so when multiple comment blocks where encountered documenting
+ # the same identifier the last one seen "wins".
+ # Keep this behavior for backwards compatibility, but
+ # emit a warning.
if comment_block.name in comment_blocks:
message.warn("multiple comment blocks documenting '%s:' identifier." %
- (comment_block.name),
+ (comment_block.name, ),
comment_block.position)
- # Always store the block even if it's a duplicate for
- # backward compatibility...
comment_blocks[comment_block.name] = comment_block
return comment_blocks
@@ -561,29 +805,48 @@ class AnnotationParser(object):
"""
comment, filename, lineno = comment
+
+ # Assign line numbers to each line of the comment block,
+ # which will later be used as the offset to calculate the
+ # real line number in the source file
comment_lines = list(enumerate(comment.split('\n')))
# Check for the start the comment block.
- if COMMENT_START_RE.search(comment_lines[0][1]):
+ if COMMENT_START_RE.match(comment_lines[0][1]):
del comment_lines[0]
else:
# Not a GTK-Doc comment block.
return None
# Check for the end the comment block.
- if COMMENT_END_RE.search(comment_lines[-1][1]):
- del comment_lines[-1]
+ line_offset, line = comment_lines[-1]
+ result = COMMENT_END_RE.match(line)
+ if result:
+ description = result.group('description')
+ if description:
+ comment_lines[-1] = (line_offset, description)
+ position = message.Position(filename, lineno + line_offset)
+ marker = ' ' * result.end('description') + '^'
+ message.warn("Comments should end with */ on a new line:\n%s\n%s" %
+ (line, marker),
+ position)
+ else:
+ del comment_lines[-1]
+ else:
+ # Not a GTK-Doc comment block.
+ return None
# If we get this far, we are inside a GTK-Doc comment block.
return self._parse_comment_block(comment_lines, filename, lineno)
def _parse_comment_block(self, comment_lines, filename, lineno):
"""
- Parses a single GTK-Doc comment block stripped from it's
+ Parses a single GTK-Doc comment block already stripped from its
comment start (/**) and comment end (*/) marker lines.
- :param comment_lines: GTK-Doc comment block stripped from it's comment
- start (/**) and comment end (*/) marker lines
+ :param comment_lines: list of (line_offset, line) tuples representing a
+ GTK-Doc comment block already stripped from it's
+ start (/**) and end (*/) marker lines
:param filename: source file name where the comment block originated from
:param lineno: line in the source file where the comment block starts
:returns: a :class:`DocBlock` object or ``None``
@@ -601,6 +864,8 @@ class AnnotationParser(object):
http://git.gnome.org/browse/gtk-doc/tree/gtkdoc-mkdb.in#n3722
"""
comment_block = None
+ part_indent = None
+ line_indent = None
in_part = None
identifier = None
current_param = None
@@ -621,61 +886,55 @@ class AnnotationParser(object):
column_offset = result.end(0)
line = line[result.end(0):]
+ # Store indentation level of the line.
+ result = COMMENT_INDENTATION_RE.match(line)
+ line_indent = len(result.group('indentation').replace('\t', ' '))
+
####################################################################
# Check for GTK-Doc comment block identifier.
####################################################################
if not comment_block:
- # The correct identifier name would have the colon at the end
- # but maintransformer.py does not expect us to do that. So
- # make sure to compute an identifier_name without the colon and
- # a real_identifier_name with the colon.
-
if not identifier:
- result = SECTION_RE.search(line)
+ result = SECTION_RE.match(line)
if result:
identifier = IDENTIFIER_SECTION
- real_identifier_name = 'SECTION:%s' % (result.group('section_name'))
- identifier_name = real_identifier_name
+ identifier_name = 'SECTION:%s' % (result.group('section_name'), )
column = result.start('section_name') + column_offset
if not identifier:
- result = SYMBOL_RE.search(line)
+ result = SYMBOL_RE.match(line)
if result:
identifier = IDENTIFIER_SYMBOL
- real_identifier_name = '%s:' % (result.group('symbol_name'))
- identifier_name = '%s' % (result.group('symbol_name'))
+ identifier_name = '%s' % (result.group('symbol_name'), )
column = result.start('symbol_name') + column_offset
if not identifier:
- result = PROPERTY_RE.search(line)
+ result = PROPERTY_RE.match(line)
if result:
identifier = IDENTIFIER_PROPERTY
- real_identifier_name = '%s:%s:' % (result.group('class_name'),
- result.group('property_name'))
identifier_name = '%s:%s' % (result.group('class_name'),
result.group('property_name'))
column = result.start('property_name') + column_offset
if not identifier:
- result = SIGNAL_RE.search(line)
+ result = SIGNAL_RE.match(line)
if result:
identifier = IDENTIFIER_SIGNAL
- real_identifier_name = '%s::%s:' % (result.group('class_name'),
- result.group('signal_name'))
identifier_name = '%s::%s' % (result.group('class_name'),
result.group('signal_name'))
column = result.start('signal_name') + column_offset
if identifier:
in_part = PART_IDENTIFIER
+ part_indent = line_indent
comment_block = DocBlock(identifier_name)
- comment_block.set_position(position)
+ comment_block.position = position
if 'colon' in result.groupdict() and result.group('colon') != ':':
colon_start = result.start('colon')
colon_column = column_offset + colon_start
- marker = ' '*colon_column + '^'
+ marker = ' ' * colon_column + '^'
message.warn("missing ':' at column %s:\n%s\n%s" %
(colon_column + 1, original_line, marker),
position)
@@ -695,7 +954,7 @@ class AnnotationParser(object):
# right thing to do because sooner or later some long
# descriptions will contain something matching an identifier
# pattern by accident.
- marker = ' '*column_offset + '^'
+ marker = ' ' * column_offset + '^'
message.warn('ignoring unrecognized GTK-Doc comment block, identifier not '
'found:\n%s\n%s' % (original_line, marker),
position)
@@ -705,7 +964,7 @@ class AnnotationParser(object):
####################################################################
# Check for comment block parameters.
####################################################################
- result = PARAMETER_RE.search(line)
+ result = PARAMETER_RE.match(line)
if result:
param_name = result.group('parameter_name')
param_annotations = result.group('annotations')
@@ -714,9 +973,11 @@ class AnnotationParser(object):
if in_part == PART_IDENTIFIER:
in_part = PART_PARAMETERS
+ part_indent = line_indent
+
if in_part != PART_PARAMETERS:
column = result.start('parameter_name') + column_offset
- marker = ' '*column + '^'
+ marker = ' ' * column + '^'
message.warn("'@%s' parameter unexpected at this location:\n%s\n%s" %
(param_name, original_line, marker),
position)
@@ -730,17 +991,17 @@ class AnnotationParser(object):
returns_seen = True
else:
message.warn("encountered multiple 'Returns' parameters or tags for "
- "'%s'." % (comment_block.name),
+ "'%s'." % (comment_block.name, ),
position)
elif param_name in comment_block.params.keys():
column = result.start('parameter_name') + column_offset
- marker = ' '*column + '^'
+ marker = ' ' * column + '^'
message.warn("multiple '@%s' parameters for identifier '%s':\n%s\n%s" %
(param_name, comment_block.name, original_line, marker),
position)
tag = DocTag(comment_block, param_name)
- tag.set_position(position)
+ tag.position = position
tag.comment = param_description
if param_annotations:
tag.options = self.parse_options(tag, param_annotations)
@@ -756,28 +1017,48 @@ class AnnotationParser(object):
#
# When we are parsing comment block parameters or the comment block
# identifier (when there are no parameters) and encounter an empty
- # line, we must be parsing the comment block description
+ # line, we must be parsing the comment block description.
####################################################################
- if (EMPTY_LINE_RE.search(line)
- and (in_part == PART_IDENTIFIER or in_part == PART_PARAMETERS)):
+ if (EMPTY_LINE_RE.match(line) and in_part in [PART_IDENTIFIER, PART_PARAMETERS]):
in_part = PART_DESCRIPTION
+ part_indent = line_indent
continue
####################################################################
# Check for GTK-Doc comment block tags.
####################################################################
- result = TAG_RE.search(line)
- if result:
+ result = TAG_RE.match(line)
+ if result and line_indent <= part_indent:
tag_name = result.group('tag_name')
tag_annotations = result.group('annotations')
tag_description = result.group('description')
+ marker = ' ' * (result.start('tag_name') + column_offset) + '^'
+
+ # Deprecated GTK-Doc Description: tag
+ if tag_name.lower() == TAG_DESCRIPTION:
+ message.warn("GTK-Doc tag \"Description:\" has been deprecated:\n%s\n%s" %
+ (original_line, marker),
+ position)
+
+ in_part = PART_DESCRIPTION
+ part_indent = line_indent
+
+ if not comment_block.comment:
+ comment_block.comment = tag_description
+ else:
+ comment_block.comment += '\n' + tag_description
+ continue
+
+ # Now that the deprecated stuff is out of the way, continue parsing real tags
if in_part == PART_DESCRIPTION:
in_part = PART_TAGS
+ part_indent = line_indent
+
if in_part != PART_TAGS:
column = result.start('tag_name') + column_offset
- marker = ' '*column + '^'
+ marker = ' ' * column + '^'
message.warn("'%s:' tag unexpected at this location:\n%s\n%s" %
(tag_name, original_line, marker),
position)
@@ -787,7 +1068,7 @@ class AnnotationParser(object):
returns_seen = True
else:
message.warn("encountered multiple 'Returns' parameters or tags for "
- "'%s'." % (comment_block.name),
+ "'%s'." % (comment_block.name, ),
position)
tag = DocTag(comment_block, TAG_RETURNS)
@@ -801,7 +1082,7 @@ class AnnotationParser(object):
else:
if tag_name.lower() in comment_block.tags.keys():
column = result.start('tag_name') + column_offset
- marker = ' '*column + '^'
+ marker = ' ' * column + '^'
message.warn("multiple '%s:' tags for identifier '%s':\n%s\n%s" %
(tag_name, comment_block.name, original_line, marker),
position)
@@ -814,7 +1095,7 @@ class AnnotationParser(object):
tag.options = self.parse_options(tag, tag_annotations)
else:
message.warn("annotations not supported for tag '%s:'." %
- (tag_name),
+ (tag_name, ),
position)
comment_block.tags[tag_name.lower()] = tag
current_tag = tag
@@ -824,12 +1105,8 @@ class AnnotationParser(object):
# If we get here, we must be in the middle of a multiline
# comment block, parameter or tag description.
####################################################################
- if in_part == PART_DESCRIPTION or in_part == PART_IDENTIFIER:
+ if in_part in [PART_IDENTIFIER, PART_DESCRIPTION]:
if not comment_block.comment:
- # Backwards compatibility with old style GTK-Doc
- # comment blocks where Description used to be a comment
- # block tag. Simply get rid of 'Description:'.
- line = re.sub(DESCRIPTION_TAG_RE, '', line)
comment_block.comment = line
else:
comment_block.comment += '\n' + line
@@ -837,38 +1114,39 @@ class AnnotationParser(object):
elif in_part == PART_PARAMETERS:
self._validate_multiline_annotation_continuation(line, original_line,
column_offset, position)
-
# Append to parameter description.
current_param.comment += ' ' + line.strip()
+ continue
elif in_part == PART_TAGS:
self._validate_multiline_annotation_continuation(line, original_line,
column_offset, position)
-
# Append to tag description.
if current_tag.name.lower() in [TAG_RETURNS, TAG_RETURNVALUE]:
current_tag.comment += ' ' + line.strip()
else:
current_tag.value += ' ' + line.strip()
+ continue
########################################################################
# Finished parsing this comment block.
########################################################################
- # We have picked up a couple of \n characters that where not
- # intended. Strip those.
- if comment_block.comment:
- comment_block.comment = comment_block.comment.strip()
- else:
- comment_block.comment = ''
+ if comment_block:
+ # We have picked up a couple of \n characters that where not
+ # intended. Strip those.
+ if comment_block.comment:
+ comment_block.comment = comment_block.comment.strip()
- for tag in comment_block.tags.itervalues():
- self._clean_comment_block_part(tag)
+ for tag in comment_block.tags.values():
+ self._clean_comment_block_part(tag)
- for param in comment_block.params.itervalues():
- self._clean_comment_block_part(param)
+ for param in comment_block.params.values():
+ self._clean_comment_block_part(param)
- # Validate and store block.
- comment_block.validate()
- return comment_block
+ # Validate and store block.
+ comment_block.validate()
+ return comment_block
+ else:
+ return None
def _clean_comment_block_part(self, part):
if part.comment:
@@ -882,7 +1160,7 @@ class AnnotationParser(object):
part.value = ''
def _validate_multiline_annotation_continuation(self, line, original_line,
- column_offset, position):
+ column_offset, position):
'''
Validate parameters and tags (except the first line) and generate
warnings about invalid annotations spanning multiple lines.
@@ -893,26 +1171,26 @@ class AnnotationParser(object):
:param position: position of `line` in the source file
'''
- result = MULTILINE_ANNOTATION_CONTINUATION_RE.search(line)
+ result = MULTILINE_ANNOTATION_CONTINUATION_RE.match(line)
if result:
- line = result.group('description')
column = result.start('annotations') + column_offset
- marker = ' '*column + '^'
+ marker = ' ' * column + '^'
message.warn('ignoring invalid multiline annotation continuation:\n'
'%s\n%s' % (original_line, marker),
position)
@classmethod
def parse_options(cls, tag, value):
- # (foo)
- # (bar opt1 opt2 ...)
+ # (annotation)
+ # (annotation opt1 opt2 ...)
+ # (annotation opt1=value1 opt2=value2 ...)
opened = -1
options = DocOptions()
options.position = tag.position
for i, c in enumerate(value):
if c == '(' and opened == -1:
- opened = i+1
+ opened = i + 1
if c == ')' and opened != -1:
segment = value[opened:i]
parts = segment.split(' ', 1)
diff --git a/giscanner/annotationpatterns.py b/giscanner/annotationpatterns.py
deleted file mode 100644
index a4030051..00000000
--- a/giscanner/annotationpatterns.py
+++ /dev/null
@@ -1,808 +0,0 @@
-# -*- Mode: Python -*-
-# GObject-Introspection - a framework for introspecting GObject libraries
-# Copyright (C) 2012 Dieter Verfaillie <dieterv@optionexplicit.be>
-#
-# 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 the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-
-
-'''
-This module provides regular expression programs that can be used to identify
-and extract useful information from different parts of GTK-Doc comment blocks.
-These programs are built to:
- - match (or substitute) a single comment block line at a time;
- - support MULTILINE mode and should support (but remains untested)
- LOCALE and UNICODE modes.
-'''
-
-
-import re
-
-
-# Program matching the start of a comment block.
-#
-# Results in 0 symbolic groups.
-COMMENT_START_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- / # 1 forward slash character
- \*{2} # exactly 2 asterisk characters
- [^\S\n\r]* # 0 or more whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching the end of a comment block.
-#
-# Results in 0 symbolic groups.
-COMMENT_END_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- \*+ # 1 or more asterisk characters
- / # 1 forward slash character
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching the "*" at the beginning of every
-# line inside a comment block.
-#
-# Results in 0 symbolic groups.
-COMMENT_ASTERISK_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- \* # 1 asterisk character
- [^\S\n\r]? # 0 or 1 whitespace characters
- # Carefull: removing more would
- # break embedded example program
- # indentation
- ''',
- re.VERBOSE)
-
-# Program matching an empty line.
-#
-# Results in 0 symbolic groups.
-EMPTY_LINE_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or 1 whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching SECTION identifiers.
-#
-# Results in 2 symbolic groups:
-# - group 1 = colon
-# - group 2 = section_name
-SECTION_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- SECTION # SECTION
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<colon>:?) # colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<section_name>\w\S+)? # section name
- [^\S\n\r]* # 0 or more whitespace characters
- $
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching symbol (function, constant, struct and enum) identifiers.
-#
-# Results in 3 symbolic groups:
-# - group 1 = symbol_name
-# - group 2 = colon
-# - group 3 = annotations
-SYMBOL_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<symbol_name>[\w-]*\w) # symbol name
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<colon>:?) # colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
- [^\S\n\r]* # 0 or more whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching property identifiers.
-#
-# Results in 4 symbolic groups:
-# - group 1 = class_name
-# - group 2 = property_name
-# - group 3 = colon
-# - group 4 = annotations
-PROPERTY_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<class_name>[\w]+) # class name
- [^\S\n\r]* # 0 or more whitespace characters
- :{1} # required colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<property_name>[\w-]*\w) # property name
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<colon>:?) # colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
- [^\S\n\r]* # 0 or more whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching signal identifiers.
-#
-# Results in 4 symbolic groups:
-# - group 1 = class_name
-# - group 2 = signal_name
-# - group 3 = colon
-# - group 4 = annotations
-SIGNAL_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<class_name>[\w]+) # class name
- [^\S\n\r]* # 0 or more whitespace characters
- :{2} # 2 required colons
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<signal_name>[\w-]*\w) # signal name
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<colon>:?) # colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
- [^\S\n\r]* # 0 or more whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching parameters.
-#
-# Results in 4 symbolic groups:
-# - group 1 = parameter_name
-# - group 2 = annotations
-# - group 3 = colon
-# - group 4 = description
-PARAMETER_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- @ # @ character
- (?P<parameter_name>[\w-]*\w|\.\.\.) # parameter name
- [^\S\n\r]* # 0 or more whitespace characters
- :{1} # required colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
- (?P<colon>:?) # colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<description>.*?) # description
- [^\S\n\r]* # 0 or more whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching old style "Description:" tag.
-#
-# Results in 0 symbolic groups.
-DESCRIPTION_TAG_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- Description: # 'Description:' literal
- ''',
- re.VERBOSE | re.MULTILINE)
-
-# Program matching tags.
-#
-# Results in 4 symbolic groups:
-# - group 1 = tag_name
-# - group 2 = annotations
-# - group 3 = colon
-# - group 4 = description
-TAG_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<tag_name>virtual|since|stability|
- deprecated|returns|
- return\ value|attributes|
- rename\ to|type|
- unref\ func|ref\ func|
- set\ value\ func|
- get\ value\ func|
- transfer|value) # tag name
- [^\S\n\r]* # 0 or more whitespace characters
- :{1} # required colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
- (?P<colon>:?) # colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<description>.*?) # description
- [^\S\n\r]* # 0 or more whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE | re.IGNORECASE)
-
-# Program matching multiline annotation continuations.
-# This is used on multiline parameters and tags (but not on the first line) to
-# generate warnings about invalid annotations spanning multiple lines.
-#
-# Results in 3 symbolic groups:
-# - group 2 = annotations
-# - group 3 = colon
-# - group 4 = description
-MULTILINE_ANNOTATION_CONTINUATION_RE = re.compile(r'''
- ^ # start
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<annotations>(?:\(.*?\)[^\S\n\r]*)*) # annotations
- (?P<colon>:) # colon
- [^\S\n\r]* # 0 or more whitespace characters
- (?P<description>.*?) # description
- [^\S\n\r]* # 0 or more whitespace characters
- $ # end
- ''',
- re.VERBOSE | re.MULTILINE)
-
-
-if __name__ == '__main__':
- import unittest
-
- identifier_section_tests = [
- (SECTION_RE, 'TSIEOCN',
- None),
- (SECTION_RE, 'section',
- None),
- (SECTION_RE, 'section:',
- None),
- (SECTION_RE, 'section:test',
- None),
- (SECTION_RE, 'SECTION',
- {'colon': '',
- 'section_name': None}),
- (SECTION_RE, 'SECTION \t ',
- {'colon': '',
- 'section_name': None}),
- (SECTION_RE, ' \t SECTION \t ',
- {'colon': '',
- 'section_name': None}),
- (SECTION_RE, 'SECTION: \t ',
- {'colon': ':',
- 'section_name': None}),
- (SECTION_RE, 'SECTION : ',
- {'colon': ':',
- 'section_name': None}),
- (SECTION_RE, ' SECTION : ',
- {'colon': ':',
- 'section_name': None}),
- (SECTION_RE, 'SECTION:gtkwidget',
- {'colon': ':',
- 'section_name': 'gtkwidget'}),
- (SECTION_RE, 'SECTION:gtkwidget ',
- {'colon': ':',
- 'section_name': 'gtkwidget'}),
- (SECTION_RE, ' SECTION:gtkwidget',
- {'colon': ':',
- 'section_name': 'gtkwidget'}),
- (SECTION_RE, ' SECTION:gtkwidget\t ',
- {'colon': ':',
- 'section_name': 'gtkwidget'}),
- (SECTION_RE, 'SECTION: gtkwidget ',
- {'colon': ':',
- 'section_name': 'gtkwidget'}),
- (SECTION_RE, 'SECTION : gtkwidget',
- {'colon': ':',
- 'section_name': 'gtkwidget'}),
- (SECTION_RE, 'SECTION gtkwidget \f ',
- {'colon': '',
- 'section_name': 'gtkwidget'})]
-
- identifier_symbol_tests = [
- (SYMBOL_RE, 'GBaseFinalizeFunc:',
- {'colon': ':',
- 'symbol_name': 'GBaseFinalizeFunc',
- 'annotations': ''}),
- (SYMBOL_RE, 'gtk_widget_show ',
- {'colon': '',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, ' gtk_widget_show',
- {'colon': '',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, ' gtk_widget_show ',
- {'colon': '',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, 'gtk_widget_show:',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, 'gtk_widget_show :',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, 'gtk_widget_show: ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, 'gtk_widget_show : ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, ' gtk_widget_show:',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, ' gtk_widget_show :',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, ' gtk_widget_show: ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, ' gtk_widget_show : ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': ''}),
- (SYMBOL_RE, 'gtk_widget_show (skip)',
- {'colon': '',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, 'gtk_widget_show: (skip)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, 'gtk_widget_show : (skip)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, 'gtk_widget_show: (skip)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, 'gtk_widget_show : (skip)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, ' gtk_widget_show:(skip)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, ' gtk_widget_show :(skip)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, ' gtk_widget_show: (skip)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)'}),
- (SYMBOL_RE, ' gtk_widget_show : (skip) \t ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) \t '}),
- (SYMBOL_RE, ' gtk_widget_show : (skip) \t ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) \t '}),
- (SYMBOL_RE, 'gtk_widget_show:(skip)(test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)(test1)'}),
- (SYMBOL_RE, 'gtk_widget_show (skip)(test1)',
- {'colon': '',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip)(test1)'}),
- (SYMBOL_RE, 'gtk_widget_show: (skip) (test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1)'}),
- (SYMBOL_RE, 'gtk_widget_show : (skip) (test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1)'}),
- (SYMBOL_RE, 'gtk_widget_show: (skip) (test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1)'}),
- (SYMBOL_RE, 'gtk_widget_show : (skip) (test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1)'}),
- (SYMBOL_RE, ' gtk_widget_show:(skip) (test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1)'}),
- (SYMBOL_RE, ' gtk_widget_show :(skip) (test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1)'}),
- (SYMBOL_RE, ' gtk_widget_show: (skip) (test1)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1)'}),
- (SYMBOL_RE, ' gtk_widget_show : (skip) (test1) ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) '}),
- (SYMBOL_RE, 'gtk_widget_show: (skip) (test1) (test-2)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2)'}),
- (SYMBOL_RE, 'gtk_widget_show : (skip) (test1) (test-2)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2)'}),
- (SYMBOL_RE, 'gtk_widget_show: (skip) (test1) (test-2)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2)'}),
- (SYMBOL_RE, 'gtk_widget_show : (skip) (test1) (test-2)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2)'}),
- (SYMBOL_RE, ' gtk_widget_show:(skip) (test1) (test-2)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2)'}),
- (SYMBOL_RE, ' gtk_widget_show :(skip) (test1) (test-2)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2)'}),
- (SYMBOL_RE, ' gtk_widget_show: (skip) (test1) (test-2)',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2)'}),
- (SYMBOL_RE, ' gtk_widget_show : (skip) (test1) (test-2) ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2) '}),
- (SYMBOL_RE, ' gtk_widget_show : (skip) (test1) (test-2) ',
- {'colon': ':',
- 'symbol_name': 'gtk_widget_show',
- 'annotations': '(skip) (test1) (test-2) '}),
- # constants
- (SYMBOL_RE, 'MY_CONSTANT:',
- {'colon': ':',
- 'symbol_name': 'MY_CONSTANT',
- 'annotations': ''}),
- # structs
- (SYMBOL_RE, 'FooWidget:',
- {'colon': ':',
- 'symbol_name': 'FooWidget',
- 'annotations': ''}),
- # enums
- (SYMBOL_RE, 'Something:',
- {'colon': ':',
- 'symbol_name': 'Something',
- 'annotations': ''})]
-
- identifier_property_tests = [
- # simple property name
- (PROPERTY_RE, 'GtkWidget:name (skip)',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': '',
- 'annotations': '(skip)'}),
- (PROPERTY_RE, 'GtkWidget:name',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, ' GtkWidget :name',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, 'GtkWidget: name ',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, ' GtkWidget : name ',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, 'GtkWidget:name:',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'GtkWidget:name: ',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, ' GtkWidget:name:',
- {'class_name': 'GtkWidget',
- 'property_name': 'name',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'Something:name:',
- {'class_name': 'Something',
- 'property_name': 'name',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'Something:name: ',
- {'class_name': 'Something',
- 'property_name': 'name',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, ' Something:name:',
- {'class_name': 'Something',
- 'property_name': 'name',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'Weird-thing:name:',
- None),
- (PROPERTY_RE, 'really-weird_thing:name:',
- None),
- (PROPERTY_RE, 'GWin32InputStream:handle:',
- {'class_name': 'GWin32InputStream',
- 'property_name': 'handle',
- 'colon': ':',
- 'annotations': ''}),
- # property name that contains a dash
- (PROPERTY_RE, 'GtkWidget:double-buffered (skip)',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': '',
- 'annotations': '(skip)'}),
- (PROPERTY_RE, 'GtkWidget:double-buffered',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, ' GtkWidget :double-buffered',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, 'GtkWidget: double-buffered ',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, ' GtkWidget : double-buffered ',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': '',
- 'annotations': ''}),
- (PROPERTY_RE, 'GtkWidget:double-buffered:',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'GtkWidget:double-buffered: ',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, ' GtkWidget:double-buffered:',
- {'class_name': 'GtkWidget',
- 'property_name': 'double-buffered',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'Something:double-buffered:',
- {'class_name': 'Something',
- 'property_name': 'double-buffered',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'Something:double-buffered: ',
- {'class_name': 'Something',
- 'property_name': 'double-buffered',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, ' Something:double-buffered:',
- {'class_name': 'Something',
- 'property_name': 'double-buffered',
- 'colon': ':',
- 'annotations': ''}),
- (PROPERTY_RE, 'Weird-thing:double-buffered:',
- None),
- (PROPERTY_RE, 'really-weird_thing:double-buffered:',
- None),
- (PROPERTY_RE, ' GMemoryOutputStream:realloc-function: (skip)',
- {'class_name': 'GMemoryOutputStream',
- 'property_name': 'realloc-function',
- 'colon': ':',
- 'annotations': '(skip)'})]
-
- identifier_signal_tests = [
- # simple property name
- (SIGNAL_RE, 'GtkWidget::changed: (skip)',
- {'class_name': 'GtkWidget',
- 'signal_name': 'changed',
- 'colon': ':',
- 'annotations': '(skip)'}),
- (SIGNAL_RE, 'GtkWidget::changed:',
- {'class_name': 'GtkWidget',
- 'signal_name': 'changed',
- 'colon': ':',
- 'annotations': ''}),
- (SIGNAL_RE, 'Something::changed:',
- {'class_name': 'Something',
- 'signal_name': 'changed',
- 'colon': ':',
- 'annotations': ''}),
- (SIGNAL_RE, 'Weird-thing::changed:',
- None),
- (SIGNAL_RE, 'really-weird_thing::changed:',
- None),
- # property name that contains a dash
- (SIGNAL_RE, 'GtkWidget::hierarchy-changed: (skip)',
- {'class_name': 'GtkWidget',
- 'signal_name': 'hierarchy-changed',
- 'colon': ':',
- 'annotations': '(skip)'}),
- (SIGNAL_RE, 'GtkWidget::hierarchy-changed:',
- {'class_name': 'GtkWidget',
- 'signal_name': 'hierarchy-changed',
- 'colon': ':',
- 'annotations': ''}),
- (SIGNAL_RE, 'Something::hierarchy-changed:',
- {'class_name': 'Something',
- 'signal_name': 'hierarchy-changed',
- 'colon': ':',
- 'annotations': ''}),
- (SIGNAL_RE, 'Weird-thing::hierarchy-changed:',
- None),
- (SIGNAL_RE, 'really-weird_thing::hierarchy-changed:',
- None)]
-
- parameter_tests = [
- (PARAMETER_RE, '@Short_description: Base class for all widgets ',
- {'parameter_name': 'Short_description',
- 'annotations': '',
- 'colon': '',
- 'description': 'Base class for all widgets'}),
- (PARAMETER_RE, '@...: the value of the first property, followed optionally by more',
- {'parameter_name': '...',
- 'annotations': '',
- 'colon': '',
- 'description': 'the value of the first property, followed optionally by more'}),
- (PARAMETER_RE, '@widget: a #GtkWidget',
- {'parameter_name': 'widget',
- 'annotations': '',
- 'colon': '',
- 'description': 'a #GtkWidget'}),
- (PARAMETER_RE, '@widget_pointer: (inout) (transfer none): '
- 'address of a variable that contains @widget',
- {'parameter_name': 'widget_pointer',
- 'annotations': '(inout) (transfer none)',
- 'colon': ':',
- 'description': 'address of a variable that contains @widget'}),
- (PARAMETER_RE, '@weird_thing: (inout) (transfer none) (allow-none) (attribute) (destroy) '
- '(foreign) (inout) (out) (transfer) (skip) (method): some weird @thing',
- {'parameter_name': 'weird_thing',
- 'annotations': '(inout) (transfer none) (allow-none) (attribute) (destroy) '
- '(foreign) (inout) (out) (transfer) (skip) (method)',
- 'colon': ':',
- 'description': 'some weird @thing'}),
- (PARAMETER_RE, '@data: a pointer to the element data. The data may be moved as elements '
- 'are added to the #GByteArray.',
- {'parameter_name': 'data',
- 'annotations': '',
- 'colon': '',
- 'description': 'a pointer to the element data. The data may be moved as elements '
- 'are added to the #GByteArray.'}),
- (PARAMETER_RE, '@a: a #GSequenceIter',
- {'parameter_name': 'a',
- 'annotations': '',
- 'colon': '',
- 'description': 'a #GSequenceIter'}),
- (PARAMETER_RE, '@keys: (array length=n_keys) (element-type GQuark) (allow-none):',
- {'parameter_name': 'keys',
- 'annotations': '(array length=n_keys) (element-type GQuark) (allow-none)',
- 'colon': ':',
- 'description': ''})]
-
- tag_tests = [
- (TAG_RE, 'Since 3.0',
- None),
- (TAG_RE, 'Since: 3.0',
- {'tag_name': 'Since',
- 'annotations': '',
- 'colon': '',
- 'description': '3.0'}),
- (TAG_RE, 'Attributes: (inout) (transfer none): some note about attributes',
- {'tag_name': 'Attributes',
- 'annotations': '(inout) (transfer none)',
- 'colon': ':',
- 'description': 'some note about attributes'}),
- (TAG_RE, 'Rename to: something_else',
- {'tag_name': 'Rename to',
- 'annotations': '',
- 'colon': '',
- 'description': 'something_else'}),
- (TAG_RE, '@Deprecated: Since 2.8, reference counting is done atomically',
- None),
- (TAG_RE, 'Returns %TRUE and does weird things',
- None),
- (TAG_RE, 'Returns: a #GtkWidget',
- {'tag_name': 'Returns',
- 'annotations': '',
- 'colon': '',
- 'description': 'a #GtkWidget'}),
- (TAG_RE, 'Return value: (transfer none): The binary data that @text responds. '
- 'This pointer',
- {'tag_name': 'Return value',
- 'annotations': '(transfer none)',
- 'colon': ':',
- 'description': 'The binary data that @text responds. This pointer'}),
- (TAG_RE, 'Return value: (transfer full) (array length=out_len) (element-type guint8):',
- {'tag_name': 'Return value',
- 'annotations': '(transfer full) (array length=out_len) (element-type guint8)',
- 'colon': ':',
- 'description': ''}),
- (TAG_RE, 'Returns: A boolean value, but let me tell you a bit about this boolean. It',
- {'tag_name': 'Returns',
- 'annotations': '',
- 'colon': '',
- 'description': 'A boolean value, but let me tell you a bit about this boolean. '
- 'It'}),
- (TAG_RE, 'Returns: (transfer container) (element-type GObject.ParamSpec): a',
- {'tag_name': 'Returns',
- 'annotations': '(transfer container) (element-type GObject.ParamSpec)',
- 'colon': ':',
- 'description': 'a'}),
- (TAG_RE, 'Return value: (type GLib.HashTable<utf8,GLib.HashTable<utf8,utf8>>) '
- '(transfer full):',
- {'tag_name': 'Return value',
- 'annotations': '(type GLib.HashTable<utf8,GLib.HashTable<utf8,utf8>>) '
- '(transfer full)',
- 'colon': ':',
- 'description': ''})]
-
-
- def create_tests(cls, test_name, testcases):
- for (index, testcase) in enumerate(testcases):
- real_test_name = '%s_%03d' % (test_name, index)
-
- test_method = cls.__create_test__(testcase)
- test_method.__name__ = real_test_name
- setattr(cls, real_test_name, test_method)
-
-
- class TestProgram(unittest.TestCase):
- @classmethod
- def __create_test__(cls, testcase):
- def do_test(self):
- (program, text, expected) = testcase
-
- match = program.search(text)
-
- if expected is None:
- msg = 'Program matched text but shouldn\'t:\n"%s"'
- self.assertTrue(match is None, msg % (text))
- else:
- msg = 'Program should match text but didn\'t:\n"%s"'
- self.assertTrue(match is not None, msg % (text))
-
- for key, value in expected.items():
- msg = 'expected "%s" for "%s" but match returned "%s"'
- msg = msg % (value, key, match.group(key))
- self.assertEqual(match.group(key), value, msg)
-
- return do_test
-
-
- # Create tests from data
- create_tests(TestProgram, 'test_identifier_section', identifier_section_tests)
- create_tests(TestProgram, 'test_identifier_symbol', identifier_symbol_tests)
- create_tests(TestProgram, 'test_identifier_property', identifier_property_tests)
- create_tests(TestProgram, 'test_identifier_signal', identifier_signal_tests)
- create_tests(TestProgram, 'test_parameter', parameter_tests)
- create_tests(TestProgram, 'test_tag', tag_tests)
-
- # Run test suite
- unittest.main()
diff --git a/giscanner/ast.py b/giscanner/ast.py
index 654c68e2..4c54b548 100644
--- a/giscanner/ast.py
+++ b/giscanner/ast.py
@@ -20,22 +20,25 @@
#
import copy
+from itertools import chain
from . import message
+from .collections import OrderedDict
from .message import Position
-from .odict import odict
from .utils import to_underscores
+
class Type(object):
- """A Type can be either:
-* A reference to a node (target_giname)
-* A reference to a "fundamental" type like 'utf8'
-* A "foreign" type - this can be any string."
-If none are specified, then it's in an "unresolved" state. An
-unresolved type can have two data sources; a "ctype" which comes
-from a C type string, or a gtype_name (from g_type_name()).
-""" # '''
+ """
+ A Type can be either:
+ * A reference to a node (target_giname)
+ * A reference to a "fundamental" type like 'utf8'
+ * A "foreign" type - this can be any string."
+ If none are specified, then it's in an "unresolved" state. An
+ unresolved type can have two data sources; a "ctype" which comes
+ from a C type string, or a gtype_name (from g_type_name()).
+ """
def __init__(self,
ctype=None,
@@ -83,6 +86,8 @@ from a C type string, or a gtype_name (from g_type_name()).
return self.ctype
elif self.gtype_name:
return self.gtype_name
+ elif self.target_giname:
+ return self.target_giname
else:
assert False
@@ -94,7 +99,8 @@ in contrast to the other create_type() functions."""
# First, is it a fundamental?
fundamental = type_names.get(gtype_name)
if fundamental is not None:
- return cls(target_fundamental=fundamental.target_fundamental)
+ return cls(target_fundamental=fundamental.target_fundamental,
+ ctype=fundamental.ctype)
if gtype_name == 'GHashTable':
return Map(TYPE_ANY, TYPE_ANY, gtype_name=gtype_name)
elif gtype_name in ('GArray', 'GPtrArray', 'GByteArray'):
@@ -121,11 +127,12 @@ in contrast to the other create_type() functions."""
def __cmp__(self, other):
if self.target_fundamental:
return cmp(self.target_fundamental, other.target_fundamental)
- if self.target_giname:
+ elif self.target_giname:
return cmp(self.target_giname, other.target_giname)
- if self.target_foreign:
+ elif self.target_foreign:
return cmp(self.target_foreign, other.target_foreign)
- return cmp(self.ctype, other.ctype)
+ else:
+ return cmp(self.ctype, other.ctype)
def is_equiv(self, typeval):
"""Return True if the specified types are compatible at
@@ -166,6 +173,7 @@ in contrast to the other create_type() functions."""
data = ''
return '%s(%sctype=%s)' % (self.__class__.__name__, data, self.ctype)
+
class TypeUnknown(Type):
def __init__(self):
Type.__init__(self, _target_unknown=True)
@@ -347,9 +355,7 @@ SIGNAL_MUST_COLLECT = 'must-collect'
class Namespace(object):
- def __init__(self, name, version,
- identifier_prefixes=None,
- symbol_prefixes=None):
+ def __init__(self, name, version, identifier_prefixes=None, symbol_prefixes=None):
self.name = name
self.version = version
if identifier_prefixes is not None:
@@ -363,11 +369,15 @@ class Namespace(object):
self.symbol_prefixes = [to_underscores(p).lower() for p in ps]
# cache upper-cased versions
self._ucase_symbol_prefixes = [p.upper() for p in self.symbol_prefixes]
- self.names = odict() # Maps from GIName -> node
- self.aliases = {} # Maps from GIName -> GIName
- self.type_names = {} # Maps from GTName -> node
- self.ctypes = {} # Maps from CType -> node
- self.symbols = {} # Maps from function symbols -> Function
+ self.names = OrderedDict() # Maps from GIName -> node
+ self.aliases = {} # Maps from GIName -> GIName
+ self.type_names = {} # Maps from GTName -> node
+ self.ctypes = {} # Maps from CType -> node
+ self.symbols = {} # Maps from function symbols -> Function
+ self.includes = set() # Include
+ self.shared_libraries = [] # str
+ self.c_includes = [] # str
+ self.exported_packages = [] # str
def type_from_name(self, name, ctype=None):
"""Backwards compatibility method for older .gir files, which
@@ -399,6 +409,24 @@ but adds it to things like ctypes, symbols, and type_names.
self.type_names[node.gtype_name] = node
elif isinstance(node, Function):
self.symbols[node.symbol] = node
+ if isinstance(node, (Compound, Class, Interface)):
+ for fn in chain(node.methods, node.static_methods, node.constructors):
+ if not isinstance(fn, Function):
+ continue
+ fn.namespace = self
+ self.symbols[fn.symbol] = fn
+ if isinstance(node, (Class, Interface)):
+ for m in chain(node.signals, node.properties):
+ m.namespace = self
+ if isinstance(node, (Enum, Bitfield)):
+ for fn in node.static_methods:
+ if not isinstance(fn, Function):
+ continue
+ fn.namespace = self
+ self.symbols[fn.symbol] = fn
+ for member in node.members:
+ member.namespace = self
+ self.symbols[member.symbol] = member
if hasattr(node, 'ctype'):
self.ctypes[node.ctype] = node
@@ -456,6 +484,7 @@ functions via get_by_symbol()."""
for node in self.itervalues():
node.walk(callback, [])
+
class Include(object):
def __init__(self, name, version):
@@ -478,6 +507,7 @@ class Include(object):
def __str__(self):
return '%s-%s' % (self.name, self.version)
+
class Annotated(object):
"""An object which has a few generic metadata
properties."""
@@ -485,12 +515,13 @@ properties."""
self.version = None
self.skip = False
self.introspectable = True
- self.attributes = [] # (key, value)*
+ self.attributes = [] # (key, value)*
self.stability = None
self.deprecated = None
self.deprecated_version = None
self.doc = None
+
class Node(Annotated):
"""A node is a type of object which is uniquely identified by its
(namespace, name) pair. When combined with a ., this is called a
@@ -501,10 +532,21 @@ GIName. It's possible for nodes to contain or point to other nodes."""
def __init__(self, name=None):
Annotated.__init__(self)
- self.namespace = None # Should be set later by Namespace.append()
+ self.namespace = None # Should be set later by Namespace.append()
self.name = name
self.foreign = False
self.file_positions = set()
+ self._parent = None
+
+ def _get_parent(self):
+ if self._parent is not None:
+ return self._parent
+ else:
+ return self.namespace
+
+ def _set_parent(self, value):
+ self._parent = value
+ parent = property(_get_parent, _set_parent)
def create_type(self):
"""Create a Type object referencing this node."""
@@ -559,8 +601,16 @@ class Callable(Node):
self.retval = retval
self.parameters = parameters
self.throws = not not throws
- self.instance_parameter = None # Parameter
- self.parent = None # A Class or Interface
+ self.instance_parameter = None # Parameter
+ self.parent = None # A Class or Interface
+
+ # Returns all parameters, including the instance parameter
+ @property
+ def all_parameters(self):
+ if self.instance_parameter is not None:
+ return [self.instance_parameter] + self.parameters
+ else:
+ return self.parameters
def get_parameter_index(self, name):
for i, parameter in enumerate(self.parameters):
@@ -569,7 +619,7 @@ class Callable(Node):
raise ValueError("Unknown argument %s" % (name, ))
def get_parameter(self, name):
- for parameter in self.parameters:
+ for parameter in self.all_parameters:
if parameter.argname == name:
return parameter
raise ValueError("Unknown argument %s" % (name, ))
@@ -582,9 +632,10 @@ class Function(Callable):
self.symbol = symbol
self.is_method = False
self.is_constructor = False
- self.shadowed_by = None # C symbol string
- self.shadows = None # C symbol string
- self.moved_to = None # namespaced function name string
+ self.shadowed_by = None # C symbol string
+ self.shadows = None # C symbol string
+ self.moved_to = None # namespaced function name string
+ self.internal_skipped = False # if True, this func will not be written to GIR
def clone(self):
clone = copy.copy(self)
@@ -595,9 +646,8 @@ class Function(Callable):
def is_type_meta_function(self):
# Named correctly
- if not (self.name.endswith('_get_type') or
- self.name.endswith('_get_gtype')):
- return False
+ if not (self.name.endswith('_get_type') or self.name.endswith('_get_gtype')):
+ return False
# Doesn't have any parameters
if self.parameters:
@@ -605,14 +655,13 @@ class Function(Callable):
# Returns GType
rettype = self.retval.type
- if (not rettype.is_equiv(TYPE_GTYPE) and
- rettype.target_giname != 'Gtk.Type'):
- message.warn("function '%s' returns '%r', not a GType" %
- (self.name, rettype))
+ if (not rettype.is_equiv(TYPE_GTYPE) and rettype.target_giname != 'Gtk.Type'):
+ message.warn("function '%s' returns '%r', not a GType" % (self.name, rettype))
return False
return True
+
class ErrorQuarkFunction(Function):
def __init__(self, name, retval, parameters, throws, symbol, error_domain):
@@ -633,7 +682,6 @@ class VFunction(Callable):
return obj
-
class Varargs(Type):
def __init__(self):
@@ -669,6 +717,7 @@ class Array(Type):
arr.size = self.size
return arr
+
class List(Type):
def __init__(self, name, element_type, **kwargs):
@@ -681,6 +730,7 @@ class List(Type):
def clone(self):
return List(self.name, self.element_type)
+
class Map(Type):
def __init__(self, key_type, value_type, **kwargs):
@@ -693,6 +743,7 @@ class Map(Type):
def clone(self):
return Map(self.key_type, self.value_type)
+
class Alias(Node):
def __init__(self, name, target, ctype=None):
@@ -751,6 +802,8 @@ class Enum(Node, Registered):
self.c_symbol_prefix = c_symbol_prefix
self.ctype = ctype
self.members = members
+ for member in members:
+ member.parent = self
# Associated error domain name
self.error_domain = None
self.static_methods = []
@@ -772,6 +825,8 @@ class Bitfield(Node, Registered):
self.ctype = ctype
self.c_symbol_prefix = c_symbol_prefix
self.members = members
+ for member in members:
+ member.parent = self
self.static_methods = []
def _walk(self, callback, chain):
@@ -787,10 +842,13 @@ class Member(Annotated):
self.value = value
self.symbol = symbol
self.nick = nick
+ self.parent = None
def __cmp__(self, other):
return cmp(self.name, other.name)
+ def __repr__(self):
+ return '%s(%r)' % (self.__class__.__name__, self.name)
class Compound(Node, Registered):
@@ -828,6 +886,7 @@ class Compound(Node, Registered):
if field.anonymous_node is not None:
field.anonymous_node.walk(callback, chain)
+
class Field(Annotated):
def __init__(self, name, typenode, readable, writable, bits=None,
@@ -841,10 +900,14 @@ class Field(Annotated):
self.bits = bits
self.anonymous_node = anonymous_node
self.private = False
+ self.parent = None # a compound
def __cmp__(self, other):
return cmp(self.name, other.name)
+ def __repr__(self):
+ return '%s(%r)' % (self.__class__.__name__, self.name)
+
class Record(Compound):
@@ -922,7 +985,7 @@ class Signal(Callable):
class Class(Node, Registered):
- def __init__(self, name, parent,
+ def __init__(self, name, parent_type,
ctype=None,
gtype_name=None,
get_type=None,
@@ -932,7 +995,7 @@ class Class(Node, Registered):
Registered.__init__(self, gtype_name, get_type)
self.ctype = ctype
self.c_symbol_prefix = c_symbol_prefix
- self.parent = parent
+ self.parent_type = parent_type
self.fundamental = False
self.unref_func = None
self.ref_func = None
@@ -967,11 +1030,13 @@ class Class(Node, Registered):
field.anonymous_node.walk(callback, chain)
for sig in self.signals:
sig.walk(callback, chain)
+ for prop in self.properties:
+ prop.walk(callback, chain)
class Interface(Node, Registered):
- def __init__(self, name, parent,
+ def __init__(self, name, parent_type,
ctype=None,
gtype_name=None,
get_type=None,
@@ -980,7 +1045,7 @@ class Interface(Node, Registered):
Registered.__init__(self, gtype_name, get_type)
self.ctype = ctype
self.c_symbol_prefix = c_symbol_prefix
- self.parent = parent
+ self.parent_type = parent_type
self.parent_chain = []
self.methods = []
self.signals = []
@@ -990,6 +1055,9 @@ class Interface(Node, Registered):
self.properties = []
self.fields = []
self.prerequisites = []
+ # Not used yet, exists just to avoid an exception in
+ # Namespace.append()
+ self.constructors = []
def _walk(self, callback, chain):
for meth in self.methods:
@@ -1028,7 +1096,7 @@ class Property(Node):
self.transfer = PARAM_TRANSFER_NONE
else:
self.transfer = transfer
- self.parent = None # A Class or Interface
+ self.parent = None # A Class or Interface
class Callback(Callable):
diff --git a/giscanner/cachestore.py b/giscanner/cachestore.py
index 44e3b04c..ad4c7a36 100644
--- a/giscanner/cachestore.py
+++ b/giscanner/cachestore.py
@@ -31,6 +31,7 @@ import giscanner
_CACHE_VERSION_FILENAME = '.cache-version'
+
def _get_versionhash():
toplevel = os.path.dirname(giscanner.__file__)
# Use pyc instead of py to avoid extra IO
@@ -40,6 +41,7 @@ def _get_versionhash():
mtimes = (str(os.stat(source).st_mtime) for source in sources)
return hashlib.sha1(''.join(mtimes)).hexdigest()
+
def _get_cachedir():
if 'GI_SCANNER_DISABLE_CACHE' in os.environ:
return None
@@ -73,7 +75,7 @@ class CacheStore(object):
def __init__(self):
try:
self._directory = _get_cachedir()
- except OSError, e:
+ except OSError as e:
if e.errno != errno.EPERM:
raise
self._directory = None
@@ -88,7 +90,7 @@ class CacheStore(object):
version = os.path.join(self._directory, _CACHE_VERSION_FILENAME)
try:
cache_hash = open(version).read()
- except IOError, e:
+ except IOError as e:
# File does not exist
if e.errno == errno.ENOENT:
cache_hash = 0
@@ -101,7 +103,7 @@ class CacheStore(object):
self._clean()
try:
fp = open(version, 'w')
- except IOError, e:
+ except IOError as e:
# Permission denied
if e.errno == errno.EACCES:
return
@@ -126,13 +128,13 @@ class CacheStore(object):
def _remove_filename(self, filename):
try:
os.unlink(filename)
- except IOError, e:
+ except IOError as e:
# Permission denied
if e.errno == errno.EACCES:
return
else:
raise
- except OSError, e:
+ except OSError as e:
# File does not exist
if e.errno == errno.ENOENT:
return
@@ -150,14 +152,13 @@ class CacheStore(object):
if store_filename is None:
return
- if (os.path.exists(store_filename) and
- self._cache_is_valid(store_filename, filename)):
+ if (os.path.exists(store_filename) and self._cache_is_valid(store_filename, filename)):
return None
tmp_fd, tmp_filename = tempfile.mkstemp(prefix='g-ir-scanner-cache-')
try:
cPickle.dump(data, os.fdopen(tmp_fd, 'w'))
- except IOError, e:
+ except IOError as e:
# No space left on device
if e.errno == errno.ENOSPC:
self._remove_filename(tmp_filename)
@@ -167,7 +168,7 @@ class CacheStore(object):
try:
shutil.move(tmp_filename, store_filename)
- except IOError, e:
+ except IOError as e:
# Permission denied
if e.errno == errno.EACCES:
self._remove_filename(tmp_filename)
@@ -180,7 +181,7 @@ class CacheStore(object):
return
try:
fd = open(store_filename)
- except IOError, e:
+ except IOError as e:
if e.errno == errno.ENOENT:
return None
else:
diff --git a/giscanner/codegen.py b/giscanner/codegen.py
index b73a7da3..e9ed9415 100644
--- a/giscanner/codegen.py
+++ b/giscanner/codegen.py
@@ -24,6 +24,7 @@ from contextlib import contextmanager
from . import ast
+
class CCodeGenerator(object):
def __init__(self, namespace, out_h_filename, out_c_filename):
self.out_h_filename = out_h_filename
@@ -36,15 +37,16 @@ class CCodeGenerator(object):
return '%s_%s' % (self.namespace.symbol_prefixes[0], name)
def _typecontainer_to_ctype(self, param):
- if (isinstance(param, ast.Parameter) and
- param.direction in (ast.PARAM_DIRECTION_OUT,
- ast.PARAM_DIRECTION_INOUT)):
+ if (isinstance(param, ast.Parameter)
+ and param.direction in (ast.PARAM_DIRECTION_OUT, ast.PARAM_DIRECTION_INOUT)):
suffix = '*'
else:
suffix = ''
- if (param.type.is_equiv((ast.TYPE_STRING, ast.TYPE_FILENAME)) and
- param.transfer == ast.PARAM_TRANSFER_NONE):
+
+ if (param.type.is_equiv((ast.TYPE_STRING, ast.TYPE_FILENAME))
+ and param.transfer == ast.PARAM_TRANSFER_NONE):
return "const gchar*" + suffix
+
return param.type.ctype + suffix
def _write_prelude(self, out, func):
diff --git a/giscanner/collections/__init__.py b/giscanner/collections/__init__.py
new file mode 100644
index 00000000..29987a10
--- /dev/null
+++ b/giscanner/collections/__init__.py
@@ -0,0 +1,22 @@
+# -*- Mode: Python -*-
+# GObject-Introspection - a framework for introspecting GObject libraries
+# Copyright (C) 2013 Dieter Verfaillie <dieterv@optionexplicit.be>
+#
+# 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 the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+
+
+from .ordereddict import OrderedDict
diff --git a/giscanner/collections/ordereddict.py b/giscanner/collections/ordereddict.py
new file mode 100644
index 00000000..0cb4b956
--- /dev/null
+++ b/giscanner/collections/ordereddict.py
@@ -0,0 +1,120 @@
+# -*- Mode: Python -*-
+# GObject-Introspection - a framework for introspecting GObject libraries
+# Copyright (C) 2008 Johan Dahlin
+# Copyright (C) 2013 Dieter Verfaillie <dieterv@optionexplicit.be>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+
+# Borrowed from:
+# http://hg.sqlalchemy.org/sqlalchemy/raw-file/77e2264283d4/lib/sqlalchemy/util/_collections.py
+# http://hg.sqlalchemy.org/sqlalchemy/raw-file/77e2264283d4/AUTHORS
+#
+# util/_collections.py
+# Copyright (C) 2005-2012 the SQLAlchemy authors and contributors <see AUTHORS file>
+#
+# This module is part of SQLAlchemy and is released under
+# the MIT License: http://www.opensource.org/licenses/mit-license.php
+
+
+class OrderedDict(dict):
+ """A dict that returns keys/values/items in the order they were added."""
+
+ def __init__(self, ____sequence=None, **kwargs):
+ self._list = []
+ if ____sequence is None:
+ if kwargs:
+ self.update(**kwargs)
+ else:
+ self.update(____sequence, **kwargs)
+
+ def clear(self):
+ self._list = []
+ dict.clear(self)
+
+ def copy(self):
+ return self.__copy__()
+
+ def __copy__(self):
+ return OrderedDict(self)
+
+ def sort(self, *arg, **kw):
+ self._list.sort(*arg, **kw)
+
+ def update(self, ____sequence=None, **kwargs):
+ if ____sequence is not None:
+ if hasattr(____sequence, 'keys'):
+ for key in ____sequence.keys():
+ self.__setitem__(key, ____sequence[key])
+ else:
+ for key, value in ____sequence:
+ self[key] = value
+ if kwargs:
+ self.update(kwargs)
+
+ def setdefault(self, key, value):
+ if key not in self:
+ self.__setitem__(key, value)
+ return value
+ else:
+ return self.__getitem__(key)
+
+ def __iter__(self):
+ return iter(self._list)
+
+ def values(self):
+ return [self[key] for key in self._list]
+
+ def itervalues(self):
+ return iter([self[key] for key in self._list])
+
+ def keys(self):
+ return list(self._list)
+
+ def iterkeys(self):
+ return iter(self.keys())
+
+ def items(self):
+ return [(key, self[key]) for key in self.keys()]
+
+ def iteritems(self):
+ return iter(self.items())
+
+ def __setitem__(self, key, obj):
+ if key not in self:
+ try:
+ self._list.append(key)
+ except AttributeError:
+ # work around Python pickle loads() with
+ # dict subclass (seems to ignore __setstate__?)
+ self._list = [key]
+ dict.__setitem__(self, key, obj)
+
+ def __delitem__(self, key):
+ dict.__delitem__(self, key)
+ self._list.remove(key)
+
+ def pop(self, key, *default):
+ present = key in self
+ value = dict.pop(self, key, *default)
+ if present:
+ self._list.remove(key)
+ return value
+
+ def popitem(self):
+ item = dict.popitem(self)
+ self._list.remove(item[0])
+ return item
diff --git a/giscanner/docmain.py b/giscanner/docmain.py
index 8089a6b3..e65b57a0 100644
--- a/giscanner/docmain.py
+++ b/giscanner/docmain.py
@@ -21,9 +21,11 @@
import os
import optparse
-from .mallardwriter import MallardWriter
+from .docwriter import DocWriter
+from .sectionparser import generate_sections_file, write_sections_file
from .transformer import Transformer
+
def doc_main(args):
parser = optparse.OptionParser('%prog [options] GIR-file')
@@ -32,14 +34,18 @@ def doc_main(args):
help="Directory to write output to")
parser.add_option("-l", "--language",
action="store", dest="language",
- default="Python",
+ default="c",
help="Output language")
+ parser.add_option("", "--add-include-path",
+ action="append", dest="include_paths", default=[],
+ help="include paths for other GIR files")
+ parser.add_option("", "--write-sections-file",
+ action="store_true", dest="write_sections",
+ help="Generate and write out a sections file")
options, args = parser.parse_args(args)
if not options.output:
raise SystemExit("missing output parameter")
- if not os.path.isdir(options.output):
- raise SystemExit("wrong output parameter: %s" % (options.output, ))
if len(args) < 2:
raise SystemExit("Need an input GIR filename")
@@ -50,9 +56,17 @@ def doc_main(args):
extra_include_dirs = [os.path.join(top_srcdir, 'gir'), top_builddir]
else:
extra_include_dirs = []
+ extra_include_dirs.extend(options.include_paths)
transformer = Transformer.parse_from_gir(args[1], extra_include_dirs)
- writer = MallardWriter(transformer, options.language)
- writer.write(options.output)
+ if options.write_sections:
+ sections_file = generate_sections_file(transformer)
+
+ fp = open(options.output, 'w')
+ write_sections_file(fp, sections_file)
+ fp.close()
+ else:
+ writer = DocWriter(transformer, options.language)
+ writer.write(options.output)
return 0
diff --git a/giscanner/doctemplates/C/class.tmpl b/giscanner/doctemplates/C/class.tmpl
new file mode 100644
index 00000000..3f18b021
--- /dev/null
+++ b/giscanner/doctemplates/C/class.tmpl
@@ -0,0 +1,2 @@
+<%! page_type="guide" %>\
+<%inherit file="/class.tmpl"/>
diff --git a/giscanner/doctemplates/C/constructor.tmpl b/giscanner/doctemplates/C/constructor.tmpl
new file mode 100644
index 00000000..a03d2825
--- /dev/null
+++ b/giscanner/doctemplates/C/constructor.tmpl
@@ -0,0 +1 @@
+<%inherit file="./function.tmpl"/>
diff --git a/giscanner/doctemplates/C/default.tmpl b/giscanner/doctemplates/C/default.tmpl
new file mode 100644
index 00000000..b66ae926
--- /dev/null
+++ b/giscanner/doctemplates/C/default.tmpl
@@ -0,0 +1 @@
+<%inherit file="/base.tmpl"/>
diff --git a/giscanner/doctemplates/C/enum.tmpl b/giscanner/doctemplates/C/enum.tmpl
new file mode 100644
index 00000000..1523e0df
--- /dev/null
+++ b/giscanner/doctemplates/C/enum.tmpl
@@ -0,0 +1,2 @@
+<%! page_type="guide" %>\
+<%inherit file="/base.tmpl"/>
diff --git a/giscanner/doctemplates/C/function.tmpl b/giscanner/doctemplates/C/function.tmpl
new file mode 100644
index 00000000..8d669438
--- /dev/null
+++ b/giscanner/doctemplates/C/function.tmpl
@@ -0,0 +1,61 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <api:function>
+ <api:returns>
+ <api:type>${formatter.format_type(node.retval.type) | x}</api:type>
+ </api:returns>
+ <api:name>${formatter.format_function_name(node)}</api:name>
+% for arg in formatter.get_parameters(node):
+% if arg.type.ctype == '<varargs>':
+ <api:varargs/>
+% else:
+ <api:arg>
+ <api:type>${formatter.format_type(arg.type) | x}</api:type>
+ <api:name>${formatter.format_parameter_name(node, arg)}</api:name>
+ </api:arg>
+% endif
+% endfor
+ </api:function>
+</%block>
+<%block name="synopsis">
+<synopsis><code mime="text/x-csrc">
+${node.retval.type.ctype} ${formatter.format_function_name(node)} (\
+% if not formatter.get_parameters(node):
+void\
+% else:
+% for ix, arg in enumerate(formatter.get_parameters(node)):
+% if ix != 0:
+${' ' * (len(formatter.format_type(node.retval.type)) + len(formatter.format_function_name(node)) + 3)}\
+% endif
+% if arg.type.ctype == '<varargs>':
+...\
+% else:
+${formatter.format_type(arg.type) | x} ${arg.argname}\
+% endif
+% if ix != len(formatter.get_parameters(node)) - 1:
+,
+% endif
+% endfor
+% endif
+);
+</code></synopsis>
+</%block>
+<%block name="details">
+% if formatter.get_parameters(node) or node.retval:
+<terms>
+% for arg in formatter.get_parameters(node):
+<item>
+<title><code>${arg.argname}</code></title>
+${formatter.format(node, arg.doc)}
+</item>
+% endfor
+% if node.retval:
+<item>
+<title><code>Returns</code></title>
+${formatter.format(node, node.retval.doc)}
+</item>
+% endif
+</terms>
+% endif
+</%block>
diff --git a/giscanner/doctemplates/C/method.tmpl b/giscanner/doctemplates/C/method.tmpl
new file mode 100644
index 00000000..a03d2825
--- /dev/null
+++ b/giscanner/doctemplates/C/method.tmpl
@@ -0,0 +1 @@
+<%inherit file="./function.tmpl"/>
diff --git a/giscanner/doctemplates/C/namespace.tmpl b/giscanner/doctemplates/C/namespace.tmpl
new file mode 100644
index 00000000..cb8195da
--- /dev/null
+++ b/giscanner/doctemplates/C/namespace.tmpl
@@ -0,0 +1 @@
+<%inherit file="/namespace.tmpl"/>
diff --git a/giscanner/doctemplates/C/property.tmpl b/giscanner/doctemplates/C/property.tmpl
new file mode 100644
index 00000000..6ec9e8e1
--- /dev/null
+++ b/giscanner/doctemplates/C/property.tmpl
@@ -0,0 +1,5 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <title type="link" role="topic">${node.name}</title>
+</%block>
diff --git a/giscanner/doctemplates/C/record.tmpl b/giscanner/doctemplates/C/record.tmpl
new file mode 100644
index 00000000..b66ae926
--- /dev/null
+++ b/giscanner/doctemplates/C/record.tmpl
@@ -0,0 +1 @@
+<%inherit file="/base.tmpl"/>
diff --git a/giscanner/doctemplates/C/signal.tmpl b/giscanner/doctemplates/C/signal.tmpl
new file mode 100644
index 00000000..28c0b740
--- /dev/null
+++ b/giscanner/doctemplates/C/signal.tmpl
@@ -0,0 +1,5 @@
+<%inherit file="./function.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <title type="link" role="topic">${node.name}</title>
+</%block>
diff --git a/giscanner/doctemplates/C/vfunc.tmpl b/giscanner/doctemplates/C/vfunc.tmpl
new file mode 100644
index 00000000..aa0394f4
--- /dev/null
+++ b/giscanner/doctemplates/C/vfunc.tmpl
@@ -0,0 +1,4 @@
+<%inherit file="./function.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+</%block>
diff --git a/giscanner/doctemplates/Gjs/class.tmpl b/giscanner/doctemplates/Gjs/class.tmpl
new file mode 100644
index 00000000..887c646b
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/class.tmpl
@@ -0,0 +1,18 @@
+<%inherit file="/class.tmpl"/>
+<%block name="synopsis">
+ <synopsis><code>
+const ${namespace.name} = imports.gi.${namespace.name};
+
+let ${formatter.to_underscores(node.name).lower()} = new ${namespace.name}.${node.name}(\
+% if len(node.properties) > 0:
+{
+% for ix, property_ in enumerate(node.properties):
+% if property_.construct or property_.construct_only or property_.writable:
+ <link xref='${namespace.name}.${node.name}-${property_.name}'>${property_.name.replace('-', '_')}</link>: value,
+% endif
+% endfor
+}\
+% endif
+);
+ </code></synopsis>
+</%block>
diff --git a/giscanner/doctemplates/Gjs/constructor.tmpl b/giscanner/doctemplates/Gjs/constructor.tmpl
new file mode 100644
index 00000000..a03d2825
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/constructor.tmpl
@@ -0,0 +1 @@
+<%inherit file="./function.tmpl"/>
diff --git a/giscanner/doctemplates/Gjs/default.tmpl b/giscanner/doctemplates/Gjs/default.tmpl
new file mode 100644
index 00000000..b66ae926
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/default.tmpl
@@ -0,0 +1 @@
+<%inherit file="/base.tmpl"/>
diff --git a/giscanner/doctemplates/Gjs/enum.tmpl b/giscanner/doctemplates/Gjs/enum.tmpl
new file mode 100644
index 00000000..35cdd439
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/enum.tmpl
@@ -0,0 +1,13 @@
+<%inherit file="/base.tmpl"/>
+<%block name="details">
+% if node.members:
+<terms>
+% for member in node.members:
+<item>
+<title><code>${node.name}.${member.name.upper()}</code></title>
+${formatter.format(node, member.doc)}
+</item>
+% endfor
+</terms>
+% endif
+</%block>
diff --git a/giscanner/doctemplates/Gjs/function.tmpl b/giscanner/doctemplates/Gjs/function.tmpl
new file mode 100644
index 00000000..e0fd9612
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/function.tmpl
@@ -0,0 +1,48 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <api:function>
+ <api:returns>
+ <api:type>${formatter.format_type(node.retval.type) | x}</api:type>
+ </api:returns>
+ <api:name>${node.symbol}</api:name>
+% for arg in formatter.get_parameters(node):
+% if arg.type.ctype == '<varargs>':
+ <api:varargs/>
+% else:
+ <api:arg>
+ <api:type>${formatter.format_type(arg.type) | x}</api:type>
+ <api:name>${formatter.format_parameter_name(node, arg)}</api:name>
+ </api:arg>
+% endif
+% endfor
+ </api:function>
+</%block>
+<%block name="synopsis">
+<synopsis><code mime="text/x-gjs">
+function \
+${node.name}(\
+${', '.join('%s:%s' % (arg.argname, formatter.format_type(arg.type)) for arg in formatter.get_parameters(node))}\
+):${formatter.format_type(node.retval.type)} {
+ // Gjs wrapper for ${node.symbol}()
+}
+</code></synopsis>
+</%block>
+<%block name="details">
+% if formatter.get_parameters(node) or node.retval:
+<terms>
+% for arg in formatter.get_parameters(node):
+<item>
+<title><code>${arg.argname}</code></title>
+${formatter.format(node, arg.doc)}
+</item>
+% endfor
+% if node.retval and node.retval.type.ctype != 'void':
+<item>
+<title><code>Returns</code></title>
+${formatter.format(node, node.retval.doc)}
+</item>
+% endif
+</terms>
+% endif
+</%block>
diff --git a/giscanner/doctemplates/Gjs/method.tmpl b/giscanner/doctemplates/Gjs/method.tmpl
new file mode 100644
index 00000000..a03d2825
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/method.tmpl
@@ -0,0 +1 @@
+<%inherit file="./function.tmpl"/>
diff --git a/giscanner/doctemplates/Gjs/namespace.tmpl b/giscanner/doctemplates/Gjs/namespace.tmpl
new file mode 100644
index 00000000..4d80c2a5
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/namespace.tmpl
@@ -0,0 +1,2 @@
+<%! page_type="guide" %>\
+<%inherit file="/namespace.tmpl"/>
diff --git a/giscanner/doctemplates/Gjs/property.tmpl b/giscanner/doctemplates/Gjs/property.tmpl
new file mode 100644
index 00000000..3316a00c
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/property.tmpl
@@ -0,0 +1,10 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <title type="link" role="topic">${node.name}</title>
+</%block>
+<%block name="synopsis">
+<synopsis><code mime="text/x-python">
+"${node.name}" ${formatter.format_type(node.type)} : ${formatter.format_property_flags(node)}
+</code></synopsis>
+</%block>
diff --git a/giscanner/doctemplates/Gjs/record.tmpl b/giscanner/doctemplates/Gjs/record.tmpl
new file mode 100644
index 00000000..1523e0df
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/record.tmpl
@@ -0,0 +1,2 @@
+<%! page_type="guide" %>\
+<%inherit file="/base.tmpl"/>
diff --git a/giscanner/doctemplates/Gjs/signal.tmpl b/giscanner/doctemplates/Gjs/signal.tmpl
new file mode 100644
index 00000000..084d9743
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/signal.tmpl
@@ -0,0 +1,37 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <title type="link" role="topic">${node.name}</title>
+</%block>
+<%block name="synopsis">
+<synopsis><code mime="text/x-python">
+function callback(${formatter.to_underscores(node.parent.name).lower()}, \
+% for arg in formatter.get_parameters(node):
+${arg.argname}:${formatter.format_type(arg.type)}, \
+% endfor
+):${formatter.format_type(node.retval.type)};
+</code></synopsis>
+</%block>
+<%block name="details">
+<terms>
+<item>
+<title><code>${formatter.to_underscores(node.parent.name).lower()}</code></title>
+<p>instance of ${formatter.format_xref(node.parent)} that is emitting the signal</p>
+</item>
+% for arg in formatter.get_parameters(node):
+<item>
+<title><code>${arg.argname}</code></title>
+${formatter.format(node, arg.doc)}
+</item>
+% endfor
+% if node.retval and \
+ node.retval.type.ctype != 'void' and \
+ node.retval.type.ctype is not None:
+<item>
+<title><code>Returns</code></title>
+${formatter.format(node, node.retval.doc)}
+</item>
+% endif
+</terms>
+</%block>
+
diff --git a/giscanner/doctemplates/Gjs/vfunc.tmpl b/giscanner/doctemplates/Gjs/vfunc.tmpl
new file mode 100644
index 00000000..1cbe511c
--- /dev/null
+++ b/giscanner/doctemplates/Gjs/vfunc.tmpl
@@ -0,0 +1,27 @@
+<%inherit file="/base.tmpl"/>
+<%block name="synopsis">
+<synopsis><code mime="text/x-gjs">
+function vfunc_${node.name}(\
+${', '.join('%s:%s' % (arg.argname, formatter.format_type(arg.type)) for arg in formatter.get_parameters(node))}\
+):${formatter.format_type(node.retval.type)} {
+}
+</code></synopsis>
+</%block>
+<%block name="details">
+% if formatter.get_parameters(node) or node.retval:
+<terms>
+% for arg in formatter.get_parameters(node):
+<item>
+<title><code>${arg.argname}</code></title>
+${formatter.format(node, arg.doc)}
+</item>
+% endfor
+% if node.retval and node.retval.type.ctype != 'void':
+<item>
+<title><code>Returns</code></title>
+${formatter.format(node, node.retval.doc)}
+</item>
+% endif
+</terms>
+% endif
+</%block>
diff --git a/giscanner/doctemplates/Python/class.tmpl b/giscanner/doctemplates/Python/class.tmpl
new file mode 100644
index 00000000..435b31a5
--- /dev/null
+++ b/giscanner/doctemplates/Python/class.tmpl
@@ -0,0 +1,17 @@
+<%inherit file="/class.tmpl"/>
+<%block name="synopsis">
+ <synopsis><code>
+from gi.repository import ${namespace.name}
+
+${formatter.to_underscores(node.name).lower()} = ${namespace.name}.${node.name}(\
+% for ix, property_ in enumerate(node.properties):
+% if property_.construct or property_.construct_only or property_.writable:
+<link xref='${namespace.name}.${node.name}-${property_.name}'>${property_.name.replace('-', '_')}</link>=value\
+% if ix != len(node.properties) - 1:
+, \
+% endif
+% endif
+% endfor
+)\
+ </code></synopsis>
+</%block>
diff --git a/giscanner/doctemplates/Python/constructor.tmpl b/giscanner/doctemplates/Python/constructor.tmpl
new file mode 100644
index 00000000..a03d2825
--- /dev/null
+++ b/giscanner/doctemplates/Python/constructor.tmpl
@@ -0,0 +1 @@
+<%inherit file="./function.tmpl"/>
diff --git a/giscanner/doctemplates/Python/default.tmpl b/giscanner/doctemplates/Python/default.tmpl
new file mode 100644
index 00000000..b66ae926
--- /dev/null
+++ b/giscanner/doctemplates/Python/default.tmpl
@@ -0,0 +1 @@
+<%inherit file="/base.tmpl"/>
diff --git a/giscanner/doctemplates/Python/enum.tmpl b/giscanner/doctemplates/Python/enum.tmpl
new file mode 100644
index 00000000..35cdd439
--- /dev/null
+++ b/giscanner/doctemplates/Python/enum.tmpl
@@ -0,0 +1,13 @@
+<%inherit file="/base.tmpl"/>
+<%block name="details">
+% if node.members:
+<terms>
+% for member in node.members:
+<item>
+<title><code>${node.name}.${member.name.upper()}</code></title>
+${formatter.format(node, member.doc)}
+</item>
+% endfor
+</terms>
+% endif
+</%block>
diff --git a/giscanner/doctemplates/Python/function.tmpl b/giscanner/doctemplates/Python/function.tmpl
new file mode 100644
index 00000000..072a1185
--- /dev/null
+++ b/giscanner/doctemplates/Python/function.tmpl
@@ -0,0 +1,53 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <api:function>
+ <api:returns>
+ <api:type>${formatter.format_type(node.retval.type) | x}</api:type>
+ </api:returns>
+ <api:name>${node.symbol}</api:name>
+% for arg in formatter.get_parameters(node):
+% if arg.type.ctype == '<varargs>':
+ <api:varargs/>
+% else:
+ <api:arg>
+ <api:type>${formatter.format_type(arg.type) | x}</api:type>
+ <api:name>${formatter.format_parameter_name(node, arg)}</api:name>
+ </api:arg>
+% endif
+% endfor
+ </api:function>
+</%block>
+<%block name="synopsis">
+<synopsis><code mime="text/x-python">
+% if formatter.get_parameters(node):
+@accepts(\
+${', '.join((formatter.format_type(arg.type) for arg in formatter.get_parameters(node)))}\
+)
+% endif
+@returns(${formatter.format_type(node.retval.type) | x})
+def \
+${node.name}(\
+${', '.join((formatter.format_parameter_name(node, arg) for arg in formatter.get_parameters(node)))}\
+):
+ # Python wrapper for ${node.symbol}()
+</code></synopsis>
+</%block>
+<%block name="details">
+% if formatter.get_parameters(node) or node.retval:
+<terms>
+% for ix, arg in enumerate(formatter.get_parameters(node)):
+<item>
+<title><code>${formatter.format_parameter_name(node, arg)}</code></title>
+${formatter.format(node, arg.doc)}
+</item>
+% endfor
+% if node.retval and node.retval.type.ctype != 'void':
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+% endif
+</terms>
+% endif
+</%block>
diff --git a/giscanner/doctemplates/Python/method.tmpl b/giscanner/doctemplates/Python/method.tmpl
new file mode 100644
index 00000000..a03d2825
--- /dev/null
+++ b/giscanner/doctemplates/Python/method.tmpl
@@ -0,0 +1 @@
+<%inherit file="./function.tmpl"/>
diff --git a/giscanner/doctemplates/Python/namespace.tmpl b/giscanner/doctemplates/Python/namespace.tmpl
new file mode 100644
index 00000000..4d80c2a5
--- /dev/null
+++ b/giscanner/doctemplates/Python/namespace.tmpl
@@ -0,0 +1,2 @@
+<%! page_type="guide" %>\
+<%inherit file="/namespace.tmpl"/>
diff --git a/giscanner/doctemplates/Python/property.tmpl b/giscanner/doctemplates/Python/property.tmpl
new file mode 100644
index 00000000..3316a00c
--- /dev/null
+++ b/giscanner/doctemplates/Python/property.tmpl
@@ -0,0 +1,10 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <title type="link" role="topic">${node.name}</title>
+</%block>
+<%block name="synopsis">
+<synopsis><code mime="text/x-python">
+"${node.name}" ${formatter.format_type(node.type)} : ${formatter.format_property_flags(node)}
+</code></synopsis>
+</%block>
diff --git a/giscanner/doctemplates/Python/record.tmpl b/giscanner/doctemplates/Python/record.tmpl
new file mode 100644
index 00000000..1523e0df
--- /dev/null
+++ b/giscanner/doctemplates/Python/record.tmpl
@@ -0,0 +1,2 @@
+<%! page_type="guide" %>\
+<%inherit file="/base.tmpl"/>
diff --git a/giscanner/doctemplates/Python/signal.tmpl b/giscanner/doctemplates/Python/signal.tmpl
new file mode 100644
index 00000000..dc931107
--- /dev/null
+++ b/giscanner/doctemplates/Python/signal.tmpl
@@ -0,0 +1,42 @@
+<%inherit file="/base.tmpl"/>
+<%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ <title type="link" role="topic">${node.name}</title>
+</%block>
+<%block name="synopsis">
+<synopsis><code mime="text/x-python">
+def callback(${formatter.to_underscores(node.parent.name).lower()}, \
+% for arg in formatter.get_parameters(node):
+${arg.argname}, \
+% endfor
+user_param1, ...)
+</code></synopsis>
+</%block>
+<%block name="details">
+<terms>
+<item>
+<title><code>${formatter.to_underscores(node.parent.name).lower()}</code></title>
+<p>instance of ${formatter.format_xref(node.parent)} that is emitting the signal</p>
+</item>
+% for arg in formatter.get_parameters(node):
+<item>
+<title><code>${arg.argname}</code></title>
+${formatter.format(node, arg.doc)}
+</item>
+% endfor
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+% if node.retval and \
+ node.retval.type.ctype != 'void' and \
+ node.retval.type.ctype is not None:
+<item>
+<title><code>Returns</code></title>
+${formatter.format(node, node.retval.doc)}
+</item>
+% endif
+</terms>
+</%block>
diff --git a/giscanner/doctemplates/Python/vfunc.tmpl b/giscanner/doctemplates/Python/vfunc.tmpl
new file mode 100644
index 00000000..98a30932
--- /dev/null
+++ b/giscanner/doctemplates/Python/vfunc.tmpl
@@ -0,0 +1,33 @@
+<%inherit file="/base.tmpl"/>
+<%block name="synopsis">
+<synopsis><code mime="text/x-python">
+% if formatter.get_parameters(node):
+@accepts(\
+${', '.join((formatter.format_type(arg.type) for arg in formatter.get_parameters(node)))}\
+)
+% endif
+@returns(${formatter.format_type(node.retval.type) | x})
+def \
+do_${node.name}(\
+${', '.join((arg.argname for arg in formatter.get_parameters(node)))}\
+):
+</code></synopsis>
+</%block>
+<%block name="details">
+% if formatter.get_parameters(node) or node.retval:
+<terms>
+% for arg in formatter.get_parameters(node):
+<item>
+<title><code>${arg.argname}</code></title>
+${formatter.format(node, arg.doc)}
+</item>
+% endfor
+% if node.retval and node.retval.type.ctype != 'void':
+<item>
+<title><code>Returns</code></title>
+${formatter.format(node, node.retval.doc)}
+</item>
+% endif
+</terms>
+% endif
+</%block>
diff --git a/giscanner/doctemplates/base.tmpl b/giscanner/doctemplates/base.tmpl
new file mode 100644
index 00000000..78980773
--- /dev/null
+++ b/giscanner/doctemplates/base.tmpl
@@ -0,0 +1,29 @@
+<%! page_type="topic" %>\
+<?xml version="1.0"?>
+<page id="${page_id}"
+ type="${self.attr.page_type}"
+ style="${page_kind}"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+ <%block name="info">
+ ${formatter.format_xref(node.parent, type="guide", group=page_kind)}
+ </%block>
+ </info>
+ <title><%block name="title">${formatter.format_page_name(node)}</%block></title>
+ <%block name="synopsis">
+ </%block>
+ <%block name="doc">
+ ${formatter.format(node, node.doc)}
+ </%block>
+ <%block name="since_version">
+ % if node.version:
+ <p>Since ${node.version}</p>
+ % endif
+ </%block>
+ <%block name="details">
+ </%block>
+ <%block name="links">
+ </%block>
+</page>
diff --git a/giscanner/doctemplates/class.tmpl b/giscanner/doctemplates/class.tmpl
new file mode 100644
index 00000000..7f8b6869
--- /dev/null
+++ b/giscanner/doctemplates/class.tmpl
@@ -0,0 +1,40 @@
+<%! page_type="guide" %>\
+<%inherit file="/base.tmpl"/>
+<%block name="details">
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+% for class_ in formatter.get_class_hierarchy(node):
+ <item>
+ <code>${class_.namespace.name}.${class_.name}</code>
+% endfor
+% for class_ in formatter.get_class_hierarchy(node):
+ </item>
+% endfor
+ </tree>
+ </synopsis>
+</%block>
+<%block name="links">
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="${formatter.mime_type}"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="${formatter.mime_type}"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+</%block>
diff --git a/giscanner/doctemplates/namespace.tmpl b/giscanner/doctemplates/namespace.tmpl
new file mode 100644
index 00000000..bb58bb16
--- /dev/null
+++ b/giscanner/doctemplates/namespace.tmpl
@@ -0,0 +1,19 @@
+<%! page_type="guide" %>\
+<%inherit file="/base.tmpl"/>
+<%block name="doc">
+</%block>
+<%block name="info">
+</%block>
+<%block name="links">
+ <links type="topic" ui:expanded="true" groups="class" style="linklist">
+ <title>Classes</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+</%block>
+<%block name="since_version">
+</%block>
diff --git a/giscanner/docwriter.py b/giscanner/docwriter.py
new file mode 100644
index 00000000..982ab37c
--- /dev/null
+++ b/giscanner/docwriter.py
@@ -0,0 +1,644 @@
+#!/usr/bin/env python
+# -*- Mode: Python -*-
+# GObject-Introspection - a framework for introspecting GObject libraries
+# Copyright (C) 2010 Zach Goldberg
+# Copyright (C) 2011 Johan Dahlin
+# Copyright (C) 2011 Shaun McCance
+#
+# 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 the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+
+import os
+import re
+import tempfile
+
+from xml.sax import saxutils
+from mako.lookup import TemplateLookup
+
+from . import ast, xmlwriter
+from .utils import to_underscores
+
+
+def make_page_id(node, recursive=False):
+ if isinstance(node, ast.Namespace):
+ if recursive:
+ return node.name
+ else:
+ return 'index'
+
+ if hasattr(node, '_chain') and node._chain:
+ parent = node._chain[-1]
+ else:
+ parent = None
+
+ if parent is None:
+ return '%s.%s' % (node.namespace.name, node.name)
+
+ if isinstance(node, (ast.Property, ast.Signal, ast.VFunction)):
+ return '%s-%s' % (make_page_id(parent, recursive=True), node.name)
+ else:
+ return '%s.%s' % (make_page_id(parent, recursive=True), node.name)
+
+
+def get_node_kind(node):
+ if isinstance(node, ast.Namespace):
+ node_kind = 'namespace'
+ elif isinstance(node, (ast.Class, ast.Interface)):
+ node_kind = 'class'
+ elif isinstance(node, ast.Record):
+ node_kind = 'record'
+ elif isinstance(node, ast.Function):
+ if node.is_method:
+ node_kind = 'method'
+ elif node.is_constructor:
+ node_kind = 'constructor'
+ else:
+ node_kind = 'function'
+ elif isinstance(node, ast.Enum):
+ node_kind = 'enum'
+ elif isinstance(node, ast.Property) and node.parent is not None:
+ node_kind = 'property'
+ elif isinstance(node, ast.Signal) and node.parent is not None:
+ node_kind = 'signal'
+ elif isinstance(node, ast.VFunction) and node.parent is not None:
+ node_kind = 'vfunc'
+ else:
+ node_kind = 'default'
+
+ return node_kind
+
+
+class TemplatedScanner(object):
+ def __init__(self, specs):
+ self.specs = self.unmangle_specs(specs)
+ self.regex = self.make_regex(self.specs)
+
+ def unmangle_specs(self, specs):
+ mangled = re.compile('<<([a-zA-Z_:]+)>>')
+ specdict = dict((name.lstrip('!'), spec) for name, spec in specs)
+
+ def unmangle(spec, name=None):
+ def replace_func(match):
+ child_spec_name = match.group(1)
+
+ if ':' in child_spec_name:
+ pattern_name, child_spec_name = child_spec_name.split(':', 1)
+ else:
+ pattern_name = None
+
+ child_spec = specdict[child_spec_name]
+ # Force all child specs of this one to be unnamed
+ unmangled = unmangle(child_spec, None)
+ if pattern_name and name:
+ return '(?P<%s_%s>%s)' % (name, pattern_name, unmangled)
+ else:
+ return unmangled
+
+ return mangled.sub(replace_func, spec)
+
+ return [(name, unmangle(spec, name)) for name, spec in specs]
+
+ def make_regex(self, specs):
+ regex = '|'.join('(?P<%s>%s)' % (name, spec) for name, spec in specs
+ if not name.startswith('!'))
+ return re.compile(regex)
+
+ def get_properties(self, name, match):
+ groupdict = match.groupdict()
+ properties = {name: groupdict.pop(name)}
+ name = name + "_"
+ for group, value in groupdict.iteritems():
+ if group.startswith(name):
+ key = group[len(name):]
+ properties[key] = value
+ return properties
+
+ def scan(self, text):
+ pos = 0
+ while True:
+ match = self.regex.search(text, pos)
+ if match is None:
+ break
+
+ start = match.start()
+ if start > pos:
+ yield ('other', text[pos:start], None)
+
+ pos = match.end()
+ name = match.lastgroup
+ yield (name, match.group(0), self.get_properties(name, match))
+
+ if pos < len(text):
+ yield ('other', text[pos:], None)
+
+
+class DocstringScanner(TemplatedScanner):
+ def __init__(self):
+ specs = [
+ ('!alpha', r'[a-zA-Z0-9_]+'),
+ ('!alpha_dash', r'[a-zA-Z0-9_-]+'),
+ ('property', r'#<<type_name:alpha>>:(<<property_name:alpha_dash>>)'),
+ ('signal', r'#<<type_name:alpha>>::(<<signal_name:alpha_dash>>)'),
+ ('type_name', r'#(<<type_name:alpha>>)'),
+ ('enum_value', r'%(<<member_name:alpha>>)'),
+ ('parameter', r'@<<param_name:alpha>>'),
+ ('function_call', r'<<symbol_name:alpha>>\(\)'),
+ ]
+
+ super(DocstringScanner, self).__init__(specs)
+
+
+class DocFormatter(object):
+ def __init__(self, transformer):
+ self._transformer = transformer
+ self._scanner = DocstringScanner()
+
+ def escape(self, text):
+ return saxutils.escape(text)
+
+ def should_render_node(self, node):
+ if isinstance(node, ast.Constant):
+ return False
+
+ return True
+
+ def format(self, node, doc):
+ if doc is None:
+ return ''
+
+ result = ''
+ for para in doc.split('\n\n'):
+ result += '<p>'
+ result += self.format_inline(node, para)
+ result += '</p>'
+ return result
+
+ def _resolve_type(self, ident):
+ try:
+ matches = self._transformer.split_ctype_namespaces(ident)
+ except ValueError:
+ return None
+ for namespace, name in matches:
+ node = namespace.get(name)
+ if node:
+ return node
+ return None
+
+ def _resolve_symbol(self, symbol):
+ try:
+ matches = self._transformer.split_csymbol_namespaces(symbol)
+ except ValueError:
+ return None
+ for namespace, name in matches:
+ node = namespace.get_by_symbol(symbol)
+ if node:
+ return node
+ return None
+
+ def _find_thing(self, list_, name):
+ for item in list_:
+ if item.name == name:
+ return item
+ raise KeyError("Could not find %s" % (name, ))
+
+ def _process_other(self, node, match, props):
+ return self.escape(match)
+
+ def _process_property(self, node, match, props):
+ type_node = self._resolve_type(props['type_name'])
+ if type_node is None:
+ return match
+
+ try:
+ prop = self._find_thing(type_node.properties, props['property_name'])
+ except (AttributeError, KeyError):
+ return match
+
+ return self.format_xref(prop)
+
+ def _process_signal(self, node, match, props):
+ type_node = self._resolve_type(props['type_name'])
+ if type_node is None:
+ return match
+
+ try:
+ signal = self._find_thing(type_node.signals, props['signal_name'])
+ except (AttributeError, KeyError):
+ return match
+
+ return self.format_xref(signal)
+
+ def _process_type_name(self, node, match, props):
+ type_ = self._resolve_type(props['type_name'])
+ if type_ is None:
+ return match
+
+ return self.format_xref(type_)
+
+ def _process_enum_value(self, node, match, props):
+ member_name = props['member_name']
+
+ try:
+ return '<code>%s</code>' % (self.fundamentals[member_name], )
+ except KeyError:
+ pass
+
+ enum_value = self._resolve_symbol(member_name)
+ if enum_value:
+ return self.format_xref(enum_value)
+
+ return match
+
+ def _process_parameter(self, node, match, props):
+ try:
+ parameter = node.get_parameter(props['param_name'])
+ except (AttributeError, ValueError):
+ return match
+
+ return '<code>%s</code>' % (self.format_parameter_name(node, parameter), )
+
+ def _process_function_call(self, node, match, props):
+ func = self._resolve_symbol(props['symbol_name'])
+ if func is None:
+ return match
+
+ return self.format_xref(func)
+
+ def _process_token(self, node, tok):
+ kind, match, props = tok
+
+ dispatch = {
+ 'other': self._process_other,
+ 'property': self._process_property,
+ 'signal': self._process_signal,
+ 'type_name': self._process_type_name,
+ 'enum_value': self._process_enum_value,
+ 'parameter': self._process_parameter,
+ 'function_call': self._process_function_call,
+ }
+
+ return dispatch[kind](node, match, props)
+
+ def get_parameters(self, node):
+ raise NotImplementedError
+
+ def format_inline(self, node, para):
+ tokens = self._scanner.scan(para)
+ words = [self._process_token(node, tok) for tok in tokens]
+ return ''.join(words)
+
+ def format_parameter_name(self, node, parameter):
+ if isinstance(parameter.type, ast.Varargs):
+ return "..."
+ else:
+ return parameter.argname
+
+ def format_function_name(self, func):
+ raise NotImplementedError
+
+ def format_type(self, type_):
+ raise NotImplementedError
+
+ def format_page_name(self, node):
+ if isinstance(node, ast.Namespace):
+ return 'Index'
+ elif isinstance(node, ast.Function):
+ return self.format_function_name(node)
+ elif isinstance(node, ast.Property) and node.parent is not None:
+ return '%s:%s' % (self.format_page_name(node.parent), node.name)
+ elif isinstance(node, ast.Signal) and node.parent is not None:
+ return '%s::%s' % (self.format_page_name(node.parent), node.name)
+ elif isinstance(node, ast.VFunction) and node.parent is not None:
+ return '%s::%s' % (self.format_page_name(node.parent), node.name)
+ else:
+ return make_page_id(node)
+
+ def format_xref(self, node, **attrdict):
+ if node is None:
+ attrs = [('xref', 'index')] + 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
+ else:
+ attrs = [('xref', make_page_id(node))] + attrdict.items()
+ return xmlwriter.build_xml_tag('link', attrs)
+
+ def format_property_flags(self, property_, construct_only=False):
+ flags = []
+ if property_.readable and not construct_only:
+ flags.append("Read")
+ if property_.writable and not construct_only:
+ flags.append("Write")
+ if property_.construct:
+ flags.append("Construct")
+ if property_.construct_only:
+ flags.append("Construct Only")
+
+ return " / ".join(flags)
+
+ def to_underscores(self, string):
+ return to_underscores(string)
+
+ def get_class_hierarchy(self, node):
+ parent_chain = [node]
+
+ while node.parent_type:
+ node = self._transformer.lookup_typenode(node.parent_type)
+ parent_chain.append(node)
+
+ parent_chain.reverse()
+ return parent_chain
+
+
+class DocFormatterC(DocFormatter):
+ language = "C"
+ mime_type = "text/x-csrc"
+
+ fundamentals = {
+ "TRUE": "TRUE",
+ "FALSE": "FALSE",
+ "NULL": "NULL",
+ }
+
+ def format_type(self, type_):
+ if isinstance(type_, ast.Array):
+ return self.format_type(type_.element_type) + '*'
+ elif type_.ctype is not None:
+ return type_.ctype
+ elif type_.target_fundamental:
+ return type_.target_fundamental
+ else:
+ node = self._transformer.lookup_typenode(type_)
+ return getattr(node, 'ctype')
+
+ def format_function_name(self, func):
+ if isinstance(func, ast.Function):
+ return func.symbol
+ else:
+ return func.name
+
+ def get_parameters(self, node):
+ return node.all_parameters
+
+
+class DocFormatterIntrospectableBase(DocFormatter):
+ def should_render_node(self, node):
+ if isinstance(node, ast.Record) and node.is_gtype_struct_for is not None:
+ return False
+
+ if not getattr(node, "introspectable", True):
+ return False
+
+ return super(DocFormatterIntrospectableBase, self).should_render_node(node)
+
+
+class DocFormatterPython(DocFormatterIntrospectableBase):
+ language = "Python"
+ mime_type = "text/python"
+
+ fundamentals = {
+ "TRUE": "True",
+ "FALSE": "False",
+ "NULL": "None",
+ }
+
+ def should_render_node(self, node):
+ if getattr(node, "is_constructor", False):
+ return False
+
+ return super(DocFormatterPython, self).should_render_node(node)
+
+ def is_method(self, node):
+ if getattr(node, "is_method", False):
+ return True
+
+ if isinstance(node, ast.VFunction):
+ return True
+
+ return False
+
+ def format_parameter_name(self, node, parameter):
+ # Force "self" for the first parameter of a method
+ if self.is_method(node) and parameter is node.instance_parameter:
+ return "self"
+ elif isinstance(parameter.type, ast.Varargs):
+ return "..."
+ else:
+ return parameter.argname
+
+ def format_fundamental_type(self, name):
+ fundamental_types = {
+ "utf8": "unicode",
+ "gunichar": "unicode",
+ "gchar": "str",
+ "guchar": "str",
+ "gboolean": "bool",
+ "gint": "int",
+ "guint": "int",
+ "glong": "int",
+ "gulong": "int",
+ "gint64": "int",
+ "guint64": "int",
+ "gfloat": "float",
+ "gdouble": "float",
+ "gchararray": "str",
+ "GParam": "GLib.Param",
+ "PyObject": "object",
+ "GStrv": "[str]",
+ "GVariant": "GLib.Variant"}
+
+ return fundamental_types.get(name, name)
+
+ def format_type(self, type_):
+ if isinstance(type_, (ast.List, ast.Array)):
+ return '[' + self.format_type(type_.element_type) + ']'
+ elif isinstance(type_, ast.Map):
+ return '{%s: %s}' % (self.format_type(type_.key_type),
+ self.format_type(type_.value_type))
+ elif type_.target_giname is not None:
+ return type_.target_giname
+ else:
+ return self.format_fundamental_type(type_.target_fundamental)
+
+ def format_function_name(self, func):
+ if func.parent is not None:
+ return "%s.%s" % (self.format_page_name(func.parent), func.name)
+ else:
+ return func.name
+
+ def get_parameters(self, node):
+ return node.all_parameters
+
+
+class DocFormatterGjs(DocFormatterIntrospectableBase):
+ language = "Gjs"
+ mime_type = "text/x-gjs"
+
+ fundamentals = {
+ "TRUE": "true",
+ "FALSE": "false",
+ "NULL": "null",
+ }
+
+ def is_method(self, node):
+ if getattr(node, "is_method", False):
+ return True
+
+ if isinstance(node, ast.VFunction):
+ return True
+
+ return False
+
+ def format_fundamental_type(self, name):
+ fundamental_types = {
+ "utf8": "String",
+ "gunichar": "String",
+ "gchar": "String",
+ "guchar": "String",
+ "gboolean": "Boolean",
+ "gint": "Number",
+ "guint": "Number",
+ "glong": "Number",
+ "gulong": "Number",
+ "gint64": "Number",
+ "guint64": "Number",
+ "gfloat": "Number",
+ "gdouble": "Number",
+ "gchararray": "String",
+ "GParam": "GLib.Param",
+ "PyObject": "Object",
+ "GStrv": "[String]",
+ "GVariant": "GLib.Variant"}
+
+ return fundamental_types.get(name, name)
+
+ def format_type(self, type_):
+ if isinstance(type_, (ast.List, ast.Array)):
+ return '[' + self.format_type(type_.element_type) + ']'
+ elif isinstance(type_, ast.Map):
+ return '{%s: %s}' % (self.format_type(type_.key_type),
+ self.format_type(type_.value_type))
+ elif type_.target_fundamental == "none":
+ return "void"
+ elif type_.target_giname is not None:
+ return type_.target_giname
+ else:
+ return self.format_fundamental_type(type_.target_fundamental)
+
+ def format_function_name(self, func):
+ if func.is_method:
+ return "%s.prototype.%s" % (self.format_page_name(func.parent), func.name)
+ elif func.is_constructor:
+ return "%s.%s" % (self.format_page_name(func.parent), func.name)
+ else:
+ return func.name
+
+ def get_parameters(self, node):
+ skip = []
+ for param in node.parameters:
+ if param.direction == ast.PARAM_DIRECTION_OUT:
+ skip.append(param)
+ if param.closure_name is not None:
+ skip.append(node.get_parameter(param.closure_name))
+ if param.destroy_name is not None:
+ skip.append(node.get_parameter(param.destroy_name))
+ if isinstance(param.type, ast.Array) and param.type.length_param_name is not None:
+ skip.append(node.get_parameter(param.type.length_param_name))
+
+ params = []
+ for param in node.parameters:
+ if param not in skip:
+ params.append(param)
+ return params
+
+
+LANGUAGES = {
+ "c": DocFormatterC,
+ "python": DocFormatterPython,
+ "gjs": DocFormatterGjs,
+}
+
+
+class DocWriter(object):
+ def __init__(self, transformer, language):
+ self._transformer = transformer
+
+ try:
+ formatter_class = LANGUAGES[language.lower()]
+ except KeyError:
+ raise SystemExit("Unsupported language: %s" % (language, ))
+
+ self._formatter = formatter_class(self._transformer)
+ self._language = self._formatter.language
+
+ self._lookup = self._get_template_lookup()
+
+ def _get_template_lookup(self):
+ if 'UNINSTALLED_INTROSPECTION_SRCDIR' in os.environ:
+ top_srcdir = os.environ['UNINSTALLED_INTROSPECTION_SRCDIR']
+ srcdir = os.path.join(top_srcdir, 'giscanner')
+ else:
+ srcdir = os.path.dirname(__file__)
+
+ template_dir = os.path.join(srcdir, 'doctemplates')
+
+ return TemplateLookup(directories=[template_dir],
+ module_directory=tempfile.mkdtemp(),
+ output_encoding='utf-8')
+
+ def write(self, output):
+ try:
+ os.makedirs(output)
+ except OSError:
+ # directory already made
+ pass
+
+ self._walk_node(output, self._transformer.namespace, [])
+ self._transformer.namespace.walk(lambda node, chain: self._walk_node(output, node, chain))
+
+ def _walk_node(self, output, node, chain):
+ if isinstance(node, ast.Function) and node.moved_to is not None:
+ return False
+ if getattr(node, 'disguised', False):
+ return False
+ if self._formatter.should_render_node(node):
+ self._render_node(node, chain, output)
+ return True
+ return False
+
+ def _render_node(self, node, chain, output):
+ namespace = self._transformer.namespace
+
+ # A bit of a hack...maybe this should be an official API
+ node._chain = list(chain)
+
+ page_kind = get_node_kind(node)
+ template_name = '%s/%s.tmpl' % (self._language, page_kind)
+ page_id = make_page_id(node)
+
+ template = self._lookup.get_template(template_name)
+ result = template.render(namespace=namespace,
+ node=node,
+ page_id=page_id,
+ page_kind=page_kind,
+ formatter=self._formatter)
+
+ output_file_name = os.path.join(os.path.abspath(output),
+ page_id + '.page')
+ fp = open(output_file_name, 'w')
+ fp.write(result)
+ fp.close()
diff --git a/giscanner/dumper.py b/giscanner/dumper.py
index f78d2ae8..157b24da 100644
--- a/giscanner/dumper.py
+++ b/giscanner/dumper.py
@@ -45,7 +45,9 @@ main(int argc, char **argv)
GError *error = NULL;
const char *introspect_dump_prefix = "--introspect-dump=";
+#if !GLIB_CHECK_VERSION(2,35,0)
g_type_init ();
+#endif
%(init_sections)s
@@ -83,7 +85,13 @@ class DumpCompiler(object):
self._compiler_cmd = os.environ.get('CC', 'gcc')
self._linker_cmd = os.environ.get('CC', self._compiler_cmd)
self._pkgconfig_cmd = os.environ.get('PKG_CONFIG', 'pkg-config')
-
+ self._pkgconfig_msvc_flags = ''
+ # Enable the --msvc-syntax pkg-config flag when
+ # the Microsoft compiler is used
+ # (This is the other way to check whether Visual C++ is used subsequently)
+ if 'clang' not in self._compiler_cmd:
+ if 'cl' in self._compiler_cmd:
+ self._pkgconfig_msvc_flags = '--msvc-syntax'
self._uninst_srcdir = os.environ.get(
'UNINSTALLED_INTROSPECTION_SRCDIR')
self._packages = ['gio-2.0 gmodule-2.0']
@@ -143,7 +151,12 @@ class DumpCompiler(object):
f.write("\n};\n")
f.close()
- o_path = self._generate_tempfile(tmpdir, '.o')
+ # Microsoft compilers generate intermediate .obj files
+ # during compilation, unlike .o files like GCC and others
+ if self._pkgconfig_msvc_flags:
+ o_path = self._generate_tempfile(tmpdir, '.obj')
+ else:
+ o_path = self._generate_tempfile(tmpdir, '.o')
if os.name == 'nt':
ext = 'exe'
@@ -154,14 +167,14 @@ class DumpCompiler(object):
try:
self._compile(o_path, c_path)
- except CompilerError, e:
+ except CompilerError as e:
if not utils.have_debug_flag('save-temps'):
shutil.rmtree(tmpdir)
raise SystemExit('compilation of temporary binary failed:' + str(e))
try:
self._link(bin_path, o_path)
- except LinkerError, e:
+ except LinkerError as e:
if not utils.have_debug_flag('save-temps'):
shutil.rmtree(tmpdir)
raise SystemExit('linking of temporary binary failed: ' + str(e))
@@ -176,8 +189,14 @@ class DumpCompiler(object):
return os.path.join(tmpdir, tmpl)
def _run_pkgconfig(self, flag):
+ # Enable the --msvc-syntax pkg-config flag when
+ # the Microsoft compiler is used
+ if self._pkgconfig_msvc_flags:
+ cmd = [self._pkgconfig_cmd, self._pkgconfig_msvc_flags, flag]
+ else:
+ cmd = [self._pkgconfig_cmd, flag]
proc = subprocess.Popen(
- [self._pkgconfig_cmd, flag] + self._packages,
+ cmd + self._packages,
stdout=subprocess.PIPE)
return proc.communicate()[0].split()
@@ -188,6 +207,12 @@ class DumpCompiler(object):
# header of the library being introspected
if self._compiler_cmd == 'gcc' and not self._options.init_sections:
args.append('-Wall')
+ # The Microsoft compiler uses different option flags for
+ # silencing warnings on deprecated function usage
+ if self._pkgconfig_msvc_flags:
+ args.append("-wd4996")
+ else:
+ args.append("-Wno-deprecated-declarations")
pkgconfig_flags = self._run_pkgconfig('--cflags')
args.extend(pkgconfig_flags)
cflags = os.environ.get('CFLAGS', '')
@@ -195,7 +220,12 @@ class DumpCompiler(object):
args.append(cflag)
for include in self._options.cpp_includes:
args.append('-I' + include)
- args.extend(['-c', '-o', output])
+ # The Microsoft compiler uses different option flags for
+ # compilation result output
+ if self._pkgconfig_msvc_flags:
+ args.extend(['-c', '-Fe' + output, '-Fo' + output])
+ else:
+ args.extend(['-c', '-o', output])
for source in sources:
if not os.path.exists(source):
raise CompilerError(
@@ -207,7 +237,7 @@ class DumpCompiler(object):
sys.stdout.flush()
try:
subprocess.check_call(args)
- except subprocess.CalledProcessError, e:
+ except subprocess.CalledProcessError as e:
raise CompilerError(e)
def _link(self, output, *sources):
@@ -221,7 +251,12 @@ class DumpCompiler(object):
args.append('--silent')
args.extend(self._linker_cmd.split())
- args.extend(['-o', output])
+ # We can use -o for the Microsoft compiler/linker,
+ # but it is considered deprecated usage with that
+ if self._pkgconfig_msvc_flags:
+ args.extend(['-Fe' + output])
+ else:
+ args.extend(['-o', output])
if libtool:
if os.name == 'nt':
args.append('-export-all-symbols')
@@ -256,7 +291,7 @@ class DumpCompiler(object):
sys.stdout.flush()
try:
subprocess.check_call(args)
- except subprocess.CalledProcessError, e:
+ except subprocess.CalledProcessError as e:
raise LinkerError(e)
def _add_link_internal_args(self, args, libtool):
@@ -264,26 +299,52 @@ class DumpCompiler(object):
# is being built in the current directory.
# Search the current directory first
- args.append('-L.')
+ # (This flag is not supported nor needed for Visual C++)
+ if self._pkgconfig_msvc_flags == '':
+ args.append('-L.')
# https://bugzilla.gnome.org/show_bug.cgi?id=625195
if not libtool:
- args.append('-Wl,-rpath=.')
+ # We don't have -Wl,-rpath for Visual C++, and that's
+ # going to cause a problem. Instead, link to internal
+ # libraries by deducing the .lib file name using
+ # the namespace name and version
+ if self._pkgconfig_msvc_flags:
+ if self._options.namespace_version:
+ args.append(str.lower(self._options.namespace_name) +
+ '-' +
+ self._options.namespace_version + '.lib')
+ else:
+ args.append(str.lower(self._options.namespace_name) + '.lib')
+ else:
+ args.append('-Wl,-rpath=.')
+
+ # Ensure libraries are always linked as we are going to use ldd to work
+ # out their names later
+ if not libtool and self._pkgconfig_msvc_flags == '':
+ args.append('-Wl,--no-as-needed')
for library in self._options.libraries:
- if library.endswith(".la"): # explicitly specified libtool library
- args.append(library)
- else:
- args.append('-l' + library)
+ # Visual C++: We have the needed .lib files now, and we need to link
+ # to .lib files, not the .dll as the --library option specifies the
+ # .dll(s) the .gir file refers to
+ if self._pkgconfig_msvc_flags == '':
+ if library.endswith(".la"): # explicitly specified libtool library
+ args.append(library)
+ else:
+ args.append('-l' + library)
for library_path in self._options.library_paths:
- args.append('-L' + library_path)
- if os.path.isabs(library_path):
- if libtool:
- args.append('-rpath')
- args.append(library_path)
- else:
- args.append('-Wl,-rpath=' + library_path)
+ # Not used/needed on Visual C++, and -Wl,-rpath options
+ # will cause grief
+ if self._pkgconfig_msvc_flags == '':
+ args.append('-L' + library_path)
+ if os.path.isabs(library_path):
+ if libtool:
+ args.append('-rpath')
+ args.append(library_path)
+ else:
+ args.append('-Wl,-rpath=' + library_path)
args.extend(self._run_pkgconfig('--libs'))
@@ -294,10 +355,14 @@ class DumpCompiler(object):
args.extend(self._run_pkgconfig('--libs'))
for library in self._options.libraries:
- if library.endswith(".la"): # explicitly specified libtool library
- args.append(library)
- else:
- args.append('-l' + library)
+ # The --library option on Windows pass in the .dll file(s) the
+ # .gir files refer to, so don't link to them on Visual C++
+ if self._pkgconfig_msvc_flags == '':
+ if library.endswith(".la"): # explicitly specified libtool library
+ args.append(library)
+ else:
+ args.append('-l' + library)
+
def compile_introspection_binary(options, get_type_functions,
error_quark_functions):
diff --git a/giscanner/gdumpparser.py b/giscanner/gdumpparser.py
index c0b13f4a..568777bd 100644
--- a/giscanner/gdumpparser.py
+++ b/giscanner/gdumpparser.py
@@ -165,7 +165,7 @@ blob containing data gleaned from GObject's primitive introspection."""
try:
try:
subprocess.check_call(args, stdout=sys.stdout, stderr=sys.stderr)
- except subprocess.CalledProcessError, e:
+ except subprocess.CalledProcessError as e:
# Clean up temporaries
raise SystemExit(e)
return parse(out_path)
@@ -203,8 +203,7 @@ blob containing data gleaned from GObject's primitive introspection."""
def _initparse_gobject_record(self, record):
if (record.name.startswith('ParamSpec')
- and not record.name in ('ParamSpecPool', 'ParamSpecClass',
- 'ParamSpecTypeInfo')):
+ and not record.name in ('ParamSpecPool', 'ParamSpecClass', 'ParamSpecTypeInfo')):
parent = None
if record.name != 'ParamSpec':
parent = ast.Type(target_giname='GObject.ParamSpec')
@@ -251,7 +250,7 @@ blob containing data gleaned from GObject's primitive introspection."""
(get_type, c_symbol_prefix) = self._split_type_and_symbol_prefix(xmlnode)
try:
enum_name = self._transformer.strip_identifier(type_name)
- except TransformerException, e:
+ except TransformerException as e:
message.fatal(e)
# The scanned member values are more accurate than the values that the
@@ -280,7 +279,6 @@ blob containing data gleaned from GObject's primitive introspection."""
member.attrib['name'],
member.attrib['nick']))
-
if xmlnode.tag == 'flags':
klass = ast.Bitfield
else:
@@ -316,7 +314,7 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
(get_type, c_symbol_prefix) = self._split_type_and_symbol_prefix(xmlnode)
try:
object_name = self._transformer.strip_identifier(type_name)
- except TransformerException, e:
+ except TransformerException as e:
message.fatal(e)
node = ast.Class(object_name, None,
gtype_name=type_name,
@@ -346,7 +344,7 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
(get_type, c_symbol_prefix) = self._split_type_and_symbol_prefix(xmlnode)
try:
interface_name = self._transformer.strip_identifier(type_name)
- except TransformerException, e:
+ except TransformerException as e:
message.fatal(e)
node = ast.Interface(interface_name, None,
gtype_name=type_name,
@@ -391,7 +389,7 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
try:
name = self._transformer.strip_identifier(type_name)
- except TransformerException, e:
+ except TransformerException as e:
message.fatal(e)
# This one doesn't go in the main namespace; we associate it with
# the struct or union
@@ -437,7 +435,7 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
if i == 0:
argname = 'object'
else:
- argname = 'p%s' % (i-1, )
+ argname = 'p%s' % (i - 1, )
pctype = parameter.attrib['type']
ptype = ast.Type.create_from_gtype_name(pctype)
param = ast.Parameter(argname, ptype)
@@ -465,7 +463,7 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
(get_type, c_symbol_prefix) = self._split_type_and_symbol_prefix(xmlnode)
try:
fundamental_name = self._transformer.strip_identifier(type_name)
- except TransformerException, e:
+ except TransformerException as e:
message.warn(e)
return
@@ -509,7 +507,7 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
def _pair_boxed_type(self, boxed):
try:
name = self._transformer.strip_identifier(boxed.gtype_name)
- except TransformerException, e:
+ except TransformerException as e:
message.fatal(e)
pair_node = self._namespace.get(name)
if not pair_node:
@@ -526,8 +524,7 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
return False
def _strip_class_suffix(self, name):
- if (name.endswith('Class') or
- name.endswith('Iface')):
+ if (name.endswith('Class') or name.endswith('Iface')):
return name[:-5]
elif name.endswith('Interface'):
return name[:-9]
diff --git a/giscanner/girparser.py b/giscanner/girparser.py
index eb53a3c4..2538036a 100644
--- a/giscanner/girparser.py
+++ b/giscanner/girparser.py
@@ -46,9 +46,6 @@ class GIRParser(object):
def __init__(self, types_only=False):
self._types_only = types_only
- self._shared_libraries = []
- self._includes = set()
- self._pkgconfig_packages = set()
self._namespace = None
self._filename_stack = []
@@ -62,10 +59,9 @@ class GIRParser(object):
self._filename_stack.pop()
def parse_tree(self, tree):
- self._includes.clear()
self._namespace = None
- self._shared_libraries = []
self._pkgconfig_packages = set()
+ self._includes = set()
self._c_includes = set()
self._c_prefix = None
self._parse_api(tree.getroot())
@@ -73,26 +69,9 @@ class GIRParser(object):
def get_namespace(self):
return self._namespace
- def get_shared_libraries(self):
- return self._shared_libraries
-
- def get_includes(self):
- return self._includes
-
- def get_c_includes(self):
- return self._c_includes
-
def get_c_prefix(self):
return self._c_prefix
- def get_pkgconfig_packages(self):
- if not hasattr(self, '_pkgconfig_packages'):
- self._pkgconfig_packages = []
- return self._pkgconfig_packages
-
- def get_doc(self):
- return parse(self._filename)
-
# Private
def _find_first_child(self, node, name_or_names):
@@ -122,9 +101,8 @@ class GIRParser(object):
assert root.tag == _corens('repository')
version = root.attrib['version']
if version != COMPATIBLE_GIR_VERSION:
- raise SystemExit("%s: Incompatible version %s (supported: %s)" \
- % (self._get_current_file(),
- version, COMPATIBLE_GIR_VERSION))
+ raise SystemExit("%s: Incompatible version %s (supported: %s)" %
+ (self._get_current_file(), version, COMPATIBLE_GIR_VERSION))
for node in root.getchildren():
if node.tag == _corens('include'):
@@ -143,12 +121,14 @@ class GIRParser(object):
if symbol_prefixes:
symbol_prefixes = symbol_prefixes.split(',')
self._namespace = ast.Namespace(ns.attrib['name'],
- ns.attrib['version'],
- identifier_prefixes=identifier_prefixes,
- symbol_prefixes=symbol_prefixes)
+ ns.attrib['version'],
+ identifier_prefixes=identifier_prefixes,
+ symbol_prefixes=symbol_prefixes)
if 'shared-library' in ns.attrib:
- self._shared_libraries.extend(
- ns.attrib['shared-library'].split(','))
+ self._namespace.shared_libraries = ns.attrib['shared-library'].split(',')
+ self._namespace.includes = self._includes
+ self._namespace.c_includes = self._c_includes
+ self._namespace.exported_packages = self._pkgconfig_packages
parser_methods = {
_corens('alias'): self._parse_alias,
@@ -159,8 +139,7 @@ class GIRParser(object):
_corens('interface'): self._parse_object_interface,
_corens('record'): self._parse_record,
_corens('union'): self._parse_union,
- _glibns('boxed'): self._parse_boxed,
- }
+ _glibns('boxed'): self._parse_boxed}
if not self._types_only:
parser_methods[_corens('constant')] = self._parse_constant
@@ -172,8 +151,7 @@ class GIRParser(object):
method(node)
def _parse_include(self, node):
- include = ast.Include(node.attrib['name'],
- node.attrib['version'])
+ include = ast.Include(node.attrib['name'], node.attrib['version'])
self._includes.add(include)
def _parse_pkgconfig_package(self, node):
@@ -184,9 +162,7 @@ class GIRParser(object):
def _parse_alias(self, node):
typeval = self._parse_type(node)
- alias = ast.Alias(node.attrib['name'],
- typeval,
- node.attrib.get(_cns('type')))
+ alias = ast.Alias(node.attrib['name'], typeval, node.attrib.get(_cns('type')))
self._parse_generic_attribs(node, alias)
self._namespace.append(alias)
@@ -218,9 +194,9 @@ class GIRParser(object):
else:
parent_type = None
- ctor_args = [node.attrib['name'],
- parent_type]
- ctor_kwargs = {'gtype_name': node.attrib[_glibns('type-name')],
+ ctor_kwargs = {'name': node.attrib['name'],
+ 'parent_type': parent_type,
+ 'gtype_name': node.attrib[_glibns('type-name')],
'get_type': node.attrib[_glibns('get-type')],
'c_symbol_prefix': node.attrib.get(_cns('symbol-prefix')),
'ctype': node.attrib.get(_cns('type'))}
@@ -234,7 +210,7 @@ class GIRParser(object):
else:
raise AssertionError(node)
- obj = klass(*ctor_args, **ctor_kwargs)
+ obj = klass(**ctor_kwargs)
self._parse_generic_attribs(node, obj)
type_struct = node.attrib.get(_glibns('type-struct'))
if type_struct:
@@ -247,10 +223,11 @@ class GIRParser(object):
'set-value-func', 'get-value-func']:
func_name = node.attrib.get(_glibns(func_id))
obj.__dict__[func_id.replace('-', '_')] = func_name
- self._namespace.append(obj)
if self._types_only:
+ self._namespace.append(obj)
return
+
for iface in self._find_children(node, _corens('implements')):
obj.interfaces.append(self._namespace.type_from_name(iface.attrib['name']))
for iface in self._find_children(node, _corens('prerequisite')):
@@ -272,12 +249,14 @@ class GIRParser(object):
func = self._parse_function_common(ctor, ast.Function, obj)
func.is_constructor = True
obj.constructors.append(func)
- obj.fields.extend(self._parse_fields(node))
+ obj.fields.extend(self._parse_fields(node, obj))
for prop in self._find_children(node, _corens('property')):
obj.properties.append(self._parse_property(prop, obj))
for signal in self._find_children(node, _glibns('signal')):
obj.signals.append(self._parse_function_common(signal, ast.Signal, obj))
+ self._namespace.append(obj)
+
def _parse_callback(self, node):
callback = self._parse_function_common(node, ast.Callback)
self._namespace.append(callback)
@@ -286,6 +265,18 @@ class GIRParser(object):
function = self._parse_function_common(node, ast.Function)
self._namespace.append(function)
+ def _parse_parameter(self, node):
+ typeval = self._parse_type(node)
+ param = ast.Parameter(node.attrib.get('name'),
+ typeval,
+ node.attrib.get('direction') or ast.PARAM_DIRECTION_IN,
+ node.attrib.get('transfer-ownership'),
+ node.attrib.get('allow-none') == '1',
+ node.attrib.get('scope'),
+ node.attrib.get('caller-allocates') == '1')
+ self._parse_generic_attribs(node, param)
+ return param
+
def _parse_function_common(self, node, klass, parent=None):
name = node.attrib['name']
returnnode = node.find(_corens('return-value'))
@@ -323,17 +314,11 @@ class GIRParser(object):
parameters_node = node.find(_corens('parameters'))
if (parameters_node is not None):
+ paramnode = self._find_first_child(parameters_node, _corens('instance-parameter'))
+ if paramnode:
+ func.instance_parameter = self._parse_parameter(paramnode)
for paramnode in self._find_children(parameters_node, _corens('parameter')):
- typeval = self._parse_type(paramnode)
- param = ast.Parameter(paramnode.attrib.get('name'),
- typeval,
- paramnode.attrib.get('direction') or ast.PARAM_DIRECTION_IN,
- paramnode.attrib.get('transfer-ownership'),
- paramnode.attrib.get('allow-none') == '1',
- paramnode.attrib.get('scope'),
- paramnode.attrib.get('caller-allocates') == '1')
- self._parse_generic_attribs(paramnode, param)
- parameters.append(param)
+ parameters.append(self._parse_parameter(paramnode))
for i, paramnode in enumerate(self._find_children(parameters_node,
_corens('parameter'))):
param = parameters[i]
@@ -356,12 +341,12 @@ class GIRParser(object):
self._namespace.track(func)
return func
- def _parse_fields(self, node):
+ def _parse_fields(self, node, obj):
res = []
names = (_corens('field'), _corens('record'), _corens('union'), _corens('callback'))
for child in node.getchildren():
if child.tag in names:
- fieldobj = self._parse_field(child)
+ fieldobj = self._parse_field(child, obj)
res.append(fieldobj)
return res
@@ -376,16 +361,18 @@ class GIRParser(object):
compound.foreign = True
self._parse_generic_attribs(node, compound)
if not self._types_only:
- compound.fields.extend(self._parse_fields(node))
+ compound.fields.extend(self._parse_fields(node, compound))
for method in self._find_children(node, _corens('method')):
- compound.methods.append(
- self._parse_function_common(method, ast.Function, compound))
+ func = self._parse_function_common(method, ast.Function, compound)
+ func.is_method = True
+ compound.methods.append(func)
for func in self._find_children(node, _corens('function')):
compound.static_methods.append(
self._parse_function_common(func, ast.Function, compound))
for ctor in self._find_children(node, _corens('constructor')):
- compound.constructors.append(
- self._parse_function_common(ctor, ast.Function, compound))
+ func = self._parse_function_common(ctor, ast.Function, compound)
+ func.is_constructor = True
+ compound.constructors.append(func)
return compound
def _parse_record(self, node, anonymous=False):
@@ -435,7 +422,8 @@ class GIRParser(object):
return ast.Type(ctype=ctype)
elif name in ['GLib.List', 'GLib.SList']:
subchild = self._find_first_child(typenode,
- map(_corens, ('callback', 'array', 'varargs', 'type')))
+ map(_corens, ('callback', 'array',
+ 'varargs', 'type')))
if subchild is not None:
element_type = self._parse_type(typenode)
else:
@@ -446,9 +434,7 @@ class GIRParser(object):
subchildren_types = map(self._parse_type_simple, subchildren)
while len(subchildren_types) < 2:
subchildren_types.append(ast.TYPE_ANY)
- return ast.Map(subchildren_types[0],
- subchildren_types[1],
- ctype=ctype)
+ return ast.Map(subchildren_types[0], subchildren_types[1], ctype=ctype)
else:
return self._namespace.type_from_name(name, ctype)
else:
@@ -470,8 +456,8 @@ class GIRParser(object):
lenidx = typenode.attrib.get('length')
if lenidx is not None:
idx = int(lenidx)
- assert idx < len(parent.parameters), "%r %d >= %d" \
- % (parent, idx, len(parent.parameters))
+ assert idx < len(parent.parameters), "%r %d >= %d" % (parent, idx,
+ len(parent.parameters))
typeval.length_param_name = parent.parameters[idx].argname
def _parse_boxed(self, node):
@@ -480,9 +466,11 @@ class GIRParser(object):
get_type=node.attrib[_glibns('get-type')],
c_symbol_prefix=node.attrib.get(_cns('symbol-prefix')))
self._parse_generic_attribs(node, obj)
- self._namespace.append(obj)
+
if self._types_only:
+ self._namespace.append(obj)
return
+
for method in self._find_children(node, _corens('method')):
func = self._parse_function_common(method, ast.Function, obj)
func.is_method = True
@@ -493,8 +481,9 @@ class GIRParser(object):
for callback in self._find_children(node, _corens('callback')):
obj.fields.append(
self._parse_function_common(callback, ast.Callback, obj))
+ self._namespace.append(obj)
- def _parse_field(self, node):
+ def _parse_field(self, node, parent):
type_node = None
anonymous_node = None
if node.tag in map(_corens, ('record', 'union')):
@@ -514,23 +503,24 @@ class GIRParser(object):
assert node.tag == _corens('field'), node.tag
type_node = self._parse_type(node)
field = ast.Field(node.attrib.get('name'),
- type_node,
- node.attrib.get('readable') != '0',
- node.attrib.get('writable') == '1',
- node.attrib.get('bits'),
- anonymous_node=anonymous_node)
+ type_node,
+ node.attrib.get('readable') != '0',
+ node.attrib.get('writable') == '1',
+ node.attrib.get('bits'),
+ anonymous_node=anonymous_node)
field.private = node.attrib.get('private') == '1'
+ field.parent = parent
self._parse_generic_attribs(node, field)
return field
def _parse_property(self, node, parent):
prop = ast.Property(node.attrib['name'],
- self._parse_type(node),
- node.attrib.get('readable') != '0',
- node.attrib.get('writable') == '1',
- node.attrib.get('construct') == '1',
- node.attrib.get('construct-only') == '1',
- node.attrib.get('transfer-ownership'))
+ self._parse_type(node),
+ node.attrib.get('readable') != '0',
+ node.attrib.get('writable') == '1',
+ node.attrib.get('construct') == '1',
+ node.attrib.get('construct-only') == '1',
+ node.attrib.get('transfer-ownership'))
self._parse_generic_attribs(node, prop)
prop.parent = parent
return prop
@@ -570,12 +560,16 @@ class GIRParser(object):
obj.error_domain = glib_error_domain
obj.ctype = ctype
self._parse_generic_attribs(node, obj)
- self._namespace.append(obj)
if self._types_only:
+ self._namespace.append(obj)
return
- for member in self._find_children(node, _corens('member')):
- members.append(self._parse_member(member))
+
+ for member_node in self._find_children(node, _corens('member')):
+ member = self._parse_member(member_node)
+ member.parent = obj
+ members.append(member)
for func_node in self._find_children(node, _corens('function')):
func = self._parse_function_common(func_node, ast.Function)
obj.static_methods.append(func)
+ self._namespace.append(obj)
diff --git a/giscanner/girwriter.py b/giscanner/girwriter.py
index 97f81616..e7af2533 100644
--- a/giscanner/girwriter.py
+++ b/giscanner/girwriter.py
@@ -28,40 +28,32 @@ from .xmlwriter import XMLWriter
# Compatible changes we just make inline
COMPATIBLE_GIR_VERSION = '1.2'
+
class GIRWriter(XMLWriter):
- def __init__(self, namespace, shlibs, includes, pkgs, c_includes):
+ def __init__(self, namespace):
super(GIRWriter, self).__init__()
self.write_comment(
-'''This file was automatically generated from C sources - DO NOT EDIT!
-To affect the contents of this file, edit the original C definitions,
-and/or use gtk-doc annotations. ''')
- self._write_repository(namespace, shlibs, includes, pkgs,
- c_includes)
-
- def _write_repository(self, namespace, shlibs, includes=None,
- packages=None, c_includes=None):
- if includes is None:
- includes = frozenset()
- if packages is None:
- packages = frozenset()
- if c_includes is None:
- c_includes = frozenset()
+ 'This file was automatically generated from C sources - DO NOT EDIT!\n'
+ 'To affect the contents of this file, edit the original C definitions,\n'
+ 'and/or use gtk-doc annotations. ')
+ self._write_repository(namespace)
+
+ def _write_repository(self, namespace):
attrs = [
('version', COMPATIBLE_GIR_VERSION),
('xmlns', 'http://www.gtk.org/introspection/core/1.0'),
('xmlns:c', 'http://www.gtk.org/introspection/c/1.0'),
- ('xmlns:glib', 'http://www.gtk.org/introspection/glib/1.0'),
- ]
+ ('xmlns:glib', 'http://www.gtk.org/introspection/glib/1.0')]
with self.tagcontext('repository', attrs):
- for include in sorted(includes):
+ for include in sorted(namespace.includes):
self._write_include(include)
- for pkg in sorted(set(packages)):
+ for pkg in sorted(set(namespace.exported_packages)):
self._write_pkgconfig_pkg(pkg)
- for c_include in sorted(set(c_includes)):
+ for c_include in sorted(set(namespace.c_includes)):
self._write_c_include(c_include)
self._namespace = namespace
- self._write_namespace(namespace, shlibs)
+ self._write_namespace(namespace)
self._namespace = None
def _write_include(self, include):
@@ -76,10 +68,10 @@ and/or use gtk-doc annotations. ''')
attrs = [('name', c_include)]
self.write_tag('c:include', attrs)
- def _write_namespace(self, namespace, shlibs):
+ def _write_namespace(self, namespace):
attrs = [('name', namespace.name),
('version', namespace.version),
- ('shared-library', ','.join(shlibs)),
+ ('shared-library', ','.join(namespace.shared_libraries)),
('c:identifier-prefixes', ','.join(namespace.identifier_prefixes)),
('c:symbol-prefixes', ','.join(namespace.symbol_prefixes))]
with self.tagcontext('namespace', attrs):
@@ -134,7 +126,7 @@ and/or use gtk-doc annotations. ''')
for key, value in node.attributes:
self.write_tag('attribute', [('name', key), ('value', value)])
if hasattr(node, 'doc') and node.doc:
- self.write_tag('doc', [('xml:whitespace', 'preserve')],
+ self.write_tag('doc', [('xml:space', 'preserve')],
node.doc)
def _append_node_generic(self, node, attrs):
@@ -170,9 +162,11 @@ and/or use gtk-doc annotations. ''')
with self.tagcontext(tag_name, attrs):
self._write_generic(callable)
self._write_return_type(callable.retval, parent=callable)
- self._write_parameters(callable, callable.parameters)
+ self._write_parameters(callable)
def _write_function(self, func, tag_name='function'):
+ if func.internal_skipped:
+ return
attrs = []
if hasattr(func, 'symbol'):
attrs.append(('c:identifier', func.symbol))
@@ -206,14 +200,16 @@ and/or use gtk-doc annotations. ''')
self._write_generic(return_)
self._write_type(return_.type, function=parent)
- def _write_parameters(self, parent, parameters):
- if not parameters:
+ def _write_parameters(self, callable):
+ if not callable.parameters and callable.instance_parameter is None:
return
with self.tagcontext('parameters'):
- for parameter in parameters:
- self._write_parameter(parent, parameter)
+ if callable.instance_parameter:
+ self._write_parameter(callable, callable.instance_parameter, 'instance-parameter')
+ for parameter in callable.parameters:
+ self._write_parameter(callable, parameter)
- def _write_parameter(self, parent, parameter):
+ def _write_parameter(self, parent, parameter, nodename='parameter'):
attrs = []
if parameter.argname is not None:
attrs.append(('name', parameter.argname))
@@ -236,7 +232,7 @@ and/or use gtk-doc annotations. ''')
attrs.append(('destroy', '%d' % (idx, )))
if parameter.skip:
attrs.append(('skip', '1'))
- with self.tagcontext('parameter', attrs):
+ with self.tagcontext(nodename, attrs):
self._write_generic(parameter)
self._write_type(parameter.type, function=parent)
@@ -296,8 +292,8 @@ and/or use gtk-doc annotations. ''')
attrs.append(('fixed-size', '%d' % (ntype.size, )))
if ntype.length_param_name is not None:
assert function
- attrs.insert(0, ('length', '%d'
- % (function.get_parameter_index(ntype.length_param_name, ))))
+ length = function.get_parameter_index(ntype.length_param_name)
+ attrs.insert(0, ('length', '%d' % (length, )))
with self.tagcontext('array', attrs):
self._write_type(ntype.element_type)
@@ -363,13 +359,17 @@ and/or use gtk-doc annotations. ''')
('c:identifier', member.symbol)]
if member.nick is not None:
attrs.append(('glib:nick', member.nick))
- self.write_tag('member', attrs)
+ with self.tagcontext('member', attrs):
+ self._write_generic(member)
def _write_constant(self, constant):
attrs = [('name', constant.name),
('value', constant.value),
('c:type', constant.ctype)]
+ self._append_version(constant, attrs)
+ self._append_node_generic(constant, attrs)
with self.tagcontext('constant', attrs):
+ self._write_generic(constant)
self._write_type(constant.value_type)
def _write_class(self, node):
@@ -380,9 +380,9 @@ and/or use gtk-doc annotations. ''')
self._append_node_generic(node, attrs)
if isinstance(node, ast.Class):
tag_name = 'class'
- if node.parent is not None:
+ if node.parent_type is not None:
attrs.append(('parent',
- self._type_to_name(node.parent)))
+ self._type_to_name(node.parent_type)))
if node.is_abstract:
attrs.append(('abstract', '1'))
else:
@@ -482,7 +482,7 @@ and/or use gtk-doc annotations. ''')
attrs = list(extra_attrs)
if record.name is not None:
attrs.append(('name', record.name))
- if record.ctype is not None: # the record might be anonymous
+ if record.ctype is not None: # the record might be anonymous
attrs.append(('c:type', record.ctype))
if record.disguised:
attrs.append(('disguised', '1'))
@@ -513,7 +513,7 @@ and/or use gtk-doc annotations. ''')
attrs = []
if union.name is not None:
attrs.append(('name', union.name))
- if union.ctype is not None: # the union might be anonymous
+ if union.ctype is not None: # the union might be anonymous
attrs.append(('c:type', union.ctype))
self._append_version(union, attrs)
self._append_node_generic(union, attrs)
@@ -544,8 +544,7 @@ and/or use gtk-doc annotations. ''')
elif isinstance(field.anonymous_node, ast.Union):
self._write_union(field.anonymous_node)
else:
- raise AssertionError("Unknown field anonymous: %r" \
- % (field.anonymous_node, ))
+ raise AssertionError("Unknown field anonymous: %r" % (field.anonymous_node, ))
else:
attrs = [('name', field.name)]
self._append_node_generic(field, attrs)
@@ -581,4 +580,4 @@ and/or use gtk-doc annotations. ''')
with self.tagcontext('glib:signal', attrs):
self._write_generic(signal)
self._write_return_type(signal.retval)
- self._write_parameters(signal, signal.parameters)
+ self._write_parameters(signal)
diff --git a/giscanner/giscannermodule.c b/giscanner/giscannermodule.c
index 4a854413..182d8438 100644
--- a/giscanner/giscannermodule.c
+++ b/giscanner/giscannermodule.c
@@ -42,8 +42,8 @@
DL_EXPORT(void) init_giscanner(void);
-#define NEW_CLASS(ctype, name, cname) \
-static const PyMethodDef _Py##cname##_methods[]; \
+#define NEW_CLASS(ctype, name, cname, num_methods) \
+static const PyMethodDef _Py##cname##_methods[num_methods]; \
PyTypeObject Py##cname##_Type = { \
PyObject_HEAD_INIT(NULL) \
0, \
@@ -86,9 +86,9 @@ typedef struct {
GISourceScanner *scanner;
} PyGISourceScanner;
-NEW_CLASS (PyGISourceSymbol, "SourceSymbol", GISourceSymbol);
-NEW_CLASS (PyGISourceType, "SourceType", GISourceType);
-NEW_CLASS (PyGISourceScanner, "SourceScanner", GISourceScanner);
+NEW_CLASS (PyGISourceSymbol, "SourceSymbol", GISourceSymbol, 10);
+NEW_CLASS (PyGISourceType, "SourceType", GISourceType, 9);
+NEW_CLASS (PyGISourceScanner, "SourceScanner", GISourceScanner, 8);
/* Symbol */
@@ -414,44 +414,80 @@ pygi_source_scanner_parse_file (PyGISourceScanner *self,
#ifdef _WIN32
/* The file descriptor passed to us is from the C library Python
- * uses. That is msvcr71.dll at least for Python 2.5. This code, at
- * least if compiled with mingw, uses msvcrt.dll, so we cannot use
- * the file descriptor directly. So perform appropriate magic.
+ * 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 later.
+ * 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+ with Visual C++ 2010
+ */
+
+#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>=3 && (_MSC_VER >= 1600 && _MSC_VER < 1700))
+#define MSVC_USE_FD_DIRECTLY 1
+#endif
+#endif
+
+#ifndef MSVC_USE_FD_DIRECTLY
{
- HMODULE msvcr71;
- int (*p__get_osfhandle) (int);
+#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==6
+#define PYTHON_MSVCRXX_DLL "msvcr90.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>=3
+#define PYTHON_MSVCRXX_DLL "msvcr100.dll"
+#else
+#error This Python version not handled
+#endif
+ HMODULE msvcrxx;
+ intptr_t (*p__get_osfhandle) (int);
HANDLE handle;
- msvcr71 = GetModuleHandle ("msvcr71.dll");
- if (!msvcr71)
- {
- g_print ("No msvcr71.dll loaded.\n");
- return NULL;
- }
+ msvcrxx = GetModuleHandle (PYTHON_MSVCRXX_DLL);
+ if (!msvcrxx)
+ {
+ g_print ("No " PYTHON_MSVCRXX_DLL " loaded.\n");
+ return NULL;
+ }
- p__get_osfhandle = GetProcAddress (msvcr71, "_get_osfhandle");
+ p__get_osfhandle = (intptr_t (*) (int)) GetProcAddress (msvcrxx, "_get_osfhandle");
if (!p__get_osfhandle)
- {
- g_print ("No _get_osfhandle found in msvcr71.dll.\n");
- return NULL;
- }
+ {
+ g_print ("No _get_osfhandle found in " PYTHON_MSVCRXX_DLL ".\n");
+ return NULL;
+ }
- handle = p__get_osfhandle (fd);
+ handle = (HANDLE) p__get_osfhandle (fd);
if (!p__get_osfhandle)
- {
- g_print ("Could not get OS handle from msvcr71 fd.\n");
- return NULL;
- }
+ {
+ g_print ("Could not get OS handle from " PYTHON_MSVCRXX_DLL " fd.\n");
+ return NULL;
+ }
- fd = _open_osfhandle (handle, _O_RDONLY);
+ fd = _open_osfhandle ((intptr_t) handle, _O_RDONLY);
if (fd == -1)
- {
- g_print ("Could not open C fd from OS handle.\n");
- return NULL;
- }
+ {
+ g_print ("Could not open C fd from OS handle.\n");
+ return NULL;
+ }
}
#endif
+#endif
fp = fdopen (fd, "r");
if (!fp)
@@ -479,7 +515,7 @@ pygi_source_scanner_lex_filename (PyGISourceScanner *self,
if (!PyArg_ParseTuple (args, "s:SourceScanner.lex_filename", &filename))
return NULL;
- self->scanner->current_filename = g_strdup (filename);
+ self->scanner->current_filename = g_realpath (filename);
if (!gi_source_scanner_lex_filename (self->scanner, filename))
{
g_print ("Something went wrong during lexing.\n");
@@ -659,7 +695,7 @@ pygi_collect_attributes (PyObject *self,
goto out;
}
- if (!PyTuple_Size (tuple) == 2)
+ if (PyTuple_Size (tuple) != 2)
{
PyErr_SetString(PyExc_IndexError,
"attribute item must be a tuple of length 2");
@@ -725,8 +761,6 @@ init_giscanner(void)
PyObject *m, *d;
gboolean is_uninstalled;
- g_type_init ();
-
/* Hack to avoid having to create a fake directory structure; when
* running uninstalled, the module will be in the top builddir,
* with no _giscanner prefix.
diff --git a/giscanner/introspectablepass.py b/giscanner/introspectablepass.py
index 97ccfe71..3d67c73e 100644
--- a/giscanner/introspectablepass.py
+++ b/giscanner/introspectablepass.py
@@ -21,6 +21,7 @@ from . import ast
from . import message
from .annotationparser import TAG_RETURNS
+
class IntrospectablePass(object):
def __init__(self, transformer, blocks):
@@ -58,7 +59,7 @@ class IntrospectablePass(object):
else:
context = "return value: "
if block:
- return_tag = block.get_tag(TAG_RETURNS)
+ return_tag = block.tags.get(TAG_RETURNS)
if return_tag:
position = return_tag.position
message.warn_node(parent, prefix + context + text,
@@ -79,7 +80,7 @@ class IntrospectablePass(object):
if not node.type.resolved:
self._parameter_warning(parent, node,
-"Unresolved type: %r" % (node.type.unresolved_string, ))
+ "Unresolved type: %r" % (node.type.unresolved_string, ))
parent.introspectable = False
return
@@ -87,23 +88,24 @@ class IntrospectablePass(object):
parent.introspectable = False
return
- if (isinstance(node.type, ast.List)
- and node.type.element_type == ast.TYPE_ANY):
+ if (isinstance(node.type, (ast.List, ast.Array))
+ and node.type.element_type == ast.TYPE_ANY):
self._parameter_warning(parent, node, "Missing (element-type) annotation")
parent.introspectable = False
return
if (is_parameter
- and isinstance(target, ast.Callback)
- and not node.type.target_giname in ('GLib.DestroyNotify',
- 'Gio.AsyncReadyCallback')
- and node.scope is None):
- self._parameter_warning(parent, node,
- ("Missing (scope) annotation for callback" +
- " without GDestroyNotify (valid: %s, %s)")
- % (ast.PARAM_SCOPE_CALL, ast.PARAM_SCOPE_ASYNC))
- parent.introspectable = False
- return
+ and isinstance(target, ast.Callback)
+ and not node.type.target_giname in ('GLib.DestroyNotify', 'Gio.AsyncReadyCallback')
+ and node.scope is None):
+ self._parameter_warning(
+ parent,
+ node,
+ "Missing (scope) annotation for callback without "
+ "GDestroyNotify (valid: %s, %s)" % (ast.PARAM_SCOPE_CALL, ast.PARAM_SCOPE_ASYNC))
+
+ parent.introspectable = False
+ return
if is_return and isinstance(target, ast.Callback):
self._parameter_warning(parent, node, "Callbacks cannot be return values; use (skip)")
@@ -111,12 +113,14 @@ class IntrospectablePass(object):
return
if (is_return
- and isinstance(target, (ast.Record, ast.Union))
- and target.get_type is None
- and not target.foreign):
+ and isinstance(target, (ast.Record, ast.Union))
+ and target.get_type is None
+ and not target.foreign):
if node.transfer != ast.PARAM_TRANSFER_NONE:
- self._parameter_warning(parent, node,
-"Invalid non-constant return of bare structure or union; register as boxed type or (skip)")
+ self._parameter_warning(
+ parent, node,
+ "Invalid non-constant return of bare structure or union; "
+ "register as boxed type or (skip)")
parent.introspectable = False
return
@@ -143,10 +147,10 @@ class IntrospectablePass(object):
# These are not introspectable pending us adding
# larger type tags to the typelib (in theory these could
# be 128 bit or larger)
- if typeval.is_equiv((ast.TYPE_LONG_LONG, ast.TYPE_LONG_ULONG,
- ast.TYPE_LONG_DOUBLE)):
+ elif typeval.is_equiv((ast.TYPE_LONG_LONG, ast.TYPE_LONG_ULONG, ast.TYPE_LONG_DOUBLE)):
return False
- return True
+ else:
+ return True
target = self._transformer.lookup_typenode(typeval)
if not target:
return False
@@ -229,8 +233,8 @@ class IntrospectablePass(object):
def _remove_non_reachable_backcompat_copies(self, obj, stack):
if obj.skip:
return False
- if (isinstance(obj, ast.Function)
- and not obj.introspectable
- and obj.moved_to is not None):
- self._namespace.remove(obj)
+ if (isinstance(obj, ast.Function) and obj.moved_to is not None):
+ # remove functions that are not introspectable
+ if not obj.introspectable:
+ obj.internal_skipped = True
return True
diff --git a/giscanner/libtoolimporter.py b/giscanner/libtoolimporter.py
index 20bd0053..0d26b0c5 100644
--- a/giscanner/libtoolimporter.py
+++ b/giscanner/libtoolimporter.py
@@ -72,5 +72,5 @@ class LibtoolImporter(object):
sys.meta_path.append(cls)
@classmethod
- def __exit__(cls, type, value, traceback):
+ def __exit__(cls, exc_type, exc_val, exc_tb):
sys.meta_path.remove(cls)
diff --git a/giscanner/maintransformer.py b/giscanner/maintransformer.py
index d4163fae..11bfb4cb 100644
--- a/giscanner/maintransformer.py
+++ b/giscanner/maintransformer.py
@@ -35,9 +35,8 @@ from .annotationparser import (OPT_ALLOW_NONE, OPT_ARRAY, OPT_ATTRIBUTE,
OPT_ARRAY_LENGTH, OPT_ARRAY_ZERO_TERMINATED,
OPT_CONSTRUCTOR, OPT_METHOD,
OPT_TRANSFER_NONE, OPT_TRANSFER_FLOATING)
-from .annotationparser import AnnotationParser
-from .transformer import TransformerException
-from .utils import to_underscores, to_underscores_noprefix
+from .utils import to_underscores_noprefix
+
class MainTransformer(object):
@@ -50,12 +49,10 @@ class MainTransformer(object):
# Public API
def transform(self):
- contents = list(self._namespace.itervalues())
- if len(contents) == 0:
- message.fatal("""Namespace is empty; likely causes are:
-* Not including .h files to be scanned
-* Broken --identifier-prefix
-""")
+ if not self._namespace.names:
+ message.fatal('Namespace is empty; likely causes are:\n'
+ '* Not including .h files to be scanned\n'
+ '* Broken --identifier-prefix')
# Some initial namespace surgery
self._namespace.walk(self._pass_fixup_hidden_fields)
@@ -109,23 +106,20 @@ class MainTransformer(object):
def _pass_fixup_hidden_fields(self, node, chain):
"""Hide all callbacks starting with _; the typical
-usage is void (*_gtk_reserved1)(void);"""
- if not isinstance(node, (ast.Class, ast.Interface,
- ast.Record, ast.Union)):
- return True
- for field in node.fields:
- if field is None:
- continue
- if (field.name.startswith('_')
+ usage is void (*_gtk_reserved1)(void);"""
+ if isinstance(node, (ast.Class, ast.Interface, ast.Record, ast.Union)):
+ for field in node.fields:
+ if (field
+ and field.name.startswith('_')
and field.anonymous_node is not None
and isinstance(field.anonymous_node, ast.Callback)):
- field.introspectable = False
+ field.introspectable = False
return True
def _get_validate_parameter_name(self, parent, param_name, origin):
try:
param = parent.get_parameter(param_name)
- except ValueError, e:
+ except ValueError:
param = None
if param is None:
if isinstance(origin, ast.Parameter):
@@ -142,7 +136,7 @@ usage is void (*_gtk_reserved1)(void);"""
def _apply_annotation_rename_to(self, node, chain, block):
if not block:
return
- rename_to = block.get_tag(TAG_RENAME_TO)
+ rename_to = block.tags.get(TAG_RENAME_TO)
if not rename_to:
return
rename_to = rename_to.value
@@ -192,7 +186,7 @@ usage is void (*_gtk_reserved1)(void);"""
def _get_annotation_name(self, node):
if isinstance(node, (ast.Class, ast.Interface, ast.Record,
ast.Union, ast.Enum, ast.Bitfield,
- ast.Callback, ast.Alias)):
+ ast.Callback, ast.Alias, ast.Constant)):
if node.ctype is not None:
return node.ctype
elif isinstance(node, ast.Registered) and node.gtype_name is not None:
@@ -211,10 +205,12 @@ usage is void (*_gtk_reserved1)(void);"""
if isinstance(node, ast.Function):
self._apply_annotations_function(node, chain)
if isinstance(node, ast.Callback):
- self._apply_annotations_callable(node, chain, block = self._get_block(node))
+ self._apply_annotations_callable(node, chain, block=self._get_block(node))
if isinstance(node, (ast.Class, ast.Interface, ast.Union, ast.Enum,
ast.Bitfield, ast.Callback)):
self._apply_annotations_annotated(node, self._get_block(node))
+ if isinstance(node, (ast.Enum, ast.Bitfield)):
+ self._apply_annotations_enum_members(node, self._get_block(node))
if isinstance(node, (ast.Class, ast.Interface, ast.Record, ast.Union)):
block = self._get_block(node)
for field in node.fields:
@@ -223,7 +219,7 @@ usage is void (*_gtk_reserved1)(void);"""
section_name = 'SECTION:' + name.lower()
block = self._blocks.get(section_name)
if block:
- node.doc = block.comment
+ node.doc = block.comment if block.comment else ''
if isinstance(node, (ast.Class, ast.Interface)):
for prop in node.properties:
self._apply_annotations_property(node, prop)
@@ -232,13 +228,13 @@ usage is void (*_gtk_reserved1)(void);"""
if isinstance(node, ast.Class):
block = self._get_block(node)
if block:
- tag = block.get_tag(TAG_UNREF_FUNC)
+ tag = block.tags.get(TAG_UNREF_FUNC)
node.unref_func = tag.value if tag else None
- tag = block.get_tag(TAG_REF_FUNC)
+ tag = block.tags.get(TAG_REF_FUNC)
node.ref_func = tag.value if tag else None
- tag = block.get_tag(TAG_SET_VALUE_FUNC)
+ tag = block.tags.get(TAG_SET_VALUE_FUNC)
node.set_value_func = tag.value if tag else None
- tag = block.get_tag(TAG_GET_VALUE_FUNC)
+ tag = block.tags.get(TAG_GET_VALUE_FUNC)
node.get_value_func = tag.value if tag else None
if isinstance(node, ast.Constant):
self._apply_annotations_constant(node)
@@ -262,7 +258,7 @@ usage is void (*_gtk_reserved1)(void);"""
Use resolver() on each identifier, and combiner() on the parts of
each complete type. (top_combiner is used on the top-most type.)"""
bits = re.split(r'([,<>()])', type_str, 1)
- first, sep, rest = [bits[0], '', ''] if (len(bits)==1) else bits
+ first, sep, rest = [bits[0], '', ''] if (len(bits) == 1) else bits
args = [resolver(first)]
if sep == '<' or sep == '(':
lastsep = '>' if (sep == '<') else ')'
@@ -273,9 +269,11 @@ usage is void (*_gtk_reserved1)(void);"""
else:
rest = sep + rest
return top_combiner(*args), rest
+
def resolver(ident):
res = self._transformer.create_type_from_user_string(ident)
return res
+
def combiner(base, *rest):
if not rest:
return base
@@ -286,6 +284,7 @@ usage is void (*_gtk_reserved1)(void);"""
message.warn(
"Too many parameters in type specification %r" % (type_str, ))
return base
+
def top_combiner(base, *rest):
if type_node is not None and isinstance(type_node, ast.Type):
base.is_const = type_node.is_const
@@ -304,7 +303,7 @@ usage is void (*_gtk_reserved1)(void);"""
else:
text = type_str
message.warn_node(parent, "%s: Unknown type: %r" %
- (text, result.ctype), positions=position)
+ (text, type_str), positions=position)
return result
def _resolve_toplevel(self, type_str, type_node=None, node=None, parent=None):
@@ -332,24 +331,23 @@ usage is void (*_gtk_reserved1)(void);"""
return block.position
def _check_array_element_type(self, array, options):
+ array_type = array.array_type
+ element_type = array.element_type
+
# GPtrArrays are allowed to contain non basic types
# (except enums and flags) or basic types that are
# as big as a gpointer
- if array.array_type == ast.Array.GLIB_PTRARRAY and \
- ((array.element_type in ast.BASIC_GIR_TYPES
- and not array.element_type in ast.POINTER_TYPES) or
- isinstance(array.element_type, ast.Enum) or
- isinstance(array.element_type, ast.Bitfield)):
- message.warn("invalid (element-type) for a GPtrArray, "
- "must be a pointer", options.position)
+ if array_type == ast.Array.GLIB_PTRARRAY:
+ if ((element_type in ast.BASIC_GIR_TYPES and not element_type in ast.POINTER_TYPES)
+ or isinstance(element_type, (ast.Enum, ast.Bitfield))):
+ message.warn("invalid (element-type) for a GPtrArray, "
+ "must be a pointer", options.position)
# GByteArrays have (element-type) guint8 by default
- if array.array_type == ast.Array.GLIB_BYTEARRAY:
- if array.element_type == ast.TYPE_ANY:
+ if array_type == ast.Array.GLIB_BYTEARRAY:
+ if element_type == ast.TYPE_ANY:
array.element_type = ast.TYPE_UINT8
- elif not array.element_type in [ast.TYPE_UINT8,
- ast.TYPE_INT8,
- ast.TYPE_CHAR]:
+ elif not element_type in [ast.TYPE_UINT8, ast.TYPE_INT8, ast.TYPE_CHAR]:
message.warn("invalid (element-type) for a GByteArray, "
"must be one of guint8, gint8 or gchar",
options.position)
@@ -459,8 +457,8 @@ usage is void (*_gtk_reserved1)(void);"""
def _get_transfer_default_returntype_basic(self, typeval):
if (typeval.is_equiv(ast.BASIC_GIR_TYPES)
- or typeval.is_const
- or typeval.is_equiv(ast.TYPE_NONE)):
+ or typeval.is_const
+ or typeval.is_equiv(ast.TYPE_NONE)):
return ast.PARAM_TRANSFER_NONE
elif typeval.is_equiv(ast.TYPE_STRING):
# Non-const strings default to FULL
@@ -477,8 +475,8 @@ usage is void (*_gtk_reserved1)(void);"""
assert supercls
if cls is supercls:
return True
- if cls.parent and cls.parent.target_giname != 'GObject.Object':
- return self._is_gi_subclass(cls.parent, supercls_type)
+ if cls.parent_type and cls.parent_type.target_giname != 'GObject.Object':
+ return self._is_gi_subclass(cls.parent_type, supercls_type)
return False
def _get_transfer_default_return(self, parent, node):
@@ -540,8 +538,7 @@ usage is void (*_gtk_reserved1)(void);"""
caller_allocates = False
annotated_direction = None
- if (OPT_INOUT in options or
- OPT_INOUT_ALT in options):
+ if (OPT_INOUT in options or OPT_INOUT_ALT in options):
annotated_direction = ast.PARAM_DIRECTION_INOUT
elif OPT_OUT in options:
subtype = options[OPT_OUT]
@@ -579,9 +576,9 @@ usage is void (*_gtk_reserved1)(void);"""
self._adjust_container_type(parent, node, options)
- if (OPT_ALLOW_NONE in options or
- node.type.target_giname == 'Gio.AsyncReadyCallback' or
- node.type.target_giname == 'Gio.Cancellable'):
+ if (OPT_ALLOW_NONE in options
+ or node.type.target_giname == 'Gio.AsyncReadyCallback'
+ or node.type.target_giname == 'Gio.Cancellable'):
node.allow_none = True
if tag is not None and tag.comment is not None:
@@ -598,19 +595,19 @@ usage is void (*_gtk_reserved1)(void);"""
if block is None:
return
- node.doc = block.comment
+ node.doc = block.comment if block.comment else ''
- since_tag = block.get_tag(TAG_SINCE)
+ since_tag = block.tags.get(TAG_SINCE)
if since_tag is not None:
node.version = since_tag.value
- deprecated_tag = block.get_tag(TAG_DEPRECATED)
+ deprecated_tag = block.tags.get(TAG_DEPRECATED)
if deprecated_tag is not None:
value = deprecated_tag.value
if ': ' in value:
colon = value.find(': ')
version = value[:colon]
- desc = value[colon+2:]
+ desc = value[colon + 2:]
else:
desc = value
version = None
@@ -618,7 +615,7 @@ usage is void (*_gtk_reserved1)(void);"""
if version is not None:
node.deprecated_version = version
- stability_tag = block.get_tag(TAG_STABILITY)
+ stability_tag = block.tags.get(TAG_STABILITY)
if stability_tag is not None:
stability = stability_tag.value.capitalize()
if stability in ["Stable", "Unstable", "Private", "Internal"]:
@@ -627,9 +624,9 @@ usage is void (*_gtk_reserved1)(void);"""
message.warn('unknown value "%s" for Stability tag' % (
stability_tag.value), stability_tag.position)
- annos_tag = block.get_tag(TAG_ATTRIBUTES)
+ annos_tag = block.tags.get(TAG_ATTRIBUTES)
if annos_tag is not None:
- for key, value in annos_tag.options.iteritems():
+ for key, value in annos_tag.options.items():
if value:
node.attributes.append((key, value.one()))
@@ -689,7 +686,7 @@ usage is void (*_gtk_reserved1)(void);"""
def _apply_annotations_return(self, parent, return_, block):
if block:
- tag = block.get_tag(TAG_RETURNS)
+ tag = block.tags.get(TAG_RETURNS)
else:
tag = None
self._apply_annotations_param_ret_common(parent, return_, tag)
@@ -700,7 +697,7 @@ usage is void (*_gtk_reserved1)(void);"""
declparams.add(parent.instance_parameter.argname)
for param in params:
if block:
- tag = block.get_param(param.argname)
+ tag = block.params.get(param.argname)
else:
tag = None
self._apply_annotations_param(parent, param, tag)
@@ -723,10 +720,9 @@ usage is void (*_gtk_reserved1)(void);"""
(param, ) = unused
text = ', should be %r' % (param, )
else:
- text = ', should be one of %s' % (
- ', '.join(repr(p) for p in unused), )
+ text = ', should be one of %s' % (', '.join(repr(p) for p in unused), )
- tag = block.get_param(doc_name)
+ tag = block.params.get(doc_name)
message.warn(
'%s: unknown parameter %r in documentation comment%s' % (
block.name, doc_name, text),
@@ -754,7 +750,7 @@ usage is void (*_gtk_reserved1)(void);"""
def _apply_annotations_field(self, parent, block, field):
if not block:
return
- tag = block.get_param(field.name)
+ tag = block.params.get(field.name)
if not tag:
return
t = tag.options.get(OPT_TYPE)
@@ -772,7 +768,7 @@ usage is void (*_gtk_reserved1)(void);"""
self._apply_annotations_annotated(prop, block)
if not block:
return
- transfer_tag = block.get_tag(TAG_TRANSFER)
+ transfer_tag = block.tags.get(TAG_TRANSFER)
if transfer_tag is not None:
transfer = transfer_tag.value
if transfer == OPT_TRANSFER_FLOATING:
@@ -780,28 +776,36 @@ usage is void (*_gtk_reserved1)(void);"""
prop.transfer = transfer
else:
prop.transfer = self._get_transfer_default(parent, prop)
- type_tag = block.get_tag(TAG_TYPE)
+ type_tag = block.tags.get(TAG_TYPE)
if type_tag:
prop.type = self._resolve_toplevel(type_tag.value, prop.type, prop, parent)
def _apply_annotations_signal(self, parent, signal):
+ names = []
prefix = self._get_annotation_name(parent)
block = self._blocks.get('%s::%s' % (prefix, signal.name))
- self._apply_annotations_annotated(signal, block)
- # We're only attempting to name the signal parameters if
- # the number of parameter tags (@foo) is the same or greater
- # than the number of signal parameters
- if block and len(block.params) > len(signal.parameters):
- names = block.params.items()
- # Resolve real parameter names early, so that in later
- # phase we can refer to them while resolving annotations.
- for i, param in enumerate(signal.parameters):
- param.argname, tag = names[i+1]
- else:
- names = []
+
+ if block:
+ self._apply_annotations_annotated(signal, block)
+
+ # We're only attempting to name the signal parameters if
+ # the number of parameters (@foo) is the same or greater
+ # than the number of signal parameters
+ if len(block.params) > len(signal.parameters):
+ names = block.params.items()
+ # Resolve real parameter names early, so that in later
+ # phase we can refer to them while resolving annotations.
+ for i, param in enumerate(signal.parameters):
+ param.argname, tag = names[i + 1]
+ elif len(signal.parameters) != 0:
+ # Only warn about missing params if there are actually parameters
+ # besides implicit self.
+ message.warn("incorrect number of parameters in comment block, "
+ "parameter annotations will be ignored.", block.position)
+
for i, param in enumerate(signal.parameters):
if names:
- name, tag = names[i+1]
+ name, tag = names[i + 1]
options = getattr(tag, 'options', {})
param_type = options.get(OPT_TYPE)
if param_type:
@@ -813,43 +817,51 @@ usage is void (*_gtk_reserved1)(void);"""
self._apply_annotations_return(signal, signal.retval, block)
def _apply_annotations_constant(self, node):
- block = self._blocks.get(node.ctype)
- if not block:
+ block = self._get_block(node)
+ if block is None:
return
- tag = block.get_tag(TAG_VALUE)
+
+ self._apply_annotations_annotated(node, block)
+
+ tag = block.tags.get(TAG_VALUE)
if tag:
node.value = tag.value
+ def _apply_annotations_enum_members(self, node, block):
+ if block is None:
+ return
+
+ for m in node.members:
+ tag = block.params.get(m.symbol, None)
+ if tag is not None:
+ m.doc = tag.comment
+
def _pass_read_annotations2(self, node, chain):
if isinstance(node, ast.Function):
- self._apply_annotations2_function(node, chain)
+ block = self._blocks.get(node.symbol)
+
+ self._apply_annotation_rename_to(node, chain, block)
+
+ # Handle virtual invokers
+ parent = chain[-1] if chain else None
+ if (block and parent):
+ virtual_annotation = block.tags.get(TAG_VFUNC)
+ if virtual_annotation:
+ invoker_name = virtual_annotation.value
+ matched = False
+ for vfunc in parent.virtual_methods:
+ if vfunc.name == invoker_name:
+ matched = True
+ vfunc.invoker = node.name
+ # Also merge in annotations
+ self._apply_annotations_callable(vfunc, [parent], block)
+ break
+ if not matched:
+ message.warn_node(node,
+ "Virtual slot %r not found for %r annotation" % (invoker_name,
+ TAG_VFUNC))
return True
- def _apply_annotations2_function(self, node, chain):
- block = self._blocks.get(node.symbol)
-
- self._apply_annotation_rename_to(node, chain, block)
-
- # Handle virtual invokers
- parent = chain[-1] if chain else None
- if not (block and parent):
- return
- virtual = block.get_tag(TAG_VFUNC)
- if not virtual:
- return
- invoker_name = virtual.value
- matched = False
- for vfunc in parent.virtual_methods:
- if vfunc.name == invoker_name:
- matched = True
- vfunc.invoker = node.name
- # Also merge in annotations
- self._apply_annotations_callable(vfunc, [parent], block)
- break
- if not matched:
- message.warn_node(node,
- "Virtual slot %r not found for %r annotation" % (invoker_name, TAG_VFUNC))
-
def _resolve_and_filter_type_list(self, typelist):
"""Given a list of Type instances, return a new list of types with
the ones that failed to resolve removed."""
@@ -877,19 +889,18 @@ the ones that failed to resolve removed."""
else:
self._transformer.resolve_type(field.type)
if isinstance(node, (ast.Class, ast.Interface)):
- resolved_parent = None
for parent in node.parent_chain:
try:
self._transformer.resolve_type(parent)
- except ValueError, e:
+ except ValueError:
continue
target = self._transformer.lookup_typenode(parent)
if target:
- node.parent = parent
+ node.parent_type = parent
break
else:
if isinstance(node, ast.Interface):
- node.parent = ast.Type(target_giname='GObject.Object')
+ node.parent_type = ast.Type(target_giname='GObject.Object')
for prop in node.properties:
self._transformer.resolve_type(prop.type)
for sig in node.signals:
@@ -1156,9 +1167,9 @@ method or constructor of some type."""
origin_node = self._get_constructor_class(func, subsymbol)
if origin_node is None:
if func.is_constructor:
- message.warn_node(func,
- "Can't find matching type for constructor; symbol=%r" \
- % (func.symbol, ))
+ message.warn_node(
+ func,
+ "Can't find matching type for constructor; symbol=%r" % (func.symbol, ))
return False
# Some sanity checks; only objects and boxeds can have ctors
@@ -1184,8 +1195,8 @@ method or constructor of some type."""
while parent and (not parent.gi_name == 'GObject.Object'):
if parent == target:
break
- if parent.parent:
- parent = self._transformer.lookup_typenode(parent.parent)
+ if parent.parent_type:
+ parent = self._transformer.lookup_typenode(parent.parent_type)
else:
parent = None
if parent is None:
@@ -1282,7 +1293,7 @@ method or constructor of some type."""
params = node.parameters
# First, do defaults for well-known callback types
- for i, param in enumerate(params):
+ for param in params:
argnode = self._transformer.lookup_typenode(param.type)
if isinstance(argnode, ast.Callback):
if param.type.target_giname in ('Gio.AsyncReadyCallback',
@@ -1291,7 +1302,7 @@ method or constructor of some type."""
param.transfer = ast.PARAM_TRANSFER_NONE
callback_param = None
- for i, param in enumerate(params):
+ for param in params:
argnode = self._transformer.lookup_typenode(param.type)
is_destroynotify = False
if isinstance(argnode, ast.Callback):
diff --git a/giscanner/mallard-C-class.tmpl b/giscanner/mallard-C-class.tmpl
deleted file mode 100644
index 2d739043..00000000
--- a/giscanner/mallard-C-class.tmpl
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<page id="${node.namespace.name}.${node.name}"
- type="guide"
- style="class"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index" group="class"/>
- </info>
- <title>${node.ctype}</title>
-${formatter.format(node.doc)}
-% if node.version:
-<p>Since ${node.version}</p>
-% endif
- <synopsis ui:expanded="no">
- <title>Hierarchy</title>
- <tree>
- <item>
- <code>GObjectObject</code>
- </item>
- </tree>
- </synopsis>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-csrc"
- groups="constructor" style="linklist">
- <title>Constructors</title>
- </links>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-csrc"
- groups="method" style="linklist">
- <title>Methods</title>
- </links>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-csrc"
- groups="function" style="linklist">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="property" style="linklist">
- <title>Properties</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="signal" style="linklist">
- <title>Signals</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last" style="linklist">
- <title>Other</title>
- </links>
-</page>
diff --git a/giscanner/mallard-C-default.tmpl b/giscanner/mallard-C-default.tmpl
deleted file mode 100644
index 577fa566..00000000
--- a/giscanner/mallard-C-default.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<page id="${namespace.name}.${node.name}"
- type="topic"
- style=""
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- </info>
- <title>${namespace.name}.${node.name}</title>
-${formatter.format(node.doc)}
-</page>
diff --git a/giscanner/mallard-C-enum.tmpl b/giscanner/mallard-C-enum.tmpl
deleted file mode 100644
index 20cd0894..00000000
--- a/giscanner/mallard-C-enum.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<page id="${node.namespace.name}.${node.name}"
- type="guide"
- style="enum"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index"/>
- </info>
- <title>${node.namespace.name}.${node.name}</title>
-${formatter.format(node.doc)}
-</page>
diff --git a/giscanner/mallard-C-function.tmpl b/giscanner/mallard-C-function.tmpl
deleted file mode 100644
index 2da4710f..00000000
--- a/giscanner/mallard-C-function.tmpl
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0"?>
-<%
-page_style = 'function'
-if node.is_constructor:
- page_style = 'constructor'
-elif node.is_method:
- page_style = 'method'
-%>
-<page id="${page_id}"
- type="topic"
- style="${page_style}"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
-% if node.parent is not None:
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="${page_style}"/>
-% else:
- <link type="guide" xref="index" group="${page_style}"/>
-% endif
- <api:function>
- <api:returns>
- <api:type>${formatter.format_type(node.retval.type) | x}</api:type>
- </api:returns>
- <api:name>${node.symbol}</api:name>
-% if node.is_method:
- <api:arg>
- <api:type>${node.parent.ctype} *</api:type>
- <api:name>self</api:name>
- </api:arg>
-% endif
-% for arg in node.parameters:
-% if arg.type.ctype == '<varargs>':
- <api:varargs/>
-% else:
- <api:arg>
- <api:type>${formatter.format_type(arg.type) | x}</api:type>
- <api:name>${arg.argname}</api:name>
- </api:arg>
-% endif
-% endfor
- </api:function>
- </info>
- <title>${node.symbol}</title>
-<synopsis><code mime="text/x-csrc">
-${node.retval.type.ctype} ${node.symbol} (\
-% if node.is_method:
-${node.parent.ctype} *self\
-%endif
-% if len(node.parameters) == 0:
-% if not node.is_method:
-void\
-%endif
-);
-% elif node.is_method:
-,
-% endif
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-% if ix != 0:
-${' ' * (len(formatter.format_type(node.retval.type)) + len(node.symbol) + 3)}\
-% endif
-% if arg.type.ctype == '<varargs>':
-...\
-% else:
-${formatter.format_type(arg.type) | x} ${arg.argname}\
-% endif
-% if ix == len(node.parameters) - 1:
-);
-% else:
-,
-%endif
-% endfor
-</code></synopsis>
-${formatter.format(node.doc)}
-
-% if node.parameters or node.retval:
-<table>
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-<tr>
-<td><p>${arg.argname} :</p></td>
-<td>${formatter.format(arg.doc)}</td>
-</tr>
-% endfor
-% if node.retval:
-<tr>
-<td><p>Returns :</p></td>
-<td>${formatter.format(node.retval.doc)}</td>
-</tr>
-% endif
-</table>
-% endif
-% if node.version:
-<p>Since ${node.version}</p>
-% endif
-</page>
diff --git a/giscanner/mallard-C-namespace.tmpl b/giscanner/mallard-C-namespace.tmpl
deleted file mode 100644
index 284ba238..00000000
--- a/giscanner/mallard-C-namespace.tmpl
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<page id="index"
- type="guide"
- style="namespace"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- </info>
- <title>${node.name} Documentation</title>
- <links type="topic" ui:expanded="yes" groups="class" style="linklist">
- <title>Classes</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="function" style="linklist">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last" style="linklist">
- <title>Other</title>
- </links>
-</page>
diff --git a/giscanner/mallard-C-property.tmpl b/giscanner/mallard-C-property.tmpl
deleted file mode 100644
index 2d37ba10..00000000
--- a/giscanner/mallard-C-property.tmpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<page id="${namespace.name}.${node.name}"
- type="topic"
- style="property"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="property"/>
- <title type="link" role="topic">${node.name}</title>
- </info>
- <title>${node.parent.ctype}:${node.name}</title>
-${formatter.format(node.doc)}
-</page>
diff --git a/giscanner/mallard-C-record.tmpl b/giscanner/mallard-C-record.tmpl
deleted file mode 100644
index a173e77a..00000000
--- a/giscanner/mallard-C-record.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<page id="${node.namespace.name}.${node.name}"
- type="guide"
- style="record"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index"/>
- </info>
- <title>${node.namespace.name}${node.name}</title>
-${formatter.format(node.doc)}
-</page>
diff --git a/giscanner/mallard-C-signal.tmpl b/giscanner/mallard-C-signal.tmpl
deleted file mode 100644
index 7aae3ae4..00000000
--- a/giscanner/mallard-C-signal.tmpl
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<page id="${namespace.name}.${node.name}"
- type="topic"
- style="signal"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="signal"/>
- <title type="link" role="topic">${node.name}</title>
- </info>
- <title>${node.parent.ctype}::${node.name}</title>
-${formatter.format(node.doc)}
-</page>
diff --git a/giscanner/mallard-C-vfunc.tmpl b/giscanner/mallard-C-vfunc.tmpl
deleted file mode 100644
index 5b5bbfb1..00000000
--- a/giscanner/mallard-C-vfunc.tmpl
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<page id="${page_id}"
- type="topic"
- style="vfunc"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="vfunc"/>
- </info>
- <title>${node.name}</title>
-<synopsis><code mime="text/x-csrc">
-</code></synopsis>
-${formatter.format(node.doc)}
-
-% if node.parameters or node.retval:
-<table>
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-<tr>
-<td><p>${arg.argname} :</p></td>
-<td>${formatter.format(arg.doc)}</td>
-</tr>
-% endfor
-% if node.retval:
-<tr>
-<td><p>Returns :</p></td>
-<td>${formatter.format(node.retval.doc)}</td>
-</tr>
-% endif
-</table>
-% endif
-% if node.version:
-<p>Since ${node.version}</p>
-% endif
-</page>
diff --git a/giscanner/mallard-Python-class.tmpl b/giscanner/mallard-Python-class.tmpl
deleted file mode 100644
index 04e5fc72..00000000
--- a/giscanner/mallard-Python-class.tmpl
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<page id="${node.namespace.name}.${node.name}"
- type="guide"
- style="class"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index" group="class"/>
- </info>
- <title>${namespace.name}.${node.name}</title>
-${formatter.format(node.doc)}
-
- <synopsis><code>
-from gi.repository import ${namespace.name}
-
-${formatter.to_underscores(node.name).lower()} = ${namespace.name}.${node.name}(\
-% for property_, ix in zip(node.properties, range(len(node.properties))):
-% if property_.construct or property_.construct_only or property_.writable:
-<link xref='${namespace.name}.${node.name}-${property_.name}'>${property_.name.replace('-', '_')}</link>=value\
-% if ix != len(node.properties) - 1:
-, \
-% endif
-% endif
-% endfor
-)\
- </code></synopsis>
-
-% if node.version:
-<p>Since ${node.version}</p>
-% endif
- <synopsis>
- <title>Hierarchy</title>
- <tree>
-% for class_ in formatter.get_class_hierarchy(node):
- <item>
- <code>${class_.namespace.name}.${class_.name}</code>
-% endfor
-% for class_ in formatter.get_class_hierarchy(node):
- </item>
-% endfor
- </tree>
- </synopsis>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-python"
- groups="method" style="linklist">
- <title>Methods</title>
- </links>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-python"
- groups="function" style="linklist">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="property" style="linklist">
- <title>Properties</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="signal" style="linklist">
- <title>Signals</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="vfunc" style="linklist">
- <title>Virtual functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last" style="linklist">
- <title>Other</title>
- </links>
-</page>
diff --git a/giscanner/mallard-Python-default.tmpl b/giscanner/mallard-Python-default.tmpl
deleted file mode 100644
index 683adf6a..00000000
--- a/giscanner/mallard-Python-default.tmpl
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0"?>
-<page id="${page_id}"
- type="topic"
- style=""
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- </info>
- <title>${namespace.name}.${node.name}</title>
-${formatter.format(node.doc)}
-</page>
diff --git a/giscanner/mallard-Python-enum.tmpl b/giscanner/mallard-Python-enum.tmpl
deleted file mode 100644
index fd6ca0fb..00000000
--- a/giscanner/mallard-Python-enum.tmpl
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0"?>
-<page id="${node.namespace.name}.${node.name}"
- type="guide"
- style="enum"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index"/>
- </info>
- <title>${node.namespace.name}.${node.name}</title>
- ${formatter.format(node.doc)}
-% if node.members:
-<table>
-% for member, ix in zip(node.members, range(len(node.members))):
-<tr>
-<td><p>${node.name}.${member.name.upper()} :</p></td>
-<td>${formatter.format(member.doc)}</td>
-</tr>
-% endfor
-</table>
-% endif
-
-</page>
diff --git a/giscanner/mallard-Python-function.tmpl b/giscanner/mallard-Python-function.tmpl
deleted file mode 100644
index 7aa25e8e..00000000
--- a/giscanner/mallard-Python-function.tmpl
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0"?>
-<%
-page_style = 'function'
-if node.is_constructor:
- page_style = 'constructor'
-elif node.is_method:
- page_style = 'method'
-%>
-<page id="${page_id}"
- type="topic"
- style="${page_style}"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
-% if node.parent is not None:
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="${page_style}"/>
-% else:
- <link type="guide" xref="index" group="${page_style}"/>
-% endif
- <api:function>
- <api:returns>
- <api:type>${formatter.format_type(node.retval.type) | x}</api:type>
- </api:returns>
- <api:name>${node.symbol}</api:name>
-% if node.is_method:
- <api:arg>
- <api:type>${node.parent.ctype} *</api:type>
- <api:name>self</api:name>
- </api:arg>
-% endif
-% for arg in node.parameters:
-% if arg.type.ctype == '<varargs>':
- <api:varargs/>
-% else:
- <api:arg>
- <api:type>${formatter.format_type(arg.type) | x}</api:type>
- <api:name>${arg.argname}</api:name>
- </api:arg>
-% endif
-% endfor
- </api:function>
- </info>
- <title>${node.name}</title>
-<synopsis><code mime="text/x-python">
-% if len(node.parameters) != 0:
-@accepts(\
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-${formatter.format_type(arg.type) | x}\
-% if ix != len(node.parameters) - 1:
-, \
-%endif
-% endfor
-)
-% endif
-@returns(${formatter.format_type(node.retval.type) | x})
-def \
-${node.name}(\
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-${arg.argname}\
-% if ix != len(node.parameters) - 1:
-, \
-%endif
-% endfor
-)
-</code></synopsis>
-${formatter.format(node.doc)}
-
-% if node.parameters or node.retval:
-<table>
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-<tr>
-<td><p>${arg.argname} :</p></td>
-<td>${formatter.format(arg.doc)}</td>
-</tr>
-% endfor
-% if node.retval and node.retval.type.ctype != 'void':
-<tr>
-<td><p>Returns :</p></td>
-<td>${formatter.format(node.retval.doc)}</td>
-</tr>
-% endif
-</table>
-% endif
-% if node.version:
-<p>Since ${node.version}</p>
-% endif
-</page>
diff --git a/giscanner/mallard-Python-namespace.tmpl b/giscanner/mallard-Python-namespace.tmpl
deleted file mode 100644
index 935cd440..00000000
--- a/giscanner/mallard-Python-namespace.tmpl
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<page id="index"
- type="guide"
- style="namespace"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- </info>
- <title>${node.name} Documentation</title>
- <links type="topic" ui:expanded="yes" groups="class">
- <title>Classes</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="function">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last">
- <title>Other</title>
- </links>
-</page>
diff --git a/giscanner/mallard-Python-property.tmpl b/giscanner/mallard-Python-property.tmpl
deleted file mode 100644
index c4d2229e..00000000
--- a/giscanner/mallard-Python-property.tmpl
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<page id="${namespace.name}.${node.parent.name}-${node.name}"
- type="topic"
- style="property"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="property"/>
- <title type="link" role="topic">${node.name}</title>
- </info>
- <title>${namespace.name}.${node.parent.name}:${node.name}</title>
-<synopsis><code mime="text/x-python">
-"${node.name}" ${formatter.format_type(node.type)} : ${formatter.format_property_flags(node)}
-</code></synopsis>
-${formatter.format(node.doc)}
-</page>
diff --git a/giscanner/mallard-Python-record.tmpl b/giscanner/mallard-Python-record.tmpl
deleted file mode 100644
index 1b00e3be..00000000
--- a/giscanner/mallard-Python-record.tmpl
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<page id="${node.namespace.name}.${node.name}"
- type="guide"
- style="record"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index"/>
- </info>
- <title>${node.namespace.name}${node.name}</title>
- <p>${node.doc}</p>
-</page>
diff --git a/giscanner/mallard-Python-signal.tmpl b/giscanner/mallard-Python-signal.tmpl
deleted file mode 100644
index fed0659f..00000000
--- a/giscanner/mallard-Python-signal.tmpl
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0"?>
-<page id="${namespace.name}.${node.parent.name}-${node.name}"
- type="topic"
- style="signal"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="signal"/>
- <title type="link" role="topic">${node.name}</title>
- </info>
- <title>${namespace.name}.${node.parent.name}::${node.name}</title>
-<synopsis><code mime="text/x-python">
-def callback(${formatter.to_underscores(node.parent.name).lower()}, \
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-${arg.argname}, \
-% endfor
-user_param1, ...)
-</code></synopsis>
-${formatter.format(node.doc)}
-
-<table>
-<tr>
-<td><p>${formatter.to_underscores(node.parent.name).lower()} :</p></td>
-<td><p>instance of ${namespace.name}.${node.parent.name} that is emitting the signal</p></td>
-</tr>
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-<tr>
-<td><p>${arg.argname} :</p></td>
-<td>${formatter.format(arg.doc)}</td>
-</tr>
-% endfor
-<tr>
-<td><p>user_param1 :</p></td>
-<td><p>first user parameter (if any) specified with the connect() method</p></td>
-</tr>
-<tr>
-<td><p>... :</p></td>
-<td><p>additional user parameters (if any)</p></td>
-</tr>
-% if node.retval and \
- node.retval.type.ctype != 'void' and \
- node.retval.type.ctype is not None:
-<tr>
-<td><p>Returns :</p></td>
-<td>${node.retval.type.ctype} ${formatter.format(node.retval.doc)}</td>
-</tr>
-% endif
-</table>
-% if node.version:
-<p>Since ${node.version}</p>
-% endif
-</page>
diff --git a/giscanner/mallard-Python-vfunc.tmpl b/giscanner/mallard-Python-vfunc.tmpl
deleted file mode 100644
index 7e95bc85..00000000
--- a/giscanner/mallard-Python-vfunc.tmpl
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0"?>
-<page id="${page_id}"
- type="topic"
- style="vfunc"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="${namespace.name}.${node.parent.name}" group="vfunc"/>
- <title type="link" role="topic">${node.name}</title>
- </info>
- <title>${namespace.name}.${node.parent.name}.${node.name}</title>
-<synopsis><code mime="text/x-python">
-% if len(node.parameters) != 0:
-@accepts(\
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-${formatter.format_type(arg.type) | x}\
-% if ix != len(node.parameters) - 1:
-, \
-%endif
-% endfor
-)
-% endif
-@returns(${formatter.format_type(node.retval.type) | x})
-def \
-do_${node.name}(self, \
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-${arg.argname}\
-% if ix != len(node.parameters) - 1:
-, \
-%endif
-% endfor
-):
-</code></synopsis>
-${formatter.format(node.doc)}
-
-% if node.parameters or node.retval:
-<table>
-% for arg, ix in zip(node.parameters, range(len(node.parameters))):
-<tr>
-<td><p>${arg.argname} :</p></td>
-<td>${formatter.format(arg.doc)}</td>
-</tr>
-% endfor
-% if node.retval and node.retval.type.ctype != 'void':
-<tr>
-<td><p>Returns :</p></td>
-<td>${formatter.format(node.retval.doc)}</td>
-</tr>
-% endif
-</table>
-% endif
-% if node.version:
-<p>Since ${node.version}</p>
-% endif
-</page>
diff --git a/giscanner/mallardwriter.py b/giscanner/mallardwriter.py
deleted file mode 100644
index 9c833843..00000000
--- a/giscanner/mallardwriter.py
+++ /dev/null
@@ -1,392 +0,0 @@
-#!/usr/bin/env python
-# -*- Mode: Python -*-
-# GObject-Introspection - a framework for introspecting GObject libraries
-# Copyright (C) 2010 Zach Goldberg
-# Copyright (C) 2011 Johan Dahlin
-# Copyright (C) 2011 Shaun McCance
-#
-# 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 the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301, USA.
-#
-
-import os
-import re
-import tempfile
-
-from xml.sax import saxutils
-from mako.template import Template
-
-from . import ast
-from .utils import to_underscores
-
-def make_page_id(namespace, node):
- if isinstance(node, ast.Namespace):
- return 'index'
- elif isinstance(node, (ast.Class, ast.Interface)):
- return '%s.%s' % (namespace.name, node.name)
- elif isinstance(node, ast.Record):
- return '%s.%s' % (namespace.name, node.name)
- elif isinstance(node, ast.Function):
- if node.parent is not None:
- return '%s.%s.%s' % (namespace.name, node.parent.name, node.name)
- else:
- return '%s.%s' % (namespace.name, node.name)
- elif isinstance(node, ast.Enum):
- return '%s.%s' % (namespace.name, node.name)
- elif isinstance(node, ast.Property) and node.parent is not None:
- return '%s.%s-%s' % (namespace.name, node.parent.name, node.name)
- elif isinstance(node, ast.Signal) and node.parent is not None:
- return '%s.%s-%s' % (namespace.name, node.parent.name, node.name)
- elif isinstance(node, ast.VFunction) and node.parent is not None:
- return '%s.%s-%s' % (namespace.name, node.parent.name, node.name)
- else:
- return '%s.%s' % (namespace.name, node.name)
-
-def make_template_name(node, language):
- if isinstance(node, ast.Namespace):
- node_kind = 'namespace'
- elif isinstance(node, (ast.Class, ast.Interface)):
- node_kind = 'class'
- elif isinstance(node, ast.Record):
- node_kind = 'record'
- elif isinstance(node, ast.Function):
- node_kind = 'function'
- elif isinstance(node, ast.Enum):
- node_kind = 'enum'
- elif isinstance(node, ast.Property) and node.parent is not None:
- node_kind = 'property'
- elif isinstance(node, ast.Signal) and node.parent is not None:
- node_kind = 'signal'
- elif isinstance(node, ast.VFunction) and node.parent is not None:
- node_kind = 'vfunc'
- else:
- node_kind = 'default'
-
- return 'mallard-%s-%s.tmpl' % (language, node_kind)
-
-class TemplatedScanner(object):
- def __init__(self, specs):
- self.specs = self.unmangle_specs(specs)
- self.regex = self.make_regex(self.specs)
-
- def unmangle_specs(self, specs):
- mangled = re.compile('<<([a-zA-Z_:]+)>>')
- specdict = dict((name.lstrip('!'), spec) for name, spec in specs)
-
- def unmangle(spec, name=None):
- def replace_func(match):
- child_spec_name = match.group(1)
-
- if ':' in child_spec_name:
- pattern_name, child_spec_name = child_spec_name.split(':', 1)
- else:
- pattern_name = None
-
- child_spec = specdict[child_spec_name]
- # Force all child specs of this one to be unnamed
- unmangled = unmangle(child_spec, None)
- if pattern_name and name:
- return '(?P<%s_%s>%s)' % (name, pattern_name, unmangled)
- else:
- return unmangled
-
- return mangled.sub(replace_func, spec)
-
- return [(name, unmangle(spec, name)) for name, spec in specs]
-
- def make_regex(self, specs):
- regex = '|'.join('(?P<%s>%s)' % (name, spec) for name, spec in specs
- if not name.startswith('!'))
- return re.compile(regex)
-
- def get_properties(self, name, match):
- groupdict = match.groupdict()
- properties = {name: groupdict.pop(name)}
- name = name + "_"
- for group, value in groupdict.iteritems():
- if group.startswith(name):
- key = group[len(name):]
- properties[key] = value
- return properties
-
- def scan(self, text):
- pos = 0
- while True:
- match = self.regex.search(text, pos)
- if match is None:
- break
-
- start = match.start()
- if start > pos:
- yield ('other', text[pos:start], None)
-
- pos = match.end()
- name = match.lastgroup
- yield (name, match.group(0), self.get_properties(name, match))
-
- if pos < len(text):
- yield ('other', text[pos:], None)
-
-class DocstringScanner(TemplatedScanner):
- def __init__(self):
- specs = [
- ('!alpha', r'[a-zA-Z0-9_]+'),
- ('!alpha_dash', r'[a-zA-Z0-9_-]+'),
- ('property', r'#<<type_name:alpha>>:(<<property_name:alpha_dash>>)'),
- ('signal', r'#<<type_name:alpha>>::(<<signal_name:alpha_dash>>)'),
- ('type_name', r'#(<<type_name:alpha>>)'),
- ('fundamental', r'%(<<fundamental:alpha>>)'),
- ('function_call', r'<<symbol_name:alpha>>\(\)'),
- ]
-
- super(DocstringScanner, self).__init__(specs)
-
-class MallardFormatter(object):
- def __init__(self, transformer):
- self._transformer = transformer
- self._scanner = DocstringScanner()
-
- def escape(self, text):
- return saxutils.escape(text)
-
- def format(self, doc):
- if doc is None:
- return ''
-
- result = ''
- for para in doc.split('\n\n'):
- result += '<p>'
- result += self.format_inline(para)
- result += '</p>'
- return result
-
- def _process_other(self, namespace, match, props):
- return self.escape(match)
-
- def _find_thing(self, list_, name):
- for item in list_:
- if item.name == name:
- return item
- raise KeyError("Could not find %s" % (name, ))
-
- def _process_property(self, namespace, match, props):
- type_node = namespace.get_by_ctype(props['type_name'])
- if type_node is None:
- return match
-
- try:
- node = self._find_thing(type_node.properties, props['property_name'])
- except (AttributeError, KeyError), e:
- return match
-
- xref_name = "%s.%s:%s" % (namespace.name, type_node.name, node.name)
- return '<link xref="%s">%s</link>' % (make_page_id(namespace, node), xref_name)
-
- def _process_signal(self, namespace, match, props):
- type_node = namespace.get_by_ctype(props['type_name'])
- if type_node is None:
- return match
-
- try:
- node = self._find_thing(type_node.signals, props['signal_name'])
- except (AttributeError, KeyError), e:
- return match
-
- xref_name = "%s.%s::%s" % (namespace.name, type_node.name, node.name)
- return '<link xref="%s">%s</link>' % (make_page_id(namespace, node), xref_name)
-
- def _process_type_name(self, namespace, match, props):
- node = namespace.get_by_ctype(props['type_name'])
- if node is None:
- return match
- xref_name = "%s.%s" % (namespace.name, node.name)
- return '<link xref="%s">%s</link>' % (make_page_id(namespace, node), xref_name)
-
- def _process_function_call(self, namespace, match, props):
- node = namespace.get_by_symbol(props['symbol_name'])
- if node is None:
- return match
-
- return '<link xref="%s">%s</link>' % (make_page_id(namespace, node),
- self.format_function_name(node))
-
- def _process_fundamental(self, namespace, match, props):
- return self.fundamentals.get(props['fundamental'], match)
-
- def _process_token(self, tok):
- namespace = self._transformer.namespace
-
- kind, match, props = tok
-
- dispatch = {
- 'other': self._process_other,
- 'property': self._process_property,
- 'signal': self._process_signal,
- 'type_name': self._process_type_name,
- 'function_call': self._process_function_call,
- 'fundamental': self._process_fundamental,
- }
-
- return dispatch[kind](namespace, match, props)
-
- def format_inline(self, para):
- tokens = self._scanner.scan(para)
- words = [self._process_token(tok) for tok in tokens]
- return ''.join(words)
-
- def format_function_name(self, func):
- raise NotImplementedError
-
- def format_type(self, type_):
- raise NotImplementedError
-
- def format_property_flags(self, property_):
- flags = []
- if property_.readable:
- flags.append("Read")
- if property_.writable:
- flags.append("Write")
- if property_.construct:
- flags.append("Construct")
- if property_.construct_only:
- flags.append("Construct Only")
-
- return " / ".join(flags)
-
- def to_underscores(self, string):
- return to_underscores(string)
-
- def get_class_hierarchy(self, node):
- parent_chain = [node]
-
- while node.parent:
- node = self._transformer.lookup_giname(str(node.parent))
- parent_chain.append(node)
-
- parent_chain.reverse()
- return parent_chain
-
-class MallardFormatterC(MallardFormatter):
- language = "C"
-
- fundamentals = {
- "TRUE": "TRUE",
- "FALSE": "FALSE",
- "NULL": "NULL",
- }
-
- def format_type(self, type_):
- if isinstance(type_, ast.Array):
- return self.format_type(type_.element_type) + '*'
- elif type_.ctype is not None:
- return type_.ctype
- else:
- return type_.target_fundamental
-
- def format_function_name(self, func):
- return func.symbol
-
-class MallardFormatterPython(MallardFormatter):
- language = "Python"
-
- fundamentals = {
- "TRUE": "True",
- "FALSE": "False",
- "NULL": "None",
- }
-
- def format_type(self, type_):
- if isinstance(type_, ast.Array):
- return '[' + self.format_type(type_.element_type) + ']'
- elif isinstance(type_, ast.Map):
- return '{%s: %s}' % (self.format_type(type_.key_type),
- self.format_type(type_.value_type))
- elif type_.target_giname is not None:
- return type_.target_giname
- else:
- return type_.target_fundamental
-
- def format_function_name(self, func):
- if func.parent is not None:
- return "%s.%s" % (func.parent.name, func.name)
- else:
- return func.name
-
-LANGUAGES = {
- "c": MallardFormatterC,
- "python": MallardFormatterPython,
-}
-
-class MallardWriter(object):
- def __init__(self, transformer, language):
- self._transformer = transformer
-
- try:
- formatter_class = LANGUAGES[language.lower()]
- except KeyError:
- raise SystemExit("Unsupported language: %s" % (language, ))
-
- self._formatter = formatter_class(self._transformer)
- self._language = self._formatter.language
-
- def write(self, output):
- nodes = [self._transformer.namespace]
- for node in self._transformer.namespace.itervalues():
- if isinstance(node, ast.Function) and node.moved_to is not None:
- continue
- if getattr(node, 'disguised', False):
- continue
- if isinstance(node, ast.Record) and \
- self._language == 'Python' and \
- node.is_gtype_struct_for is not None:
- continue
- nodes.append(node)
- if isinstance(node, (ast.Class, ast.Interface, ast.Record)):
- nodes += getattr(node, 'methods', [])
- nodes += getattr(node, 'static_methods', [])
- nodes += getattr(node, 'virtual_methods', [])
- nodes += getattr(node, 'properties', [])
- nodes += getattr(node, 'signals', [])
- if self._language == 'C':
- nodes += getattr(node, 'constructors', [])
- for node in nodes:
- self._render_node(node, output)
-
- def _render_node(self, node, output):
- namespace = self._transformer.namespace
-
- if 'UNINSTALLED_INTROSPECTION_SRCDIR' in os.environ:
- top_srcdir = os.environ['UNINSTALLED_INTROSPECTION_SRCDIR']
- template_dir = os.path.join(top_srcdir, 'giscanner')
- else:
- template_dir = os.path.dirname(__file__)
-
- template_name = make_template_name(node, self._language)
- page_id = make_page_id(namespace, node)
-
- file_name = os.path.join(template_dir, template_name)
- file_name = os.path.abspath(file_name)
- template = Template(filename=file_name, output_encoding='utf-8',
- module_directory=tempfile.gettempdir())
- result = template.render(namespace=namespace,
- node=node,
- page_id=page_id,
- formatter=self._formatter)
-
- output_file_name = os.path.join(os.path.abspath(output),
- page_id + '.page')
- fp = open(output_file_name, 'w')
- fp.write(result)
- fp.close()
diff --git a/giscanner/message.py b/giscanner/message.py
index 8a948cd3..3a330afe 100644
--- a/giscanner/message.py
+++ b/giscanner/message.py
@@ -61,7 +61,7 @@ class Position(object):
return '%s:' % (filename, )
def offset(self, offset):
- return Position(self.filename, self.line+offset, self.column)
+ return Position(self.filename, self.line + offset, self.column)
class MessageLogger(object):
@@ -119,16 +119,14 @@ If the warning is related to a ast.Node type, see log_node()."""
elif log_type == FATAL:
error_type = "Fatal"
if prefix:
- text = (
-'''%s: %s: %s: %s: %s\n''' % (last_position, error_type, self._namespace.name,
- prefix, text))
+ text = ('%s: %s: %s: %s: %s\n' % (last_position, error_type,
+ self._namespace.name, prefix, text))
else:
if self._namespace:
- text = (
-'''%s: %s: %s: %s\n''' % (last_position, error_type, self._namespace.name, text))
+ text = ('%s: %s: %s: %s\n' % (last_position, error_type,
+ self._namespace.name, text))
else:
- text = (
-'''%s: %s: %s\n''' % (last_position, error_type, text))
+ text = ('%s: %s: %s\n' % (last_position, error_type, text))
self._output.write(text)
if log_type == FATAL:
@@ -169,17 +167,21 @@ def log_node(log_type, node, text, context=None, positions=None):
ml = MessageLogger.get()
ml.log_node(log_type, node, text, context=context, positions=positions)
+
def warn(text, positions=None, prefix=None):
ml = MessageLogger.get()
ml.log(WARNING, text, positions, prefix)
+
def warn_node(node, text, context=None, positions=None):
log_node(WARNING, node, text, context=context, positions=positions)
+
def warn_symbol(symbol, text):
ml = MessageLogger.get()
ml.log_symbol(WARNING, symbol, text)
+
def fatal(text, positions=None, prefix=None):
ml = MessageLogger.get()
ml.log(FATAL, text, positions, prefix)
diff --git a/giscanner/odict.py b/giscanner/odict.py
deleted file mode 100644
index df703cbb..00000000
--- a/giscanner/odict.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# -*- Mode: Python -*-
-# GObject-Introspection - a framework for introspecting GObject libraries
-# Copyright (C) 2008 Johan Dahlin
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the
-# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-# Boston, MA 02111-1307, USA.
-#
-
-"""odict - an ordered dictionary"""
-
-from UserDict import DictMixin
-
-
-class odict(DictMixin):
-
- def __init__(self):
- self._items = {}
- self._keys = []
-
- def __setitem__(self, key, value):
- if key not in self._items:
- self._keys.append(key)
- self._items[key] = value
-
- def __getitem__(self, key):
- return self._items[key]
-
- def __delitem__(self, key):
- del self._items[key]
- self._keys.remove(key)
-
- def keys(self):
- return self._keys[:]
diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l
index a783ec06..554e2da7 100644
--- a/giscanner/scannerlexer.l
+++ b/giscanner/scannerlexer.l
@@ -46,6 +46,7 @@ char linebuf[2000];
extern int yylex (GISourceScanner *scanner);
#define YY_DECL int yylex (GISourceScanner *scanner)
static int yywrap (void);
+static void parse_gtk_doc_comment (GISourceScanner *scanner);
static void parse_comment (GISourceScanner *scanner);
static void parse_trigraph (GISourceScanner *scanner);
static void process_linemarks (GISourceScanner *scanner);
@@ -71,8 +72,10 @@ stringtext ([^\\\"])|(\\.)
++lineno;
}
"\\\n" { ++lineno; }
+
[\t\f\v\r ]+ { /* Ignore whitespace. */ }
+"/**" { parse_gtk_doc_comment(scanner); }
"/*" { parse_comment(scanner); }
"/*"[\t ]?<[\t ,=A-Za-z0-9_]+>[\t ]?"*/" { parse_trigraph(scanner); }
"//".* { /* Ignore C++ style comments. */ }
@@ -134,6 +137,8 @@ stringtext ([^\\\"])|(\\.)
"," { return ','; }
"->" { return ARROW; }
+"__asm"[\t\f\v\r ]+"volatile" { if (!parse_ignored_macro()) REJECT; }
+"__asm__"[\t\f\v\r ]+"volatile" { if (!parse_ignored_macro()) REJECT; }
"__asm" { if (!parse_ignored_macro()) REJECT; }
"__asm__" { if (!parse_ignored_macro()) REJECT; }
"__attribute__" { if (!parse_ignored_macro()) REJECT; }
@@ -145,6 +150,8 @@ stringtext ([^\\\"])|(\\.)
"__signed__" { return SIGNED; }
"__restrict" { return RESTRICT; }
"__typeof" { if (!parse_ignored_macro()) REJECT; }
+"__volatile" { if (!parse_ignored_macro()) REJECT; }
+"__volatile__" { if (!parse_ignored_macro()) REJECT; }
"_Bool" { return BOOL; }
"G_GINT64_CONSTANT" { return INTL_CONST; }
@@ -170,6 +177,10 @@ stringtext ([^\\\"])|(\\.)
"if" { return IF; }
"inline" { return INLINE; }
"int" { return INT; }
+"__uint128_t" { return INT; }
+"__int128_t" { return INT; }
+"__uint128" { return INT; }
+"__int128" { return INT; }
"long" { return LONG; }
"register" { return REGISTER; }
"restrict" { return RESTRICT; }
@@ -212,9 +223,8 @@ yywrap (void)
return 1;
}
-
static void
-parse_comment (GISourceScanner *scanner)
+parse_gtk_doc_comment (GISourceScanner *scanner)
{
GString *string = NULL;
int c1, c2;
@@ -227,7 +237,7 @@ parse_comment (GISourceScanner *scanner)
(GCompareFunc)g_strcmp0)) {
skip = TRUE;
} else {
- string = g_string_new ("/*");
+ string = g_string_new (yytext);
}
c1 = input();
@@ -262,6 +272,26 @@ parse_comment (GISourceScanner *scanner)
comment);
}
+static void
+parse_comment (GISourceScanner *scanner)
+{
+ int c1, c2;
+
+ c1 = input();
+ c2 = input();
+
+ while (c2 != EOF && !(c1 == '*' && c2 == '/'))
+ {
+ if (c1 == '\n')
+ lineno++;
+
+ c1 = c2;
+ c2 = input();
+ }
+
+ return;
+}
+
static int
check_identifier (GISourceScanner *scanner,
const char *s)
diff --git a/giscanner/scannermain.py b/giscanner/scannermain.py
index 794cede3..00dc30d6 100755
--- a/giscanner/scannermain.py
+++ b/giscanner/scannermain.py
@@ -38,12 +38,30 @@ from giscanner.girparser import GIRParser
from giscanner.girwriter import GIRWriter
from giscanner.maintransformer import MainTransformer
from giscanner.shlibs import resolve_shlibs
-from giscanner.sourcescanner import SourceScanner
+from giscanner.sourcescanner import SourceScanner, ALL_EXTS
from giscanner.transformer import Transformer
from . import utils
+
+def process_cflags_begin(option, opt, value, parser):
+ cflags = getattr(parser.values, option.dest)
+ while len(parser.rargs) > 0 and parser.rargs[0] != '--cflags-end':
+ cflags.append(parser.rargs.pop(0))
+
+
+def process_cflags_end(option, opt, value, parser):
+ pass
+
+
def get_preprocessor_option_group(parser):
group = optparse.OptionGroup(parser, "Preprocessor options")
+ group.add_option("", "--cflags-begin",
+ help="Start preprocessor/compiler flags",
+ dest="cflags", default=[],
+ action="callback", callback=process_cflags_begin)
+ group.add_option("", "--cflags-end",
+ help="End preprocessor/compiler flags",
+ action="callback", callback=process_cflags_end)
group.add_option("-I", help="Pre-processor include file",
action="append", dest="cpp_includes",
default=[])
@@ -56,6 +74,7 @@ def get_preprocessor_option_group(parser):
group.add_option("-p", dest="", help="Ignored")
return group
+
def get_windows_option_group(parser):
group = optparse.OptionGroup(parser, "Machine Dependent Options")
group.add_option("-m", help="some machine dependent option",
@@ -64,13 +83,13 @@ def get_windows_option_group(parser):
return group
+
def _get_option_parser():
parser = optparse.OptionParser('%prog [options] sources')
parser.add_option('', "--quiet",
action="store_true", dest="quiet",
default=False,
- help="If passed, do not print details of normal" \
- + " operation")
+ help="If passed, do not print details of normal operation")
parser.add_option("", "--format",
action="store", dest="format",
default="gir",
@@ -158,6 +177,9 @@ match the namespace prefix.""")
parser.add_option("", "--c-include",
action="append", dest="c_includes", default=[],
help="headers which should be included in C programs")
+ parser.add_option("", "--filelist",
+ action="store", dest="filelist", default=[],
+ help="file containing headers and sources to be scanned")
group = get_preprocessor_option_group(parser)
parser.add_option_group(group)
@@ -186,17 +208,15 @@ match the namespace prefix.""")
def _error(msg):
raise SystemExit('ERROR: %s' % (msg, ))
+
def passthrough_gir(path, f):
parser = GIRParser()
parser.parse(path)
- writer = GIRWriter(parser.get_namespace(),
- parser.get_shared_libraries(),
- parser.get_includes(),
- parser.get_pkgconfig_packages(),
- parser.get_c_includes())
+ writer = GIRWriter(parser.get_namespace())
f.write(writer.get_xml())
+
def test_codegen(optstring):
(namespace, out_h_filename, out_c_filename) = optstring.split(',')
if namespace == 'Everything':
@@ -207,6 +227,7 @@ def test_codegen(optstring):
_error("Invaild namespace %r" % (namespace, ))
return 0
+
def process_options(output, allowed_flags):
for option in output.split():
for flag in allowed_flags:
@@ -215,6 +236,7 @@ def process_options(output, allowed_flags):
yield option
break
+
def process_packages(options, packages):
args = ['pkg-config', '--cflags']
args.extend(packages)
@@ -234,15 +256,13 @@ def process_packages(options, packages):
options.cpp_defines.extend(pkg_options.cpp_defines)
options.cpp_undefines.extend(pkg_options.cpp_undefines)
+
def extract_filenames(args):
filenames = []
for arg in args:
# We don't support real C++ parsing yet, but we should be able
# to understand C API implemented in C++ files.
- if (arg.endswith('.c') or arg.endswith('.cpp') or
- arg.endswith('.cc') or arg.endswith('.cxx') or
- arg.endswith('.h') or arg.endswith('.hpp') or
- arg.endswith('.hxx')):
+ if os.path.splitext(arg)[1] in ALL_EXTS:
if not os.path.exists(arg):
_error('%s: no such a file or directory' % (arg, ))
# Make absolute, because we do comparisons inside scannerparser.c
@@ -250,6 +270,29 @@ def extract_filenames(args):
filenames.append(os.path.abspath(arg))
return filenames
+
+def extract_filelist(options):
+ filenames = []
+ if not os.path.exists(options.filelist):
+ _error('%s: no such filelist file' % (options.filelist, ))
+ filelist_file = open(options.filelist, "r")
+ lines = filelist_file.readlines()
+ for line in lines:
+ # We don't support real C++ parsing yet, but we should be able
+ # to understand C API implemented in C++ files.
+ filename = line.strip()
+ if (filename.endswith('.c') or filename.endswith('.cpp')
+ or filename.endswith('.cc') or filename.endswith('.cxx')
+ or filename.endswith('.h') or filename.endswith('.hpp')
+ or filename.endswith('.hxx')):
+ if not os.path.exists(filename):
+ _error('%s: Invalid filelist entry-no such file or directory' % (line, ))
+ # Make absolute, because we do comparisons inside scannerparser.c
+ # against the absolute path that cpp will give us
+ filenames.append(os.path.abspath(filename))
+ return filenames
+
+
def create_namespace(options):
if options.strip_prefix:
print """g-ir-scanner: warning: Option --strip-prefix has been deprecated;
@@ -278,6 +321,7 @@ see --identifier-prefix and --symbol-prefix."""
identifier_prefixes=identifier_prefixes,
symbol_prefixes=symbol_prefixes)
+
def create_transformer(namespace, options):
transformer = Transformer(namespace,
accept_unprefixed=options.accept_unprefixed)
@@ -286,7 +330,6 @@ def create_transformer(namespace, options):
transformer.disable_cache()
transformer.set_passthrough_mode()
- shown_include_warning = False
for include in options.includes:
if os.sep in include:
_error("Invalid include path %r" % (include, ))
@@ -300,6 +343,7 @@ def create_transformer(namespace, options):
return transformer
+
def create_binary(transformer, options, args):
# Transform the C AST nodes into higher level
# GLib/GObject nodes
@@ -310,7 +354,7 @@ def create_binary(transformer, options, args):
gdump_parser.init_parse()
if options.program:
- args=[options.program]
+ args = [options.program]
args.extend(options.program_args)
binary = IntrospectionBinary(args)
else:
@@ -323,19 +367,25 @@ def create_binary(transformer, options, args):
gdump_parser.parse()
return shlibs
+
def create_source_scanner(options, args):
- filenames = extract_filenames(args)
+ if hasattr(options, 'filelist') and options.filelist:
+ filenames = extract_filelist(options)
+ else:
+ filenames = extract_filenames(args)
# Run the preprocessor, tokenize and construct simple
# objects representing the raw C symbols
ss = SourceScanner()
ss.set_cpp_options(options.cpp_includes,
options.cpp_defines,
- options.cpp_undefines)
+ options.cpp_undefines,
+ cflags=options.cflags)
ss.parse_files(filenames)
ss.parse_macros(filenames)
return ss
+
def write_output(data, options):
if options.output == "-":
output = sys.stdout
@@ -355,7 +405,7 @@ def write_output(data, options):
os.unlink(temp_f_name)
try:
shutil.move(main_f_name, options.output)
- except OSError, e:
+ except OSError as e:
if e.errno == errno.EPERM:
os.unlink(main_f_name)
return 0
@@ -364,14 +414,15 @@ def write_output(data, options):
else:
try:
output = open(options.output, "w")
- except IOError, e:
+ except IOError as e:
_error("opening output for writing: %s" % (e.strerror, ))
try:
output.write(data)
- except IOError, e:
+ except IOError as e:
_error("while writing output: %s" % (e.strerror, ))
+
def scanner_main(args):
parser = _get_option_parser()
(options, args) = parser.parse_args(args)
@@ -381,8 +432,9 @@ def scanner_main(args):
if options.test_codegen:
return test_codegen(options.test_codegen)
- if len(args) <= 1:
- _error('Need at least one filename')
+ if hasattr(options, 'filelist') and not options.filelist:
+ if len(args) <= 1:
+ _error('Need at least one filename')
if not options.namespace_name:
_error('Namespace name missing')
@@ -416,7 +468,6 @@ def scanner_main(args):
blocks = ap.parse(ss.get_comments())
# Transform the C symbols into AST nodes
- transformer.set_annotations(blocks)
transformer.parse(ss.get_symbols())
if not options.header_only:
@@ -424,6 +475,8 @@ def scanner_main(args):
else:
shlibs = []
+ transformer.namespace.shared_libraries = shlibs
+
main = MainTransformer(transformer, blocks)
main.transform()
@@ -446,8 +499,9 @@ def scanner_main(args):
else:
exported_packages = options.packages
- writer = Writer(transformer.namespace, shlibs, transformer.get_includes(),
- exported_packages, options.c_includes)
+ transformer.namespace.c_includes = options.c_includes
+ transformer.namespace.exported_packages = exported_packages
+ writer = Writer(transformer.namespace)
data = writer.get_xml()
write_output(data, options)
diff --git a/giscanner/scannerparser.y b/giscanner/scannerparser.y
index cc495cc3..3457b499 100644
--- a/giscanner/scannerparser.y
+++ b/giscanner/scannerparser.y
@@ -366,15 +366,15 @@ unary_expression
$$ = $2;
break;
case UNARY_MINUS:
- $$ = $2;
+ $$ = gi_source_symbol_copy ($2);
$$->const_int = -$2->const_int;
break;
case UNARY_BITWISE_COMPLEMENT:
- $$ = $2;
+ $$ = gi_source_symbol_copy ($2);
$$->const_int = ~$2->const_int;
break;
case UNARY_LOGICAL_NEGATION:
- $$ = $2;
+ $$ = gi_source_symbol_copy ($2);
$$->const_int = !gi_source_symbol_get_const_boolean ($2);
break;
default:
@@ -818,11 +818,12 @@ type_specifier
struct_or_union_specifier
: struct_or_union identifier_or_typedef_name '{' struct_declaration_list '}'
{
+ GISourceSymbol *sym;
$$ = $1;
$$->name = $2;
$$->child_list = $4;
- GISourceSymbol *sym = gi_source_symbol_new (CSYMBOL_TYPE_INVALID, scanner->current_filename, lineno);
+ sym = gi_source_symbol_new (CSYMBOL_TYPE_INVALID, scanner->current_filename, lineno);
if ($$->type == CTYPE_STRUCT) {
sym->type = CSYMBOL_TYPE_STRUCT;
} else if ($$->type == CTYPE_UNION) {
@@ -1472,9 +1473,9 @@ gi_source_scanner_parse_macros (GISourceScanner *scanner, GList *filenames)
FILE *fmacros =
fdopen (g_file_open_tmp ("gen-introspect-XXXXXX.h", &tmp_name, &error),
"w+");
+ GList *l;
g_unlink (tmp_name);
- GList *l;
for (l = filenames; l != NULL; l = l->next)
{
FILE *f = fopen (l->data, "r");
diff --git a/giscanner/sectionparser.py b/giscanner/sectionparser.py
new file mode 100644
index 00000000..ffe41afc
--- /dev/null
+++ b/giscanner/sectionparser.py
@@ -0,0 +1,152 @@
+# -*- Mode: Python -*-
+# Copyright (C) 2013 Hat, Inc.
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+import re
+from . import ast
+from .utils import to_underscores
+
+
+class SectionsFile(object):
+ def __init__(self, sections):
+ self.sections = sections
+
+
+class Section(object):
+ def __init__(self):
+ self.file = None
+ self.title = None
+ self.includes = None
+ self.subsections = []
+
+
+class Subsection(object):
+ def __init__(self, name):
+ self.name = name
+ self.symbols = []
+
+
+def parse_sections_file(lines):
+ sections = []
+ current_section = None
+ current_subsection = None
+
+ for line in lines:
+ line = line.rstrip()
+
+ if not line or line.isspace():
+ continue
+
+ if line == "<SECTION>":
+ current_section = Section()
+ sections.append(current_section)
+ current_subsection = Subsection(None)
+ current_section.subsections.append(current_subsection)
+ continue
+
+ if line == "</SECTION>":
+ current_section = None
+ continue
+
+ match = re.match(r"<FILE>(?P<contents>.*)</FILE>", line)
+ if match:
+ current_section.file = match.groupdict['contents']
+ continue
+
+ match = re.match(r"<TITLE>(?P<contents>.*)</TITLE>", line)
+ if match:
+ current_section.title = match.groupdict['contents']
+ continue
+
+ match = re.match(r"<INCLUDE>(?P<contents>.*)</INCLUDE>", line)
+ if match:
+ current_section.includes = match.groupdict['contents']
+ continue
+
+ match = re.match(r"<SUBSECTION(?: (?P<name>.*))?>", line)
+ if match:
+ current_subsection = Subsection(match.groupdict.get('name', None))
+ current_section.subsections.append(current_subsection)
+ continue
+
+ if line.startswith("<") and line.endswith(">"):
+ # Other directive to gtk-doc, not a symbol.
+ continue
+
+ current_subsection.symbols.append(line)
+
+ return SectionsFile(sections)
+
+
+def write_sections_file(f, sections_file):
+ for section in sections_file.sections:
+ f.write("\n<SECTION>\n")
+ if section.file is not None:
+ f.write("<FILE>%s</FILE>\n" % (section.file, ))
+ if section.title is not None:
+ f.write("<TITLE>%s</TITLE>\n" % (section.title, ))
+ if section.includes is not None:
+ f.write("<INCLUDE>%s</INCLUDE>\n" % (section.includes, ))
+
+ is_first_subsection = True
+ for subsection in section.subsections:
+ if subsection.name is not None:
+ f.write("<SUBSECTION %s>\n" % (subsection.name, ))
+ elif not is_first_subsection:
+ f.write("\n<SUBSECTION>\n")
+
+ is_first_subsection = False
+
+ for symbol in subsection.symbols:
+ f.write(symbol + "\n")
+
+
+def generate_sections_file(transformer):
+ ns = transformer.namespace
+
+ sections = []
+
+ def new_section(file_, title):
+ section = Section()
+ section.file = file_
+ section.title = title
+ section.subsections.append(Subsection(None))
+ sections.append(section)
+ return section
+
+ def append_symbol(section, sym):
+ section.subsections[0].symbols.append(sym)
+
+ general_section = new_section("main", "Main")
+
+ for node in ns.itervalues():
+ if isinstance(node, ast.Function):
+ append_symbol(general_section, node.symbol)
+ elif isinstance(node, (ast.Class, ast.Interface)):
+ gtype_name = node.gtype_name
+ file_name = to_underscores(gtype_name).replace('_', '-').lower()
+ section = new_section(file_name, gtype_name)
+ append_symbol(section, gtype_name)
+ append_symbol(section, node.glib_type_struct.target_giname.replace('.', ''))
+
+ for meth in node.methods:
+ append_symbol(section, meth.symbol)
+ for meth in node.static_methods:
+ append_symbol(section, meth.symbol)
+
+ return SectionsFile(sections)
diff --git a/giscanner/shlibs.py b/giscanner/shlibs.py
index 9579e7e6..1241827d 100644
--- a/giscanner/shlibs.py
+++ b/giscanner/shlibs.py
@@ -20,13 +20,13 @@
#
import os
-import re
import platform
+import re
import subprocess
-import os
from .utils import get_libtool_command, extract_libtool_shlib
+
# For .la files, the situation is easy.
def _resolve_libtool(options, binary, libraries):
shlibs = []
@@ -37,6 +37,7 @@ def _resolve_libtool(options, binary, libraries):
return shlibs
+
# Assume ldd output is something vaguely like
#
# libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x006c1000)
@@ -52,6 +53,7 @@ def _ldd_library_pattern(library_name):
return re.compile("(?<![A-Za-z0-9_-])(lib*%s[^A-Za-z0-9_-][^\s\(\)]*)"
% re.escape(library_name))
+
# This is a what we do for non-la files. We assume that we are on an
# ELF-like system where ldd exists and the soname extracted with ldd is
# a filename that can be opened with dlopen().
@@ -69,7 +71,7 @@ def _resolve_non_libtool(options, binary, libraries):
if not libraries:
return []
- if os.uname()[0] == 'OpenBSD':
+ if platform.platform().startswith('OpenBSD'):
# Hack for OpenBSD when using the ports' libtool which uses slightly
# different directories to store the libraries in. So rewite binary.args[0]
# by inserting '.libs/'.
@@ -119,6 +121,7 @@ def _resolve_non_libtool(options, binary, libraries):
return shlibs
+
# We want to resolve a set of library names (the <foo> of -l<foo>)
# against a library to find the shared library name. The shared
# library name is suppose to be what you pass to dlopen() (or
diff --git a/giscanner/sourcescanner.c b/giscanner/sourcescanner.c
index 1b775b46..90db2946 100644
--- a/giscanner/sourcescanner.c
+++ b/giscanner/sourcescanner.c
@@ -45,6 +45,31 @@ ctype_free (GISourceType * type)
}
GISourceSymbol *
+gi_source_symbol_copy (GISourceSymbol * symbol)
+{
+ GISourceSymbol *new_symbol = gi_source_symbol_new (symbol->type,
+ symbol->source_filename,
+ symbol->line);
+ new_symbol->ident = g_strdup (symbol->ident);
+
+ if (symbol->base_type)
+ new_symbol->base_type = gi_source_type_copy (symbol->base_type);
+
+ if (symbol->const_int_set) {
+ new_symbol->const_int = symbol->const_int;
+ new_symbol->const_int_is_unsigned = symbol->const_int_is_unsigned;
+ new_symbol->const_int_set = TRUE;
+ } else if (symbol->const_double_set) {
+ new_symbol->const_double = symbol->const_double;
+ new_symbol->const_double_set = TRUE;
+ } else if (symbol->const_string != NULL) {
+ new_symbol->const_string = g_strdup (symbol->const_string);
+ }
+
+ return new_symbol;
+}
+
+GISourceSymbol *
gi_source_symbol_ref (GISourceSymbol * symbol)
{
symbol->ref_count++;
diff --git a/giscanner/sourcescanner.h b/giscanner/sourcescanner.h
index a2834caf..f67ae6bd 100644
--- a/giscanner/sourcescanner.h
+++ b/giscanner/sourcescanner.h
@@ -120,7 +120,6 @@ struct _GISourceSymbol
{
int ref_count;
GISourceSymbolType type;
- int id;
char *ident;
GISourceType *base_type;
gboolean const_int_set;
@@ -163,6 +162,7 @@ GISourceSymbol * gi_source_symbol_new (GISourceSymbolType type
gboolean gi_source_symbol_get_const_boolean (GISourceSymbol *symbol);
GISourceSymbol * gi_source_symbol_ref (GISourceSymbol *symbol);
void gi_source_symbol_unref (GISourceSymbol *symbol);
+GISourceSymbol * gi_source_symbol_copy (GISourceSymbol *symbol);
/* Private */
void gi_source_scanner_add_symbol (GISourceScanner *scanner,
diff --git a/giscanner/sourcescanner.py b/giscanner/sourcescanner.py
index db282f84..d5c43926 100644
--- a/giscanner/sourcescanner.py
+++ b/giscanner/sourcescanner.py
@@ -32,6 +32,10 @@ with LibtoolImporter(None, None):
else:
from giscanner._giscanner import SourceScanner as CSourceScanner
+HEADER_EXTS = ['.h', '.hpp', '.hxx']
+SOURCE_EXTS = ['.c', '.cpp', '.cc', '.cxx']
+ALL_EXTS = SOURCE_EXTS + HEADER_EXTS
+
(CSYMBOL_TYPE_INVALID,
CSYMBOL_TYPE_ELLIPSIS,
CSYMBOL_TYPE_CONST,
@@ -89,8 +93,7 @@ def symbol_type_name(symbol_type):
CSYMBOL_TYPE_UNION: 'union',
CSYMBOL_TYPE_ENUM: 'enum',
CSYMBOL_TYPE_TYPEDEF: 'typedef',
- CSYMBOL_TYPE_MEMBER: 'member',
- }.get(symbol_type)
+ CSYMBOL_TYPE_MEMBER: 'member'}.get(symbol_type)
def ctype_name(ctype):
@@ -104,8 +107,7 @@ def ctype_name(ctype):
CTYPE_ENUM: 'enum',
CTYPE_POINTER: 'pointer',
CTYPE_ARRAY: 'array',
- CTYPE_FUNCTION: 'function',
- }.get(ctype)
+ CTYPE_FUNCTION: 'function'}.get(ctype)
class SourceType(object):
@@ -223,7 +225,8 @@ class SourceScanner(object):
# Public API
- def set_cpp_options(self, includes, defines, undefines):
+ def set_cpp_options(self, includes, defines, undefines, cflags=[]):
+ self._cpp_options.extend(cflags)
for prefix, args in [('-I', includes),
('-D', defines),
('-U', undefines)]:
@@ -240,8 +243,7 @@ class SourceScanner(object):
headers = []
for filename in filenames:
- if (filename.endswith('.c') or filename.endswith('.cpp') or
- filename.endswith('.cc') or filename.endswith('.cxx')):
+ if os.path.splitext(filename)[1] in SOURCE_EXTS:
filename = os.path.abspath(filename)
self._scanner.lex_filename(filename)
else:
@@ -262,7 +264,7 @@ class SourceScanner(object):
return self._scanner.get_comments()
def dump(self):
- print '-'*30
+ print '-' * 30
for symbol in self._scanner.get_symbols():
print symbol.ident, symbol.base_type.name, symbol.type
@@ -274,10 +276,17 @@ class SourceScanner(object):
defines = ['__GI_SCANNER__']
undefs = []
- cpp_args = os.environ.get('CC', 'cc').split()
+ cpp_args = os.environ.get('CC', 'cc').split() # support CC="ccache gcc"
+ if 'cl' in cpp_args:
+ # The Microsoft compiler/preprocessor (cl) does not accept
+ # source input from stdin (the '-' flag), so we need
+ # some help from gcc from MinGW/Cygwin or so.
+ # Note that the generated dumper program is
+ # still built and linked by Visual C++.
+ cpp_args = ['gcc']
cpp_args += ['-E', '-C', '-I.', '-']
-
cpp_args += self._cpp_options
+
proc = subprocess.Popen(cpp_args,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
@@ -293,8 +302,8 @@ class SourceScanner(object):
proc.stdin.write('#include <%s>\n' % (filename, ))
proc.stdin.close()
- tmp = tempfile.mktemp()
- fp = open(tmp, 'w+')
+ tmp_fd, tmp_name = tempfile.mkstemp()
+ fp = os.fdopen(tmp_fd, 'w+b')
while True:
data = proc.stdout.read(4096)
if data is None:
@@ -311,4 +320,4 @@ class SourceScanner(object):
self._scanner.parse_file(fp.fileno())
fp.close()
- os.unlink(tmp)
+ os.unlink(tmp_name)
diff --git a/giscanner/testcodegen.py b/giscanner/testcodegen.py
index f304dc7a..1ed247c7 100644
--- a/giscanner/testcodegen.py
+++ b/giscanner/testcodegen.py
@@ -27,12 +27,14 @@ DEFAULT_C_VALUES = {ast.TYPE_ANY: 'NULL',
ast.TYPE_FILENAME: '""',
ast.TYPE_GTYPE: 'g_object_get_type ()'}
+
def get_default_for_typeval(typeval):
default = DEFAULT_C_VALUES.get(typeval)
if default:
return default
return "0"
+
def uscore_from_type(typeval):
if typeval.target_fundamental:
return typeval.target_fundamental.replace(' ', '_')
@@ -41,6 +43,7 @@ def uscore_from_type(typeval):
else:
assert False, typeval
+
class EverythingCodeGenerator(object):
def __init__(self, out_h_filename, out_c_filename):
diff --git a/giscanner/transformer.py b/giscanner/transformer.py
index 6afad889..f70d756a 100644
--- a/giscanner/transformer.py
+++ b/giscanner/transformer.py
@@ -34,6 +34,7 @@ from .sourcescanner import (
CSYMBOL_TYPE_MEMBER, CSYMBOL_TYPE_ELLIPSIS, CSYMBOL_TYPE_CONST,
TYPE_QUALIFIER_CONST, TYPE_QUALIFIER_VOLATILE)
+
class TransformerException(Exception):
pass
@@ -54,14 +55,9 @@ class Transformer(object):
self._namespace = namespace
self._pkg_config_packages = set()
self._typedefs_ns = {}
- self._includes = {} # <string namespace -> Namespace>
- self._include_names = set() # string namespace
+ self._parsed_includes = {} # <string namespace -> Namespace>
self._includepaths = []
self._passthrough_mode = False
- self._annotations = {}
-
- def get_includes(self):
- return self._include_names
def get_pkgconfig_packages(self):
return self._pkg_config_packages
@@ -72,9 +68,6 @@ class Transformer(object):
def set_passthrough_mode(self):
self._passthrough_mode = True
- def set_annotations(self, annotations):
- self._annotations = annotations
-
def _append_new_node(self, node):
original = self._namespace.get(node.name)
# Special case constants here; we allow duplication to sort-of
@@ -112,7 +105,7 @@ class Transformer(object):
if not ns_compound:
ns_compound = self._namespace.get('_' + compound.name)
if (not ns_compound and isinstance(compound, (ast.Record, ast.Union))
- and len(compound.fields) == 0):
+ and len(compound.fields) == 0):
disguised = ast.Record(compound.name, typedef, disguised=True)
self._namespace.append(disguised)
elif not ns_compound:
@@ -125,23 +118,23 @@ class Transformer(object):
self._includepaths = list(paths)
def register_include(self, include):
- if include in self._include_names:
+ if include in self._namespace.includes:
return
+ self._namespace.includes.add(include)
filename = self._find_include(include)
self._parse_include(filename)
- self._include_names.add(include)
def register_include_uninstalled(self, include_path):
basename = os.path.basename(include_path)
if not basename.endswith('.gir'):
- raise SystemExit(
-"Include path %r must be a filename path ending in .gir" % (include_path, ))
+ raise SystemExit("Include path %r must be a filename path "
+ "ending in .gir" % (include_path, ))
girname = basename[:-4]
include = ast.Include.from_string(girname)
- if include in self._include_names:
+ if include in self._namespace.includes:
return
+ self._namespace.includes.add(include)
self._parse_include(include_path, uninstalled=True)
- self._include_names.add(include)
def lookup_giname(self, name):
"""Given a name of the form Foo or Bar.Foo,
@@ -151,11 +144,16 @@ namespaces."""
if '.' not in name:
return self._namespace.get(name)
else:
- (ns, name) = name.split('.', 1)
+ (ns, giname) = name.split('.', 1)
if ns == self._namespace.name:
- return self._namespace.get(name)
- include = self._includes[ns]
- return include.get(name)
+ return self._namespace.get(giname)
+ # Fallback to the main namespace if not a dependency and matches a prefix
+ if ns in self._namespace.identifier_prefixes and not ns in self._parsed_includes:
+ message.warn(("Deprecated reference to identifier " +
+ "prefix %s in GIName %s") % (ns, name))
+ return self._namespace.get(giname)
+ include = self._parsed_includes[ns]
+ return include.get(giname)
def lookup_typenode(self, typeobj):
"""Given a Type object, if it points to a giname,
@@ -178,8 +176,7 @@ None."""
path = os.path.join(d, girname)
if os.path.exists(path):
return path
- sys.stderr.write("Couldn't find include %r (search path: %r)\n"\
- % (girname, searchdirs))
+ sys.stderr.write("Couldn't find include %r (search path: %r)\n" % (girname, searchdirs))
sys.exit(1)
@classmethod
@@ -191,7 +188,7 @@ None."""
self._parse_include(filename)
parser = self._cachestore.load(filename)
self._namespace = parser.get_namespace()
- del self._includes[self._namespace.name]
+ del self._parsed_includes[self._namespace.name]
return self
def _parse_include(self, filename, uninstalled=False):
@@ -204,20 +201,22 @@ None."""
if self._cachestore is not None:
self._cachestore.store(filename, parser)
- for include in parser.get_includes():
- self.register_include(include)
+ for include in parser.get_namespace().includes:
+ if include.name not in self._parsed_includes:
+ dep_filename = self._find_include(include)
+ self._parse_include(dep_filename)
if not uninstalled:
- for pkg in parser.get_pkgconfig_packages():
+ for pkg in parser.get_namespace().exported_packages:
self._pkg_config_packages.add(pkg)
namespace = parser.get_namespace()
- self._includes[namespace.name] = namespace
+ self._parsed_includes[namespace.name] = namespace
def _iter_namespaces(self):
"""Return an iterator over all included namespaces; the
currently-scanned namespace is first."""
yield self._namespace
- for ns in self._includes.itervalues():
+ for ns in self._parsed_includes.itervalues():
yield ns
def _sort_matches(self, x, y):
@@ -229,7 +228,7 @@ currently-scanned namespace is first."""
def _split_c_string_for_namespace_matches(self, name, is_identifier=False):
matches = [] # Namespaces which might contain this name
- unprefixed_namespaces = [] # Namespaces with no prefix, last resort
+ unprefixed_namespaces = [] # Namespaces with no prefix, last resort
for ns in self._iter_namespaces():
if is_identifier:
prefixes = ns.identifier_prefixes
@@ -286,7 +285,7 @@ raise ValueError."""
ident = ident[1:]
try:
matches = self.split_ctype_namespaces(ident)
- except ValueError, e:
+ except ValueError as e:
raise TransformerException(str(e))
for ns, name in matches:
if ns is self._namespace:
@@ -306,7 +305,7 @@ raise ValueError."""
ident = ident[1:]
try:
(ns, name) = self.split_csymbol(ident)
- except ValueError, e:
+ except ValueError as e:
raise TransformerException(str(e))
if ns != self._namespace:
raise TransformerException(
@@ -333,10 +332,7 @@ raise ValueError."""
elif stype == CSYMBOL_TYPE_UNION:
return self._create_union(symbol)
elif stype == CSYMBOL_TYPE_CONST:
- # Don't parse constants which are marked (skip)
- docblock = self._annotations.get(symbol.ident)
- if not docblock or not 'skip' in docblock.options:
- return self._create_const(symbol)
+ return self._create_const(symbol)
# Ignore variable declarations in the header
elif stype == CSYMBOL_TYPE_OBJECT:
pass
@@ -383,7 +379,7 @@ raise ValueError."""
# prefix.
try:
name = self._strip_symbol(child)
- except TransformerException, e:
+ except TransformerException as e:
message.warn_symbol(symbol, e)
return None
members.append(ast.Member(name.lower(),
@@ -393,7 +389,7 @@ raise ValueError."""
try:
enum_name = self.strip_identifier(symbol.ident)
- except TransformerException, e:
+ except TransformerException as e:
message.warn_symbol(symbol, e)
return None
if symbol.base_type.is_bitfield:
@@ -408,11 +404,11 @@ raise ValueError."""
# Drop functions that start with _ very early on here
if symbol.ident.startswith('_'):
return None
- parameters = list(self._create_parameters(symbol.base_type))
+ parameters = list(self._create_parameters(symbol, symbol.base_type))
return_ = self._create_return(symbol.base_type.base_type)
try:
name = self._strip_symbol(symbol)
- except TransformerException, e:
+ except TransformerException as e:
message.warn_symbol(symbol, e)
return None
func = ast.Function(name, return_, parameters, False, symbol.ident)
@@ -476,11 +472,11 @@ raise ValueError."""
return value
- def _create_parameters(self, base_type):
+ def _create_parameters(self, symbol, base_type):
# warn if we see annotations for unknown parameters
param_names = set(child.ident for child in base_type.child_list)
- for child in base_type.child_list:
- yield self._create_parameter(child)
+ for i, child in enumerate(base_type.child_list):
+ yield self._create_parameter(symbol, i, child)
def _synthesize_union_type(self, symbol, parent_symbol):
# Synthesize a named union so that it can be referenced.
@@ -506,8 +502,8 @@ raise ValueError."""
def _create_member(self, symbol, parent_symbol=None):
source_type = symbol.base_type
- if (source_type.type == CTYPE_POINTER and
- symbol.base_type.base_type.type == CTYPE_FUNCTION):
+ if (source_type.type == CTYPE_POINTER
+ and symbol.base_type.base_type.type == CTYPE_FUNCTION):
node = self._create_callback(symbol, member=True)
elif source_type.type == CTYPE_STRUCT and source_type.name is None:
node = self._create_struct(symbol, anonymous=True)
@@ -523,8 +519,8 @@ raise ValueError."""
# to be able to properly calculate the size of the compound
# type (e.g. GValue) that contains this array, see
# <https://bugzilla.gnome.org/show_bug.cgi?id=657040>.
- if (source_type.base_type.type == CTYPE_UNION and
- source_type.base_type.name is None):
+ if (source_type.base_type.type == CTYPE_UNION
+ and source_type.base_type.name is None):
synthesized_type = self._synthesize_union_type(symbol, parent_symbol)
ftype = ast.Array(None, synthesized_type, complete_ctype=complete_ctype)
else:
@@ -562,11 +558,9 @@ raise ValueError."""
def _create_typedef(self, symbol):
ctype = symbol.base_type.type
- if (ctype == CTYPE_POINTER and
- symbol.base_type.base_type.type == CTYPE_FUNCTION):
+ if (ctype == CTYPE_POINTER and symbol.base_type.base_type.type == CTYPE_FUNCTION):
node = self._create_typedef_callback(symbol)
- elif (ctype == CTYPE_POINTER and
- symbol.base_type.base_type.type == CTYPE_STRUCT):
+ elif (ctype == CTYPE_POINTER and symbol.base_type.base_type.type == CTYPE_STRUCT):
node = self._create_typedef_struct(symbol, disguised=True)
elif ctype == CTYPE_STRUCT:
node = self._create_typedef_struct(symbol)
@@ -580,7 +574,7 @@ raise ValueError."""
CTYPE_VOID):
try:
name = self.strip_identifier(symbol.ident)
- except TransformerException, e:
+ except TransformerException as e:
message.warn(e)
return None
if symbol.base_type.name:
@@ -631,8 +625,7 @@ raise ValueError."""
derefed_typename = canonical.replace('*', '')
# Preserve "pointerness" of struct/union members
- if (is_member and canonical.endswith('*') and
- derefed_typename in ast.basic_type_names):
+ if (is_member and canonical.endswith('*') and derefed_typename in ast.basic_type_names):
return 'gpointer'
else:
return derefed_typename
@@ -693,26 +686,36 @@ raise ValueError."""
return container
return ast.Type(ctype=ctype, is_const=is_const, complete_ctype=complete_ctype)
- def _create_parameter(self, symbol):
+ def _create_parameter(self, parent_symbol, index, symbol):
if symbol.type == CSYMBOL_TYPE_ELLIPSIS:
ptype = ast.Varargs()
else:
ptype = self._create_type_from_base(symbol.base_type, is_parameter=True)
- return ast.Parameter(symbol.ident, ptype)
+
+ if symbol.ident is None:
+ if symbol.base_type and symbol.base_type.type != CTYPE_VOID:
+ message.warn_symbol(parent_symbol, "missing parameter name; undocumentable")
+ ident = 'arg%d' % (index, )
+ else:
+ ident = symbol.ident
+
+ return ast.Parameter(ident, ptype)
def _create_return(self, source_type):
typeval = self._create_type_from_base(source_type, is_return=True)
return ast.Return(typeval)
def _create_const(self, symbol):
+ if symbol.ident.startswith('_'):
+ return None
+
# Don't create constants for non-public things
# http://bugzilla.gnome.org/show_bug.cgi?id=572790
- if (symbol.source_filename is None or
- not symbol.source_filename.endswith('.h')):
+ if (symbol.source_filename is None or not symbol.source_filename.endswith('.h')):
return None
try:
name = self._strip_symbol(symbol)
- except TransformerException, e:
+ except TransformerException as e:
message.warn_symbol(symbol, e)
return None
if symbol.const_string is not None:
@@ -731,13 +734,13 @@ raise ValueError."""
if isinstance(target, ast.Type):
unaliased = target
if unaliased == ast.TYPE_UINT64:
- value = str(symbol.const_int % 2**64)
+ value = str(symbol.const_int % 2 ** 64)
elif unaliased == ast.TYPE_UINT32:
- value = str(symbol.const_int % 2**32)
+ value = str(symbol.const_int % 2 ** 32)
elif unaliased == ast.TYPE_UINT16:
- value = str(symbol.const_int % 2**16)
+ value = str(symbol.const_int % 2 ** 16)
elif unaliased == ast.TYPE_UINT8:
- value = str(symbol.const_int % 2**16)
+ value = str(symbol.const_int % 2 ** 16)
else:
value = str(symbol.const_int)
elif symbol.const_double is not None:
@@ -754,7 +757,7 @@ raise ValueError."""
def _create_typedef_struct(self, symbol, disguised=False):
try:
name = self.strip_identifier(symbol.ident)
- except TransformerException, e:
+ except TransformerException as e:
message.warn_symbol(symbol, e)
return None
struct = ast.Record(name, symbol.ident, disguised=disguised)
@@ -766,7 +769,7 @@ raise ValueError."""
def _create_typedef_union(self, symbol):
try:
name = self.strip_identifier(symbol.ident)
- except TransformerException, e:
+ except TransformerException as e:
message.warn(e)
return None
union = ast.Union(name, symbol.ident)
@@ -814,7 +817,7 @@ raise ValueError."""
else:
try:
name = self.strip_identifier(symbol.ident)
- except TransformerException, e:
+ except TransformerException as e:
message.warn(e)
return None
compound = klass(name, symbol.ident)
@@ -830,13 +833,12 @@ raise ValueError."""
return self._create_compound(ast.Union, symbol, anonymous)
def _create_callback(self, symbol, member=False):
- parameters = list(self._create_parameters(symbol.base_type.base_type))
+ parameters = list(self._create_parameters(symbol, symbol.base_type.base_type))
retval = self._create_return(symbol.base_type.base_type.base_type)
# Mark the 'user_data' arguments
for i, param in enumerate(parameters):
- if (param.type.target_fundamental == 'gpointer' and
- param.argname == 'user_data'):
+ if (param.type.target_fundamental == 'gpointer' and param.argname == 'user_data'):
param.closure_name = param.argname
if member:
@@ -844,13 +846,13 @@ raise ValueError."""
elif symbol.ident.find('_') > 0:
try:
name = self._strip_symbol(symbol)
- except TransformerException, e:
+ except TransformerException as e:
message.warn_symbol(symbol, e)
return None
else:
try:
name = self.strip_identifier(symbol.ident)
- except TransformerException, e:
+ except TransformerException as e:
message.warn(e)
return None
callback = ast.Callback(name, retval, parameters, False,
@@ -868,9 +870,12 @@ Note that type resolution may not succeed."""
if '.' in typestr:
container = self._create_bare_container_type(typestr)
if container:
- return container
- return self._namespace.type_from_name(typestr)
- typeval = self.create_type_from_ctype_string(typestr)
+ typeval = container
+ else:
+ typeval = self._namespace.type_from_name(typestr)
+ else:
+ typeval = self.create_type_from_ctype_string(typestr)
+
self.resolve_type(typeval)
if typeval.resolved:
# Explicitly clear out the c_type; there isn't one in this case.
@@ -883,7 +888,7 @@ Note that type resolution may not succeed."""
# which has nominal namespace of "Meta", but a few classes are
# "Mutter". We don't export that data in introspection currently.
# Basically the library should be fixed, but we'll hack around it here.
- for namespace in self._includes.itervalues():
+ for namespace in self._parsed_includes.itervalues():
target = namespace.get_by_ctype(pointer_stripped)
if target:
typeval.target_giname = '%s.%s' % (namespace.name, target.name)
@@ -895,9 +900,8 @@ Note that type resolution may not succeed."""
pointer_stripped = typeval.ctype.replace('*', '')
try:
matches = self.split_ctype_namespaces(pointer_stripped)
- except ValueError, e:
+ except ValueError:
return self._resolve_type_from_ctype_all_namespaces(typeval, pointer_stripped)
- target_giname = None
for namespace, name in matches:
target = namespace.get(name)
if not target:
@@ -916,7 +920,7 @@ Note that type resolution may not succeed."""
return True
return False
- def resolve_type(self, typeval):
+ def _resolve_type_internal(self, typeval):
if isinstance(typeval, (ast.Array, ast.List)):
return self.resolve_type(typeval.element_type)
elif isinstance(typeval, ast.Map):
@@ -930,6 +934,25 @@ Note that type resolution may not succeed."""
elif typeval.gtype_name:
return self._resolve_type_from_gtype_name(typeval)
+ def resolve_type(self, typeval):
+ if not self._resolve_type_internal(typeval):
+ return False
+
+ if typeval.target_fundamental or typeval.target_foreign:
+ return True
+
+ assert typeval.target_giname is not None
+
+ try:
+ type_ = self.lookup_giname(typeval.target_giname)
+ except KeyError:
+ type_ = None
+
+ if type_ is None:
+ typeval.target_giname = None
+
+ return typeval.resolved
+
def _typepair_to_str(self, item):
nsname, item = item
if nsname is None:
diff --git a/giscanner/utils.py b/giscanner/utils.py
index 642da362..77d05b9e 100644
--- a/giscanner/utils.py
+++ b/giscanner/utils.py
@@ -22,7 +22,10 @@ import re
import os
import subprocess
+
_debugflags = None
+
+
def have_debug_flag(flag):
"""Check for whether a specific debugging feature is enabled.
Well-known flags:
@@ -38,6 +41,7 @@ Well-known flags:
_debugflags.remove('')
return flag in _debugflags
+
def break_on_debug_flag(flag):
if have_debug_flag(flag):
import pdb
@@ -69,8 +73,10 @@ def to_underscores_noprefix(name):
name = _upperstr_pat2.sub(r'\1_\2', name)
return name
+
_libtool_pat = re.compile("dlname='([A-z0-9\.\-\+]+)'\n")
+
def _extract_dlname_field(la_file):
f = open(la_file)
data = f.read()
@@ -81,6 +87,7 @@ def _extract_dlname_field(la_file):
else:
return None
+
# Returns the name that we would pass to dlopen() the library
# corresponding to this .la file
def extract_libtool_shlib(la_file):
@@ -92,6 +99,7 @@ def extract_libtool_shlib(la_file):
# a path rather than the raw dlname
return os.path.basename(dlname)
+
def extract_libtool(la_file):
dlname = _extract_dlname_field(la_file)
if dlname is None:
@@ -104,6 +112,7 @@ def extract_libtool(la_file):
libname = libname.replace('.libs/.libs', '.libs')
return libname
+
# Returns arguments for invoking libtool, if applicable, otherwise None
def get_libtool_command(options):
libtool_infection = not options.nolibtool
@@ -121,7 +130,7 @@ def get_libtool_command(options):
try:
subprocess.check_call(['libtool', '--version'],
stdout=open(os.devnull))
- except (subprocess.CalledProcessError, OSError), e:
+ except (subprocess.CalledProcessError, OSError):
# If libtool's not installed, assume we don't need it
return None
diff --git a/giscanner/xmlwriter.py b/giscanner/xmlwriter.py
index fb34adf1..6efe684d 100755
--- a/giscanner/xmlwriter.py
+++ b/giscanner/xmlwriter.py
@@ -44,8 +44,7 @@ def _calc_attrs_length(attributes, indent, self_indent):
return attr_length + indent + self_indent
-def collect_attributes(tag_name, attributes, self_indent,
- self_indent_char, indent=-1):
+def collect_attributes(tag_name, attributes, self_indent, self_indent_char, indent=-1):
if not attributes:
return ''
if _calc_attrs_length(attributes, indent, self_indent) > 79:
@@ -69,6 +68,25 @@ def collect_attributes(tag_name, attributes, self_indent,
return attr_value
+def build_xml_tag(tag_name, attributes=None, data=None, self_indent=0,
+ self_indent_char=' '):
+ if attributes is None:
+ attributes = []
+ prefix = u'<%s' % (tag_name, )
+ if data is not None:
+ if isinstance(data, str):
+ data = data.decode('UTF-8')
+ suffix = u'>%s</%s>' % (escape(data), tag_name)
+ else:
+ suffix = u'/>'
+ attrs = collect_attributes(
+ tag_name, attributes,
+ self_indent,
+ self_indent_char,
+ len(prefix) + len(suffix))
+ return prefix + attrs + suffix
+
+
with LibtoolImporter(None, None):
if 'UNINSTALLED_INTROSPECTION_SRCDIR' in os.environ:
from _giscanner import collect_attributes
@@ -91,10 +109,8 @@ class XMLWriter(object):
def _open_tag(self, tag_name, attributes=None):
if attributes is None:
attributes = []
- attrs = collect_attributes(
- tag_name, attributes, self._indent,
- self._indent_char,
- len(tag_name) + 2)
+ attrs = collect_attributes(tag_name, attributes,
+ self._indent, self._indent_char, len(tag_name) + 2)
self.write_line(u'<%s%s>' % (tag_name, attrs))
def _close_tag(self, tag_name):
@@ -118,12 +134,11 @@ class XMLWriter(object):
line = line.decode('utf-8')
assert isinstance(line, unicode)
if do_escape:
- line = escape(line.encode('utf-8')).decode('utf-8')
+ line = escape(line)
if indent:
- self._data.write('%s%s%s' % (
- self._indent_char * self._indent,
- line.encode('utf-8'),
- self._newline_char))
+ self._data.write('%s%s%s' % (self._indent_char * self._indent,
+ line.encode('utf-8'),
+ self._newline_char))
else:
self._data.write('%s%s' % (line.encode('utf-8'), self._newline_char))
@@ -131,21 +146,8 @@ class XMLWriter(object):
self.write_line('<!-- %s -->' % (text, ))
def write_tag(self, tag_name, attributes, data=None):
- if attributes is None:
- attributes = []
- prefix = u'<%s' % (tag_name, )
- if data is not None:
- if isinstance(data, str):
- data = data.decode('UTF-8')
- suffix = u'>%s</%s>' % (escape(data), tag_name)
- else:
- suffix = u'/>'
- attrs = collect_attributes(
- tag_name, attributes,
- self._indent,
- self._indent_char,
- len(prefix) + len(suffix))
- self.write_line(prefix + attrs + suffix)
+ self.write_line(build_xml_tag(tag_name, attributes, data,
+ self._indent, self._indent_char))
def push_tag(self, tag_name, attributes=None):
if attributes is None:
diff --git a/m4/python.m4 b/m4/python.m4
index 74ac6ee9..ed5559da 100644
--- a/m4/python.m4
+++ b/m4/python.m4
@@ -43,14 +43,7 @@ AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
[AC_REQUIRE([AM_PATH_PYTHON])
AC_MSG_CHECKING(for headers required to compile python extensions)
dnl deduce PYTHON_INCLUDES
-py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
-py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
-if test "x$PYTHON_INCLUDES" == x; then
- PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
- if test "$py_prefix" != "$py_exec_prefix"; then
- PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
- fi
-fi
+PYTHON_INCLUDES=`$PYTHON-config --includes`
AC_SUBST(PYTHON_INCLUDES)
dnl check if the headers exist:
save_CPPFLAGS="$CPPFLAGS"
@@ -70,14 +63,10 @@ AC_DEFUN([AM_CHECK_PYTHON_LIBS],
[AC_REQUIRE([AM_CHECK_PYTHON_HEADERS])
AC_MSG_CHECKING(for libraries required to link against libpython)
dnl deduce PYTHON_LIBS
-if test "x$PYTHON_LIBS" == x; then
- PYTHON_LIBS="-L${py_prefix}/lib -lpython${PYTHON_VERSION}"
-fi
-if test "x$PYTHON_LIB_LOC" == x; then
- PYTHON_LIB_LOC="${py_prefix}/lib"
+if test "x$PYTHON_LIBS" = x; then
+ PYTHON_LIBS=`$PYTHON-config --ldflags --libs`
fi
AC_SUBST(PYTHON_LIBS)
-AC_SUBST(PYTHON_LIB_LOC)
dnl check if libpython exist:
save_LIBS="$LIBS"
LIBS="$LIBS $PYTHON_LIBS"
diff --git a/misc/pep8.py b/misc/pep8.py
index 38906294..f99ae3a3 100644
--- a/misc/pep8.py
+++ b/misc/pep8.py
@@ -1,6 +1,7 @@
-#!/usr/bin/python
+#!/usr/bin/env python
# pep8.py - Check Python source code formatting, according to PEP 8
-# Copyright (C) 2006 Johann C. Rocholl <johann@browsershots.org>
+# Copyright (C) 2006-2009 Johann C. Rocholl <johann@rocholl.net>
+# Copyright (C) 2009-2013 Florent Xicluna <florent.xicluna@gmail.com>
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation files
@@ -22,7 +23,7 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
-"""
+r"""
Check Python source code formatting, according to PEP 8:
http://www.python.org/dev/peps/pep-0008/
@@ -30,8 +31,7 @@ For usage and a list of options, try this:
$ python pep8.py -h
This program and its regression test suite live here:
-http://svn.browsershots.org/trunk/devtools/pep8/
-http://trac.browsershots.org/browser/trunk/devtools/pep8/
+http://github.com/jcrocholl/pep8
Groups of errors and warnings:
E errors
@@ -43,72 +43,72 @@ W warnings
500 line length
600 deprecation
700 statements
-
-You can add checks to this program by writing plugins. Each plugin is
-a simple function that is called for each line of source code, either
-physical or logical.
-
-Physical line:
-- Raw line of text from the input file.
-
-Logical line:
-- Multi-line statements converted to a single line.
-- Stripped left and right.
-- Contents of strings replaced with 'xxx' of same length.
-- Comments removed.
-
-The check function requests physical or logical lines by the name of
-the first argument:
-
-def maximum_line_length(physical_line)
-def extraneous_whitespace(logical_line)
-def blank_lines(logical_line, blank_lines, indent_level, line_number)
-
-The last example above demonstrates how check plugins can request
-additional information with extra arguments. All attributes of the
-Checker object are available. Some examples:
-
-lines: a list of the raw lines from the input file
-tokens: the tokens that contribute to this logical line
-line_number: line number in the input file
-blank_lines: blank lines before this one
-indent_char: first indentation character in this file (' ' or '\t')
-indent_level: indentation (with tabs expanded to multiples of 8)
-previous_indent_level: indentation on previous line
-previous_logical: previous logical line
-
-The docstring of each check function shall be the relevant part of
-text from PEP 8. It is printed if the user enables --show-pep8.
-
+900 syntax error
"""
+__version__ = '1.4.5'
import os
import sys
import re
import time
import inspect
+import keyword
import tokenize
from optparse import OptionParser
-from keyword import iskeyword
from fnmatch import fnmatch
-
-__version__ = '0.2.0'
-__revision__ = '$Rev$'
-
-default_exclude = '.svn,CVS,*.pyc,*.pyo'
-
-indent_match = re.compile(r'([ \t]*)').match
-raise_comma_match = re.compile(r'raise\s+\w+\s*(,)').match
-
-operators = """
-+ - * / % ^ & | = < > >> <<
-+= -= *= /= %= ^= &= |= == <= >= >>= <<=
-!= <> :
-in is or not and
-""".split()
-
-options = None
-args = None
+try:
+ from configparser import RawConfigParser
+ from io import TextIOWrapper
+except ImportError:
+ from ConfigParser import RawConfigParser
+
+DEFAULT_EXCLUDE = '.svn,CVS,.bzr,.hg,.git,__pycache__'
+DEFAULT_IGNORE = 'E226,E24'
+if sys.platform == 'win32':
+ DEFAULT_CONFIG = os.path.expanduser(r'~\.pep8')
+else:
+ DEFAULT_CONFIG = os.path.join(os.getenv('XDG_CONFIG_HOME') or
+ os.path.expanduser('~/.config'), 'pep8')
+PROJECT_CONFIG = ('.pep8', 'tox.ini', 'setup.cfg')
+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')
+SKIP_TOKENS = frozenset([tokenize.COMMENT, tokenize.NL, tokenize.NEWLINE,
+ tokenize.INDENT, tokenize.DEDENT])
+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*,\s*\w+')
+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'([=!]=)\s*(None|False|True)')
+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'
##############################################################################
@@ -117,7 +117,7 @@ args = None
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
@@ -126,52 +126,81 @@ def tabs_or_spaces(physical_line, indent_char):
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_match(physical_line).group(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. Most
editors have features that make this easy to do.
+
+ Okay: if True:\n return
+ W191: if True:\n\treturn
"""
- indent = indent_match(physical_line).group(1)
- if indent.count('\t'):
+ 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"""
JCR: Trailing whitespace is superfluous.
+ FBM: Except when it occurs as part of a blank line (i.e. the line is
+ nothing but whitespace). According to Python docs[1] a line with only
+ whitespace is considered a blank line, and is to be ignored. However,
+ matching a blank line to its indentation level avoids mistakenly
+ terminating a multi-line statement (e.g. class declaration) when
+ pasting code into the standard Python interpreter.
+
+ [1] http://docs.python.org/reference/lexical_analysis.html#blank-lines
+
+ 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()
+ 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:
- return len(stripped), "W291 trailing whitespace"
+ 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):
- """
+ r"""
JCR: Trailing blank lines are superfluous.
+
+ Okay: spam(1)
+ W391: spam(1)\n
"""
- if physical_line.strip() == '' and line_number == len(lines):
+ if not physical_line.rstrip() and line_number == len(lines):
return 0, "W391 blank line at end of file"
def missing_newline(physical_line):
"""
JCR: The last line should have a newline.
+
+ Reports warning W292.
"""
if physical_line.rstrip() == physical_line:
return len(physical_line), "W292 no newline at end of file"
-def maximum_line_length(physical_line):
+def maximum_line_length(physical_line, max_line_length):
"""
Limit all lines to a maximum of 79 characters.
@@ -181,10 +210,23 @@ def maximum_line_length(physical_line):
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.
"""
- length = len(physical_line.rstrip())
- if length > 99:
- return 79, "E501 line too long (%d characters)" % length
+ line = physical_line.rstrip()
+ length = len(line)
+ if length > max_line_length:
+ if noqa(line):
+ 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))
##############################################################################
@@ -192,6 +234,44 @@ def maximum_line_length(physical_line):
##############################################################################
+def blank_lines(logical_line, blank_lines, indent_level, line_number,
+ 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_lines or previous_indent_level < indent_level or
+ DOCSTRING_REGEX.match(previous_logical)):
+ yield 0, "E301 expected 1 blank line, found 0"
+ elif blank_lines != 2:
+ yield 0, "E302 expected 2 blank lines, found %d" % blank_lines
+
+
def extraneous_whitespace(logical_line):
"""
Avoid extraneous whitespace in the following situations:
@@ -199,51 +279,273 @@ def extraneous_whitespace(logical_line):
- 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 char in '([{':
- found = line.find(char + ' ')
- if found > -1:
- return found + 1, "E201 whitespace after '%s'" % char
- for char in '}])':
- found = line.find(' ' + char)
- if found > -1 and line[found - 1] != ',':
- return found, "E202 whitespace before '%s'" % char
- for char in ',;:':
- found = line.find(' ' + char)
- if found > -1:
- return found, "E203 whitespace before '%s'" % char
+ 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):
"""
JCR: 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] != ' ':
+ if char in ',;:' and line[index + 1] not in WHITESPACE:
before = line[:index]
- if char == ':' and before.count('[') > before.count(']'):
- continue # Slice syntax, no space required
- return index, "E231 missing whitespace after '%s'" % char
+ 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
+
+ Okay: for item in items:\n pass
+ E112: for item in items:\npass
+
+ Okay: a = 1\nb = 2
+ E113: a = 1\n b = 2
"""
if indent_char == ' ' and indent_level % 4:
- return 0, "E111 indentation is not a multiple of four"
+ yield 0, "E111 indentation is not a multiple of four"
indent_expect = previous_logical.endswith(':')
if indent_expect and indent_level <= previous_indent_level:
- return 0, "E112 expected an indented block"
+ yield 0, "E112 expected an indented block"
if indent_level > previous_indent_level and not indent_expect:
- return 0, "E113 unexpected indentation"
+ yield 0, "E113 unexpected indentation"
+
+
+def continuation_line_indentation(logical_line, tokens, indent_level, verbose):
+ r"""
+ 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 the following 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 (a or\n b):\n pass
+ E126: a = (\n 42)
+ E127: a = (24,\n 42)
+ E128: a = (24,\n 42)
+ """
+ first_row = tokens[0][2][0]
+ nrows = 1 + tokens[-1][2][0] - first_row
+ if nrows == 1 or noqa(tokens[0][4]):
+ 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
+ # remember how many brackets were opened on each line
+ parens = [0] * nrows
+ # relative indents of physical lines
+ rel_indent = [0] * nrows
+ # visual indents
+ indent_chances = {}
+ last_indent = tokens[0][2]
+ 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 (tokenize.NL, tokenize.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
+
+ if depth:
+ # a bracket expression in a continuation line.
+ # find the line that it was opened on
+ for open_row in range(row - 1, -1, -1):
+ if parens[open_row]:
+ break
+ else:
+ # an unbracketed continuation line (ie, backslash)
+ open_row = 0
+ hang = rel_indent[row] - rel_indent[open_row]
+ visual_indent = indent_chances.get(start[1])
+
+ if token_type == tokenize.OP and text in ']})':
+ # this line starts with a closing bracket
+ if indent[depth]:
+ if start[1] != indent[depth]:
+ yield (start, "E124 closing bracket does not match "
+ "visual indentation")
+ elif hang:
+ yield (start, "E123 closing bracket does not match "
+ "indentation of opening bracket's line")
+ elif visual_indent is True:
+ # visual indent is verified
+ if not indent[depth]:
+ indent[depth] = start[1]
+ elif visual_indent in (text, str):
+ # ignore token lined up with matching one from a previous line
+ pass
+ elif indent[depth] and start[1] < indent[depth]:
+ # visual indent is broken
+ yield (start, "E128 continuation line "
+ "under-indented for visual indent")
+ elif hang == 4 or (indent_next and rel_indent[row] == 8):
+ # hanging indent is verified
+ 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 hang % 4:
+ error = "E121", "indentation is not a multiple of four"
+ else:
+ error = "E126", "over-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
+
+ # keep track of bracket depth
+ if token_type == tokenize.OP:
+ if text in '([{':
+ depth += 1
+ indent.append(0)
+ 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]
+ 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]
+ 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 indent_next and rel_indent[-1] == 4:
+ yield (last_indent, "E125 continuation line does not distinguish "
+ "itself from next logical line")
def whitespace_before_parameters(logical_line, tokens):
@@ -255,6 +557,13 @@ def whitespace_before_parameters(logical_line, tokens):
- Immediately 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 = tokens[0][0]
prev_text = tokens[0][1]
@@ -264,97 +573,391 @@ def whitespace_before_parameters(logical_line, tokens):
if (token_type == tokenize.OP and
text in '([' and
start != prev_end and
- prev_type == tokenize.NAME 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
- (not iskeyword(prev_text))):
- return prev_end, "E211 whitespace before '%s'" % text
+ # 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 in the following situations:
- More than one space around an assignment (or other) operator to
align it with another.
+
+ Okay: a = 12 + 3
+ E221: a = 4 + 5
+ E222: a = 4 + 5
+ E223: a = 4\t+ 5
+ E224: a = 4 +\t5
"""
- line = logical_line
- for operator in operators:
- found = line.find(' ' + operator)
- if found > -1:
- return found, "E221 multiple spaces before operator"
- found = line.find(operator + ' ')
- if found > -1:
- return found, "E222 multiple spaces after operator"
- found = line.find('\t' + operator)
- if found > -1:
- return found, "E223 tab before operator"
- found = line.find(operator + '\t')
- if found > -1:
- return found, "E224 tab after operator"
+ 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"""
+ - 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).
+
+ - Use spaces around arithmetic operators.
+
+ 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 (tokenize.NL, tokenize.NEWLINE, tokenize.ERRORTOKEN):
+ # ERRORTOKEN is triggered by backticks in Python 3
+ 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"
+ else:
+ 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_type == tokenize.OP:
+ binary_usage = (prev_text in '}])')
+ elif prev_type == tokenize.NAME:
+ binary_usage = (prev_text not in KEYWORDS)
+ else:
+ binary_usage = (prev_type not in SKIP_TOKENS)
+
+ if binary_usage:
+ 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 in the following situations:
- More than one space around an assignment (or other) operator to
align it with another.
- JCR: This should also be applied around comma etc.
+ Note: these checks are disabled by default
+
+ Okay: a = (1, 2)
+ E241: a = (1, 2)
+ E242: a = (1,\t2)
"""
line = logical_line
- for separator in ',;:':
- found = line.find(separator + ' ')
- if found > -1:
- return found + 1, "E241 multiple spaces after '%s'" % separator
- found = line.find(separator + '\t')
- if found > -1:
- return found + 1, "E242 tab after '%s'" % separator
+ 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 imports_on_separate_lines(logical_line):
+def whitespace_around_named_parameter_equals(logical_line, tokens):
+ """
+ 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)
+
+ E251: def complex(real, imag = 0.0):
+ E251: return magic(r = real, i = imag)
+ """
+ parens = 0
+ no_space = False
+ prev_end = None
+ message = "E251 unexpected spaces around keyword / parameter equals"
+ for token_type, text, start, end, line in tokens:
+ if no_space:
+ no_space = False
+ if start != prev_end:
+ yield (prev_end, message)
+ elif token_type == tokenize.OP:
+ if text == '(':
+ parens += 1
+ elif text == ')':
+ parens -= 1
+ elif parens and text == '=':
+ no_space = True
+ if start != prev_end:
+ yield (prev_end, message)
+ prev_end = end
+
+
+def whitespace_before_inline_comment(logical_line, tokens):
+ """
+ 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.
+
+ Okay: x = x + 1 # Increment x
+ Okay: x = x + 1 # Increment x
+ E261: x = x + 1 # Increment x
+ E262: x = x + 1 #Increment x
+ E262: x = x + 1 # Increment x
"""
+ prev_end = (0, 0)
+ for token_type, text, start, end, line in tokens:
+ if token_type == tokenize.COMMENT:
+ if not line[:start[1]].strip():
+ continue
+ 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(' ')
+ if symbol not in ('#', '#:') or comment[:1].isspace():
+ yield start, "E262 inline comment should start with '# '"
+ 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 found > -1:
- return found, "E401 multiple imports on one line"
+ if -1 < found and ';' not in line[:found]:
+ yield found, "E401 multiple imports on one line"
def compound_statements(logical_line):
- """
+ r"""
Compound statements (multiple 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!
+
+ 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
"""
line = logical_line
+ last_char = len(line) - 1
found = line.find(':')
- if -1 < found < len(line) - 1:
+ if -1 < found < last_char:
before = line[:found]
- if (before.count('{') <= before.count('}') and # {'a': 1} (dict)
- before.count('[') <= before.count(']') and # [1:2] (slice)
- not re.search(r'\blambda\b', before)): # lambda x: x
- return found, "E701 multiple statements on one line (colon)"
+ if (before.count('{') <= before.count('}') and # {'a': 1} (dict)
+ before.count('[') <= before.count(']') and # [1:2] (slice)
+ before.count('(') <= before.count(')') and # (Python 3 annotation)
+ not LAMBDA_REGEX.search(before)): # lambda x: x
+ yield found, "E701 multiple statements on one line (colon)"
found = line.find(';')
if -1 < found:
- return found, "E702 multiple statements on one line (semicolon)"
+ if found < last_char:
+ yield found, "E702 multiple statements on one line (semicolon)"
+ else:
+ yield found, "E703 statement ends with a semicolon"
-def python_3000_has_key(logical_line):
+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"
+ """
+ prev_start = prev_end = parens = 0
+ for token_type, text, start, end, line in tokens:
+ if start[0] != prev_start and parens and backslash:
+ 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 comparison_to_singleton(logical_line):
+ """
+ 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:
+ E712: if arg == True:
+
+ 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 = COMPARE_SINGLETON_REGEX.search(logical_line)
+ if match:
+ same = (match.group(1) == '==')
+ singleton = 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(1), ("%s comparison to %s should be %s" %
+ (code, singleton, msg))
+
+
+def comparison_type(logical_line):
"""
- The {}.has_key() method will be removed in the future version of
- Python. Use the 'in' operation instead, like:
- d = {"a": 1, "b": 2}
- if "b" in d:
- print d["b"]
+ Object type comparisons should always use isinstance() instead of
+ comparing 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:
+ 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):
+ r"""
+ The {}.has_key() method is removed in the Python 3.
+ Use the 'in' operation instead.
+
+ Okay: if "alph" in d:\n print d["alph"]
+ W601: assert d.has_key('alph')
"""
pos = logical_line.find('.has_key(')
if pos > -1:
- return pos, "W601 .has_key() is deprecated, use 'in'"
+ yield pos, "W601 .has_key() is deprecated, use 'in'"
def python_3000_raise_comma(logical_line):
@@ -365,11 +968,41 @@ def python_3000_raise_comma(logical_line):
The paren-using form is preferred because when the exception arguments
are long or include string formatting, you don't need to use line
continuation characters thanks to the containing parentheses. The older
- form will be removed in Python 3000.
+ form is removed in Python 3.
+
+ Okay: raise DummyError("Message")
+ W602: raise DummyError, "Message"
"""
- match = raise_comma_match(logical_line)
- if match:
- return match.start(1), "W602 deprecated form of raising exception"
+ 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):
+ """
+ != can also be written <>, but this is an obsolete usage kept for
+ backwards compatibility only. New code should always use !=.
+ 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):
+ """
+ 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()'"
##############################################################################
@@ -377,26 +1010,63 @@ def python_3000_raise_comma(logical_line):
##############################################################################
+if '' == ''.encode():
+ # Python 2: implicit encoding.
+ def readlines(filename):
+ f = open(filename)
+ try:
+ return f.readlines()
+ finally:
+ f.close()
+
+ isidentifier = re.compile(r'[a-zA-Z_]\w*').match
+ stdin_get_value = sys.stdin.read
+else:
+ # Python 3
+ def readlines(filename):
+ f = open(filename, 'rb')
+ try:
+ 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):
+ f.close()
+ # Fall back if files are improperly declared
+ f = open(filename, encoding='latin-1')
+ return f.readlines()
+ finally:
+ f.close()
+
+ isidentifier = str.isidentifier
+
+ def stdin_get_value():
+ return TextIOWrapper(sys.stdin.buffer, errors='ignore').read()
+readlines.__doc__ = " Read the source code."
+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')
+ >>> expand_indent('\t')
8
- >>> expand_indent(' \\t')
+ >>> expand_indent(' \t')
8
- >>> expand_indent(' \\t')
+ >>> expand_indent(' \t')
8
- >>> expand_indent(' \\t')
+ >>> 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
+ result = result // 8 * 8 + 8
elif char == ' ':
result += 1
else:
@@ -404,34 +1074,6 @@ def expand_indent(line):
return result
-##############################################################################
-# Framework to run all checks
-##############################################################################
-
-
-def message(text):
- """Print a message."""
- # print >> sys.stderr, options.prog + ': ' + text
- # print >> sys.stderr, text
- print text
-
-
-def find_checks(argument_name):
- """
- Find all globally visible functions where the first argument name
- starts with argument_name.
- """
- checks = []
- function_type = type(find_checks)
- for name, function in globals().iteritems():
- if type(function) is function_type:
- args = inspect.getargspec(function)[0]
- if len(args) >= 1 and args[0].startswith(argument_name):
- checks.append((name, function, args))
- checks.sort()
- return checks
-
-
def mute_string(text):
"""
Replace contents with 'xxx' to prevent syntax matching.
@@ -443,32 +1085,135 @@ def mute_string(text):
>>> mute_string("r'abc'")
"r'xxx'"
"""
- start = 1
- end = len(text) - 1
# String modifiers (e.g. u or r)
- if text.endswith('"'):
- start += text.index('"')
- elif text.endswith("'"):
- start += text.index("'")
+ start = text.index(text[-1]) + 1
+ end = len(text) - 1
# Triple quotes
- if text.endswith('"""') or text.endswith("'''"):
+ if text[-3:] in ('"""', "'''"):
start += 2
end -= 2
return text[:start] + 'x' * (end - start) + text[end:]
-class Checker:
+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 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)
+
+
+##############################################################################
+# 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 where the first argument name
+ is '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):
+ 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.verbose = options.verbose
self.filename = filename
- self.lines = file(filename).readlines()
- self.physical_checks = find_checks('physical_line')
- self.logical_checks = find_checks('logical_line')
- options.counters['physical lines'] = \
- options.counters.get('physical lines', 0) + len(self.lines)
+ 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
+ self.report = report or options.report
+ self.report_error = self.report.error
+
+ def report_invalid_syntax(self):
+ exc_type, exc = sys.exc_info()[:2]
+ offset = exc.args[1]
+ if len(offset) > 2:
+ offset = offset[1:3]
+ self.report_error(offset[0], offset[1] or 0,
+ 'E901 %s: %s' % (exc_type.__name__, exc.args[0]),
+ self.report_invalid_syntax)
+ report_invalid_syntax.__doc__ = " Check if the syntax is valid."
def readline(self):
"""
@@ -503,9 +1248,9 @@ class Checker:
Run all physical checks on a raw input line.
"""
self.physical_line = line
- if self.indent_char is None and len(line) and line[0] in ' \t':
+ if self.indent_char is None and line[:1] in WHITESPACE:
self.indent_char = line[0]
- for name, check, argument_names in self.physical_checks:
+ for name, check, argument_names in self._physical_checks:
result = self.run_check(check, argument_names)
if result is not None:
offset, text = result
@@ -521,21 +1266,21 @@ class Checker:
previous = None
for token in self.tokens:
token_type, text = token[0:2]
- if token_type in (tokenize.COMMENT, tokenize.NL,
- tokenize.INDENT, tokenize.DEDENT,
- tokenize.NEWLINE):
+ if token_type in SKIP_TOKENS:
continue
if token_type == tokenize.STRING:
text = mute_string(text)
if previous:
- end_line, end = previous[3]
- start_line, start = token[2]
- if end_line != start_line: # different row
- if self.lines[end_line - 1][end - 1] not in '{[(':
+ end_row, end = previous[3]
+ start_row, start = token[2]
+ if end_row != start_row: # different row
+ prev_text = self.lines[end_row - 1][end - 1]
+ if prev_text == ',' or (prev_text not in '{[('
+ and text not in '}])'):
logical.append(' ')
length += 1
- elif end != start: # different column
- fill = self.lines[end_line - 1][end:start]
+ elif end != start: # different column
+ fill = self.lines[end_row - 1][end:start]
logical.append(fill)
length += len(fill)
self.mapping.append((length, token))
@@ -543,300 +1288,573 @@ class Checker:
length += len(text)
previous = token
self.logical_line = ''.join(logical)
- assert self.logical_line.lstrip() == self.logical_line
- assert self.logical_line.rstrip() == self.logical_line
+ # With Python 2, if the line ends with '\r\r\n' the assertion fails
+ # assert self.logical_line.strip() == self.logical_line
def check_logical(self):
"""
Build a line from tokens and run all logical checks on it.
"""
- options.counters['logical lines'] = \
- options.counters.get('logical lines', 0) + 1
self.build_tokens_line()
+ self.report.increment_logical_line()
first_line = self.lines[self.mapping[0][1][2][0] - 1]
indent = first_line[:self.mapping[0][1][2][1]]
self.previous_indent_level = self.indent_level
self.indent_level = expand_indent(indent)
- if options.verbose >= 2:
- print self.logical_line[:80].rstrip()
- for name, check, argument_names in self.logical_checks:
- if options.verbose >= 3:
- print ' ', name
- result = self.run_check(check, argument_names)
- if result is not None:
+ 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)
+ for result in self.run_check(check, argument_names):
offset, text = result
- if type(offset) is tuple:
- original_number, original_offset = offset
+ if isinstance(offset, tuple):
+ orig_number, orig_offset = offset
else:
for token_offset, token in self.mapping:
if offset >= token_offset:
- original_number = token[2][0]
- original_offset = (token[2][1]
- + offset - token_offset)
- self.report_error(original_number, original_offset,
- text, check)
+ orig_number = token[2][0]
+ orig_offset = (token[2][1] + offset - token_offset)
+ self.report_error(orig_number, orig_offset, text, check)
self.previous_logical = self.logical_line
- def check_all(self):
+ def check_ast(self):
+ try:
+ tree = compile(''.join(self.lines), '', 'exec', PyCF_ONLY_AST)
+ except SyntaxError:
+ 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 noqa(self.lines[lineno - 1]):
+ self.report_error(lineno, offset, text, check)
+
+ def generate_tokens(self):
+ if self._io_error:
+ self.report_error(1, 0, 'E902 %s' % self._io_error, readlines)
+ tokengen = tokenize.generate_tokens(self.readline_check_physical)
+ try:
+ for token in tokengen:
+ yield token
+ except (SyntaxError, tokenize.TokenError):
+ self.report_invalid_syntax()
+
+ def check_all(self, expected=None, line_offset=0):
"""
Run all checks on the input file.
"""
- self.file_errors = 0
+ self.report.init_file(self.filename, self.lines, expected, line_offset)
+ if self._ast_checks:
+ self.check_ast()
self.line_number = 0
self.indent_char = None
self.indent_level = 0
self.previous_logical = ''
- self.blank_lines = 0
self.tokens = []
+ self.blank_lines = blank_lines_before_comment = 0
parens = 0
- for token in tokenize.generate_tokens(self.readline_check_physical):
- # print tokenize.tok_name[token[0]], repr(token)
+ for token in self.generate_tokens():
self.tokens.append(token)
token_type, text = token[0:2]
- if token_type == tokenize.OP and text in '([{':
- parens += 1
- if token_type == tokenize.OP and text in '}])':
- parens -= 1
- if token_type == tokenize.NEWLINE and not parens:
- self.check_logical()
- self.blank_lines = 0
- self.tokens = []
- if token_type == tokenize.NL and not parens:
- self.blank_lines += 1
- self.tokens = []
- if token_type == tokenize.COMMENT:
- source_line = token[4]
- token_start = token[2][1]
- if source_line[:token_start].strip() == '':
+ 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 == tokenize.NEWLINE:
+ if self.blank_lines < blank_lines_before_comment:
+ self.blank_lines = blank_lines_before_comment
+ self.check_logical()
+ self.tokens = []
+ self.blank_lines = blank_lines_before_comment = 0
+ elif token_type == tokenize.NL:
+ if len(self.tokens) == 1:
+ # The physical line contains only this token.
+ self.blank_lines += 1
+ self.tokens = []
+ elif token_type == tokenize.COMMENT and len(self.tokens) == 1:
+ if blank_lines_before_comment < self.blank_lines:
+ blank_lines_before_comment = self.blank_lines
self.blank_lines = 0
- return self.file_errors
+ if COMMENT_WITH_NL:
+ # The comment also ends a physical line
+ self.tokens = []
+ 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 report_error(self, line_number, offset, text, check):
- """
- Report an error, according to options.
- """
- if options.quiet == 1 and not self.file_errors:
- message(self.filename)
- self.file_errors += 1
+ 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]
- options.counters[code] = options.counters.get(code, 0) + 1
- options.messages[code] = text[5:]
- if options.quiet:
+ if self._ignore_code(code):
return
- if options.testsuite:
- base = os.path.basename(self.filename)[:4]
- if base == code:
- return
- if base[0] == 'E' and code[0] == 'W':
- return
- if ignore_code(code):
+ 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 options.counters[code] == 1 or options.repeat:
- message("%s:%s:%d: %s" %
- (self.filename, line_number, offset + 1, text))
- if options.show_source:
- line = self.lines[line_number - 1]
- message(line.rstrip())
- message(' ' * offset + '^')
- if options.show_pep8:
- message(check.__doc__.lstrip('\n').rstrip())
-
-
-def input_file(filename):
- """
- Run all checks on a Python source file.
- """
- if excluded(filename) or not filename_match(filename):
- return 0
- if options.verbose:
- message('checking ' + filename)
- options.counters['files'] = options.counters.get('files', 0) + 1
- errors = Checker(filename).check_all()
- if options.testsuite and not errors:
- message("%s: %s" % (filename, "no errors found"))
- return errors
-
-
-def input_dir(dirname):
- """
- Check all Python source files in this directory and all subdirectories.
- """
- dirname = dirname.rstrip('/')
- if excluded(dirname):
- return 0
- errors = 0
- for root, dirs, files in os.walk(dirname):
- if options.verbose:
- message('directory ' + root)
- options.counters['directories'] = \
- options.counters.get('directories', 0) + 1
- dirs.sort()
- for subdir in dirs:
- if excluded(subdir):
- dirs.remove(subdir)
- files.sort()
- for filename in files:
- errors += input_file(os.path.join(root, filename))
- return errors
-
-
-def excluded(filename):
- """
- Check if options.exclude contains a pattern that matches filename.
- """
- basename = os.path.basename(filename)
- for pattern in options.exclude:
- if fnmatch(basename, pattern):
- # print basename, 'excluded because it matches', pattern
- return True
-
-
-def filename_match(filename):
- """
- Check if options.filename contains a pattern that matches filename.
- If options.filename is unspecified, this always returns True.
- """
- if not options.filename:
- return True
- for pattern in options.filename:
- if fnmatch(filename, pattern):
- return True
-
-
-def ignore_code(code):
- """
- Check if options.ignore contains a prefix of the error code.
- """
- for ignore in options.ignore:
- if code.startswith(ignore):
- return True
-
-
-def get_error_statistics():
- """Get error statistics."""
- return get_statistics("E")
+ 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_warning_statistics():
- """Get warning statistics."""
- return get_statistics("W")
+ 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.
-def get_statistics(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(' ' * offset + '^')
+ if self._show_pep8 and doc:
+ print(doc.lstrip('\n').rstrip())
+ return self.file_errors
- 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
- """
- stats = []
- keys = options.messages.keys()
- keys.sort()
- for key in keys:
- if key.startswith(prefix):
- stats.append('%-7s %s %s' %
- (options.counters[key], key, options.messages[key]))
- return stats
+class DiffReport(StandardReport):
+ """Collect and print the results for the changed lines only."""
-def print_statistics(prefix=''):
- """Print overall statistics (number of errors and warnings)."""
- for line in get_statistics(prefix):
- print line
+ 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', None)
+ parser = kwargs.pop('parser', None)
+ options, self.paths = process_options(
+ parse_argv=parse_argv, config_file=config_file, parser=parser)
+ if args or kwargs:
+ # build options from dict
+ options_dict = dict(*args, **kwargs)
+ 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
+
+ for index, value in enumerate(options.exclude):
+ options.exclude[index] = value.rstrip('/')
+ 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 = tuple(options.ignore or options.select and ('',))
+ 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(os.path.join(root, subdir)):
+ dirs.remove(subdir)
+ for filename in sorted(files):
+ # contain a pattern that matches?
+ if ((filename_match(filename, filepatterns) and
+ not self.excluded(filename))):
+ runner(os.path.join(root, filename))
+
+ def excluded(self, filename):
+ """
+ Check if options.exclude contains a pattern that matches filename.
+ """
+ basename = os.path.basename(filename)
+ return any((filename_match(filename, self.options.exclude,
+ default=False),
+ filename_match(basename, self.options.exclude,
+ default=False)))
-def print_benchmark(elapsed):
- """
- Print benchmark numbers.
- """
- print '%-7.2f %s' % (elapsed, 'seconds elapsed')
- keys = ['directories', 'files',
- 'logical lines', 'physical lines']
- for key in keys:
- if key in options.counters:
- print '%-7d %s per second (%d total)' % (
- options.counters[key] / elapsed, key,
- options.counters[key])
+ 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.
+ """
+ return (code.startswith(self.options.ignore) and
+ not code.startswith(self.options.select))
-def process_options(arglist=None):
- """
- Process options passed either via arglist or via command line args.
- """
- global options, args
- usage = "%prog [options] input ..."
- parser = OptionParser(usage)
+ def get_checks(self, argument_name):
+ """
+ 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', '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('--exclude', metavar='patterns', default=default_exclude,
- help="skip matches (default %s)" % default_exclude)
- parser.add_option('--filename', metavar='patterns',
- help="only check matching files (e.g. *.py)")
+ 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)")
- parser.add_option('--repeat', action='store_true',
- help="show all occurrences of the same error")
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")
+ 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('--benchmark', action='store_true',
- help="measure processing speed")
- parser.add_option('--testsuite', metavar='dir',
- help="run regression tests from dir")
- parser.add_option('--doctest', action='store_true',
- help="run doctest on myself")
+ 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('--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 both user configuration and local configuration."""
+ config = RawConfigParser()
+
+ user_conf = options.config
+ if user_conf and os.path.isfile(user_conf):
+ if options.verbose:
+ print('user configuration: %s' % user_conf)
+ config.read(user_conf)
+
+ parent = tail = args and os.path.abspath(os.path.commonprefix(args))
+ while tail:
+ for name in PROJECT_CONFIG:
+ local_conf = os.path.join(parent, name)
+ if os.path.isfile(local_conf):
+ break
+ else:
+ parent, tail = os.path.split(parent)
+ continue
+ if options.verbose:
+ print('local configuration: %s' % local_conf)
+ config.read(local_conf)
+ break
+
+ 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 options.verbose > 1:
+ print(" %s = %s" % (opt, config.get(pep8_section, opt)))
+ if opt.replace('_', '-') not in parser.config_options:
+ print("Unknown option: '%s'\n not in [%s]" %
+ (opt, ' '.join(parser.config_options)))
+ sys.exit(1)
+ 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)
+ 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."""
+ if not arglist and not parse_argv:
+ # Don't read the command line if the module is used as a library.
+ arglist = []
+ if not parser:
+ parser = get_parser()
+ if not parser.has_option('--config'):
+ if config_file is True:
+ config_file = DEFAULT_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 (default: %default)")
options, args = parser.parse_args(arglist)
- if options.testsuite:
+ options.reporter = None
+
+ if options.ensure_value('testsuite', False):
args.append(options.testsuite)
- if len(args) == 0:
- parser.error('input not specified')
- options.prog = os.path.basename(sys.argv[0])
- options.exclude = options.exclude.split(',')
- for index in range(len(options.exclude)):
- options.exclude[index] = options.exclude[index].rstrip('/')
+ 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
+
if options.filename:
options.filename = options.filename.split(',')
+ options.exclude = options.exclude.split(',')
+ if options.select:
+ options.select = options.select.split(',')
if options.ignore:
options.ignore = options.ignore.split(',')
- else:
- options.ignore = []
- options.counters = {}
- options.messages = {}
+
+ 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.
- """
- options, args = process_options()
- if options.doctest:
- import doctest
- return doctest.testmod()
- start_time = time.time()
- errors = 0
- for path in args:
- # skip emacs backups
- if path.startswith(".#"):
- continue
- if os.path.isdir(path):
- errors += input_dir(path)
- else:
- errors += input_file(path)
- elapsed = time.time() - start_time
+ """Parse options and run checks on Python source."""
+ pep8style = StyleGuide(parse_argv=True, config_file=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:
- print_statistics()
+ report.print_statistics()
if options.benchmark:
- print_benchmark(elapsed)
- return errors > 0
+ 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__':
- sys.exit(_main())
+ _main()
diff --git a/misc/pre-commit b/misc/pre-commit
deleted file mode 100755
index 1f37d866..00000000
--- a/misc/pre-commit
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/sh
-#
-# An example hook script to verify what is about to be committed.
-# Called by git-commit with no arguments. The hook should
-# exit with non-zero status after issuing an appropriate message if
-# it wants to stop the commit.
-#
-# To enable this hook, make this file executable.
-
-# This is slightly modified from Andrew Morton's Perfect Patch.
-# Lines you introduce should not have trailing whitespace.
-# Also check for an indentation that has SP before a TAB.
-
-if git-rev-parse --verify HEAD 2>/dev/null
-then
- git-diff-index -p -M --cached HEAD --
-else
- # NEEDSWORK: we should produce a diff with an empty tree here
- # if we want to do the same verification for the initial import.
- :
-fi |
-perl -e '
- my $found_bad = 0;
- my $filename;
- my $reported_filename = "";
- my $lineno;
- sub bad_line {
- my ($why, $line) = @_;
- if (!$found_bad) {
- print STDERR "*\n";
- print STDERR "* You have some suspicious patch lines:\n";
- print STDERR "*\n";
- $found_bad = 1;
- }
- if ($reported_filename ne $filename) {
- print STDERR "* In $filename\n";
- $reported_filename = $filename;
- }
- print STDERR "* $why (line $lineno)\n";
- print STDERR "$filename:$lineno:$line\n";
- }
- while (<>) {
- if (m|^diff --git a/(.*) b/\1$|) {
- $filename = $1;
- next;
- }
- if (/^@@ -\S+ \+(\d+)/) {
- $lineno = $1 - 1;
- next;
- }
- if (/^ /) {
- $lineno++;
- next;
- }
- if (s/^\+//) {
- $lineno++;
- chomp;
- if (/\s$/) {
- bad_line("trailing whitespace", $_);
- }
- if (/^\s* \t/) {
- bad_line("indent SP followed by a TAB", $_);
- }
- if (/^([<>])\1{6} |^={7}$/) {
- bad_line("unresolved merge conflict", $_);
- }
- }
- }
- exit($found_bad);
-'
-
-CHECK_FILE=.make-check-passed
-if ! test -f $CHECK_FILE; then
- echo "You need to run make check before committing"
- exit 1
-fi
-
-# Need to run make check at least once every 20 minutes
-MODIFIED=`stat -c %Y $CHECK_FILE`
-NOW=`date +%s`
-DELTA=$(($NOW-MODIFIED))
-if test "$DELTA" -ge "1200"; then
- echo "You haven't ran make check in $((DELTA / 60)) minutes."
- exit 1
-fi
-
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b6d6ebd2..56fc4796 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,18 +1,12 @@
include $(top_srcdir)/common.mk
SUBDIRS = . scanner repository offsets warn
-DIST_SUBDIRS = $(SUBDIRS)
-if BUILD_DOCTOOL
-SUBDIRS += doctool
-else
-DIST_SUBDIRS += doctool
-endif
EXTRA_DIST=
BUILT_SOURCES=
CLEANFILES=
-INCLUDES = $(GOBJECT_CFLAGS)
+AM_CFLAGS = $(GOBJECT_CFLAGS)
LIBADD = $(GOBJECT_LIBS)
testsdir = $(datadir)/gobject-introspection-1.0/tests
@@ -34,7 +28,9 @@ BUILT_SOURCES += everything.c everything.h
CLEANFILES += \
$(BUILT_SOURCES) \
everything-stamp.h \
+ Everything-1.0.gir \
Everything-1.0.typelib \
+ GIMarshallingTests-1.0.gir \
GIMarshallingTests-1.0.typelib
everything-stamp.h: Makefile
diff --git a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-property-example.page b/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-property-example.page
deleted file mode 100644
index e7702a21..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-property-example.page
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.property-example"
- type="topic"
- style="property"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="property"/>
- <title type="link" role="topic">property-example</title>
- </info>
- <title>DocExamplesObj:property-example</title>
-<p>This is an example of how to document a property.</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-signal-example.page b/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-signal-example.page
deleted file mode 100644
index 548588c8..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-signal-example.page
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.signal-example"
- type="topic"
- style="signal"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="signal"/>
- <title type="link" role="topic">signal-example</title>
- </info>
- <title>DocExamplesObj::signal-example</title>
-<p>This is an example of how to document a signal.</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-vfunc.page b/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-vfunc.page
deleted file mode 100644
index 345d64b9..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj-vfunc.page
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.Obj-vfunc"
- type="topic"
- style="vfunc"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="vfunc"/>
- </info>
- <title>vfunc</title>
-<synopsis><code mime="text/x-csrc">
-</code></synopsis>
-<p>This is an example of how to document a vfunc.</p>
-
-<table>
-<tr>
-<td><p>first_arg :</p></td>
-<td><p>first argument</p></td>
-</tr>
-<tr>
-<td><p>Returns :</p></td>
-<td></td>
-</tr>
-</table>
-<p>Since 0.99</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.method.page b/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.method.page
deleted file mode 100644
index 5f27f96f..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.method.page
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-
-<page id="DocExamples.Obj.method"
- type="topic"
- style="method"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="method"/>
- <api:function>
- <api:returns>
- <api:type>gboolean</api:type>
- </api:returns>
- <api:name>doc_examples_obj_method</api:name>
- <api:arg>
- <api:type>DocExamplesObj *</api:type>
- <api:name>self</api:name>
- </api:arg>
- <api:arg>
- <api:type>gint</api:type>
- <api:name>first_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>gfloat</api:type>
- <api:name>second_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>gboolean</api:type>
- <api:name>boolean_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>gpointer</api:type>
- <api:name>pointer_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>gchar*</api:type>
- <api:name>string</api:name>
- </api:arg>
- </api:function>
- </info>
- <title>doc_examples_obj_method</title>
-<synopsis><code mime="text/x-csrc">
-gboolean doc_examples_obj_method (DocExamplesObj *self,
-gint first_arg,
- gfloat second_arg,
- gboolean boolean_arg,
- gpointer pointer_arg,
- gchar* string);
-</code></synopsis>
-<p>This is an example of how to document a method.</p><p>You should call this on a <link xref="DocExamples.Obj">DocExamples.Obj</link> that was
-created with <link xref="DocExamples.Obj.new">doc_examples_obj_new</link>.</p><p>This should be a %FALSEALARM.</p>
-
-<table>
-<tr>
-<td><p>first_arg :</p></td>
-<td><p>A <link xref="DocExamples.Obj">DocExamples.Obj</link>.</p></td>
-</tr>
-<tr>
-<td><p>second_arg :</p></td>
-<td><p>second argument</p></td>
-</tr>
-<tr>
-<td><p>boolean_arg :</p></td>
-<td><p>You should always pass TRUE.</p></td>
-</tr>
-<tr>
-<td><p>pointer_arg :</p></td>
-<td><p>If not NULL, do a thing.</p></td>
-</tr>
-<tr>
-<td><p>string :</p></td>
-<td><p>A NULL-terminated string.</p></td>
-</tr>
-<tr>
-<td><p>Returns :</p></td>
-<td><p>Either FALSE or something FALSE-y.</p></td>
-</tr>
-</table>
-<p>Since 0.99</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.new.page b/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.new.page
deleted file mode 100644
index c20d8c5f..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.new.page
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0"?>
-
-<page id="DocExamples.Obj.new"
- type="topic"
- style="constructor"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="constructor"/>
- <api:function>
- <api:returns>
- <api:type>DocExamplesObj*</api:type>
- </api:returns>
- <api:name>doc_examples_obj_new</api:name>
- </api:function>
- </info>
- <title>doc_examples_obj_new</title>
-<synopsis><code mime="text/x-csrc">
-DocExamplesObj* doc_examples_obj_new (void);
-</code></synopsis>
-
-
-<table>
-<tr>
-<td><p>Returns :</p></td>
-<td></td>
-</tr>
-</table>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.page b/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.page
deleted file mode 100644
index 0a46bd23..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.Obj.page
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.Obj"
- type="guide"
- style="class"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index" group="class"/>
- </info>
- <title>DocExamplesObj</title>
-<p>This is an example of how to document a class</p><p>This class has a signal: <link xref="DocExamples.Obj-signal-example">DocExamples.Obj::signal-example</link>.</p><p>And also has a property: <link xref="DocExamples.Obj-property-example">DocExamples.Obj:property-example</link>.</p>
-<p>Since 0.99</p>
- <synopsis ui:expanded="no">
- <title>Hierarchy</title>
- <tree>
- <item>
- <code>GObjectObject</code>
- </item>
- </tree>
- </synopsis>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-csrc"
- groups="constructor" style="linklist">
- <title>Constructors</title>
- </links>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-csrc"
- groups="method" style="linklist">
- <title>Methods</title>
- </links>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-csrc"
- groups="function" style="linklist">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="property" style="linklist">
- <title>Properties</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="signal" style="linklist">
- <title>Signals</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last" style="linklist">
- <title>Other</title>
- </links>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.ObjClass.page b/tests/doctool/DocExamples-1.0-C-expected/DocExamples.ObjClass.page
deleted file mode 100644
index c3a958d6..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/DocExamples.ObjClass.page
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.ObjClass"
- type="guide"
- style="record"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index"/>
- </info>
- <title>DocExamplesObjClass</title>
-
-</page>
diff --git a/tests/doctool/DocExamples-1.0-C-expected/index.page b/tests/doctool/DocExamples-1.0-C-expected/index.page
deleted file mode 100644
index a61ea759..00000000
--- a/tests/doctool/DocExamples-1.0-C-expected/index.page
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<page id="index"
- type="guide"
- style="namespace"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- </info>
- <title>DocExamples Documentation</title>
- <links type="topic" ui:expanded="yes" groups="class" style="linklist">
- <title>Classes</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="function" style="linklist">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last" style="linklist">
- <title>Other</title>
- </links>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-property-example.page b/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-property-example.page
deleted file mode 100644
index be1e239b..00000000
--- a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-property-example.page
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.Obj-property-example"
- type="topic"
- style="property"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="property"/>
- <title type="link" role="topic">property-example</title>
- </info>
- <title>DocExamples.Obj:property-example</title>
-<synopsis><code mime="text/x-python">
-"property-example" {utf8: gint8} : Read / Write
-</code></synopsis>
-<p>This is an example of how to document a property.</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-signal-example.page b/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-signal-example.page
deleted file mode 100644
index d83d2d82..00000000
--- a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-signal-example.page
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.Obj-signal-example"
- type="topic"
- style="signal"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="signal"/>
- <title type="link" role="topic">signal-example</title>
- </info>
- <title>DocExamples.Obj::signal-example</title>
-<synopsis><code mime="text/x-python">
-def callback(obj, int_param, float_param, user_param1, ...)
-</code></synopsis>
-<p>This is an example of how to document a signal.</p>
-
-<table>
-<tr>
-<td><p>obj :</p></td>
-<td><p>instance of DocExamples.Obj that is emitting the signal</p></td>
-</tr>
-<tr>
-<td><p>int_param :</p></td>
-<td><p>a parameter of type int</p></td>
-</tr>
-<tr>
-<td><p>float_param :</p></td>
-<td><p>a parameter of type float</p></td>
-</tr>
-<tr>
-<td><p>user_param1 :</p></td>
-<td><p>first user parameter (if any) specified with the connect() method</p></td>
-</tr>
-<tr>
-<td><p>... :</p></td>
-<td><p>additional user parameters (if any)</p></td>
-</tr>
-</table>
-<p>Since 0.99</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-vfunc.page b/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-vfunc.page
deleted file mode 100644
index 4e394d2d..00000000
--- a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj-vfunc.page
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.Obj-vfunc"
- type="topic"
- style="vfunc"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="vfunc"/>
- <title type="link" role="topic">vfunc</title>
- </info>
- <title>DocExamples.Obj.vfunc</title>
-<synopsis><code mime="text/x-python">
-@accepts(gint)
-@returns(none)
-def do_vfunc(self, first_arg):
-</code></synopsis>
-<p>This is an example of how to document a vfunc.</p>
-
-<table>
-<tr>
-<td><p>first_arg :</p></td>
-<td><p>first argument</p></td>
-</tr>
-</table>
-<p>Since 0.99</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.method.page b/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.method.page
deleted file mode 100644
index 02f3a002..00000000
--- a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.method.page
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-
-<page id="DocExamples.Obj.method"
- type="topic"
- style="method"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="DocExamples.Obj" group="method"/>
- <api:function>
- <api:returns>
- <api:type>gboolean</api:type>
- </api:returns>
- <api:name>doc_examples_obj_method</api:name>
- <api:arg>
- <api:type>DocExamplesObj *</api:type>
- <api:name>self</api:name>
- </api:arg>
- <api:arg>
- <api:type>gint</api:type>
- <api:name>first_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>gfloat</api:type>
- <api:name>second_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>gboolean</api:type>
- <api:name>boolean_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>gpointer</api:type>
- <api:name>pointer_arg</api:name>
- </api:arg>
- <api:arg>
- <api:type>utf8</api:type>
- <api:name>string</api:name>
- </api:arg>
- </api:function>
- </info>
- <title>method</title>
-<synopsis><code mime="text/x-python">
-@accepts(gint, gfloat, gboolean, gpointer, utf8)
-@returns(gboolean)
-def method(first_arg, second_arg, boolean_arg, pointer_arg, string)
-</code></synopsis>
-<p>This is an example of how to document a method.</p><p>You should call this on a <link xref="DocExamples.Obj">DocExamples.Obj</link> that was
-created with <link xref="DocExamples.Obj.new">Obj.new</link>.</p><p>This should be a %FALSEALARM.</p>
-
-<table>
-<tr>
-<td><p>first_arg :</p></td>
-<td><p>A <link xref="DocExamples.Obj">DocExamples.Obj</link>.</p></td>
-</tr>
-<tr>
-<td><p>second_arg :</p></td>
-<td><p>second argument</p></td>
-</tr>
-<tr>
-<td><p>boolean_arg :</p></td>
-<td><p>You should always pass True.</p></td>
-</tr>
-<tr>
-<td><p>pointer_arg :</p></td>
-<td><p>If not None, do a thing.</p></td>
-</tr>
-<tr>
-<td><p>string :</p></td>
-<td><p>A None-terminated string.</p></td>
-</tr>
-<tr>
-<td><p>Returns :</p></td>
-<td><p>Either False or something False-y.</p></td>
-</tr>
-</table>
-<p>Since 0.99</p>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.page b/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.page
deleted file mode 100644
index 071abf1a..00000000
--- a/tests/doctool/DocExamples-1.0-Python-expected/DocExamples.Obj.page
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0"?>
-<page id="DocExamples.Obj"
- type="guide"
- style="class"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:api="http://projectmallard.org/experimental/api/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- <link type="guide" xref="index" group="class"/>
- </info>
- <title>DocExamples.Obj</title>
-<p>This is an example of how to document a class</p><p>This class has a signal: <link xref="DocExamples.Obj-signal-example">DocExamples.Obj::signal-example</link>.</p><p>And also has a property: <link xref="DocExamples.Obj-property-example">DocExamples.Obj:property-example</link>.</p>
-
- <synopsis><code>
-from gi.repository import DocExamples
-
-obj = DocExamples.Obj(<link xref='DocExamples.Obj-property-example'>property_example</link>=value) </code></synopsis>
-
-<p>Since 0.99</p>
- <synopsis>
- <title>Hierarchy</title>
- <tree>
- <item>
- <code>GObject.Object</code>
- <item>
- <code>DocExamples.Obj</code>
- </item>
- </item>
- </tree>
- </synopsis>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-python"
- groups="method" style="linklist">
- <title>Methods</title>
- </links>
- <links type="topic" ui:expanded="yes"
- api:type="function" api:mime="text/x-python"
- groups="function" style="linklist">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="property" style="linklist">
- <title>Properties</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="signal" style="linklist">
- <title>Signals</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="vfunc" style="linklist">
- <title>Virtual functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last" style="linklist">
- <title>Other</title>
- </links>
-</page>
diff --git a/tests/doctool/DocExamples-1.0-Python-expected/index.page b/tests/doctool/DocExamples-1.0-Python-expected/index.page
deleted file mode 100644
index fc6a9b7d..00000000
--- a/tests/doctool/DocExamples-1.0-Python-expected/index.page
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<page id="index"
- type="guide"
- style="namespace"
- xmlns="http://projectmallard.org/1.0/"
- xmlns:ui="http://projectmallard.org/experimental/ui/">
- <info>
- </info>
- <title>DocExamples Documentation</title>
- <links type="topic" ui:expanded="yes" groups="class">
- <title>Classes</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="function">
- <title>Functions</title>
- </links>
- <links type="topic" ui:expanded="yes" groups="#first #default #last">
- <title>Other</title>
- </links>
-</page>
diff --git a/tests/doctool/Makefile.am b/tests/doctool/Makefile.am
deleted file mode 100644
index 60183d00..00000000
--- a/tests/doctool/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-include $(top_srcdir)/common.mk
-include $(top_srcdir)/Makefile.introspection
-
-INTROSPECTION_SCANNER_ARGS += --warn-all --warn-error -I.
-
-check_LTLIBRARIES = \
- libdocexamples.la
-
-AM_CFLAGS = $(GOBJECT_CFLAGS)
-LIBS = $(GOBJECT_LIBS)
-
-libdocexamples_la_SOURCES = $(srcdir)/doc-examples-obj.c $(srcdir)/doc-examples-obj.h
-
-GIRS =
-TYPELIBS = $(GIRS:.gir=.typelib)
-INTROSPECTION_GIRS = $(GIRS)
-CHECK_TARGETS = $(GIRS:.gir=-C.page.check) $(GIRS:.gir=-Python.page.check)
-MALLARD_DIRS = $(GIRS:.gir=-C) $(GIRS:.gir=-Python)
-EXPECTED_MALLARD_DIRS = $(MALLARD_DIRS:=-expected)
-CLEANFILES = $(TYPELIBS) $(GIRS)
-BUILT_SOURCES = $(MALLARD_DIRS)
-EXTRA_DIST = $(EXPECTED_MALLARD_DIRS)
-
-DocExamples-1.0.gir: $(top_builddir)/Gio-2.0.gir libdocexamples.la
-DocExamples_1_0_gir_LIBS = libdocexamples.la
-DocExamples_1_0_gir_INCLUDES = cairo-1.0 Gio-2.0
-DocExamples_1_0_gir_FILES = $(libdocexamples_la_SOURCES)
-#DocExamples_1_0_gir_SCANNERFLAGS = --c-include="regress.h"
-GIRS += DocExamples-1.0.gir
-
-%-C: %.gir
- mkdir $*-C ; rm -f $*-C/*.page ; $(INTROSPECTION_DOCTOOL) --language C $*.gir -o $*-C/ && echo " GEN $*-C/index.page"
-
-%-Python: %.gir
- mkdir $*-Python ; rm -f $*-Python/*.page ; $(INTROSPECTION_DOCTOOL) --language Python $*.gir -o $*-Python/ && echo " GEN $*-Python/index.page"
-
-%-C.page.check: %-C
- @diff -u -U 10 $(srcdir)/$*-C-expected $*-C && echo " TEST $*-C" && rm -rf $*-C
-
-%-Python.page.check: %-Python
- @diff -u -U 10 $(srcdir)/$*-Python-expected $*-Python && echo " TEST $*-Python" && rm -rf $*-Python
-
-check-local: $(CHECK_TARGETS) $(TYPELIBS)
-clean-local:
- @rm -rf $(MALLARD_DIRS)
diff --git a/tests/doctool/doc-examples-obj.c b/tests/doctool/doc-examples-obj.c
deleted file mode 100644
index 44360d9d..00000000
--- a/tests/doctool/doc-examples-obj.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* doc-examples-obj.c */
-
-#include "doc-examples-obj.h"
-
-/**
- * DocExamplesObj:
- *
- * This is an example of how to document a class
- *
- * This class has a signal: #DocExamplesObj::signal-example.
- *
- * And also has a property: #DocExamplesObj:property-example.
- *
- * Since: 0.99
- */
-
-G_DEFINE_TYPE (DocExamplesObj, doc_examples_obj, G_TYPE_OBJECT)
-
-static void
-doc_examples_obj_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id)
- {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-}
-
-static void
-doc_examples_obj_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- switch (property_id)
- {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-}
-
-static void
-doc_examples_obj_class_init (DocExamplesObjClass *klass)
-{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- GParamSpec *pspec;
-
- gobject_class->get_property = doc_examples_obj_get_property;
- gobject_class->set_property = doc_examples_obj_set_property;
-
- /**
- * DocExamplesObj::signal-example:
- * @obj:
- * @int_param: a parameter of type int
- * @float_param: a parameter of type float
- *
- * This is an example of how to document a signal.
- *
- * Since: 0.99
- */
- g_signal_new ("signal-example",
- G_TYPE_FROM_CLASS (gobject_class),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- NULL,
- G_TYPE_NONE, 2, G_TYPE_UINT, G_TYPE_UINT);
-
- /**
- * DocExamplesObj:property-example:
- *
- * This is an example of how to document a property.
- *
- * Type: GLib.HashTable(utf8,gint8)
- * Transfer: container
- *
- * Since: 0.99
- */
- pspec = g_param_spec_boxed ("property-example",
- "Example property",
- "A contained GHashTable",
- G_TYPE_HASH_TABLE,
- G_PARAM_READWRITE);
- g_object_class_install_property (gobject_class,
- 1,
- pspec);
-}
-
-static void
-doc_examples_obj_init (DocExamplesObj *self)
-{
-
-}
-
-DocExamplesObj *
-doc_examples_obj_new (void)
-{
- return g_object_new (DOC_EXAMPLES_TYPE_OBJ, NULL);
-}
-
-/**
- * doc_examples_obj_method:
- * @first_arg: A #DocExamplesObj.
- * @second_arg: second argument
- * @boolean_arg: You should always pass %TRUE.
- * @pointer_arg: (allow-none): If not %NULL, do a thing.
- * @string: A %NULL-terminated string.
- *
- * This is an example of how to document a method.
- *
- * You should call this on a #DocExamplesObj that was
- * created with doc_examples_obj_new().
- *
- * This should be a %FALSEALARM.
- *
- * Since: 0.99
- *
- * Returns: Either %FALSE or something %FALSE-y.
- */
-gboolean
-doc_examples_obj_method (DocExamplesObj *self, gint first_arg, gfloat second_arg,
- gboolean boolean_arg, gpointer pointer_arg, gchar *string)
-{
- return FALSE;
-}
diff --git a/tests/doctool/doc-examples-obj.h b/tests/doctool/doc-examples-obj.h
deleted file mode 100644
index c8840d7a..00000000
--- a/tests/doctool/doc-examples-obj.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* doc-examples-obj.h */
-
-#ifndef _DOC_EXAMPLES_OBJ_H
-#define _DOC_EXAMPLES_OBJ_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define DOC_EXAMPLES_TYPE_OBJ doc_examples_obj_get_type()
-
-#define DOC_EXAMPLES_OBJ(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- DOC_EXAMPLES_TYPE_OBJ, DocExamplesObj))
-
-#define DOC_EXAMPLES_OBJ_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), \
- DOC_EXAMPLES_TYPE_OBJ, DocExamplesObjClass))
-
-#define DOC_EXAMPLES_IS_OBJ(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- DOC_EXAMPLES_TYPE_OBJ))
-
-#define DOC_EXAMPLES_IS_OBJ_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- DOC_EXAMPLES_TYPE_OBJ))
-
-#define DOC_EXAMPLES_OBJ_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), \
- DOC_EXAMPLES_TYPE_OBJ, DocExamplesObjClass))
-
-typedef struct _DocExamplesObj DocExamplesObj;
-typedef struct _DocExamplesObjClass DocExamplesObjClass;
-
-struct _DocExamplesObj
-{
- GObject parent;
-};
-
-struct _DocExamplesObjClass
-{
- GObjectClass parent_class;
-
- /**
- * DocExamplesObjClass::vfunc:
- * @self:
- * @first_arg: first argument
- *
- * This is an example of how to document a vfunc.
- *
- * Since: 0.99
- */
- void (*vfunc) (DocExamplesObj *self, gint first_arg);
-};
-
-GType doc_examples_obj_get_type (void) G_GNUC_CONST;
-
-DocExamplesObj *doc_examples_obj_new (void);
-gboolean doc_examples_obj_method (DocExamplesObj *self, gint first_arg, gfloat second_arg,
- gboolean boolean_arg, gpointer pointer_arg, gchar *string);
-
-G_END_DECLS
-
-#endif /* _DOC_EXAMPLES_OBJ_H */
diff --git a/tests/gimarshallingtests.c b/tests/gimarshallingtests.c
index fedcfb21..9dc66bea 100644
--- a/tests/gimarshallingtests.c
+++ b/tests/gimarshallingtests.c
@@ -1,79 +1,79 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
+ *vim: tabstop=4 shiftwidth=4 expandtab
*/
#include "gimarshallingtests.h"
#include <string.h>
-static void gi_marshalling_tests_boxed_struct_free (GIMarshallingTestsBoxedStruct *struct_);
+static void gi_marshalling_tests_boxed_struct_free (GIMarshallingTestsBoxedStruct *v);
/* Booleans */
gboolean
gi_marshalling_tests_boolean_return_true (void)
{
- return TRUE;
+ return TRUE;
}
gboolean
gi_marshalling_tests_boolean_return_false (void)
{
- return FALSE;
+ return FALSE;
}
void
-gi_marshalling_tests_boolean_in_true (gboolean bool_)
+gi_marshalling_tests_boolean_in_true (gboolean v)
{
- g_assert (bool_ == TRUE);
+ g_assert (v == TRUE);
}
void
-gi_marshalling_tests_boolean_in_false (gboolean bool_)
+gi_marshalling_tests_boolean_in_false (gboolean v)
{
- g_assert (bool_ == FALSE);
+ g_assert (v == FALSE);
}
/**
* gi_marshalling_tests_boolean_out_true:
- * @bool_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_boolean_out_true (gboolean *bool_)
+gi_marshalling_tests_boolean_out_true (gboolean *v)
{
- *bool_ = TRUE;
+ *v = TRUE;
}
/**
* gi_marshalling_tests_boolean_out_false:
- * @bool_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_boolean_out_false (gboolean *bool_)
+gi_marshalling_tests_boolean_out_false (gboolean *v)
{
- *bool_ = FALSE;
+ *v = FALSE;
}
/**
* gi_marshalling_tests_boolean_inout_true_false:
- * @bool_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_boolean_inout_true_false (gboolean *bool_)
+gi_marshalling_tests_boolean_inout_true_false (gboolean *v)
{
- g_assert (*bool_ == TRUE);
- *bool_ = FALSE;
+ g_assert (*v == TRUE);
+ *v = FALSE;
}
/**
* gi_marshalling_tests_boolean_inout_false_true:
- * @bool_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_boolean_inout_false_true (gboolean *bool_)
+gi_marshalling_tests_boolean_inout_false_true (gboolean *v)
{
- g_assert (*bool_ == FALSE);
- *bool_ = TRUE;
+ g_assert (*v == FALSE);
+ *v = TRUE;
}
@@ -82,429 +82,429 @@ gi_marshalling_tests_boolean_inout_false_true (gboolean *bool_)
gint8
gi_marshalling_tests_int8_return_max (void)
{
- return G_MAXINT8;
+ return G_MAXINT8;
}
gint8
gi_marshalling_tests_int8_return_min (void)
{
- return G_MININT8;
+ return G_MININT8;
}
void
-gi_marshalling_tests_int8_in_max (gint8 int8)
+gi_marshalling_tests_int8_in_max (gint8 v)
{
- g_assert_cmpint(int8, ==, G_MAXINT8);
+ g_assert_cmpint (v, ==, G_MAXINT8);
}
void
-gi_marshalling_tests_int8_in_min (gint8 int8)
+gi_marshalling_tests_int8_in_min (gint8 v)
{
- g_assert_cmpint(int8, ==, G_MININT8);
+ g_assert_cmpint (v, ==, G_MININT8);
}
/**
* gi_marshalling_tests_int8_out_max:
- * @int8: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int8_out_max (gint8 *int8)
+gi_marshalling_tests_int8_out_max (gint8 *v)
{
- *int8 = G_MAXINT8;
+ *v = G_MAXINT8;
}
/**
* gi_marshalling_tests_int8_out_min:
- * @int8: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int8_out_min (gint8 *int8)
+gi_marshalling_tests_int8_out_min (gint8 *v)
{
- *int8 = G_MININT8;
+ *v = G_MININT8;
}
/**
* gi_marshalling_tests_int8_inout_max_min:
- * @int8: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int8_inout_max_min (gint8 *int8)
+gi_marshalling_tests_int8_inout_max_min (gint8 *v)
{
- g_assert_cmpint(*int8, ==, G_MAXINT8);
- *int8 = G_MININT8;
+ g_assert_cmpint (*v, ==, G_MAXINT8);
+ *v = G_MININT8;
}
/**
* gi_marshalling_tests_int8_inout_min_max:
- * @int8: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int8_inout_min_max (gint8 *int8)
+gi_marshalling_tests_int8_inout_min_max (gint8 *v)
{
- g_assert_cmpint(*int8, ==, G_MININT8);
- *int8 = G_MAXINT8;
+ g_assert_cmpint (*v, ==, G_MININT8);
+ *v = G_MAXINT8;
}
guint8
gi_marshalling_tests_uint8_return (void)
{
- return G_MAXUINT8;
+ return G_MAXUINT8;
}
void
-gi_marshalling_tests_uint8_in (guint8 uint8)
+gi_marshalling_tests_uint8_in (guint8 v)
{
- g_assert_cmpuint(uint8, ==, G_MAXUINT8);
+ g_assert_cmpuint (v, ==, G_MAXUINT8);
}
/**
* gi_marshalling_tests_uint8_out:
- * @uint8: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_uint8_out (guint8 *uint8)
+gi_marshalling_tests_uint8_out (guint8 *v)
{
- *uint8 = G_MAXUINT8;
+ *v = G_MAXUINT8;
}
/**
* gi_marshalling_tests_uint8_inout:
- * @uint8: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_uint8_inout (guint8 *uint8)
+gi_marshalling_tests_uint8_inout (guint8 *v)
{
- g_assert_cmpuint(*uint8, ==, G_MAXUINT8);
- *uint8 = 0;
+ g_assert_cmpuint (*v, ==, G_MAXUINT8);
+ *v = 0;
}
gint16
gi_marshalling_tests_int16_return_max (void)
{
- return G_MAXINT16;
+ return G_MAXINT16;
}
gint16
gi_marshalling_tests_int16_return_min (void)
{
- return G_MININT16;
+ return G_MININT16;
}
void
-gi_marshalling_tests_int16_in_max (gint16 int16)
+gi_marshalling_tests_int16_in_max (gint16 v)
{
- g_assert_cmpint(int16, ==, G_MAXINT16);
+ g_assert_cmpint (v, ==, G_MAXINT16);
}
void
-gi_marshalling_tests_int16_in_min (gint16 int16)
+gi_marshalling_tests_int16_in_min (gint16 v)
{
- g_assert_cmpint(int16, ==, G_MININT16);
+ g_assert_cmpint (v, ==, G_MININT16);
}
/**
* gi_marshalling_tests_int16_out_max:
- * @int16: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int16_out_max (gint16 *int16)
+gi_marshalling_tests_int16_out_max (gint16 *v)
{
- *int16 = G_MAXINT16;
+ *v = G_MAXINT16;
}
/**
* gi_marshalling_tests_int16_out_min:
- * @int16: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int16_out_min (gint16 *int16)
+gi_marshalling_tests_int16_out_min (gint16 *v)
{
- *int16 = G_MININT16;
+ *v = G_MININT16;
}
/**
* gi_marshalling_tests_int16_inout_max_min:
- * @int16: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int16_inout_max_min (gint16 *int16)
+gi_marshalling_tests_int16_inout_max_min (gint16 *v)
{
- g_assert_cmpint(*int16, ==, G_MAXINT16);
- *int16 = G_MININT16;
+ g_assert_cmpint (*v, ==, G_MAXINT16);
+ *v = G_MININT16;
}
/**
* gi_marshalling_tests_int16_inout_min_max:
- * @int16: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int16_inout_min_max (gint16 *int16)
+gi_marshalling_tests_int16_inout_min_max (gint16 *v)
{
- g_assert_cmpint(*int16, ==, G_MININT16);
- *int16 = G_MAXINT16;
+ g_assert_cmpint (*v, ==, G_MININT16);
+ *v = G_MAXINT16;
}
guint16
gi_marshalling_tests_uint16_return (void)
{
- return G_MAXUINT16;
+ return G_MAXUINT16;
}
void
-gi_marshalling_tests_uint16_in (guint16 uint16)
+gi_marshalling_tests_uint16_in (guint16 v)
{
- g_assert_cmpuint(uint16, ==, G_MAXUINT16);
+ g_assert_cmpuint (v, ==, G_MAXUINT16);
}
/**
* gi_marshalling_tests_uint16_out:
- * @uint16: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_uint16_out (guint16 *uint16)
+gi_marshalling_tests_uint16_out (guint16 *v)
{
- *uint16 = G_MAXUINT16;
+ *v = G_MAXUINT16;
}
/**
* gi_marshalling_tests_uint16_inout:
- * @uint16: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_uint16_inout (guint16 *uint16)
+gi_marshalling_tests_uint16_inout (guint16 *v)
{
- g_assert_cmpuint(*uint16, ==, G_MAXUINT16);
- *uint16 = 0;
+ g_assert_cmpuint (*v, ==, G_MAXUINT16);
+ *v = 0;
}
gint32
gi_marshalling_tests_int32_return_max (void)
{
- return G_MAXINT32;
+ return G_MAXINT32;
}
gint32
gi_marshalling_tests_int32_return_min (void)
{
- return G_MININT32;
+ return G_MININT32;
}
void
-gi_marshalling_tests_int32_in_max (gint32 int32)
+gi_marshalling_tests_int32_in_max (gint32 v)
{
- g_assert_cmpint(int32, ==, G_MAXINT32);
+ g_assert_cmpint (v, ==, G_MAXINT32);
}
void
-gi_marshalling_tests_int32_in_min (gint32 int32)
+gi_marshalling_tests_int32_in_min (gint32 v)
{
- g_assert_cmpint(int32, ==, G_MININT32);
+ g_assert_cmpint (v, ==, G_MININT32);
}
/**
* gi_marshalling_tests_int32_out_max:
- * @int32: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int32_out_max (gint32 *int32)
+gi_marshalling_tests_int32_out_max (gint32 *v)
{
- *int32 = G_MAXINT32;
+ *v = G_MAXINT32;
}
/**
* gi_marshalling_tests_int32_out_min:
- * @int32: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int32_out_min (gint32 *int32)
+gi_marshalling_tests_int32_out_min (gint32 *v)
{
- *int32 = G_MININT32;
+ *v = G_MININT32;
}
/**
* gi_marshalling_tests_int32_inout_max_min:
- * @int32: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int32_inout_max_min (gint32 *int32)
+gi_marshalling_tests_int32_inout_max_min (gint32 *v)
{
- g_assert_cmpint(*int32, ==, G_MAXINT32);
- *int32 = G_MININT32;
+ g_assert_cmpint (*v, ==, G_MAXINT32);
+ *v = G_MININT32;
}
/**
* gi_marshalling_tests_int32_inout_min_max:
- * @int32: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int32_inout_min_max (gint32 *int32)
+gi_marshalling_tests_int32_inout_min_max (gint32 *v)
{
- g_assert_cmpint(*int32, ==, G_MININT32);
- *int32 = G_MAXINT32;
+ g_assert_cmpint (*v, ==, G_MININT32);
+ *v = G_MAXINT32;
}
guint32
gi_marshalling_tests_uint32_return (void)
{
- return G_MAXUINT32;
+ return G_MAXUINT32;
}
void
-gi_marshalling_tests_uint32_in (guint32 uint32)
+gi_marshalling_tests_uint32_in (guint32 v)
{
- g_assert_cmpuint(uint32, ==, G_MAXUINT32);
+ g_assert_cmpuint (v, ==, G_MAXUINT32);
}
/**
* gi_marshalling_tests_uint32_out:
- * @uint32: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_uint32_out (guint32 *uint32)
+gi_marshalling_tests_uint32_out (guint32 *v)
{
- *uint32 = G_MAXUINT32;
+ *v = G_MAXUINT32;
}
/**
* gi_marshalling_tests_uint32_inout:
- * @uint32: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_uint32_inout (guint32 *uint32)
+gi_marshalling_tests_uint32_inout (guint32 *v)
{
- g_assert_cmpuint(*uint32, ==, G_MAXUINT32);
- *uint32 = 0;
+ g_assert_cmpuint (*v, ==, G_MAXUINT32);
+ *v = 0;
}
gint64
gi_marshalling_tests_int64_return_max (void)
{
- return G_MAXINT64;
+ return G_MAXINT64;
}
gint64
gi_marshalling_tests_int64_return_min (void)
{
- return G_MININT64;
+ return G_MININT64;
}
void
-gi_marshalling_tests_int64_in_max (gint64 int64)
+gi_marshalling_tests_int64_in_max (gint64 v)
{
- g_assert_cmpint(int64, ==, G_MAXINT64);
+ g_assert_cmpint (v, ==, G_MAXINT64);
}
void
-gi_marshalling_tests_int64_in_min (gint64 int64)
+gi_marshalling_tests_int64_in_min (gint64 v)
{
- g_assert_cmpint(int64, ==, G_MININT64);
+ g_assert_cmpint (v, ==, G_MININT64);
}
/**
* gi_marshalling_tests_int64_out_max:
- * @int64: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int64_out_max (gint64 *int64)
+gi_marshalling_tests_int64_out_max (gint64 *v)
{
- *int64 = G_MAXINT64;
+ *v = G_MAXINT64;
}
/**
* gi_marshalling_tests_int64_out_min:
- * @int64: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_int64_out_min (gint64 *int64)
+gi_marshalling_tests_int64_out_min (gint64 *v)
{
- *int64 = G_MININT64;
+ *v = G_MININT64;
}
/**
* gi_marshalling_tests_int64_inout_max_min:
- * @int64: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int64_inout_max_min (gint64 *int64)
+gi_marshalling_tests_int64_inout_max_min (gint64 *v)
{
- g_assert_cmpint(*int64, ==, G_MAXINT64);
- *int64 = G_MININT64;
+ g_assert_cmpint (*v, ==, G_MAXINT64);
+ *v = G_MININT64;
}
/**
* gi_marshalling_tests_int64_inout_min_max:
- * @int64: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_int64_inout_min_max (gint64 *int64)
+gi_marshalling_tests_int64_inout_min_max (gint64 *v)
{
- g_assert_cmpint(*int64, ==, G_MININT64);
- *int64 = G_MAXINT64;
+ g_assert_cmpint (*v, ==, G_MININT64);
+ *v = G_MAXINT64;
}
guint64
gi_marshalling_tests_uint64_return (void)
{
- return G_MAXUINT64;
+ return G_MAXUINT64;
}
void
-gi_marshalling_tests_uint64_in (guint64 uint64)
+gi_marshalling_tests_uint64_in (guint64 v)
{
- g_assert_cmpuint(uint64, ==, G_MAXUINT64);
+ g_assert_cmpuint (v, ==, G_MAXUINT64);
}
/**
* gi_marshalling_tests_uint64_out:
- * @uint64: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_uint64_out (guint64 *uint64)
+gi_marshalling_tests_uint64_out (guint64 *v)
{
- *uint64 = G_MAXUINT64;
+ *v = G_MAXUINT64;
}
/**
* gi_marshalling_tests_uint64_inout:
- * @uint64: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_uint64_inout (guint64 *uint64)
+gi_marshalling_tests_uint64_inout (guint64 *v)
{
- g_assert_cmpuint(*uint64, ==, G_MAXUINT64);
- *uint64 = 0;
+ g_assert_cmpuint (*v, ==, G_MAXUINT64);
+ *v = 0;
}
gshort
gi_marshalling_tests_short_return_max (void)
{
- return G_MAXSHORT;
+ return G_MAXSHORT;
}
gshort
gi_marshalling_tests_short_return_min (void)
{
- return G_MINSHORT;
+ return G_MINSHORT;
}
void
gi_marshalling_tests_short_in_max (gshort short_)
{
- g_assert_cmpint(short_, ==, G_MAXSHORT);
+ g_assert_cmpint (short_, ==, G_MAXSHORT);
}
void
gi_marshalling_tests_short_in_min (gshort short_)
{
- g_assert_cmpint(short_, ==, G_MINSHORT);
+ g_assert_cmpint (short_, ==, G_MINSHORT);
}
/**
@@ -514,7 +514,7 @@ gi_marshalling_tests_short_in_min (gshort short_)
void
gi_marshalling_tests_short_out_max (gshort *short_)
{
- *short_ = G_MAXSHORT;
+ *short_ = G_MAXSHORT;
}
/**
@@ -524,7 +524,7 @@ gi_marshalling_tests_short_out_max (gshort *short_)
void
gi_marshalling_tests_short_out_min (gshort *short_)
{
- *short_ = G_MINSHORT;
+ *short_ = G_MINSHORT;
}
/**
@@ -534,8 +534,8 @@ gi_marshalling_tests_short_out_min (gshort *short_)
void
gi_marshalling_tests_short_inout_max_min (gshort *short_)
{
- g_assert_cmpint(*short_, ==, G_MAXSHORT);
- *short_ = G_MINSHORT;
+ g_assert_cmpint (*short_, ==, G_MAXSHORT);
+ *short_ = G_MINSHORT;
}
/**
@@ -545,21 +545,21 @@ gi_marshalling_tests_short_inout_max_min (gshort *short_)
void
gi_marshalling_tests_short_inout_min_max (gshort *short_)
{
- g_assert_cmpint(*short_, ==, G_MINSHORT);
- *short_ = G_MAXSHORT;
+ g_assert_cmpint (*short_, ==, G_MINSHORT);
+ *short_ = G_MAXSHORT;
}
gushort
gi_marshalling_tests_ushort_return (void)
{
- return G_MAXUSHORT;
+ return G_MAXUSHORT;
}
void
gi_marshalling_tests_ushort_in (gushort ushort_)
{
- g_assert_cmpuint(ushort_, ==, G_MAXUSHORT);
+ g_assert_cmpuint (ushort_, ==, G_MAXUSHORT);
}
/**
@@ -569,7 +569,7 @@ gi_marshalling_tests_ushort_in (gushort ushort_)
void
gi_marshalling_tests_ushort_out (gushort *ushort_)
{
- *ushort_ = G_MAXUSHORT;
+ *ushort_ = G_MAXUSHORT;
}
/**
@@ -579,33 +579,33 @@ gi_marshalling_tests_ushort_out (gushort *ushort_)
void
gi_marshalling_tests_ushort_inout (gushort *ushort_)
{
- g_assert_cmpuint(*ushort_, ==, G_MAXUSHORT);
- *ushort_ = 0;
+ g_assert_cmpuint (*ushort_, ==, G_MAXUSHORT);
+ *ushort_ = 0;
}
gint
gi_marshalling_tests_int_return_max (void)
{
- return G_MAXINT;
+ return G_MAXINT;
}
gint
gi_marshalling_tests_int_return_min (void)
{
- return G_MININT;
+ return G_MININT;
}
void
gi_marshalling_tests_int_in_max (gint int_)
{
- g_assert_cmpint(int_, ==, G_MAXINT);
+ g_assert_cmpint (int_, ==, G_MAXINT);
}
void
gi_marshalling_tests_int_in_min (gint int_)
{
- g_assert_cmpint(int_, ==, G_MININT);
+ g_assert_cmpint (int_, ==, G_MININT);
}
/**
@@ -615,7 +615,7 @@ gi_marshalling_tests_int_in_min (gint int_)
void
gi_marshalling_tests_int_out_max (gint *int_)
{
- *int_ = G_MAXINT;
+ *int_ = G_MAXINT;
}
/**
@@ -625,7 +625,7 @@ gi_marshalling_tests_int_out_max (gint *int_)
void
gi_marshalling_tests_int_out_min (gint *int_)
{
- *int_ = G_MININT;
+ *int_ = G_MININT;
}
/**
@@ -635,8 +635,8 @@ gi_marshalling_tests_int_out_min (gint *int_)
void
gi_marshalling_tests_int_inout_max_min (gint *int_)
{
- g_assert_cmpint(*int_, ==, G_MAXINT);
- *int_ = G_MININT;
+ g_assert_cmpint (*int_, ==, G_MAXINT);
+ *int_ = G_MININT;
}
/**
@@ -646,21 +646,21 @@ gi_marshalling_tests_int_inout_max_min (gint *int_)
void
gi_marshalling_tests_int_inout_min_max (gint *int_)
{
- g_assert_cmpint(*int_, ==, G_MININT);
- *int_ = G_MAXINT;
+ g_assert_cmpint (*int_, ==, G_MININT);
+ *int_ = G_MAXINT;
}
guint
gi_marshalling_tests_uint_return (void)
{
- return G_MAXUINT;
+ return G_MAXUINT;
}
void
gi_marshalling_tests_uint_in (guint uint_)
{
- g_assert_cmpuint(uint_, ==, G_MAXUINT);
+ g_assert_cmpuint (uint_, ==, G_MAXUINT);
}
/**
@@ -670,7 +670,7 @@ gi_marshalling_tests_uint_in (guint uint_)
void
gi_marshalling_tests_uint_out (guint *uint_)
{
- *uint_ = G_MAXUINT;
+ *uint_ = G_MAXUINT;
}
/**
@@ -680,33 +680,33 @@ gi_marshalling_tests_uint_out (guint *uint_)
void
gi_marshalling_tests_uint_inout (guint *uint_)
{
- g_assert_cmpuint(*uint_, ==, G_MAXUINT);
- *uint_ = 0;
+ g_assert_cmpuint (*uint_, ==, G_MAXUINT);
+ *uint_ = 0;
}
glong
gi_marshalling_tests_long_return_max (void)
{
- return G_MAXLONG;
+ return G_MAXLONG;
}
glong
gi_marshalling_tests_long_return_min (void)
{
- return G_MINLONG;
+ return G_MINLONG;
}
void
gi_marshalling_tests_long_in_max (glong long_)
{
- g_assert_cmpint(long_, ==, G_MAXLONG);
+ g_assert_cmpint (long_, ==, G_MAXLONG);
}
void
gi_marshalling_tests_long_in_min (glong long_)
{
- g_assert_cmpint(long_, ==, G_MINLONG);
+ g_assert_cmpint (long_, ==, G_MINLONG);
}
/**
@@ -716,7 +716,7 @@ gi_marshalling_tests_long_in_min (glong long_)
void
gi_marshalling_tests_long_out_max (glong *long_)
{
- *long_ = G_MAXLONG;
+ *long_ = G_MAXLONG;
}
/**
@@ -726,7 +726,7 @@ gi_marshalling_tests_long_out_max (glong *long_)
void
gi_marshalling_tests_long_out_min (glong *long_)
{
- *long_ = G_MINLONG;
+ *long_ = G_MINLONG;
}
/**
@@ -736,8 +736,8 @@ gi_marshalling_tests_long_out_min (glong *long_)
void
gi_marshalling_tests_long_inout_max_min (glong *long_)
{
- g_assert_cmpint(*long_, ==, G_MAXLONG);
- *long_ = G_MINLONG;
+ g_assert_cmpint (*long_, ==, G_MAXLONG);
+ *long_ = G_MINLONG;
}
/**
@@ -747,21 +747,21 @@ gi_marshalling_tests_long_inout_max_min (glong *long_)
void
gi_marshalling_tests_long_inout_min_max (glong *long_)
{
- g_assert_cmpint(*long_, ==, G_MINLONG);
- *long_ = G_MAXLONG;
+ g_assert_cmpint (*long_, ==, G_MINLONG);
+ *long_ = G_MAXLONG;
}
gulong
gi_marshalling_tests_ulong_return (void)
{
- return G_MAXULONG;
+ return G_MAXULONG;
}
void
gi_marshalling_tests_ulong_in (gulong ulong_)
{
- g_assert_cmpuint(ulong_, ==, G_MAXULONG);
+ g_assert_cmpuint (ulong_, ==, G_MAXULONG);
}
/**
@@ -771,7 +771,7 @@ gi_marshalling_tests_ulong_in (gulong ulong_)
void
gi_marshalling_tests_ulong_out (gulong *ulong_)
{
- *ulong_ = G_MAXULONG;
+ *ulong_ = G_MAXULONG;
}
/**
@@ -781,33 +781,33 @@ gi_marshalling_tests_ulong_out (gulong *ulong_)
void
gi_marshalling_tests_ulong_inout (gulong *ulong_)
{
- g_assert_cmpuint(*ulong_, ==, G_MAXULONG);
- *ulong_ = 0;
+ g_assert_cmpuint (*ulong_, ==, G_MAXULONG);
+ *ulong_ = 0;
}
gssize
gi_marshalling_tests_ssize_return_max (void)
{
- return G_MAXSSIZE;
+ return G_MAXSSIZE;
}
gssize
gi_marshalling_tests_ssize_return_min (void)
{
- return G_MINSSIZE;
+ return G_MINSSIZE;
}
void
gi_marshalling_tests_ssize_in_max (gssize ssize)
{
- g_assert_cmpint(ssize, ==, G_MAXSSIZE);
+ g_assert_cmpint (ssize, ==, G_MAXSSIZE);
}
void
gi_marshalling_tests_ssize_in_min (gssize ssize)
{
- g_assert_cmpint(ssize, ==, G_MINSSIZE);
+ g_assert_cmpint (ssize, ==, G_MINSSIZE);
}
/**
@@ -817,7 +817,7 @@ gi_marshalling_tests_ssize_in_min (gssize ssize)
void
gi_marshalling_tests_ssize_out_max (gssize *ssize)
{
- *ssize = G_MAXSSIZE;
+ *ssize = G_MAXSSIZE;
}
/**
@@ -827,7 +827,7 @@ gi_marshalling_tests_ssize_out_max (gssize *ssize)
void
gi_marshalling_tests_ssize_out_min (gssize *ssize)
{
- *ssize = G_MINSSIZE;
+ *ssize = G_MINSSIZE;
}
/**
@@ -837,8 +837,8 @@ gi_marshalling_tests_ssize_out_min (gssize *ssize)
void
gi_marshalling_tests_ssize_inout_max_min (gssize *ssize)
{
- g_assert_cmpint(*ssize, ==, G_MAXSSIZE);
- *ssize = G_MINSSIZE;
+ g_assert_cmpint (*ssize, ==, G_MAXSSIZE);
+ *ssize = G_MINSSIZE;
}
/**
@@ -848,21 +848,21 @@ gi_marshalling_tests_ssize_inout_max_min (gssize *ssize)
void
gi_marshalling_tests_ssize_inout_min_max (gssize *ssize)
{
- g_assert_cmpint(*ssize, ==, G_MINSSIZE);
- *ssize = G_MAXSSIZE;
+ g_assert_cmpint (*ssize, ==, G_MINSSIZE);
+ *ssize = G_MAXSSIZE;
}
gsize
gi_marshalling_tests_size_return (void)
{
- return G_MAXSIZE;
+ return G_MAXSIZE;
}
void
gi_marshalling_tests_size_in (gsize size)
{
- g_assert_cmpuint(size, ==, G_MAXSIZE);
+ g_assert_cmpuint (size, ==, G_MAXSIZE);
}
/**
@@ -872,7 +872,7 @@ gi_marshalling_tests_size_in (gsize size)
void
gi_marshalling_tests_size_out (gsize *size)
{
- *size = G_MAXSIZE;
+ *size = G_MAXSIZE;
}
/**
@@ -882,135 +882,135 @@ gi_marshalling_tests_size_out (gsize *size)
void
gi_marshalling_tests_size_inout (gsize *size)
{
- g_assert_cmpuint(*size, ==, G_MAXSIZE);
- *size = 0;
+ g_assert_cmpuint (*size, ==, G_MAXSIZE);
+ *size = 0;
}
gfloat
gi_marshalling_tests_float_return (void)
{
- return G_MAXFLOAT;
+ return G_MAXFLOAT;
}
void
-gi_marshalling_tests_float_in (gfloat float_)
+gi_marshalling_tests_float_in (gfloat v)
{
- g_assert_cmpfloat(float_, ==, G_MAXFLOAT);
+ g_assert_cmpfloat (v, ==, G_MAXFLOAT);
}
/**
* gi_marshalling_tests_float_out:
- * @float_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_float_out (gfloat *float_)
+gi_marshalling_tests_float_out (gfloat *v)
{
- *float_ = G_MAXFLOAT;
+ *v = G_MAXFLOAT;
}
/**
* gi_marshalling_tests_float_inout:
- * @float_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_float_inout (gfloat *float_)
+gi_marshalling_tests_float_inout (gfloat *v)
{
- g_assert_cmpfloat(*float_, ==, G_MAXFLOAT);
- *float_ = G_MINFLOAT;
+ g_assert_cmpfloat (*v, ==, G_MAXFLOAT);
+ *v = G_MINFLOAT;
}
gdouble
gi_marshalling_tests_double_return (void)
{
- return G_MAXDOUBLE;
+ return G_MAXDOUBLE;
}
void
-gi_marshalling_tests_double_in (gdouble double_)
+gi_marshalling_tests_double_in (gdouble v)
{
- g_assert_cmpfloat(double_, ==, G_MAXDOUBLE);
+ g_assert_cmpfloat (v, ==, G_MAXDOUBLE);
}
/**
* gi_marshalling_tests_double_out:
- * @double_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_double_out (gdouble *double_)
+gi_marshalling_tests_double_out (gdouble *v)
{
- *double_ = G_MAXDOUBLE;
+ *v = G_MAXDOUBLE;
}
/**
* gi_marshalling_tests_double_inout:
- * @double_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_double_inout (gdouble *double_)
+gi_marshalling_tests_double_inout (gdouble *v)
{
- g_assert_cmpfloat(*double_, ==, G_MAXDOUBLE);
- *double_ = G_MINDOUBLE;
+ g_assert_cmpfloat (*v, ==, G_MAXDOUBLE);
+ *v = G_MINDOUBLE;
}
time_t
gi_marshalling_tests_time_t_return (void)
{
- return 1234567890;
+ return 1234567890;
}
void
-gi_marshalling_tests_time_t_in (time_t time_t_)
+gi_marshalling_tests_time_t_in (time_t v)
{
- g_assert_cmpuint(time_t_, ==, 1234567890);
+ g_assert_cmpuint (v, ==, 1234567890);
}
/**
* gi_marshalling_tests_time_t_out:
- * @time_t_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_time_t_out (time_t *time_t_)
+gi_marshalling_tests_time_t_out (time_t *v)
{
- *time_t_ = 1234567890;
+ *v = 1234567890;
}
/**
* gi_marshalling_tests_time_t_inout:
- * @time_t_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_time_t_inout (time_t *time_t_)
+gi_marshalling_tests_time_t_inout (time_t *v)
{
- g_assert_cmpuint(*time_t_, ==, 1234567890);
- *time_t_ = 0;
+ g_assert_cmpuint (*v, ==, 1234567890);
+ *v = 0;
}
GType
gi_marshalling_tests_gtype_return (void)
{
- return G_TYPE_NONE;
+ return G_TYPE_NONE;
}
GType
gi_marshalling_tests_gtype_string_return (void)
{
- return G_TYPE_STRING;
+ return G_TYPE_STRING;
}
void
gi_marshalling_tests_gtype_in (GType gtype)
{
- g_assert(gtype == G_TYPE_NONE);
+ g_assert (gtype == G_TYPE_NONE);
}
void
gi_marshalling_tests_gtype_string_in (GType gtype)
{
- g_assert(gtype == G_TYPE_STRING);
+ g_assert (gtype == G_TYPE_STRING);
}
@@ -1021,7 +1021,7 @@ gi_marshalling_tests_gtype_string_in (GType gtype)
void
gi_marshalling_tests_gtype_out (GType *gtype)
{
- *gtype = G_TYPE_NONE;
+ *gtype = G_TYPE_NONE;
}
/**
@@ -1031,7 +1031,7 @@ gi_marshalling_tests_gtype_out (GType *gtype)
void
gi_marshalling_tests_gtype_string_out (GType *gtype)
{
- *gtype = G_TYPE_STRING;
+ *gtype = G_TYPE_STRING;
}
/**
@@ -1041,27 +1041,44 @@ gi_marshalling_tests_gtype_string_out (GType *gtype)
void
gi_marshalling_tests_gtype_inout (GType *gtype)
{
- g_assert(*gtype == G_TYPE_NONE);
- *gtype = G_TYPE_INT;
+ g_assert (*gtype == G_TYPE_NONE);
+ *gtype = G_TYPE_INT;
}
const gchar *
gi_marshalling_tests_utf8_none_return (void)
{
- return GI_MARSHALLING_TESTS_CONSTANT_UTF8;
+ return GI_MARSHALLING_TESTS_CONSTANT_UTF8;
}
gchar *
gi_marshalling_tests_utf8_full_return (void)
{
- return g_strdup(GI_MARSHALLING_TESTS_CONSTANT_UTF8);
+ return g_strdup (GI_MARSHALLING_TESTS_CONSTANT_UTF8);
}
void
gi_marshalling_tests_utf8_none_in (const gchar *utf8)
{
- g_assert_cmpstr(GI_MARSHALLING_TESTS_CONSTANT_UTF8, ==, utf8);
+ g_assert_cmpstr (GI_MARSHALLING_TESTS_CONSTANT_UTF8, ==, utf8);
+}
+
+/**
+ * gi_marshalling_tests_utf8_as_uint8array_in:
+ * @array: (array length=len) (element-type guint8): Byte data that happens to be UTF-8
+ * @len: Length
+ *
+ * Takes data that happens to be UTF-8 as a byte array, to test
+ * binding conversion from their string type (e.g. JavaScript's
+ * UTF-16) to UTF-8.
+ */
+void
+gi_marshalling_tests_utf8_as_uint8array_in (const guint8 *array, gsize len)
+{
+ gsize orig_len = strlen (GI_MARSHALLING_TESTS_CONSTANT_UTF8);
+ g_assert_cmpint (orig_len, ==, len);
+ g_assert (memcmp (GI_MARSHALLING_TESTS_CONSTANT_UTF8, array, len) == 0);
}
/**
@@ -1071,7 +1088,7 @@ gi_marshalling_tests_utf8_none_in (const gchar *utf8)
void
gi_marshalling_tests_utf8_none_out (gchar **utf8)
{
- *utf8 = GI_MARSHALLING_TESTS_CONSTANT_UTF8;
+ *utf8 = GI_MARSHALLING_TESTS_CONSTANT_UTF8;
}
/**
@@ -1081,7 +1098,7 @@ gi_marshalling_tests_utf8_none_out (gchar **utf8)
void
gi_marshalling_tests_utf8_full_out (gchar **utf8)
{
- *utf8 = g_strdup(GI_MARSHALLING_TESTS_CONSTANT_UTF8);
+ *utf8 = g_strdup (GI_MARSHALLING_TESTS_CONSTANT_UTF8);
}
/**
@@ -1091,11 +1108,11 @@ gi_marshalling_tests_utf8_full_out (gchar **utf8)
void
gi_marshalling_tests_utf8_dangling_out (gchar **utf8)
{
- /* Intentionally don't touch the pointer to see how
- the bindings handle this case. Bindings should be
- robust against broken C functions and can initialize
- even OUT vlues to NULL.
- */
+ /* Intentionally don't touch the pointer to see how
+ the bindings handle this case. Bindings should be
+ robust against broken C functions and can initialize
+ even OUT vlues to NULL.
+ */
}
/**
@@ -1105,8 +1122,8 @@ gi_marshalling_tests_utf8_dangling_out (gchar **utf8)
void
gi_marshalling_tests_utf8_none_inout (gchar **utf8)
{
- g_assert_cmpstr(GI_MARSHALLING_TESTS_CONSTANT_UTF8, ==, *utf8);
- *utf8 = "";
+ g_assert_cmpstr (GI_MARSHALLING_TESTS_CONSTANT_UTF8, ==, *utf8);
+ *utf8 = "";
}
/**
@@ -1116,9 +1133,9 @@ gi_marshalling_tests_utf8_none_inout (gchar **utf8)
void
gi_marshalling_tests_utf8_full_inout (gchar **utf8)
{
- g_assert_cmpstr(GI_MARSHALLING_TESTS_CONSTANT_UTF8, ==, *utf8);
- g_free(*utf8);
- *utf8 = g_strdup("");
+ g_assert_cmpstr (GI_MARSHALLING_TESTS_CONSTANT_UTF8, ==, *utf8);
+ g_free (*utf8);
+ *utf8 = g_strdup ("");
}
@@ -1132,15 +1149,17 @@ gi_marshalling_tests_utf8_full_inout (gchar **utf8)
gboolean
gi_marshalling_tests_init_function (gint *n_args, char ***argv)
{
- if (n_args == NULL)
- return TRUE;
+ if (n_args == NULL)
+ return TRUE;
- if (*n_args == 0)
- return TRUE;
- (*n_args)--;
- g_assert (argv != NULL);
- (*argv)[*n_args] = NULL;
+ if (*n_args == 0)
return TRUE;
+ (*n_args)--;
+ g_assert (argv != NULL);
+ /* we have transfer ownership full, so we need to free the element ourself */
+ g_free ((*argv)[*n_args]);
+ (*argv)[*n_args] = NULL;
+ return TRUE;
}
/**
@@ -1151,8 +1170,8 @@ gi_marshalling_tests_init_function (gint *n_args, char ***argv)
const gint *
gi_marshalling_tests_array_fixed_int_return (void)
{
- static gint ints[] = {-1, 0, 1, 2};
- return ints;
+ static gint ints[] = { -1, 0, 1, 2 };
+ return ints;
}
/**
@@ -1163,8 +1182,8 @@ gi_marshalling_tests_array_fixed_int_return (void)
const gshort *
gi_marshalling_tests_array_fixed_short_return (void)
{
- static gshort shorts[] = {-1, 0, 1, 2};
- return shorts;
+ static gshort shorts[] = { -1, 0, 1, 2 };
+ return shorts;
}
/**
@@ -1174,10 +1193,10 @@ gi_marshalling_tests_array_fixed_short_return (void)
void
gi_marshalling_tests_array_fixed_int_in (const gint *ints)
{
- g_assert_cmpint(ints[0], ==, -1);
- g_assert_cmpint(ints[1], ==, 0);
- g_assert_cmpint(ints[2], ==, 1);
- g_assert_cmpint(ints[3], ==, 2);
+ g_assert_cmpint (ints[0], ==, -1);
+ g_assert_cmpint (ints[1], ==, 0);
+ g_assert_cmpint (ints[2], ==, 1);
+ g_assert_cmpint (ints[3], ==, 2);
}
/**
@@ -1187,10 +1206,10 @@ gi_marshalling_tests_array_fixed_int_in (const gint *ints)
void
gi_marshalling_tests_array_fixed_short_in (const gshort *shorts)
{
- g_assert_cmpint(shorts[0], ==, -1);
- g_assert_cmpint(shorts[1], ==, 0);
- g_assert_cmpint(shorts[2], ==, 1);
- g_assert_cmpint(shorts[3], ==, 2);
+ g_assert_cmpint (shorts[0], ==, -1);
+ g_assert_cmpint (shorts[1], ==, 0);
+ g_assert_cmpint (shorts[2], ==, 1);
+ g_assert_cmpint (shorts[3], ==, 2);
}
/**
@@ -1200,8 +1219,8 @@ gi_marshalling_tests_array_fixed_short_in (const gshort *shorts)
void
gi_marshalling_tests_array_fixed_out (gint **ints)
{
- static gint values[] = {-1, 0, 1, 2};
- *ints = values;
+ static gint values[] = { -1, 0, 1, 2 };
+ *ints = values;
}
/**
@@ -1211,19 +1230,20 @@ gi_marshalling_tests_array_fixed_out (gint **ints)
void
gi_marshalling_tests_array_fixed_out_struct (GIMarshallingTestsSimpleStruct **structs)
{
- static GIMarshallingTestsSimpleStruct *values;
+ static GIMarshallingTestsSimpleStruct *values;
- if (values == NULL) {
- values = g_new(GIMarshallingTestsSimpleStruct, 2);
+ if (values == NULL)
+ {
+ values = g_new (GIMarshallingTestsSimpleStruct, 2);
- values[0].long_ = 7;
- values[0].int8 = 6;
+ values[0].long_ = 7;
+ values[0].int8 = 6;
- values[1].long_ = 6;
- values[1].int8 = 7;
+ values[1].long_ = 6;
+ values[1].int8 = 7;
}
- *structs = values;
+ *structs = values;
}
/**
@@ -1233,14 +1253,14 @@ gi_marshalling_tests_array_fixed_out_struct (GIMarshallingTestsSimpleStruct **st
void
gi_marshalling_tests_array_fixed_inout (gint **ints)
{
- static gint values[] = {2, 1, 0, -1};
+ static gint values[] = { 2, 1, 0, -1 };
- g_assert_cmpint((*ints)[0], ==, -1);
- g_assert_cmpint((*ints)[1], ==, 0);
- g_assert_cmpint((*ints)[2], ==, 1);
- g_assert_cmpint((*ints)[3], ==, 2);
+ g_assert_cmpint ((*ints)[0], ==, -1);
+ g_assert_cmpint ((*ints)[1], ==, 0);
+ g_assert_cmpint ((*ints)[2], ==, 1);
+ g_assert_cmpint ((*ints)[3], ==, 2);
- *ints = values;
+ *ints = values;
}
@@ -1252,10 +1272,10 @@ gi_marshalling_tests_array_fixed_inout (gint **ints)
const gint *
gi_marshalling_tests_array_return (gint *length)
{
- static gint ints[] = {-1, 0, 1, 2};
+ static gint ints[] = { -1, 0, 1, 2 };
- *length = 4;
- return ints;
+ *length = 4;
+ return ints;
}
/**
@@ -1270,13 +1290,13 @@ gi_marshalling_tests_array_return (gint *length)
const gint *
gi_marshalling_tests_array_return_etc (gint first, gint *length, gint last, gint *sum)
{
- static gint ints[] = {-1, 0, 1, 2};
+ static gint ints[] = { -1, 0, 1, 2 };
- ints[0] = first;
- ints[3] = last;
- *sum = first + last;
- *length = 4;
- return ints;
+ ints[0] = first;
+ ints[3] = last;
+ *sum = first + last;
+ *length = 4;
+ return ints;
}
/**
@@ -1287,11 +1307,11 @@ gi_marshalling_tests_array_return_etc (gint first, gint *length, gint last, gint
void
gi_marshalling_tests_array_in (const gint *ints, gint length)
{
- g_assert_cmpint(length, ==, 4);
- g_assert_cmpint(ints[0], ==, -1);
- g_assert_cmpint(ints[1], ==, 0);
- g_assert_cmpint(ints[2], ==, 1);
- g_assert_cmpint(ints[3], ==, 2);
+ g_assert_cmpint (length, ==, 4);
+ g_assert_cmpint (ints[0], ==, -1);
+ g_assert_cmpint (ints[1], ==, 0);
+ g_assert_cmpint (ints[2], ==, 1);
+ g_assert_cmpint (ints[3], ==, 2);
}
/**
@@ -1302,7 +1322,7 @@ gi_marshalling_tests_array_in (const gint *ints, gint length)
void
gi_marshalling_tests_array_in_len_before (gint length, const gint *ints)
{
- gi_marshalling_tests_array_in (ints, length);
+ gi_marshalling_tests_array_in (ints, length);
}
/**
@@ -1313,15 +1333,15 @@ gi_marshalling_tests_array_in_len_before (gint length, const gint *ints)
void
gi_marshalling_tests_array_in_len_zero_terminated (const gint *ints, gint length)
{
- g_assert_cmpint(length, ==, 4);
+ g_assert_cmpint (length, ==, 4);
- g_assert_cmpint(ints[0], ==, -1);
- g_assert_cmpint(ints[1], ==, 0);
- g_assert_cmpint(ints[2], ==, 1);
- g_assert_cmpint(ints[3], ==, 2);
+ g_assert_cmpint (ints[0], ==, -1);
+ g_assert_cmpint (ints[1], ==, 0);
+ g_assert_cmpint (ints[2], ==, 1);
+ g_assert_cmpint (ints[3], ==, 2);
- /* One past the end, null terminator */
- g_assert_cmpint(ints[4], ==, 0);
+ /* One past the end, null terminator */
+ g_assert_cmpint (ints[4], ==, 0);
}
/**
@@ -1331,9 +1351,9 @@ gi_marshalling_tests_array_in_len_zero_terminated (const gint *ints, gint length
void
gi_marshalling_tests_array_string_in (const gchar **strings, gint length)
{
- g_assert_cmpint(length, ==, 2);
- g_assert_cmpstr(strings[0], ==, "foo");
- g_assert_cmpstr(strings[1], ==, "bar");
+ g_assert_cmpint (length, ==, 2);
+ g_assert_cmpstr (strings[0], ==, "foo");
+ g_assert_cmpstr (strings[1], ==, "bar");
}
/**
@@ -1343,11 +1363,11 @@ gi_marshalling_tests_array_string_in (const gchar **strings, gint length)
void
gi_marshalling_tests_array_uint8_in (const guint8 *chars, gint length)
{
- g_assert_cmpint(length, ==, 4);
- g_assert(chars[0] == 'a');
- g_assert(chars[1] == 'b');
- g_assert(chars[2] == 'c');
- g_assert(chars[3] == 'd');
+ g_assert_cmpint (length, ==, 4);
+ g_assert (chars[0] == 'a');
+ g_assert (chars[1] == 'b');
+ g_assert (chars[2] == 'c');
+ g_assert (chars[3] == 'd');
}
/**
@@ -1357,10 +1377,23 @@ gi_marshalling_tests_array_uint8_in (const guint8 *chars, gint length)
void
gi_marshalling_tests_array_struct_in (GIMarshallingTestsBoxedStruct **structs, gint length)
{
- g_assert_cmpint(length, ==, 3);
- g_assert_cmpint(structs[0]->long_, ==, 1);
- g_assert_cmpint(structs[1]->long_, ==, 2);
- g_assert_cmpint(structs[2]->long_, ==, 3);
+ g_assert_cmpint (length, ==, 3);
+ g_assert_cmpint (structs[0]->long_, ==, 1);
+ g_assert_cmpint (structs[1]->long_, ==, 2);
+ g_assert_cmpint (structs[2]->long_, ==, 3);
+}
+
+/**
+ * gi_marshalling_tests_array_struct_value_in:
+ * @structs: (array length=length):
+ */
+void
+gi_marshalling_tests_array_struct_value_in (GIMarshallingTestsBoxedStruct *structs, gint length)
+{
+ g_assert_cmpint (length, ==, 3);
+ g_assert_cmpint (structs[0].long_, ==, 1);
+ g_assert_cmpint (structs[1].long_, ==, 2);
+ g_assert_cmpint (structs[2].long_, ==, 3);
}
/**
@@ -1370,10 +1403,10 @@ gi_marshalling_tests_array_struct_in (GIMarshallingTestsBoxedStruct **structs, g
void
gi_marshalling_tests_array_simple_struct_in (GIMarshallingTestsSimpleStruct *structs, gint length)
{
- g_assert_cmpint(length, ==, 3);
- g_assert_cmpint(structs[0].long_, ==, 1);
- g_assert_cmpint(structs[1].long_, ==, 2);
- g_assert_cmpint(structs[2].long_, ==, 3);
+ g_assert_cmpint (length, ==, 3);
+ g_assert_cmpint (structs[0].long_, ==, 1);
+ g_assert_cmpint (structs[1].long_, ==, 2);
+ g_assert_cmpint (structs[2].long_, ==, 3);
}
/**
@@ -1384,13 +1417,13 @@ gi_marshalling_tests_array_simple_struct_in (GIMarshallingTestsSimpleStruct *str
void
gi_marshalling_tests_multi_array_key_value_in (gint length, const gchar **keys, const GValue *values)
{
- g_assert_cmpint(length, ==, 3);
- g_assert_cmpstr("one", ==, keys[0]);
- g_assert_cmpint(g_value_get_int(&values[0]), ==, 1);
- g_assert_cmpstr("two", ==, keys[1]);
- g_assert_cmpint(g_value_get_int(&values[1]), ==, 2);
- g_assert_cmpstr("three", ==, keys[2]);
- g_assert_cmpint(g_value_get_int(&values[2]), ==, 3);
+ g_assert_cmpint (length, ==, 3);
+ g_assert_cmpstr ("one", ==, keys[0]);
+ g_assert_cmpint (g_value_get_int (&values[0]), ==, 1);
+ g_assert_cmpstr ("two", ==, keys[1]);
+ g_assert_cmpint (g_value_get_int (&values[1]), ==, 2);
+ g_assert_cmpstr ("three", ==, keys[2]);
+ g_assert_cmpint (g_value_get_int (&values[2]), ==, 3);
}
@@ -1401,13 +1434,13 @@ gi_marshalling_tests_multi_array_key_value_in (gint length, const gchar **keys,
void
gi_marshalling_tests_array_struct_take_in (GIMarshallingTestsBoxedStruct **structs, gint length)
{
- gi_marshalling_tests_array_struct_in (structs, length);
+ gi_marshalling_tests_array_struct_in (structs, length);
- /* only really useful if run in valgrind actually */
- gi_marshalling_tests_boxed_struct_free (structs[0]);
- gi_marshalling_tests_boxed_struct_free (structs[1]);
- gi_marshalling_tests_boxed_struct_free (structs[2]);
- g_free (structs);
+ /* only really useful if run in valgrind actually */
+ gi_marshalling_tests_boxed_struct_free (structs[0]);
+ gi_marshalling_tests_boxed_struct_free (structs[1]);
+ gi_marshalling_tests_boxed_struct_free (structs[2]);
+ g_free (structs);
}
/**
@@ -1416,12 +1449,12 @@ gi_marshalling_tests_array_struct_take_in (GIMarshallingTestsBoxedStruct **struc
* @length:
*/
void
-gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *_enum, gint length)
+gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *v, gint length)
{
- g_assert_cmpint(length, ==, 3);
- g_assert_cmpint(_enum[0], ==, GI_MARSHALLING_TESTS_ENUM_VALUE1);
- g_assert_cmpint(_enum[1], ==, GI_MARSHALLING_TESTS_ENUM_VALUE2);
- g_assert_cmpint(_enum[2], ==, GI_MARSHALLING_TESTS_ENUM_VALUE3);
+ g_assert_cmpint (length, ==, 3);
+ g_assert_cmpint (v[0], ==, GI_MARSHALLING_TESTS_ENUM_VALUE1);
+ g_assert_cmpint (v[1], ==, GI_MARSHALLING_TESTS_ENUM_VALUE2);
+ g_assert_cmpint (v[2], ==, GI_MARSHALLING_TESTS_ENUM_VALUE3);
}
/**
@@ -1432,9 +1465,9 @@ gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *_enum, gint length)
void
gi_marshalling_tests_array_in_guint64_len (const gint *ints, guint64 length)
{
- g_assert_cmpint(length, ==, 4);
+ g_assert_cmpint (length, ==, 4);
- gi_marshalling_tests_array_in (ints, length);
+ gi_marshalling_tests_array_in (ints, length);
}
/**
@@ -1445,9 +1478,9 @@ gi_marshalling_tests_array_in_guint64_len (const gint *ints, guint64 length)
void
gi_marshalling_tests_array_in_guint8_len (const gint *ints, guint8 length)
{
- g_assert_cmpint(length, ==, 4);
+ g_assert_cmpint (length, ==, 4);
- gi_marshalling_tests_array_in (ints, length);
+ gi_marshalling_tests_array_in (ints, length);
}
/**
@@ -1457,10 +1490,10 @@ gi_marshalling_tests_array_in_guint8_len (const gint *ints, guint8 length)
void
gi_marshalling_tests_array_out (gint **ints, gint *length)
{
- static gint values[] = {-1, 0, 1, 2};
+ static gint values[] = { -1, 0, 1, 2 };
- *length = 4;
- *ints = values;
+ *length = 4;
+ *ints = values;
}
/**
@@ -1474,13 +1507,13 @@ gi_marshalling_tests_array_out (gint **ints, gint *length)
void
gi_marshalling_tests_array_out_etc (gint first, gint **ints, gint *length, gint last, gint *sum)
{
- static gint values[] = {-1, 0, 1, 2};
+ static gint values[] = { -1, 0, 1, 2 };
- values[0] = first;
- values[3] = last;
- *sum = first + last;
- *length = 4;
- *ints = values;
+ values[0] = first;
+ values[3] = last;
+ *sum = first + last;
+ *length = 4;
+ *ints = values;
}
/**
@@ -1491,16 +1524,16 @@ gi_marshalling_tests_array_out_etc (gint first, gint **ints, gint *length, gint
void
gi_marshalling_tests_array_inout (gint **ints, gint *length)
{
- static gint values[] = {-2, -1, 0, 1, 2};
+ static gint values[] = { -2, -1, 0, 1, 2 };
- g_assert_cmpint(*length, ==, 4);
- g_assert_cmpint((*ints)[0], ==, -1);
- g_assert_cmpint((*ints)[1], ==, 0);
- g_assert_cmpint((*ints)[2], ==, 1);
- g_assert_cmpint((*ints)[3], ==, 2);
+ g_assert_cmpint (*length, ==, 4);
+ g_assert_cmpint ((*ints)[0], ==, -1);
+ g_assert_cmpint ((*ints)[1], ==, 0);
+ g_assert_cmpint ((*ints)[2], ==, 1);
+ g_assert_cmpint ((*ints)[3], ==, 2);
- *length = 5;
- *ints = values;
+ *length = 5;
+ *ints = values;
}
/**
@@ -1514,19 +1547,19 @@ gi_marshalling_tests_array_inout (gint **ints, gint *length)
void
gi_marshalling_tests_array_inout_etc (gint first, gint **ints, gint *length, gint last, gint *sum)
{
- static gint values[] = {-2, -1, 0, 1, 2};
+ static gint values[] = { -2, -1, 0, 1, 2 };
- g_assert_cmpint(*length, ==, 4);
- g_assert_cmpint((*ints)[0], ==, -1);
- g_assert_cmpint((*ints)[1], ==, 0);
- g_assert_cmpint((*ints)[2], ==, 1);
- g_assert_cmpint((*ints)[3], ==, 2);
+ g_assert_cmpint (*length, ==, 4);
+ g_assert_cmpint ((*ints)[0], ==, -1);
+ g_assert_cmpint ((*ints)[1], ==, 0);
+ g_assert_cmpint ((*ints)[2], ==, 1);
+ g_assert_cmpint ((*ints)[3], ==, 2);
- values[0] = first;
- values[4] = last;
- *sum = first + last;
- *length = 5;
- *ints = values;
+ values[0] = first;
+ values[4] = last;
+ *sum = first + last;
+ *length = 5;
+ *ints = values;
}
/**
@@ -1537,10 +1570,10 @@ gi_marshalling_tests_array_inout_etc (gint first, gint **ints, gint *length, gin
void
gi_marshalling_tests_array_in_nonzero_nonlen (gint first, const guint8 *chars)
{
- g_assert(chars[0] == 'a');
- g_assert(chars[1] == 'b');
- g_assert(chars[2] == 'c');
- g_assert(chars[3] == 'd');
+ g_assert (chars[0] == 'a');
+ g_assert (chars[1] == 'b');
+ g_assert (chars[2] == 'c');
+ g_assert (chars[3] == 'd');
}
/**
@@ -1551,8 +1584,8 @@ gi_marshalling_tests_array_in_nonzero_nonlen (gint first, const guint8 *chars)
gchar **
gi_marshalling_tests_array_zero_terminated_return (void)
{
- static gchar *values[] = {"0", "1", "2", NULL};
- return values;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ return values;
}
/**
@@ -1563,7 +1596,7 @@ gi_marshalling_tests_array_zero_terminated_return (void)
gchar **
gi_marshalling_tests_array_zero_terminated_return_null (void)
{
- return NULL;
+ return NULL;
}
/**
@@ -1574,20 +1607,20 @@ gi_marshalling_tests_array_zero_terminated_return_null (void)
GIMarshallingTestsBoxedStruct **
gi_marshalling_tests_array_zero_terminated_return_struct (void)
{
- GIMarshallingTestsBoxedStruct **ret = (GIMarshallingTestsBoxedStruct**) g_new (gpointer, 4);
+ GIMarshallingTestsBoxedStruct **ret = (GIMarshallingTestsBoxedStruct **) g_new (gpointer, 4);
- ret[0] = gi_marshalling_tests_boxed_struct_new ();
- ret[0]->long_ = 42;
+ ret[0] = gi_marshalling_tests_boxed_struct_new ();
+ ret[0]->long_ = 42;
- ret[1] = gi_marshalling_tests_boxed_struct_new ();
- ret[1]->long_ = 43;
+ ret[1] = gi_marshalling_tests_boxed_struct_new ();
+ ret[1]->long_ = 43;
- ret[2] = gi_marshalling_tests_boxed_struct_new ();
- ret[2]->long_ = 44;
+ ret[2] = gi_marshalling_tests_boxed_struct_new ();
+ ret[2]->long_ = 44;
- ret[3] = NULL;
+ ret[3] = NULL;
- return ret;
+ return ret;
}
/**
@@ -1597,10 +1630,10 @@ gi_marshalling_tests_array_zero_terminated_return_struct (void)
void
gi_marshalling_tests_array_zero_terminated_in (gchar **utf8s)
{
- g_assert(g_strv_length(utf8s));
- g_assert_cmpstr(utf8s[0], ==, "0");
- g_assert_cmpstr(utf8s[1], ==, "1");
- g_assert_cmpstr(utf8s[2], ==, "2");
+ g_assert (g_strv_length (utf8s));
+ g_assert_cmpstr (utf8s[0], ==, "0");
+ g_assert_cmpstr (utf8s[1], ==, "1");
+ g_assert_cmpstr (utf8s[2], ==, "2");
}
/**
@@ -1608,10 +1641,10 @@ gi_marshalling_tests_array_zero_terminated_in (gchar **utf8s)
* @utf8s: (out) (array zero-terminated=1) (transfer none):
*/
void
-gi_marshalling_tests_array_zero_terminated_out (gchar ***utf8s)
+gi_marshalling_tests_array_zero_terminated_out (gchar *** utf8s)
{
- static gchar *values[] = {"0", "1", "2", NULL};
- *utf8s = values;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ *utf8s = values;
}
/**
@@ -1619,16 +1652,16 @@ gi_marshalling_tests_array_zero_terminated_out (gchar ***utf8s)
* @utf8s: (inout) (array zero-terminated=1) (transfer none):
*/
void
-gi_marshalling_tests_array_zero_terminated_inout (gchar ***utf8s)
+gi_marshalling_tests_array_zero_terminated_inout (gchar *** utf8s)
{
- static gchar *values[] = {"-1", "0", "1", "2", NULL};
+ static gchar *values[] = { "-1", "0", "1", "2", NULL };
- g_assert(g_strv_length(*utf8s));
- g_assert_cmpstr((*utf8s)[0], ==, "0");
- g_assert_cmpstr((*utf8s)[1], ==, "1");
- g_assert_cmpstr((*utf8s)[2], ==, "2");
+ g_assert (g_strv_length (*utf8s));
+ g_assert_cmpstr ((*utf8s)[0], ==, "0");
+ g_assert_cmpstr ((*utf8s)[1], ==, "1");
+ g_assert_cmpstr ((*utf8s)[2], ==, "2");
- *utf8s = values;
+ *utf8s = values;
}
/**
@@ -1640,20 +1673,21 @@ gi_marshalling_tests_array_zero_terminated_inout (gchar ***utf8s)
GVariant **
gi_marshalling_tests_array_gvariant_none_in (GVariant **variants)
{
- /* Use a static container to detect if someone tries to free it */
- static GVariant *private_container[3] = { NULL, NULL, NULL };
-
- if (private_container[0] == NULL) {
+ /* Use a static container to detect if someone tries to free it */
+ static GVariant *private_container[3] = { NULL, NULL, NULL };
+
+ if (private_container[0] == NULL)
+ {
private_container[0] = g_variant_new_int32 (27);
private_container[1] = g_variant_new_string ("Hello");
}
- g_assert (variants != NULL);
- g_assert_cmpint (g_variant_get_int32 (variants[0]), ==, 27);
- g_assert_cmpstr (g_variant_get_string (variants[1], NULL), ==, "Hello");
- g_assert (variants[2] == NULL);
+ g_assert (variants != NULL);
+ g_assert_cmpint (g_variant_get_int32 (variants[0]), ==, 27);
+ g_assert_cmpstr (g_variant_get_string (variants[1], NULL), ==, "Hello");
+ g_assert (variants[2] == NULL);
- return private_container;
+ return private_container;
}
/**
@@ -1665,19 +1699,19 @@ gi_marshalling_tests_array_gvariant_none_in (GVariant **variants)
GVariant **
gi_marshalling_tests_array_gvariant_container_in (GVariant **variants)
{
- GVariant **container;
+ GVariant **container;
+
+ g_assert (variants != NULL);
+ g_assert_cmpint (g_variant_get_int32 (variants[0]), ==, 27);
+ g_assert_cmpstr (g_variant_get_string (variants[1], NULL), ==, "Hello");
+ g_assert (variants[2] == NULL);
+
+ container = g_new0 (GVariant *, 3);
+ container[0] = variants[0];
+ container[1] = variants[1];
+ g_free (variants);
- g_assert (variants != NULL);
- g_assert_cmpint (g_variant_get_int32 (variants[0]), ==, 27);
- g_assert_cmpstr (g_variant_get_string (variants[1], NULL), ==, "Hello");
- g_assert (variants[2] == NULL);
-
- container = g_new0 (GVariant*, 3);
- container[0] = variants[0];
- container[1] = variants[1];
- g_free (variants);
-
- return container;
+ return container;
}
/**
@@ -1689,23 +1723,23 @@ gi_marshalling_tests_array_gvariant_container_in (GVariant **variants)
GVariant **
gi_marshalling_tests_array_gvariant_full_in (GVariant **variants)
{
- GVariant **container;
+ GVariant **container;
- g_assert (variants != NULL);
- g_assert_cmpint (g_variant_get_int32 (variants[0]), ==, 27);
- g_assert_cmpstr (g_variant_get_string (variants[1], NULL), ==, "Hello");
- g_assert (variants[2] == NULL);
-
- /* To catch different behaviors we reconstruct one variant from scratch,
- * while leaving the other untouched. Both approaches are legal with full
- * transfer in and out */
- container = g_new0 (GVariant*, 3);
- container[0] = g_variant_new_int32 (g_variant_get_int32 (variants[0]));
- g_variant_unref (variants[0]);
- container[1] = variants[1];
- g_free (variants);
+ g_assert (variants != NULL);
+ g_assert_cmpint (g_variant_get_int32 (variants[0]), ==, 27);
+ g_assert_cmpstr (g_variant_get_string (variants[1], NULL), ==, "Hello");
+ g_assert (variants[2] == NULL);
- return container;
+ /* To catch different behaviors we reconstruct one variant from scratch,
+ * while leaving the other untouched. Both approaches are legal with full
+ * transfer in and out */
+ container = g_new0 (GVariant *, 3);
+ container[0] = g_variant_new_int32 (g_variant_get_int32 (variants[0]));
+ g_variant_unref (variants[0]);
+ container[1] = variants[1];
+ g_free (variants);
+
+ return container;
}
/**
@@ -1716,16 +1750,40 @@ gi_marshalling_tests_array_gvariant_full_in (GVariant **variants)
GArray *
gi_marshalling_tests_garray_int_none_return (void)
{
- static GArray *array = NULL;
- gint i;
+ static GArray *v = NULL;
+ gint i;
- if (array == NULL) {
- array = g_array_new (TRUE, TRUE, sizeof (gint));
- for (i = -1; i < 3; i++)
- g_array_append_val (array, i);
+ if (v == NULL)
+ {
+ v = g_array_new (TRUE, TRUE, sizeof (gint));
+ for (i = -1; i < 3; i++)
+ g_array_append_val (v, i);
}
- return array;
+ return v;
+}
+
+/**
+ * gi_marshalling_tests_garray_uint64_none_return:
+ *
+ * Returns: (element-type guint64) (transfer none):
+ */
+GArray *
+gi_marshalling_tests_garray_uint64_none_return (void)
+{
+ static GArray *array = NULL;
+ guint64 i;
+
+ if (array == NULL)
+ {
+ array = g_array_new (TRUE, TRUE, sizeof (guint64));
+ i = 0;
+ g_array_append_val (array, i);
+ i = G_MAXUINT64;
+ g_array_append_val (array, i);
+ }
+
+ return array;
}
/**
@@ -1758,17 +1816,18 @@ gi_marshalling_tests_garray_uint64_none_return (void)
GArray *
gi_marshalling_tests_garray_utf8_none_return (void)
{
- static GArray *array = NULL;
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ static GArray *array = NULL;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- if (array == NULL) {
- array = g_array_new (TRUE, TRUE, sizeof (gchar *));
- for (i = 0; values[i]; i++)
- g_array_append_val (array, values[i]);
+ if (array == NULL)
+ {
+ array = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ for (i = 0; values[i]; i++)
+ g_array_append_val (array, values[i]);
}
- return array;
+ return array;
}
/**
@@ -1779,15 +1838,15 @@ gi_marshalling_tests_garray_utf8_none_return (void)
GArray *
gi_marshalling_tests_garray_utf8_container_return (void)
{
- GArray *array = NULL;
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ GArray *array = NULL;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- array = g_array_new (TRUE, TRUE, sizeof (gchar *));
- for (i = 0; values[i]; i++)
- g_array_append_val (array, values[i]);
+ array = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ for (i = 0; values[i]; i++)
+ g_array_append_val (array, values[i]);
- return array;
+ return array;
}
/**
@@ -1798,17 +1857,18 @@ gi_marshalling_tests_garray_utf8_container_return (void)
GArray *
gi_marshalling_tests_garray_utf8_full_return (void)
{
- GArray *array = NULL;
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ GArray *array = NULL;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- array = g_array_new (TRUE, TRUE, sizeof (gchar *));
- for (i = 0; values[i]; i++) {
- gchar *str = g_strdup (values[i]);
- g_array_append_val (array, str);
+ array = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ for (i = 0; values[i]; i++)
+ {
+ gchar *str = g_strdup (values[i]);
+ g_array_append_val (array, str);
}
- return array;
+ return array;
}
/**
@@ -1818,11 +1878,23 @@ gi_marshalling_tests_garray_utf8_full_return (void)
void
gi_marshalling_tests_garray_int_none_in (GArray *array_)
{
- g_assert_cmpint(array_->len, ==, 4);
- g_assert_cmpint(g_array_index (array_, gint, 0), ==, -1);
- g_assert_cmpint(g_array_index (array_, gint, 1), ==, 0);
- g_assert_cmpint(g_array_index (array_, gint, 2), ==, 1);
- g_assert_cmpint(g_array_index (array_, gint, 3), ==, 2);
+ g_assert_cmpint (array_->len, ==, 4);
+ g_assert_cmpint (g_array_index (array_, gint, 0), ==, -1);
+ g_assert_cmpint (g_array_index (array_, gint, 1), ==, 0);
+ g_assert_cmpint (g_array_index (array_, gint, 2), ==, 1);
+ g_assert_cmpint (g_array_index (array_, gint, 3), ==, 2);
+}
+
+/**
+ * gi_marshalling_tests_garray_uint64_none_in:
+ * @array_: (element-type guint64) (transfer none):
+ */
+void
+gi_marshalling_tests_garray_uint64_none_in (GArray *array_)
+{
+ g_assert_cmpint (array_->len, ==, 2);
+ g_assert_cmpint (g_array_index (array_, guint64, 0), ==, 0);
+ g_assert_cmpint (g_array_index (array_, guint64, 1), ==, G_MAXUINT64);
}
/**
@@ -1844,10 +1916,10 @@ gi_marshalling_tests_garray_uint64_none_in (GArray *array_)
void
gi_marshalling_tests_garray_utf8_none_in (GArray *array_)
{
- g_assert_cmpint(array_->len, ==, 3);
- g_assert_cmpstr(g_array_index (array_, gchar*, 0), ==, "0");
- g_assert_cmpstr(g_array_index (array_, gchar*, 1), ==, "1");
- g_assert_cmpstr(g_array_index (array_, gchar*, 2), ==, "2");
+ g_assert_cmpint (array_->len, ==, 3);
+ g_assert_cmpstr (g_array_index (array_, gchar *, 0), ==, "0");
+ g_assert_cmpstr (g_array_index (array_, gchar *, 1), ==, "1");
+ g_assert_cmpstr (g_array_index (array_, gchar *, 2), ==, "2");
}
/**
@@ -1857,17 +1929,18 @@ gi_marshalling_tests_garray_utf8_none_in (GArray *array_)
void
gi_marshalling_tests_garray_utf8_none_out (GArray **array_)
{
- static GArray *internal = NULL;
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ static GArray *internal = NULL;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- if (internal == NULL) {
- internal = g_array_new (TRUE, TRUE, sizeof (gchar *));
- for (i = 0; values[i]; i++)
- g_array_append_val (internal, values[i]);
+ if (internal == NULL)
+ {
+ internal = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ for (i = 0; values[i]; i++)
+ g_array_append_val (internal, values[i]);
}
- *array_ = internal;
+ *array_ = internal;
}
/**
@@ -1877,14 +1950,14 @@ gi_marshalling_tests_garray_utf8_none_out (GArray **array_)
void
gi_marshalling_tests_garray_utf8_container_out (GArray **array_)
{
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- *array_ = NULL;
+ *array_ = NULL;
- *array_ = g_array_new (TRUE, TRUE, sizeof (gchar *));
- for (i = 0; values[i]; i++)
- g_array_append_val (*array_, values[i]);
+ *array_ = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ for (i = 0; values[i]; i++)
+ g_array_append_val (*array_, values[i]);
}
/**
@@ -1894,15 +1967,34 @@ gi_marshalling_tests_garray_utf8_container_out (GArray **array_)
void
gi_marshalling_tests_garray_utf8_full_out (GArray **array_)
{
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
+
+ *array_ = NULL;
+
+ *array_ = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ for (i = 0; values[i]; i++)
+ {
+ gchar *str = g_strdup (values[i]);
+ g_array_append_val (*array_, str);
+ }
+}
- *array_ = NULL;
+/**
+ * gi_marshalling_tests_garray_utf8_full_out_caller_allocated:
+ * @array_: (out caller-allocates) (array) (element-type utf8) (transfer full):
+ */
+void
+gi_marshalling_tests_garray_utf8_full_out_caller_allocated (GArray *array_)
+{
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- *array_ = g_array_new (TRUE, TRUE, sizeof (gchar *));
- for (i = 0; values[i]; i++) {
- gchar *str = g_strdup (values[i]);
- g_array_append_val (*array_, str);
+ g_array_set_size (array_, 0);
+ for (i = 0; values[i]; i++)
+ {
+ gchar *str = g_strdup (values[i]);
+ g_array_append_val (array_, str);
}
}
@@ -1913,22 +2005,23 @@ gi_marshalling_tests_garray_utf8_full_out (GArray **array_)
void
gi_marshalling_tests_garray_utf8_none_inout (GArray **array_)
{
- static GArray *internal = NULL;
- static gchar *values[] = {"-2", "-1", "0", "1", NULL};
- gint i;
+ static GArray *internal = NULL;
+ static gchar *values[] = { "-2", "-1", "0", "1", NULL };
+ gint i;
- g_assert_cmpint((*array_)->len, ==, 3);
- g_assert_cmpstr(g_array_index (*array_, gchar*, 0), ==, "0");
- g_assert_cmpstr(g_array_index (*array_, gchar*, 1), ==, "1");
- g_assert_cmpstr(g_array_index (*array_, gchar*, 2), ==, "2");
+ g_assert_cmpint ((*array_)->len, ==, 3);
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 0), ==, "0");
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 1), ==, "1");
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 2), ==, "2");
- if (internal == NULL) {
- internal = g_array_new (TRUE, TRUE, sizeof (gchar *));
- for (i = 0; values[i]; i++)
- g_array_append_val (internal, values[i]);
+ if (internal == NULL)
+ {
+ internal = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ for (i = 0; values[i]; i++)
+ g_array_append_val (internal, values[i]);
}
- *array_ = internal;
+ *array_ = internal;
}
/**
@@ -1938,24 +2031,24 @@ gi_marshalling_tests_garray_utf8_none_inout (GArray **array_)
void
gi_marshalling_tests_garray_utf8_container_inout (GArray **array_)
{
- static gchar *val1 = "-2";
- static gchar *val2 = "-1";
- static gchar *val3 = "0";
- static gchar *val4 = "1";
- GArray *result;
+ static gchar *val1 = "-2";
+ static gchar *val2 = "-1";
+ static gchar *val3 = "0";
+ static gchar *val4 = "1";
+ GArray *result;
- g_assert_cmpint((*array_)->len, ==, 3);
- g_assert_cmpstr(g_array_index (*array_, gchar*, 0), ==, "0");
- g_assert_cmpstr(g_array_index (*array_, gchar*, 1), ==, "1");
- g_assert_cmpstr(g_array_index (*array_, gchar*, 2), ==, "2");
+ g_assert_cmpint ((*array_)->len, ==, 3);
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 0), ==, "0");
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 1), ==, "1");
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 2), ==, "2");
- result = g_array_new (TRUE, TRUE, sizeof (gchar *));
- g_array_append_val (result, val1);
- g_array_append_val (result, val2);
- g_array_append_val (result, val3);
- g_array_append_val (result, val4);
+ result = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ g_array_append_val (result, val1);
+ g_array_append_val (result, val2);
+ g_array_append_val (result, val3);
+ g_array_append_val (result, val4);
- *array_ = result;
+ *array_ = result;
}
/**
@@ -1965,27 +2058,27 @@ gi_marshalling_tests_garray_utf8_container_inout (GArray **array_)
void
gi_marshalling_tests_garray_utf8_full_inout (GArray **array_)
{
- static gchar *val1 = "-1";
- static gchar *val2 = "-2";
- gchar *val;
- GArray *result;
+ static gchar *val1 = "-1";
+ static gchar *val2 = "-2";
+ gchar *val;
+ GArray *result;
- g_assert_cmpint((*array_)->len, ==, 3);
- g_assert_cmpstr(g_array_index (*array_, gchar*, 0), ==, "0");
- g_assert_cmpstr(g_array_index (*array_, gchar*, 1), ==, "1");
- g_assert_cmpstr(g_array_index (*array_, gchar*, 2), ==, "2");
+ g_assert_cmpint ((*array_)->len, ==, 3);
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 0), ==, "0");
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 1), ==, "1");
+ g_assert_cmpstr (g_array_index (*array_, gchar *, 2), ==, "2");
- result = g_array_new (TRUE, TRUE, sizeof (gchar *));
- val = g_strdup (val2);
- g_array_append_val(result, val);
- val = g_strdup (val1);
- g_array_append_val(result, val);
- val = g_strdup ("0");
- g_array_append_val(result, val);
- val = g_strdup ("1");
- g_array_append_val(result, val);
+ result = g_array_new (TRUE, TRUE, sizeof (gchar *));
+ val = g_strdup (val2);
+ g_array_append_val (result, val);
+ val = g_strdup (val1);
+ g_array_append_val (result, val);
+ val = g_strdup ("0");
+ g_array_append_val (result, val);
+ val = g_strdup ("1");
+ g_array_append_val (result, val);
- *array_ = result;
+ *array_ = result;
}
/**
@@ -1996,17 +2089,18 @@ gi_marshalling_tests_garray_utf8_full_inout (GArray **array_)
GPtrArray *
gi_marshalling_tests_gptrarray_utf8_none_return (void)
{
- static GPtrArray *parray = NULL;
- static gchar *values[] = {"0", "1", "2"};
- gint i;
+ static GPtrArray *parray = NULL;
+ static gchar *values[] = { "0", "1", "2" };
+ gint i;
- if (parray == NULL) {
- parray = g_ptr_array_new ();
- for (i = 0; i < 3; i++)
- g_ptr_array_add (parray, (gpointer) values[i]);
+ if (parray == NULL)
+ {
+ parray = g_ptr_array_new ();
+ for (i = 0; i < 3; i++)
+ g_ptr_array_add (parray, (gpointer) values[i]);
}
- return parray;
+ return parray;
}
/**
@@ -2017,15 +2111,15 @@ gi_marshalling_tests_gptrarray_utf8_none_return (void)
GPtrArray *
gi_marshalling_tests_gptrarray_utf8_container_return (void)
{
- GPtrArray *parray = NULL;
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ GPtrArray *parray = NULL;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- parray = g_ptr_array_new ();
- for (i = 0; values[i]; i++)
- g_ptr_array_add (parray, (gpointer)values[i]);
+ parray = g_ptr_array_new ();
+ for (i = 0; values[i]; i++)
+ g_ptr_array_add (parray, (gpointer) values[i]);
- return parray;
+ return parray;
}
/**
@@ -2036,17 +2130,18 @@ gi_marshalling_tests_gptrarray_utf8_container_return (void)
GPtrArray *
gi_marshalling_tests_gptrarray_utf8_full_return (void)
{
- GPtrArray *parray = NULL;
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ GPtrArray *parray = NULL;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- parray = g_ptr_array_new ();
- for (i = 0; values[i]; i++) {
- gchar *str = g_strdup (values[i]);
- g_ptr_array_add (parray, (gpointer)str);
+ parray = g_ptr_array_new ();
+ for (i = 0; values[i]; i++)
+ {
+ gchar *str = g_strdup (values[i]);
+ g_ptr_array_add (parray, (gpointer) str);
}
- return parray;
+ return parray;
}
/**
@@ -2056,10 +2151,10 @@ gi_marshalling_tests_gptrarray_utf8_full_return (void)
void
gi_marshalling_tests_gptrarray_utf8_none_in (GPtrArray *parray_)
{
- g_assert_cmpint(parray_->len, ==, 3);
- g_assert_cmpstr(g_ptr_array_index (parray_, 0), ==, "0");
- g_assert_cmpstr(g_ptr_array_index (parray_, 1), ==, "1");
- g_assert_cmpstr(g_ptr_array_index (parray_, 2), ==, "2");
+ g_assert_cmpint (parray_->len, ==, 3);
+ g_assert_cmpstr (g_ptr_array_index (parray_, 0), ==, "0");
+ g_assert_cmpstr (g_ptr_array_index (parray_, 1), ==, "1");
+ g_assert_cmpstr (g_ptr_array_index (parray_, 2), ==, "2");
}
/**
@@ -2069,17 +2164,18 @@ gi_marshalling_tests_gptrarray_utf8_none_in (GPtrArray *parray_)
void
gi_marshalling_tests_gptrarray_utf8_none_out (GPtrArray **parray_)
{
- static GPtrArray *internal = NULL;
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ static GPtrArray *internal = NULL;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- if (internal == NULL) {
- internal = g_ptr_array_new ();
- for (i = 0; values[i]; i++)
- g_ptr_array_add (internal, (gpointer)values[i]);
+ if (internal == NULL)
+ {
+ internal = g_ptr_array_new ();
+ for (i = 0; values[i]; i++)
+ g_ptr_array_add (internal, (gpointer) values[i]);
}
- *parray_ = internal;
+ *parray_ = internal;
}
/**
@@ -2089,14 +2185,14 @@ gi_marshalling_tests_gptrarray_utf8_none_out (GPtrArray **parray_)
void
gi_marshalling_tests_gptrarray_utf8_container_out (GPtrArray **parray_)
{
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- *parray_ = NULL;
+ *parray_ = NULL;
- *parray_ = g_ptr_array_new ();
- for (i = 0; values[i]; i++)
- g_ptr_array_add (*parray_, (gpointer)values[i]);
+ *parray_ = g_ptr_array_new ();
+ for (i = 0; values[i]; i++)
+ g_ptr_array_add (*parray_, (gpointer) values[i]);
}
/**
@@ -2106,15 +2202,16 @@ gi_marshalling_tests_gptrarray_utf8_container_out (GPtrArray **parray_)
void
gi_marshalling_tests_gptrarray_utf8_full_out (GPtrArray **parray_)
{
- static gchar *values[] = {"0", "1", "2", NULL};
- gint i;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ gint i;
- *parray_ = NULL;
+ *parray_ = NULL;
- *parray_ = g_ptr_array_new ();
- for (i = 0; values[i]; i++) {
- gchar *str = g_strdup (values[i]);
- g_ptr_array_add (*parray_, (gpointer)str);
+ *parray_ = g_ptr_array_new ();
+ for (i = 0; values[i]; i++)
+ {
+ gchar *str = g_strdup (values[i]);
+ g_ptr_array_add (*parray_, (gpointer) str);
}
}
@@ -2125,22 +2222,23 @@ gi_marshalling_tests_gptrarray_utf8_full_out (GPtrArray **parray_)
void
gi_marshalling_tests_gptrarray_utf8_none_inout (GPtrArray **parray_)
{
- static GPtrArray *internal = NULL;
- static gchar *values[] = {"-2", "-1", "0", "1", NULL};
- gint i;
+ static GPtrArray *internal = NULL;
+ static gchar *values[] = { "-2", "-1", "0", "1", NULL };
+ gint i;
- g_assert_cmpint((*parray_)->len, ==, 3);
- g_assert_cmpstr(g_ptr_array_index (*parray_, 0), ==, "0");
- g_assert_cmpstr(g_ptr_array_index (*parray_, 1), ==, "1");
- g_assert_cmpstr(g_ptr_array_index (*parray_, 2), ==, "2");
+ g_assert_cmpint ((*parray_)->len, ==, 3);
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 0), ==, "0");
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 1), ==, "1");
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 2), ==, "2");
- if (internal == NULL) {
- internal = g_ptr_array_new ();
- for (i = 0; values[i]; i++)
- g_ptr_array_add (internal, (gpointer) values[i]);
+ if (internal == NULL)
+ {
+ internal = g_ptr_array_new ();
+ for (i = 0; values[i]; i++)
+ g_ptr_array_add (internal, (gpointer) values[i]);
}
- *parray_ = internal;
+ *parray_ = internal;
}
/**
@@ -2150,24 +2248,24 @@ gi_marshalling_tests_gptrarray_utf8_none_inout (GPtrArray **parray_)
void
gi_marshalling_tests_gptrarray_utf8_container_inout (GPtrArray **parray_)
{
- static gchar *val1 = "-2";
- static gchar *val2 = "-1";
- static gchar *val3 = "0";
- static gchar *val4 = "1";
- GPtrArray *result;
+ static gchar *val1 = "-2";
+ static gchar *val2 = "-1";
+ static gchar *val3 = "0";
+ static gchar *val4 = "1";
+ GPtrArray *result;
- g_assert_cmpint((*parray_)->len, ==, 3);
- g_assert_cmpstr(g_ptr_array_index (*parray_, 0), ==, "0");
- g_assert_cmpstr(g_ptr_array_index (*parray_, 1), ==, "1");
- g_assert_cmpstr(g_ptr_array_index (*parray_, 2), ==, "2");
+ g_assert_cmpint ((*parray_)->len, ==, 3);
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 0), ==, "0");
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 1), ==, "1");
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 2), ==, "2");
- result = g_ptr_array_new ();
- g_ptr_array_add (result, (gpointer) val1);
- g_ptr_array_add (result, (gpointer) val2);
- g_ptr_array_add (result, (gpointer) val3);
- g_ptr_array_add (result, (gpointer) val4);
+ result = g_ptr_array_new ();
+ g_ptr_array_add (result, (gpointer) val1);
+ g_ptr_array_add (result, (gpointer) val2);
+ g_ptr_array_add (result, (gpointer) val3);
+ g_ptr_array_add (result, (gpointer) val4);
- *parray_ = result;
+ *parray_ = result;
}
/**
@@ -2177,27 +2275,27 @@ gi_marshalling_tests_gptrarray_utf8_container_inout (GPtrArray **parray_)
void
gi_marshalling_tests_gptrarray_utf8_full_inout (GPtrArray **parray_)
{
- static gchar *val1 = "-1";
- static gchar *val2 = "-2";
- gchar *val;
- GPtrArray *result;
+ static gchar *val1 = "-1";
+ static gchar *val2 = "-2";
+ gchar *val;
+ GPtrArray *result;
- g_assert_cmpint((*parray_)->len, ==, 3);
- g_assert_cmpstr(g_ptr_array_index (*parray_, 0), ==, "0");
- g_assert_cmpstr(g_ptr_array_index (*parray_, 1), ==, "1");
- g_assert_cmpstr(g_ptr_array_index (*parray_, 2), ==, "2");
+ g_assert_cmpint ((*parray_)->len, ==, 3);
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 0), ==, "0");
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 1), ==, "1");
+ g_assert_cmpstr (g_ptr_array_index (*parray_, 2), ==, "2");
- result = g_ptr_array_new ();
- val = g_strdup (val2);
- g_ptr_array_add(result, (gpointer) val);
- val = g_strdup (val1);
- g_ptr_array_add(result, (gpointer) val);
- val = g_strdup ("0");
- g_ptr_array_add(result, (gpointer) val);
- val = g_strdup ("1");
- g_ptr_array_add(result, (gpointer) val);
+ result = g_ptr_array_new ();
+ val = g_strdup (val2);
+ g_ptr_array_add (result, (gpointer) val);
+ val = g_strdup (val1);
+ g_ptr_array_add (result, (gpointer) val);
+ val = g_strdup ("0");
+ g_ptr_array_add (result, (gpointer) val);
+ val = g_strdup ("1");
+ g_ptr_array_add (result, (gpointer) val);
- *parray_ = result;
+ *parray_ = result;
}
/**
@@ -2208,28 +2306,58 @@ gi_marshalling_tests_gptrarray_utf8_full_inout (GPtrArray **parray_)
GByteArray *
gi_marshalling_tests_bytearray_full_return (void)
{
- GByteArray *array = NULL;
- guint8 data[] = {'\0', '1', '\xFF', '3'};
+ GByteArray *array = NULL;
+ guint8 data[] = { '\0', '1', '\xFF', '3' };
- array = g_byte_array_new ();
- g_byte_array_append (array, (const guint8*)data, G_N_ELEMENTS(data));
+ array = g_byte_array_new ();
+ g_byte_array_append (array, (const guint8 *) data, G_N_ELEMENTS (data));
- return array;
+ return array;
}
/**
* gi_marshalling_tests_bytearray_none_in:
- * @array_: (element-type gint8) (transfer none):
+ * @v: (element-type gint8) (transfer none):
+ */
+void
+gi_marshalling_tests_bytearray_none_in (GByteArray *v)
+{
+ g_assert_cmpuint (v->len, ==, 4);
+ g_assert_cmpuint (g_array_index (v, unsigned char, 0), ==, 0);
+ g_assert_cmpuint (g_array_index (v, unsigned char, 1), ==, 49);
+ g_assert_cmpuint (g_array_index (v, unsigned char, 2), ==, 0xFF);
+ g_assert_cmpuint (g_array_index (v, unsigned char, 3), ==, 51);
+}
+
+/**
+ * gi_marshalling_tests_gbytes_full_return:
+ *
+ * Returns: (transfer full):
+ */
+GBytes *
+gi_marshalling_tests_gbytes_full_return (void)
+{
+ static guint8 data[] = { 0, 49, 0xFF, 51 };
+
+ return g_bytes_new_static (data, G_N_ELEMENTS (data));
+}
+
+/**
+ * gi_marshalling_tests_gbytes_none_in:
*/
void
-gi_marshalling_tests_bytearray_none_in (GByteArray *array_)
+gi_marshalling_tests_gbytes_none_in (GBytes *v)
{
- g_assert_cmpuint (array_->len, ==, 4);
- g_assert_cmpuint (g_array_index (array_, unsigned char, 0), ==, 0);
- g_assert_cmpuint (g_array_index (array_, unsigned char, 1), ==, 49);
- g_assert_cmpuint (g_array_index (array_, unsigned char, 2), ==, 0xFF);
- g_assert_cmpuint (g_array_index (array_, unsigned char, 3), ==, 51);
+ const guint8 *data;
+ gsize len;
+ data = g_bytes_get_data (v, &len);
+
+ g_assert_cmpuint (len, ==, 4);
+ g_assert_cmpuint (data[0], ==, 0);
+ g_assert_cmpuint (data[1], ==, 49);
+ g_assert_cmpuint (data[2], ==, 0xFF);
+ g_assert_cmpuint (data[3], ==, 51);
}
/**
@@ -2240,12 +2368,12 @@ gi_marshalling_tests_bytearray_none_in (GByteArray *array_)
GStrv
gi_marshalling_tests_gstrv_return (void)
{
- GStrv values = g_new0 (gchar*, 4);
- values[0] = g_strdup ("0");
- values[1] = g_strdup ("1");
- values[2] = g_strdup ("2");
- values[3] = NULL;
- return values;
+ GStrv values = g_new0 (gchar *, 4);
+ values[0] = g_strdup ("0");
+ values[1] = g_strdup ("1");
+ values[2] = g_strdup ("2");
+ values[3] = NULL;
+ return values;
}
/**
@@ -2255,10 +2383,10 @@ gi_marshalling_tests_gstrv_return (void)
void
gi_marshalling_tests_gstrv_in (GStrv g_strv)
{
- g_assert_cmpint(g_strv_length(g_strv), ==, 3);
- g_assert_cmpstr(g_strv[0], ==, "0");
- g_assert_cmpstr(g_strv[1], ==, "1");
- g_assert_cmpstr(g_strv[2], ==, "2");
+ g_assert_cmpint (g_strv_length (g_strv), ==, 3);
+ g_assert_cmpstr (g_strv[0], ==, "0");
+ g_assert_cmpstr (g_strv[1], ==, "1");
+ g_assert_cmpstr (g_strv[2], ==, "2");
}
/**
@@ -2268,8 +2396,8 @@ gi_marshalling_tests_gstrv_in (GStrv g_strv)
void
gi_marshalling_tests_gstrv_out (GStrv *g_strv)
{
- static gchar *values[] = {"0", "1", "2", NULL};
- *g_strv = values;
+ static gchar *values[] = { "0", "1", "2", NULL };
+ *g_strv = values;
}
/**
@@ -2279,14 +2407,14 @@ gi_marshalling_tests_gstrv_out (GStrv *g_strv)
void
gi_marshalling_tests_gstrv_inout (GStrv *g_strv)
{
- static gchar *values[] = {"-1", "0", "1", "2", NULL};
+ static gchar *values[] = { "-1", "0", "1", "2", NULL };
- g_assert(g_strv_length(*g_strv) == 3);
- g_assert(strcmp((*g_strv)[0], "0") == 0);
- g_assert(strcmp((*g_strv)[1], "1") == 0);
- g_assert(strcmp((*g_strv)[2], "2") == 0);
+ g_assert (g_strv_length (*g_strv) == 3);
+ g_assert (strcmp ((*g_strv)[0], "0") == 0);
+ g_assert (strcmp ((*g_strv)[1], "1") == 0);
+ g_assert (strcmp ((*g_strv)[2], "2") == 0);
- *g_strv = values;
+ *g_strv = values;
}
/**
@@ -2297,16 +2425,36 @@ gi_marshalling_tests_gstrv_inout (GStrv *g_strv)
GList *
gi_marshalling_tests_glist_int_none_return (void)
{
- static GList *list = NULL;
+ static GList *list = NULL;
- if (list == NULL) {
- list = g_list_append(list, GINT_TO_POINTER(-1));
- list = g_list_append(list, GINT_TO_POINTER(0));
- list = g_list_append(list, GINT_TO_POINTER(1));
- list = g_list_append(list, GINT_TO_POINTER(2));
+ if (list == NULL)
+ {
+ list = g_list_append (list, GINT_TO_POINTER (-1));
+ list = g_list_append (list, GINT_TO_POINTER (0));
+ list = g_list_append (list, GINT_TO_POINTER (1));
+ list = g_list_append (list, GINT_TO_POINTER (2));
}
- return list;
+ return list;
+}
+
+/**
+ * gi_marshalling_tests_glist_uint32_none_return:
+ *
+ * Returns: (element-type guint32) (transfer none):
+ */
+GList *
+gi_marshalling_tests_glist_uint32_none_return (void)
+{
+ static GList *list = NULL;
+
+ if (list == NULL)
+ {
+ list = g_list_append (list, GUINT_TO_POINTER (0));
+ list = g_list_append (list, GUINT_TO_POINTER (G_MAXUINT32));
+ }
+
+ return list;
}
/**
@@ -2335,15 +2483,16 @@ gi_marshalling_tests_glist_uint32_none_return (void)
GList *
gi_marshalling_tests_glist_utf8_none_return (void)
{
- static GList *list = NULL;
+ static GList *list = NULL;
- if (list == NULL) {
- list = g_list_append(list, "0");
- list = g_list_append(list, "1");
- list = g_list_append(list, "2");
+ if (list == NULL)
+ {
+ list = g_list_append (list, "0");
+ list = g_list_append (list, "1");
+ list = g_list_append (list, "2");
}
- return list;
+ return list;
}
/**
@@ -2354,13 +2503,13 @@ gi_marshalling_tests_glist_utf8_none_return (void)
GList *
gi_marshalling_tests_glist_utf8_container_return (void)
{
- GList *list = NULL;
+ GList *list = NULL;
- list = g_list_append(list, "0");
- list = g_list_append(list, "1");
- list = g_list_append(list, "2");
+ list = g_list_append (list, "0");
+ list = g_list_append (list, "1");
+ list = g_list_append (list, "2");
- return list;
+ return list;
}
/**
@@ -2371,13 +2520,13 @@ gi_marshalling_tests_glist_utf8_container_return (void)
GList *
gi_marshalling_tests_glist_utf8_full_return (void)
{
- GList *list = NULL;
+ GList *list = NULL;
- list = g_list_append(list, g_strdup("0"));
- list = g_list_append(list, g_strdup("1"));
- list = g_list_append(list, g_strdup("2"));
+ list = g_list_append (list, g_strdup ("0"));
+ list = g_list_append (list, g_strdup ("1"));
+ list = g_list_append (list, g_strdup ("2"));
- return list;
+ return list;
}
/**
@@ -2387,11 +2536,23 @@ gi_marshalling_tests_glist_utf8_full_return (void)
void
gi_marshalling_tests_glist_int_none_in (GList *list)
{
- g_assert_cmpint(g_list_length(list), ==, 4);
- g_assert_cmpint(GPOINTER_TO_INT(g_list_nth_data(list, 0)), ==, -1);
- g_assert_cmpint(GPOINTER_TO_INT(g_list_nth_data(list, 1)), ==, 0);
- g_assert_cmpint(GPOINTER_TO_INT(g_list_nth_data(list, 2)), ==, 1);
- g_assert_cmpint(GPOINTER_TO_INT(g_list_nth_data(list, 3)), ==, 2);
+ g_assert_cmpint (g_list_length (list), ==, 4);
+ g_assert_cmpint (GPOINTER_TO_INT (g_list_nth_data (list, 0)), ==, -1);
+ g_assert_cmpint (GPOINTER_TO_INT (g_list_nth_data (list, 1)), ==, 0);
+ g_assert_cmpint (GPOINTER_TO_INT (g_list_nth_data (list, 2)), ==, 1);
+ g_assert_cmpint (GPOINTER_TO_INT (g_list_nth_data (list, 3)), ==, 2);
+}
+
+/**
+ * gi_marshalling_tests_glist_uint32_none_in:
+ * @list: (element-type guint32) (transfer none):
+ */
+void
+gi_marshalling_tests_glist_uint32_none_in (GList *list)
+{
+ g_assert_cmpint (g_list_length (list), ==, 2);
+ g_assert_cmpint (GPOINTER_TO_UINT (g_list_nth_data (list, 0)), ==, 0);
+ g_assert_cmpint (GPOINTER_TO_UINT (g_list_nth_data (list, 1)), ==, G_MAXUINT32);
}
/**
@@ -2413,10 +2574,10 @@ gi_marshalling_tests_glist_uint32_none_in (GList *list)
void
gi_marshalling_tests_glist_utf8_none_in (GList *list)
{
- g_assert_cmpint(g_list_length(list), ==, 3);
- g_assert_cmpint(strcmp(g_list_nth_data(list, 0), "0"), ==, 0);
- g_assert_cmpint(strcmp(g_list_nth_data(list, 1), "1"), ==, 0);
- g_assert_cmpint(strcmp(g_list_nth_data(list, 2), "2"), ==, 0);
+ g_assert_cmpint (g_list_length (list), ==, 3);
+ g_assert_cmpint (strcmp (g_list_nth_data (list, 0), "0"), ==, 0);
+ g_assert_cmpint (strcmp (g_list_nth_data (list, 1), "1"), ==, 0);
+ g_assert_cmpint (strcmp (g_list_nth_data (list, 2), "2"), ==, 0);
}
/**
@@ -2426,15 +2587,16 @@ gi_marshalling_tests_glist_utf8_none_in (GList *list)
void
gi_marshalling_tests_glist_utf8_none_out (GList **list)
{
- static GList *values = NULL;
+ static GList *values = NULL;
- if (values == NULL) {
- values = g_list_append(values, "0");
- values = g_list_append(values, "1");
- values = g_list_append(values, "2");
+ if (values == NULL)
+ {
+ values = g_list_append (values, "0");
+ values = g_list_append (values, "1");
+ values = g_list_append (values, "2");
}
- *list = values;
+ *list = values;
}
/**
@@ -2444,11 +2606,11 @@ gi_marshalling_tests_glist_utf8_none_out (GList **list)
void
gi_marshalling_tests_glist_utf8_container_out (GList **list)
{
- *list = NULL;
+ *list = NULL;
- *list = g_list_append(*list, "0");
- *list = g_list_append(*list, "1");
- *list = g_list_append(*list, "2");
+ *list = g_list_append (*list, "0");
+ *list = g_list_append (*list, "1");
+ *list = g_list_append (*list, "2");
}
/**
@@ -2458,11 +2620,11 @@ gi_marshalling_tests_glist_utf8_container_out (GList **list)
void
gi_marshalling_tests_glist_utf8_full_out (GList **list)
{
- *list = NULL;
+ *list = NULL;
- *list = g_list_append(*list, g_strdup("0"));
- *list = g_list_append(*list, g_strdup("1"));
- *list = g_list_append(*list, g_strdup("2"));
+ *list = g_list_append (*list, g_strdup ("0"));
+ *list = g_list_append (*list, g_strdup ("1"));
+ *list = g_list_append (*list, g_strdup ("2"));
}
/**
@@ -2472,21 +2634,22 @@ gi_marshalling_tests_glist_utf8_full_out (GList **list)
void
gi_marshalling_tests_glist_utf8_none_inout (GList **list)
{
- static GList *values = NULL;
+ static GList *values = NULL;
- g_assert_cmpint(g_list_length(*list), ==, 3);
- g_assert_cmpstr(g_list_nth_data(*list, 0), ==, "0");
- g_assert_cmpstr(g_list_nth_data(*list, 1), ==, "1");
- g_assert_cmpstr(g_list_nth_data(*list, 2), ==, "2");
+ g_assert_cmpint (g_list_length (*list), ==, 3);
+ g_assert_cmpstr (g_list_nth_data (*list, 0), ==, "0");
+ g_assert_cmpstr (g_list_nth_data (*list, 1), ==, "1");
+ g_assert_cmpstr (g_list_nth_data (*list, 2), ==, "2");
- if (values == NULL) {
- values = g_list_append(values, "-2");
- values = g_list_append(values, "-1");
- values = g_list_append(values, "0");
- values = g_list_append(values, "1");
+ if (values == NULL)
+ {
+ values = g_list_append (values, "-2");
+ values = g_list_append (values, "-1");
+ values = g_list_append (values, "0");
+ values = g_list_append (values, "1");
}
- *list = values;
+ *list = values;
}
/**
@@ -2496,19 +2659,19 @@ gi_marshalling_tests_glist_utf8_none_inout (GList **list)
void
gi_marshalling_tests_glist_utf8_container_inout (GList **list)
{
- GList *result = NULL;
+ GList *result = NULL;
- g_assert_cmpint(g_list_length(*list), ==, 3);
- g_assert_cmpstr(g_list_nth_data(*list, 0), ==, "0");
- g_assert_cmpstr(g_list_nth_data(*list, 1), ==, "1");
- g_assert_cmpstr(g_list_nth_data(*list, 2), ==, "2");
+ g_assert_cmpint (g_list_length (*list), ==, 3);
+ g_assert_cmpstr (g_list_nth_data (*list, 0), ==, "0");
+ g_assert_cmpstr (g_list_nth_data (*list, 1), ==, "1");
+ g_assert_cmpstr (g_list_nth_data (*list, 2), ==, "2");
- result = g_list_prepend(result, "1");
- result = g_list_prepend(result, "0");
- result = g_list_prepend(result, "-1");
- result = g_list_prepend(result, "-2");
+ result = g_list_prepend (result, "1");
+ result = g_list_prepend (result, "0");
+ result = g_list_prepend (result, "-1");
+ result = g_list_prepend (result, "-2");
- *list = result;
+ *list = result;
}
/**
@@ -2518,19 +2681,19 @@ gi_marshalling_tests_glist_utf8_container_inout (GList **list)
void
gi_marshalling_tests_glist_utf8_full_inout (GList **list)
{
- GList *result = NULL;
+ GList *result = NULL;
- g_assert_cmpint(g_list_length(*list), ==, 3);
- g_assert_cmpstr(g_list_nth_data(*list, 0), ==, "0");
- g_assert_cmpstr(g_list_nth_data(*list, 1), ==, "1");
- g_assert_cmpstr(g_list_nth_data(*list, 2), ==, "2");
+ g_assert_cmpint (g_list_length (*list), ==, 3);
+ g_assert_cmpstr (g_list_nth_data (*list, 0), ==, "0");
+ g_assert_cmpstr (g_list_nth_data (*list, 1), ==, "1");
+ g_assert_cmpstr (g_list_nth_data (*list, 2), ==, "2");
- result = g_list_prepend(result, g_strdup("1"));
- result = g_list_prepend(result, g_strdup("0"));
- result = g_list_prepend(result, g_strdup("-1"));
- result = g_list_prepend(result, g_strdup("-2"));
+ result = g_list_prepend (result, g_strdup ("1"));
+ result = g_list_prepend (result, g_strdup ("0"));
+ result = g_list_prepend (result, g_strdup ("-1"));
+ result = g_list_prepend (result, g_strdup ("-2"));
- *list = result;
+ *list = result;
}
@@ -2542,17 +2705,18 @@ gi_marshalling_tests_glist_utf8_full_inout (GList **list)
GSList *
gi_marshalling_tests_gslist_int_none_return (void)
{
- static GSList *list = NULL;
+ static GSList *list = NULL;
- if (list == NULL) {
- list = g_slist_prepend(list, GINT_TO_POINTER(-1));
- list = g_slist_prepend(list, GINT_TO_POINTER(0));
- list = g_slist_prepend(list, GINT_TO_POINTER(1));
- list = g_slist_prepend(list, GINT_TO_POINTER(2));
- list = g_slist_reverse(list);
+ if (list == NULL)
+ {
+ list = g_slist_prepend (list, GINT_TO_POINTER (-1));
+ list = g_slist_prepend (list, GINT_TO_POINTER (0));
+ list = g_slist_prepend (list, GINT_TO_POINTER (1));
+ list = g_slist_prepend (list, GINT_TO_POINTER (2));
+ list = g_slist_reverse (list);
}
- return list;
+ return list;
}
/**
@@ -2563,16 +2727,17 @@ gi_marshalling_tests_gslist_int_none_return (void)
GSList *
gi_marshalling_tests_gslist_utf8_none_return (void)
{
- static GSList *list = NULL;
+ static GSList *list = NULL;
- if (list == NULL) {
- list = g_slist_prepend(list, "0");
- list = g_slist_prepend(list, "1");
- list = g_slist_prepend(list, "2");
- list = g_slist_reverse(list);
+ if (list == NULL)
+ {
+ list = g_slist_prepend (list, "0");
+ list = g_slist_prepend (list, "1");
+ list = g_slist_prepend (list, "2");
+ list = g_slist_reverse (list);
}
- return list;
+ return list;
}
/**
@@ -2583,14 +2748,14 @@ gi_marshalling_tests_gslist_utf8_none_return (void)
GSList *
gi_marshalling_tests_gslist_utf8_container_return (void)
{
- GSList *list = NULL;
+ GSList *list = NULL;
- list = g_slist_prepend(list, "0");
- list = g_slist_prepend(list, "1");
- list = g_slist_prepend(list, "2");
- list = g_slist_reverse(list);
+ list = g_slist_prepend (list, "0");
+ list = g_slist_prepend (list, "1");
+ list = g_slist_prepend (list, "2");
+ list = g_slist_reverse (list);
- return list;
+ return list;
}
/**
@@ -2601,14 +2766,14 @@ gi_marshalling_tests_gslist_utf8_container_return (void)
GSList *
gi_marshalling_tests_gslist_utf8_full_return (void)
{
- GSList *list = NULL;
+ GSList *list = NULL;
- list = g_slist_prepend(list, g_strdup("0"));
- list = g_slist_prepend(list, g_strdup("1"));
- list = g_slist_prepend(list, g_strdup("2"));
- list = g_slist_reverse(list);
+ list = g_slist_prepend (list, g_strdup ("0"));
+ list = g_slist_prepend (list, g_strdup ("1"));
+ list = g_slist_prepend (list, g_strdup ("2"));
+ list = g_slist_reverse (list);
- return list;
+ return list;
}
/**
@@ -2618,11 +2783,11 @@ gi_marshalling_tests_gslist_utf8_full_return (void)
void
gi_marshalling_tests_gslist_int_none_in (GSList *list)
{
- g_assert_cmpint(g_slist_length(list), ==, 4);
- g_assert_cmpint(GPOINTER_TO_INT(g_slist_nth_data(list, 0)), ==, -1);
- g_assert_cmpint(GPOINTER_TO_INT(g_slist_nth_data(list, 1)), ==, 0);
- g_assert_cmpint(GPOINTER_TO_INT(g_slist_nth_data(list, 2)), ==, 1);
- g_assert_cmpint(GPOINTER_TO_INT(g_slist_nth_data(list, 3)), ==, 2);
+ g_assert_cmpint (g_slist_length (list), ==, 4);
+ g_assert_cmpint (GPOINTER_TO_INT (g_slist_nth_data (list, 0)), ==, -1);
+ g_assert_cmpint (GPOINTER_TO_INT (g_slist_nth_data (list, 1)), ==, 0);
+ g_assert_cmpint (GPOINTER_TO_INT (g_slist_nth_data (list, 2)), ==, 1);
+ g_assert_cmpint (GPOINTER_TO_INT (g_slist_nth_data (list, 3)), ==, 2);
}
/**
@@ -2632,10 +2797,10 @@ gi_marshalling_tests_gslist_int_none_in (GSList *list)
void
gi_marshalling_tests_gslist_utf8_none_in (GSList *list)
{
- g_assert_cmpint(g_slist_length(list), ==, 3);
- g_assert_cmpstr(g_slist_nth_data(list, 0), ==, "0");
- g_assert_cmpstr(g_slist_nth_data(list, 1), ==, "1");
- g_assert_cmpstr(g_slist_nth_data(list, 2), ==, "2");
+ g_assert_cmpint (g_slist_length (list), ==, 3);
+ g_assert_cmpstr (g_slist_nth_data (list, 0), ==, "0");
+ g_assert_cmpstr (g_slist_nth_data (list, 1), ==, "1");
+ g_assert_cmpstr (g_slist_nth_data (list, 2), ==, "2");
}
/**
@@ -2645,16 +2810,17 @@ gi_marshalling_tests_gslist_utf8_none_in (GSList *list)
void
gi_marshalling_tests_gslist_utf8_none_out (GSList **list)
{
- static GSList *values = NULL;
+ static GSList *values = NULL;
- if (values == NULL) {
- values = g_slist_prepend(values, "0");
- values = g_slist_prepend(values, "1");
- values = g_slist_prepend(values, "2");
- values = g_slist_reverse(values);
+ if (values == NULL)
+ {
+ values = g_slist_prepend (values, "0");
+ values = g_slist_prepend (values, "1");
+ values = g_slist_prepend (values, "2");
+ values = g_slist_reverse (values);
}
- *list = values;
+ *list = values;
}
/**
@@ -2664,12 +2830,12 @@ gi_marshalling_tests_gslist_utf8_none_out (GSList **list)
void
gi_marshalling_tests_gslist_utf8_container_out (GSList **list)
{
- *list = NULL;
+ *list = NULL;
- *list = g_slist_prepend(*list, "0");
- *list = g_slist_prepend(*list, "1");
- *list = g_slist_prepend(*list, "2");
- *list = g_slist_reverse(*list);
+ *list = g_slist_prepend (*list, "0");
+ *list = g_slist_prepend (*list, "1");
+ *list = g_slist_prepend (*list, "2");
+ *list = g_slist_reverse (*list);
}
/**
@@ -2679,12 +2845,12 @@ gi_marshalling_tests_gslist_utf8_container_out (GSList **list)
void
gi_marshalling_tests_gslist_utf8_full_out (GSList **list)
{
- *list = NULL;
+ *list = NULL;
- *list = g_slist_prepend(*list, g_strdup("0"));
- *list = g_slist_prepend(*list, g_strdup("1"));
- *list = g_slist_prepend(*list, g_strdup("2"));
- *list = g_slist_reverse(*list);
+ *list = g_slist_prepend (*list, g_strdup ("0"));
+ *list = g_slist_prepend (*list, g_strdup ("1"));
+ *list = g_slist_prepend (*list, g_strdup ("2"));
+ *list = g_slist_reverse (*list);
}
/**
@@ -2694,22 +2860,23 @@ gi_marshalling_tests_gslist_utf8_full_out (GSList **list)
void
gi_marshalling_tests_gslist_utf8_none_inout (GSList **list)
{
- static GSList *values = NULL;
+ static GSList *values = NULL;
- g_assert_cmpint(g_slist_length(*list), ==, 3);
- g_assert_cmpstr(g_slist_nth_data(*list, 0), ==, "0");
- g_assert_cmpstr(g_slist_nth_data(*list, 1), ==, "1");
- g_assert_cmpstr(g_slist_nth_data(*list, 2), ==, "2");
+ g_assert_cmpint (g_slist_length (*list), ==, 3);
+ g_assert_cmpstr (g_slist_nth_data (*list, 0), ==, "0");
+ g_assert_cmpstr (g_slist_nth_data (*list, 1), ==, "1");
+ g_assert_cmpstr (g_slist_nth_data (*list, 2), ==, "2");
- if (values == NULL) {
- values = g_slist_prepend(values, "-2");
- values = g_slist_prepend(values, "-1");
- values = g_slist_prepend(values, "0");
- values = g_slist_prepend(values, "1");
- values = g_slist_reverse(values);
+ if (values == NULL)
+ {
+ values = g_slist_prepend (values, "-2");
+ values = g_slist_prepend (values, "-1");
+ values = g_slist_prepend (values, "0");
+ values = g_slist_prepend (values, "1");
+ values = g_slist_reverse (values);
}
- *list = values;
+ *list = values;
}
/**
@@ -2719,19 +2886,19 @@ gi_marshalling_tests_gslist_utf8_none_inout (GSList **list)
void
gi_marshalling_tests_gslist_utf8_container_inout (GSList **list)
{
- GSList *result = NULL;
+ GSList *result = NULL;
- g_assert_cmpint(g_slist_length(*list), ==, 3);
- g_assert_cmpstr(g_slist_nth_data(*list, 0), ==, "0");
- g_assert_cmpstr(g_slist_nth_data(*list, 1), ==, "1");
- g_assert_cmpstr(g_slist_nth_data(*list, 2), ==, "2");
+ g_assert_cmpint (g_slist_length (*list), ==, 3);
+ g_assert_cmpstr (g_slist_nth_data (*list, 0), ==, "0");
+ g_assert_cmpstr (g_slist_nth_data (*list, 1), ==, "1");
+ g_assert_cmpstr (g_slist_nth_data (*list, 2), ==, "2");
- result = g_slist_prepend(result, "1");
- result = g_slist_prepend(result, "0");
- result = g_slist_prepend(result, "-1");
- result = g_slist_prepend(result, "-2");
+ result = g_slist_prepend (result, "1");
+ result = g_slist_prepend (result, "0");
+ result = g_slist_prepend (result, "-1");
+ result = g_slist_prepend (result, "-2");
- *list = result;
+ *list = result;
}
/**
@@ -2741,19 +2908,19 @@ gi_marshalling_tests_gslist_utf8_container_inout (GSList **list)
void
gi_marshalling_tests_gslist_utf8_full_inout (GSList **list)
{
- GSList *result = NULL;
+ GSList *result = NULL;
- g_assert_cmpint(g_slist_length(*list), ==, 3);
- g_assert_cmpstr(g_slist_nth_data(*list, 0), ==, "0");
- g_assert_cmpstr(g_slist_nth_data(*list, 1), ==, "1");
- g_assert_cmpstr(g_slist_nth_data(*list, 2), ==, "2");
+ g_assert_cmpint (g_slist_length (*list), ==, 3);
+ g_assert_cmpstr (g_slist_nth_data (*list, 0), ==, "0");
+ g_assert_cmpstr (g_slist_nth_data (*list, 1), ==, "1");
+ g_assert_cmpstr (g_slist_nth_data (*list, 2), ==, "2");
- result = g_slist_prepend(result, g_strdup("1"));
- result = g_slist_prepend(result, g_strdup("0"));
- result = g_slist_prepend(result, g_strdup("-1"));
- result = g_slist_prepend(result, g_strdup("-2"));
+ result = g_slist_prepend (result, g_strdup ("1"));
+ result = g_slist_prepend (result, g_strdup ("0"));
+ result = g_slist_prepend (result, g_strdup ("-1"));
+ result = g_slist_prepend (result, g_strdup ("-2"));
- *list = result;
+ *list = result;
}
@@ -2765,17 +2932,18 @@ gi_marshalling_tests_gslist_utf8_full_inout (GSList **list)
GHashTable *
gi_marshalling_tests_ghashtable_int_none_return (void)
{
- static GHashTable *hash_table = NULL;
+ static GHashTable *hash_table = NULL;
- if (hash_table == NULL) {
- hash_table = g_hash_table_new(NULL, NULL);
- g_hash_table_insert(hash_table, GINT_TO_POINTER(-1), GINT_TO_POINTER(1));
- g_hash_table_insert(hash_table, GINT_TO_POINTER(0), GINT_TO_POINTER(0));
- g_hash_table_insert(hash_table, GINT_TO_POINTER(1), GINT_TO_POINTER(-1));
- g_hash_table_insert(hash_table, GINT_TO_POINTER(2), GINT_TO_POINTER(-2));
+ if (hash_table == NULL)
+ {
+ hash_table = g_hash_table_new (NULL, NULL);
+ g_hash_table_insert (hash_table, GINT_TO_POINTER (-1), GINT_TO_POINTER (1));
+ g_hash_table_insert (hash_table, GINT_TO_POINTER (0), GINT_TO_POINTER (0));
+ g_hash_table_insert (hash_table, GINT_TO_POINTER (1), GINT_TO_POINTER (-1));
+ g_hash_table_insert (hash_table, GINT_TO_POINTER (2), GINT_TO_POINTER (-2));
}
- return hash_table;
+ return hash_table;
}
/**
@@ -2786,17 +2954,18 @@ gi_marshalling_tests_ghashtable_int_none_return (void)
GHashTable *
gi_marshalling_tests_ghashtable_utf8_none_return (void)
{
- static GHashTable *hash_table = NULL;
+ static GHashTable *hash_table = NULL;
- if (hash_table == NULL) {
- hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_insert(hash_table, "-1", "1");
- g_hash_table_insert(hash_table, "0", "0");
- g_hash_table_insert(hash_table, "1", "-1");
- g_hash_table_insert(hash_table, "2", "-2");
+ if (hash_table == NULL)
+ {
+ hash_table = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (hash_table, "-1", "1");
+ g_hash_table_insert (hash_table, "0", "0");
+ g_hash_table_insert (hash_table, "1", "-1");
+ g_hash_table_insert (hash_table, "2", "-2");
}
- return hash_table;
+ return hash_table;
}
/**
@@ -2807,15 +2976,15 @@ gi_marshalling_tests_ghashtable_utf8_none_return (void)
GHashTable *
gi_marshalling_tests_ghashtable_utf8_container_return (void)
{
- GHashTable *hash_table = NULL;
+ GHashTable *hash_table = NULL;
- hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_insert(hash_table, "-1", "1");
- g_hash_table_insert(hash_table, "0", "0");
- g_hash_table_insert(hash_table, "1", "-1");
- g_hash_table_insert(hash_table, "2", "-2");
+ hash_table = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (hash_table, "-1", "1");
+ g_hash_table_insert (hash_table, "0", "0");
+ g_hash_table_insert (hash_table, "1", "-1");
+ g_hash_table_insert (hash_table, "2", "-2");
- return hash_table;
+ return hash_table;
}
/**
@@ -2826,15 +2995,15 @@ gi_marshalling_tests_ghashtable_utf8_container_return (void)
GHashTable *
gi_marshalling_tests_ghashtable_utf8_full_return (void)
{
- GHashTable *hash_table = NULL;
+ GHashTable *hash_table = NULL;
- hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_insert(hash_table, g_strdup("-1"), g_strdup("1"));
- g_hash_table_insert(hash_table, g_strdup("0"), g_strdup("0"));
- g_hash_table_insert(hash_table, g_strdup("1"), g_strdup("-1"));
- g_hash_table_insert(hash_table, g_strdup("2"), g_strdup("-2"));
+ hash_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ g_hash_table_insert (hash_table, g_strdup ("-1"), g_strdup ("1"));
+ g_hash_table_insert (hash_table, g_strdup ("0"), g_strdup ("0"));
+ g_hash_table_insert (hash_table, g_strdup ("1"), g_strdup ("-1"));
+ g_hash_table_insert (hash_table, g_strdup ("2"), g_strdup ("-2"));
- return hash_table;
+ return hash_table;
}
/**
@@ -2844,10 +3013,10 @@ gi_marshalling_tests_ghashtable_utf8_full_return (void)
void
gi_marshalling_tests_ghashtable_int_none_in (GHashTable *hash_table)
{
- g_assert_cmpint(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(-1))), ==, 1);
- g_assert_cmpint(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(0))), ==, 0);
- g_assert_cmpint(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(1))), ==, -1);
- g_assert_cmpint(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(2))), ==, -2);
+ g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (hash_table, GINT_TO_POINTER (-1))), ==, 1);
+ g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (hash_table, GINT_TO_POINTER (0))), ==, 0);
+ g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (hash_table, GINT_TO_POINTER (1))), ==, -1);
+ g_assert_cmpint (GPOINTER_TO_INT (g_hash_table_lookup (hash_table, GINT_TO_POINTER (2))), ==, -2);
}
/**
@@ -2857,10 +3026,10 @@ gi_marshalling_tests_ghashtable_int_none_in (GHashTable *hash_table)
void
gi_marshalling_tests_ghashtable_utf8_none_in (GHashTable *hash_table)
{
- g_assert_cmpstr(g_hash_table_lookup(hash_table, "-1"), ==, "1");
- g_assert_cmpstr(g_hash_table_lookup(hash_table, "0"), ==, "0");
- g_assert_cmpstr(g_hash_table_lookup(hash_table, "1"), ==, "-1");
- g_assert_cmpstr(g_hash_table_lookup(hash_table, "2"), ==, "-2");
+ g_assert_cmpstr (g_hash_table_lookup (hash_table, "-1"), ==, "1");
+ g_assert_cmpstr (g_hash_table_lookup (hash_table, "0"), ==, "0");
+ g_assert_cmpstr (g_hash_table_lookup (hash_table, "1"), ==, "-1");
+ g_assert_cmpstr (g_hash_table_lookup (hash_table, "2"), ==, "-2");
}
/**
@@ -2870,17 +3039,18 @@ gi_marshalling_tests_ghashtable_utf8_none_in (GHashTable *hash_table)
void
gi_marshalling_tests_ghashtable_utf8_none_out (GHashTable **hash_table)
{
- static GHashTable *new_hash_table = NULL;
+ static GHashTable *new_hash_table = NULL;
- if (new_hash_table == NULL) {
- new_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_insert(new_hash_table, "-1", "1");
- g_hash_table_insert(new_hash_table, "0", "0");
- g_hash_table_insert(new_hash_table, "1", "-1");
- g_hash_table_insert(new_hash_table, "2", "-2");
+ if (new_hash_table == NULL)
+ {
+ new_hash_table = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (new_hash_table, "-1", "1");
+ g_hash_table_insert (new_hash_table, "0", "0");
+ g_hash_table_insert (new_hash_table, "1", "-1");
+ g_hash_table_insert (new_hash_table, "2", "-2");
}
- *hash_table = new_hash_table;
+ *hash_table = new_hash_table;
}
/**
@@ -2890,11 +3060,11 @@ gi_marshalling_tests_ghashtable_utf8_none_out (GHashTable **hash_table)
void
gi_marshalling_tests_ghashtable_utf8_container_out (GHashTable **hash_table)
{
- *hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_insert(*hash_table, "-1", "1");
- g_hash_table_insert(*hash_table, "0", "0");
- g_hash_table_insert(*hash_table, "1", "-1");
- g_hash_table_insert(*hash_table, "2", "-2");
+ *hash_table = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (*hash_table, "-1", "1");
+ g_hash_table_insert (*hash_table, "0", "0");
+ g_hash_table_insert (*hash_table, "1", "-1");
+ g_hash_table_insert (*hash_table, "2", "-2");
}
/**
@@ -2904,11 +3074,11 @@ gi_marshalling_tests_ghashtable_utf8_container_out (GHashTable **hash_table)
void
gi_marshalling_tests_ghashtable_utf8_full_out (GHashTable **hash_table)
{
- *hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_insert(*hash_table, g_strdup("-1"), g_strdup("1"));
- g_hash_table_insert(*hash_table, g_strdup("0"), g_strdup("0"));
- g_hash_table_insert(*hash_table, g_strdup("1"), g_strdup("-1"));
- g_hash_table_insert(*hash_table, g_strdup("2"), g_strdup("-2"));
+ *hash_table = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+ g_hash_table_insert (*hash_table, g_strdup ("-1"), g_strdup ("1"));
+ g_hash_table_insert (*hash_table, g_strdup ("0"), g_strdup ("0"));
+ g_hash_table_insert (*hash_table, g_strdup ("1"), g_strdup ("-1"));
+ g_hash_table_insert (*hash_table, g_strdup ("2"), g_strdup ("-2"));
}
/**
@@ -2918,21 +3088,22 @@ gi_marshalling_tests_ghashtable_utf8_full_out (GHashTable **hash_table)
void
gi_marshalling_tests_ghashtable_utf8_none_inout (GHashTable **hash_table)
{
- static GHashTable *new_hash_table = NULL;
+ static GHashTable *new_hash_table = NULL;
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "-1"), ==, "1");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "0"), ==, "0");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "1"), ==, "-1");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "2"), ==, "-2");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "-1"), ==, "1");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "0"), ==, "0");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "1"), ==, "-1");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "2"), ==, "-2");
- if (new_hash_table == NULL) {
- new_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
- g_hash_table_insert(new_hash_table, "-1", "1");
- g_hash_table_insert(new_hash_table, "0", "0");
- g_hash_table_insert(new_hash_table, "1", "1");
+ if (new_hash_table == NULL)
+ {
+ new_hash_table = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (new_hash_table, "-1", "1");
+ g_hash_table_insert (new_hash_table, "0", "0");
+ g_hash_table_insert (new_hash_table, "1", "1");
}
- *hash_table = new_hash_table;
+ *hash_table = new_hash_table;
}
/**
@@ -2942,18 +3113,18 @@ gi_marshalling_tests_ghashtable_utf8_none_inout (GHashTable **hash_table)
void
gi_marshalling_tests_ghashtable_utf8_container_inout (GHashTable **hash_table)
{
- GHashTable *result = g_hash_table_new(g_str_hash, g_str_equal);
+ GHashTable *result = g_hash_table_new (g_str_hash, g_str_equal);
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "-1"), ==, "1");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "0"), ==, "0");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "1"), ==, "-1");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "2"), ==, "-2");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "-1"), ==, "1");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "0"), ==, "0");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "1"), ==, "-1");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "2"), ==, "-2");
- g_hash_table_insert(result, "-1", "1");
- g_hash_table_insert(result, "0", "0");
- g_hash_table_insert(result, "1", "1");
+ g_hash_table_insert (result, "-1", "1");
+ g_hash_table_insert (result, "0", "0");
+ g_hash_table_insert (result, "1", "1");
- *hash_table = result;
+ *hash_table = result;
}
/**
@@ -2963,19 +3134,19 @@ gi_marshalling_tests_ghashtable_utf8_container_inout (GHashTable **hash_table)
void
gi_marshalling_tests_ghashtable_utf8_full_inout (GHashTable **hash_table)
{
- GHashTable *result = g_hash_table_new_full(g_str_hash, g_str_equal,
- g_free, g_free);
+ GHashTable *result = g_hash_table_new_full (g_str_hash, g_str_equal,
+ g_free, g_free);
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "-1"), ==, "1");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "0"), ==, "0");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "1"), ==, "-1");
- g_assert_cmpstr(g_hash_table_lookup(*hash_table, "2"), ==, "-2");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "-1"), ==, "1");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "0"), ==, "0");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "1"), ==, "-1");
+ g_assert_cmpstr (g_hash_table_lookup (*hash_table, "2"), ==, "-2");
- g_hash_table_insert(result, g_strdup("-1"), g_strdup("1"));
- g_hash_table_insert(result, g_strdup("0"), g_strdup("0"));
- g_hash_table_insert(result, g_strdup("1"), g_strdup("1"));
+ g_hash_table_insert (result, g_strdup ("-1"), g_strdup ("1"));
+ g_hash_table_insert (result, g_strdup ("0"), g_strdup ("0"));
+ g_hash_table_insert (result, g_strdup ("1"), g_strdup ("1"));
- *hash_table = result;
+ *hash_table = result;
}
@@ -2987,15 +3158,16 @@ gi_marshalling_tests_ghashtable_utf8_full_inout (GHashTable **hash_table)
GValue *
gi_marshalling_tests_gvalue_return (void)
{
- static GValue *value = NULL;
+ static GValue *value = NULL;
- if (value == NULL) {
- value = g_new0(GValue, 1);
- g_value_init(value, G_TYPE_INT);
- g_value_set_int(value, 42);
+ if (value == NULL)
+ {
+ value = g_new0 (GValue, 1);
+ g_value_init (value, G_TYPE_INT);
+ g_value_set_int (value, 42);
}
- return value;
+ return value;
}
/**
@@ -3005,7 +3177,7 @@ gi_marshalling_tests_gvalue_return (void)
void
gi_marshalling_tests_gvalue_in (GValue *value)
{
- g_assert_cmpint(g_value_get_int(value), ==, 42);
+ g_assert_cmpint (g_value_get_int (value), ==, 42);
}
/**
@@ -3015,7 +3187,7 @@ gi_marshalling_tests_gvalue_in (GValue *value)
void
gi_marshalling_tests_gvalue_int64_in (GValue *value)
{
- g_assert_cmpint(g_value_get_int64(value), ==, G_MAXINT64);
+ g_assert_cmpint (g_value_get_int64 (value), ==, G_MAXINT64);
}
/**
@@ -3026,7 +3198,21 @@ gi_marshalling_tests_gvalue_int64_in (GValue *value)
void
gi_marshalling_tests_gvalue_in_with_type (GValue *value, GType type)
{
- g_assert(g_type_is_a(G_VALUE_TYPE(value), type));
+ g_assert (g_type_is_a (G_VALUE_TYPE (value), type));
+}
+
+/**
+ * gi_marshalling_tests_gvalue_in_with_modification:
+ * @value: (transfer none):
+ *
+ * Expects a GValue passed by reference which is then modified by
+ * this function.
+ */
+void
+gi_marshalling_tests_gvalue_in_with_modification (GValue *value)
+{
+ g_assert_cmpint (g_value_get_int (value), ==, 42);
+ g_value_set_int (value, 24);
}
/**
@@ -3036,7 +3222,7 @@ gi_marshalling_tests_gvalue_in_with_type (GValue *value, GType type)
void
gi_marshalling_tests_gvalue_in_enum (GValue *value)
{
- g_assert(g_value_get_enum(value) == GI_MARSHALLING_TESTS_ENUM_VALUE3);
+ g_assert (g_value_get_enum (value) == GI_MARSHALLING_TESTS_ENUM_VALUE3);
}
/**
@@ -3046,15 +3232,16 @@ gi_marshalling_tests_gvalue_in_enum (GValue *value)
void
gi_marshalling_tests_gvalue_out (GValue **value)
{
- static GValue *new_value = NULL;
+ static GValue *new_value = NULL;
- if (new_value == NULL) {
- new_value = g_new0(GValue, 1);
- g_value_init(new_value, G_TYPE_INT);
- g_value_set_int(new_value, 42);
+ if (new_value == NULL)
+ {
+ new_value = g_new0 (GValue, 1);
+ g_value_init (new_value, G_TYPE_INT);
+ g_value_set_int (new_value, 42);
}
- *value = new_value;
+ *value = new_value;
}
/**
@@ -3064,15 +3251,16 @@ gi_marshalling_tests_gvalue_out (GValue **value)
void
gi_marshalling_tests_gvalue_int64_out (GValue **value)
{
- static GValue *new_value = NULL;
+ static GValue *new_value = NULL;
- if (new_value == NULL) {
- new_value = g_new0(GValue, 1);
- g_value_init(new_value, G_TYPE_INT64);
- g_value_set_int64(new_value, G_MAXINT64);
+ if (new_value == NULL)
+ {
+ new_value = g_new0 (GValue, 1);
+ g_value_init (new_value, G_TYPE_INT64);
+ g_value_set_int64 (new_value, G_MAXINT64);
}
- *value = new_value;
+ *value = new_value;
}
/**
@@ -3082,8 +3270,8 @@ gi_marshalling_tests_gvalue_int64_out (GValue **value)
void
gi_marshalling_tests_gvalue_out_caller_allocates (GValue *value)
{
- g_value_init(value, G_TYPE_INT);
- g_value_set_int(value, 42);
+ g_value_init (value, G_TYPE_INT);
+ g_value_set_int (value, 42);
}
/**
@@ -3093,10 +3281,10 @@ gi_marshalling_tests_gvalue_out_caller_allocates (GValue *value)
void
gi_marshalling_tests_gvalue_inout (GValue **value)
{
- g_assert_cmpint(g_value_get_int(*value), ==, 42);
- g_value_unset(*value);
- g_value_init(*value, G_TYPE_STRING);
- g_value_set_string(*value, "42");
+ g_assert_cmpint (g_value_get_int (*value), ==, 42);
+ g_value_unset (*value);
+ g_value_init (*value, G_TYPE_STRING);
+ g_value_set_string (*value, "42");
}
/**
@@ -3105,14 +3293,13 @@ gi_marshalling_tests_gvalue_inout (GValue **value)
* @values: (array length=n_values): an array containing values
*/
void
-gi_marshalling_tests_gvalue_flat_array (guint n_values,
- const GValue *values)
+gi_marshalling_tests_gvalue_flat_array (guint n_values, const GValue *values)
{
- g_assert (n_values == 3);
+ g_assert (n_values == 3);
- g_assert_cmpint (g_value_get_int (&values[0]), ==, 42);
- g_assert_cmpstr (g_value_get_string (&values[1]), ==, "42");
- g_assert_cmpint (g_value_get_boolean (&values[2]), ==, TRUE);
+ g_assert_cmpint (g_value_get_int (&values[0]), ==, 42);
+ g_assert_cmpstr (g_value_get_string (&values[1]), ==, "42");
+ g_assert_cmpint (g_value_get_boolean (&values[2]), ==, TRUE);
}
/**
@@ -3123,18 +3310,18 @@ gi_marshalling_tests_gvalue_flat_array (guint n_values,
GValue *
gi_marshalling_tests_return_gvalue_flat_array (void)
{
- GValue *array = g_new0 (GValue, 3);
+ GValue *array = g_new0 (GValue, 3);
- g_value_init (&array[0], G_TYPE_INT);
- g_value_set_int (&array[0], 42);
+ g_value_init (&array[0], G_TYPE_INT);
+ g_value_set_int (&array[0], 42);
- g_value_init (&array[1], G_TYPE_STRING);
- g_value_set_static_string (&array[1], "42");
+ g_value_init (&array[1], G_TYPE_STRING);
+ g_value_set_static_string (&array[1], "42");
- g_value_init (&array[2], G_TYPE_BOOLEAN);
- g_value_set_boolean (&array[2], TRUE);
+ g_value_init (&array[2], G_TYPE_BOOLEAN);
+ g_value_set_boolean (&array[2], TRUE);
- return array;
+ return array;
}
/**
@@ -3146,16 +3333,14 @@ gi_marshalling_tests_return_gvalue_flat_array (void)
* Returns: (array fixed-size=3) (transfer full): a flat array of [@one, @two, @three]
*/
GValue *
-gi_marshalling_tests_gvalue_flat_array_round_trip (const GValue one,
- const GValue two,
- const GValue three)
+gi_marshalling_tests_gvalue_flat_array_round_trip (const GValue one, const GValue two, const GValue three)
{
- GValue *array = g_new (GValue, 3);
- array[0] = one;
- array[1] = two;
- array[2] = three;
+ GValue *array = g_new (GValue, 3);
+ array[0] = one;
+ array[1] = two;
+ array[2] = three;
- return array;
+ return array;
}
/**
@@ -3165,18 +3350,15 @@ gi_marshalling_tests_gvalue_flat_array_round_trip (const GValue one,
void
gi_marshalling_tests_gclosure_in (GClosure *closure)
{
- GValue return_value = {0, };
+ GValue return_value = { 0, };
- g_value_init (&return_value, G_TYPE_INT);
+ g_value_init (&return_value, G_TYPE_INT);
- g_closure_invoke (closure,
- &return_value,
- 0, NULL,
- NULL);
+ g_closure_invoke (closure, &return_value, 0, NULL, NULL);
- g_assert_cmpint(g_value_get_int (&return_value), ==, 42);
+ g_assert_cmpint (g_value_get_int (&return_value), ==, 42);
- g_value_unset(&return_value);
+ g_value_unset (&return_value);
}
static gint
@@ -3188,17 +3370,14 @@ _closure_return_42 (void)
static void
_marshal_INT__VOID (GClosure *closure,
GValue *return_value,
- guint n_param_values,
- const GValue *param_values,
- gpointer invocation_hint,
- gpointer marshal_data)
+ guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data)
{
typedef gint (*GMarshalFunc_INT__VOID) (void);
register GMarshalFunc_INT__VOID callback;
- register GCClosure *cc = (GCClosure*) closure;
+ register GCClosure *cc = (GCClosure *) closure;
callback = (GMarshalFunc_INT__VOID) cc->callback;
- g_value_set_int(return_value, callback());
+ g_value_set_int (return_value, callback ());
}
/**
@@ -3209,11 +3388,11 @@ _marshal_INT__VOID (GClosure *closure,
GClosure *
gi_marshalling_tests_gclosure_return (void)
{
- GClosure *closure = g_cclosure_new ((GCallback)_closure_return_42,
- NULL, NULL);
- g_closure_set_marshal (closure, _marshal_INT__VOID);
+ GClosure *closure = g_cclosure_new ((GCallback) _closure_return_42,
+ NULL, NULL);
+ g_closure_set_marshal (closure, _marshal_INT__VOID);
- return closure;
+ return closure;
}
@@ -3221,10 +3400,9 @@ gi_marshalling_tests_gclosure_return (void)
* gi_marshalling_tests_callback_return_value_only:
* @callback: (scope call):
*/
-glong
-gi_marshalling_tests_callback_return_value_only (GIMarshallingTestsCallbackReturnValueOnly callback)
+glong gi_marshalling_tests_callback_return_value_only (GIMarshallingTestsCallbackReturnValueOnly callback)
{
- return callback ();
+ return callback ();
}
/**
@@ -3232,11 +3410,9 @@ gi_marshalling_tests_callback_return_value_only (GIMarshallingTestsCallbackRetur
* @callback: (scope call):
* @a: (out):
*/
-void
-gi_marshalling_tests_callback_one_out_parameter (GIMarshallingTestsCallbackOneOutParameter callback,
- gfloat *a)
+void gi_marshalling_tests_callback_one_out_parameter (GIMarshallingTestsCallbackOneOutParameter callback, gfloat *a)
{
- callback (a);
+ callback (a);
}
/**
@@ -3246,11 +3422,10 @@ gi_marshalling_tests_callback_one_out_parameter (GIMarshallingTestsCallbackOneOu
* @b: (out):
*/
void
-gi_marshalling_tests_callback_multiple_out_parameters (GIMarshallingTestsCallbackMultipleOutParameters callback,
- gfloat *a,
- gfloat *b)
+ gi_marshalling_tests_callback_multiple_out_parameters
+ (GIMarshallingTestsCallbackMultipleOutParameters callback, gfloat *a, gfloat *b)
{
- callback (a, b);
+ callback (a, b);
}
/**
@@ -3259,10 +3434,10 @@ gi_marshalling_tests_callback_multiple_out_parameters (GIMarshallingTestsCallbac
* @a: (out):
*/
glong
-gi_marshalling_tests_callback_return_value_and_one_out_parameter (GIMarshallingTestsCallbackReturnValueAndOneOutParameter callback,
- glong *a)
+ gi_marshalling_tests_callback_return_value_and_one_out_parameter
+ (GIMarshallingTestsCallbackReturnValueAndOneOutParameter callback, glong *a)
{
- return callback (a);
+ return callback (a);
}
/**
@@ -3272,11 +3447,10 @@ gi_marshalling_tests_callback_return_value_and_one_out_parameter (GIMarshallingT
* @b: (out):
*/
glong
-gi_marshalling_tests_callback_return_value_and_multiple_out_parameters (GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters callback,
- glong *a,
- glong *b)
+ gi_marshalling_tests_callback_return_value_and_multiple_out_parameters
+ (GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters callback, glong *a, glong *b)
{
- return callback (a, b);
+ return callback (a, b);
}
@@ -3289,190 +3463,200 @@ gi_marshalling_tests_callback_return_value_and_multiple_out_parameters (GIMarsha
gpointer
gi_marshalling_tests_pointer_in_return (gpointer pointer)
{
- return pointer;
+ return pointer;
}
GType
gi_marshalling_tests_genum_get_type (void)
{
- static GType type = 0;
- if (G_UNLIKELY(type == 0)) {
- static const GEnumValue values[] = {
- { GI_MARSHALLING_TESTS_GENUM_VALUE1, "GI_MARSHALLING_TESTS_GENUM_VALUE1", "value1" },
- { GI_MARSHALLING_TESTS_GENUM_VALUE2, "GI_MARSHALLING_TESTS_GENUM_VALUE2", "value2" },
- { GI_MARSHALLING_TESTS_GENUM_VALUE3, "GI_MARSHALLING_TESTS_GENUM_VALUE3", "value3" },
- { 0, NULL, NULL }
- };
- type = g_enum_register_static (g_intern_static_string ("GIMarshallingTestsGEnum"), values);
+ static GType type = 0;
+ if (G_UNLIKELY (type == 0))
+ {
+ static const GEnumValue values[] = {
+ {GI_MARSHALLING_TESTS_GENUM_VALUE1,
+ "GI_MARSHALLING_TESTS_GENUM_VALUE1", "value1"},
+ {GI_MARSHALLING_TESTS_GENUM_VALUE2,
+ "GI_MARSHALLING_TESTS_GENUM_VALUE2", "value2"},
+ {GI_MARSHALLING_TESTS_GENUM_VALUE3,
+ "GI_MARSHALLING_TESTS_GENUM_VALUE3", "value3"},
+ {0, NULL, NULL}
+ };
+ type = g_enum_register_static (g_intern_static_string ("GIMarshallingTestsGEnum"), values);
}
- return type;
+ return type;
}
GIMarshallingTestsGEnum
gi_marshalling_tests_genum_returnv (void)
{
- return GI_MARSHALLING_TESTS_GENUM_VALUE3;
+ return GI_MARSHALLING_TESTS_GENUM_VALUE3;
}
void
-gi_marshalling_tests_genum_in (GIMarshallingTestsGEnum enum_)
+gi_marshalling_tests_genum_in (GIMarshallingTestsGEnum v)
{
- g_assert_cmpint(enum_, ==, GI_MARSHALLING_TESTS_GENUM_VALUE3);
+ g_assert_cmpint (v, ==, GI_MARSHALLING_TESTS_GENUM_VALUE3);
}
/**
* gi_marshalling_tests_genum_out:
- * @enum_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_genum_out (GIMarshallingTestsGEnum *enum_)
+gi_marshalling_tests_genum_out (GIMarshallingTestsGEnum *v)
{
- *enum_ = GI_MARSHALLING_TESTS_GENUM_VALUE3;
+ *v = GI_MARSHALLING_TESTS_GENUM_VALUE3;
}
/**
* gi_marshalling_tests_genum_inout:
- * @enum_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_genum_inout (GIMarshallingTestsGEnum *enum_)
+gi_marshalling_tests_genum_inout (GIMarshallingTestsGEnum *v)
{
- g_assert_cmpint(*enum_, ==, GI_MARSHALLING_TESTS_GENUM_VALUE3);
- *enum_ = GI_MARSHALLING_TESTS_GENUM_VALUE1;
+ g_assert_cmpint (*v, ==, GI_MARSHALLING_TESTS_GENUM_VALUE3);
+ *v = GI_MARSHALLING_TESTS_GENUM_VALUE1;
}
GIMarshallingTestsEnum
gi_marshalling_tests_enum_returnv (void)
{
- return GI_MARSHALLING_TESTS_ENUM_VALUE3;
+ return GI_MARSHALLING_TESTS_ENUM_VALUE3;
}
void
-gi_marshalling_tests_enum_in (GIMarshallingTestsEnum enum_)
+gi_marshalling_tests_enum_in (GIMarshallingTestsEnum v)
{
- g_assert_cmpint(enum_, ==, GI_MARSHALLING_TESTS_ENUM_VALUE3);
+ g_assert_cmpint (v, ==, GI_MARSHALLING_TESTS_ENUM_VALUE3);
}
/**
* gi_marshalling_tests_enum_out:
- * @enum_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_enum_out (GIMarshallingTestsEnum *enum_)
+gi_marshalling_tests_enum_out (GIMarshallingTestsEnum *v)
{
- *enum_ = GI_MARSHALLING_TESTS_ENUM_VALUE3;
+ *v = GI_MARSHALLING_TESTS_ENUM_VALUE3;
}
/**
* gi_marshalling_tests_enum_inout:
- * @enum_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_enum_inout (GIMarshallingTestsEnum *enum_)
+gi_marshalling_tests_enum_inout (GIMarshallingTestsEnum *v)
{
- g_assert_cmpint(*enum_, ==, GI_MARSHALLING_TESTS_ENUM_VALUE3);
- *enum_ = GI_MARSHALLING_TESTS_ENUM_VALUE1;
+ g_assert_cmpint (*v, ==, GI_MARSHALLING_TESTS_ENUM_VALUE3);
+ *v = GI_MARSHALLING_TESTS_ENUM_VALUE1;
}
GType
gi_marshalling_tests_flags_get_type (void)
{
- static GType type = 0;
- if (G_UNLIKELY(type == 0)) {
- static const GFlagsValue values[] = {
- { GI_MARSHALLING_TESTS_FLAGS_VALUE1, "GI_MARSHALLING_TESTS_FLAGS_VALUE1", "value1" },
- { GI_MARSHALLING_TESTS_FLAGS_VALUE2, "GI_MARSHALLING_TESTS_FLAGS_VALUE2", "value2" },
- { GI_MARSHALLING_TESTS_FLAGS_VALUE3, "GI_MARSHALLING_TESTS_FLAGS_VALUE3", "value3" },
- { GI_MARSHALLING_TESTS_FLAGS_MASK, "GI_MARSHALLING_TESTS_FLAGS_MASK", "mask" },
- { GI_MARSHALLING_TESTS_FLAGS_MASK2, "GI_MARSHALLING_TESTS_FLAGS_MASK2", "mask2" },
- { 0, NULL, NULL }
- };
- type = g_flags_register_static (g_intern_static_string ("GIMarshallingTestsFlags"), values);
+ static GType type = 0;
+ if (G_UNLIKELY (type == 0))
+ {
+ static const GFlagsValue values[] = {
+ {GI_MARSHALLING_TESTS_FLAGS_VALUE1,
+ "GI_MARSHALLING_TESTS_FLAGS_VALUE1", "value1"},
+ {GI_MARSHALLING_TESTS_FLAGS_VALUE2,
+ "GI_MARSHALLING_TESTS_FLAGS_VALUE2", "value2"},
+ {GI_MARSHALLING_TESTS_FLAGS_VALUE3,
+ "GI_MARSHALLING_TESTS_FLAGS_VALUE3", "value3"},
+ {GI_MARSHALLING_TESTS_FLAGS_MASK, "GI_MARSHALLING_TESTS_FLAGS_MASK",
+ "mask"},
+ {GI_MARSHALLING_TESTS_FLAGS_MASK2, "GI_MARSHALLING_TESTS_FLAGS_MASK2",
+ "mask2"},
+ {0, NULL, NULL}
+ };
+ type = g_flags_register_static (g_intern_static_string ("GIMarshallingTestsFlags"), values);
}
- return type;
+ return type;
}
GIMarshallingTestsFlags
gi_marshalling_tests_flags_returnv (void)
{
- return GI_MARSHALLING_TESTS_FLAGS_VALUE2;
+ return GI_MARSHALLING_TESTS_FLAGS_VALUE2;
}
void
-gi_marshalling_tests_flags_in (GIMarshallingTestsFlags flags_)
+gi_marshalling_tests_flags_in (GIMarshallingTestsFlags v)
{
- g_assert(flags_ == GI_MARSHALLING_TESTS_FLAGS_VALUE2);
+ g_assert (v == GI_MARSHALLING_TESTS_FLAGS_VALUE2);
}
void
-gi_marshalling_tests_flags_in_zero (GIMarshallingTestsFlags flags)
+gi_marshalling_tests_flags_in_zero (GIMarshallingTestsFlags v)
{
- g_assert(flags == 0);
+ g_assert (v == 0);
}
/**
* gi_marshalling_tests_flags_out:
- * @flags_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_flags_out (GIMarshallingTestsFlags *flags_)
+gi_marshalling_tests_flags_out (GIMarshallingTestsFlags *v)
{
- *flags_ = GI_MARSHALLING_TESTS_FLAGS_VALUE2;
+ *v = GI_MARSHALLING_TESTS_FLAGS_VALUE2;
}
/**
* gi_marshalling_tests_flags_inout:
- * @flags_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_flags_inout (GIMarshallingTestsFlags *flags_)
+gi_marshalling_tests_flags_inout (GIMarshallingTestsFlags *v)
{
- g_assert(*flags_ == GI_MARSHALLING_TESTS_FLAGS_VALUE2);
- *flags_ = GI_MARSHALLING_TESTS_FLAGS_VALUE1;
+ g_assert (*v == GI_MARSHALLING_TESTS_FLAGS_VALUE2);
+ *v = GI_MARSHALLING_TESTS_FLAGS_VALUE1;
}
GIMarshallingTestsNoTypeFlags
gi_marshalling_tests_no_type_flags_returnv (void)
{
- return GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2;
+ return GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2;
}
void
-gi_marshalling_tests_no_type_flags_in (GIMarshallingTestsNoTypeFlags flags_)
+gi_marshalling_tests_no_type_flags_in (GIMarshallingTestsNoTypeFlags v)
{
- g_assert(flags_ == GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2);
+ g_assert (v == GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2);
}
void
-gi_marshalling_tests_no_type_flags_in_zero (GIMarshallingTestsNoTypeFlags flags)
+gi_marshalling_tests_no_type_flags_in_zero (GIMarshallingTestsNoTypeFlags v)
{
- g_assert(flags == 0);
+ g_assert (v == 0);
}
/**
* gi_marshalling_tests_no_type_flags_out:
- * @flags_: (out):
+ * @v: (out):
*/
void
-gi_marshalling_tests_no_type_flags_out (GIMarshallingTestsNoTypeFlags *flags_)
+gi_marshalling_tests_no_type_flags_out (GIMarshallingTestsNoTypeFlags *v)
{
- *flags_ = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2;
+ *v = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2;
}
/**
* gi_marshalling_tests_no_type_flags_inout:
- * @flags_: (inout):
+ * @v: (inout):
*/
void
-gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *flags_)
+gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *v)
{
- g_assert(*flags_ == GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2);
- *flags_ = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE1;
+ g_assert (*v == GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2);
+ *v = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE1;
}
@@ -3484,16 +3668,17 @@ gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *flags_)
GIMarshallingTestsSimpleStruct *
gi_marshalling_tests_simple_struct_returnv (void)
{
- static GIMarshallingTestsSimpleStruct *struct_ = NULL;
+ static GIMarshallingTestsSimpleStruct *struct_ = NULL;
- if (struct_ == NULL) {
- struct_ = g_new(GIMarshallingTestsSimpleStruct, 1);
+ if (struct_ == NULL)
+ {
+ struct_ = g_new (GIMarshallingTestsSimpleStruct, 1);
- struct_->long_ = 6;
- struct_->int8 = 7;
+ struct_->long_ = 6;
+ struct_->int8 = 7;
}
- return struct_;
+ return struct_;
}
/**
@@ -3503,28 +3688,29 @@ gi_marshalling_tests_simple_struct_returnv (void)
void
gi_marshalling_tests_simple_struct_inv (GIMarshallingTestsSimpleStruct *struct_)
{
- g_assert_cmpint(struct_->long_, ==, 6);
- g_assert_cmpint(struct_->int8, ==, 7);
+ g_assert_cmpint (struct_->long_, ==, 6);
+ g_assert_cmpint (struct_->int8, ==, 7);
}
void
gi_marshalling_tests_simple_struct_method (GIMarshallingTestsSimpleStruct *struct_)
{
- g_assert_cmpint(struct_->long_, ==, 6);
- g_assert_cmpint(struct_->int8, ==, 7);
+ g_assert_cmpint (struct_->long_, ==, 6);
+ g_assert_cmpint (struct_->int8, ==, 7);
}
GType
gi_marshalling_tests_pointer_struct_get_type (void)
{
- static GType type = 0;
+ static GType type = 0;
- if (type == 0) {
- type = g_pointer_type_register_static ("GIMarshallingTestsPointerStruct");
+ if (type == 0)
+ {
+ type = g_pointer_type_register_static ("GIMarshallingTestsPointerStruct");
}
- return type;
+ return type;
}
/**
@@ -3535,15 +3721,16 @@ gi_marshalling_tests_pointer_struct_get_type (void)
GIMarshallingTestsPointerStruct *
gi_marshalling_tests_pointer_struct_returnv (void)
{
- static GIMarshallingTestsPointerStruct *struct_ = NULL;
+ static GIMarshallingTestsPointerStruct *struct_ = NULL;
- if (struct_ == NULL) {
- struct_ = g_new(GIMarshallingTestsPointerStruct, 1);
+ if (struct_ == NULL)
+ {
+ struct_ = g_new (GIMarshallingTestsPointerStruct, 1);
- struct_->long_ = 42;
+ struct_->long_ = 42;
}
- return struct_;
+ return struct_;
}
/**
@@ -3553,49 +3740,69 @@ gi_marshalling_tests_pointer_struct_returnv (void)
void
gi_marshalling_tests_pointer_struct_inv (GIMarshallingTestsPointerStruct *struct_)
{
- g_assert_cmpint(struct_->long_, ==, 42);
+ g_assert_cmpint (struct_->long_, ==, 42);
}
static GIMarshallingTestsBoxedStruct *
gi_marshalling_tests_boxed_struct_copy (GIMarshallingTestsBoxedStruct *struct_)
{
- GIMarshallingTestsBoxedStruct *new_struct;
+ GIMarshallingTestsBoxedStruct *new_struct;
- if (struct_ == NULL)
- return NULL;
+ if (struct_ == NULL)
+ return NULL;
- new_struct = g_slice_new (GIMarshallingTestsBoxedStruct);
+ new_struct = g_slice_new (GIMarshallingTestsBoxedStruct);
- *new_struct = *struct_;
+ *new_struct = *struct_;
+ new_struct->string_ = g_strdup (struct_->string_);
- return new_struct;
+ return new_struct;
}
static void
gi_marshalling_tests_boxed_struct_free (GIMarshallingTestsBoxedStruct *struct_)
{
- if (struct_ != NULL)
- g_slice_free (GIMarshallingTestsBoxedStruct, struct_);
+ if (struct_ != NULL)
+ {
+ g_free (struct_->string_);
+ g_slice_free (GIMarshallingTestsBoxedStruct, struct_);
+ }
}
GType
gi_marshalling_tests_boxed_struct_get_type (void)
{
- static GType type = 0;
+ static GType type = 0;
- if (type == 0) {
- type = g_boxed_type_register_static ("GIMarshallingTestsBoxedStruct",
- (GBoxedCopyFunc) gi_marshalling_tests_boxed_struct_copy,
- (GBoxedFreeFunc) gi_marshalling_tests_boxed_struct_free);
+ if (type == 0)
+ {
+ type = g_boxed_type_register_static ("GIMarshallingTestsBoxedStruct",
+ (GBoxedCopyFunc)
+ gi_marshalling_tests_boxed_struct_copy,
+ (GBoxedFreeFunc) gi_marshalling_tests_boxed_struct_free);
}
- return type;
+ return type;
+}
+
+static GType
+gi_marshalling_tests_boxed_glist_get_type (void)
+{
+ static GType type = 0;
+
+ if (type == 0)
+ {
+ type = g_boxed_type_register_static ("GIMarshallingTestsBoxedGList",
+ (GBoxedCopyFunc) g_list_copy, (GBoxedFreeFunc) g_list_free);
+ }
+
+ return type;
}
GIMarshallingTestsBoxedStruct *
gi_marshalling_tests_boxed_struct_new (void)
{
- return g_slice_new0 (GIMarshallingTestsBoxedStruct);
+ return g_slice_new0 (GIMarshallingTestsBoxedStruct);
}
/**
@@ -3606,20 +3813,22 @@ gi_marshalling_tests_boxed_struct_new (void)
GIMarshallingTestsBoxedStruct *
gi_marshalling_tests_boxed_struct_returnv (void)
{
- static GIMarshallingTestsBoxedStruct *struct_ = NULL;
+ static GIMarshallingTestsBoxedStruct *struct_ = NULL;
- if (struct_ == NULL) {
- struct_ = g_new(GIMarshallingTestsBoxedStruct, 1);
+ if (struct_ == NULL)
+ {
+ struct_ = g_new (GIMarshallingTestsBoxedStruct, 1);
- struct_->long_ = 42;
- struct_->g_strv = g_new0(gchar*, 4);
- struct_->g_strv[0] = g_strdup("0");
- struct_->g_strv[1] = g_strdup("1");
- struct_->g_strv[2] = g_strdup("2");
- struct_->g_strv[3] = NULL;
+ struct_->long_ = 42;
+ struct_->string_ = g_strdup ("hello");
+ struct_->g_strv = g_new0 (gchar *, 4);
+ struct_->g_strv[0] = g_strdup ("0");
+ struct_->g_strv[1] = g_strdup ("1");
+ struct_->g_strv[2] = g_strdup ("2");
+ struct_->g_strv[3] = NULL;
}
- return struct_;
+ return struct_;
}
/**
@@ -3629,7 +3838,7 @@ gi_marshalling_tests_boxed_struct_returnv (void)
void
gi_marshalling_tests_boxed_struct_inv (GIMarshallingTestsBoxedStruct *struct_)
{
- g_assert_cmpint(struct_->long_, ==, 42);
+ g_assert_cmpint (struct_->long_, ==, 42);
}
/**
@@ -3639,15 +3848,16 @@ gi_marshalling_tests_boxed_struct_inv (GIMarshallingTestsBoxedStruct *struct_)
void
gi_marshalling_tests_boxed_struct_out (GIMarshallingTestsBoxedStruct **struct_)
{
- static GIMarshallingTestsBoxedStruct *new_struct = NULL;
+ static GIMarshallingTestsBoxedStruct *new_struct = NULL;
- if (new_struct == NULL) {
- new_struct = g_new(GIMarshallingTestsBoxedStruct, 1);
+ if (new_struct == NULL)
+ {
+ new_struct = g_new0 (GIMarshallingTestsBoxedStruct, 1);
- new_struct->long_ = 42;
+ new_struct->long_ = 42;
}
- *struct_ = new_struct;
+ *struct_ = new_struct;
}
/**
@@ -3657,42 +3867,44 @@ gi_marshalling_tests_boxed_struct_out (GIMarshallingTestsBoxedStruct **struct_)
void
gi_marshalling_tests_boxed_struct_inout (GIMarshallingTestsBoxedStruct **struct_)
{
- g_assert_cmpint((*struct_)->long_, ==, 42);
+ g_assert_cmpint ((*struct_)->long_, ==, 42);
- (*struct_) = g_slice_new (GIMarshallingTestsBoxedStruct);
- (*struct_)->long_ = 0;
+ (*struct_) = g_slice_new0 (GIMarshallingTestsBoxedStruct);
+ (*struct_)->long_ = 0;
}
static GIMarshallingTestsUnion *
gi_marshalling_tests_union_copy (GIMarshallingTestsUnion *union_)
{
- GIMarshallingTestsUnion *new_union;
+ GIMarshallingTestsUnion *new_union;
- new_union = g_slice_new (GIMarshallingTestsUnion);
+ new_union = g_slice_new (GIMarshallingTestsUnion);
- *new_union = *union_;
+ *new_union = *union_;
- return new_union;
+ return new_union;
}
static void
gi_marshalling_tests_union_free (GIMarshallingTestsUnion *union_)
{
- g_slice_free (GIMarshallingTestsUnion, union_);
+ g_slice_free (GIMarshallingTestsUnion, union_);
}
GType
gi_marshalling_tests_union_get_type (void)
{
- static GType type = 0;
+ static GType type = 0;
- if (type == 0) {
- type = g_boxed_type_register_static ("GIMarshallingTestsUnion",
- (GBoxedCopyFunc) gi_marshalling_tests_union_copy,
- (GBoxedFreeFunc) gi_marshalling_tests_union_free);
+ if (type == 0)
+ {
+ type = g_boxed_type_register_static ("GIMarshallingTestsUnion",
+ (GBoxedCopyFunc)
+ gi_marshalling_tests_union_copy,
+ (GBoxedFreeFunc) gi_marshalling_tests_union_free);
}
- return type;
+ return type;
}
/**
@@ -3703,15 +3915,16 @@ gi_marshalling_tests_union_get_type (void)
GIMarshallingTestsUnion *
gi_marshalling_tests_union_returnv (void)
{
- static GIMarshallingTestsUnion *union_ = NULL;
+ static GIMarshallingTestsUnion *union_ = NULL;
- if (union_ == NULL) {
- union_ = g_new(GIMarshallingTestsUnion, 1);
+ if (union_ == NULL)
+ {
+ union_ = g_new (GIMarshallingTestsUnion, 1);
- union_->long_ = 42;
+ union_->long_ = 42;
}
- return union_;
+ return union_;
}
/**
@@ -3721,25 +3934,25 @@ gi_marshalling_tests_union_returnv (void)
void
gi_marshalling_tests_union_inv (GIMarshallingTestsUnion *union_)
{
- g_assert_cmpint(union_->long_, ==, 42);
+ g_assert_cmpint (union_->long_, ==, 42);
}
void
gi_marshalling_tests_union_method (GIMarshallingTestsUnion *union_)
{
- g_assert_cmpint(union_->long_, ==, 42);
+ g_assert_cmpint (union_->long_, ==, 42);
}
enum
{
- PROP_0,
- PROP_INT_
+ PROP_0,
+ PROP_INT_
};
-static void gi_marshalling_tests_object_real_method_with_default_implementation (
- GIMarshallingTestsObject *self, gint8 in);
+static void
+ gi_marshalling_tests_object_real_method_with_default_implementation (GIMarshallingTestsObject *self, gint8 in);
G_DEFINE_TYPE (GIMarshallingTestsObject, gi_marshalling_tests_object, G_TYPE_OBJECT);
@@ -3751,56 +3964,60 @@ gi_marshalling_tests_object_init (GIMarshallingTestsObject *object)
static void
gi_marshalling_tests_object_finalize (GObject *object)
{
- G_OBJECT_CLASS (gi_marshalling_tests_object_parent_class)->finalize (object);
+ G_OBJECT_CLASS (gi_marshalling_tests_object_parent_class)->finalize (object);
}
static void
gi_marshalling_tests_object_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
{
- g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
+ g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
- switch (prop_id) {
- case PROP_INT_:
- GI_MARSHALLING_TESTS_OBJECT (object)->int_ = g_value_get_int (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ switch (prop_id)
+ {
+ case PROP_INT_:
+ GI_MARSHALLING_TESTS_OBJECT (object)->int_ = g_value_get_int (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
gi_marshalling_tests_object_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
- g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
+ g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
- switch (prop_id) {
- case PROP_INT_:
- g_value_set_int (value, GI_MARSHALLING_TESTS_OBJECT (object)->int_);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
+ switch (prop_id)
+ {
+ case PROP_INT_:
+ g_value_set_int (value, GI_MARSHALLING_TESTS_OBJECT (object)->int_);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
}
static void
gi_marshalling_tests_object_class_init (GIMarshallingTestsObjectClass *klass)
{
- GObjectClass* object_class = G_OBJECT_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
#if 0
- GObjectClass* parent_class = G_OBJECT_CLASS (klass);
+ GObjectClass *parent_class = G_OBJECT_CLASS (klass);
#endif
- object_class->finalize = gi_marshalling_tests_object_finalize;
- object_class->set_property = gi_marshalling_tests_object_set_property;
- object_class->get_property = gi_marshalling_tests_object_get_property;
+ object_class->finalize = gi_marshalling_tests_object_finalize;
+ object_class->set_property = gi_marshalling_tests_object_set_property;
+ object_class->get_property = gi_marshalling_tests_object_get_property;
- g_object_class_install_property (object_class, PROP_INT_,
- g_param_spec_int ("int", "Integer", "An integer", G_MININT, G_MAXINT, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+ g_object_class_install_property (object_class, PROP_INT_,
+ g_param_spec_int ("int", "Integer",
+ "An integer", G_MININT,
+ G_MAXINT, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
- klass->method_with_default_implementation = gi_marshalling_tests_object_real_method_with_default_implementation;
+ klass->method_with_default_implementation = gi_marshalling_tests_object_real_method_with_default_implementation;
}
@@ -3812,21 +4029,21 @@ gi_marshalling_tests_object_static_method (void)
void
gi_marshalling_tests_object_method (GIMarshallingTestsObject *object)
{
- g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
- g_assert_cmpint (object->int_, ==, 42);
+ g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
+ g_assert_cmpint (object->int_, ==, 42);
}
void
gi_marshalling_tests_object_overridden_method (GIMarshallingTestsObject *object)
{
- g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
- g_assert_cmpint (object->int_, ==, 0);
+ g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object));
+ g_assert_cmpint (object->int_, ==, 0);
}
GIMarshallingTestsObject *
gi_marshalling_tests_object_new (gint int_)
{
- return g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, "int", int_, NULL);
+ return g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, "int", int_, NULL);
}
/**
@@ -3836,11 +4053,11 @@ gi_marshalling_tests_object_new (gint int_)
void
gi_marshalling_tests_object_method_array_in (GIMarshallingTestsObject *object, const gint *ints, gint length)
{
- g_assert_cmpint(length, ==, 4);
- g_assert_cmpint(ints[0], ==, -1);
- g_assert_cmpint(ints[1], ==, 0);
- g_assert_cmpint(ints[2], ==, 1);
- g_assert_cmpint(ints[3], ==, 2);
+ g_assert_cmpint (length, ==, 4);
+ g_assert_cmpint (ints[0], ==, -1);
+ g_assert_cmpint (ints[1], ==, 0);
+ g_assert_cmpint (ints[2], ==, 1);
+ g_assert_cmpint (ints[3], ==, 2);
}
/**
@@ -3850,10 +4067,10 @@ gi_marshalling_tests_object_method_array_in (GIMarshallingTestsObject *object, c
void
gi_marshalling_tests_object_method_array_out (GIMarshallingTestsObject *object, gint **ints, gint *length)
{
- static gint values[] = {-1, 0, 1, 2};
+ static gint values[] = { -1, 0, 1, 2 };
- *length = 4;
- *ints = values;
+ *length = 4;
+ *ints = values;
}
/**
@@ -3864,16 +4081,16 @@ gi_marshalling_tests_object_method_array_out (GIMarshallingTestsObject *object,
void
gi_marshalling_tests_object_method_array_inout (GIMarshallingTestsObject *object, gint **ints, gint *length)
{
- static gint values[] = {-2, -1, 0, 1, 2};
+ static gint values[] = { -2, -1, 0, 1, 2 };
- g_assert_cmpint(*length, ==, 4);
- g_assert_cmpint((*ints)[0], ==, -1);
- g_assert_cmpint((*ints)[1], ==, 0);
- g_assert_cmpint((*ints)[2], ==, 1);
- g_assert_cmpint((*ints)[3], ==, 2);
+ g_assert_cmpint (*length, ==, 4);
+ g_assert_cmpint ((*ints)[0], ==, -1);
+ g_assert_cmpint ((*ints)[1], ==, 0);
+ g_assert_cmpint ((*ints)[2], ==, 1);
+ g_assert_cmpint ((*ints)[3], ==, 2);
- *length = 5;
- *ints = values;
+ *length = 5;
+ *ints = values;
}
/**
@@ -3884,10 +4101,10 @@ gi_marshalling_tests_object_method_array_inout (GIMarshallingTestsObject *object
const gint *
gi_marshalling_tests_object_method_array_return (GIMarshallingTestsObject *object, gint *length)
{
- static gint ints[] = {-1, 0, 1, 2};
+ static gint ints[] = { -1, 0, 1, 2 };
- *length = 4;
- return ints;
+ *length = 4;
+ return ints;
}
/**
@@ -3911,22 +4128,53 @@ gi_marshalling_tests_object_method_int8_out (GIMarshallingTestsObject *self, gin
}
/**
+ * gi_marshalling_tests_object_method_int8_arg_and_out_caller:
+ * @out: (out caller-allocates):
+ */
+void
+ gi_marshalling_tests_object_method_int8_arg_and_out_caller (GIMarshallingTestsObject *self, gint8 arg, gint8 *out)
+{
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->method_int8_arg_and_out_caller (self, arg, out);
+}
+
+/**
+ * gi_marshalling_tests_object_method_int8_arg_and_out_callee:
+ * @out: (out):
+ */
+void
+ gi_marshalling_tests_object_method_int8_arg_and_out_callee (GIMarshallingTestsObject *self, gint8 arg, gint8 **out)
+{
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->method_int8_arg_and_out_callee (self, arg, out);
+}
+
+/**
+ * gi_marshalling_tests_object_method_str_arg_out_ret:
+ * @out: (out caller-allocates):
+ *
+ * Returns: (transfer none)
+ */
+const gchar *
+gi_marshalling_tests_object_method_str_arg_out_ret (GIMarshallingTestsObject *self, const gchar *arg, guint *out)
+{
+ return GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->method_str_arg_out_ret (self, arg, out);
+}
+
+/**
* gi_marshalling_tests_object_method_with_default_implementation:
* @in: (in):
*/
-void
-gi_marshalling_tests_object_method_with_default_implementation (GIMarshallingTestsObject *self, gint8 in)
+void gi_marshalling_tests_object_method_with_default_implementation (GIMarshallingTestsObject *self, gint8 in)
{
- GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->method_with_default_implementation (self, in);
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->method_with_default_implementation (self, in);
}
static void
-gi_marshalling_tests_object_real_method_with_default_implementation (GIMarshallingTestsObject *self, gint8 in)
+ gi_marshalling_tests_object_real_method_with_default_implementation (GIMarshallingTestsObject *self, gint8 in)
{
- GValue val = {0, };
- g_value_init (&val, G_TYPE_INT);
- g_value_set_int (&val, in);
- g_object_set_property (G_OBJECT (self), "int", &val);
+ GValue val = { 0, };
+ g_value_init (&val, G_TYPE_INT);
+ g_value_set_int (&val, in);
+ g_object_set_property (G_OBJECT (self), "int", &val);
}
/**
@@ -3937,9 +4185,8 @@ gi_marshalling_tests_object_real_method_with_default_implementation (GIMarshalli
* Virtual: vfunc_with_callback
*/
void
-gi_marshalling_tests_object_vfunc_with_callback (GIMarshallingTestsObject *object,
- GIMarshallingTestsCallbackIntInt callback,
- void *callback_data)
+gi_marshalling_tests_object_vfunc_with_callback (GIMarshallingTestsObject *
+ object, GIMarshallingTestsCallbackIntInt callback, void *callback_data)
{
}
@@ -3947,16 +4194,14 @@ gi_marshalling_tests_object_vfunc_with_callback (GIMarshallingTestsObject *objec
static int
_callback (int val, void *user_data)
{
- g_assert (user_data == (gpointer)0xdeadbeef);
+ g_assert (user_data == (gpointer) 0xdeadbeef);
return val;
}
void
gi_marshalling_tests_object_call_vfunc_with_callback (GIMarshallingTestsObject *object)
{
- GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (object)->vfunc_with_callback (object,
- _callback,
- (void *) 0xdeadbeef);
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (object)->vfunc_with_callback (object, _callback, (void *) 0xdeadbeef);
}
/**
@@ -3967,13 +4212,14 @@ gi_marshalling_tests_object_call_vfunc_with_callback (GIMarshallingTestsObject *
GIMarshallingTestsObject *
gi_marshalling_tests_object_none_return (void)
{
- static GIMarshallingTestsObject *object = NULL;
+ static GIMarshallingTestsObject *object = NULL;
- if (object == NULL) {
- object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
+ if (object == NULL)
+ {
+ object = g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
}
- return object;
+ return object;
}
/**
@@ -3984,7 +4230,7 @@ gi_marshalling_tests_object_none_return (void)
GIMarshallingTestsObject *
gi_marshalling_tests_object_full_return (void)
{
- return g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
+ return g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
}
/**
@@ -3994,7 +4240,7 @@ gi_marshalling_tests_object_full_return (void)
void
gi_marshalling_tests_object_none_in (GIMarshallingTestsObject *object)
{
- g_assert_cmpint(object->int_, ==, 42);
+ g_assert_cmpint (object->int_, ==, 42);
}
/**
@@ -4004,13 +4250,14 @@ gi_marshalling_tests_object_none_in (GIMarshallingTestsObject *object)
void
gi_marshalling_tests_object_none_out (GIMarshallingTestsObject **object)
{
- static GIMarshallingTestsObject *new_object = NULL;
+ static GIMarshallingTestsObject *new_object = NULL;
- if (new_object == NULL) {
- new_object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
+ if (new_object == NULL)
+ {
+ new_object = g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
}
- *object = new_object;
+ *object = new_object;
}
/**
@@ -4020,7 +4267,7 @@ gi_marshalling_tests_object_none_out (GIMarshallingTestsObject **object)
void
gi_marshalling_tests_object_full_out (GIMarshallingTestsObject **object)
{
- *object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
+ *object = g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
}
/**
@@ -4030,16 +4277,17 @@ gi_marshalling_tests_object_full_out (GIMarshallingTestsObject **object)
void
gi_marshalling_tests_object_none_inout (GIMarshallingTestsObject **object)
{
- static GIMarshallingTestsObject *new_object = NULL;
+ static GIMarshallingTestsObject *new_object = NULL;
- g_assert_cmpint((*object)->int_, ==, 42);
+ g_assert_cmpint ((*object)->int_, ==, 42);
- if (new_object == NULL) {
- new_object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
- new_object->int_ = 0;
+ if (new_object == NULL)
+ {
+ new_object = g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
+ new_object->int_ = 0;
}
- *object = new_object;
+ *object = new_object;
}
/**
@@ -4049,9 +4297,9 @@ gi_marshalling_tests_object_none_inout (GIMarshallingTestsObject **object)
void
gi_marshalling_tests_object_full_inout (GIMarshallingTestsObject **object)
{
- g_assert_cmpint((*object)->int_, ==, 42);
+ g_assert_cmpint ((*object)->int_, ==, 42);
- *object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
+ *object = g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL);
}
/**
@@ -4080,12 +4328,12 @@ gi_marshalling_tests_object_int8_out (GIMarshallingTestsObject *object, gint8 *o
glong
gi_marshalling_tests_object_vfunc_return_value_only (GIMarshallingTestsObject *self)
{
- /* make sure that local variables don't get smashed */
- glong return_value;
- gulong local = 0x12345678;
- return_value = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_value_only (self);
- g_assert_cmpint(local, ==, 0x12345678);
- return return_value;
+ /* make sure that local variables don't get smashed */
+ glong return_value;
+ gulong local = 0x12345678;
+ return_value = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_value_only (self);
+ g_assert_cmpint (local, ==, 0x12345678);
+ return return_value;
}
/**
@@ -4095,10 +4343,10 @@ gi_marshalling_tests_object_vfunc_return_value_only (GIMarshallingTestsObject *s
void
gi_marshalling_tests_object_vfunc_one_out_parameter (GIMarshallingTestsObject *self, gfloat *a)
{
- /* make sure that local variables don't get smashed */
- gulong local = 0x12345678;
- GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_one_out_parameter (self, a);
- g_assert_cmpint(local, ==, 0x12345678);
+ /* make sure that local variables don't get smashed */
+ gulong local = 0x12345678;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_one_out_parameter (self, a);
+ g_assert_cmpint (local, ==, 0x12345678);
}
/**
@@ -4106,41 +4354,50 @@ gi_marshalling_tests_object_vfunc_one_out_parameter (GIMarshallingTestsObject *s
* @a: (out):
* @b: (out):
*/
-void
-gi_marshalling_tests_object_vfunc_multiple_out_parameters (GIMarshallingTestsObject *self, gfloat *a, gfloat *b)
+void gi_marshalling_tests_object_vfunc_multiple_out_parameters (GIMarshallingTestsObject *self, gfloat *a, gfloat *b)
{
- /* make sure that local variables don't get smashed */
- gulong local = 0x12345678;
- GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_multiple_out_parameters (self, a, b);
- g_assert_cmpint(local, ==, 0x12345678);
+ /* make sure that local variables don't get smashed */
+ gulong local = 0x12345678;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_multiple_out_parameters (self, a, b);
+ g_assert_cmpint (local, ==, 0x12345678);
}
/**
* gi_marshalling_tests_object_vfunc_caller_allocated_out_parameter:
* @a: (out):
*/
-void
-gi_marshalling_tests_object_vfunc_caller_allocated_out_parameter (GIMarshallingTestsObject *self, GValue *a)
+void gi_marshalling_tests_object_vfunc_caller_allocated_out_parameter (GIMarshallingTestsObject *self, GValue *a)
{
- /* make sure that local variables don't get smashed */
- gulong local = 0x12345678;
- GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_caller_allocated_out_parameter (self, a);
- g_assert_cmpint(local, ==, 0x12345678);
+ /* make sure that local variables don't get smashed */
+ gulong local = 0x12345678;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_caller_allocated_out_parameter (self, a);
+ g_assert_cmpint (local, ==, 0x12345678);
+}
+
+/**
+ * gi_marshalling_tests_object_vfunc_array_out_parameter:
+ * @a: (out) (array zero-terminated=1):
+ */
+void gi_marshalling_tests_object_vfunc_array_out_parameter (GIMarshallingTestsObject *self, gfloat **a)
+{
+ /* make sure that local variables don't get smashed */
+ gulong local = 0x12345678;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_array_out_parameter (self, a);
+ g_assert_cmpint (local, ==, 0x12345678);
}
/**
* gi_marshalling_tests_object_vfunc_return_value_and_one_out_parameter:
* @a: (out):
*/
-glong
-gi_marshalling_tests_object_vfunc_return_value_and_one_out_parameter (GIMarshallingTestsObject *self, glong *a)
+glong gi_marshalling_tests_object_vfunc_return_value_and_one_out_parameter (GIMarshallingTestsObject *self, glong *a)
{
- /* make sure that local variables don't get smashed */
- gulong return_value;
- gulong local = 0x12345678;
- return_value = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_value_and_one_out_parameter (self, a);
- g_assert_cmpint(local, ==, 0x12345678);
- return return_value;
+ /* make sure that local variables don't get smashed */
+ gulong return_value;
+ gulong local = 0x12345678;
+ return_value = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_value_and_one_out_parameter (self, a);
+ g_assert_cmpint (local, ==, 0x12345678);
+ return return_value;
}
/**
@@ -4149,26 +4406,209 @@ gi_marshalling_tests_object_vfunc_return_value_and_one_out_parameter (GIMarshall
* @b: (out):
*/
glong
-gi_marshalling_tests_object_vfunc_return_value_and_multiple_out_parameters (GIMarshallingTestsObject *self, glong *a, glong *b)
+ gi_marshalling_tests_object_vfunc_return_value_and_multiple_out_parameters
+ (GIMarshallingTestsObject *self, glong *a, glong *b)
{
- gulong return_value;
- gulong local = 0x12345678;
- return_value = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_value_and_multiple_out_parameters (self, a, b);
- g_assert_cmpint(local, ==, 0x12345678);
- return return_value;
+ gulong return_value;
+ gulong local = 0x12345678;
+ return_value =
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_value_and_multiple_out_parameters (self, a, b);
+ g_assert_cmpint (local, ==, 0x12345678);
+ return return_value;
}
gboolean
-gi_marshalling_tests_object_vfunc_meth_with_error (GIMarshallingTestsObject *self,
- gint x,
- GError **error)
+gi_marshalling_tests_object_vfunc_meth_with_error (GIMarshallingTestsObject *self, gint x, GError **error)
{
gulong local = 0x12345678;
- gboolean ret = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_meth_with_err (self, x, error);
- g_assert_cmpint(local, ==, 0x12345678);
+ gboolean ret = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_meth_with_err (self,
+ x,
+ error);
+ g_assert_cmpint (local, ==, 0x12345678);
return ret;
}
+/**
+ * gi_marshalling_tests_object_vfunc_return_enum:
+ */
+GIMarshallingTestsEnum
+gi_marshalling_tests_object_vfunc_return_enum (GIMarshallingTestsObject *self)
+{
+ /* make sure that local variables don't get smashed */
+ GIMarshallingTestsEnum return_value;
+ glong local = 0x12345678;
+ return_value = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_enum (self);
+ g_assert_cmpint (local, ==, 0x12345678);
+ return return_value;
+}
+
+/**
+ * gi_marshalling_tests_object_vfunc_out_enum:
+ * @_enum: (out):
+ */
+void
+gi_marshalling_tests_object_vfunc_out_enum (GIMarshallingTestsObject *self, GIMarshallingTestsEnum *_enum)
+{
+ /* make sure that local variables don't get smashed */
+ gulong local = 0x12345678;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_out_enum (self, _enum);
+ g_assert_cmpint (local, ==, 0x12345678);
+}
+
+
+/* NOTE:
+ *
+ * The following (get_ref_info_for_*) methods are designed to call vfuncs related
+ * to object argument marshaling. They do not pass the resulting objects through them
+ * as regular vfunc wrapper method do, but rather return reference count and floating
+ * information back to the callers. This is useful because callers can do testing of
+ * expected reference counts in isolation and from the perspective of C. This is important
+ * because if there are bugs in the reverse marshaling, they can obfuscate or compound
+ * bugs in marshaling from the vfuncs.
+ */
+
+/**
+ * gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_none:
+ * @ref_count: (out): Ref count of the object returned from the vfunc directly after vfunc call.
+ * @is_floating: (out): Floating state object returned from the vfunc directly after vfunc call.
+ */
+void
+ gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_none
+ (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating)
+{
+ GObject *object = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_object_transfer_none (self);
+ *ref_count = object->ref_count;
+ *is_floating = g_object_is_floating (object);
+
+ /* Attempt to sink and unref the returned object and avoid any potential leaks */
+ g_object_ref_sink (object);
+ g_object_unref (object);
+}
+
+/**
+ * gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_full:
+ * @ref_count: (out): Ref count of the object returned from the vfunc directly after vfunc call.
+ * @is_floating: (out): Floating state object returned from the vfunc directly after vfunc call.
+ */
+void
+ gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_full
+ (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating)
+{
+ GObject *object = GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_return_object_transfer_full (self);
+ *ref_count = object->ref_count;
+ *is_floating = g_object_is_floating (object);
+ g_object_unref (object);
+}
+
+/**
+ * gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_none:
+ * @ref_count: (out): Ref count of the object returned from the vfunc directly after vfunc call.
+ * @is_floating: (out): Floating state object returned from the vfunc directly after vfunc call.
+ */
+void
+ gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_none
+ (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating)
+{
+ GObject *object = NULL;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_out_object_transfer_none (self, &object);
+ *ref_count = object->ref_count;
+ *is_floating = g_object_is_floating (object);
+
+ /* Attempt to sink and unref the returned object and avoid any potential leaks */
+ g_object_ref_sink (object);
+ g_object_unref (object);
+}
+
+/**
+ * gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_full:
+ * @ref_count: (out): Ref count of the object returned from the vfunc directly after vfunc call.
+ * @is_floating: (out): Floating state object returned from the vfunc directly after vfunc call.
+ */
+void
+ gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_full
+ (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating)
+{
+ GObject *object = NULL;
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_out_object_transfer_full (self, &object);
+ *ref_count = object->ref_count;
+ *is_floating = g_object_is_floating (object);
+ g_object_unref (object);
+}
+
+static void
+_vfunc_in_object_destroy_callback (gboolean *destroy_called, GObject *where_the_object_was)
+{
+ *destroy_called = TRUE;
+}
+
+/**
+ * gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_none:
+ * @type: GType of object to create and pass as in argument to the vfunc
+ * @ref_count: (out): Ref count of the in object directly after vfunc call.
+ * @is_floating: (out): Floating state of in object directly after vfunc call.
+ *
+ * Calls vfunc_in_object_transfer_none with a new object of the given type.
+ */
+void
+ gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_none
+ (GIMarshallingTestsObject *self, GType type, guint *ref_count, gboolean *is_floating)
+{
+ static gboolean destroy_called;
+ GObject *object;
+ destroy_called = FALSE;
+
+ object = g_object_new (type, NULL);
+ g_object_weak_ref (object, (GWeakNotify) _vfunc_in_object_destroy_callback, &destroy_called);
+
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_in_object_transfer_none (self, object);
+ if (destroy_called)
+ {
+ *ref_count = 0;
+ *is_floating = FALSE;
+ }
+ else
+ {
+ *ref_count = object->ref_count;
+ *is_floating = g_object_is_floating (object);
+ g_object_unref (object);
+ }
+}
+
+
+/**
+ * gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_full:
+ * @type: GType of object to create and pass as in argument to the vfunc
+ * @ref_count: (out): Ref count of the in object directly after vfunc call.
+ * @is_floating: (out): Floating state of in object directly after vfunc call.
+ */
+void
+ gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_full
+ (GIMarshallingTestsObject *self, GType type, guint *ref_count, gboolean *is_floating)
+{
+ static gboolean destroy_called;
+ GObject *object;
+ destroy_called = FALSE;
+
+ object = g_object_new (type, NULL);
+ g_object_weak_ref (object, (GWeakNotify) _vfunc_in_object_destroy_callback, &destroy_called);
+
+ /* Calling the vfunc takes ownership of the object, so we use a weak_ref to determine
+ * if the object gets destroyed after the call and appropriately return 0 as the ref count.
+ */
+ GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->vfunc_in_object_transfer_full (self, object);
+ if (destroy_called)
+ {
+ *ref_count = 0;
+ *is_floating = FALSE;
+ }
+ else
+ {
+ *ref_count = object->ref_count;
+ *is_floating = g_object_is_floating (object);
+ }
+}
+
+
G_DEFINE_TYPE (GIMarshallingTestsSubObject, gi_marshalling_tests_sub_object, GI_MARSHALLING_TESTS_TYPE_OBJECT);
static void
@@ -4179,69 +4619,69 @@ gi_marshalling_tests_sub_object_init (GIMarshallingTestsSubObject *object)
static void
gi_marshalling_tests_sub_object_finalize (GObject *object)
{
- G_OBJECT_CLASS(gi_marshalling_tests_sub_object_parent_class)->finalize(object);
+ G_OBJECT_CLASS (gi_marshalling_tests_sub_object_parent_class)->finalize (object);
}
static void
method_deep_hierarchy (GIMarshallingTestsObject *self, gint8 in)
{
- GValue val = {0, };
- g_value_init (&val, G_TYPE_INT);
- g_value_set_int (&val, in);
- g_object_set_property (G_OBJECT (self), "int", &val);
+ GValue val = { 0, };
+ g_value_init (&val, G_TYPE_INT);
+ g_value_set_int (&val, in);
+ g_object_set_property (G_OBJECT (self), "int", &val);
}
static void
gi_marshalling_tests_sub_object_class_init (GIMarshallingTestsSubObjectClass *klass)
{
- G_OBJECT_CLASS(klass)->finalize = gi_marshalling_tests_sub_object_finalize;
- GI_MARSHALLING_TESTS_OBJECT_CLASS(klass)->method_deep_hierarchy = method_deep_hierarchy;
+ G_OBJECT_CLASS (klass)->finalize = gi_marshalling_tests_sub_object_finalize;
+ GI_MARSHALLING_TESTS_OBJECT_CLASS (klass)->method_deep_hierarchy = method_deep_hierarchy;
}
void
gi_marshalling_tests_sub_object_sub_method (GIMarshallingTestsSubObject *object)
{
- g_assert_cmpint(GI_MARSHALLING_TESTS_OBJECT(object)->int_, ==, 0);
+ g_assert_cmpint (GI_MARSHALLING_TESTS_OBJECT (object)->int_, ==, 0);
}
-void
-gi_marshalling_tests_sub_object_overwritten_method (GIMarshallingTestsSubObject *object)
+void gi_marshalling_tests_sub_object_overwritten_method (GIMarshallingTestsSubObject *object)
{
- g_assert_cmpint(GI_MARSHALLING_TESTS_OBJECT(object)->int_, ==, 0);
+ g_assert_cmpint (GI_MARSHALLING_TESTS_OBJECT (object)->int_, ==, 0);
}
-G_DEFINE_TYPE (GIMarshallingTestsSubSubObject, gi_marshalling_tests_sub_sub_object, GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT);
+G_DEFINE_TYPE (GIMarshallingTestsSubSubObject,
+ gi_marshalling_tests_sub_sub_object, GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT);
static void
gi_marshalling_tests_sub_sub_object_init (GIMarshallingTestsSubSubObject *object)
{
}
-static void
-gi_marshalling_tests_sub_sub_object_class_init (GIMarshallingTestsSubSubObjectClass *klass)
+static void gi_marshalling_tests_sub_sub_object_class_init (GIMarshallingTestsSubSubObjectClass *klass)
{
}
/* Interfaces */
static void
-gi_marshalling_tests_interface_class_init(void *g_iface)
+gi_marshalling_tests_interface_class_init (void *g_iface)
{
}
GType
-gi_marshalling_tests_interface_get_type(void)
-{
- static GType type = 0;
- if (type == 0) {
- type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "GIMarshallingTestsInterface",
- sizeof (GIMarshallingTestsInterfaceIface),
- (GClassInitFunc) gi_marshalling_tests_interface_class_init,
- 0, NULL, 0);
+gi_marshalling_tests_interface_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0)
+ {
+ type = g_type_register_static_simple (G_TYPE_INTERFACE,
+ "GIMarshallingTestsInterface",
+ sizeof
+ (GIMarshallingTestsInterfaceIface),
+ (GClassInitFunc) gi_marshalling_tests_interface_class_init, 0, NULL, 0);
}
- return type;
+ return type;
}
/**
@@ -4266,43 +4706,45 @@ gi_marshalling_tests_test_interface_test_int8_in (GIMarshallingTestsInterface *t
static void
-gi_marshalling_tests_interface2_class_init(void *g_iface)
+gi_marshalling_tests_interface2_class_init (void *g_iface)
{
}
GType
-gi_marshalling_tests_interface2_get_type(void)
-{
- static GType type = 0;
- if (type == 0) {
- type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "GIMarshallingTestsInterface2",
- sizeof (GIMarshallingTestsInterface2Iface),
- (GClassInitFunc) gi_marshalling_tests_interface2_class_init,
- 0, NULL, 0);
+gi_marshalling_tests_interface2_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0)
+ {
+ type = g_type_register_static_simple (G_TYPE_INTERFACE,
+ "GIMarshallingTestsInterface2",
+ sizeof
+ (GIMarshallingTestsInterface2Iface),
+ (GClassInitFunc) gi_marshalling_tests_interface2_class_init, 0, NULL, 0);
}
- return type;
+ return type;
}
static void
-gi_marshalling_tests_interface3_class_init(void *g_iface)
+gi_marshalling_tests_interface3_class_init (void *g_iface)
{
}
GType
-gi_marshalling_tests_interface3_get_type(void)
-{
- static GType type = 0;
- if (type == 0) {
- type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "GIMarshallingTestsInterface3",
- sizeof (GIMarshallingTestsInterface3Iface),
- (GClassInitFunc) gi_marshalling_tests_interface3_class_init,
- 0, NULL, 0);
+gi_marshalling_tests_interface3_get_type (void)
+{
+ static GType type = 0;
+ if (type == 0)
+ {
+ type = g_type_register_static_simple (G_TYPE_INTERFACE,
+ "GIMarshallingTestsInterface3",
+ sizeof
+ (GIMarshallingTestsInterface3Iface),
+ (GClassInitFunc) gi_marshalling_tests_interface3_class_init, 0, NULL, 0);
}
- return type;
+ return type;
}
/**
@@ -4311,9 +4753,8 @@ gi_marshalling_tests_interface3_get_type(void)
* @n_in:
*/
void
-gi_marshalling_tests_interface3_test_variant_array_in (GIMarshallingTestsInterface3 *self,
- GVariant **in,
- gsize n_in)
+ gi_marshalling_tests_interface3_test_variant_array_in
+ (GIMarshallingTestsInterface3 *self, GVariant **in, gsize n_in)
{
GI_MARSHALLING_TESTS_INTERFACE3_GET_IFACE (self)->test_variant_array_in (self, in, n_in);
}
@@ -4326,8 +4767,8 @@ gi_marshalling_tests_interface3_test_variant_array_in (GIMarshallingTestsInterfa
void
gi_marshalling_tests_int_out_out (gint *int0, gint *int1)
{
- *int0 = 6;
- *int1 = 7;
+ *int0 = 6;
+ *int1 = 7;
}
/**
@@ -4340,12 +4781,11 @@ gi_marshalling_tests_int_out_out (gint *int0, gint *int1)
* @out2: (out):
*/
void
-gi_marshalling_tests_int_three_in_three_out(gint a, gint b, gint c,
- gint *out0, gint *out1, gint *out2)
+gi_marshalling_tests_int_three_in_three_out (gint a, gint b, gint c, gint *out0, gint *out1, gint *out2)
{
- *out0 = a;
- *out1 = b;
- *out2 = c;
+ *out0 = a;
+ *out1 = b;
+ *out2 = c;
}
/**
@@ -4355,20 +4795,18 @@ gi_marshalling_tests_int_three_in_three_out(gint a, gint b, gint c,
gint
gi_marshalling_tests_int_return_out (gint *int_)
{
- *int_ = 7;
- return 6;
+ *int_ = 7;
+ return 6;
}
/* GError */
void
-gi_marshalling_tests_gerror(GError **error)
+gi_marshalling_tests_gerror (GError **error)
{
- GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
- g_set_error_literal(error,
- quark,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
+ GQuark quark = g_quark_from_static_string (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+ g_set_error_literal (error, quark,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE, GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
}
/**
@@ -4376,13 +4814,11 @@ gi_marshalling_tests_gerror(GError **error)
* @in_ints: (array zero-terminated=1):
*/
void
-gi_marshalling_tests_gerror_array_in(gint *in_ints, GError **error)
+gi_marshalling_tests_gerror_array_in (gint *in_ints, GError **error)
{
- GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
- g_set_error_literal(error,
- quark,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
+ GQuark quark = g_quark_from_static_string (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+ g_set_error_literal (error, quark,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE, GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
}
/**
@@ -4393,16 +4829,15 @@ gi_marshalling_tests_gerror_array_in(gint *in_ints, GError **error)
* Inspired by gst_message_parse_error.
*/
void
-gi_marshalling_tests_gerror_out(GError **error, gchar **debug)
+gi_marshalling_tests_gerror_out (GError **error, gchar **debug)
{
- GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
- g_set_error_literal(error,
- quark,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
+ GQuark quark = g_quark_from_static_string (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+ g_set_error_literal (error, quark,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE, GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
- if (debug != NULL) {
- *debug = g_strdup (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE);
+ if (debug != NULL)
+ {
+ *debug = g_strdup (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE);
}
}
@@ -4415,14 +4850,15 @@ gi_marshalling_tests_gerror_out(GError **error, gchar **debug)
* must not free.
*/
void
-gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **debug)
+gi_marshalling_tests_gerror_out_transfer_none (GError **err, const gchar **debug)
{
- static GError error = { 0,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE };
- error.domain = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
- *err = &error;
- *debug = GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE;
+ static GError error = { 0,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
+ GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE
+ };
+ error.domain = g_quark_from_static_string (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+ *err = &error;
+ *debug = GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE;
}
/**
@@ -4433,57 +4869,57 @@ gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **debug)
* Returns: (transfer full): a GError
*/
GError *
-gi_marshalling_tests_gerror_return(void)
+gi_marshalling_tests_gerror_return (void)
{
- GQuark quark = g_quark_from_static_string(GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
+ GQuark quark = g_quark_from_static_string (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN);
- return g_error_new(quark,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE,
- GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
+ return g_error_new (quark, GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE, GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE);
}
static GIMarshallingTestsOverridesStruct *
gi_marshalling_tests_overrides_struct_copy (GIMarshallingTestsOverridesStruct *struct_)
{
- GIMarshallingTestsOverridesStruct *new_struct;
+ GIMarshallingTestsOverridesStruct *new_struct;
- new_struct = g_slice_new (GIMarshallingTestsOverridesStruct);
+ new_struct = g_slice_new (GIMarshallingTestsOverridesStruct);
- *new_struct = *struct_;
+ *new_struct = *struct_;
- return new_struct;
+ return new_struct;
}
static void
gi_marshalling_tests_overrides_struct_free (GIMarshallingTestsOverridesStruct *struct_)
{
- g_slice_free (GIMarshallingTestsOverridesStruct, struct_);
+ g_slice_free (GIMarshallingTestsOverridesStruct, struct_);
}
GType
gi_marshalling_tests_overrides_struct_get_type (void)
{
- static GType type = 0;
+ static GType type = 0;
- if (type == 0) {
- type = g_boxed_type_register_static ("GIMarshallingTestsOverridesStruct",
- (GBoxedCopyFunc) gi_marshalling_tests_overrides_struct_copy,
- (GBoxedFreeFunc) gi_marshalling_tests_overrides_struct_free);
+ if (type == 0)
+ {
+ type =
+ g_boxed_type_register_static ("GIMarshallingTestsOverridesStruct",
+ (GBoxedCopyFunc)
+ gi_marshalling_tests_overrides_struct_copy,
+ (GBoxedFreeFunc) gi_marshalling_tests_overrides_struct_free);
}
- return type;
+ return type;
}
GIMarshallingTestsOverridesStruct *
gi_marshalling_tests_overrides_struct_new (void)
{
- return g_slice_new (GIMarshallingTestsOverridesStruct);
+ return g_slice_new (GIMarshallingTestsOverridesStruct);
}
-glong
-gi_marshalling_tests_overrides_struct_method (GIMarshallingTestsOverridesStruct *struct_)
+glong gi_marshalling_tests_overrides_struct_method (GIMarshallingTestsOverridesStruct *struct_)
{
- return 42;
+ return 42;
}
@@ -4495,7 +4931,7 @@ gi_marshalling_tests_overrides_struct_method (GIMarshallingTestsOverridesStruct
GIMarshallingTestsOverridesStruct *
gi_marshalling_tests_overrides_struct_returnv (void)
{
- return gi_marshalling_tests_overrides_struct_new();
+ return gi_marshalling_tests_overrides_struct_new ();
}
@@ -4509,30 +4945,28 @@ gi_marshalling_tests_overrides_object_init (GIMarshallingTestsOverridesObject *o
static void
gi_marshalling_tests_overrides_object_finalize (GObject *object)
{
- G_OBJECT_CLASS (gi_marshalling_tests_overrides_object_parent_class)->finalize (object);
+ G_OBJECT_CLASS (gi_marshalling_tests_overrides_object_parent_class)->finalize (object);
}
-static void
-gi_marshalling_tests_overrides_object_class_init (GIMarshallingTestsOverridesObjectClass *klass)
+static void gi_marshalling_tests_overrides_object_class_init (GIMarshallingTestsOverridesObjectClass *klass)
{
- GObjectClass* object_class = G_OBJECT_CLASS (klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
#if 0
- GObjectClass* parent_class = G_OBJECT_CLASS (klass);
+ GObjectClass *parent_class = G_OBJECT_CLASS (klass);
#endif
- object_class->finalize = gi_marshalling_tests_overrides_object_finalize;
+ object_class->finalize = gi_marshalling_tests_overrides_object_finalize;
}
GIMarshallingTestsOverridesObject *
gi_marshalling_tests_overrides_object_new (void)
{
- return g_object_new (GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, NULL);
+ return g_object_new (GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, NULL);
}
-glong
-gi_marshalling_tests_overrides_object_method (GIMarshallingTestsOverridesObject *object)
+glong gi_marshalling_tests_overrides_object_method (GIMarshallingTestsOverridesObject *object)
{
- return 42;
+ return 42;
}
/**
@@ -4543,7 +4977,7 @@ gi_marshalling_tests_overrides_object_method (GIMarshallingTestsOverridesObject
GIMarshallingTestsOverridesObject *
gi_marshalling_tests_overrides_object_returnv (void)
{
- return g_object_new (GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, NULL);
+ return g_object_new (GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, NULL);
}
/**
@@ -4554,7 +4988,18 @@ gi_marshalling_tests_overrides_object_returnv (void)
GSList *
gi_marshalling_tests_filename_list_return (void)
{
- return NULL;
+ return NULL;
+}
+
+/**
+ * gi_marshalling_tests_param_spec_in_bool:
+ */
+void
+gi_marshalling_tests_param_spec_in_bool (const GParamSpec *param)
+{
+ g_assert (G_IS_PARAM_SPEC (param));
+ g_assert_cmpint (G_PARAM_SPEC_TYPE (param), ==, G_TYPE_BOOLEAN);
+ g_assert_cmpstr (g_param_spec_get_name ((GParamSpec *) param), ==, "mybool");
}
/**
@@ -4563,9 +5008,9 @@ gi_marshalling_tests_filename_list_return (void)
* Returns: (transfer full): a #GParamSpec
*/
GParamSpec *
-gi_marshalling_tests_param_spec_return()
+gi_marshalling_tests_param_spec_return (void)
{
- return g_param_spec_string("test-param", "test", "This is a test", "42", G_PARAM_READABLE);
+ return g_param_spec_string ("test-param", "test", "This is a test", "42", G_PARAM_READABLE);
}
/**
@@ -4573,211 +5018,317 @@ gi_marshalling_tests_param_spec_return()
* @param: (out):
*/
void
-gi_marshalling_tests_param_spec_out(GParamSpec **param)
+gi_marshalling_tests_param_spec_out (GParamSpec **param)
{
- *param = g_param_spec_string("test-param", "test", "This is a test", "42", G_PARAM_READABLE);
+ *param = g_param_spec_string ("test-param", "test", "This is a test", "42", G_PARAM_READABLE);
}
-enum {
- DUMMY_PROPERTY,
- SOME_BOOLEAN_PROPERTY,
- SOME_CHAR_PROPERTY,
- SOME_UCHAR_PROPERTY,
- SOME_INT_PROPERTY,
- SOME_UINT_PROPERTY,
- SOME_LONG_PROPERTY,
- SOME_ULONG_PROPERTY,
- SOME_INT64_PROPERTY,
- SOME_UINT64_PROPERTY,
- SOME_FLOAT_PROPERTY,
- SOME_DOUBLE_PROPERTY,
- SOME_STRV_PROPERTY,
- SOME_BOXED_STRUCT_PROPERTY,
+enum
+{
+ DUMMY_PROPERTY,
+ SOME_BOOLEAN_PROPERTY,
+ SOME_CHAR_PROPERTY,
+ SOME_UCHAR_PROPERTY,
+ SOME_INT_PROPERTY,
+ SOME_UINT_PROPERTY,
+ SOME_LONG_PROPERTY,
+ SOME_ULONG_PROPERTY,
+ SOME_INT64_PROPERTY,
+ SOME_UINT64_PROPERTY,
+ SOME_FLOAT_PROPERTY,
+ SOME_DOUBLE_PROPERTY,
+ SOME_STRV_PROPERTY,
+ SOME_BOXED_STRUCT_PROPERTY,
+ SOME_VARIANT_PROPERTY,
+ SOME_BOXED_GLIST_PROPERTY,
+ SOME_OBJECT_PROPERTY,
};
G_DEFINE_TYPE (GIMarshallingTestsPropertiesObject, gi_marshalling_tests_properties_object, G_TYPE_OBJECT);
-static void
-gi_marshalling_tests_properties_object_init (GIMarshallingTestsPropertiesObject * self)
+static void gi_marshalling_tests_properties_object_init (GIMarshallingTestsPropertiesObject *self)
{
}
static void
-gi_marshalling_tests_properties_object_finalize (GObject* obj)
+gi_marshalling_tests_properties_object_finalize (GObject *obj)
{
- G_OBJECT_CLASS (gi_marshalling_tests_properties_object_parent_class)->finalize (obj);
-}
+ GIMarshallingTestsPropertiesObject *self;
+ self = GI_MARSHALLING_TESTS_PROPERTIES_OBJECT (obj);
-static void
-gi_marshalling_tests_properties_object_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec)
-{
- GIMarshallingTestsPropertiesObject * self;
- self = GI_MARSHALLING_TESTS_PROPERTIES_OBJECT (object);
- switch (property_id) {
- case SOME_BOOLEAN_PROPERTY:
- g_value_set_boolean (value, self->some_boolean);
- break;
- case SOME_CHAR_PROPERTY:
- g_value_set_schar (value, self->some_char);
- break;
- case SOME_UCHAR_PROPERTY:
- g_value_set_uchar (value, self->some_uchar);
- break;
- case SOME_INT_PROPERTY:
- g_value_set_int (value, self->some_int);
- break;
- case SOME_UINT_PROPERTY:
- g_value_set_uint (value, self->some_uint);
- break;
- case SOME_LONG_PROPERTY:
- g_value_set_long (value, self->some_long);
- break;
- case SOME_ULONG_PROPERTY:
- g_value_set_ulong (value, self->some_ulong);
- break;
- case SOME_INT64_PROPERTY:
- g_value_set_int64 (value, self->some_int64);
- break;
- case SOME_UINT64_PROPERTY:
- g_value_set_uint64 (value, self->some_uint64);
- break;
- case SOME_FLOAT_PROPERTY:
- g_value_set_float (value, self->some_float);
- break;
- case SOME_DOUBLE_PROPERTY:
- g_value_set_double (value, self->some_double);
- break;
- case SOME_STRV_PROPERTY:
- g_value_set_boxed (value, self->some_strv);
- break;
- case SOME_BOXED_STRUCT_PROPERTY:
- g_value_set_boxed (value, self->some_boxed_struct);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
+ if (self->some_strv != NULL) {
+ g_strfreev (self->some_strv);
+ self->some_strv = NULL;
+ }
+
+ G_OBJECT_CLASS (gi_marshalling_tests_properties_object_parent_class)->finalize (obj);
}
static void
-gi_marshalling_tests_properties_object_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec)
-{
- GIMarshallingTestsPropertiesObject * self;
- self = GI_MARSHALLING_TESTS_PROPERTIES_OBJECT (object);
- switch (property_id) {
- case SOME_BOOLEAN_PROPERTY:
- self->some_boolean = g_value_get_boolean (value);
- break;
- case SOME_CHAR_PROPERTY:
- self->some_char = g_value_get_schar (value);
- break;
- case SOME_UCHAR_PROPERTY:
- self->some_uchar = g_value_get_uchar (value);
- break;
- case SOME_INT_PROPERTY:
- self->some_int = g_value_get_int (value);
- break;
- case SOME_UINT_PROPERTY:
- self->some_uint = g_value_get_uint (value);
- break;
- case SOME_LONG_PROPERTY:
- self->some_long = g_value_get_long (value);
- break;
- case SOME_ULONG_PROPERTY:
- self->some_ulong = g_value_get_ulong (value);
- break;
- case SOME_INT64_PROPERTY:
- self->some_int64 = g_value_get_int64 (value);
- break;
- case SOME_UINT64_PROPERTY:
- self->some_uint64 = g_value_get_uint64 (value);
- break;
- case SOME_FLOAT_PROPERTY:
- self->some_float = g_value_get_float (value);
- break;
- case SOME_DOUBLE_PROPERTY:
- self->some_double = g_value_get_double (value);
- break;
- case SOME_STRV_PROPERTY:
- g_strfreev (self->some_strv);
- self->some_strv = g_strdupv (g_value_get_boxed (value));
- break;
- case SOME_BOXED_STRUCT_PROPERTY:
- gi_marshalling_tests_boxed_struct_free (self->some_boxed_struct);
- self->some_boxed_struct = gi_marshalling_tests_boxed_struct_copy (g_value_get_boxed (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
+gi_marshalling_tests_properties_object_get_property (GObject *object,
+ guint property_id, GValue *value, GParamSpec *pspec)
+{
+ GIMarshallingTestsPropertiesObject *self;
+ self = GI_MARSHALLING_TESTS_PROPERTIES_OBJECT (object);
+ switch (property_id)
+ {
+ case SOME_BOOLEAN_PROPERTY:
+ g_value_set_boolean (value, self->some_boolean);
+ break;
+ case SOME_CHAR_PROPERTY:
+ g_value_set_schar (value, self->some_char);
+ break;
+ case SOME_UCHAR_PROPERTY:
+ g_value_set_uchar (value, self->some_uchar);
+ break;
+ case SOME_INT_PROPERTY:
+ g_value_set_int (value, self->some_int);
+ break;
+ case SOME_UINT_PROPERTY:
+ g_value_set_uint (value, self->some_uint);
+ break;
+ case SOME_LONG_PROPERTY:
+ g_value_set_long (value, self->some_long);
+ break;
+ case SOME_ULONG_PROPERTY:
+ g_value_set_ulong (value, self->some_ulong);
+ break;
+ case SOME_INT64_PROPERTY:
+ g_value_set_int64 (value, self->some_int64);
+ break;
+ case SOME_UINT64_PROPERTY:
+ g_value_set_uint64 (value, self->some_uint64);
+ break;
+ case SOME_FLOAT_PROPERTY:
+ g_value_set_float (value, self->some_float);
+ break;
+ case SOME_DOUBLE_PROPERTY:
+ g_value_set_double (value, self->some_double);
+ break;
+ case SOME_STRV_PROPERTY:
+ g_value_set_boxed (value, self->some_strv);
+ break;
+ case SOME_BOXED_STRUCT_PROPERTY:
+ g_value_set_boxed (value, self->some_boxed_struct);
+ break;
+ case SOME_BOXED_GLIST_PROPERTY:
+ g_value_set_boxed (value, self->some_boxed_glist);
+ break;
+ case SOME_VARIANT_PROPERTY:
+ g_value_set_variant (value, self->some_variant);
+ break;
+ case SOME_OBJECT_PROPERTY:
+ g_value_set_object (value, self->some_object);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
}
}
static void
-gi_marshalling_tests_properties_object_class_init (GIMarshallingTestsPropertiesObjectClass * klass)
-{
- GObjectClass* object_class = G_OBJECT_CLASS (klass);
-
- object_class->finalize = gi_marshalling_tests_properties_object_finalize;
- object_class->get_property = gi_marshalling_tests_properties_object_get_property;
- object_class->set_property = gi_marshalling_tests_properties_object_set_property;
-
- g_object_class_install_property (object_class, SOME_BOOLEAN_PROPERTY,
- g_param_spec_boolean ("some-boolean", "some-boolean", "some-boolean", FALSE,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_CHAR_PROPERTY,
- g_param_spec_char ("some-char", "some-char", "some-char", G_MININT8, G_MAXINT8, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_UCHAR_PROPERTY,
- g_param_spec_uchar ("some-uchar", "some-uchar", "some-uchar", 0, G_MAXUINT8, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_INT_PROPERTY,
- g_param_spec_int ("some-int", "some-int", "some-int", G_MININT, G_MAXINT, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_UINT_PROPERTY,
- g_param_spec_uint ("some-uint", "some-uint", "some-uint", 0, G_MAXUINT, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_LONG_PROPERTY,
- g_param_spec_long ("some-long", "some-long", "some-long", G_MINLONG, G_MAXLONG, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_ULONG_PROPERTY,
- g_param_spec_ulong ("some-ulong", "some-ulong", "some-ulong", 0, G_MAXULONG, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_INT64_PROPERTY,
- g_param_spec_int64 ("some-int64", "some-int64", "some-int64", G_MININT64, G_MAXINT64, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_UINT64_PROPERTY,
- g_param_spec_uint64 ("some-uint64", "some-uint64", "some-uint64", 0, G_MAXUINT64, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_FLOAT_PROPERTY,
- g_param_spec_float ("some-float", "some-float", "some-float", -1 * G_MAXFLOAT, G_MAXFLOAT, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_DOUBLE_PROPERTY,
- g_param_spec_double ("some-double", "some-double", "some-double", -1 * G_MAXDOUBLE, G_MAXDOUBLE, 0,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_STRV_PROPERTY,
- g_param_spec_boxed ("some-strv", "some-strv", "some-strv", G_TYPE_STRV,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property (object_class, SOME_BOXED_STRUCT_PROPERTY,
- g_param_spec_boxed ("some-boxed-struct", "some-boxed-struct", "some-boxed-struct",
- gi_marshalling_tests_boxed_struct_get_type(),
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+gi_marshalling_tests_properties_object_set_property (GObject *object,
+ guint property_id, const GValue *value, GParamSpec *pspec)
+{
+ GIMarshallingTestsPropertiesObject *self;
+ self = GI_MARSHALLING_TESTS_PROPERTIES_OBJECT (object);
+ switch (property_id)
+ {
+ case SOME_BOOLEAN_PROPERTY:
+ self->some_boolean = g_value_get_boolean (value);
+ break;
+ case SOME_CHAR_PROPERTY:
+ self->some_char = g_value_get_schar (value);
+ break;
+ case SOME_UCHAR_PROPERTY:
+ self->some_uchar = g_value_get_uchar (value);
+ break;
+ case SOME_INT_PROPERTY:
+ self->some_int = g_value_get_int (value);
+ break;
+ case SOME_UINT_PROPERTY:
+ self->some_uint = g_value_get_uint (value);
+ break;
+ case SOME_LONG_PROPERTY:
+ self->some_long = g_value_get_long (value);
+ break;
+ case SOME_ULONG_PROPERTY:
+ self->some_ulong = g_value_get_ulong (value);
+ break;
+ case SOME_INT64_PROPERTY:
+ self->some_int64 = g_value_get_int64 (value);
+ break;
+ case SOME_UINT64_PROPERTY:
+ self->some_uint64 = g_value_get_uint64 (value);
+ break;
+ case SOME_FLOAT_PROPERTY:
+ self->some_float = g_value_get_float (value);
+ break;
+ case SOME_DOUBLE_PROPERTY:
+ self->some_double = g_value_get_double (value);
+ break;
+ case SOME_STRV_PROPERTY:
+ g_strfreev (self->some_strv);
+ self->some_strv = g_strdupv (g_value_get_boxed (value));
+ break;
+ case SOME_BOXED_STRUCT_PROPERTY:
+ gi_marshalling_tests_boxed_struct_free (self->some_boxed_struct);
+ self->some_boxed_struct = gi_marshalling_tests_boxed_struct_copy (g_value_get_boxed (value));
+ break;
+ case SOME_BOXED_GLIST_PROPERTY:
+ g_list_free (self->some_boxed_glist);
+ self->some_boxed_glist = g_list_copy (g_value_get_boxed (value));
+ break;
+ case SOME_VARIANT_PROPERTY:
+ if (self->some_variant != NULL)
+ g_variant_unref (self->some_variant);
+ self->some_variant = g_value_get_variant (value);
+ if (self->some_variant != NULL)
+ g_variant_ref (self->some_variant);
+ break;
+ case SOME_OBJECT_PROPERTY:
+ if (self->some_object != NULL)
+ g_object_unref (self->some_object);
+ self->some_object = g_value_dup_object (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
}
-GIMarshallingTestsPropertiesObject*
+static void gi_marshalling_tests_properties_object_class_init (GIMarshallingTestsPropertiesObjectClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+ object_class->finalize = gi_marshalling_tests_properties_object_finalize;
+ object_class->get_property = gi_marshalling_tests_properties_object_get_property;
+ object_class->set_property = gi_marshalling_tests_properties_object_set_property;
+
+ g_object_class_install_property (object_class, SOME_BOOLEAN_PROPERTY,
+ g_param_spec_boolean ("some-boolean",
+ "some-boolean",
+ "some-boolean",
+ FALSE,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_CHAR_PROPERTY,
+ g_param_spec_char ("some-char",
+ "some-char",
+ "some-char", G_MININT8,
+ G_MAXINT8, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_UCHAR_PROPERTY,
+ g_param_spec_uchar ("some-uchar",
+ "some-uchar",
+ "some-uchar", 0,
+ G_MAXUINT8, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_INT_PROPERTY,
+ g_param_spec_int ("some-int", "some-int",
+ "some-int", G_MININT,
+ G_MAXINT, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_UINT_PROPERTY,
+ g_param_spec_uint ("some-uint",
+ "some-uint",
+ "some-uint", 0,
+ G_MAXUINT, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_LONG_PROPERTY,
+ g_param_spec_long ("some-long",
+ "some-long",
+ "some-long", G_MINLONG,
+ G_MAXLONG, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_ULONG_PROPERTY,
+ g_param_spec_ulong ("some-ulong",
+ "some-ulong",
+ "some-ulong", 0,
+ G_MAXULONG, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_INT64_PROPERTY,
+ g_param_spec_int64 ("some-int64",
+ "some-int64",
+ "some-int64",
+ G_MININT64, G_MAXINT64,
+ 0, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_UINT64_PROPERTY,
+ g_param_spec_uint64 ("some-uint64",
+ "some-uint64",
+ "some-uint64", 0,
+ G_MAXUINT64, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_FLOAT_PROPERTY,
+ g_param_spec_float ("some-float",
+ "some-float",
+ "some-float",
+ -1 * G_MAXFLOAT,
+ G_MAXFLOAT, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_DOUBLE_PROPERTY,
+ g_param_spec_double ("some-double",
+ "some-double",
+ "some-double",
+ -1 * G_MAXDOUBLE,
+ G_MAXDOUBLE, 0,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_STRV_PROPERTY,
+ g_param_spec_boxed ("some-strv",
+ "some-strv",
+ "some-strv",
+ G_TYPE_STRV,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_BOXED_STRUCT_PROPERTY,
+ g_param_spec_boxed ("some-boxed-struct",
+ "some-boxed-struct",
+ "some-boxed-struct",
+ gi_marshalling_tests_boxed_struct_get_type
+ (), G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ /**
+ * GIMarshallingTestsPropertiesObject:some-boxed-glist:
+ *
+ * Type: GLib.List(gint)
+ * Transfer: none
+ */
+ g_object_class_install_property (object_class, SOME_BOXED_GLIST_PROPERTY,
+ g_param_spec_boxed ("some-boxed-glist",
+ "some-boxed-glist",
+ "some-boxed-glist",
+ gi_marshalling_tests_boxed_glist_get_type
+ (), G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_VARIANT_PROPERTY,
+ g_param_spec_variant ("some-variant",
+ "some-variant",
+ "some-variant",
+ G_VARIANT_TYPE_ANY,
+ NULL,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property (object_class, SOME_OBJECT_PROPERTY,
+ g_param_spec_object ("some-object",
+ "some-object",
+ "some-object",
+ G_TYPE_OBJECT,
+ G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+}
+
+GIMarshallingTestsPropertiesObject *
gi_marshalling_tests_properties_object_new (void)
{
- return g_object_new (GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, NULL);
+ return g_object_new (GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, NULL);
}
diff --git a/tests/gimarshallingtests.h b/tests/gimarshallingtests.h
index 35bd9168..3b436f0c 100644
--- a/tests/gimarshallingtests.h
+++ b/tests/gimarshallingtests.h
@@ -21,14 +21,14 @@ typedef struct _GIMarshallingTestsBoxedStruct GIMarshallingTestsBoxedStruct;
gboolean gi_marshalling_tests_boolean_return_true (void);
gboolean gi_marshalling_tests_boolean_return_false (void);
-void gi_marshalling_tests_boolean_in_true (gboolean bool_);
-void gi_marshalling_tests_boolean_in_false (gboolean bool_);
+void gi_marshalling_tests_boolean_in_true (gboolean v);
+void gi_marshalling_tests_boolean_in_false (gboolean v);
-void gi_marshalling_tests_boolean_out_true (gboolean *bool_);
-void gi_marshalling_tests_boolean_out_false (gboolean *bool_);
+void gi_marshalling_tests_boolean_out_true (gboolean *v);
+void gi_marshalling_tests_boolean_out_false (gboolean *v);
-void gi_marshalling_tests_boolean_inout_true_false (gboolean *bool_);
-void gi_marshalling_tests_boolean_inout_false_true (gboolean *bool_);
+void gi_marshalling_tests_boolean_inout_true_false (gboolean *v);
+void gi_marshalling_tests_boolean_inout_false_true (gboolean *v);
/* Integers */
@@ -36,85 +36,85 @@ void gi_marshalling_tests_boolean_inout_false_true (gboolean *bool_);
gint8 gi_marshalling_tests_int8_return_max (void);
gint8 gi_marshalling_tests_int8_return_min (void);
-void gi_marshalling_tests_int8_in_max (gint8 int8);
-void gi_marshalling_tests_int8_in_min (gint8 int8);
+void gi_marshalling_tests_int8_in_max (gint8 v);
+void gi_marshalling_tests_int8_in_min (gint8 v);
-void gi_marshalling_tests_int8_out_max (gint8 *int8);
-void gi_marshalling_tests_int8_out_min (gint8 *int8);
+void gi_marshalling_tests_int8_out_max (gint8 *v);
+void gi_marshalling_tests_int8_out_min (gint8 *v);
-void gi_marshalling_tests_int8_inout_max_min (gint8 *int8);
-void gi_marshalling_tests_int8_inout_min_max (gint8 *int8);
+void gi_marshalling_tests_int8_inout_max_min (gint8 *v);
+void gi_marshalling_tests_int8_inout_min_max (gint8 *v);
guint8 gi_marshalling_tests_uint8_return (void);
-void gi_marshalling_tests_uint8_in (guint8 uint8);
+void gi_marshalling_tests_uint8_in (guint8 v);
-void gi_marshalling_tests_uint8_out (guint8 *uint8);
-void gi_marshalling_tests_uint8_inout (guint8 *uint8);
+void gi_marshalling_tests_uint8_out (guint8 *v);
+void gi_marshalling_tests_uint8_inout (guint8 *v);
gint16 gi_marshalling_tests_int16_return_max (void);
gint16 gi_marshalling_tests_int16_return_min (void);
-void gi_marshalling_tests_int16_in_max (gint16 int16);
-void gi_marshalling_tests_int16_in_min (gint16 int16);
+void gi_marshalling_tests_int16_in_max (gint16 v);
+void gi_marshalling_tests_int16_in_min (gint16 v);
-void gi_marshalling_tests_int16_out_max (gint16 *int16);
-void gi_marshalling_tests_int16_out_min (gint16 *int16);
+void gi_marshalling_tests_int16_out_max (gint16 *v);
+void gi_marshalling_tests_int16_out_min (gint16 *v);
-void gi_marshalling_tests_int16_inout_max_min (gint16 *int16);
-void gi_marshalling_tests_int16_inout_min_max (gint16 *int16);
+void gi_marshalling_tests_int16_inout_max_min (gint16 *v);
+void gi_marshalling_tests_int16_inout_min_max (gint16 *v);
guint16 gi_marshalling_tests_uint16_return (void);
-void gi_marshalling_tests_uint16_in (guint16 uint16);
+void gi_marshalling_tests_uint16_in (guint16 v);
-void gi_marshalling_tests_uint16_out (guint16 *uint16);
-void gi_marshalling_tests_uint16_inout (guint16 *uint16);
+void gi_marshalling_tests_uint16_out (guint16 *v);
+void gi_marshalling_tests_uint16_inout (guint16 *v);
gint32 gi_marshalling_tests_int32_return_max (void);
gint32 gi_marshalling_tests_int32_return_min (void);
-void gi_marshalling_tests_int32_in_max (gint32 int32);
-void gi_marshalling_tests_int32_in_min (gint32 int32);
+void gi_marshalling_tests_int32_in_max (gint32 v);
+void gi_marshalling_tests_int32_in_min (gint32 v);
-void gi_marshalling_tests_int32_out_max (gint32 *int32);
-void gi_marshalling_tests_int32_out_min (gint32 *int32);
+void gi_marshalling_tests_int32_out_max (gint32 *v);
+void gi_marshalling_tests_int32_out_min (gint32 *v);
-void gi_marshalling_tests_int32_inout_max_min (gint32 *int32);
-void gi_marshalling_tests_int32_inout_min_max (gint32 *int32);
+void gi_marshalling_tests_int32_inout_max_min (gint32 *v);
+void gi_marshalling_tests_int32_inout_min_max (gint32 *v);
guint32 gi_marshalling_tests_uint32_return (void);
-void gi_marshalling_tests_uint32_in (guint32 uint32);
+void gi_marshalling_tests_uint32_in (guint32 v);
-void gi_marshalling_tests_uint32_out (guint32 *uint32);
-void gi_marshalling_tests_uint32_inout (guint32 *uint32);
+void gi_marshalling_tests_uint32_out (guint32 *v);
+void gi_marshalling_tests_uint32_inout (guint32 *v);
gint64 gi_marshalling_tests_int64_return_max (void);
gint64 gi_marshalling_tests_int64_return_min (void);
-void gi_marshalling_tests_int64_in_max (gint64 int64);
-void gi_marshalling_tests_int64_in_min (gint64 int64);
+void gi_marshalling_tests_int64_in_max (gint64 v);
+void gi_marshalling_tests_int64_in_min (gint64 v);
-void gi_marshalling_tests_int64_out_max (gint64 *int64);
-void gi_marshalling_tests_int64_out_min (gint64 *int64);
+void gi_marshalling_tests_int64_out_max (gint64 *v);
+void gi_marshalling_tests_int64_out_min (gint64 *v);
-void gi_marshalling_tests_int64_inout_max_min (gint64 *int64);
-void gi_marshalling_tests_int64_inout_min_max (gint64 *int64);
+void gi_marshalling_tests_int64_inout_max_min (gint64 *v);
+void gi_marshalling_tests_int64_inout_min_max (gint64 *v);
guint64 gi_marshalling_tests_uint64_return (void);
-void gi_marshalling_tests_uint64_in (guint64 uint64);
+void gi_marshalling_tests_uint64_in (guint64 v);
-void gi_marshalling_tests_uint64_out (guint64 *uint64);
-void gi_marshalling_tests_uint64_inout (guint64 *uint64);
+void gi_marshalling_tests_uint64_out (guint64 *v);
+void gi_marshalling_tests_uint64_inout (guint64 *v);
gshort gi_marshalling_tests_short_return_max (void);
@@ -205,31 +205,31 @@ void gi_marshalling_tests_size_inout (gsize *size);
gfloat gi_marshalling_tests_float_return (void);
-void gi_marshalling_tests_float_in (gfloat float_);
+void gi_marshalling_tests_float_in (gfloat v);
-void gi_marshalling_tests_float_out (gfloat *float_);
+void gi_marshalling_tests_float_out (gfloat *v);
-void gi_marshalling_tests_float_inout (gfloat *float_);
+void gi_marshalling_tests_float_inout (gfloat *v);
gdouble gi_marshalling_tests_double_return (void);
-void gi_marshalling_tests_double_in (gdouble double_);
+void gi_marshalling_tests_double_in (gdouble v);
-void gi_marshalling_tests_double_out (gdouble *double_);
+void gi_marshalling_tests_double_out (gdouble *v);
-void gi_marshalling_tests_double_inout (gdouble *double_);
+void gi_marshalling_tests_double_inout (gdouble *v);
/* Timestamps */
time_t gi_marshalling_tests_time_t_return (void);
-void gi_marshalling_tests_time_t_in (time_t time_t_);
+void gi_marshalling_tests_time_t_in (time_t v);
-void gi_marshalling_tests_time_t_out (time_t *time_t_);
+void gi_marshalling_tests_time_t_out (time_t *v);
-void gi_marshalling_tests_time_t_inout (time_t *time_t_);
+void gi_marshalling_tests_time_t_inout (time_t *v);
/* GType */
@@ -267,6 +267,10 @@ void gi_marshalling_tests_utf8_full_inout (gchar **utf8);
GSList *gi_marshalling_tests_filename_list_return (void);
+void gi_marshalling_tests_utf8_as_uint8array_in (const guint8 *array,
+ gsize len);
+
+
/* Enum */
typedef enum
@@ -284,11 +288,11 @@ typedef enum
GIMarshallingTestsEnum gi_marshalling_tests_enum_returnv (void);
-void gi_marshalling_tests_enum_in (GIMarshallingTestsEnum enum_);
+void gi_marshalling_tests_enum_in (GIMarshallingTestsEnum v);
-void gi_marshalling_tests_enum_out (GIMarshallingTestsEnum *enum_);
+void gi_marshalling_tests_enum_out (GIMarshallingTestsEnum *v);
-void gi_marshalling_tests_enum_inout (GIMarshallingTestsEnum *enum_);
+void gi_marshalling_tests_enum_inout (GIMarshallingTestsEnum *v);
/* GEnum */
@@ -305,11 +309,11 @@ GType gi_marshalling_tests_genum_get_type (void) G_GNUC_CONST;
GIMarshallingTestsGEnum gi_marshalling_tests_genum_returnv (void);
-void gi_marshalling_tests_genum_in (GIMarshallingTestsGEnum enum_);
+void gi_marshalling_tests_genum_in (GIMarshallingTestsGEnum v);
-void gi_marshalling_tests_genum_out (GIMarshallingTestsGEnum *enum_);
+void gi_marshalling_tests_genum_out (GIMarshallingTestsGEnum *v);
-void gi_marshalling_tests_genum_inout (GIMarshallingTestsGEnum *enum_);
+void gi_marshalling_tests_genum_inout (GIMarshallingTestsGEnum *v);
/* GFlags */
@@ -329,12 +333,12 @@ GType gi_marshalling_tests_flags_get_type (void) G_GNUC_CONST;
GIMarshallingTestsFlags gi_marshalling_tests_flags_returnv (void);
-void gi_marshalling_tests_flags_in (GIMarshallingTestsFlags flags_);
-void gi_marshalling_tests_flags_in_zero (GIMarshallingTestsFlags flags);
+void gi_marshalling_tests_flags_in (GIMarshallingTestsFlags v);
+void gi_marshalling_tests_flags_in_zero (GIMarshallingTestsFlags v);
-void gi_marshalling_tests_flags_out (GIMarshallingTestsFlags *flags_);
+void gi_marshalling_tests_flags_out (GIMarshallingTestsFlags *v);
-void gi_marshalling_tests_flags_inout (GIMarshallingTestsFlags *flags_);
+void gi_marshalling_tests_flags_inout (GIMarshallingTestsFlags *v);
/* Flags with no GType */
@@ -350,12 +354,12 @@ typedef enum
GIMarshallingTestsNoTypeFlags gi_marshalling_tests_no_type_flags_returnv (void);
-void gi_marshalling_tests_no_type_flags_in (GIMarshallingTestsNoTypeFlags flags_);
-void gi_marshalling_tests_no_type_flags_in_zero (GIMarshallingTestsNoTypeFlags flags);
+void gi_marshalling_tests_no_type_flags_in (GIMarshallingTestsNoTypeFlags v);
+void gi_marshalling_tests_no_type_flags_in_zero (GIMarshallingTestsNoTypeFlags v);
-void gi_marshalling_tests_no_type_flags_out (GIMarshallingTestsNoTypeFlags *flags_);
+void gi_marshalling_tests_no_type_flags_out (GIMarshallingTestsNoTypeFlags *v);
-void gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *flags_);
+void gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *v);
/* Arrays */
@@ -385,6 +389,7 @@ void gi_marshalling_tests_array_in_len_zero_terminated (const gint *ints, gint l
void gi_marshalling_tests_array_string_in (const gchar **strings, gint length);
void gi_marshalling_tests_array_uint8_in (const guint8 *chars, gint length);
void gi_marshalling_tests_array_struct_in (GIMarshallingTestsBoxedStruct **structs, gint length);
+void gi_marshalling_tests_array_struct_value_in (GIMarshallingTestsBoxedStruct *structs, gint length);
void gi_marshalling_tests_array_struct_take_in (GIMarshallingTestsBoxedStruct **structs, gint length);
void gi_marshalling_tests_array_simple_struct_in (GIMarshallingTestsSimpleStruct *structs, gint length);
void gi_marshalling_tests_multi_array_key_value_in (gint length, const gchar **keys, const GValue *values);
@@ -434,6 +439,7 @@ void gi_marshalling_tests_garray_utf8_none_in (GArray *array_);
void gi_marshalling_tests_garray_utf8_none_out (GArray **array_);
void gi_marshalling_tests_garray_utf8_container_out (GArray **array_);
void gi_marshalling_tests_garray_utf8_full_out (GArray **array_);
+void gi_marshalling_tests_garray_utf8_full_out_caller_allocated (GArray *array_);
void gi_marshalling_tests_garray_utf8_none_inout (GArray **array_);
void gi_marshalling_tests_garray_utf8_container_inout (GArray **array_);
@@ -457,7 +463,12 @@ void gi_marshalling_tests_gptrarray_utf8_full_inout (GPtrArray **parray_);
/* GByteArray */
GByteArray *gi_marshalling_tests_bytearray_full_return (void);
-void gi_marshalling_tests_bytearray_none_in (GByteArray* array_);
+void gi_marshalling_tests_bytearray_none_in (GByteArray* v);
+
+/* GBytes */
+
+GBytes *gi_marshalling_tests_gbytes_full_return (void);
+void gi_marshalling_tests_gbytes_none_in (GBytes* v);
/* GStrv */
@@ -534,6 +545,7 @@ GValue *gi_marshalling_tests_gvalue_return (void);
void gi_marshalling_tests_gvalue_in (GValue *value);
void gi_marshalling_tests_gvalue_int64_in (GValue *value);
void gi_marshalling_tests_gvalue_in_with_type (GValue *value, GType type);
+void gi_marshalling_tests_gvalue_in_with_modification (GValue *value);
void gi_marshalling_tests_gvalue_in_enum (GValue *value);
@@ -562,7 +574,7 @@ GClosure *gi_marshalling_tests_gclosure_return (void);
/**
* GIMarshallingTestsCallbackReturnValueOnly:
*/
-typedef glong (* GIMarshallingTestsCallbackReturnValueOnly) ();
+typedef glong (* GIMarshallingTestsCallbackReturnValueOnly) (void);
glong gi_marshalling_tests_callback_return_value_only (GIMarshallingTestsCallbackReturnValueOnly callback);
@@ -645,6 +657,7 @@ void gi_marshalling_tests_pointer_struct_inv (GIMarshallingTestsPointerStruct *s
struct _GIMarshallingTestsBoxedStruct {
glong long_;
+ gchar *string_;
GStrv g_strv;
};
@@ -707,6 +720,26 @@ struct _GIMarshallingTestsObjectClass
void (* method_int8_out) (GIMarshallingTestsObject *self, gint8 *out);
/**
+ * GIMarshallingTestsObjectClass::method_int8_arg_and_out_caller:
+ * @out: (out caller-allocates):
+ */
+ void (* method_int8_arg_and_out_caller) (GIMarshallingTestsObject *self, gint8 arg, gint8 *out);
+
+ /**
+ * GIMarshallingTestsObjectClass::method_int8_arg_and_out_callee:
+ * @out: (out):
+ */
+ void (* method_int8_arg_and_out_callee) (GIMarshallingTestsObject *self, gint8 arg, gint8 **out);
+
+ /**
+ * GIMarshallingTestsObjectClass::method_str_arg_out_ret:
+ * @out: (out caller-allocates):
+ *
+ * Returns: (transfer none)
+ */
+ const gchar* (* method_str_arg_out_ret) (GIMarshallingTestsObject *self, const gchar* arg, guint *out);
+
+ /**
* GIMarshallingTestsObjectClass::method_with_default_implementation:
* @in: (in):
*/
@@ -747,6 +780,12 @@ struct _GIMarshallingTestsObjectClass
void (* vfunc_caller_allocated_out_parameter) (GIMarshallingTestsObject *self, GValue *a);
/**
+ * GIMarshallingTestsObjectClass::vfunc_array_out_parameter:
+ * @a: (out) (array zero-terminated=1):
+ */
+ void (* vfunc_array_out_parameter) (GIMarshallingTestsObject *self, gfloat **a);
+
+ /**
* GIMarshallingTestsObjectClass::vfunc_return_value_and_one_out_parameter:
* @a: (out):
*/
@@ -765,6 +804,55 @@ struct _GIMarshallingTestsObjectClass
* @error: A #GError
*/
gboolean (*vfunc_meth_with_err) (GIMarshallingTestsObject *object, gint x, GError **error);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_return_enum:
+ */
+ GIMarshallingTestsEnum (* vfunc_return_enum) (GIMarshallingTestsObject *self);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_out_enum:
+ * @_enum: (out):
+ */
+ void (* vfunc_out_enum) (GIMarshallingTestsObject *self, GIMarshallingTestsEnum *_enum);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_return_object_transfer_none:
+ *
+ * Returns: (transfer none)
+ */
+ GObject* (* vfunc_return_object_transfer_none) (GIMarshallingTestsObject *self);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_return_object_transfer_full:
+ *
+ * Returns: (transfer full)
+ */
+ GObject* (* vfunc_return_object_transfer_full) (GIMarshallingTestsObject *self);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_out_object_transfer_none:
+ * @object: (out) (transfer none):
+ */
+ void (* vfunc_out_object_transfer_none) (GIMarshallingTestsObject *self, GObject **object);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_out_object_transfer_full:
+ * @object: (out) (transfer full):
+ */
+ void (* vfunc_out_object_transfer_full) (GIMarshallingTestsObject *self, GObject **object);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_in_object_transfer_none:
+ * @object: (in) (transfer none):
+ */
+ void (* vfunc_in_object_transfer_none) (GIMarshallingTestsObject *self, GObject *object);
+
+ /**
+ * GIMarshallingTestsObjectClass::vfunc_in_object_transfer_full:
+ * @object: (in) (transfer full):
+ */
+ void (* vfunc_in_object_transfer_full) (GIMarshallingTestsObject *self, GObject *object);
};
struct _GIMarshallingTestsObject
@@ -787,6 +875,9 @@ const gint *gi_marshalling_tests_object_method_array_return (GIMarshallingTestsO
void gi_marshalling_tests_object_method_int8_in (GIMarshallingTestsObject *object, gint8 in);
void gi_marshalling_tests_object_method_int8_out (GIMarshallingTestsObject *object, gint8 *out);
+void gi_marshalling_tests_object_method_int8_arg_and_out_caller (GIMarshallingTestsObject *object, gint8 arg, gint8 *out);
+void gi_marshalling_tests_object_method_int8_arg_and_out_callee (GIMarshallingTestsObject *object, gint8 arg, gint8 **out);
+const gchar* gi_marshalling_tests_object_method_str_arg_out_ret (GIMarshallingTestsObject *object, const gchar* arg, guint *out);
void gi_marshalling_tests_object_method_with_default_implementation (GIMarshallingTestsObject *object, gint8 in);
void gi_marshalling_tests_object_method_variant_array_in (GIMarshallingTestsObject *object, GVariant **in, gsize n_in);
@@ -794,10 +885,21 @@ glong gi_marshalling_tests_object_vfunc_return_value_only (GIMarshallingTestsObj
void gi_marshalling_tests_object_vfunc_one_out_parameter (GIMarshallingTestsObject *self, gfloat *a);
void gi_marshalling_tests_object_vfunc_multiple_out_parameters (GIMarshallingTestsObject *self, gfloat *a, gfloat *b);
void gi_marshalling_tests_object_vfunc_caller_allocated_out_parameter (GIMarshallingTestsObject *self, GValue *a);
+void gi_marshalling_tests_object_vfunc_array_out_parameter (GIMarshallingTestsObject *self, gfloat **a);
glong gi_marshalling_tests_object_vfunc_return_value_and_one_out_parameter (GIMarshallingTestsObject *self, glong *a);
glong gi_marshalling_tests_object_vfunc_return_value_and_multiple_out_parameters (GIMarshallingTestsObject *self, glong *a, glong *b);
gboolean gi_marshalling_tests_object_vfunc_meth_with_error (GIMarshallingTestsObject *object, gint x, GError **error);
+GIMarshallingTestsEnum gi_marshalling_tests_object_vfunc_return_enum (GIMarshallingTestsObject *self);
+void gi_marshalling_tests_object_vfunc_out_enum (GIMarshallingTestsObject *self, GIMarshallingTestsEnum *_enum);
+
+void gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_none (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
+void gi_marshalling_tests_object_get_ref_info_for_vfunc_return_object_transfer_full (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
+void gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_none (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
+void gi_marshalling_tests_object_get_ref_info_for_vfunc_out_object_transfer_full (GIMarshallingTestsObject *self, guint *ref_count, gboolean *is_floating);
+void gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_none (GIMarshallingTestsObject *self, GType type, guint *ref_count, gboolean *is_floating);
+void gi_marshalling_tests_object_get_ref_info_for_vfunc_in_object_transfer_full (GIMarshallingTestsObject *self, GType type, guint *ref_count, gboolean *is_floating);
+
GIMarshallingTestsObject *gi_marshalling_tests_object_none_return (void);
GIMarshallingTestsObject *gi_marshalling_tests_object_full_return (void);
@@ -809,7 +911,6 @@ void gi_marshalling_tests_object_full_out (GIMarshallingTestsObject **object);
void gi_marshalling_tests_object_none_inout (GIMarshallingTestsObject **object);
void gi_marshalling_tests_object_full_inout (GIMarshallingTestsObject **object);
-void gi_marshalling_tests_object_inout_same (GIMarshallingTestsObject **object);
void gi_marshalling_tests_object_int8_in (GIMarshallingTestsObject *object, gint8 in);
void gi_marshalling_tests_object_int8_out (GIMarshallingTestsObject *object, gint8 *out);
@@ -927,7 +1028,7 @@ typedef struct _GIMarshallingTestsInterface3Iface GIMarshallingTestsInterface3If
struct _GIMarshallingTestsInterface3Iface {
GTypeInterface base_iface;
-
+
/**
* GIMarshallingTestsInterface3::test_variant_array_in:
* @in: (in) (array length=n_in):
@@ -961,7 +1062,8 @@ void gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **d
GError *gi_marshalling_tests_gerror_return(void);
/* GParamSpec */
-GParamSpec *gi_marshalling_tests_param_spec_return();
+void gi_marshalling_tests_param_spec_in_bool(const GParamSpec *param);
+GParamSpec *gi_marshalling_tests_param_spec_return (void);
void gi_marshalling_tests_param_spec_out(GParamSpec **param);
/* Overrides */
@@ -1039,7 +1141,10 @@ struct _GIMarshallingTestsPropertiesObject {
gfloat some_float;
gdouble some_double;
gchar **some_strv;
- GIMarshallingTestsBoxedStruct* some_boxed_struct;
+ GIMarshallingTestsBoxedStruct* some_boxed_struct;
+ GList* some_boxed_glist;
+ GVariant *some_variant;
+ GObject *some_object;
};
struct _GIMarshallingTestsPropertiesObjectClass {
diff --git a/tests/offsets/gen-gitestoffsets b/tests/offsets/gen-gitestoffsets
index 60efa439..77351060 100755
--- a/tests/offsets/gen-gitestoffsets
+++ b/tests/offsets/gen-gitestoffsets
@@ -209,8 +209,6 @@ output({}, r'''
| if (argc != 3)
| g_error ("Usage: gitestoffsets COMPILED_OFFSETS_FILE INTROSPECTED_OFFSETS_FILE");
|
-| g_type_init ();
-|
| repository = g_irepository_get_default ();
| if (!g_irepository_require (repository, namespace, version, 0, &error))
| g_error ("Failed to load %%s-%%s.typelib: %%s", namespace, version, error->message);
diff --git a/tests/repository/Makefile.am b/tests/repository/Makefile.am
index ca2efe36..96afb891 100644
--- a/tests/repository/Makefile.am
+++ b/tests/repository/Makefile.am
@@ -17,5 +17,8 @@ gitypelibtest_CPPFLAGS = $(GIREPO_CFLAGS) -I$(top_srcdir)/girepository
gitypelibtest_LDADD = $(top_builddir)/libgirepository-1.0.la $(GIREPO_LIBS)
TESTS = gitestrepo gitestthrows gitypelibtest
-TESTS_ENVIRONMENT=env GI_TYPELIB_PATH=$(top_builddir):$(top_builddir)/gir:$(top_builddir)/tests:$(top_builddir)/tests/scanner: \
- XDG_DATA_DIRS="$(top_srcdir)/gir:$(XDG_DATA_DIRS)" $(DEBUG)
+TESTS_ENVIRONMENT=env GI_TYPELIB_PATH="$(top_builddir):$(top_builddir)/gir:$(top_builddir)/tests:$(top_builddir)/tests/scanner" \
+ XDG_DATA_DIRS="$(top_srcdir)/gir:$(XDG_DATA_DIRS)" \
+ PATH="$(top_builddir)/tests/scanner/.libs:$(PATH)" \
+ LD_LIBRARY_PATH="$(top_builddir)/tests/scanner/.libs:$(LD_LIBRARY_PATH)" \
+ $(DEBUG)
diff --git a/tests/repository/gitestrepo.c b/tests/repository/gitestrepo.c
index 05ea5d94..b122a63d 100644
--- a/tests/repository/gitestrepo.c
+++ b/tests/repository/gitestrepo.c
@@ -48,8 +48,6 @@ main(int argc, char **argv)
GType gtype;
const char *prefix;
- g_type_init ();
-
repo = g_irepository_get_default ();
ret = g_irepository_require (repo, "Gio", NULL, 0, &error);
diff --git a/tests/repository/gitestthrows.c b/tests/repository/gitestthrows.c
index cce06849..a045a817 100644
--- a/tests/repository/gitestthrows.c
+++ b/tests/repository/gitestthrows.c
@@ -16,8 +16,6 @@ main(int argc, char **argv)
GError *error;
gboolean invoke_return;
- g_type_init ();
-
repo = g_irepository_get_default ();
error = NULL;
diff --git a/tests/repository/gitypelibtest.c b/tests/repository/gitypelibtest.c
index 7068ef3d..565c95c3 100644
--- a/tests/repository/gitypelibtest.c
+++ b/tests/repository/gitypelibtest.c
@@ -1,5 +1,5 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
+/* -*- Mode: C; c-basic-offset: 2 -*-
+ * vim: shiftwidth=2 expandtab
*/
#include "girepository.h"
@@ -9,191 +9,289 @@
#include <unistd.h>
static void
-test_enum_and_flags_cidentifier(GIRepository *repo)
+test_enum_and_flags_cidentifier (GIRepository * repo)
{
- GITypelib *ret;
- GError *error = NULL;
- gint n_infos, i;
+ GITypelib *ret;
+ GError *error = NULL;
+ gint n_infos, i;
- ret = g_irepository_require (repo, "GIMarshallingTests", NULL, 0, &error);
- if (!ret)
- g_error ("%s", error->message);
+ ret = g_irepository_require (repo, "GIMarshallingTests", NULL, 0, &error);
+ if (!ret)
+ g_error ("%s", error->message);
- n_infos = g_irepository_get_n_infos (repo, "GIMarshallingTests");
+ n_infos = g_irepository_get_n_infos (repo, "GIMarshallingTests");
- for (i = 0; i < n_infos; i++) {
- GIBaseInfo *info;
+ for (i = 0; i < n_infos; i++)
+ {
+ GIBaseInfo *info;
- info = g_irepository_get_info (repo, "GIMarshallingTests", i);
+ info = g_irepository_get_info (repo, "GIMarshallingTests", i);
- /* both GI_INFO_TYPE_ENUM and GI_INFO_TYPE_FLAGS use GIEnumInfo */
- if (GI_IS_ENUM_INFO (info)) {
- gint n_values, j;
+ /* both GI_INFO_TYPE_ENUM and GI_INFO_TYPE_FLAGS use GIEnumInfo */
+ if (GI_IS_ENUM_INFO (info))
+ {
+ gint n_values, j;
- n_values = g_enum_info_get_n_values ((GIEnumInfo *) info);
- for (j = 0; j < n_values; j++) {
- GIValueInfo *value_info;
- const gchar *c_identifier = NULL;
+ n_values = g_enum_info_get_n_values ((GIEnumInfo *) info);
+ for (j = 0; j < n_values; j++)
+ {
+ GIValueInfo *value_info;
+ const gchar *c_identifier = NULL;
- value_info = g_enum_info_get_value ((GIEnumInfo *) info, j);
- c_identifier = g_base_info_get_attribute ((GIBaseInfo *) value_info, "c:identifier");
+ value_info = g_enum_info_get_value ((GIEnumInfo *) info, j);
+ c_identifier = g_base_info_get_attribute ((GIBaseInfo *) value_info, "c:identifier");
- if (c_identifier == NULL) {
- g_error ("Error: no 'c:identifier' attribute on GIMarshallingTests.%s.%s\n",
- g_base_info_get_name (info),
- g_base_info_get_name ((GIBaseInfo *) value_info));
+ if (c_identifier == NULL)
+ {
+ g_error
+ ("Error: no 'c:identifier' attribute on GIMarshallingTests.%s.%s\n",
+ g_base_info_get_name (info), g_base_info_get_name ((GIBaseInfo *) value_info));
}
- g_base_info_unref ((GIBaseInfo *) value_info);
+ g_base_info_unref ((GIBaseInfo *) value_info);
}
}
- g_base_info_unref (info);
+ g_base_info_unref (info);
}
}
static void
-_check_enum_methods (GIBaseInfo *info, const gchar *name, const gchar *prefix)
+_check_enum_methods (GIBaseInfo * info, const gchar * name, const gchar * prefix)
{
- gint n_methods, i;
-
- n_methods = g_enum_info_get_n_methods ((GIEnumInfo *) info);
- if (n_methods <= 0)
- g_error ("%s should have methods", name);
-
- for (i = 0; i < n_methods; i += n_methods-1) {
- GIBaseInfo *function_info;
- GIFunctionInfoFlags flags;
- const gchar *symbol;
- function_info = g_enum_info_get_method ((GIEnumInfo *) info, i);
- if (!function_info)
- g_error ("Could not find %s method nr. %d", name, i+1);
- flags = g_function_info_get_flags ((GIFunctionInfo *) function_info);
- if (flags != 0)
- g_error ("%s methods should be static", name);
- symbol = g_function_info_get_symbol ((GIFunctionInfo *) function_info);
- if (!symbol || !g_str_has_prefix (symbol, prefix))
- g_error ("Could not find valid function symbol");
- g_base_info_unref (function_info);
+ gint n_methods, i;
+
+ n_methods = g_enum_info_get_n_methods ((GIEnumInfo *) info);
+ if (n_methods <= 0)
+ g_error ("%s should have methods", name);
+
+ for (i = 0; i < n_methods; i += n_methods - 1)
+ {
+ GIBaseInfo *function_info;
+ GIFunctionInfoFlags flags;
+ const gchar *symbol;
+ function_info = g_enum_info_get_method ((GIEnumInfo *) info, i);
+ if (!function_info)
+ g_error ("Could not find %s method nr. %d", name, i + 1);
+ flags = g_function_info_get_flags ((GIFunctionInfo *) function_info);
+ if (flags != 0)
+ g_error ("%s methods should be static", name);
+ symbol = g_function_info_get_symbol ((GIFunctionInfo *) function_info);
+ if (!symbol || !g_str_has_prefix (symbol, prefix))
+ g_error ("Could not find valid function symbol");
+ g_base_info_unref (function_info);
}
}
static void
-test_enum_and_flags_static_methods(GIRepository *repo)
+test_enum_and_flags_static_methods (GIRepository * repo)
{
- GITypelib *ret;
- GError *error = NULL;
- GIBaseInfo *enum_info;
-
- ret = g_irepository_require (repo, "GIMarshallingTests", NULL, 0, &error);
- if (!ret)
- g_error ("%s", error->message);
-
- enum_info = g_irepository_find_by_name (repo, "GIMarshallingTests", "GEnum");
- if (!enum_info)
- g_error ("Could not find GIMarshallingTests.GEnum");
- _check_enum_methods (enum_info,
- "GIMarshallingTests.GEnum",
- "gi_marshalling_tests_genum_");
- g_base_info_unref (enum_info);
-
- enum_info = g_irepository_find_by_name (repo, "GIMarshallingTests", "Flags");
- if (!enum_info)
- g_error ("Could not find GIMarshallingTests.Flags");
- _check_enum_methods (enum_info,
- "GIMarshallingTests.Flags",
- "gi_marshalling_tests_flags_");
- g_base_info_unref (enum_info);
+ GITypelib *ret;
+ GError *error = NULL;
+ GIBaseInfo *enum_info;
+
+ ret = g_irepository_require (repo, "GIMarshallingTests", NULL, 0, &error);
+ if (!ret)
+ g_error ("%s", error->message);
+
+ enum_info = g_irepository_find_by_name (repo, "GIMarshallingTests", "GEnum");
+ if (!enum_info)
+ g_error ("Could not find GIMarshallingTests.GEnum");
+ _check_enum_methods (enum_info, "GIMarshallingTests.GEnum", "gi_marshalling_tests_genum_");
+ g_base_info_unref (enum_info);
+
+ enum_info = g_irepository_find_by_name (repo, "GIMarshallingTests", "Flags");
+ if (!enum_info)
+ g_error ("Could not find GIMarshallingTests.Flags");
+ _check_enum_methods (enum_info, "GIMarshallingTests.Flags", "gi_marshalling_tests_flags_");
+ g_base_info_unref (enum_info);
}
static void
-test_size_of_gvalue(GIRepository *repo)
+test_size_of_gvalue (GIRepository * repo)
{
- GIBaseInfo *struct_info;
+ GIBaseInfo *struct_info;
- struct_info = g_irepository_find_by_name (repo, "GObject", "Value");
- if (!struct_info)
- g_error ("Could not find GObject.Value");
- g_assert_cmpuint (g_struct_info_get_size (struct_info), ==, sizeof (GValue));
- g_base_info_unref (struct_info);
+ struct_info = g_irepository_find_by_name (repo, "GObject", "Value");
+ if (!struct_info)
+ g_error ("Could not find GObject.Value");
+ g_assert_cmpuint (g_struct_info_get_size (struct_info), ==, sizeof (GValue));
+ g_base_info_unref (struct_info);
}
static void
-test_is_pointer_for_struct_arg (GIRepository *repo)
+test_is_pointer_for_struct_arg (GIRepository * repo)
{
- GITypelib *ret;
- GError *error = NULL;
- GIStructInfo *variant_info;
- GIFunctionInfo *equal_info;
- GIArgInfo *arg_info;
- GITypeInfo *type_info;
-
- ret = g_irepository_require (repo, "GLib", NULL, 0, &error);
- if (!ret)
- g_error ("%s", error->message);
-
- variant_info = g_irepository_find_by_name (repo, "GLib", "Variant");
- if (!variant_info)
- g_error ("Could not find GLib.Variant");
-
- equal_info = g_struct_info_find_method (variant_info, "equal");
- if (!equal_info)
- g_error ("Could not find GLib.Variant.equal()");
-
- arg_info = g_callable_info_get_arg (equal_info, 0);
- if (!arg_info)
- g_error ("Could not find 1st arg of GLib.Variant.equal()");
-
- type_info = g_arg_info_get_type (arg_info);
- if (!type_info)
- g_error ("Could not find typeinfo of 1st arg of GLib.Variant.equal()");
-
- g_assert (g_type_info_is_pointer (type_info));
-
- g_base_info_unref (type_info);
- g_base_info_unref (arg_info);
- g_base_info_unref (equal_info);
- g_base_info_unref (variant_info);
+ GITypelib *ret;
+ GError *error = NULL;
+ GIStructInfo *variant_info;
+ GIFunctionInfo *equal_info;
+ GIArgInfo *arg_info;
+ GITypeInfo *type_info;
+
+ ret = g_irepository_require (repo, "GLib", NULL, 0, &error);
+ if (!ret)
+ g_error ("%s", error->message);
+
+ variant_info = g_irepository_find_by_name (repo, "GLib", "Variant");
+ if (!variant_info)
+ g_error ("Could not find GLib.Variant");
+
+ equal_info = g_struct_info_find_method (variant_info, "equal");
+ if (!equal_info)
+ g_error ("Could not find GLib.Variant.equal()");
+
+ arg_info = g_callable_info_get_arg (equal_info, 0);
+ if (!arg_info)
+ g_error ("Could not find 1st arg of GLib.Variant.equal()");
+
+ type_info = g_arg_info_get_type (arg_info);
+ if (!type_info)
+ g_error ("Could not find typeinfo of 1st arg of GLib.Variant.equal()");
+
+ g_assert (g_type_info_is_pointer (type_info));
+
+ g_base_info_unref (type_info);
+ g_base_info_unref (arg_info);
+ g_base_info_unref (equal_info);
+ g_base_info_unref (variant_info);
}
static void
-test_fundamental_get_ref_function_pointer (GIRepository *repo)
+test_fundamental_get_ref_function_pointer (GIRepository * repo)
{
- GIObjectInfo *info;
+ GIObjectInfo *info;
- g_assert (g_irepository_require (repo, "Regress", NULL, 0, NULL));
- info = g_irepository_find_by_name (repo, "Regress",
- "TestFundamentalObject");
- g_object_info_get_ref_function_pointer (info);
- g_base_info_unref (info);
+ g_assert (g_irepository_require (repo, "Regress", NULL, 0, NULL));
+ info = g_irepository_find_by_name (repo, "Regress", "TestFundamentalObject");
+ g_object_info_get_ref_function_pointer (info);
+ g_base_info_unref (info);
}
static void
-test_hash_with_cairo_typelib (GIRepository *repo)
+test_hash_with_cairo_typelib (GIRepository * repo)
{
- GIBaseInfo *info;
+ GIBaseInfo *info;
- g_assert (g_irepository_require (repo, "cairo", NULL, 0, NULL));
- info = g_irepository_find_by_name (repo, "cairo", "region");
- g_assert (info == NULL);
+ g_assert (g_irepository_require (repo, "cairo", NULL, 0, NULL));
+ info = g_irepository_find_by_name (repo, "cairo", "region");
+ g_assert (info == NULL);
}
-int
-main(int argc, char **argv)
+static GIPropertyInfo *
+lookup_property (GIObjectInfo * info, const gchar * name)
+{
+ gssize n_props;
+ gssize i;
+ GIPropertyInfo *property_info;
+
+ n_props = g_object_info_get_n_properties (info);
+ for (i = 0; i < n_props; i++)
+ {
+ property_info = g_object_info_get_property (info, i);
+ if (strcmp (name, g_base_info_get_name (property_info)) == 0)
+ return property_info;
+ g_base_info_unref (property_info);
+ }
+
+ return NULL;
+}
+
+static void
+test_char_types (GIRepository * repo)
{
- GIRepository *repo;
+ GITypelib *ret;
+ GError *error = NULL;
+ GIBaseInfo *prop_obj;
+ GIPropertyInfo *prop_info;
+ GITypeInfo *type_info;
+
+ ret = g_irepository_require (repo, "GIMarshallingTests", NULL, 0, &error);
+ if (!ret)
+ g_error ("%s", error->message);
+
+ prop_obj = g_irepository_find_by_name (repo, "GIMarshallingTests", "PropertiesObject");
+ g_assert (prop_obj != NULL);
+ g_assert (GI_IS_OBJECT_INFO (prop_obj));
+
+ /* unsigned char */
+ prop_info = lookup_property ((GIObjectInfo *) prop_obj, "some-uchar");
+ g_assert (prop_info != NULL);
+ type_info = g_property_info_get_type (prop_info);
+ g_assert_cmpuint (g_type_info_get_tag (type_info), ==, GI_TYPE_TAG_UINT8);
+ g_base_info_unref (type_info);
+ g_base_info_unref (prop_info);
+
+ /* signed char */
+ prop_info = lookup_property ((GIObjectInfo *) prop_obj, "some-char");
+ g_assert (prop_info != NULL);
+ type_info = g_property_info_get_type (prop_info);
+ g_assert_cmpuint (g_type_info_get_tag (type_info), ==, GI_TYPE_TAG_INT8);
+ g_base_info_unref (type_info);
+ g_base_info_unref (prop_info);
+
+ g_base_info_unref (prop_obj);
+}
- g_type_init ();
+static void
+test_signal_array_len (GIRepository * repo)
+{
+ GIObjectInfo *testobj_info;
+ GISignalInfo *sig_info;
+ GIArgInfo arg_info;
+ GITypeInfo type_info;
+ int i;
+
+ g_assert (g_irepository_require (repo, "Regress", NULL, 0, NULL));
+ testobj_info = g_irepository_find_by_name (repo, "Regress", "TestObj");
+ g_assert (testobj_info != NULL);
+
+ /* find sig-with-array-len-prop signal */
+ for (i = g_object_info_get_n_signals (testobj_info) - 1; i >= 0; --i)
+ {
+ sig_info = g_object_info_get_signal (testobj_info, i);
+ g_assert (sig_info != NULL);
+ if (strcmp (g_base_info_get_name (sig_info), "sig-with-array-len-prop") == 0)
+ break;
+ g_base_info_unref (sig_info);
+ }
+ g_assert (i >= 0);
+
+ g_assert_cmpint (g_callable_info_get_n_args (sig_info), ==, 2);
+
+ /* verify array argument */
+ g_callable_info_load_arg (sig_info, 0, &arg_info);
+ g_assert_cmpstr (g_base_info_get_name (&arg_info), ==, "arr");
+ g_arg_info_load_type (&arg_info, &type_info);
+ g_assert_cmpint (g_type_info_get_tag (&type_info), ==, GI_TYPE_TAG_ARRAY);
+ g_assert_cmpint (g_type_info_get_array_type (&type_info), ==, GI_ARRAY_TYPE_C);
+ g_assert (!g_type_info_is_zero_terminated (&type_info));
+ g_assert_cmpint (g_type_info_get_array_length (&type_info), ==, 1);
+
+ /* verify array length argument */
+ g_callable_info_load_arg (sig_info, 1, &arg_info);
+ g_assert_cmpstr (g_base_info_get_name (&arg_info), ==, "len");
+
+ g_base_info_unref (sig_info);
+ g_base_info_unref (testobj_info);
+}
+
+int
+main (int argc, char **argv)
+{
+ GIRepository *repo;
- repo = g_irepository_get_default ();
+ repo = g_irepository_get_default ();
- /* do tests */
- test_enum_and_flags_cidentifier (repo);
- test_enum_and_flags_static_methods (repo);
- test_size_of_gvalue (repo);
- test_is_pointer_for_struct_arg (repo);
- test_fundamental_get_ref_function_pointer (repo);
- test_hash_with_cairo_typelib (repo);
+ /* do tests */
+ test_enum_and_flags_cidentifier (repo);
+ test_enum_and_flags_static_methods (repo);
+ test_size_of_gvalue (repo);
+ test_is_pointer_for_struct_arg (repo);
+ test_fundamental_get_ref_function_pointer (repo);
+ test_hash_with_cairo_typelib (repo);
+ test_char_types (repo);
+ test_signal_array_len (repo);
- exit(0);
+ exit (0);
}
diff --git a/tests/scanner/Annotation-1.0-expected.gir b/tests/scanner/Annotation-1.0-expected.gir
deleted file mode 100644
index 2ea6c544..00000000
--- a/tests/scanner/Annotation-1.0-expected.gir
+++ /dev/null
@@ -1,853 +0,0 @@
-<?xml version="1.0"?>
-<!-- This file was automatically generated from C sources - DO NOT EDIT!
-To affect the contents of this file, edit the original C definitions,
-and/or use gtk-doc annotations. -->
-<repository version="1.2"
- xmlns="http://www.gtk.org/introspection/core/1.0"
- xmlns:c="http://www.gtk.org/introspection/c/1.0"
- xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="GLib" version="2.0"/>
- <include name="GObject" version="2.0"/>
- <include name="Utility" version="1.0"/>
- <package name="gobject-2.0"/>
- <c:include name="annotation.h"/>
- <namespace name="Annotation"
- version="1.0"
- shared-library="libannotation.so"
- c:identifier-prefixes="Annotation"
- c:symbol-prefixes="annotation">
- <bitfield name="Bitfield" c:type="AnnotationBitfield">
- <member name="foo" value="1" c:identifier="ANN_FLAG_FOO"/>
- <member name="bar" value="2" c:identifier="ANN_FLAG_BAR"/>
- </bitfield>
- <constant name="CALCULATED_DEFINE"
- value="100"
- c:type="ANNOTATION_CALCULATED_DEFINE">
- <type name="gint" c:type="gint"/>
- </constant>
- <constant name="CALCULATED_LARGE"
- value="10000000000UL"
- c:type="ANNOTATION_CALCULATED_LARGE">
- <type name="gint" c:type="gint"/>
- </constant>
- <constant name="CALCULATED_LARGE_DIV"
- value="1000000UL"
- c:type="ANNOTATION_CALCULATED_LARGE_DIV">
- <type name="gint" c:type="gint"/>
- </constant>
- <callback name="Callback" c:type="AnnotationCallback">
- <doc xml:whitespace="preserve">This is a callback.</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">array of ints</doc>
- <type name="gint" c:type="const gint*"/>
- </return-value>
- <parameters>
- <parameter name="in" transfer-ownership="none">
- <doc xml:whitespace="preserve">array of ints</doc>
- <type name="gint" c:type="const gint*"/>
- </parameter>
- </parameters>
- </callback>
- <callback name="ForeachFunc" c:type="AnnotationForeachFunc">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="object" transfer-ownership="none">
- <type name="Object" c:type="AnnotationObject*"/>
- </parameter>
- <parameter name="item" transfer-ownership="none">
- <type name="utf8" c:type="const char*"/>
- </parameter>
- <parameter name="user_data" transfer-ownership="none" closure="2">
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <callback name="ListCallback" c:type="AnnotationListCallback">
- <doc xml:whitespace="preserve">This is a callback taking a list.</doc>
- <return-value transfer-ownership="container">
- <doc xml:whitespace="preserve">list of strings</doc>
- <type name="GLib.List" c:type="GList*">
- <type name="utf8"/>
- </type>
- </return-value>
- <parameters>
- <parameter name="in" transfer-ownership="none">
- <doc xml:whitespace="preserve">list of strings</doc>
- <type name="GLib.List" c:type="GList*">
- <type name="utf8"/>
- </type>
- </parameter>
- </parameters>
- </callback>
- <callback name="NotifyFunc" c:type="AnnotationNotifyFunc">
- <doc xml:whitespace="preserve">This is a callback with a 'closure' argument that is not named
-'user_data' and hence has to be annotated.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none" closure="0">
- <doc xml:whitespace="preserve">The user data</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <class name="Object"
- c:symbol-prefix="object"
- c:type="AnnotationObject"
- parent="GObject.Object"
- glib:type-name="AnnotationObject"
- glib:get-type="annotation_object_get_type"
- glib:type-struct="ObjectClass">
- <attribute name="org.example.Test" value="cows"/>
- <doc xml:whitespace="preserve">This is an object used to test annotations.</doc>
- <method name="allow_none" c:identifier="annotation_object_allow_none">
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">%NULL always</doc>
- <type name="GObject.Object" c:type="GObject*"/>
- </return-value>
- <parameters>
- <parameter name="somearg" transfer-ownership="none" allow-none="1">
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- </parameters>
- </method>
- <method name="calleeowns" c:identifier="annotation_object_calleeowns">
- <doc xml:whitespace="preserve">This is a test for out arguments; GObject defaults to transfer</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="toown"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">a #GObject</doc>
- <type name="GObject.Object" c:type="GObject**"/>
- </parameter>
- </parameters>
- </method>
- <method name="calleesowns" c:identifier="annotation_object_calleesowns">
- <doc xml:whitespace="preserve">This is a test for out arguments, one transferred, other not</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="toown1"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">a #GObject</doc>
- <type name="GObject.Object" c:type="GObject**"/>
- </parameter>
- <parameter name="toown2"
- direction="out"
- caller-allocates="0"
- transfer-ownership="none">
- <doc xml:whitespace="preserve">a #GObject</doc>
- <type name="GObject.Object" c:type="GObject**"/>
- </parameter>
- </parameters>
- </method>
- <method name="compute_sum" c:identifier="annotation_object_compute_sum">
- <doc xml:whitespace="preserve">Test taking a zero-terminated array</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="nums" transfer-ownership="none">
- <doc xml:whitespace="preserve">Sequence of numbers</doc>
- <array zero-terminated="0" c:type="int*">
- <type name="gint" c:type="int"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="compute_sum_n"
- c:identifier="annotation_object_compute_sum_n">
- <doc xml:whitespace="preserve">Test taking an array with length parameter</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="nums" transfer-ownership="none">
- <doc xml:whitespace="preserve">Sequence of numbers that are zero-terminated</doc>
- <array length="1" zero-terminated="0" c:type="int*">
- <type name="gint" c:type="int"/>
- </array>
- </parameter>
- <parameter name="n_nums" transfer-ownership="none">
- <doc xml:whitespace="preserve">Length of number array</doc>
- <type name="gint" c:type="int"/>
- </parameter>
- </parameters>
- </method>
- <method name="compute_sum_nz"
- c:identifier="annotation_object_compute_sum_nz">
- <doc xml:whitespace="preserve">Test taking a zero-terminated array with length parameter</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="nums" transfer-ownership="none">
- <doc xml:whitespace="preserve">Sequence of numbers that are zero-terminated</doc>
- <array length="1" zero-terminated="1" c:type="int*">
- <type name="gint" c:type="int"/>
- </array>
- </parameter>
- <parameter name="n_nums" transfer-ownership="none">
- <doc xml:whitespace="preserve">Length of number array</doc>
- <type name="gint" c:type="int"/>
- </parameter>
- </parameters>
- </method>
- <method name="create_object"
- c:identifier="annotation_object_create_object">
- <doc xml:whitespace="preserve">Test returning a caller-owned object</doc>
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">The object</doc>
- <type name="GObject.Object" c:type="GObject*"/>
- </return-value>
- </method>
- <method name="do_not_use"
- c:identifier="annotation_object_do_not_use"
- deprecated="Use annotation_object_create_object() instead."
- deprecated-version="0.12">
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">%NULL always</doc>
- <type name="GObject.Object" c:type="GObject*"/>
- </return-value>
- </method>
- <method name="extra_annos" c:identifier="annotation_object_extra_annos">
- <attribute name="org.foobar" value="testvalue"/>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </method>
- <method name="foreach" c:identifier="annotation_object_foreach">
- <doc xml:whitespace="preserve">Test taking a call-scoped callback</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="func"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:whitespace="preserve">Callback to invoke</doc>
- <type name="ForeachFunc" c:type="AnnotationForeachFunc"/>
- </parameter>
- <parameter name="user_data" transfer-ownership="none">
- <doc xml:whitespace="preserve">Callback user data</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_hash" c:identifier="annotation_object_get_hash">
- <doc xml:whitespace="preserve">This is a test for returning a hash table mapping strings to
-objects.</doc>
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">hash table</doc>
- <type name="GLib.HashTable" c:type="GHashTable*">
- <type name="utf8"/>
- <type name="GObject.Object"/>
- </type>
- </return-value>
- </method>
- <method name="get_objects" c:identifier="annotation_object_get_objects">
- <doc xml:whitespace="preserve">This is a test for returning a list of objects.
-The list itself should be freed, but not the internal objects,
-intentionally similar example to gtk_container_get_children</doc>
- <return-value transfer-ownership="container">
- <doc xml:whitespace="preserve">list of objects</doc>
- <type name="GLib.SList" c:type="GSList*">
- <type name="Object"/>
- </type>
- </return-value>
- </method>
- <method name="get_strings" c:identifier="annotation_object_get_strings">
- <doc xml:whitespace="preserve">This is a test for returning a list of strings, where
-each string needs to be freed.</doc>
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">list of strings</doc>
- <type name="GLib.List" c:type="GList*">
- <type name="utf8"/>
- </type>
- </return-value>
- </method>
- <method name="hidden_self" c:identifier="annotation_object_hidden_self">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </method>
- <method name="in" c:identifier="annotation_object_in">
- <doc xml:whitespace="preserve">This is a test for in arguments</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="inarg" transfer-ownership="none">
- <doc xml:whitespace="preserve">This is an argument test</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- </parameters>
- </method>
- <method name="inout" c:identifier="annotation_object_inout">
- <doc xml:whitespace="preserve">This is a test for out arguments</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="inoutarg"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">This is an argument test</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- </parameters>
- </method>
- <method name="inout2" c:identifier="annotation_object_inout2">
- <doc xml:whitespace="preserve">This is a second test for out arguments</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="inoutarg"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">This is an argument test</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- </parameters>
- </method>
- <method name="inout3" c:identifier="annotation_object_inout3">
- <doc xml:whitespace="preserve">This is a 3th test for out arguments</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="inoutarg"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full"
- allow-none="1">
- <doc xml:whitespace="preserve">This is an argument test</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- </parameters>
- </method>
- <method name="method" c:identifier="annotation_object_method">
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- </method>
- <method name="notrans" c:identifier="annotation_object_notrans">
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">An object, not referenced</doc>
- <type name="GObject.Object" c:type="GObject*"/>
- </return-value>
- </method>
- <method name="out" c:identifier="annotation_object_out">
- <doc xml:whitespace="preserve">This is a test for out arguments</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="outarg"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">This is an argument test</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- </parameters>
- </method>
- <method name="parse_args" c:identifier="annotation_object_parse_args">
- <doc xml:whitespace="preserve">Test taking a zero-terminated array with length parameter</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="argc"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">Length of the argument vector</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- <parameter name="argv"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">Argument vector</doc>
- <array length="0" zero-terminated="1" c:type="char***">
- <type name="utf8" c:type="char**"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="set_data" c:identifier="annotation_object_set_data">
- <doc xml:whitespace="preserve">Test taking a guchar * with a length.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:whitespace="preserve">The data</doc>
- <array length="1" zero-terminated="0" c:type="guchar*">
- <type name="guint8" c:type="guchar"/>
- </array>
- </parameter>
- <parameter name="length" transfer-ownership="none">
- <doc xml:whitespace="preserve">Length of the data</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_data2" c:identifier="annotation_object_set_data2">
- <doc xml:whitespace="preserve">Test taking a gchar * with a length.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:whitespace="preserve">The data</doc>
- <array length="1" zero-terminated="0" c:type="gchar*">
- <type name="gint8"/>
- </array>
- </parameter>
- <parameter name="length" transfer-ownership="none">
- <doc xml:whitespace="preserve">Length of the data</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_data3" c:identifier="annotation_object_set_data3">
- <doc xml:whitespace="preserve">Test taking a gchar * with a length, overriding the array element
-type.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:whitespace="preserve">The data</doc>
- <array length="1" zero-terminated="0" c:type="gpointer">
- <type name="guint8"/>
- </array>
- </parameter>
- <parameter name="length" transfer-ownership="none">
- <doc xml:whitespace="preserve">Length of the data</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="string_out" c:identifier="annotation_object_string_out">
- <doc xml:whitespace="preserve">Test returning a string as an out parameter</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">some boolean</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="str_out"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">string return value</doc>
- <type name="utf8" c:type="char**"/>
- </parameter>
- </parameters>
- </method>
- <method name="use_buffer" c:identifier="annotation_object_use_buffer">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="bytes" transfer-ownership="none">
- <type name="guint8" c:type="guchar*"/>
- </parameter>
- </parameters>
- </method>
- <method name="watch"
- c:identifier="annotation_object_watch"
- shadowed-by="watch_full"
- introspectable="0">
- <doc xml:whitespace="preserve">This is here just for the sake of being overriden by its
-annotation_object_watch_full().</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="func" transfer-ownership="none" closure="1">
- <doc xml:whitespace="preserve">The callback</doc>
- <type name="ForeachFunc" c:type="AnnotationForeachFunc"/>
- </parameter>
- <parameter name="user_data" transfer-ownership="none">
- <doc xml:whitespace="preserve">The callback data</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="watch_full"
- c:identifier="annotation_object_watch_full"
- shadows="watch">
- <doc xml:whitespace="preserve">Test overriding via the "Rename To" annotation.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="func"
- transfer-ownership="none"
- scope="notified"
- closure="1"
- destroy="2">
- <doc xml:whitespace="preserve">The callback</doc>
- <type name="ForeachFunc" c:type="AnnotationForeachFunc"/>
- </parameter>
- <parameter name="user_data" transfer-ownership="none">
- <doc xml:whitespace="preserve">The callback data</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- <parameter name="destroy" transfer-ownership="none" scope="async">
- <doc xml:whitespace="preserve">Destroy notification</doc>
- <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
- </parameter>
- </parameters>
- </method>
- <method name="with_voidp" c:identifier="annotation_object_with_voidp">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:whitespace="preserve">Opaque pointer handle</doc>
- <type name="gpointer" c:type="void*"/>
- </parameter>
- </parameters>
- </method>
- <property name="function-property"
- writable="1"
- construct="1"
- transfer-ownership="none">
- <type name="Callback"/>
- </property>
- <property name="string-property"
- version="1.0"
- deprecated="Use better-string-property instead"
- deprecated-version="1.2"
- writable="1"
- construct="1"
- transfer-ownership="none">
- <doc xml:whitespace="preserve">This is a property which is a string</doc>
- <type name="utf8"/>
- </property>
- <property name="tab-property"
- version="1.2"
- writable="1"
- construct="1"
- transfer-ownership="none">
- <doc xml:whitespace="preserve">This is a property annotation intentionally indented with a mix
-of tabs and strings to test the tab handling capabilities of the scanner.</doc>
- <type name="utf8"/>
- </property>
- <field name="parent_instance">
- <type name="GObject.Object" c:type="GObject"/>
- </field>
- <glib:signal name="attribute-signal" when="last">
- <doc xml:whitespace="preserve">This signal tests a signal with attributes.</doc>
- <return-value transfer-ownership="full">
- <attribute name="some.annotation.foo3" value="val3"/>
- <doc xml:whitespace="preserve">the return value</doc>
- <type name="utf8"/>
- </return-value>
- <parameters>
- <parameter name="arg1" transfer-ownership="none">
- <attribute name="some.annotation.foo1" value="val1"/>
- <doc xml:whitespace="preserve">a value</doc>
- <type name="utf8"/>
- </parameter>
- <parameter name="arg2" transfer-ownership="none">
- <attribute name="some.annotation.foo2" value="val2"/>
- <doc xml:whitespace="preserve">another value</doc>
- <type name="utf8"/>
- </parameter>
- </parameters>
- </glib:signal>
- <glib:signal name="doc-empty-arg-parsing" when="last">
- <doc xml:whitespace="preserve">This signal tests an empty document argument (@arg1)</doc>
- <return-value transfer-ownership="none">
- <type name="none"/>
- </return-value>
- <parameters>
- <parameter name="arg1" transfer-ownership="none">
- <type name="gpointer"/>
- </parameter>
- </parameters>
- </glib:signal>
- <glib:signal name="list-signal" when="last">
- <doc xml:whitespace="preserve">This is a signal which takes a list of strings, but it's not
-known by GObject as it's only marked as G_TYPE_POINTER</doc>
- <return-value transfer-ownership="none">
- <type name="none"/>
- </return-value>
- <parameters>
- <parameter name="list" transfer-ownership="container">
- <doc xml:whitespace="preserve">a list of strings</doc>
- <type name="GLib.List">
- <type name="utf8"/>
- </type>
- </parameter>
- </parameters>
- </glib:signal>
- <glib:signal name="string-signal"
- when="last"
- version="1.0"
- deprecated="Use other-signal instead"
- deprecated-version="1.2">
- <doc xml:whitespace="preserve">This is a signal which has a broken signal handler,
-it says it's pointer but it's actually a string.</doc>
- <return-value transfer-ownership="none">
- <type name="none"/>
- </return-value>
- <parameters>
- <parameter name="string" transfer-ownership="none">
- <doc xml:whitespace="preserve">a string</doc>
- <type name="utf8"/>
- </parameter>
- </parameters>
- </glib:signal>
- </class>
- <record name="ObjectClass"
- c:type="AnnotationObjectClass"
- glib:is-gtype-struct-for="Object">
- <field name="parent_class">
- <type name="GObject.ObjectClass" c:type="GObjectClass"/>
- </field>
- </record>
- <record name="Struct" c:type="AnnotationStruct">
- <doc xml:whitespace="preserve">This is a test of an array of object in an field of a struct.</doc>
- <field name="objects" writable="1">
- <array zero-terminated="0" c:type="AnnotationObject" fixed-size="10">
- <type name="Object" c:type="AnnotationObject*"/>
- </array>
- </field>
- </record>
- <function name="attribute_func" c:identifier="annotation_attribute_func">
- <return-value transfer-ownership="none">
- <attribute name="some.other.annotation" value="value2"/>
- <attribute name="yet.another.annotation" value="another_value"/>
- <doc xml:whitespace="preserve">The return value.</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="object" transfer-ownership="none">
- <doc xml:whitespace="preserve">A #AnnotationObject.</doc>
- <type name="Object" c:type="AnnotationObject*"/>
- </parameter>
- <parameter name="data" transfer-ownership="none">
- <attribute name="some.annotation" value="value"/>
- <attribute name="another.annotation" value="blahvalue"/>
- <doc xml:whitespace="preserve">Some data.</doc>
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- </parameters>
- </function>
- <function name="custom_destroy" c:identifier="annotation_custom_destroy">
- <doc xml:whitespace="preserve">Test messing up the heuristic of closure/destroy-notification
-detection, and fixing it via annotations.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="callback"
- transfer-ownership="none"
- scope="notified"
- closure="2"
- destroy="1">
- <doc xml:whitespace="preserve">Destroy notification</doc>
- <type name="Callback" c:type="AnnotationCallback"/>
- </parameter>
- <parameter name="destroy"
- transfer-ownership="none"
- scope="notified"
- closure="2">
- <type name="NotifyFunc" c:type="AnnotationNotifyFunc"/>
- </parameter>
- <parameter name="data" transfer-ownership="none">
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </function>
- <function name="get_source_file" c:identifier="annotation_get_source_file">
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">Source file</doc>
- <type name="filename" c:type="char*"/>
- </return-value>
- </function>
- <function name="init" c:identifier="annotation_init">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="argc"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">The number of args.</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- <parameter name="argv"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">The arguments.</doc>
- <array length="0" zero-terminated="0" c:type="char***">
- <type name="utf8" c:type="char**"/>
- </array>
- </parameter>
- </parameters>
- </function>
- <function name="invalid_annotation"
- c:identifier="annotation_invalid_annotation">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="foo" transfer-ownership="none">
- <doc xml:whitespace="preserve">some text (e.g. example) or else</doc>
- <type name="gint" c:type="int"/>
- </parameter>
- </parameters>
- </function>
- <function name="ptr_array"
- c:identifier="annotation_ptr_array"
- introspectable="0">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="array" transfer-ownership="none">
- <doc xml:whitespace="preserve">the array</doc>
- <array name="GLib.PtrArray" c:type="GPtrArray*">
- <type name="GLib.Value"/>
- </array>
- </parameter>
- </parameters>
- </function>
- <function name="return_array" c:identifier="annotation_return_array">
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">The return value</doc>
- <array length="0" zero-terminated="0" c:type="char**">
- <type name="utf8"/>
- </array>
- </return-value>
- <parameters>
- <parameter name="length"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:whitespace="preserve">Number of return values</doc>
- <type name="gint" c:type="int*"/>
- </parameter>
- </parameters>
- </function>
- <function name="return_filename" c:identifier="annotation_return_filename">
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">An annotated filename</doc>
- <type name="filename" c:type="gchar*"/>
- </return-value>
- </function>
- <function name="set_source_file" c:identifier="annotation_set_source_file">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="fname" transfer-ownership="none">
- <doc xml:whitespace="preserve">Source file</doc>
- <type name="filename" c:type="char*"/>
- </parameter>
- </parameters>
- </function>
- <function name="space_after_comment_bug631690"
- c:identifier="annotation_space_after_comment_bug631690">
- <doc xml:whitespace="preserve">Explicitly test having a space after the ** here.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </function>
- <function name="string_array_length"
- c:identifier="annotation_string_array_length">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="n_properties" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="properties" transfer-ownership="none">
- <array length="0" zero-terminated="0" c:type="gchar*">
- <type name="utf8"/>
- </array>
- </parameter>
- </parameters>
- </function>
- <function name="string_zero_terminated"
- c:identifier="annotation_string_zero_terminated">
- <return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">The return value</doc>
- <array c:type="char**">
- <type name="utf8"/>
- </array>
- </return-value>
- </function>
- <function name="string_zero_terminated_out"
- c:identifier="annotation_string_zero_terminated_out">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="out"
- direction="inout"
- caller-allocates="0"
- transfer-ownership="full">
- <array c:type="char***">
- <type name="utf8" c:type="char**"/>
- </array>
- </parameter>
- </parameters>
- </function>
- <function name="test_parsing_bug630862"
- c:identifier="annotation_test_parsing_bug630862">
- <doc xml:whitespace="preserve">See https://bugzilla.gnome.org/show_bug.cgi?id=630862</doc>
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">An object, note the colon:in here</doc>
- <type name="GObject.Object" c:type="GObject*"/>
- </return-value>
- </function>
- <function name="transfer_floating"
- c:identifier="annotation_transfer_floating">
- <return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">A floating object</doc>
- <type name="GObject.Object" c:type="GObject*"/>
- </return-value>
- </function>
- <function name="versioned"
- c:identifier="annotation_versioned"
- version="0.6">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </function>
- </namespace>
-</repository>
diff --git a/tests/scanner/Bar-1.0-expected.gir b/tests/scanner/Bar-1.0-expected.gir
index 392a3031..245adfff 100644
--- a/tests/scanner/Bar-1.0-expected.gir
+++ b/tests/scanner/Bar-1.0-expected.gir
@@ -6,7 +6,6 @@ and/or use gtk-doc annotations. -->
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="GLib" version="2.0"/>
<include name="GObject" version="2.0"/>
<package name="gobject-2.0"/>
<namespace name="Bar"
@@ -44,6 +43,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="window" transfer-ownership="none">
+ <type name="MutterWindow" c:type="MutterWindow*"/>
+ </instance-parameter>
<parameter name="v" transfer-ownership="none">
<type name="guint" c:type="guint"/>
</parameter>
diff --git a/tests/scanner/Foo-1.0-expected.gir b/tests/scanner/Foo-1.0-expected.gir
index b0c36340..8ef7c203 100644
--- a/tests/scanner/Foo-1.0-expected.gir
+++ b/tests/scanner/Foo-1.0-expected.gir
@@ -26,12 +26,16 @@ and/or use gtk-doc annotations. -->
<enumeration name="ASingle" c:type="FooASingle">
<member name="some_single_enum"
value="0"
- c:identifier="FOO_SOME_SINGLE_ENUM"/>
+ c:identifier="FOO_SOME_SINGLE_ENUM">
+ </member>
</enumeration>
<enumeration name="AddressType" c:type="FooAddressType">
- <member name="invalid" value="0" c:identifier="FOO_ADDRESS_INVALID"/>
- <member name="ipv4" value="1" c:identifier="FOO_ADDRESS_IPV4"/>
- <member name="ipv6" value="2" c:identifier="FOO_ADDRESS_IPV6"/>
+ <member name="invalid" value="0" c:identifier="FOO_ADDRESS_INVALID">
+ </member>
+ <member name="ipv4" value="1" c:identifier="FOO_ADDRESS_IPV4">
+ </member>
+ <member name="ipv6" value="2" c:identifier="FOO_ADDRESS_IPV6">
+ </member>
</enumeration>
<record name="BRect"
c:type="FooBRect"
@@ -62,6 +66,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="b1" transfer-ownership="none">
+ <type name="BRect" c:type="FooBRect*"/>
+ </instance-parameter>
<parameter name="b2" transfer-ownership="none">
<type name="BRect" c:type="FooBRect*"/>
</parameter>
@@ -92,6 +99,11 @@ and/or use gtk-doc annotations. -->
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
+ <parameters>
+ <instance-parameter name="bunion" transfer-ownership="none">
+ <type name="BUnion" c:type="FooBUnion*"/>
+ </instance-parameter>
+ </parameters>
</method>
</union>
<record name="Boxed"
@@ -108,6 +120,11 @@ and/or use gtk-doc annotations. -->
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="Boxed" c:type="FooBoxed*"/>
+ </instance-parameter>
+ </parameters>
</method>
</record>
<class name="Buffer"
@@ -122,6 +139,11 @@ and/or use gtk-doc annotations. -->
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <type name="Buffer" c:type="FooBuffer*"/>
+ </instance-parameter>
+ </parameters>
</method>
</class>
<record name="BufferClass"
@@ -154,6 +176,11 @@ and/or use gtk-doc annotations. -->
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="dbusdata" transfer-ownership="none">
+ <type name="DBusData" c:type="FooDBusData*"/>
+ </instance-parameter>
+ </parameters>
</method>
</record>
<constant name="DEFINE_SHOULD_BE_EXPOSED"
@@ -162,15 +189,22 @@ and/or use gtk-doc annotations. -->
<type name="utf8" c:type="gchar*"/>
</constant>
<enumeration name="EnumFullname" c:type="FooEnumFullname">
- <member name="one" value="1" c:identifier="FOO_ENUM_FULLNAME_ONE"/>
- <member name="two" value="2" c:identifier="FOO_ENUM_FULLNAME_TWO"/>
- <member name="three" value="3" c:identifier="FOO_ENUM_FULLNAME_THREE"/>
+ <member name="one" value="1" c:identifier="FOO_ENUM_FULLNAME_ONE">
+ </member>
+ <member name="two" value="2" c:identifier="FOO_ENUM_FULLNAME_TWO">
+ </member>
+ <member name="three" value="3" c:identifier="FOO_ENUM_FULLNAME_THREE">
+ </member>
</enumeration>
<enumeration name="EnumNoType" c:type="FooEnumNoType">
- <member name="un" value="1" c:identifier="FOO_ENUM_UN"/>
- <member name="deux" value="2" c:identifier="FOO_ENUM_DEUX"/>
- <member name="trois" value="3" c:identifier="FOO_ENUM_TROIS"/>
- <member name="neuf" value="9" c:identifier="FOO_ENUM_NEUF"/>
+ <member name="un" value="1" c:identifier="FOO_ENUM_UN">
+ </member>
+ <member name="deux" value="2" c:identifier="FOO_ENUM_DEUX">
+ </member>
+ <member name="trois" value="3" c:identifier="FOO_ENUM_TROIS">
+ </member>
+ <member name="neuf" value="9" c:identifier="FOO_ENUM_NEUF">
+ </member>
</enumeration>
<enumeration name="EnumType"
glib:type-name="FooEnumType"
@@ -179,15 +213,18 @@ and/or use gtk-doc annotations. -->
<member name="alpha"
value="0"
c:identifier="FOO_ENUM_ALPHA"
- glib:nick="alpha"/>
+ glib:nick="alpha">
+ </member>
<member name="beta"
value="1"
c:identifier="FOO_ENUM_BETA"
- glib:nick="beta"/>
+ glib:nick="beta">
+ </member>
<member name="delta"
value="2"
c:identifier="FOO_ENUM_DELTA"
- glib:nick="delta"/>
+ glib:nick="delta">
+ </member>
<function name="method" c:identifier="foo_enum_type_method">
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
@@ -217,15 +254,18 @@ and/or use gtk-doc annotations. -->
<member name="good"
value="0"
c:identifier="FOO_ERROR_GOOD"
- glib:nick="good"/>
+ glib:nick="good">
+ </member>
<member name="bad"
value="1"
c:identifier="FOO_ERROR_BAD"
- glib:nick="bad"/>
+ glib:nick="bad">
+ </member>
<member name="ugly"
value="2"
c:identifier="FOO_ERROR_UGLY"
- glib:nick="ugly"/>
+ glib:nick="ugly">
+ </member>
<function name="quark" c:identifier="foo_error_quark">
<return-value transfer-ownership="none">
<type name="GLib.Quark" c:type="GQuark"/>
@@ -257,9 +297,12 @@ and/or use gtk-doc annotations. -->
</field>
</record>
<bitfield name="FlagsNoType" c:type="FooFlagsNoType">
- <member name="ett" value="1" c:identifier="FOO_FLAGS_ETT"/>
- <member name="tva" value="2" c:identifier="FOO_FLAGS_TVA"/>
- <member name="fyra" value="4" c:identifier="FOO_FLAGS_FYRA"/>
+ <member name="ett" value="1" c:identifier="FOO_FLAGS_ETT">
+ </member>
+ <member name="tva" value="2" c:identifier="FOO_FLAGS_TVA">
+ </member>
+ <member name="fyra" value="4" c:identifier="FOO_FLAGS_FYRA">
+ </member>
</bitfield>
<bitfield name="FlagsType"
glib:type-name="FooFlagsType"
@@ -268,15 +311,18 @@ and/or use gtk-doc annotations. -->
<member name="first"
value="1"
c:identifier="FOO_FLAGS_FIRST"
- glib:nick="first"/>
+ glib:nick="first">
+ </member>
<member name="second"
value="2"
c:identifier="FOO_FLAGS_SECOND"
- glib:nick="second"/>
+ glib:nick="second">
+ </member>
<member name="third"
value="4"
c:identifier="FOO_FLAGS_THIRD"
- glib:nick="third"/>
+ glib:nick="third">
+ </member>
</bitfield>
<record name="ForeignStruct" c:type="FooForeignStruct" foreign="1">
<field name="foo" writable="1">
@@ -291,6 +337,11 @@ and/or use gtk-doc annotations. -->
<return-value transfer-ownership="full">
<type name="ForeignStruct" c:type="FooForeignStruct*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="original" transfer-ownership="none">
+ <type name="ForeignStruct" c:type="FooForeignStruct*"/>
+ </instance-parameter>
+ </parameters>
</method>
</record>
<interface name="Interface"
@@ -315,6 +366,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Interface" c:type="FooInterface*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -325,6 +379,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="iface" transfer-ownership="none">
+ <type name="Interface" c:type="FooInterface*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -383,10 +440,10 @@ and/or use gtk-doc annotations. -->
</parameters>
</function>
<function name="get_default" c:identifier="foo_object_get_default">
- <doc xml:whitespace="preserve">This function is intended to match clutter_stage_get_default which
+ <doc xml:space="preserve">This function is intended to match clutter_stage_get_default which
uses a C sugar return type.</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">The global #FooSubobject</doc>
+ <doc xml:space="preserve">The global #FooSubobject</doc>
<type name="Subobject" c:type="FooObject*"/>
</return-value>
</function>
@@ -396,17 +453,20 @@ uses a C sugar return type.</doc>
</return-value>
</function>
<virtual-method name="read_fn" invoker="read">
- <doc xml:whitespace="preserve">Read some stuff.</doc>
+ <doc xml:space="preserve">Read some stuff.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="offset" transfer-ownership="none">
- <doc xml:whitespace="preserve">offset</doc>
+ <doc xml:space="preserve">offset</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="length" transfer-ownership="none">
- <doc xml:whitespace="preserve">length</doc>
+ <doc xml:space="preserve">length</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
@@ -416,6 +476,9 @@ uses a C sugar return type.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="first_param" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -423,11 +486,14 @@ uses a C sugar return type.</doc>
</virtual-method>
<method name="append_new_stack_layer"
c:identifier="foo_object_append_new_stack_layer">
- <doc xml:whitespace="preserve">This shouldn't be scanned as a constructor.</doc>
+ <doc xml:space="preserve">This shouldn't be scanned as a constructor.</doc>
<return-value transfer-ownership="none">
<type name="OtherObject" c:type="FooOtherObject*"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -437,23 +503,42 @@ uses a C sugar return type.</doc>
<return-value transfer-ownership="full">
<type name="utf8" c:type="char*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="external_type" c:identifier="foo_object_external_type">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">%NULL always</doc>
+ <doc xml:space="preserve">%NULL always</doc>
<type name="Utility.Object" c:type="UtilityObject*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #FooObject</doc>
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="get_name" c:identifier="foo_object_get_name">
<return-value transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="handle_glyph" c:identifier="foo_object_handle_glyph">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="glyph" transfer-ownership="none">
<type name="Utility.Glyph" c:type="UtilityGlyph"/>
</parameter>
@@ -464,6 +549,9 @@ uses a C sugar return type.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="time" transfer-ownership="none">
<type name="glong" c:type="time_t"/>
</parameter>
@@ -472,28 +560,35 @@ uses a C sugar return type.</doc>
<method name="new_cookie"
c:identifier="foo_object_new_cookie"
introspectable="0">
- <doc xml:whitespace="preserve">Not sure why this test is here...</doc>
+ <doc xml:space="preserve">Not sure why this test is here...</doc>
<return-value>
<type name="ObjectCookie" c:type="FooObjectCookie"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="target" transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</method>
<method name="read" c:identifier="foo_object_read">
- <doc xml:whitespace="preserve">Read some stuff.</doc>
+ <doc xml:space="preserve">Read some stuff.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">obj</doc>
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="offset" transfer-ownership="none">
- <doc xml:whitespace="preserve">offset</doc>
+ <doc xml:space="preserve">offset</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="length" transfer-ownership="none">
- <doc xml:whitespace="preserve">length</doc>
+ <doc xml:space="preserve">length</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
@@ -501,10 +596,16 @@ uses a C sugar return type.</doc>
<method name="skipped_method"
c:identifier="foo_object_skipped_method"
introspectable="0">
- <doc xml:whitespace="preserve">This is only useful from C.</doc>
+ <doc xml:space="preserve">This is only useful from C.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">obj</doc>
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="take_all"
c:identifier="foo_object_take_all"
@@ -513,6 +614,9 @@ uses a C sugar return type.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -527,6 +631,9 @@ uses a C sugar return type.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="data" transfer-ownership="none">
<type name="gpointer" c:type="void*"/>
</parameter>
@@ -540,6 +647,9 @@ uses a C sugar return type.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="FooObject*"/>
+ </instance-parameter>
<parameter name="first_param" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -556,7 +666,7 @@ uses a C sugar return type.</doc>
writable="1"
construct="1"
transfer-ownership="none">
- <type name="utf8"/>
+ <type name="utf8" c:type="gchar*"/>
</property>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
@@ -566,14 +676,14 @@ uses a C sugar return type.</doc>
</field>
<glib:signal name="signal" when="last">
<return-value transfer-ownership="full">
- <type name="utf8"/>
+ <type name="utf8" c:type="gchar*"/>
</return-value>
<parameters>
<parameter name="object" transfer-ownership="none">
<type name="GObject.Object"/>
</parameter>
<parameter name="p0" transfer-ownership="none">
- <type name="gpointer"/>
+ <type name="gpointer" c:type="gpointer"/>
</parameter>
</parameters>
</glib:signal>
@@ -609,11 +719,11 @@ uses a C sugar return type.</doc>
<type name="Object" c:type="FooObject*"/>
</parameter>
<parameter name="offset" transfer-ownership="none">
- <doc xml:whitespace="preserve">offset</doc>
+ <doc xml:space="preserve">offset</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="length" transfer-ownership="none">
- <doc xml:whitespace="preserve">length</doc>
+ <doc xml:space="preserve">length</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
@@ -659,14 +769,21 @@ uses a C sugar return type.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="r1"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">add to this rect</doc>
+ <type name="Rectangle" c:type="FooRectangle*"/>
+ </instance-parameter>
<parameter name="r2" transfer-ownership="none">
- <doc xml:whitespace="preserve">source rectangle</doc>
+ <doc xml:space="preserve">source rectangle</doc>
<type name="Rectangle" c:type="const FooRectangle*"/>
</parameter>
</parameters>
</method>
<function name="new" c:identifier="foo_rectangle_new" introspectable="0">
- <doc xml:whitespace="preserve">This is a C convenience constructor; we have to (skip)
+ <doc xml:space="preserve">This is a C convenience constructor; we have to (skip)
it because it's not a boxed type.</doc>
<return-value>
<type name="Rectangle" c:type="FooRectangle*"/>
@@ -691,25 +808,38 @@ it because it's not a boxed type.</doc>
<type name="gint" c:type="gint"/>
</constant>
<enumeration name="Skippable" introspectable="0" c:type="FooSkippable">
- <doc xml:whitespace="preserve">Some type that is only interesting from C and should not be
+ <doc xml:space="preserve">Some type that is only interesting from C and should not be
exposed to language bindings.</doc>
- <member name="one" value="0" c:identifier="FOO_SKIPPABLE_ONE"/>
- <member name="two" value="1" c:identifier="FOO_SKIPPABLE_TWO"/>
+ <member name="one" value="0" c:identifier="FOO_SKIPPABLE_ONE">
+ <doc xml:space="preserve">a skippable enum value</doc>
+ </member>
+ <member name="two" value="1" c:identifier="FOO_SKIPPABLE_TWO">
+ <doc xml:space="preserve">another skippable enum value</doc>
+ </member>
</enumeration>
<enumeration name="StackLayer" c:type="FooStackLayer">
- <member name="desktop" value="0" c:identifier="FOO_LAYER_DESKTOP"/>
- <member name="bottom" value="1" c:identifier="FOO_LAYER_BOTTOM"/>
- <member name="normal" value="2" c:identifier="FOO_LAYER_NORMAL"/>
- <member name="top" value="4" c:identifier="FOO_LAYER_TOP"/>
- <member name="dock" value="4" c:identifier="FOO_LAYER_DOCK"/>
- <member name="fullscreen" value="5" c:identifier="FOO_LAYER_FULLSCREEN"/>
+ <member name="desktop" value="0" c:identifier="FOO_LAYER_DESKTOP">
+ </member>
+ <member name="bottom" value="1" c:identifier="FOO_LAYER_BOTTOM">
+ </member>
+ <member name="normal" value="2" c:identifier="FOO_LAYER_NORMAL">
+ </member>
+ <member name="top" value="4" c:identifier="FOO_LAYER_TOP">
+ </member>
+ <member name="dock" value="4" c:identifier="FOO_LAYER_DOCK">
+ </member>
+ <member name="fullscreen" value="5" c:identifier="FOO_LAYER_FULLSCREEN">
+ </member>
<member name="focused_window"
value="6"
- c:identifier="FOO_LAYER_FOCUSED_WINDOW"/>
+ c:identifier="FOO_LAYER_FOCUSED_WINDOW">
+ </member>
<member name="override_redirect"
value="7"
- c:identifier="FOO_LAYER_OVERRIDE_REDIRECT"/>
- <member name="last" value="8" c:identifier="FOO_LAYER_LAST"/>
+ c:identifier="FOO_LAYER_OVERRIDE_REDIRECT">
+ </member>
+ <member name="last" value="8" c:identifier="FOO_LAYER_LAST">
+ </member>
</enumeration>
<record name="Struct" c:type="FooStruct">
<field name="priv" writable="1">
@@ -732,17 +862,30 @@ exposed to language bindings.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="SubInterface" c:type="FooSubInterface*"/>
+ </instance-parameter>
+ </parameters>
</virtual-method>
<virtual-method name="do_bar" invoker="do_bar">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="SubInterface" c:type="FooSubInterface*"/>
+ </instance-parameter>
+ </parameters>
</virtual-method>
<virtual-method name="do_baz" invoker="do_baz">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="SubInterface" c:type="FooSubInterface*"/>
+ </instance-parameter>
<parameter name="callback"
transfer-ownership="none"
scope="call"
@@ -759,6 +902,9 @@ exposed to language bindings.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="SubInterface" c:type="FooSubInterface*"/>
+ </instance-parameter>
<parameter transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -771,12 +917,20 @@ exposed to language bindings.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="SubInterface" c:type="FooSubInterface*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="do_baz" c:identifier="foo_sub_interface_do_baz">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="SubInterface" c:type="FooSubInterface*"/>
+ </instance-parameter>
<parameter name="callback"
transfer-ownership="none"
scope="call"
@@ -793,6 +947,9 @@ exposed to language bindings.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="SubInterface" c:type="FooSubInterface*"/>
+ </instance-parameter>
<parameter transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -803,7 +960,7 @@ exposed to language bindings.</doc>
</method>
<glib:signal name="destroy-event" when="last">
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
</glib:signal>
</interface>
@@ -1056,7 +1213,7 @@ exposed to language bindings.</doc>
</function>
<function name="not_a_constructor_new"
c:identifier="foo_not_a_constructor_new">
- <doc xml:whitespace="preserve">This should be scanned as a top-level function, and shouldn't cause
+ <doc xml:space="preserve">This should be scanned as a top-level function, and shouldn't cause
a "Can't find matching type for constructor" warning.</doc>
<return-value transfer-ownership="none">
<type name="Object" c:type="FooObject*"/>
@@ -1066,7 +1223,7 @@ a "Can't find matching type for constructor" warning.</doc>
c:identifier="foo_rectangle_new"
moved-to="Rectangle.new"
introspectable="0">
- <doc xml:whitespace="preserve">This is a C convenience constructor; we have to (skip)
+ <doc xml:space="preserve">This is a C convenience constructor; we have to (skip)
it because it's not a boxed type.</doc>
<return-value>
<type name="Rectangle" c:type="FooRectangle*"/>
@@ -1087,14 +1244,14 @@ it because it's not a boxed type.</doc>
</parameters>
</function>
<function name="skip_me" c:identifier="foo_skip_me" introspectable="0">
- <doc xml:whitespace="preserve">Does something that's only interesting from C and should not be
+ <doc xml:space="preserve">Does something that's only interesting from C and should not be
exposed to language bindings.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="fs" transfer-ownership="none">
- <doc xml:whitespace="preserve">a #FooSkippable</doc>
+ <doc xml:space="preserve">a #FooSkippable</doc>
<type name="Skippable" c:type="FooSkippable"/>
</parameter>
</parameters>
diff --git a/tests/scanner/GetType-1.0-expected.gir b/tests/scanner/GetType-1.0-expected.gir
index 3b1dd193..ae17525d 100644
--- a/tests/scanner/GetType-1.0-expected.gir
+++ b/tests/scanner/GetType-1.0-expected.gir
@@ -6,7 +6,6 @@ and/or use gtk-doc annotations. -->
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="GLib" version="2.0"/>
<include name="GObject" version="2.0"/>
<package name="gobject-2.0"/>
<c:include name="gettype.h"/>
@@ -29,30 +28,36 @@ and/or use gtk-doc annotations. -->
</constructor>
<function name="nonmeta2_get_type"
c:identifier="gettype_object_nonmeta2_get_type">
- <doc xml:whitespace="preserve">This shouldn't be scanned as a *_get_type function because it doesn't return
+ <doc xml:space="preserve">This shouldn't be scanned as a *_get_type function because it doesn't return
a GType. It will generate a warning.</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">true</doc>
+ <doc xml:space="preserve">true</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
</function>
<function name="nonmeta_get_gtype"
c:identifier="gettype_object_nonmeta_get_gtype">
- <doc xml:whitespace="preserve">This shouldn't be scanned as a *_get_type function because it doesn't return
+ <doc xml:space="preserve">This shouldn't be scanned as a *_get_type function because it doesn't return
a GType. It will generate a warning.</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">true</doc>
+ <doc xml:space="preserve">true</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
</function>
<method name="nonmeta1_get_type"
c:identifier="gettype_object_nonmeta1_get_type">
- <doc xml:whitespace="preserve">This shouldn't be scanned as a *_get_type function because it takes
+ <doc xml:space="preserve">This shouldn't be scanned as a *_get_type function because it takes
arguments.</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">0</doc>
+ <doc xml:space="preserve">0</doc>
<type name="GType" c:type="GType"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">self</doc>
+ <type name="Object" c:type="GetTypeObject*"/>
+ </instance-parameter>
+ </parameters>
</method>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
diff --git a/tests/scanner/GtkFrob-1.0-expected.gir b/tests/scanner/GtkFrob-1.0-expected.gir
index c8758472..a4e39ef1 100644
--- a/tests/scanner/GtkFrob-1.0-expected.gir
+++ b/tests/scanner/GtkFrob-1.0-expected.gir
@@ -6,7 +6,6 @@ and/or use gtk-doc annotations. -->
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="GLib" version="2.0"/>
<include name="GObject" version="2.0"/>
<package name="gobject-2.0"/>
<namespace name="GtkFrob"
diff --git a/tests/scanner/Makefile.am b/tests/scanner/Makefile.am
index 96923550..a3069a8b 100644
--- a/tests/scanner/Makefile.am
+++ b/tests/scanner/Makefile.am
@@ -7,13 +7,11 @@ INTROSPECTION_SCANNER_ARGS += --warn-all
check_LTLIBRARIES = \
libsletter.la \
- libannotation.la \
- libtestinherit.la \
- libfoo.la \
libutility.la \
libgtkfrob.la \
libgettype.la \
libregress.la \
+ libwarnlib.la \
$(NULL)
AM_CPPFLAGS = -I$(top_srcdir)/girepository
@@ -28,20 +26,37 @@ libsletter_la_LIBADD = $(GIO_LIBS)
libsletter_la_CFLAGS = $(AM_CFLAGS)
libsletter_la_LDFLAGS = $(AM_LDFLAGS)
-libannotation_la_SOURCES = $(srcdir)/annotation.c $(srcdir)/annotation.h
-libtestinherit_la_SOURCES = $(srcdir)/drawable.c $(srcdir)/drawable.h
-libfoo_la_SOURCES = $(srcdir)/foo.c $(srcdir)/foo.h
-libfoo_la_LIBADD = $(top_builddir)/libgirepository-1.0.la
libutility_la_SOURCES = $(srcdir)/utility.c $(srcdir)/utility.h
libgtkfrob_la_SOURCES = $(srcdir)/gtkfrob.c $(srcdir)/gtkfrob.h
-libregress_la_SOURCES = $(srcdir)/regress.c $(srcdir)/regress.h
-libregress_la_LIBADD = $(GIO_LIBS) $(CAIRO_LIBS)
+libregress_la_SOURCES = \
+ $(srcdir)/regress.c $(srcdir)/regress.h \
+ $(srcdir)/annotation.c $(srcdir)/annotation.h \
+ $(srcdir)/foo.c $(srcdir)/foo.h \
+ $(srcdir)/drawable.c $(srcdir)/drawable.h \
+ $(NULL)
+REGRESS_PRINT_PREVIEW_COMMAND="evince --unlink-tempfile --preview --print-settings %s %f"
+libregress_la_CPPFLAGS = -DREGRESS_PRINT_PREVIEW_COMMAND=\"$(REGRESS_PRINT_PREVIEW_COMMAND)\" \
+ -DREGRESS_SOME_CHAR=\'c\'
+libregress_la_LIBADD = $(GIO_LIBS)
+if HAVE_CAIRO
+libregress_la_LIBADD += $(CAIRO_LIBS)
+endif
+libwarnlib_la_CFLAGS = $(AM_CFLAGS)
+libwarnlib_la_SOURCES = $(srcdir)/warnlib.c $(srcdir)/warnlib.h
+libwarnlib_la_LIBADD = $(GIO_LIBS)
+libwarnlib_la_LDFLAGS = -export-symbols-regex '^warnlib_' -no-undefined
libgettype_la_SOURCES = $(srcdir)/gettype.c $(srcdir)/gettype.h
testsdir = $(datadir)/gobject-introspection-1.0/tests
-tests_DATA = $(libregress_la_SOURCES)
+tests_DATA = $(libregress_la_SOURCES) $(libwarnlib_la_SOURCES) $(libutility_la_SOURCES)
-libregress_la_CFLAGS = $(AM_CFLAGS) $(CAIRO_CFLAGS)
+if !HAVE_CAIRO
+libregress_la_CPPFLAGS += -D_GI_DISABLE_CAIRO
+endif
+libregress_la_CFLAGS = $(AM_CFLAGS)
+if HAVE_CAIRO
+libregress_la_CFLAGS += $(CAIRO_CFLAGS)
+endif
libregress_la_LDFLAGS = $(AM_LDFLAGS)
@@ -65,36 +80,23 @@ SLetter_1_0_gir_FILES = $(libsletter_la_SOURCES)
SLetter_1_0_gir_SCANNERFLAGS = --identifier-prefix=S --c-include="sletter.h" --warn-error
GIRS += SLetter-1.0.gir
-Regress-1.0.gir: $(top_builddir)/Gio-2.0.gir libregress.la
+Regress-1.0.gir: $(top_builddir)/Gio-2.0.gir Utility-1.0.gir libregress.la
Regress_1_0_gir_LIBS = libregress.la
-Regress_1_0_gir_INCLUDES = cairo-1.0 Gio-2.0
+Regress_1_0_gir_CFLAGS = $(libregress_la_CPPFLAGS) $(libregress_la_CFLAGS) -include "glib.h"
+Regress_1_0_gir_INCLUDES = Gio-2.0 Utility-1.0
+if HAVE_CAIRO
+Regress_1_0_gir_INCLUDES += cairo-1.0
+endif
Regress_1_0_gir_FILES = $(libregress_la_SOURCES)
Regress_1_0_gir_SCANNERFLAGS = --c-include="regress.h" --warn-error
GIRS += Regress-1.0.gir
-Annotation-1.0.gir: Utility-1.0.gir libannotation.la
-Annotation_1_0_gir_PACKAGES = gobject-2.0
-Annotation_1_0_gir_LIBS = libannotation.la
-Annotation_1_0_gir_INCLUDES = GObject-2.0 Utility-1.0
-Annotation_1_0_gir_FILES = $(libannotation_la_SOURCES)
-Annotation_1_0_gir_SCANNERFLAGS = --c-include="annotation.h" --warn-error
-GIRS += Annotation-1.0.gir
-
-TestInherit-1.0.gir: Utility-1.0.gir libtestinherit.la
-TestInherit_1_0_gir_PACKAGES = gobject-2.0
-TestInherit_1_0_gir_LIBS = libtestinherit.la
-TestInherit_1_0_gir_INCLUDES = GObject-2.0 Utility-1.0
-TestInherit_1_0_gir_FILES = $(libtestinherit_la_SOURCES)
-TestInherit_1_0_gir_SCANNERFLAGS = --c-include="drawable.h" --warn-error
-GIRS += TestInherit-1.0.gir
-
-Foo-1.0.gir: Utility-1.0.gir libfoo.la
-Foo_1_0_gir_PACKAGES = gobject-2.0
-Foo_1_0_gir_LIBS = libfoo.la
-Foo_1_0_gir_INCLUDES = GObject-2.0 Gio-2.0 Utility-1.0
-Foo_1_0_gir_FILES = $(srcdir)/foo.h $(srcdir)/foo.c
-Foo_1_0_gir_SCANNERFLAGS = --c-include="foo.h" --warn-error
-GIRS += Foo-1.0.gir
+WarnLib-1.0.gir: $(top_builddir)/Gio-2.0.gir libwarnlib.la
+WarnLib_1_0_gir_LIBS = libwarnlib.la
+WarnLib_1_0_gir_INCLUDES = Gio-2.0
+WarnLib_1_0_gir_FILES = $(libwarnlib_la_SOURCES)
+WarnLib_1_0_gir_SCANNERFLAGS = --c-include="warnlib.h" --symbol-prefix=warnlib_
+GIRS += WarnLib-1.0.gir
Utility-1.0.gir: libutility.la
Utility_1_0_gir_PACKAGES = gobject-2.0
@@ -140,6 +142,7 @@ GIRS += Bar-1.0.gir
endif
EXTRA_DIST += headeronly.h
+CLEANFILES += Headeronly-1.0.gir
Headeronly-1.0.gir: headeronly.h
$(AM_V_GEN) $(INTROSPECTION_SCANNER) $(INTROSPECTION_SCANNER_ARGS) --warn-all --warn-error --reparse-validate --namespace=Headeronly --nsversion=1.0 --header-only --output=$@ $<
@@ -147,4 +150,101 @@ Headeronly-1.0.gir: headeronly.h
%.gir.check: %.gir
@diff -u -U 10 $(srcdir)/$*-expected.gir $*.gir && echo " TEST $*.gir"
-check-local: Headeronly-1.0.gir $(CHECKGIRS) $(TYPELIBS)
+if BUILD_DOCTOOL
+DOCGIRS = Regress-1.0.gir
+CHECKDOCS = $(DOCGIRS:.gir=-C.page.check) $(DOCGIRS:.gir=-Python.page.check) $(DOCGIRS:.gir=-Gjs.page.check) $(DOCGIRS:.gir=-sections.txt.page.check)
+MALLARD_DIRS = $(DOCGIRS:.gir=-C) $(DOCGIRS:.gir=-Python) $(DOCGIRS:.gir=-Gjs)
+MALLARD_CLEAN = $(DOCGIRS:.gir=-C)/* $(DOCGIRS:.gir=-Python)/* $(DOCGIRS:.gir=-Gjs)/*
+EXPECTED_MALLARD_DIRS = $(MALLARD_DIRS:=-expected)
+CLEANFILES += $(MALLARD_CLEAN)
+
+%-C: %.gir
+ $(AM_V_GEN)
+ $(AM_V_at)-rm -rf $(builddir)/$*-C
+ $(AM_V_at)$(INTROSPECTION_DOCTOOL) $(INTROSPECTION_DOCTOOL_ARGS) --language C $*.gir -o $(builddir)/$*-C/
+
+%-Python: %.gir
+ $(AM_V_GEN)
+ $(AM_V_at)-rm -rf $(builddir)/$*-Python
+ $(AM_V_at)$(INTROSPECTION_DOCTOOL) $(INTROSPECTION_DOCTOOL_ARGS) --language Python $*.gir -o $(builddir)/$*-Python/
+
+%-Gjs: %.gir
+ $(AM_V_GEN)
+ $(AM_V_at)-rm -rf $(builddir)/$*-Gjs
+ $(AM_V_at)$(INTROSPECTION_DOCTOOL) $(INTROSPECTION_DOCTOOL_ARGS) --language Gjs $*.gir -o $(builddir)/$*-Gjs/
+
+%-sections.txt: %.gir
+ $(AM_V_GEN)
+ $(AM_V_at)$(INTROSPECTION_DOCTOOL) $(INTROSPECTION_DOCTOOL_ARGS) --write-sections-file $*.gir -o $@
+
+%-C.page.check: %-C
+ @diff -r -u -w -B -U 10 $(srcdir)/$*-C-expected $(builddir)/$*-C && echo " TEST $*-C"
+
+%-Python.page.check: %-Python
+ @diff -r -u -w -B -U 10 $(srcdir)/$*-Python-expected $(builddir)/$*-Python && echo " TEST $*-Python"
+
+%-Gjs.page.check: %-Gjs
+ @diff -r -u -w -B -U 10 $(srcdir)/$*-Gjs-expected $(builddir)/$*-Gjs && echo " TEST $*-Gjs"
+
+%-sections.txt.page.check: %-sections.txt
+ @diff -u -w -B -U 10 $(srcdir)/$*-sections-expected.txt $*-sections.txt && echo " TEST $*-C"
+
+else
+CHECKDOCS =
+endif
+
+check-local: Headeronly-1.0.gir $(CHECKGIRS) $(CHECKDOCS) $(TYPELIBS)
+
+EXTRA_DIST += \
+ annotationparser/README \
+ annotationparser/test_parser.py \
+ annotationparser/test_patterns.py \
+ annotationparser/gi/annotation_allow_none.xml \
+ annotationparser/gi/annotation_array.xml \
+ annotationparser/gi/annotation_closure.xml \
+ annotationparser/gi/annotation_constructor.xml \
+ annotationparser/gi/annotation_destroy.xml \
+ annotationparser/gi/annotation_element_type.xml \
+ annotationparser/gi/annotation_foreign.xml \
+ annotationparser/gi/annotation_get_value_func.xml \
+ annotationparser/gi/annotation_in.xml \
+ annotationparser/gi/annotation_in_out.xml \
+ annotationparser/gi/annotation_method.xml \
+ annotationparser/gi/annotation_out.xml \
+ annotationparser/gi/annotation_ref_func.xml \
+ annotationparser/gi/annotation_rename_to.xml \
+ annotationparser/gi/annotation_scope.xml \
+ annotationparser/gi/annotation_set_value_func.xml \
+ annotationparser/gi/annotation_skip.xml \
+ annotationparser/gi/annotation_transfer.xml \
+ annotationparser/gi/annotation_type.xml \
+ annotationparser/gi/annotation_unref_func.xml \
+ annotationparser/gi/annotation_value.xml \
+ annotationparser/gi/annotation_virtual.xml \
+ annotationparser/gi/syntax.xml \
+ annotationparser/gi/syntax_identifier.xml \
+ annotationparser/gi/syntax_nested_tags.xml \
+ annotationparser/gi/syntax_paragraph_breaks.xml \
+ annotationparser/gi/tag_deprecated.xml \
+ annotationparser/gi/tag_description.xml \
+ annotationparser/gi/tag_returns.xml \
+ annotationparser/gi/tag_since.xml \
+ annotationparser/gi/tag_stability.xml \
+ annotationparser/gtkdoc/gobject/gtypes.h.xml \
+ annotationparser/gtkdoc/gobject/gtypes.c.xml \
+ annotationparser/gtkdoc/gobject/giface.h.xml \
+ annotationparser/gtkdoc/gobject/giface.c.xml \
+ annotationparser/gtkdoc/fail/tester.h.xml \
+ annotationparser/gtkdoc/fail/tester.c.xml \
+ annotationparser/gtkdoc/empty/tester.c.xml \
+ annotationparser/gtkdoc/bugs/tester.h.xml \
+ annotationparser/gtkdoc/bugs/tester.c.xml \
+ annotationparser/gtkdoc/annotations/tester.h.xml \
+ annotationparser/gtkdoc/annotations/tester.c.xml \
+ annotationparser/gtkdoc/gobject/gobject.h.xml \
+ annotationparser/gtkdoc/gobject/gobject.c.xml \
+ Regress-1.0-C-expected \
+ Regress-1.0-Gjs-expected \
+ Regress-1.0-Python-expected \
+ Regress-1.0-sections-expected.txt \
+ $(NULL)
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.ATestError.page b/tests/scanner/Regress-1.0-C-expected/Regress.ATestError.page
new file mode 100644
index 00000000..e131f6f0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.ATestError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.ATestError"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.ATestError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AliasedTestBoxed.page b/tests/scanner/Regress-1.0-C-expected/Regress.AliasedTestBoxed.page
new file mode 100644
index 00000000..9490e4a3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AliasedTestBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AliasedTestBoxed"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AliasedTestBoxed</title>
+
+
+
+ <p>Typedef TestBoxed to test caller-allocates correctness</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationBitfield.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationBitfield.page
new file mode 100644
index 00000000..4e19ef92
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationBitfield.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationBitfield"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationBitfield</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationCallback.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationCallback.page
new file mode 100644
index 00000000..9a652d80
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationCallback</title>
+
+
+
+ <p>This is a callback.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationForeachFunc.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationForeachFunc.page
new file mode 100644
index 00000000..db77a117
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationForeachFunc.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationForeachFunc"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationForeachFunc</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationListCallback.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationListCallback.page
new file mode 100644
index 00000000..79844c66
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationListCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationListCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationListCallback</title>
+
+
+
+ <p>This is a callback taking a list.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationNotifyFunc.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationNotifyFunc.page
new file mode 100644
index 00000000..17c80292
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationNotifyFunc.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationNotifyFunc"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationNotifyFunc</title>
+
+
+
+ <p>This is a callback with a 'closure' argument that is not named
+'user_data' and hence has to be annotated.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-attribute-signal.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-attribute-signal.page
new file mode 100644
index 00000000..64e30a6c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-attribute-signal.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-attribute-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">attribute-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::attribute-signal</title>
+
+<synopsis><code mime="text/x-csrc">
+gchar* attribute-signal (gchar* arg1,
+ gchar* arg2);
+</code></synopsis>
+
+
+ <p>This signal tests a signal with attributes.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>arg1</code></title>
+<p>a value</p>
+</item>
+<item>
+<title><code>arg2</code></title>
+<p>another value</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the return value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page
new file mode 100644
index 00000000..48acac58
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-doc-empty-arg-parsing"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">doc-empty-arg-parsing</title>
+
+ </info>
+ <title>Regress.AnnotationObject::doc-empty-arg-parsing</title>
+
+<synopsis><code mime="text/x-csrc">
+void doc-empty-arg-parsing (gpointer arg1);
+</code></synopsis>
+
+
+ <p>This signal tests an empty document argument (<code>arg1</code>)</p>
+
+
+
+
+<terms>
+<item>
+<title><code>arg1</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-function-property.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-function-property.page
new file mode 100644
index 00000000..bd640b5c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-function-property.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-function-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">function-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:function-property</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-list-signal.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-list-signal.page
new file mode 100644
index 00000000..29ad5842
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-list-signal.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-list-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">list-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::list-signal</title>
+
+<synopsis><code mime="text/x-csrc">
+void list-signal (gpointer list);
+</code></synopsis>
+
+
+ <p>This is a signal which takes a list of strings, but it's not
+known by GObject as it's only marked as G_TYPE_POINTER</p>
+
+
+
+
+<terms>
+<item>
+<title><code>list</code></title>
+<p>a list of strings</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-property.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-property.page
new file mode 100644
index 00000000..70b80ae2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-property.page
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-string-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">string-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:string-property</title>
+
+
+
+ <p>This is a property which is a string</p>
+
+
+ <p>Since 1.0</p>
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-signal.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-signal.page
new file mode 100644
index 00000000..e25d2bb1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-string-signal.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-string-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">string-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::string-signal</title>
+
+<synopsis><code mime="text/x-csrc">
+void string-signal (gpointer string);
+</code></synopsis>
+
+
+ <p>This is a signal which has a broken signal handler,
+it says it's pointer but it's actually a string.</p>
+
+
+ <p>Since 1.0</p>
+
+
+<terms>
+<item>
+<title><code>string</code></title>
+<p>a string</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-tab-property.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-tab-property.page
new file mode 100644
index 00000000..446729b7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject-tab-property.page
@@ -0,0 +1,28 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-tab-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">tab-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:tab-property</title>
+
+
+
+ <p>This is a property annotation intentionally indented with a mix
+of tabs and strings to test the tab handling capabilities of the scanner.</p>
+
+
+ <p>Since 1.2</p>
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.allow_none.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.allow_none.page
new file mode 100644
index 00000000..1d553fd7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.allow_none.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.allow_none"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_allow_none</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const gchar*</api:type>
+ <api:name>somearg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_allow_none</title>
+
+<synopsis><code mime="text/x-csrc">
+GObject* regress_annotation_object_allow_none (RegressAnnotationObject* object,
+ const gchar* somearg);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>somearg</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>NULL</code> always</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleeowns.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleeowns.page
new file mode 100644
index 00000000..fc1758be
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleeowns.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.calleeowns"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_calleeowns</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject**</api:type>
+ <api:name>toown</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_calleeowns</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_calleeowns (RegressAnnotationObject* object,
+ GObject** toown);
+</code></synopsis>
+
+
+ <p>This is a test for out arguments; GObject defaults to transfer</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>toown</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleesowns.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleesowns.page
new file mode 100644
index 00000000..f168030a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.calleesowns.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.calleesowns"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_calleesowns</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject**</api:type>
+ <api:name>toown1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject**</api:type>
+ <api:name>toown2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_calleesowns</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_calleesowns (RegressAnnotationObject* object,
+ GObject** toown1,
+ GObject** toown2);
+</code></synopsis>
+
+
+ <p>This is a test for out arguments, one transferred, other not</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>toown1</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>toown2</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum.page
new file mode 100644
index 00000000..eaf00407
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_compute_sum</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_compute_sum (RegressAnnotationObject* object,
+ int* nums);
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_n.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_n.page
new file mode 100644
index 00000000..feb7a55e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_n.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum_n"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum_n</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_compute_sum_n</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_compute_sum_n (RegressAnnotationObject* object,
+ int* nums,
+ int n_nums);
+</code></synopsis>
+
+
+ <p>Test taking an array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers that are zero-terminated</p>
+</item>
+<item>
+<title><code>n_nums</code></title>
+<p>Length of number array</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_nz.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_nz.page
new file mode 100644
index 00000000..2af59a52
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.compute_sum_nz.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum_nz"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum_nz</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_compute_sum_nz</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_compute_sum_nz (RegressAnnotationObject* object,
+ int* nums,
+ int n_nums);
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers that are zero-terminated</p>
+</item>
+<item>
+<title><code>n_nums</code></title>
+<p>Length of number array</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.create_object.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.create_object.page
new file mode 100644
index 00000000..6ad744b9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.create_object.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.create_object"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_create_object</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_create_object</title>
+
+<synopsis><code mime="text/x-csrc">
+GObject* regress_annotation_object_create_object (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+ <p>Test returning a caller-owned object</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>The object</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.do_not_use.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.do_not_use.page
new file mode 100644
index 00000000..4d651ca7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.do_not_use.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.do_not_use"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_do_not_use</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_do_not_use</title>
+
+<synopsis><code mime="text/x-csrc">
+GObject* regress_annotation_object_do_not_use (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>NULL</code> always</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.extra_annos.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.extra_annos.page
new file mode 100644
index 00000000..809ebd2b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.extra_annos.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.extra_annos"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_extra_annos</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_extra_annos</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_extra_annos (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.foreach.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.foreach.page
new file mode 100644
index 00000000..f74ca97b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.foreach.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.foreach"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_foreach</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressAnnotationForeachFunc</api:type>
+ <api:name>func</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_foreach</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_foreach (RegressAnnotationObject* object,
+ RegressAnnotationForeachFunc func,
+ gpointer user_data);
+</code></synopsis>
+
+
+ <p>Test taking a call-scoped callback</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>func</code></title>
+<p>Callback to invoke</p>
+</item>
+<item>
+<title><code>user_data</code></title>
+<p>Callback user data</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_hash.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_hash.page
new file mode 100644
index 00000000..6cc123b3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_hash.page
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_hash"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_hash</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_get_hash</title>
+
+<synopsis><code mime="text/x-csrc">
+GHashTable* regress_annotation_object_get_hash (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+ <p>This is a test for returning a hash table mapping strings to
+objects.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>hash table</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_objects.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_objects.page
new file mode 100644
index 00000000..3021ce53
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_objects.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_objects"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GSList*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_objects</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_get_objects</title>
+
+<synopsis><code mime="text/x-csrc">
+GSList* regress_annotation_object_get_objects (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+ <p>This is a test for returning a list of objects.
+The list itself should be freed, but not the internal objects,
+intentionally similar example to gtk_container_get_children</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>list of objects</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_strings.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_strings.page
new file mode 100644
index 00000000..62087b04
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.get_strings.page
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_strings"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GList*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_strings</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_get_strings</title>
+
+<synopsis><code mime="text/x-csrc">
+GList* regress_annotation_object_get_strings (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+ <p>This is a test for returning a list of strings, where
+each string needs to be freed.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>list of strings</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.hidden_self.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.hidden_self.page
new file mode 100644
index 00000000..f1696c03
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.hidden_self.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.hidden_self"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_hidden_self</api:name>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_hidden_self</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_hidden_self (gpointer object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>A <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.in.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.in.page
new file mode 100644
index 00000000..ef1f430a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.in"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_in</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>inarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_in</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_in (RegressAnnotationObject* object,
+ int* inarg);
+</code></synopsis>
+
+
+ <p>This is a test for in arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout.page
new file mode 100644
index 00000000..0e958294
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_inout</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_inout (RegressAnnotationObject* object,
+ int* inoutarg);
+</code></synopsis>
+
+
+ <p>This is a test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout2.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout2.page
new file mode 100644
index 00000000..cae38e56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout2.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout2"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout2</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_inout2</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_inout2 (RegressAnnotationObject* object,
+ int* inoutarg);
+</code></synopsis>
+
+
+ <p>This is a second test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout3.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout3.page
new file mode 100644
index 00000000..8ca35f33
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.inout3.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout3"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout3</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_inout3</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_inout3 (RegressAnnotationObject* object,
+ int* inoutarg);
+</code></synopsis>
+
+
+ <p>This is a 3th test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.method.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.method.page
new file mode 100644
index 00000000..8f0e1873
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.method"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_method</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_method</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_method (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.notrans.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.notrans.page
new file mode 100644
index 00000000..de87deb0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.notrans.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.notrans"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_notrans</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_notrans</title>
+
+<synopsis><code mime="text/x-csrc">
+GObject* regress_annotation_object_notrans (RegressAnnotationObject* object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>An object, not referenced</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.out.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.out.page
new file mode 100644
index 00000000..d244433f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.out.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.out"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_out</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>outarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_out</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_object_out (RegressAnnotationObject* object,
+ int* outarg);
+</code></synopsis>
+
+
+ <p>This is a test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>outarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.page
new file mode 100644
index 00000000..80d4339e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationObject</title>
+
+
+
+ <p>This is an object used to test annotations.</p>
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.AnnotationObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.parse_args.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.parse_args.page
new file mode 100644
index 00000000..2fa9f09f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.parse_args.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.parse_args"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_parse_args</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>argc</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>char***</api:type>
+ <api:name>argv</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_parse_args</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_parse_args (RegressAnnotationObject* object,
+ int* argc,
+ char*** argv);
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>argc</code></title>
+<p>Length of the argument vector</p>
+</item>
+<item>
+<title><code>argv</code></title>
+<p>Argument vector</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data.page
new file mode 100644
index 00000000..a52c0ff0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guchar*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_set_data</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_set_data (RegressAnnotationObject* object,
+ guchar* data,
+ gsize length);
+</code></synopsis>
+
+
+ <p>Test taking a guchar * with a length.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>Length of the data</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data2.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data2.page
new file mode 100644
index 00000000..dd724207
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data2.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data2"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data2</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint8*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_set_data2</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_set_data2 (RegressAnnotationObject* object,
+ gint8* data,
+ gsize length);
+</code></synopsis>
+
+
+ <p>Test taking a gchar * with a length.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>Length of the data</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data3.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data3.page
new file mode 100644
index 00000000..86666ef6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.set_data3.page
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data3"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data3</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint8*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_set_data3</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_set_data3 (RegressAnnotationObject* object,
+ guint8* data,
+ gsize length);
+</code></synopsis>
+
+
+ <p>Test taking a gchar * with a length, overriding the array element
+type.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>Length of the data</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.string_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.string_out.page
new file mode 100644
index 00000000..a70d4771
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.string_out.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.string_out"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_string_out</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>str_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_string_out</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_annotation_object_string_out (RegressAnnotationObject* object,
+ char** str_out);
+</code></synopsis>
+
+
+ <p>Test returning a string as an out parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>str_out</code></title>
+<p>string return value</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>some boolean</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.use_buffer.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.use_buffer.page
new file mode 100644
index 00000000..3228007b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.use_buffer.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.use_buffer"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_use_buffer</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guchar*</api:type>
+ <api:name>bytes</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_use_buffer</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_use_buffer (RegressAnnotationObject* object,
+ guchar* bytes);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>bytes</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch.page
new file mode 100644
index 00000000..76402aab
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch.page
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.watch"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_watch</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressAnnotationForeachFunc</api:type>
+ <api:name>func</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_watch</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_watch (RegressAnnotationObject* object,
+ RegressAnnotationForeachFunc func,
+ gpointer user_data);
+</code></synopsis>
+
+
+ <p>This is here just for the sake of being overriden by its
+<link xref="Regress.watch_full"/>.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>A <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>func</code></title>
+<p>The callback</p>
+</item>
+<item>
+<title><code>user_data</code></title>
+<p>The callback data</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch_full.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch_full.page
new file mode 100644
index 00000000..1fe2080c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.watch_full.page
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.watch_full"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_watch_full</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressAnnotationForeachFunc</api:type>
+ <api:name>func</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GDestroyNotify</api:type>
+ <api:name>destroy</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_watch_full</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_watch_full (RegressAnnotationObject* object,
+ RegressAnnotationForeachFunc func,
+ gpointer user_data,
+ GDestroyNotify destroy);
+</code></synopsis>
+
+
+ <p>Test overriding via the "Rename To" annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>A <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>func</code></title>
+<p>The callback</p>
+</item>
+<item>
+<title><code>user_data</code></title>
+<p>The callback data</p>
+</item>
+<item>
+<title><code>destroy</code></title>
+<p>Destroy notification</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.with_voidp.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.with_voidp.page
new file mode 100644
index 00000000..ef9436eb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObject.with_voidp.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.with_voidp"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_with_voidp</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>void*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_object_with_voidp</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_object_with_voidp (RegressAnnotationObject* object,
+ void* data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+<p>Opaque pointer handle</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObjectClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObjectClass.page
new file mode 100644
index 00000000..28b8a71b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationObjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObjectClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationObjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationStruct.page b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationStruct.page
new file mode 100644
index 00000000..341362a9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.AnnotationStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationStruct"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationStruct</title>
+
+
+
+ <p>This is a test of an array of object in an field of a struct.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooASingle.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooASingle.page
new file mode 100644
index 00000000..39ebf9cc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooASingle.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooASingle"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooASingle</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooAddressType.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooAddressType.page
new file mode 100644
index 00000000..717b5011
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooAddressType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooAddressType"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooAddressType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.add.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.add.page
new file mode 100644
index 00000000..38eae39b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.add.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect.add"
+ type="topic"
+ style="method"
+ 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.FooBRect" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_brect_add</api:name>
+ <api:arg>
+ <api:type>RegressFooBRect*</api:type>
+ <api:name>b1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressFooBRect*</api:type>
+ <api:name>b2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_brect_add</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_brect_add (RegressFooBRect* b1,
+ RegressFooBRect* b2);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>b1</code></title>
+
+</item>
+<item>
+<title><code>b2</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.new.page
new file mode 100644
index 00000000..3ca2281d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.new.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect.new"
+ type="topic"
+ style="constructor"
+ 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.FooBRect" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooBRect*</api:type>
+ </api:returns>
+ <api:name>regress_foo_brect_new</api:name>
+ <api:arg>
+ <api:type>double</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>double</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_brect_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooBRect* regress_foo_brect_new (double x,
+ double y);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.page
new file mode 100644
index 00000000..abd6b039
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBRect.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooBRect</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.get_contained_type.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.get_contained_type.page
new file mode 100644
index 00000000..1ee353fd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.get_contained_type.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion.get_contained_type"
+ type="topic"
+ style="method"
+ 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.FooBUnion" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_foo_bunion_get_contained_type</api:name>
+ <api:arg>
+ <api:type>RegressFooBUnion*</api:type>
+ <api:name>bunion</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_bunion_get_contained_type</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_foo_bunion_get_contained_type (RegressFooBUnion* bunion);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>bunion</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.new.page
new file mode 100644
index 00000000..b760f204
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion.new"
+ type="topic"
+ style="constructor"
+ 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.FooBUnion" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooBUnion*</api:type>
+ </api:returns>
+ <api:name>regress_foo_bunion_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_bunion_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooBUnion* regress_foo_bunion_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.page
new file mode 100644
index 00000000..8644d96e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBUnion.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooBUnion</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.method.page
new file mode 100644
index 00000000..7483641f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed.method"
+ type="topic"
+ style="method"
+ 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.FooBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_boxed_method</api:name>
+ <api:arg>
+ <api:type>RegressFooBoxed*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_boxed_method</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_boxed_method (RegressFooBoxed* boxed);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.new.page
new file mode 100644
index 00000000..3e3e4f91
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed.new"
+ type="topic"
+ style="constructor"
+ 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.FooBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooBoxed*</api:type>
+ </api:returns>
+ <api:name>regress_foo_boxed_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_boxed_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooBoxed* regress_foo_boxed_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.page
new file mode 100644
index 00000000..e711c3ec
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooBoxed</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.page
new file mode 100644
index 00000000..267ddcba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.page
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBuffer"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooBuffer</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ <item>
+ <code>Regress.FooBuffer</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.some_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.some_method.page
new file mode 100644
index 00000000..6f6469d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooBuffer.some_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBuffer.some_method"
+ type="topic"
+ style="method"
+ 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.FooBuffer" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_buffer_some_method</api:name>
+ <api:arg>
+ <api:type>RegressFooBuffer*</api:type>
+ <api:name>buffer</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_buffer_some_method</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_buffer_some_method (RegressFooBuffer* buffer);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>buffer</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooCallback.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooCallback.page
new file mode 100644
index 00000000..52feda29
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.method.page
new file mode 100644
index 00000000..8694337d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooDBusData.method"
+ type="topic"
+ style="method"
+ 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.FooDBusData" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_dbus_data_method</api:name>
+ <api:arg>
+ <api:type>RegressFooDBusData*</api:type>
+ <api:name>dbusdata</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_dbus_data_method</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_dbus_data_method (RegressFooDBusData* dbusdata);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>dbusdata</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.page
new file mode 100644
index 00000000..09050e7d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooDBusData.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooDBusData"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooDBusData</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumFullname.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumFullname.page
new file mode 100644
index 00000000..80f6c3b1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumFullname.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumFullname"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumFullname</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumNoType.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumNoType.page
new file mode 100644
index 00000000..b3c71a6f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumNoType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumNoType"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumNoType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.method.page
new file mode 100644
index 00000000..6ecf2dd9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType.method"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_foo_enum_type_method</api:name>
+ <api:arg>
+ <api:type>RegressFooEnumType</api:type>
+ <api:name>regress_foo_enum</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_enum_type_method</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_foo_enum_type_method (RegressFooEnumType regress_foo_enum);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>regress_foo_enum</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.page
new file mode 100644
index 00000000..6dd3491a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.returnv.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.returnv.page
new file mode 100644
index 00000000..aa0c6c1b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEnumType.returnv.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType.returnv"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooEnumType</api:type>
+ </api:returns>
+ <api:name>regress_foo_enum_type_returnv</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_enum_type_returnv</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooEnumType regress_foo_enum_type_returnv (int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooError.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooError.page
new file mode 100644
index 00000000..79bb9d29
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooError"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooError.quark.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooError.quark.page
new file mode 100644
index 00000000..dde46fb0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooError.quark.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GQuark</api:type>
+ </api:returns>
+ <api:name>regress_foo_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_error_quark</title>
+
+<synopsis><code mime="text/x-csrc">
+GQuark regress_foo_error_quark (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEvent.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEvent.page
new file mode 100644
index 00000000..ce368302
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEvent.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEvent"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooEvent</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEventAny.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEventAny.page
new file mode 100644
index 00000000..0e3a5555
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEventAny.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEventAny"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooEventAny</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooEventExpose.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooEventExpose.page
new file mode 100644
index 00000000..27c4c4a7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooEventExpose.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEventExpose"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooEventExpose</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsNoType.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsNoType.page
new file mode 100644
index 00000000..53539d49
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsNoType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooFlagsNoType"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooFlagsNoType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsType.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsType.page
new file mode 100644
index 00000000..2b4afeb5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooFlagsType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooFlagsType"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooFlagsType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.copy.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.copy.page
new file mode 100644
index 00000000..217a983b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.copy.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct.copy"
+ type="topic"
+ style="method"
+ 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.FooForeignStruct" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooForeignStruct*</api:type>
+ </api:returns>
+ <api:name>regress_foo_foreign_struct_copy</api:name>
+ <api:arg>
+ <api:type>RegressFooForeignStruct*</api:type>
+ <api:name>original</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_foreign_struct_copy</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooForeignStruct* regress_foo_foreign_struct_copy (RegressFooForeignStruct* original);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>original</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.new.page
new file mode 100644
index 00000000..7314c1d3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct.new"
+ type="topic"
+ style="constructor"
+ 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.FooForeignStruct" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooForeignStruct*</api:type>
+ </api:returns>
+ <api:name>regress_foo_foreign_struct_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_foreign_struct_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooForeignStruct* regress_foo_foreign_struct_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.page
new file mode 100644
index 00000000..ee3e5e72
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooForeignStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooForeignStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface-do_regress_foo.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface-do_regress_foo.page
new file mode 100644
index 00000000..b3faca67
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface-do_regress_foo.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface-do_regress_foo"
+ type="topic"
+ style="vfunc"
+ 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.FooInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterface::do_regress_foo</title>
+
+<synopsis><code mime="text/x-csrc">
+void do_regress_foo (RegressFooInterface* self,
+ int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.do_regress_foo.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.do_regress_foo.page
new file mode 100644
index 00000000..7c44fd47
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.do_regress_foo.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface.do_regress_foo"
+ type="topic"
+ style="method"
+ 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.FooInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_interface_do_regress_foo</api:name>
+ <api:arg>
+ <api:type>RegressFooInterface*</api:type>
+ <api:name>iface</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_interface_do_regress_foo</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_interface_do_regress_foo (RegressFooInterface* iface,
+ int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>iface</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.page
new file mode 100644
index 00000000..7ec29fee
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterface</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.FooInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.static_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.static_method.page
new file mode 100644
index 00000000..a3ad69af
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterface.static_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface.static_method"
+ type="topic"
+ style="function"
+ 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.FooInterface" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_interface_static_method</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_interface_static_method</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_interface_static_method (int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.do_regress_foo.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.do_regress_foo.page
new file mode 100644
index 00000000..0b900420
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.do_regress_foo.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterfaceIface.do_regress_foo"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterfaceIface.do_regress_foo</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.page
new file mode 100644
index 00000000..53b09b41
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooInterfaceIface.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterfaceIface"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterfaceIface</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-hidden.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-hidden.page
new file mode 100644
index 00000000..ccfbcfa6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-hidden.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-hidden"
+ type="topic"
+ style="property"
+ 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.FooObject" group="property" type="guide"/>
+ <title type="link" role="topic">hidden</title>
+
+ </info>
+ <title>Regress.FooObject:hidden</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-read_fn.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-read_fn.page
new file mode 100644
index 00000000..a316adb5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-read_fn.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-read_fn"
+ type="topic"
+ style="vfunc"
+ 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.FooObject" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject::read_fn</title>
+
+<synopsis><code mime="text/x-csrc">
+void read_fn (RegressFooObject* object,
+ int offset,
+ int length);
+</code></synopsis>
+
+
+ <p>Read some stuff.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>offset</code></title>
+<p>offset</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>length</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-signal.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-signal.page
new file mode 100644
index 00000000..3a8c1315
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-signal.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-signal"
+ type="topic"
+ style="signal"
+ 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.FooObject" group="signal" type="guide"/>
+ <title type="link" role="topic">signal</title>
+
+ </info>
+ <title>Regress.FooObject::signal</title>
+
+<synopsis><code mime="text/x-csrc">
+gchar* signal (GObject object,
+ gpointer p0);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>p0</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-string.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-string.page
new file mode 100644
index 00000000..b0ed3c72
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-string.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-string"
+ type="topic"
+ style="property"
+ 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.FooObject" group="property" type="guide"/>
+ <title type="link" role="topic">string</title>
+
+ </info>
+ <title>Regress.FooObject:string</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-virtual_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-virtual_method.page
new file mode 100644
index 00000000..3e3f04ef
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject-virtual_method.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-virtual_method"
+ type="topic"
+ style="vfunc"
+ 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.FooObject" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject::virtual_method</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean virtual_method (RegressFooObject* object,
+ int first_param);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>first_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.a_global_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.a_global_method.page
new file mode 100644
index 00000000..801f59ac
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.a_global_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.a_global_method"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_a_global_method</api:name>
+ <api:arg>
+ <api:type>UtilityObject*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_a_global_method</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_object_a_global_method (UtilityObject* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.append_new_stack_layer.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.append_new_stack_layer.page
new file mode 100644
index 00000000..82bbc269
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.append_new_stack_layer.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.append_new_stack_layer"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooOtherObject*</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_append_new_stack_layer</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_append_new_stack_layer</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooOtherObject* regress_foo_object_append_new_stack_layer (RegressFooObject* obj,
+ int x);
+</code></synopsis>
+
+
+ <p>This shouldn't be scanned as a constructor.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.dup_name.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.dup_name.page
new file mode 100644
index 00000000..6419ed73
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.dup_name.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.dup_name"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>char*</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_dup_name</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_dup_name</title>
+
+<synopsis><code mime="text/x-csrc">
+char* regress_foo_object_dup_name (RegressFooObject* object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.external_type.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.external_type.page
new file mode 100644
index 00000000..77c8dc8f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.external_type.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.external_type"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>UtilityObject*</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_external_type</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_external_type</title>
+
+<synopsis><code mime="text/x-csrc">
+UtilityObject* regress_foo_object_external_type (RegressFooObject* object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>a <link xref="Regress.FooObject"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>NULL</code> always</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_default.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_default.page
new file mode 100644
index 00000000..04c38a20
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_default.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.get_default"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooObject*</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_get_default</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_get_default</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooObject* regress_foo_object_get_default (void);
+</code></synopsis>
+
+
+ <p>This function is intended to match clutter_stage_get_default which
+uses a C sugar return type.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>The global <link xref="Regress.FooSubobject"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_name.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_name.page
new file mode 100644
index 00000000..68b305bf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.get_name.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.get_name"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const char*</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_get_name</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_get_name</title>
+
+<synopsis><code mime="text/x-csrc">
+const char* regress_foo_object_get_name (RegressFooObject* object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.handle_glyph.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.handle_glyph.page
new file mode 100644
index 00000000..0cb58ae3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.handle_glyph.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.handle_glyph"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_handle_glyph</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>UtilityGlyph</api:type>
+ <api:name>glyph</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_handle_glyph</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_object_handle_glyph (RegressFooObject* object,
+ UtilityGlyph glyph);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>glyph</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.is_it_time_yet.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.is_it_time_yet.page
new file mode 100644
index 00000000..f643665a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.is_it_time_yet.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.is_it_time_yet"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_is_it_time_yet</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>time_t</api:type>
+ <api:name>time</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_is_it_time_yet</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_object_is_it_time_yet (RegressFooObject* object,
+ time_t time);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>time</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new.page
new file mode 100644
index 00000000..75b0e074
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.new"
+ type="topic"
+ style="constructor"
+ 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.FooObject" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooObject*</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooObject* regress_foo_object_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_as_super.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_as_super.page
new file mode 100644
index 00000000..069a4213
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_as_super.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.new_as_super"
+ type="topic"
+ style="constructor"
+ 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.FooObject" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject*</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_new_as_super</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_new_as_super</title>
+
+<synopsis><code mime="text/x-csrc">
+GObject* regress_foo_object_new_as_super (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_cookie.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_cookie.page
new file mode 100644
index 00000000..312e93c6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.new_cookie.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.new_cookie"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooObjectCookie</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_new_cookie</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>target</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_new_cookie</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooObjectCookie regress_foo_object_new_cookie (RegressFooObject* object,
+ const char* target);
+</code></synopsis>
+
+
+ <p>Not sure why this test is here...</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>target</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.page
new file mode 100644
index 00000000..fff026c7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.read.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.read.page
new file mode 100644
index 00000000..d6415021
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.read.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.read"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_read</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>offset</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_read</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_object_read (RegressFooObject* object,
+ int offset,
+ int length);
+</code></synopsis>
+
+
+ <p>Read some stuff.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>obj</p>
+</item>
+<item>
+<title><code>offset</code></title>
+<p>offset</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>length</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.skipped_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.skipped_method.page
new file mode 100644
index 00000000..aea1afdc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.skipped_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.skipped_method"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_skipped_method</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_skipped_method</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_object_skipped_method (RegressFooObject* object);
+</code></synopsis>
+
+
+ <p>This is only useful from C.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>obj</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.static_meth.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.static_meth.page
new file mode 100644
index 00000000..9b157bb0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.static_meth.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.static_meth"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_static_meth</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_static_meth</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_foo_object_static_meth (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.take_all.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.take_all.page
new file mode 100644
index 00000000..3947b3c5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.take_all.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.take_all"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_take_all</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:varargs/>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_take_all</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_object_take_all (RegressFooObject* object,
+ int x,
+ ...);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>arg2</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.various.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.various.page
new file mode 100644
index 00000000..eea3c15c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.various.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.various"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_various</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>void*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GType</api:type>
+ <api:name>some_type</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_various</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_object_various (RegressFooObject* object,
+ void* data,
+ GType some_type);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>some_type</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.virtual_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.virtual_method.page
new file mode 100644
index 00000000..3f04cb4a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObject.virtual_method.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.virtual_method"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_virtual_method</api:name>
+ <api:arg>
+ <api:type>RegressFooObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>first_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_object_virtual_method</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_foo_object_virtual_method (RegressFooObject* object,
+ int first_param);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>first_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.page
new file mode 100644
index 00000000..9d528385
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObjectClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooObjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.read_fn.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.read_fn.page
new file mode 100644
index 00000000..39078bfc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.read_fn.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObjectClass.read_fn"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooObjectClass.read_fn</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.virtual_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.virtual_method.page
new file mode 100644
index 00000000..2882c6d7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectClass.virtual_method.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObjectClass.virtual_method"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooObjectClass.virtual_method</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectCookie.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectCookie.page
new file mode 100644
index 00000000..44a63ab1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooObjectCookie.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObjectCookie"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooObjectCookie</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooOtherObject.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooOtherObject.page
new file mode 100644
index 00000000..491d0230
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooOtherObject.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.FooOtherObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooOtherObject</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooOtherObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.add.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.add.page
new file mode 100644
index 00000000..84a46bb7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.add.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.FooRectangle.add"
+ type="topic"
+ style="method"
+ 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.FooRectangle" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_rectangle_add</api:name>
+ <api:arg>
+ <api:type>RegressFooRectangle*</api:type>
+ <api:name>r1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const RegressFooRectangle*</api:type>
+ <api:name>r2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_rectangle_add</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_rectangle_add (RegressFooRectangle* r1,
+ const RegressFooRectangle* r2);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>r1</code></title>
+<p>add to this rect</p>
+</item>
+<item>
+<title><code>r2</code></title>
+<p>source rectangle</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.new.page
new file mode 100644
index 00000000..b9f16eac
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.new.page
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<page id="Regress.FooRectangle.new"
+ type="topic"
+ style="function"
+ 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.FooRectangle" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooRectangle*</api:type>
+ </api:returns>
+ <api:name>regress_foo_rectangle_new</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>width</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>height</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_rectangle_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooRectangle* regress_foo_rectangle_new (int x,
+ int y,
+ int width,
+ int height);
+</code></synopsis>
+
+
+ <p>This is a C convenience constructor; we have to (skip)
+it because it's not a boxed type.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>width</code></title>
+
+</item>
+<item>
+<title><code>height</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.page
new file mode 100644
index 00000000..d485de0b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooRectangle.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooRectangle"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooRectangle</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSkippable.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSkippable.page
new file mode 100644
index 00000000..0d50e702
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSkippable.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSkippable"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooSkippable</title>
+
+
+
+ <p>Some type that is only interesting from C and should not be
+exposed to language bindings.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooStackLayer.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooStackLayer.page
new file mode 100644
index 00000000..961d19c8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooStackLayer.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooStackLayer"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooStackLayer</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooStruct.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooStruct.page
new file mode 100644
index 00000000..65b4f265
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooStruct"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy-event.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy-event.page
new file mode 100644
index 00000000..6af09fd2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy-event.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-destroy-event"
+ type="topic"
+ style="signal"
+ 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.FooSubInterface" group="signal" type="guide"/>
+ <title type="link" role="topic">destroy-event</title>
+
+ </info>
+ <title>Regress.FooSubInterface::destroy-event</title>
+
+<synopsis><code mime="text/x-csrc">
+void destroy-event (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy_event.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy_event.page
new file mode 100644
index 00000000..eb08ec77
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-destroy_event.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-destroy_event"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::destroy_event</title>
+
+<synopsis><code mime="text/x-csrc">
+void destroy_event (RegressFooSubInterface* self);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_bar.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_bar.page
new file mode 100644
index 00000000..56bdfed6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_bar.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-do_bar"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::do_bar</title>
+
+<synopsis><code mime="text/x-csrc">
+void do_bar (RegressFooSubInterface* self);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_baz.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_baz.page
new file mode 100644
index 00000000..ac59643a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface-do_baz.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-do_baz"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::do_baz</title>
+
+<synopsis><code mime="text/x-csrc">
+void do_baz (RegressFooSubInterface* self,
+ GCallback callback,
+ gpointer user_data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_bar.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_bar.page
new file mode 100644
index 00000000..6d7d970c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_bar.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface.do_bar"
+ type="topic"
+ style="method"
+ 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.FooSubInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_sub_interface_do_bar</api:name>
+ <api:arg>
+ <api:type>RegressFooSubInterface*</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_sub_interface_do_bar</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_sub_interface_do_bar (RegressFooSubInterface* self);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_baz.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_baz.page
new file mode 100644
index 00000000..bab0d68e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.do_baz.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface.do_baz"
+ type="topic"
+ style="method"
+ 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.FooSubInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_sub_interface_do_baz</api:name>
+ <api:arg>
+ <api:type>RegressFooSubInterface*</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_sub_interface_do_baz</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_sub_interface_do_baz (RegressFooSubInterface* self,
+ GCallback callback,
+ gpointer user_data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.page
new file mode 100644
index 00000000..9b25845a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterface.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.FooSubInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.destroy_event.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.destroy_event.page
new file mode 100644
index 00000000..95136833
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.destroy_event.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterfaceIface.destroy_event"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterfaceIface.destroy_event</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_bar.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_bar.page
new file mode 100644
index 00000000..ec46cdde
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_bar.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterfaceIface.do_bar"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterfaceIface.do_bar</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_baz.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_baz.page
new file mode 100644
index 00000000..d0f58041
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.do_baz.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterfaceIface.do_baz"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterfaceIface.do_baz</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.page
new file mode 100644
index 00000000..f8643cf3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubInterfaceIface.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterfaceIface"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterfaceIface</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.new.page
new file mode 100644
index 00000000..c4adff6d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubobject.new"
+ type="topic"
+ style="constructor"
+ 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.FooSubobject" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooSubobject*</api:type>
+ </api:returns>
+ <api:name>regress_foo_subobject_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_subobject_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooSubobject* regress_foo_subobject_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.page
new file mode 100644
index 00000000..6a70ef71
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobject.page
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubobject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubobject</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ <item>
+ <code>Regress.FooSubobject</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobjectClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobjectClass.page
new file mode 100644
index 00000000..499599c8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooSubobjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubobjectClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubobjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooThingWithArray.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooThingWithArray.page
new file mode 100644
index 00000000..6033817f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooThingWithArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooThingWithArray"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooThingWithArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooUnion.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooUnion.page
new file mode 100644
index 00000000..9746f17e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooUnion.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooUnion"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooUnion</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooUtilityStruct.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooUtilityStruct.page
new file mode 100644
index 00000000..d281ffb1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooUtilityStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooUtilityStruct"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooUtilityStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooVarargsCallback.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooVarargsCallback.page
new file mode 100644
index 00000000..a57ea4dd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooVarargsCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooVarargsCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooVarargsCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.FooXEvent.page b/tests/scanner/Regress-1.0-C-expected/Regress.FooXEvent.page
new file mode 100644
index 00000000..c389ef05
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.FooXEvent.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooXEvent"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooXEvent</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.IntSet.page b/tests/scanner/Regress-1.0-C-expected/Regress.IntSet.page
new file mode 100644
index 00000000..b8710cf1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.IntSet.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.IntSet"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.IntSet</title>
+
+
+
+ <p>Compatibility typedef, like telepathy-glib's TpIntSet</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.LikeGnomeKeyringPasswordSchema.page b/tests/scanner/Regress-1.0-C-expected/Regress.LikeGnomeKeyringPasswordSchema.page
new file mode 100644
index 00000000..242fad03
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.LikeGnomeKeyringPasswordSchema.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeGnomeKeyringPasswordSchema"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.LikeGnomeKeyringPasswordSchema</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.page b/tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.page
new file mode 100644
index 00000000..3b14aae6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeXklConfigItem"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.LikeXklConfigItem</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.set_name.page b/tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.set_name.page
new file mode 100644
index 00000000..0a4aecb6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.LikeXklConfigItem.set_name.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeXklConfigItem.set_name"
+ type="topic"
+ style="method"
+ 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.LikeXklConfigItem" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_like_xkl_config_item_set_name</api:name>
+ <api:arg>
+ <api:type>RegressLikeXklConfigItem*</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>name</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_like_xkl_config_item_set_name</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_like_xkl_config_item_set_name (RegressLikeXklConfigItem* self,
+ const char* name);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>name</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.PtrArrayAlias.page b/tests/scanner/Regress-1.0-C-expected/Regress.PtrArrayAlias.page
new file mode 100644
index 00000000..f66aee44
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.PtrArrayAlias.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.PtrArrayAlias"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.PtrArrayAlias</title>
+
+
+
+ <p>Typedef'd GPtrArray for some reason</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.SkippedStructure.page b/tests/scanner/Regress-1.0-C-expected/Regress.SkippedStructure.page
new file mode 100644
index 00000000..ad13eea6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.SkippedStructure.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.SkippedStructure"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.SkippedStructure</title>
+
+
+
+ <p>This should be skipped, and moreover, all function which
+use it should be.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.page
new file mode 100644
index 00000000..384ffb87
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestABCError"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestABCError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.quark.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.quark.page
new file mode 100644
index 00000000..7ed5152f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestABCError.quark.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestABCError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GQuark</api:type>
+ </api:returns>
+ <api:name>regress_test_abc_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_abc_error_quark</title>
+
+<synopsis><code mime="text/x-csrc">
+GQuark regress_test_abc_error_quark (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.copy.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.copy.page
new file mode 100644
index 00000000..40273913
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.copy.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxed*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_copy</api:name>
+ <api:arg>
+ <api:type>RegressTestBoxed*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_copy</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxed* regress_test_boxed_copy (RegressTestBoxed* boxed);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.equals.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.equals.page
new file mode 100644
index 00000000..26206b63
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.equals.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.equals"
+ type="topic"
+ style="method"
+ 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.TestBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_equals</api:name>
+ <api:arg>
+ <api:type>RegressTestBoxed*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestBoxed*</api:type>
+ <api:name>other</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_equals</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_boxed_equals (RegressTestBoxed* boxed,
+ RegressTestBoxed* other);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>other</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new.page
new file mode 100644
index 00000000..5e05794e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxed*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxed* regress_test_boxed_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor1.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor1.page
new file mode 100644
index 00000000..2bc81924
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor1.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new_alternative_constructor1"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxed*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new_alternative_constructor1</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_new_alternative_constructor1</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxed* regress_test_boxed_new_alternative_constructor1 (int i);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor2.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor2.page
new file mode 100644
index 00000000..e43127e7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor2.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new_alternative_constructor2"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxed*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new_alternative_constructor2</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>j</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_new_alternative_constructor2</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxed* regress_test_boxed_new_alternative_constructor2 (int i,
+ int j);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+
+</item>
+<item>
+<title><code>j</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor3.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor3.page
new file mode 100644
index 00000000..ac75d2c2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.new_alternative_constructor3.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new_alternative_constructor3"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxed*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new_alternative_constructor3</api:name>
+ <api:arg>
+ <api:type>char*</api:type>
+ <api:name>s</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_new_alternative_constructor3</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxed* regress_test_boxed_new_alternative_constructor3 (char* s);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>s</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.page
new file mode 100644
index 00000000..d6675327
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxed</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.copy.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.copy.page
new file mode 100644
index 00000000..df0da11c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.copy.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxedB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxedB*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_b_copy</api:name>
+ <api:arg>
+ <api:type>RegressTestBoxedB*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_b_copy</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxedB* regress_test_boxed_b_copy (RegressTestBoxedB* boxed);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.new.page
new file mode 100644
index 00000000..7a0bc2bc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.new.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxedB" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxedB*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_b_new</api:name>
+ <api:arg>
+ <api:type>gint8</api:type>
+ <api:name>some_int8</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>glong</api:type>
+ <api:name>some_long</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_b_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxedB* regress_test_boxed_b_new (gint8 some_int8,
+ glong some_long);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>some_int8</code></title>
+
+</item>
+<item>
+<title><code>some_long</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.page
new file mode 100644
index 00000000..856d7da4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.new.page
new file mode 100644
index 00000000..4657b526
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedC.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxedC" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxedC*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_c_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_c_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxedC* regress_test_boxed_c_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.page
new file mode 100644
index 00000000..c890545d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedC.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedC"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedC</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.copy.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.copy.page
new file mode 100644
index 00000000..ed99996a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.copy.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxedD*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_copy</api:name>
+ <api:arg>
+ <api:type>RegressTestBoxedD*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_d_copy</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxedD* regress_test_boxed_d_copy (RegressTestBoxedD* boxed);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.free.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.free.page
new file mode 100644
index 00000000..4622fcdc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.free.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.free"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_free</api:name>
+ <api:arg>
+ <api:type>RegressTestBoxedD*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_d_free</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_boxed_d_free (RegressTestBoxedD* boxed);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.get_magic.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.get_magic.page
new file mode 100644
index 00000000..bbd78ab2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.get_magic.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.get_magic"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_get_magic</api:name>
+ <api:arg>
+ <api:type>RegressTestBoxedD*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_d_get_magic</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_boxed_d_get_magic (RegressTestBoxedD* boxed);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.new.page
new file mode 100644
index 00000000..50345623
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.new.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxedD" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestBoxedD*</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_new</api:name>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>a_string</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a_int</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boxed_d_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestBoxedD* regress_test_boxed_d_new (const char* a_string,
+ int a_int);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>a_string</code></title>
+
+</item>
+<item>
+<title><code>a_int</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.page
new file mode 100644
index 00000000..b5110c2c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestBoxedD.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedD</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestCallback.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallback.page
new file mode 100644
index 00000000..bed84d50
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackArray.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackArray.page
new file mode 100644
index 00000000..7d3f7b83
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackArray"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackFull.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackFull.page
new file mode 100644
index 00000000..0b8fca1d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackFull.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackFull"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackFull</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackGError.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackGError.page
new file mode 100644
index 00000000..804382f5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackGError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackGError"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackGError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackHashtable.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackHashtable.page
new file mode 100644
index 00000000..06ebb706
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackHashtable.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackHashtable"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackHashtable</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackOwnedGError.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackOwnedGError.page
new file mode 100644
index 00000000..28b21ea4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackOwnedGError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackOwnedGError"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackOwnedGError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackUserData.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackUserData.page
new file mode 100644
index 00000000..286c830a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestCallbackUserData.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackUserData"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackUserData</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestDEFError.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestDEFError.page
new file mode 100644
index 00000000..b485450d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestDEFError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestDEFError"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestDEFError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.page
new file mode 100644
index 00000000..a672d7ee
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnum"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnum</title>
+
+
+
+ <p>By purpose, not all members have documentation</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.param.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.param.page
new file mode 100644
index 00000000..542ba60c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnum.param.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnum.param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const gchar*</api:type>
+ </api:returns>
+ <api:name>regress_test_enum_param</api:name>
+ <api:arg>
+ <api:type>RegressTestEnum</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_enum_param</title>
+
+<synopsis><code mime="text/x-csrc">
+const gchar* regress_test_enum_param (RegressTestEnum e);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestEnumNoGEnum.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnumNoGEnum.page
new file mode 100644
index 00000000..cffae730
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnumNoGEnum.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnumNoGEnum"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnumNoGEnum</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestEnumUnsigned.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnumUnsigned.page
new file mode 100644
index 00000000..81a9aa9a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestEnumUnsigned.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnumUnsigned"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnumUnsigned</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestError.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestError.page
new file mode 100644
index 00000000..97f829b2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestError"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestError.quark.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestError.quark.page
new file mode 100644
index 00000000..9140ac56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestError.quark.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GQuark</api:type>
+ </api:returns>
+ <api:name>regress_test_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_error_quark</title>
+
+<synopsis><code mime="text/x-csrc">
+GQuark regress_test_error_quark (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFlags.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFlags.page
new file mode 100644
index 00000000..d5bfeeb4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFlags.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFlags"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFlags</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.new.page
new file mode 100644
index 00000000..5f4a3a5e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFloating.new"
+ type="topic"
+ style="constructor"
+ 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.TestFloating" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestFloating*</api:type>
+ </api:returns>
+ <api:name>regress_test_floating_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_floating_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestFloating* regress_test_floating_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>A new floating <link xref="Regress.TestFloating"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.page
new file mode 100644
index 00000000..11899127
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFloating.page
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFloating"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFloating</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>GObject.InitiallyUnowned</code>
+ <item>
+ <code>Regress.TestFloating</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFloatingClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFloatingClass.page
new file mode 100644
index 00000000..e7d5236c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFloatingClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFloatingClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestFloatingClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.page
new file mode 100644
index 00000000..473f1afe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObject</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestFundamentalObject</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.ref.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.ref.page
new file mode 100644
index 00000000..3e63b1e6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.ref.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject.ref"
+ type="topic"
+ style="method"
+ 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.TestFundamentalObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestFundamentalObject*</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_object_ref</api:name>
+ <api:arg>
+ <api:type>RegressTestFundamentalObject*</api:type>
+ <api:name>fundamental_object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_fundamental_object_ref</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestFundamentalObject* regress_test_fundamental_object_ref (RegressTestFundamentalObject* fundamental_object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>fundamental_object</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>A new <link xref="Regress.TestFundamentalObject"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.unref.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.unref.page
new file mode 100644
index 00000000..6f5c16b4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObject.unref.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject.unref"
+ type="topic"
+ style="method"
+ 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.TestFundamentalObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_object_unref</api:name>
+ <api:arg>
+ <api:type>RegressTestFundamentalObject*</api:type>
+ <api:name>fundamental_object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_fundamental_object_unref</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_fundamental_object_unref (RegressTestFundamentalObject* fundamental_object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>fundamental_object</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectClass.page
new file mode 100644
index 00000000..443ce70f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObjectClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectCopyFunction.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectCopyFunction.page
new file mode 100644
index 00000000..73a33285
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectCopyFunction.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObjectCopyFunction"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObjectCopyFunction</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectFinalizeFunction.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectFinalizeFunction.page
new file mode 100644
index 00000000..df0e8fba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalObjectFinalizeFunction.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObjectFinalizeFunction"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObjectFinalizeFunction</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.new.page
new file mode 100644
index 00000000..a4495401
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.new.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalSubObject.new"
+ type="topic"
+ style="constructor"
+ 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.TestFundamentalSubObject"
+ group="constructor"
+ type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestFundamentalSubObject*</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_sub_object_new</api:name>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_fundamental_sub_object_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestFundamentalSubObject* regress_test_fundamental_sub_object_new (const char* data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.page
new file mode 100644
index 00000000..6ed36089
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObject.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalSubObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalSubObject</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestFundamentalObject</code>
+ <item>
+ <code>Regress.TestFundamentalSubObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObjectClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObjectClass.page
new file mode 100644
index 00000000..79e14d5a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestFundamentalSubObjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalSubObjectClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalSubObjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo.page
new file mode 100644
index 00000000..24bd9c4a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.do_foo"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_do_foo</api:name>
+ <api:arg>
+ <api:type>RegressTestInheritDrawable*</api:type>
+ <api:name>drawable</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_inherit_drawable_do_foo</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_inherit_drawable_do_foo (RegressTestInheritDrawable* drawable,
+ int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>drawable</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page
new file mode 100644
index 00000000..e90dcd18
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.do_foo_maybe_throw"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_do_foo_maybe_throw</api:name>
+ <api:arg>
+ <api:type>RegressTestInheritDrawable*</api:type>
+ <api:name>drawable</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_inherit_drawable_do_foo_maybe_throw</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_inherit_drawable_do_foo_maybe_throw (RegressTestInheritDrawable* drawable,
+ int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>drawable</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_origin.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_origin.page
new file mode 100644
index 00000000..9ab00c6e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_origin.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.get_origin"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_get_origin</api:name>
+ <api:arg>
+ <api:type>RegressTestInheritDrawable*</api:type>
+ <api:name>drawable</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_inherit_drawable_get_origin</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_inherit_drawable_get_origin (RegressTestInheritDrawable* drawable,
+ int* x,
+ int* y);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>drawable</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_size.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_size.page
new file mode 100644
index 00000000..c9c778e8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.get_size.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.get_size"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_get_size</api:name>
+ <api:arg>
+ <api:type>RegressTestInheritDrawable*</api:type>
+ <api:name>drawable</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint*</api:type>
+ <api:name>width</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint*</api:type>
+ <api:name>height</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_inherit_drawable_get_size</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_inherit_drawable_get_size (RegressTestInheritDrawable* drawable,
+ guint* width,
+ guint* height);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>drawable</code></title>
+
+</item>
+<item>
+<title><code>width</code></title>
+
+</item>
+<item>
+<title><code>height</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.page
new file mode 100644
index 00000000..20ef3ff7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawable.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestInheritDrawable</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestInheritDrawable</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawableClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawableClass.page
new file mode 100644
index 00000000..2579f564
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritDrawableClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawableClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestInheritDrawableClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritPixmapObjectClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritPixmapObjectClass.page
new file mode 100644
index 00000000..3cf69e80
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInheritPixmapObjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritPixmapObjectClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestInheritPixmapObjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInterface.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInterface.page
new file mode 100644
index 00000000..1c53fd47
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInterface.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestInterface</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestInterfaceIface.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestInterfaceIface.page
new file mode 100644
index 00000000..a643e5dc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestInterfaceIface.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInterfaceIface"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestInterfaceIface</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-all.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-all.page
new file mode 100644
index 00000000..37b5dd32
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-all.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-all"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">all</title>
+
+ </info>
+ <title>Regress.TestObj::all</title>
+
+<synopsis><code mime="text/x-csrc">
+void all (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-allow_none_vfunc.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-allow_none_vfunc.page
new file mode 100644
index 00000000..f3447b5a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-allow_none_vfunc.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-allow_none_vfunc"
+ type="topic"
+ style="vfunc"
+ 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="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj::allow_none_vfunc</title>
+
+<synopsis><code mime="text/x-csrc">
+void allow_none_vfunc (RegressTestObj* obj,
+ RegressTestObj* two);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>two</code></title>
+<p>Another object</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-bare.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-bare.page
new file mode 100644
index 00000000..4873a1c5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-bare.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-bare"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">bare</title>
+
+ </info>
+ <title>Regress.TestObj:bare</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-boxed.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-boxed.page
new file mode 100644
index 00000000..460104bf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-boxed.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-boxed"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">boxed</title>
+
+ </info>
+ <title>Regress.TestObj:boxed</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-cleanup.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-cleanup.page
new file mode 100644
index 00000000..bef9537e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-cleanup.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-cleanup"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">cleanup</title>
+
+ </info>
+ <title>Regress.TestObj::cleanup</title>
+
+<synopsis><code mime="text/x-csrc">
+void cleanup (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-double.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-double.page
new file mode 100644
index 00000000..bb907ab8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-double.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-double"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">double</title>
+
+ </info>
+ <title>Regress.TestObj:double</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-first.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-first.page
new file mode 100644
index 00000000..5600be6f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-first.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-first"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">first</title>
+
+ </info>
+ <title>Regress.TestObj::first</title>
+
+<synopsis><code mime="text/x-csrc">
+void first (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-float.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-float.page
new file mode 100644
index 00000000..a981cf86
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-float.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-float"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">float</title>
+
+ </info>
+ <title>Regress.TestObj:float</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-gtype.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-gtype.page
new file mode 100644
index 00000000..2fbf9d93
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-gtype.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-gtype"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">gtype</title>
+
+ </info>
+ <title>Regress.TestObj:gtype</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table-old.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table-old.page
new file mode 100644
index 00000000..003425bb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table-old.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-hash-table-old"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">hash-table-old</title>
+
+ </info>
+ <title>Regress.TestObj:hash-table-old</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table.page
new file mode 100644
index 00000000..f11e4657
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-hash-table.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-hash-table"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">hash-table</title>
+
+ </info>
+ <title>Regress.TestObj:hash-table</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-int.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-int.page
new file mode 100644
index 00000000..95a4902c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-int.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-int"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">int</title>
+
+ </info>
+ <title>Regress.TestObj:int</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list-old.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list-old.page
new file mode 100644
index 00000000..680636d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list-old.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-list-old"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">list-old</title>
+
+ </info>
+ <title>Regress.TestObj:list-old</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list.page
new file mode 100644
index 00000000..7ea5130b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-list.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-list"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">list</title>
+
+ </info>
+ <title>Regress.TestObj:list</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-matrix.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-matrix.page
new file mode 100644
index 00000000..4c8247b5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-matrix.page
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-matrix"
+ type="topic"
+ style="vfunc"
+ 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="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj::matrix</title>
+
+<synopsis><code mime="text/x-csrc">
+int matrix (RegressTestObj* obj,
+ const char* somestr);
+</code></synopsis>
+
+
+ <p>This method is virtual. Notably its name differs from the virtual
+slot name, which makes it useful for testing bindings handle this
+case.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>somestr</code></title>
+<p>Meaningless string</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page
new file mode 100644
index 00000000..9ec983b1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-len-prop.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-array-len-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-array-len-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-array-len-prop</title>
+
+<synopsis><code mime="text/x-csrc">
+void sig-with-array-len-prop (guint* arr,
+ gint len);
+</code></synopsis>
+
+
+ <p>This test signal similar to GSettings::change-event</p>
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+<p>numbers, or <code>NULL</code></p>
+</item>
+<item>
+<title><code>len</code></title>
+<p>length of <code>arr</code>, or 0</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-prop.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-prop.page
new file mode 100644
index 00000000..05b911c2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-array-prop.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-array-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-array-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-array-prop</title>
+
+<synopsis><code mime="text/x-csrc">
+void sig-with-array-prop (guint* arr);
+</code></synopsis>
+
+
+ <p>This test signal is like TelepathyGlib's
+ TpChannel:: group-members-changed-detailed:</p>
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+<p>numbers</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-foreign-struct.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-foreign-struct.page
new file mode 100644
index 00000000..c2cb8822
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-foreign-struct.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-foreign-struct"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-foreign-struct</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-foreign-struct</title>
+
+<synopsis><code mime="text/x-csrc">
+void sig-with-foreign-struct (cairo_t cr);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>cr</code></title>
+<p>A cairo context.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-hash-prop.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-hash-prop.page
new file mode 100644
index 00000000..9ddd536c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-hash-prop.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-hash-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-hash-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-hash-prop</title>
+
+<synopsis><code mime="text/x-csrc">
+void sig-with-hash-prop (&lt;map&gt; hash);
+</code></synopsis>
+
+
+ <p>This test signal is like TelepathyGlib's
+ TpAccount::status-changed</p>
+
+
+
+
+<terms>
+<item>
+<title><code>hash</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-int64-prop.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-int64-prop.page
new file mode 100644
index 00000000..d8a90378
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-int64-prop.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-int64-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-int64-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-int64-prop</title>
+
+<synopsis><code mime="text/x-csrc">
+gint64 sig-with-int64-prop (gint64 i);
+</code></synopsis>
+
+
+ <p>You can use this with regress_test_obj_emit_sig_with_int64, or raise from
+the introspection client langage.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-intarray-ret.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-intarray-ret.page
new file mode 100644
index 00000000..7f041e23
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-intarray-ret.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-intarray-ret"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-intarray-ret</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-intarray-ret</title>
+
+<synopsis><code mime="text/x-csrc">
+None sig-with-intarray-ret (gint i);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-obj.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-obj.page
new file mode 100644
index 00000000..9d69a6fe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-obj.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-obj"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-obj</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-obj</title>
+
+<synopsis><code mime="text/x-csrc">
+void sig-with-obj (GObject obj);
+</code></synopsis>
+
+
+ <p>Test transfer none GObject as a param (tests refcounting).
+Use with regress_test_obj_emit_sig_with_obj</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A newly created RegressTestObj</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-strv.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-strv.page
new file mode 100644
index 00000000..919d38f6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-strv.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-strv"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-strv</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-strv</title>
+
+<synopsis><code mime="text/x-csrc">
+void sig-with-strv (utf8* strs);
+</code></synopsis>
+
+
+ <p>Test GStrv as a param.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>strs</code></title>
+<p>strings</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-uint64-prop.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-uint64-prop.page
new file mode 100644
index 00000000..6ee6bda3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-sig-with-uint64-prop.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-uint64-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-uint64-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-uint64-prop</title>
+
+<synopsis><code mime="text/x-csrc">
+guint64 sig-with-uint64-prop (guint64 i);
+</code></synopsis>
+
+
+ <p>You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
+the introspection client langage.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-string.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-string.page
new file mode 100644
index 00000000..1ae48038
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-string.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-string"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">string</title>
+
+ </info>
+ <title>Regress.TestObj:string</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test-with-static-scope-arg.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test-with-static-scope-arg.page
new file mode 100644
index 00000000..1ffe66e4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test-with-static-scope-arg.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-test-with-static-scope-arg"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">test-with-static-scope-arg</title>
+
+ </info>
+ <title>Regress.TestObj::test-with-static-scope-arg</title>
+
+<synopsis><code mime="text/x-csrc">
+void test-with-static-scope-arg (RegressTestSimpleBoxedA object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test.page
new file mode 100644
index 00000000..15599c6d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj-test.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-test"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">test</title>
+
+ </info>
+ <title>Regress.TestObj::test</title>
+
+<synopsis><code mime="text/x-csrc">
+void test (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.constructor.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.constructor.page
new file mode 100644
index 00000000..8efd1619
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.constructor.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.constructor"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestObj*</api:type>
+ </api:returns>
+ <api:name>regress_constructor</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_constructor</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestObj* regress_constructor (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.do_matrix.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.do_matrix.page
new file mode 100644
index 00000000..bc4e7627
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.do_matrix.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.do_matrix"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_do_matrix</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>somestr</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_do_matrix</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_obj_do_matrix (RegressTestObj* obj,
+ const char* somestr);
+</code></synopsis>
+
+
+ <p>This method is virtual. Notably its name differs from the virtual
+slot name, which makes it useful for testing bindings handle this
+case.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>somestr</code></title>
+<p>Meaningless string</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_foreign_struct.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_foreign_struct.page
new file mode 100644
index 00000000..1ba84366
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_foreign_struct.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_foreign_struct"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_foreign_struct</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_emit_sig_with_foreign_struct</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_int64.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_int64.page
new file mode 100644
index 00000000..24f58265
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_int64.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_int64"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_int64</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_emit_sig_with_int64</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_emit_sig_with_int64 (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_obj.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_obj.page
new file mode 100644
index 00000000..e0d123e1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_obj.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_obj"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_obj</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_emit_sig_with_obj</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_emit_sig_with_obj (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_uint64.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_uint64.page
new file mode 100644
index 00000000..0c2c68c2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.emit_sig_with_uint64.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_uint64"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_uint64</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_emit_sig_with_uint64</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_emit_sig_with_uint64 (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.forced_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.forced_method.page
new file mode 100644
index 00000000..92bfa2db
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.forced_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.forced_method"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_forced_method</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_forced_method</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_forced_method (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method.page
new file mode 100644
index 00000000..74692389
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.instance_method"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_instance_method</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_instance_method</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_obj_instance_method (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method_callback.page
new file mode 100644
index 00000000..668096a2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.instance_method_callback.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.instance_method_callback"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_instance_method_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_instance_method_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_instance_method_callback (RegressTestObj* obj,
+ RegressTestCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new.page
new file mode 100644
index 00000000..e931f7da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.new"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestObj*</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_new</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestObj* regress_test_obj_new (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_callback.page
new file mode 100644
index 00000000..d2ec5f63
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_callback.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.new_callback"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestObj*</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_new_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GDestroyNotify</api:type>
+ <api:name>notify</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_new_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestObj* regress_test_obj_new_callback (RegressTestCallbackUserData callback,
+ gpointer user_data,
+ GDestroyNotify notify);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>notify</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_from_file.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_from_file.page
new file mode 100644
index 00000000..a77e915a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.new_from_file.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.new_from_file"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestObj*</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_new_from_file</api:name>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_new_from_file</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestObj* regress_test_obj_new_from_file (const char* x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.null_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.null_out.page
new file mode 100644
index 00000000..c86b4b21
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.null_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.null_out"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_null_out</api:name>
+ <api:arg>
+ <api:type>RegressTestObj**</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_null_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_null_out (RegressTestObj** obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.page
new file mode 100644
index 00000000..42f26db1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestObj</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.set_bare.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.set_bare.page
new file mode 100644
index 00000000..160b8d2b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.set_bare.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.set_bare"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_set_bare</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject*</api:type>
+ <api:name>bare</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_set_bare</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_set_bare (RegressTestObj* obj,
+ GObject* bare);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>bare</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_inout_param.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_inout_param.page
new file mode 100644
index 00000000..333d170a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_inout_param.page
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_inout_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_inout_param</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gdouble</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_skip_inout_param</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_obj_skip_inout_param (RegressTestObj* obj,
+ gint a,
+ gint* out_b,
+ gdouble c,
+ gint* inout_d,
+ gint* out_sum,
+ gint num1,
+ gint num2);
+</code></synopsis>
+
+
+ <p>Check that the out value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/>.</p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>TRUE</code> if the call succeeds, <code>FALSE</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_out_param.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_out_param.page
new file mode 100644
index 00000000..1df6c18e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_out_param.page
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_out_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_out_param</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gdouble</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_skip_out_param</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_obj_skip_out_param (RegressTestObj* obj,
+ gint a,
+ gint* out_b,
+ gdouble c,
+ gint* inout_d,
+ gint* out_sum,
+ gint num1,
+ gint num2);
+</code></synopsis>
+
+
+ <p>Check that the out value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/>.</p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>TRUE</code> if the call succeeds, <code>FALSE</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_param.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_param.page
new file mode 100644
index 00000000..deca81bd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_param.page
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_param</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gdouble</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_skip_param</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_obj_skip_param (RegressTestObj* obj,
+ gint a,
+ gint* out_b,
+ gdouble c,
+ gint* inout_d,
+ gint* out_sum,
+ gint num1,
+ gint num2);
+</code></synopsis>
+
+
+ <p>Check that a parameter is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/>.</p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>TRUE</code> if the call succeeds, <code>FALSE</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val.page
new file mode 100644
index 00000000..47402c99
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val.page
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_return_val"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_return_val</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gdouble</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint*</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_skip_return_val</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_obj_skip_return_val (RegressTestObj* obj,
+ gint a,
+ gint* out_b,
+ gdouble c,
+ gint* inout_d,
+ gint* out_sum,
+ gint num1,
+ gint num2);
+</code></synopsis>
+
+
+ <p>Check that the return value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>a <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>A return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>TRUE</code> if the call succeeds, <code>FALSE</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val_no_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val_no_out.page
new file mode 100644
index 00000000..b590de21
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.skip_return_val_no_out.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_return_val_no_out"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_return_val_no_out</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_skip_return_val_no_out</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_obj_skip_return_val_no_out (RegressTestObj* obj,
+ gint a);
+</code></synopsis>
+
+
+ <p>Check that the return value is skipped. Succeed if a is nonzero, otherwise
+raise an error.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>a <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>TRUE</code> if the call succeeds, <code>FALSE</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method.page
new file mode 100644
index 00000000..8e5c9b1e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.static_method"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>double</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_static_method</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_static_method</title>
+
+<synopsis><code mime="text/x-csrc">
+double regress_test_obj_static_method (int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method_callback.page
new file mode 100644
index 00000000..8058ac01
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.static_method_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.static_method_callback"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_static_method_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_static_method_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_static_method_callback (RegressTestCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_0.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_0.page
new file mode 100644
index 00000000..3e2fb61f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_0.page
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.torture_signature_0"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_torture_signature_0</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>double*</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_torture_signature_0</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_obj_torture_signature_0 (RegressTestObj* obj,
+ int x,
+ double* y,
+ int* z,
+ const char* foo,
+ int* q,
+ guint m);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_1.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_1.page
new file mode 100644
index 00000000..37e1ad21
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObj.torture_signature_1.page
@@ -0,0 +1,102 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.torture_signature_1"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_torture_signature_1</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>double*</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_obj_torture_signature_1</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_obj_torture_signature_1 (RegressTestObj* obj,
+ int x,
+ double* y,
+ int* z,
+ const char* foo,
+ int* q,
+ guint m);
+</code></synopsis>
+
+
+ <p>This function throws an error if m is odd.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved1.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved1.page
new file mode 100644
index 00000000..3aec1433
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved1.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObjClass._regress_reserved1"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestObjClass._regress_reserved1</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved2.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved2.page
new file mode 100644
index 00000000..8bfc4d19
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass._regress_reserved2.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObjClass._regress_reserved2"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestObjClass._regress_reserved2</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.allow_none_vfunc.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.allow_none_vfunc.page
new file mode 100644
index 00000000..b45f05d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.allow_none_vfunc.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObjClass.allow_none_vfunc"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestObjClass.allow_none_vfunc</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.matrix.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.matrix.page
new file mode 100644
index 00000000..312b198e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.matrix.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObjClass.matrix"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestObjClass.matrix</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.page
new file mode 100644
index 00000000..86db7488
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestObjClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObjClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestObjClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.page
new file mode 100644
index 00000000..7d2d53ba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestOtherError"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestOtherError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.quark.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.quark.page
new file mode 100644
index 00000000..4ed8d539
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestOtherError.quark.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestOtherError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GQuark</api:type>
+ </api:returns>
+ <api:name>regress_test_unconventional_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_unconventional_error_quark</title>
+
+<synopsis><code mime="text/x-csrc">
+GQuark regress_test_unconventional_error_quark (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateEnum.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateEnum.page
new file mode 100644
index 00000000..66b477d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateEnum.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestPrivateEnum"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestPrivateEnum</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateStruct.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateStruct.page
new file mode 100644
index 00000000..5d55c80e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestPrivateStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestPrivateStruct"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestPrivateStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestReferenceEnum.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestReferenceEnum.page
new file mode 100644
index 00000000..44c3cadb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestReferenceEnum.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestReferenceEnum"
+ type="guide"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestReferenceEnum</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.const_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.const_return.page
new file mode 100644
index 00000000..628186a0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.const_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.const_return"
+ type="topic"
+ style="function"
+ 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.TestSimpleBoxedA" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const RegressTestSimpleBoxedA*</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_const_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_simple_boxed_a_const_return</title>
+
+<synopsis><code mime="text/x-csrc">
+const RegressTestSimpleBoxedA* regress_test_simple_boxed_a_const_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.copy.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.copy.page
new file mode 100644
index 00000000..4e7cf0e8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.copy.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.copy"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestSimpleBoxedA*</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_copy</api:name>
+ <api:arg>
+ <api:type>RegressTestSimpleBoxedA*</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_simple_boxed_a_copy</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestSimpleBoxedA* regress_test_simple_boxed_a_copy (RegressTestSimpleBoxedA* a);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.equals.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.equals.page
new file mode 100644
index 00000000..5e5dcbda
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.equals.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.equals"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_equals</api:name>
+ <api:arg>
+ <api:type>RegressTestSimpleBoxedA*</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestSimpleBoxedA*</api:type>
+ <api:name>other_a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_simple_boxed_a_equals</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_simple_boxed_a_equals (RegressTestSimpleBoxedA* a,
+ RegressTestSimpleBoxedA* other_a);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+
+</item>
+<item>
+<title><code>other_a</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.page
new file mode 100644
index 00000000..08f968fe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedA.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.copy.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.copy.page
new file mode 100644
index 00000000..fd593150
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.copy.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedB.copy"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestSimpleBoxedB*</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_b_copy</api:name>
+ <api:arg>
+ <api:type>RegressTestSimpleBoxedB*</api:type>
+ <api:name>b</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_simple_boxed_b_copy</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestSimpleBoxedB* regress_test_simple_boxed_b_copy (RegressTestSimpleBoxedB* b);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>b</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.page
new file mode 100644
index 00000000..2ed2304d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleBoxedB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedB"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleBoxedB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleCallback.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleCallback.page
new file mode 100644
index 00000000..f8157820
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSimpleCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.clone.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.clone.page
new file mode 100644
index 00000000..9b4d353b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.clone.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA.clone"
+ type="topic"
+ style="method"
+ 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.TestStructA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_a_clone</api:name>
+ <api:arg>
+ <api:type>RegressTestStructA*</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestStructA*</api:type>
+ <api:name>a_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_struct_a_clone</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_struct_a_clone (RegressTestStructA* a,
+ RegressTestStructA* a_out);
+</code></synopsis>
+
+
+ <p>Make a copy of a RegressTestStructA</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>the structure</p>
+</item>
+<item>
+<title><code>a_out</code></title>
+<p>the cloned structure</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.page
new file mode 100644
index 00000000..22a1e907
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructA</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.parse.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.parse.page
new file mode 100644
index 00000000..befbd7ce
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructA.parse.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA.parse"
+ type="topic"
+ style="function"
+ 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.TestStructA" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_a_parse</api:name>
+ <api:arg>
+ <api:type>RegressTestStructA*</api:type>
+ <api:name>a_out</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const gchar*</api:type>
+ <api:name>string</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_struct_a_parse</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_struct_a_parse (RegressTestStructA* a_out,
+ const gchar* string);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>a_out</code></title>
+<p>the structure that is to be filled</p>
+</item>
+<item>
+<title><code>string</code></title>
+<p>ignored</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.clone.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.clone.page
new file mode 100644
index 00000000..b3a9f993
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.clone.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructB.clone"
+ type="topic"
+ style="method"
+ 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.TestStructB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_b_clone</api:name>
+ <api:arg>
+ <api:type>RegressTestStructB*</api:type>
+ <api:name>b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestStructB*</api:type>
+ <api:name>b_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_struct_b_clone</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_struct_b_clone (RegressTestStructB* b,
+ RegressTestStructB* b_out);
+</code></synopsis>
+
+
+ <p>Make a copy of a RegressTestStructB</p>
+
+
+
+
+<terms>
+<item>
+<title><code>b</code></title>
+<p>the structure</p>
+</item>
+<item>
+<title><code>b_out</code></title>
+<p>the cloned structure</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.page
new file mode 100644
index 00000000..4ed2b54c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructB"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructC.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructC.page
new file mode 100644
index 00000000..f208fcd8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructC.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructC"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructC</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructD.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructD.page
new file mode 100644
index 00000000..f791d70b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructD.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructD"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructD</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructE.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructE.page
new file mode 100644
index 00000000..ccc8bbd8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructE.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructE"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructE</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructE__some_union__union.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructE__some_union__union.page
new file mode 100644
index 00000000..3b81e621
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructE__some_union__union.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructE__some_union__union"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructE__some_union__union</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructF.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructF.page
new file mode 100644
index 00000000..74e8483f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructF.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructF"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructF</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.frob.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.frob.page
new file mode 100644
index 00000000..7d5ed650
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.frob.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructFixedArray.frob"
+ type="topic"
+ style="method"
+ 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.TestStructFixedArray" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_fixed_array_frob</api:name>
+ <api:arg>
+ <api:type>RegressTestStructFixedArray*</api:type>
+ <api:name>str</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_struct_fixed_array_frob</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray* str);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>str</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.page
new file mode 100644
index 00000000..f33eed98
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestStructFixedArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructFixedArray"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructFixedArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.instance_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.instance_method.page
new file mode 100644
index 00000000..fa401f55
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.instance_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.instance_method"
+ type="topic"
+ style="method"
+ 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.TestSubObj" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_instance_method</api:name>
+ <api:arg>
+ <api:type>RegressTestSubObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_sub_obj_instance_method</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_sub_obj_instance_method (RegressTestSubObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.new.page
new file mode 100644
index 00000000..fbff9d9f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.new"
+ type="topic"
+ style="constructor"
+ 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.TestSubObj" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestObj*</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_sub_obj_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestObj* regress_test_sub_obj_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.page
new file mode 100644
index 00000000..7c6cb98d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.page
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestSubObj</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestObj</code>
+ <item>
+ <code>Regress.TestSubObj</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.unset_bare.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.unset_bare.page
new file mode 100644
index 00000000..5497c250
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObj.unset_bare.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.unset_bare"
+ type="topic"
+ style="method"
+ 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.TestSubObj" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_unset_bare</api:name>
+ <api:arg>
+ <api:type>RegressTestSubObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_sub_obj_unset_bare</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_sub_obj_unset_bare (RegressTestSubObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObjClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObjClass.page
new file mode 100644
index 00000000..89543341
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestSubObjClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObjClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestSubObjClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestTypeGUInt64.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestTypeGUInt64.page
new file mode 100644
index 00000000..e0a7bc09
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestTypeGUInt64.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestTypeGUInt64"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestTypeGUInt64</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x-testbool.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x-testbool.page
new file mode 100644
index 00000000..47ad7bed
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x-testbool.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x-testbool"
+ type="topic"
+ style="property"
+ 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.TestWi8021x" group="property" type="guide"/>
+ <title type="link" role="topic">testbool</title>
+
+ </info>
+ <title>Regress.TestWi8021x:testbool</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.get_testbool.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.get_testbool.page
new file mode 100644
index 00000000..9153172c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.get_testbool.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.get_testbool"
+ type="topic"
+ style="method"
+ 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.TestWi8021x" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_get_testbool</api:name>
+ <api:arg>
+ <api:type>RegressTestWi8021x*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_wi_802_1x_get_testbool</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_wi_802_1x_get_testbool (RegressTestWi8021x* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.new.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.new.page
new file mode 100644
index 00000000..7afe8b1b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.new.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.new"
+ type="topic"
+ style="constructor"
+ 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.TestWi8021x" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestWi8021x*</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_wi_802_1x_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestWi8021x* regress_test_wi_802_1x_new (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.page
new file mode 100644
index 00000000..29658734
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestWi8021x</title>
+
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestWi8021x</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-csrc"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.set_testbool.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.set_testbool.page
new file mode 100644
index 00000000..bad3b1d0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.set_testbool.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.set_testbool"
+ type="topic"
+ style="method"
+ 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.TestWi8021x" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_set_testbool</api:name>
+ <api:arg>
+ <api:type>RegressTestWi8021x*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gboolean</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_wi_802_1x_set_testbool</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_wi_802_1x_set_testbool (RegressTestWi8021x* obj,
+ gboolean v);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>v</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.static_method.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.static_method.page
new file mode 100644
index 00000000..c0e98dfb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021x.static_method.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.static_method"
+ type="topic"
+ style="function"
+ 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.TestWi8021x" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_static_method</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_wi_802_1x_static_method</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_wi_802_1x_static_method (int x);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021xClass.page b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021xClass.page
new file mode 100644
index 00000000..59593031
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.TestWi8021xClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021xClass"
+ type="topic"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestWi8021xClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.VaListAlias.page b/tests/scanner/Regress-1.0-C-expected/Regress.VaListAlias.page
new file mode 100644
index 00000000..6b7d031c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.VaListAlias.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.VaListAlias"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.VaListAlias</title>
+
+
+
+ <p>Typedef'd va_list for additional reasons</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.aliased_caller_alloc.page b/tests/scanner/Regress-1.0-C-expected/Regress.aliased_caller_alloc.page
new file mode 100644
index 00000000..769da09a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.aliased_caller_alloc.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.aliased_caller_alloc"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_aliased_caller_alloc</api:name>
+ <api:arg>
+ <api:type>RegressAliasedTestBoxed*</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_aliased_caller_alloc</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_aliased_caller_alloc (RegressAliasedTestBoxed* boxed);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_attribute_func.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_attribute_func.page
new file mode 100644
index 00000000..dbf8b828
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_attribute_func.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_attribute_func"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_annotation_attribute_func</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const gchar*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_attribute_func</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_annotation_attribute_func (RegressAnnotationObject* object,
+ const gchar* data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>A <link xref="Regress.AnnotationObject"/>.</p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>Some data.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>The return value.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_custom_destroy.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_custom_destroy.page
new file mode 100644
index 00000000..2a474a5e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_custom_destroy.page
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_custom_destroy"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_custom_destroy</api:name>
+ <api:arg>
+ <api:type>RegressAnnotationCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressAnnotationNotifyFunc</api:type>
+ <api:name>destroy</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_custom_destroy</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_custom_destroy (RegressAnnotationCallback callback,
+ RegressAnnotationNotifyFunc destroy,
+ gpointer data);
+</code></synopsis>
+
+
+ <p>Test messing up the heuristic of closure/destroy-notification
+detection, and fixing it via annotations.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+<p>Destroy notification</p>
+</item>
+<item>
+<title><code>destroy</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_get_source_file.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_get_source_file.page
new file mode 100644
index 00000000..a76bade1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_get_source_file.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_get_source_file"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>char*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_get_source_file</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_get_source_file</title>
+
+<synopsis><code mime="text/x-csrc">
+char* regress_annotation_get_source_file (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>Source file</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_init.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_init.page
new file mode 100644
index 00000000..d2f479a1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_init.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_init"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_init</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>argc</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>char***</api:type>
+ <api:name>argv</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_init</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_init (int* argc,
+ char*** argv);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>argc</code></title>
+<p>The number of args.</p>
+</item>
+<item>
+<title><code>argv</code></title>
+<p>The arguments.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_invalid_regress_annotation.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_invalid_regress_annotation.page
new file mode 100644
index 00000000..e0399cd0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_invalid_regress_annotation.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_invalid_regress_annotation"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_invalid_regress_annotation</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_invalid_regress_annotation</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_invalid_regress_annotation (int foo);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>foo</code></title>
+<p>some text (e.g. example) or else</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_ptr_array.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_ptr_array.page
new file mode 100644
index 00000000..3b83de9a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_ptr_array.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_ptr_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_ptr_array</api:name>
+ <api:arg>
+ <api:type>GValue*</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_ptr_array</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_ptr_array (GValue* array);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+<p>the array</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_array.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_array.page
new file mode 100644
index 00000000..d13fee56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_array.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_return_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_return_array</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_return_array</title>
+
+<synopsis><code mime="text/x-csrc">
+char** regress_annotation_return_array (int* length);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>length</code></title>
+<p>Number of return values</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>The return value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_filename.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_filename.page
new file mode 100644
index 00000000..2e484581
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_return_filename.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_return_filename"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gchar*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_return_filename</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_return_filename</title>
+
+<synopsis><code mime="text/x-csrc">
+gchar* regress_annotation_return_filename (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>An annotated filename</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_set_source_file.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_set_source_file.page
new file mode 100644
index 00000000..84c616f9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_set_source_file.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_set_source_file"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_set_source_file</api:name>
+ <api:arg>
+ <api:type>char*</api:type>
+ <api:name>fname</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_set_source_file</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_set_source_file (char* fname);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>fname</code></title>
+<p>Source file</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_space_after_comment_bug631690.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_space_after_comment_bug631690.page
new file mode 100644
index 00000000..39cd529d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_space_after_comment_bug631690.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_space_after_comment_bug631690"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_space_after_comment_bug631690</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_space_after_comment_bug631690</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_space_after_comment_bug631690 (void);
+</code></synopsis>
+
+
+ <p>Explicitly test having a space after the ** here.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_array_length.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_array_length.page
new file mode 100644
index 00000000..5d3813d7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_array_length.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_array_length"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_array_length</api:name>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>n_properties</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>utf8*</api:type>
+ <api:name>properties</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_string_array_length</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_string_array_length (guint n_properties,
+ utf8* properties);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_properties</code></title>
+
+</item>
+<item>
+<title><code>properties</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated.page
new file mode 100644
index 00000000..8c685547
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_zero_terminated"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_zero_terminated</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_string_zero_terminated</title>
+
+<synopsis><code mime="text/x-csrc">
+char** regress_annotation_string_zero_terminated (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>The return value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated_out.page
new file mode 100644
index 00000000..13eb1ca1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_string_zero_terminated_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_zero_terminated_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_zero_terminated_out</api:name>
+ <api:arg>
+ <api:type>char***</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_string_zero_terminated_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_string_zero_terminated_out (char*** out);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_test_parsing_bug630862.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_test_parsing_bug630862.page
new file mode 100644
index 00000000..6fc0ad4b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_test_parsing_bug630862.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_test_parsing_bug630862"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_test_parsing_bug630862</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_test_parsing_bug630862</title>
+
+<synopsis><code mime="text/x-csrc">
+GObject* regress_annotation_test_parsing_bug630862 (void);
+</code></synopsis>
+
+
+ <p>See https://bugzilla.gnome.org/show_bug.cgi?id=630862</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>An object, note the colon:in here</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page
new file mode 100644
index 00000000..4db50ca2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_transfer_floating.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_transfer_floating"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject*</api:type>
+ </api:returns>
+ <api:name>regress_annotation_transfer_floating</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_transfer_floating</title>
+
+<synopsis><code mime="text/x-csrc">
+GObject* regress_annotation_transfer_floating (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>A floating object</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.annotation_versioned.page b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_versioned.page
new file mode 100644
index 00000000..f12a3cf8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.annotation_versioned.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_versioned"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_versioned</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_annotation_versioned</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_annotation_versioned (void);
+</code></synopsis>
+
+
+
+
+
+ <p>Since 0.6</p>
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.atest_error_quark.page b/tests/scanner/Regress-1.0-C-expected/Regress.atest_error_quark.page
new file mode 100644
index 00000000..75bc68c6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.atest_error_quark.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.atest_error_quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GQuark</api:type>
+ </api:returns>
+ <api:name>regress_atest_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_atest_error_quark</title>
+
+<synopsis><code mime="text/x-csrc">
+GQuark regress_atest_error_quark (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_async_ready_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_async_ready_callback.page
new file mode 100644
index 00000000..eadb6136
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_async_ready_callback.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_async_ready_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_async_ready_callback</api:name>
+ <api:arg>
+ <api:type>GCancellable*</api:type>
+ <api:name>cancellable</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GAsyncReadyCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_async_ready_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_async_ready_callback (GCancellable* cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>cancellable</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_destroy_notify_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_destroy_notify_callback.page
new file mode 100644
index 00000000..b37a287c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_destroy_notify_callback.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_destroy_notify_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_destroy_notify_callback</api:name>
+ <api:arg>
+ <api:type>RegressFooCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GDestroyNotify</api:type>
+ <api:name>destroy</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_destroy_notify_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_destroy_notify_callback (RegressFooCallback callback,
+ gpointer data,
+ GDestroyNotify destroy);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>destroy</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_init.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_init.page
new file mode 100644
index 00000000..f035be53
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_init.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_init"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_foo_init</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_init</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_foo_init (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_method_external_references.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_method_external_references.page
new file mode 100644
index 00000000..5eef0df9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_method_external_references.page
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_method_external_references"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_method_external_references</api:name>
+ <api:arg>
+ <api:type>UtilityObject*</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>UtilityEnumType</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>UtilityFlagType</api:type>
+ <api:name>f</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>UtilityStruct</api:type>
+ <api:name>s</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_method_external_references</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_method_external_references (UtilityObject* object,
+ UtilityEnumType e,
+ UtilityFlagType f,
+ UtilityStruct s);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>f</code></title>
+
+</item>
+<item>
+<title><code>s</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_not_a_constructor_new.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_not_a_constructor_new.page
new file mode 100644
index 00000000..63d57662
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_not_a_constructor_new.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_not_a_constructor_new"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressFooObject*</api:type>
+ </api:returns>
+ <api:name>regress_foo_not_a_constructor_new</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_not_a_constructor_new</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressFooObject* regress_foo_not_a_constructor_new (void);
+</code></synopsis>
+
+
+ <p>This should be scanned as a top-level function, and shouldn't cause
+a "Can't find matching type for constructor" warning.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_skip_me.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_skip_me.page
new file mode 100644
index 00000000..96773b38
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_skip_me.page
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_skip_me"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_skip_me</api:name>
+ <api:arg>
+ <api:type>RegressFooSkippable</api:type>
+ <api:name>fs</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_skip_me</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_skip_me (RegressFooSkippable fs);
+</code></synopsis>
+
+
+ <p>Does something that's only interesting from C and should not be
+exposed to language bindings.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>fs</code></title>
+<p>a <link xref="Regress.FooSkippable"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant.page
new file mode 100644
index 00000000..41e570ff
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_some_variant"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_some_variant</api:name>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>va_list</api:type>
+ <api:name>args</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_some_variant</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_some_variant (guint x,
+ va_list args);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>args</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant_ptr.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant_ptr.page
new file mode 100644
index 00000000..81483f1a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_some_variant_ptr.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_some_variant_ptr"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_some_variant_ptr</api:name>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>va_list*</api:type>
+ <api:name>args</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_some_variant_ptr</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_some_variant_ptr (guint x,
+ va_list* args);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>args</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_array.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_array.page
new file mode 100644
index 00000000..810eba9a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_array.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_array</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_array</title>
+
+<synopsis><code mime="text/x-csrc">
+GArray* regress_foo_test_array (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_param.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_param.page
new file mode 100644
index 00000000..57ca7b34
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_param.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_char_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_char_param</api:name>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_const_char_param</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_const_char_param (const char* param);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_retval.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_retval.page
new file mode 100644
index 00000000..839bee2c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_char_retval.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_char_retval"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const char*</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_char_retval</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_const_char_retval</title>
+
+<synopsis><code mime="text/x-csrc">
+const char* regress_foo_test_const_char_retval (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_param.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_param.page
new file mode 100644
index 00000000..00a1e075
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_param.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_struct_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_struct_param</api:name>
+ <api:arg>
+ <api:type>const RegressFooStruct*</api:type>
+ <api:name>param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_const_struct_param</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_const_struct_param (const RegressFooStruct* param);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_retval.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_retval.page
new file mode 100644
index 00000000..527b8ea1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_const_struct_retval.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_struct_retval"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const RegressFooStruct*</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_struct_retval</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_const_struct_retval</title>
+
+<synopsis><code mime="text/x-csrc">
+const RegressFooStruct* regress_foo_test_const_struct_retval (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array.page
new file mode 100644
index 00000000..17bf08a5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_string_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_string_array</api:name>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_string_array</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_string_array (char** array);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array_with_g.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array_with_g.page
new file mode 100644
index 00000000..91d5824c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_string_array_with_g.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_string_array_with_g"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_string_array_with_g</api:name>
+ <api:arg>
+ <api:type>gchar**</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_string_array_with_g</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_string_array_with_g (gchar** array);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_qualifier.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_qualifier.page
new file mode 100644
index 00000000..8e023665
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_qualifier.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_unsigned_qualifier"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_unsigned_qualifier</api:name>
+ <api:arg>
+ <api:type>unsigned int</api:type>
+ <api:name>unsigned_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_unsigned_qualifier</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_unsigned_qualifier (unsigned int unsigned_param);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>unsigned_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_type.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_type.page
new file mode 100644
index 00000000..04eec058
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_unsigned_type.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_unsigned_type"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_unsigned_type</api:name>
+ <api:arg>
+ <api:type>unsigned</api:type>
+ <api:name>unsigned_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_unsigned_type</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_unsigned_type (unsigned unsigned_param);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>unsigned_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback.page
new file mode 100644
index 00000000..210f53ca
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_varargs_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_varargs_callback</api:name>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressFooVarargsCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_varargs_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_varargs_callback (gint i,
+ RegressFooVarargsCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback2.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback2.page
new file mode 100644
index 00000000..1d49d318
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback2.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_varargs_callback2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_varargs_callback2</api:name>
+ <api:arg>
+ <api:type>RegressFooVarargsCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_varargs_callback2</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_varargs_callback2 (RegressFooVarargsCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback3.page b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback3.page
new file mode 100644
index 00000000..19c19326
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.foo_test_varargs_callback3.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_varargs_callback3"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_varargs_callback3</api:name>
+ <api:arg>
+ <api:type>RegressFooVarargsCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressFooVarargsCallback</api:type>
+ <api:name>callback2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_foo_test_varargs_callback3</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_foo_test_varargs_callback3 (RegressFooVarargsCallback callback,
+ RegressFooVarargsCallback callback2);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>callback2</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.func_obj_null_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.func_obj_null_in.page
new file mode 100644
index 00000000..40093e2c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.func_obj_null_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.func_obj_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_func_obj_null_in</api:name>
+ <api:arg>
+ <api:type>RegressTestObj*</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_func_obj_null_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_func_obj_null_in (RegressTestObj* obj);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.global_get_flags_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.global_get_flags_out.page
new file mode 100644
index 00000000..a43baa0c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.global_get_flags_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.global_get_flags_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_global_get_flags_out</api:name>
+ <api:arg>
+ <api:type>RegressTestFlags*</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_global_get_flags_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_global_get_flags_out (RegressTestFlags* v);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>v</code></title>
+<p>A flags value</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.has_parameter_named_attrs.page b/tests/scanner/Regress-1.0-C-expected/Regress.has_parameter_named_attrs.page
new file mode 100644
index 00000000..6fd4e6b9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.has_parameter_named_attrs.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.has_parameter_named_attrs"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_has_parameter_named_attrs</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer*</api:type>
+ <api:name>attributes</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_has_parameter_named_attrs</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_has_parameter_named_attrs (int foo,
+ gpointer* attributes);
+</code></synopsis>
+
+
+ <p>This test case mirrors GnomeKeyringPasswordSchema from
+libgnome-keyring.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>foo</code></title>
+<p>some int</p>
+</item>
+<item>
+<title><code>attributes</code></title>
+<p>list of attributes</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.introspectable_via_alias.page b/tests/scanner/Regress-1.0-C-expected/Regress.introspectable_via_alias.page
new file mode 100644
index 00000000..4d30ec54
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.introspectable_via_alias.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.introspectable_via_alias"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_introspectable_via_alias</api:name>
+ <api:arg>
+ <api:type>RegressPtrArrayAlias*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_introspectable_via_alias</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_introspectable_via_alias (RegressPtrArrayAlias* data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.not_introspectable_via_alias.page b/tests/scanner/Regress-1.0-C-expected/Regress.not_introspectable_via_alias.page
new file mode 100644
index 00000000..6158db44
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.not_introspectable_via_alias.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.not_introspectable_via_alias"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_not_introspectable_via_alias</api:name>
+ <api:arg>
+ <api:type>RegressVaListAlias</api:type>
+ <api:name>ok</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_not_introspectable_via_alias</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_not_introspectable_via_alias (RegressVaListAlias ok);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ok</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.random_function_with_skipped_structure.page b/tests/scanner/Regress-1.0-C-expected/Regress.random_function_with_skipped_structure.page
new file mode 100644
index 00000000..33049796
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.random_function_with_skipped_structure.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.random_function_with_skipped_structure"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_random_function_with_skipped_structure</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressSkippedStructure*</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>double</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_random_function_with_skipped_structure</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_random_function_with_skipped_structure (int x,
+ RegressSkippedStructure* foo,
+ double v);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>v</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.set_abort_on_error.page b/tests/scanner/Regress-1.0-C-expected/Regress.set_abort_on_error.page
new file mode 100644
index 00000000..2853609a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.set_abort_on_error.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.set_abort_on_error"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_set_abort_on_error</api:name>
+ <api:arg>
+ <api:type>gboolean</api:type>
+ <api:name>abort_on_error</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_set_abort_on_error</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_set_abort_on_error (gboolean abort_on_error);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>abort_on_error</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_callback.page
new file mode 100644
index 00000000..ee1afcd3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackArray</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_array_callback (RegressTestCallbackArray callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_out_objects.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_out_objects.page
new file mode 100644
index 00000000..81109158
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_out_objects.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_out_objects"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_out_objects</api:name>
+ <api:arg>
+ <api:type>RegressTestObj***</api:type>
+ <api:name>objs</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_fixed_out_objects</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_array_fixed_out_objects (RegressTestObj*** objs);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>objs</code></title>
+<p>An array of <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_in.page
new file mode 100644
index 00000000..21c6d9f3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_in</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_fixed_size_int_in</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_array_fixed_size_int_in (int* ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>a list of 5 integers</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the sum of the items in <code>ints</code></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_out.page
new file mode 100644
index 00000000..3fa5c4e7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_out</api:name>
+ <api:arg>
+ <api:type>int**</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_fixed_size_int_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_array_fixed_size_int_out (int** ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>a list of 5 integers ranging from 0 to 4</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_return.page
new file mode 100644
index 00000000..913dc0d6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_fixed_size_int_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int*</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_fixed_size_int_return</title>
+
+<synopsis><code mime="text/x-csrc">
+int* regress_test_array_fixed_size_int_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>a list of 5 integers ranging from 0 to 4</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint16_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint16_in.page
new file mode 100644
index 00000000..7d05b00c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint16_in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint16_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint16_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint16*</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_gint16_in</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_array_gint16_in (int n_ints,
+ gint16* ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint32_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint32_in.page
new file mode 100644
index 00000000..c5eee2de
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint32_in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint32_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint32</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint32_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint32*</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_gint32_in</title>
+
+<synopsis><code mime="text/x-csrc">
+gint32 regress_test_array_gint32_in (int n_ints,
+ gint32* ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint64_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint64_in.page
new file mode 100644
index 00000000..7a7701d6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint64_in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint64_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint64</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint64_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint64*</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_gint64_in</title>
+
+<synopsis><code mime="text/x-csrc">
+gint64 regress_test_array_gint64_in (int n_ints,
+ gint64* ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint8_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint8_in.page
new file mode 100644
index 00000000..8e685793
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gint8_in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint8_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint8_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gint8*</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_gint8_in</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_array_gint8_in (int n_ints,
+ gint8* ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gtype_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gtype_in.page
new file mode 100644
index 00000000..0eab274d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_gtype_in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gtype_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>char*</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gtype_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_types</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GType*</api:type>
+ <api:name>types</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_gtype_in</title>
+
+<synopsis><code mime="text/x-csrc">
+char* regress_test_array_gtype_in (int n_types,
+ GType* types);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_types</code></title>
+
+</item>
+<item>
+<title><code>types</code></title>
+<p>List of types</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>string representation of provided types</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_full_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_full_out.page
new file mode 100644
index 00000000..5eb26d6b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_full_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_full_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int*</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_full_out</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_int_full_out</title>
+
+<synopsis><code mime="text/x-csrc">
+int* regress_test_array_int_full_out (int* len);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>len</code></title>
+<p>length of the returned array.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>a new array of integers.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_in.page
new file mode 100644
index 00000000..0caeee19
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_int_in</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_array_int_in (int n_ints,
+ int* ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_inout.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_inout.page
new file mode 100644
index 00000000..75d142a0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_inout.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_inout"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_inout</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int**</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_int_inout</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_array_int_inout (int* n_ints,
+ int** ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+<p>the length of <code>ints</code></p>
+</item>
+<item>
+<title><code>ints</code></title>
+<p>a list of integers whose items will be increased by 1, except the first that will be dropped</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_none_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_none_out.page
new file mode 100644
index 00000000..c4698cef
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_none_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_none_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int*</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_none_out</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_int_none_out</title>
+
+<synopsis><code mime="text/x-csrc">
+int* regress_test_array_int_none_out (int* len);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>len</code></title>
+<p>length of the returned array.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>a static array of integers.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_in.page
new file mode 100644
index 00000000..bab17416
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_in.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_null_in</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_int_null_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_array_int_null_in (int* arr,
+ int len);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+<item>
+<title><code>len</code></title>
+<p>length</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_out.page
new file mode 100644
index 00000000..cdf6bdaa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_null_out.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_null_out</api:name>
+ <api:arg>
+ <api:type>int**</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_int_null_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_array_int_null_out (int** arr,
+ int* len);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+<item>
+<title><code>len</code></title>
+<p>length</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_out.page
new file mode 100644
index 00000000..b88feb22
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_array_int_out.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_out</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int**</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_array_int_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_array_int_out (int* n_ints,
+ int** ints);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+<p>the length of <code>ints</code></p>
+</item>
+<item>
+<title><code>ints</code></title>
+<p>a list of 5 integers, from 0 to 4 in consecutive order</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_async_ready_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_async_ready_callback.page
new file mode 100644
index 00000000..bd65df08
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_async_ready_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_async_ready_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_async_ready_callback</api:name>
+ <api:arg>
+ <api:type>GAsyncReadyCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_async_ready_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_async_ready_callback (GAsyncReadyCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean.page
new file mode 100644
index 00000000..a444eb2a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean</api:name>
+ <api:arg>
+ <api:type>gboolean</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boolean</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_boolean (gboolean in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_false.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_false.page
new file mode 100644
index 00000000..c96a2f9d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_false.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean_false"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean_false</api:name>
+ <api:arg>
+ <api:type>gboolean</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boolean_false</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_boolean_false (gboolean in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_true.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_true.page
new file mode 100644
index 00000000..1fb64c17
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_boolean_true.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean_true"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean_true</api:name>
+ <api:arg>
+ <api:type>gboolean</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_boolean_true</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_boolean_true (gboolean in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_full_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_full_return.page
new file mode 100644
index 00000000..8ada9d2c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_full_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_context_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo_t*</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_context_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_cairo_context_full_return</title>
+
+<synopsis><code mime="text/x-csrc">
+cairo_t* regress_test_cairo_context_full_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_none_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_none_in.page
new file mode 100644
index 00000000..059afd52
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_context_none_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_context_none_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_context_none_in</api:name>
+ <api:arg>
+ <api:type>cairo_t*</api:type>
+ <api:name>context</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_cairo_context_none_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_cairo_context_none_in (cairo_t* context);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>context</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_out.page
new file mode 100644
index 00000000..c04a3454
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_full_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_full_out</api:name>
+ <api:arg>
+ <api:type>cairo_surface_t**</api:type>
+ <api:name>surface</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_cairo_surface_full_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_cairo_surface_full_out (cairo_surface_t** surface);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>surface</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_return.page
new file mode 100644
index 00000000..7d77ae66
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_full_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo_surface_t*</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_cairo_surface_full_return</title>
+
+<synopsis><code mime="text/x-csrc">
+cairo_surface_t* regress_test_cairo_surface_full_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_in.page
new file mode 100644
index 00000000..67302474
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_none_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_none_in</api:name>
+ <api:arg>
+ <api:type>cairo_surface_t*</api:type>
+ <api:name>surface</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_cairo_surface_none_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_cairo_surface_none_in (cairo_surface_t* surface);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>surface</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_return.page
new file mode 100644
index 00000000..a5ac661c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_cairo_surface_none_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_none_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo_surface_t*</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_none_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_cairo_surface_none_return</title>
+
+<synopsis><code mime="text/x-csrc">
+cairo_surface_t* regress_test_cairo_surface_none_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback.page
new file mode 100644
index 00000000..7d2f2c8d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_callback (RegressTestCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_async.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_async.page
new file mode 100644
index 00000000..8c0a62e8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_async.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_async"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_async</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_callback_async</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_callback_async (RegressTestCallbackUserData callback,
+ gpointer user_data);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify.page
new file mode 100644
index 00000000..f7a5e56c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify.page
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_destroy_notify"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_destroy_notify</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GDestroyNotify</api:type>
+ <api:name>notify</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_callback_destroy_notify</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_callback_destroy_notify (RegressTestCallbackUserData callback,
+ gpointer user_data,
+ GDestroyNotify notify);
+</code></synopsis>
+
+
+ <p>Notified - callback persists until a DestroyNotify delegate
+is invoked.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>notify</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify_no_user_data.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify_no_user_data.page
new file mode 100644
index 00000000..3b162e28
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_destroy_notify_no_user_data.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_destroy_notify_no_user_data"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_destroy_notify_no_user_data</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GDestroyNotify</api:type>
+ <api:name>notify</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_callback_destroy_notify_no_user_data</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_callback_destroy_notify_no_user_data (RegressTestCallbackUserData callback,
+ GDestroyNotify notify);
+</code></synopsis>
+
+
+ <p>Adds a scope notified callback with no user data. This can invoke an error
+condition in bindings which needs to be tested.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>notify</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_async.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_async.page
new file mode 100644
index 00000000..5cc15570
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_async.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_thaw_async"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_thaw_async</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_callback_thaw_async</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_callback_thaw_async (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_notifications.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_notifications.page
new file mode 100644
index 00000000..bb0ed81a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_thaw_notifications.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_thaw_notifications"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_thaw_notifications</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_callback_thaw_notifications</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_callback_thaw_notifications (void);
+</code></synopsis>
+
+
+ <p>Invokes all callbacks installed by #test_callback_destroy_notify(),
+adding up their return values, and removes them, invoking the
+corresponding destroy notfications.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>Sum of the return values of the invoked callbacks.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_user_data.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_user_data.page
new file mode 100644
index 00000000..3a98a475
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_callback_user_data.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_user_data"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_user_data</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_callback_user_data</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_callback_user_data (RegressTestCallbackUserData callback,
+ gpointer user_data);
+</code></synopsis>
+
+
+ <p>Call - callback parameter persists for the duration of the method
+call and can be released on return.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_closure.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_closure.page
new file mode 100644
index 00000000..0fdad912
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_closure.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_closure</api:name>
+ <api:arg>
+ <api:type>GClosure*</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_closure</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_closure (GClosure* closure);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_closure_one_arg.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_closure_one_arg.page
new file mode 100644
index 00000000..0708b5c8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_closure_one_arg.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure_one_arg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_closure_one_arg</api:name>
+ <api:arg>
+ <api:type>GClosure*</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>arg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_closure_one_arg</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_closure_one_arg (GClosure* closure,
+ int arg);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+
+</item>
+<item>
+<title><code>arg</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_closure_variant.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_closure_variant.page
new file mode 100644
index 00000000..681b37ae
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_closure_variant.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure_variant"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GVariant*</api:type>
+ </api:returns>
+ <api:name>regress_test_closure_variant</api:name>
+ <api:arg>
+ <api:type>GClosure*</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GVariant*</api:type>
+ <api:name>arg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_closure_variant</title>
+
+<synopsis><code mime="text/x-csrc">
+GVariant* regress_test_closure_variant (GClosure* closure,
+ GVariant* arg);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+<p>GClosure which takes one GVariant and returns a GVariant</p>
+</item>
+<item>
+<title><code>arg</code></title>
+<p>a GVariant passed as argument to <code>closure</code></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the return value of <code>closure</code></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_date_in_gvalue.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_date_in_gvalue.page
new file mode 100644
index 00000000..adb21f28
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_date_in_gvalue.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_date_in_gvalue"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GValue*</api:type>
+ </api:returns>
+ <api:name>regress_test_date_in_gvalue</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_date_in_gvalue</title>
+
+<synopsis><code mime="text/x-csrc">
+GValue* regress_test_date_in_gvalue (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_def_error_quark.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_def_error_quark.page
new file mode 100644
index 00000000..7ad7eb06
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_def_error_quark.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_def_error_quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GQuark</api:type>
+ </api:returns>
+ <api:name>regress_test_def_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_def_error_quark</title>
+
+<synopsis><code mime="text/x-csrc">
+GQuark regress_test_def_error_quark (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_double.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_double.page
new file mode 100644
index 00000000..f954fe83
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_double.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_double"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gdouble</api:type>
+ </api:returns>
+ <api:name>regress_test_double</api:name>
+ <api:arg>
+ <api:type>gdouble</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_double</title>
+
+<synopsis><code mime="text/x-csrc">
+gdouble regress_test_double (gdouble in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_filename_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_filename_return.page
new file mode 100644
index 00000000..857e4da0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_filename_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_filename_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GSList*</api:type>
+ </api:returns>
+ <api:name>regress_test_filename_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_filename_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GSList* regress_test_filename_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>list of strings</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_float.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_float.page
new file mode 100644
index 00000000..c395b048
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_float.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_float"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gfloat</api:type>
+ </api:returns>
+ <api:name>regress_test_float</api:name>
+ <api:arg>
+ <api:type>gfloat</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_float</title>
+
+<synopsis><code mime="text/x-csrc">
+gfloat regress_test_float (gfloat in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_garray_container_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_garray_container_return.page
new file mode 100644
index 00000000..f17cdd94
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_garray_container_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_garray_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_test_garray_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_garray_container_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GPtrArray* regress_test_garray_container_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_garray_full_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_garray_full_return.page
new file mode 100644
index 00000000..b127ed7f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_garray_full_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_garray_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_test_garray_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_garray_full_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GPtrArray* regress_test_garray_full_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gerror_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gerror_callback.page
new file mode 100644
index 00000000..1a5f54cc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gerror_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gerror_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_gerror_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_gerror_callback (RegressTestCallbackGError callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_container_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_container_return.page
new file mode 100644
index 00000000..d465113e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_container_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_container_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GHashTable* regress_test_ghash_container_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_everything_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_everything_return.page
new file mode 100644
index 00000000..616432ae
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_everything_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_everything_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GHashTable* regress_test_ghash_everything_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_in.page
new file mode 100644
index 00000000..b6d2da5f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_gvalue_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_gvalue_in</api:name>
+ <api:arg>
+ <api:type>GHashTable*</api:type>
+ <api:name>hash</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_gvalue_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_ghash_gvalue_in (GHashTable* hash);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>hash</code></title>
+<p>the hash table returned by <link xref="Regress.test_ghash_gvalue_return"/>.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_return.page
new file mode 100644
index 00000000..2e739c81
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_gvalue_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_gvalue_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_gvalue_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_gvalue_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GHashTable* regress_test_ghash_gvalue_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return.page
new file mode 100644
index 00000000..6b53197b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nested_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nested_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_nested_everything_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GHashTable* regress_test_ghash_nested_everything_return (void);
+</code></synopsis>
+
+
+ <p>Specify nested parameterized types directly with the (type ) annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return2.page
new file mode 100644
index 00000000..0c780b5e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nested_everything_return2.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nested_everything_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nested_everything_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_nested_everything_return2</title>
+
+<synopsis><code mime="text/x-csrc">
+GHashTable* regress_test_ghash_nested_everything_return2 (void);
+</code></synopsis>
+
+
+ <p>Another way of specifying nested parameterized types: using the
+element-type annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in.page
new file mode 100644
index 00000000..8c457ad2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_in</api:name>
+ <api:arg>
+ <api:type>const GHashTable*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_nothing_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_ghash_nothing_in (const GHashTable* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in2.page
new file mode 100644
index 00000000..a56ad65b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_in2.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_in2</api:name>
+ <api:arg>
+ <api:type>GHashTable*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_nothing_in2</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_ghash_nothing_in2 (GHashTable* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return.page
new file mode 100644
index 00000000..c258ee02
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_nothing_return</title>
+
+<synopsis><code mime="text/x-csrc">
+const GHashTable* regress_test_ghash_nothing_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return2.page
new file mode 100644
index 00000000..d2217447
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_nothing_return2.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_nothing_return2</title>
+
+<synopsis><code mime="text/x-csrc">
+GHashTable* regress_test_ghash_nothing_return2 (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_in.page
new file mode 100644
index 00000000..a538b442
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_in</api:name>
+ <api:arg>
+ <api:type>const GHashTable*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_null_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_ghash_null_in (const GHashTable* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_out.page
new file mode 100644
index 00000000..323469c6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_out</api:name>
+ <api:arg>
+ <api:type>const GHashTable**</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_null_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_ghash_null_out (const GHashTable** out);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_return.page
new file mode 100644
index 00000000..03461fd9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ghash_null_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const GHashTable*</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_ghash_null_return</title>
+
+<synopsis><code mime="text/x-csrc">
+const GHashTable* regress_test_ghash_null_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_container_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_container_return.page
new file mode 100644
index 00000000..32a3c3a6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_container_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GList*</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_container_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GList* regress_test_glist_container_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_everything_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_everything_return.page
new file mode 100644
index 00000000..6de1a9c8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_everything_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GList*</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_everything_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GList* regress_test_glist_everything_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in.page
new file mode 100644
index 00000000..d88487f0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_in</api:name>
+ <api:arg>
+ <api:type>const GList*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_nothing_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_glist_nothing_in (const GList* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in2.page
new file mode 100644
index 00000000..7cba8517
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_in2.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_in2</api:name>
+ <api:arg>
+ <api:type>GList*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_nothing_in2</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_glist_nothing_in2 (GList* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return.page
new file mode 100644
index 00000000..af54aead
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const GList*</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_nothing_return</title>
+
+<synopsis><code mime="text/x-csrc">
+const GList* regress_test_glist_nothing_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return2.page
new file mode 100644
index 00000000..2901e41d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_nothing_return2.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GList*</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_nothing_return2</title>
+
+<synopsis><code mime="text/x-csrc">
+GList* regress_test_glist_nothing_return2 (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_in.page
new file mode 100644
index 00000000..b6ca3ab3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_null_in</api:name>
+ <api:arg>
+ <api:type>GSList*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_null_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_glist_null_in (GSList* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_out.page
new file mode 100644
index 00000000..13e421db
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_glist_null_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_null_out</api:name>
+ <api:arg>
+ <api:type>GSList**</api:type>
+ <api:name>out_list</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_glist_null_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_glist_null_out (GSList** out_list);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out_list</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_container_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_container_return.page
new file mode 100644
index 00000000..05587fcb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_container_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GSList*</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_container_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GSList* regress_test_gslist_container_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_everything_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_everything_return.page
new file mode 100644
index 00000000..a03f4d89
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_everything_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GSList*</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_everything_return</title>
+
+<synopsis><code mime="text/x-csrc">
+GSList* regress_test_gslist_everything_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in.page
new file mode 100644
index 00000000..61a14b1c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_in</api:name>
+ <api:arg>
+ <api:type>const GSList*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_nothing_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_gslist_nothing_in (const GSList* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in2.page
new file mode 100644
index 00000000..0703ec00
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_in2.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_in2</api:name>
+ <api:arg>
+ <api:type>GSList*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_nothing_in2</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_gslist_nothing_in2 (GSList* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return.page
new file mode 100644
index 00000000..8df79aa5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const GSList*</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_nothing_return</title>
+
+<synopsis><code mime="text/x-csrc">
+const GSList* regress_test_gslist_nothing_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return2.page
new file mode 100644
index 00000000..aeb9a672
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_nothing_return2.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GSList*</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_nothing_return2</title>
+
+<synopsis><code mime="text/x-csrc">
+GSList* regress_test_gslist_nothing_return2 (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_in.page
new file mode 100644
index 00000000..21d8d5c1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_null_in</api:name>
+ <api:arg>
+ <api:type>GSList*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_null_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_gslist_null_in (GSList* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_out.page
new file mode 100644
index 00000000..d7635199
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gslist_null_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_null_out</api:name>
+ <api:arg>
+ <api:type>GSList**</api:type>
+ <api:name>out_list</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_gslist_null_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_gslist_null_out (GSList** out_list);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out_list</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gtype.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gtype.page
new file mode 100644
index 00000000..76e678bd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gtype.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gtype"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GType</api:type>
+ </api:returns>
+ <api:name>regress_test_gtype</api:name>
+ <api:arg>
+ <api:type>GType</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_gtype</title>
+
+<synopsis><code mime="text/x-csrc">
+GType regress_test_gtype (GType in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_as.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_as.page
new file mode 100644
index 00000000..df9d988a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_as.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_as"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GVariant*</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_as</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gvariant_as</title>
+
+<synopsis><code mime="text/x-csrc">
+GVariant* regress_test_gvariant_as (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_asv.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_asv.page
new file mode 100644
index 00000000..2d64ab24
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_asv.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_asv"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GVariant*</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_asv</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gvariant_asv</title>
+
+<synopsis><code mime="text/x-csrc">
+GVariant* regress_test_gvariant_asv (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_i.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_i.page
new file mode 100644
index 00000000..2eec9944
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_i.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_i"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GVariant*</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_i</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gvariant_i</title>
+
+<synopsis><code mime="text/x-csrc">
+GVariant* regress_test_gvariant_i (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_s.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_s.page
new file mode 100644
index 00000000..9ef9d9f7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_s.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_s"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GVariant*</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_s</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gvariant_s</title>
+
+<synopsis><code mime="text/x-csrc">
+GVariant* regress_test_gvariant_s (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_v.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_v.page
new file mode 100644
index 00000000..c07b2ac8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_gvariant_v.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_v"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GVariant*</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_v</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_gvariant_v</title>
+
+<synopsis><code mime="text/x-csrc">
+GVariant* regress_test_gvariant_v (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_hash_table_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_hash_table_callback.page
new file mode 100644
index 00000000..24862b10
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_hash_table_callback.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_hash_table_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_hash_table_callback</api:name>
+ <api:arg>
+ <api:type>GHashTable*</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestCallbackHashtable</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_hash_table_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_hash_table_callback (GHashTable* data,
+ RegressTestCallbackHashtable callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+<p>GHashTable that gets passed to callback</p>
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_int.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_int.page
new file mode 100644
index 00000000..430af30e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_int.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint</api:type>
+ </api:returns>
+ <api:name>regress_test_int</api:name>
+ <api:arg>
+ <api:type>gint</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_int</title>
+
+<synopsis><code mime="text/x-csrc">
+gint regress_test_int (gint in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_int16.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_int16.page
new file mode 100644
index 00000000..d5be61d9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_int16.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int16"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint16</api:type>
+ </api:returns>
+ <api:name>regress_test_int16</api:name>
+ <api:arg>
+ <api:type>gint16</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_int16</title>
+
+<synopsis><code mime="text/x-csrc">
+gint16 regress_test_int16 (gint16 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_int32.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_int32.page
new file mode 100644
index 00000000..be90ac6d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_int32.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int32"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint32</api:type>
+ </api:returns>
+ <api:name>regress_test_int32</api:name>
+ <api:arg>
+ <api:type>gint32</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_int32</title>
+
+<synopsis><code mime="text/x-csrc">
+gint32 regress_test_int32 (gint32 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_int64.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_int64.page
new file mode 100644
index 00000000..d864702f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_int64.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int64"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint64</api:type>
+ </api:returns>
+ <api:name>regress_test_int64</api:name>
+ <api:arg>
+ <api:type>gint64</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_int64</title>
+
+<synopsis><code mime="text/x-csrc">
+gint64 regress_test_int64 (gint64 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_int8.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_int8.page
new file mode 100644
index 00000000..1cfb4319
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_int8.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint8</api:type>
+ </api:returns>
+ <api:name>regress_test_int8</api:name>
+ <api:arg>
+ <api:type>gint8</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_int8</title>
+
+<synopsis><code mime="text/x-csrc">
+gint8 regress_test_int8 (gint8 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_int_out_utf8.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_int_out_utf8.page
new file mode 100644
index 00000000..80276c00
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_int_out_utf8.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int_out_utf8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_int_out_utf8</api:name>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_int_out_utf8</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_int_out_utf8 (int* length,
+ const char* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>length</code></title>
+
+</item>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_int_value_arg.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_int_value_arg.page
new file mode 100644
index 00000000..a61c91cd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_int_value_arg.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int_value_arg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_int_value_arg</api:name>
+ <api:arg>
+ <api:type>const GValue*</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_int_value_arg</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_int_value_arg (const GValue* v);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>v</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_long.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_long.page
new file mode 100644
index 00000000..30bf3afb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_long.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_long"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>glong</api:type>
+ </api:returns>
+ <api:name>regress_test_long</api:name>
+ <api:arg>
+ <api:type>glong</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_long</title>
+
+<synopsis><code mime="text/x-csrc">
+glong regress_test_long (glong in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_multi_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_multi_callback.page
new file mode 100644
index 00000000..152c9166
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_multi_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multi_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_multi_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_multi_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+int regress_test_multi_callback (RegressTestCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_multi_double_args.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_multi_double_args.page
new file mode 100644
index 00000000..5135297f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_multi_double_args.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multi_double_args"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_multi_double_args</api:name>
+ <api:arg>
+ <api:type>gdouble</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gdouble*</api:type>
+ <api:name>one</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gdouble*</api:type>
+ <api:name>two</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_multi_double_args</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_multi_double_args (gdouble in,
+ gdouble* one,
+ gdouble* two);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>one</code></title>
+
+</item>
+<item>
+<title><code>two</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_multiline_doc_comments.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_multiline_doc_comments.page
new file mode 100644
index 00000000..d660bd83
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_multiline_doc_comments.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multiline_doc_comments"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_multiline_doc_comments</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_multiline_doc_comments</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_multiline_doc_comments (void);
+</code></synopsis>
+
+
+ <p>This is a function.</p><p>It has multiple lines in the documentation.</p><p>The sky is blue.</p><p>You will give me your credit card number.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_nested_parameter.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_nested_parameter.page
new file mode 100644
index 00000000..c28cc8fa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_nested_parameter.page
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<page id="Regress.test_nested_parameter"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_nested_parameter</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_nested_parameter</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_nested_parameter (int a);
+</code></synopsis>
+
+
+ <p>&lt;informaltable&gt;
+ &lt;tgroup cols="3"&gt;
+ &lt;thead&gt;
+ &lt;row&gt;
+ &lt;entry&gt;Syntax&lt;/entry&gt;
+ &lt;entry&gt;Explanation&lt;/entry&gt;
+ &lt;entry&gt;Examples&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;/thead&gt;
+ &lt;tbody&gt;
+ &lt;row&gt;
+ &lt;entry&gt;rgb(@r, @g, @b)&lt;/entry&gt;
+ &lt;entry&gt;An opaque color; @r, @g, @b can be either integers between
+ 0 and 255 or percentages&lt;/entry&gt;
+ &lt;entry&gt;&lt;literallayout&gt;rgb(128, 10, 54)
+rgb(20%, 30%, 0%)&lt;/literallayout&gt;&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;row&gt;
+ &lt;entry&gt;rgba(@r, @g, @b, <code>a</code>)&lt;/entry&gt;
+ &lt;entry&gt;A translucent color; @r, @g, @b are as in the previous row,
+ <code>a</code> is a floating point number between 0 and 1&lt;/entry&gt;
+ &lt;entry&gt;&lt;literallayout&gt;rgba(255, 255, 0, 0.5)&lt;/literallayout&gt;&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;/tbody&gt;
+ &lt;/tgroup&gt;
+&lt;/informaltable&gt;</p><p>What we're testing here is that the scanner ignores the <code>a</code> nested inside XML.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>An integer</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_null_gerror_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_null_gerror_callback.page
new file mode 100644
index 00000000..bdcc152d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_null_gerror_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_null_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_null_gerror_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_null_gerror_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_null_gerror_callback (RegressTestCallbackGError callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_owned_gerror_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_owned_gerror_callback.page
new file mode 100644
index 00000000..49f1b360
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_owned_gerror_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_owned_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_owned_gerror_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallbackOwnedGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_owned_gerror_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_short.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_short.page
new file mode 100644
index 00000000..53d3b1bd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_short.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_short"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gshort</api:type>
+ </api:returns>
+ <api:name>regress_test_short</api:name>
+ <api:arg>
+ <api:type>gshort</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_short</title>
+
+<synopsis><code mime="text/x-csrc">
+gshort regress_test_short (gshort in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_simple_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_simple_callback.page
new file mode 100644
index 00000000..514fbfaa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_simple_callback.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_simple_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestSimpleCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_simple_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_simple_callback (RegressTestSimpleCallback callback);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_size.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_size.page
new file mode 100644
index 00000000..3b67a00a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_size.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_size"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gsize</api:type>
+ </api:returns>
+ <api:name>regress_test_size</api:name>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_size</title>
+
+<synopsis><code mime="text/x-csrc">
+gsize regress_test_size (gsize in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_skip_unannotated_callback.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_skip_unannotated_callback.page
new file mode 100644
index 00000000..321d087a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_skip_unannotated_callback.page
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<page id="Regress.test_skip_unannotated_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_skip_unannotated_callback</api:name>
+ <api:arg>
+ <api:type>RegressTestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_skip_unannotated_callback</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_skip_unannotated_callback (RegressTestCallback callback);
+</code></synopsis>
+
+
+ <p>Should not emit a warning:
+https://bugzilla.gnome.org/show_bug.cgi?id=685399</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+<p>No annotation here</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ssize.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ssize.page
new file mode 100644
index 00000000..d11446ef
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ssize.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ssize"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gssize</api:type>
+ </api:returns>
+ <api:name>regress_test_ssize</api:name>
+ <api:arg>
+ <api:type>gssize</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ssize</title>
+
+<synopsis><code mime="text/x-csrc">
+gssize regress_test_ssize (gssize in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in.page
new file mode 100644
index 00000000..3f9ca2a6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_in</api:name>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_strv_in</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_strv_in (char** arr);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in_gvalue.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in_gvalue.page
new file mode 100644
index 00000000..44b0c6ce
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_in_gvalue.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_in_gvalue"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GValue*</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_in_gvalue</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_strv_in_gvalue</title>
+
+<synopsis><code mime="text/x-csrc">
+GValue* regress_test_strv_in_gvalue (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out.page
new file mode 100644
index 00000000..207e69fe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_strv_out</title>
+
+<synopsis><code mime="text/x-csrc">
+char** regress_test_strv_out (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_c.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_c.page
new file mode 100644
index 00000000..582ab10b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_c.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out_c"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out_c</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_strv_out_c</title>
+
+<synopsis><code mime="text/x-csrc">
+const char* const* regress_test_strv_out_c (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_container.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_container.page
new file mode 100644
index 00000000..0515bce7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_out_container.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out_container"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>utf8*</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out_container</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_strv_out_container</title>
+
+<synopsis><code mime="text/x-csrc">
+char** regress_test_strv_out_container (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_outarg.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_outarg.page
new file mode 100644
index 00000000..a105b5b2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_strv_outarg.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_outarg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_outarg</api:name>
+ <api:arg>
+ <api:type>char***</api:type>
+ <api:name>retp</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_strv_outarg</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_strv_outarg (char*** retp);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>retp</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_timet.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_timet.page
new file mode 100644
index 00000000..acada719
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_timet.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_timet"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>time_t</api:type>
+ </api:returns>
+ <api:name>regress_test_timet</api:name>
+ <api:arg>
+ <api:type>time_t</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_timet</title>
+
+<synopsis><code mime="text/x-csrc">
+time_t regress_test_timet (time_t in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_0.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_0.page
new file mode 100644
index 00000000..3d4c18c2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_0.page
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_0"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_0</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>double*</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_torture_signature_0</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_torture_signature_0 (int x,
+ double* y,
+ int* z,
+ const char* foo,
+ int* q,
+ guint m);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_1.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_1.page
new file mode 100644
index 00000000..7568989d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_1.page
@@ -0,0 +1,93 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_1"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gboolean</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_1</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>double*</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_torture_signature_1</title>
+
+<synopsis><code mime="text/x-csrc">
+gboolean regress_test_torture_signature_1 (int x,
+ double* y,
+ int* z,
+ const char* foo,
+ int* q,
+ guint m);
+</code></synopsis>
+
+
+ <p>This function throws an error if m is odd.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_2.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_2.page
new file mode 100644
index 00000000..eb615c39
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_torture_signature_2.page
@@ -0,0 +1,120 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_2</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GDestroyNotify</api:type>
+ <api:name>notify</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>double*</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int*</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_torture_signature_2</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_torture_signature_2 (int x,
+ RegressTestCallbackUserData callback,
+ gpointer user_data,
+ GDestroyNotify notify,
+ double* y,
+ int* z,
+ const char* foo,
+ int* q,
+ guint m);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>notify</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_uint.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint.page
new file mode 100644
index 00000000..1651512e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint</api:type>
+ </api:returns>
+ <api:name>regress_test_uint</api:name>
+ <api:arg>
+ <api:type>guint</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_uint</title>
+
+<synopsis><code mime="text/x-csrc">
+guint regress_test_uint (guint in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_uint16.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint16.page
new file mode 100644
index 00000000..2af7ee49
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint16.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint16"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint16</api:type>
+ </api:returns>
+ <api:name>regress_test_uint16</api:name>
+ <api:arg>
+ <api:type>guint16</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_uint16</title>
+
+<synopsis><code mime="text/x-csrc">
+guint16 regress_test_uint16 (guint16 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_uint32.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint32.page
new file mode 100644
index 00000000..7ccdde70
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint32.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint32"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint32</api:type>
+ </api:returns>
+ <api:name>regress_test_uint32</api:name>
+ <api:arg>
+ <api:type>guint32</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_uint32</title>
+
+<synopsis><code mime="text/x-csrc">
+guint32 regress_test_uint32 (guint32 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_uint64.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint64.page
new file mode 100644
index 00000000..24a9256a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint64.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint64"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint64</api:type>
+ </api:returns>
+ <api:name>regress_test_uint64</api:name>
+ <api:arg>
+ <api:type>guint64</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_uint64</title>
+
+<synopsis><code mime="text/x-csrc">
+guint64 regress_test_uint64 (guint64 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_uint8.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint8.page
new file mode 100644
index 00000000..7222e742
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_uint8.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint8</api:type>
+ </api:returns>
+ <api:name>regress_test_uint8</api:name>
+ <api:arg>
+ <api:type>guint8</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_uint8</title>
+
+<synopsis><code mime="text/x-csrc">
+guint8 regress_test_uint8 (guint8 in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ulong.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ulong.page
new file mode 100644
index 00000000..80953700
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ulong.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ulong"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gulong</api:type>
+ </api:returns>
+ <api:name>regress_test_ulong</api:name>
+ <api:arg>
+ <api:type>gulong</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ulong</title>
+
+<synopsis><code mime="text/x-csrc">
+gulong regress_test_ulong (gulong in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_unichar.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_unichar.page
new file mode 100644
index 00000000..0349472e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_unichar.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_unichar"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gunichar</api:type>
+ </api:returns>
+ <api:name>regress_test_unichar</api:name>
+ <api:arg>
+ <api:type>gunichar</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_unichar</title>
+
+<synopsis><code mime="text/x-csrc">
+gunichar regress_test_unichar (gunichar in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_unsigned_enum_param.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_unsigned_enum_param.page
new file mode 100644
index 00000000..642e75ac
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_unsigned_enum_param.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_unsigned_enum_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const gchar*</api:type>
+ </api:returns>
+ <api:name>regress_test_unsigned_enum_param</api:name>
+ <api:arg>
+ <api:type>RegressTestEnumUnsigned</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_unsigned_enum_param</title>
+
+<synopsis><code mime="text/x-csrc">
+const gchar* regress_test_unsigned_enum_param (RegressTestEnumUnsigned e);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_ushort.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_ushort.page
new file mode 100644
index 00000000..2b50e72a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_ushort.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ushort"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gushort</api:type>
+ </api:returns>
+ <api:name>regress_test_ushort</api:name>
+ <api:arg>
+ <api:type>gushort</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_ushort</title>
+
+<synopsis><code mime="text/x-csrc">
+gushort regress_test_ushort (gushort in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_in.page
new file mode 100644
index 00000000..eaafeae5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_const_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_const_in</api:name>
+ <api:arg>
+ <api:type>const char*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_const_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_utf8_const_in (const char* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_return.page
new file mode 100644
index 00000000..6bcb7861
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_const_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_const_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const char*</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_const_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_const_return</title>
+
+<synopsis><code mime="text/x-csrc">
+const char* regress_test_utf8_const_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>UTF-8 string</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_inout.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_inout.page
new file mode 100644
index 00000000..ce0a884b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_inout.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_inout"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_inout</api:name>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>inout</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_inout</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_utf8_inout (char** inout);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>inout</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_nonconst_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_nonconst_return.page
new file mode 100644
index 00000000..aa921b00
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_nonconst_return.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_nonconst_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>char*</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_nonconst_return</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_nonconst_return</title>
+
+<synopsis><code mime="text/x-csrc">
+char* regress_test_utf8_nonconst_return (void);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>UTF-8 string</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_in.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_in.page
new file mode 100644
index 00000000..9b196371
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_in.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_null_in</api:name>
+ <api:arg>
+ <api:type>char*</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_null_in</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_utf8_null_in (char* in);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_out.page
new file mode 100644
index 00000000..6d4c4551
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_null_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_null_out</api:name>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>char_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_null_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_utf8_null_out (char** char_out);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>char_out</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out.page
new file mode 100644
index 00000000..5084da31
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out</api:name>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_utf8_out (char** out);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_nonconst_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_nonconst_return.page
new file mode 100644
index 00000000..65b2a8a0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_nonconst_return.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out_nonconst_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>char*</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out_nonconst_return</api:name>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_out_nonconst_return</title>
+
+<synopsis><code mime="text/x-csrc">
+char* regress_test_utf8_out_nonconst_return (char** out);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+<p>a copy of "second"</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>a copy of "first"</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_out.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_out.page
new file mode 100644
index 00000000..e3771997
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_utf8_out_out.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out_out</api:name>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>out0</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>char**</api:type>
+ <api:name>out1</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_utf8_out_out</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_utf8_out_out (char** out0,
+ char** out1);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out0</code></title>
+<p>a copy of "first"</p>
+</item>
+<item>
+<title><code>out1</code></title>
+<p>a copy of "second"</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_value_get_fundamental_object.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_value_get_fundamental_object.page
new file mode 100644
index 00000000..3435610c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_value_get_fundamental_object.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_value_get_fundamental_object"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>RegressTestFundamentalObject*</api:type>
+ </api:returns>
+ <api:name>regress_test_value_get_fundamental_object</api:name>
+ <api:arg>
+ <api:type>const GValue*</api:type>
+ <api:name>value</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_value_get_fundamental_object</title>
+
+<synopsis><code mime="text/x-csrc">
+RegressTestFundamentalObject* regress_test_value_get_fundamental_object (const GValue* value);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>value</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_value_return.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_value_return.page
new file mode 100644
index 00000000..2edb30a3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_value_return.page
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+<page id="Regress.test_value_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>const GValue*</api:type>
+ </api:returns>
+ <api:name>regress_test_value_return</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_value_return</title>
+
+<synopsis><code mime="text/x-csrc">
+const GValue* regress_test_value_return (int i);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+<p>an int</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the int wrapped in a GValue.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_value_set_fundamental_object.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_value_set_fundamental_object.page
new file mode 100644
index 00000000..ba1822ed
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_value_set_fundamental_object.page
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<page id="Regress.test_value_set_fundamental_object"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_value_set_fundamental_object</api:name>
+ <api:arg>
+ <api:type>GValue*</api:type>
+ <api:name>value</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>RegressTestFundamentalObject*</api:type>
+ <api:name>fundamental_object</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>regress_test_value_set_fundamental_object</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_value_set_fundamental_object (GValue* value,
+ RegressTestFundamentalObject* fundamental_object);
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>value</code></title>
+
+</item>
+<item>
+<title><code>fundamental_object</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/Regress.test_versioning.page b/tests/scanner/Regress-1.0-C-expected/Regress.test_versioning.page
new file mode 100644
index 00000000..a389bda5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/Regress.test_versioning.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.test_versioning"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_versioning</api:name>
+ </api:function>
+
+ </info>
+ <title>regress_test_versioning</title>
+
+<synopsis><code mime="text/x-csrc">
+void regress_test_versioning (void);
+</code></synopsis>
+
+
+
+
+
+ <p>Since 1.32.1</p>
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-C-expected/index.page b/tests/scanner/Regress-1.0-C-expected/index.page
new file mode 100644
index 00000000..a5426d89
--- /dev/null
+++ b/tests/scanner/Regress-1.0-C-expected/index.page
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<page id="index"
+ type="guide"
+ style="namespace"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+
+ </info>
+ <title>Index</title>
+
+
+
+
+
+
+
+
+
+ <links type="topic" ui:expanded="true" groups="class" style="linklist">
+ <title>Classes</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.ATestError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.ATestError.page
new file mode 100644
index 00000000..9ac6820d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.ATestError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.ATestError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.ATestError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ATestError.CODE0</code></title>
+
+</item>
+<item>
+<title><code>ATestError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>ATestError.CODE2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AliasedTestBoxed.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AliasedTestBoxed.page
new file mode 100644
index 00000000..9490e4a3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AliasedTestBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AliasedTestBoxed"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AliasedTestBoxed</title>
+
+
+
+ <p>Typedef TestBoxed to test caller-allocates correctness</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationBitfield.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationBitfield.page
new file mode 100644
index 00000000..4e19ef92
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationBitfield.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationBitfield"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationBitfield</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationCallback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationCallback.page
new file mode 100644
index 00000000..9a652d80
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationCallback</title>
+
+
+
+ <p>This is a callback.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationForeachFunc.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationForeachFunc.page
new file mode 100644
index 00000000..db77a117
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationForeachFunc.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationForeachFunc"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationForeachFunc</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationListCallback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationListCallback.page
new file mode 100644
index 00000000..79844c66
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationListCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationListCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationListCallback</title>
+
+
+
+ <p>This is a callback taking a list.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationNotifyFunc.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationNotifyFunc.page
new file mode 100644
index 00000000..17c80292
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationNotifyFunc.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationNotifyFunc"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationNotifyFunc</title>
+
+
+
+ <p>This is a callback with a 'closure' argument that is not named
+'user_data' and hence has to be annotated.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-attribute-signal.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-attribute-signal.page
new file mode 100644
index 00000000..c30c3377
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-attribute-signal.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-attribute-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">attribute-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::attribute-signal</title>
+
+<synopsis><code mime="text/x-python">
+function callback(annotation_object, arg1:String, arg2:String, ):String;
+</code></synopsis>
+
+
+ <p>This signal tests a signal with attributes.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arg1</code></title>
+<p>a value</p>
+</item>
+<item>
+<title><code>arg2</code></title>
+<p>another value</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the return value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page
new file mode 100644
index 00000000..61025917
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-doc-empty-arg-parsing"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">doc-empty-arg-parsing</title>
+
+ </info>
+ <title>Regress.AnnotationObject::doc-empty-arg-parsing</title>
+
+<synopsis><code mime="text/x-python">
+function callback(annotation_object, arg1:gpointer, ):void;
+</code></synopsis>
+
+
+ <p>This signal tests an empty document argument (<code>arg1</code>)</p>
+
+
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arg1</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-function-property.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-function-property.page
new file mode 100644
index 00000000..d9d8b55a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-function-property.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-function-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">function-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:function-property</title>
+
+<synopsis><code mime="text/x-python">
+"function-property" Regress.AnnotationCallback : Read / Write / Construct
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-list-signal.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-list-signal.page
new file mode 100644
index 00000000..4e2044dd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-list-signal.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-list-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">list-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::list-signal</title>
+
+<synopsis><code mime="text/x-python">
+function callback(annotation_object, list:[String], ):void;
+</code></synopsis>
+
+
+ <p>This is a signal which takes a list of strings, but it's not
+known by GObject as it's only marked as G_TYPE_POINTER</p>
+
+
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>list</code></title>
+<p>a list of strings</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-property.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-property.page
new file mode 100644
index 00000000..eba5cef7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-property.page
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-string-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">string-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:string-property</title>
+
+<synopsis><code mime="text/x-python">
+"string-property" String : Read / Write / Construct
+</code></synopsis>
+
+
+ <p>This is a property which is a string</p>
+
+
+ <p>Since 1.0</p>
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-signal.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-signal.page
new file mode 100644
index 00000000..59408b40
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-string-signal.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-string-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">string-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::string-signal</title>
+
+<synopsis><code mime="text/x-python">
+function callback(annotation_object, string:String, ):void;
+</code></synopsis>
+
+
+ <p>This is a signal which has a broken signal handler,
+it says it's pointer but it's actually a string.</p>
+
+
+ <p>Since 1.0</p>
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>string</code></title>
+<p>a string</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-tab-property.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-tab-property.page
new file mode 100644
index 00000000..c2444fa4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject-tab-property.page
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-tab-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">tab-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:tab-property</title>
+
+<synopsis><code mime="text/x-python">
+"tab-property" String : Read / Write / Construct
+</code></synopsis>
+
+
+ <p>This is a property annotation intentionally indented with a mix
+of tabs and strings to test the tab handling capabilities of the scanner.</p>
+
+
+ <p>Since 1.2</p>
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.allow_none.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.allow_none.page
new file mode 100644
index 00000000..414f5c63
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.allow_none.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.allow_none"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_allow_none</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>somearg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.allow_none</title>
+
+<synopsis><code mime="text/x-gjs">
+function allow_none(somearg:String):GObject.Object {
+ // Gjs wrapper for regress_annotation_object_allow_none()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>somearg</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>null</code> always</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleeowns.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleeowns.page
new file mode 100644
index 00000000..8dd15f1c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleeowns.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.calleeowns"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_calleeowns</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.calleeowns</title>
+
+<synopsis><code mime="text/x-gjs">
+function calleeowns():Number {
+ // Gjs wrapper for regress_annotation_object_calleeowns()
+}
+</code></synopsis>
+
+
+ <p>This is a test for out arguments; GObject defaults to transfer</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleesowns.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleesowns.page
new file mode 100644
index 00000000..a12be358
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.calleesowns.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.calleesowns"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_calleesowns</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.calleesowns</title>
+
+<synopsis><code mime="text/x-gjs">
+function calleesowns():Number {
+ // Gjs wrapper for regress_annotation_object_calleesowns()
+}
+</code></synopsis>
+
+
+ <p>This is a test for out arguments, one transferred, other not</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum.page
new file mode 100644
index 00000000..d7e6784d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.compute_sum</title>
+
+<synopsis><code mime="text/x-gjs">
+function compute_sum(nums:[Number]):void {
+ // Gjs wrapper for regress_annotation_object_compute_sum()
+}
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array</p>
+
+
+
+
+<terms>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_n.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_n.page
new file mode 100644
index 00000000..16b62150
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_n.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum_n"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum_n</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.compute_sum_n</title>
+
+<synopsis><code mime="text/x-gjs">
+function compute_sum_n(nums:[Number]):void {
+ // Gjs wrapper for regress_annotation_object_compute_sum_n()
+}
+</code></synopsis>
+
+
+ <p>Test taking an array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers that are zero-terminated</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_nz.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_nz.page
new file mode 100644
index 00000000..f4a3b7d6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.compute_sum_nz.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum_nz"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum_nz</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.compute_sum_nz</title>
+
+<synopsis><code mime="text/x-gjs">
+function compute_sum_nz(nums:[Number]):void {
+ // Gjs wrapper for regress_annotation_object_compute_sum_nz()
+}
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers that are zero-terminated</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.create_object.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.create_object.page
new file mode 100644
index 00000000..03ceac18
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.create_object.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.create_object"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_create_object</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.create_object</title>
+
+<synopsis><code mime="text/x-gjs">
+function create_object():GObject.Object {
+ // Gjs wrapper for regress_annotation_object_create_object()
+}
+</code></synopsis>
+
+
+ <p>Test returning a caller-owned object</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>The object</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.do_not_use.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.do_not_use.page
new file mode 100644
index 00000000..e89c8fe6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.do_not_use.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.do_not_use"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_do_not_use</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.do_not_use</title>
+
+<synopsis><code mime="text/x-gjs">
+function do_not_use():GObject.Object {
+ // Gjs wrapper for regress_annotation_object_do_not_use()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p><code>null</code> always</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.extra_annos.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.extra_annos.page
new file mode 100644
index 00000000..cd58eed9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.extra_annos.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.extra_annos"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_extra_annos</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.extra_annos</title>
+
+<synopsis><code mime="text/x-gjs">
+function extra_annos():void {
+ // Gjs wrapper for regress_annotation_object_extra_annos()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.foreach.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.foreach.page
new file mode 100644
index 00000000..e4cc4c0b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.foreach.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.foreach"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_foreach</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationForeachFunc</api:type>
+ <api:name>func</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.foreach</title>
+
+<synopsis><code mime="text/x-gjs">
+function foreach(func:Regress.AnnotationForeachFunc):void {
+ // Gjs wrapper for regress_annotation_object_foreach()
+}
+</code></synopsis>
+
+
+ <p>Test taking a call-scoped callback</p>
+
+
+
+
+<terms>
+<item>
+<title><code>func</code></title>
+<p>Callback to invoke</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_hash.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_hash.page
new file mode 100644
index 00000000..2e6ca61a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_hash.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_hash"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: GObject.Object}</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_hash</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.get_hash</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_hash():{String: GObject.Object} {
+ // Gjs wrapper for regress_annotation_object_get_hash()
+}
+</code></synopsis>
+
+
+ <p>This is a test for returning a hash table mapping strings to
+objects.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>hash table</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_objects.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_objects.page
new file mode 100644
index 00000000..c0350d7e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_objects.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_objects"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[Regress.AnnotationObject]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_objects</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.get_objects</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_objects():[Regress.AnnotationObject] {
+ // Gjs wrapper for regress_annotation_object_get_objects()
+}
+</code></synopsis>
+
+
+ <p>This is a test for returning a list of objects.
+The list itself should be freed, but not the internal objects,
+intentionally similar example to gtk_container_get_children</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>list of objects</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_strings.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_strings.page
new file mode 100644
index 00000000..e36d25a8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.get_strings.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_strings"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_strings</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.get_strings</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_strings():[String] {
+ // Gjs wrapper for regress_annotation_object_get_strings()
+}
+</code></synopsis>
+
+
+ <p>This is a test for returning a list of strings, where
+each string needs to be freed.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>list of strings</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.hidden_self.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.hidden_self.page
new file mode 100644
index 00000000..945acf01
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.hidden_self.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.hidden_self"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_hidden_self</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.hidden_self</title>
+
+<synopsis><code mime="text/x-gjs">
+function hidden_self():void {
+ // Gjs wrapper for regress_annotation_object_hidden_self()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.in.page
new file mode 100644
index 00000000..226b2b97
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.in"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_in</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.in</title>
+
+<synopsis><code mime="text/x-gjs">
+function in(inarg:Number):Number {
+ // Gjs wrapper for regress_annotation_object_in()
+}
+</code></synopsis>
+
+
+ <p>This is a test for in arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>inarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout.page
new file mode 100644
index 00000000..885412fb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.inout</title>
+
+<synopsis><code mime="text/x-gjs">
+function inout(inoutarg:Number):Number {
+ // Gjs wrapper for regress_annotation_object_inout()
+}
+</code></synopsis>
+
+
+ <p>This is a test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout2.page
new file mode 100644
index 00000000..34406b7b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout2.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout2"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout2</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.inout2</title>
+
+<synopsis><code mime="text/x-gjs">
+function inout2(inoutarg:Number):Number {
+ // Gjs wrapper for regress_annotation_object_inout2()
+}
+</code></synopsis>
+
+
+ <p>This is a second test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout3.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout3.page
new file mode 100644
index 00000000..2828964e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.inout3.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout3"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout3</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.inout3</title>
+
+<synopsis><code mime="text/x-gjs">
+function inout3(inoutarg:Number):Number {
+ // Gjs wrapper for regress_annotation_object_inout3()
+}
+</code></synopsis>
+
+
+ <p>This is a 3th test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.method.page
new file mode 100644
index 00000000..49d937a1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.method.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.method"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_method</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.method</title>
+
+<synopsis><code mime="text/x-gjs">
+function method():Number {
+ // Gjs wrapper for regress_annotation_object_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.notrans.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.notrans.page
new file mode 100644
index 00000000..0424719e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.notrans.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.notrans"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_notrans</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.notrans</title>
+
+<synopsis><code mime="text/x-gjs">
+function notrans():GObject.Object {
+ // Gjs wrapper for regress_annotation_object_notrans()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>An object, not referenced</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.out.page
new file mode 100644
index 00000000..5120baf8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.out.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.out"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_out</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.out</title>
+
+<synopsis><code mime="text/x-gjs">
+function out():Number {
+ // Gjs wrapper for regress_annotation_object_out()
+}
+</code></synopsis>
+
+
+ <p>This is a test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>an int</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.page
new file mode 100644
index 00000000..f4f01301
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.page
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationObject</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let annotation_object = new Regress.AnnotationObject({
+ <link xref='Regress.AnnotationObject-function-property'>function_property</link>: value,
+ <link xref='Regress.AnnotationObject-string-property'>string_property</link>: value,
+ <link xref='Regress.AnnotationObject-tab-property'>tab_property</link>: value,
+});
+ </code></synopsis>
+
+
+ <p>This is an object used to test annotations.</p>
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.AnnotationObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.parse_args.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.parse_args.page
new file mode 100644
index 00000000..8476fd89
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.parse_args.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.parse_args"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_parse_args</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>argv</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.parse_args</title>
+
+<synopsis><code mime="text/x-gjs">
+function parse_args(argv:[String]):void {
+ // Gjs wrapper for regress_annotation_object_parse_args()
+}
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>argv</code></title>
+<p>Argument vector</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data.page
new file mode 100644
index 00000000..a5dafb97
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data</api:name>
+ <api:arg>
+ <api:type>[guint8]</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.set_data</title>
+
+<synopsis><code mime="text/x-gjs">
+function set_data(data:[guint8]):void {
+ // Gjs wrapper for regress_annotation_object_set_data()
+}
+</code></synopsis>
+
+
+ <p>Test taking a guchar * with a length.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data2.page
new file mode 100644
index 00000000..3fcd8188
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data2.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data2"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data2</api:name>
+ <api:arg>
+ <api:type>[gint8]</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.set_data2</title>
+
+<synopsis><code mime="text/x-gjs">
+function set_data2(data:[gint8]):void {
+ // Gjs wrapper for regress_annotation_object_set_data2()
+}
+</code></synopsis>
+
+
+ <p>Test taking a gchar * with a length.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data3.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data3.page
new file mode 100644
index 00000000..22fb98dd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.set_data3.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data3"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data3</api:name>
+ <api:arg>
+ <api:type>[guint8]</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.set_data3</title>
+
+<synopsis><code mime="text/x-gjs">
+function set_data3(data:[guint8]):void {
+ // Gjs wrapper for regress_annotation_object_set_data3()
+}
+</code></synopsis>
+
+
+ <p>Test taking a gchar * with a length, overriding the array element
+type.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.string_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.string_out.page
new file mode 100644
index 00000000..4d6029a1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.string_out.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.string_out"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_string_out</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.string_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function string_out():Boolean {
+ // Gjs wrapper for regress_annotation_object_string_out()
+}
+</code></synopsis>
+
+
+ <p>Test returning a string as an out parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>some boolean</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.use_buffer.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.use_buffer.page
new file mode 100644
index 00000000..c602a896
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.use_buffer.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.use_buffer"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_use_buffer</api:name>
+ <api:arg>
+ <api:type>guint8</api:type>
+ <api:name>bytes</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.use_buffer</title>
+
+<synopsis><code mime="text/x-gjs">
+function use_buffer(bytes:guint8):void {
+ // Gjs wrapper for regress_annotation_object_use_buffer()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>bytes</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.watch_full.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.watch_full.page
new file mode 100644
index 00000000..99bfaf1b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.watch_full.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.watch_full"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_watch_full</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationForeachFunc</api:type>
+ <api:name>func</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.watch_full</title>
+
+<synopsis><code mime="text/x-gjs">
+function watch_full(func:Regress.AnnotationForeachFunc):void {
+ // Gjs wrapper for regress_annotation_object_watch_full()
+}
+</code></synopsis>
+
+
+ <p>Test overriding via the "Rename To" annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>func</code></title>
+<p>The callback</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.with_voidp.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.with_voidp.page
new file mode 100644
index 00000000..6daccb5e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationObject.with_voidp.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.with_voidp"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_with_voidp</api:name>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.prototype.with_voidp</title>
+
+<synopsis><code mime="text/x-gjs">
+function with_voidp(data:gpointer):void {
+ // Gjs wrapper for regress_annotation_object_with_voidp()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+<p>Opaque pointer handle</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationStruct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationStruct.page
new file mode 100644
index 00000000..e2100429
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.AnnotationStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationStruct</title>
+
+
+
+ <p>This is a test of an array of object in an field of a struct.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooASingle.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooASingle.page
new file mode 100644
index 00000000..09cd98fd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooASingle.page
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<page id="Regress.FooASingle"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooASingle</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooASingle.FOO_SOME_SINGLE_ENUM</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooAddressType.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooAddressType.page
new file mode 100644
index 00000000..008a8f36
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooAddressType.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooAddressType"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooAddressType</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooAddressType.INVALID</code></title>
+
+</item>
+<item>
+<title><code>FooAddressType.IPV4</code></title>
+
+</item>
+<item>
+<title><code>FooAddressType.IPV6</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.add.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.add.page
new file mode 100644
index 00000000..9091617a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.add.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect.add"
+ type="topic"
+ style="method"
+ 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.FooBRect" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_brect_add</api:name>
+ <api:arg>
+ <api:type>Regress.FooBRect</api:type>
+ <api:name>b2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBRect.prototype.add</title>
+
+<synopsis><code mime="text/x-gjs">
+function add(b2:Regress.FooBRect):void {
+ // Gjs wrapper for regress_foo_brect_add()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>b2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.new.page
new file mode 100644
index 00000000..2d2b5749
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.new.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect.new"
+ type="topic"
+ style="constructor"
+ 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.FooBRect" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooBRect</api:type>
+ </api:returns>
+ <api:name>regress_foo_brect_new</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBRect.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new(x:Number, y:Number):Regress.FooBRect {
+ // Gjs wrapper for regress_foo_brect_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.page
new file mode 100644
index 00000000..fd1e9d6e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBRect.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooBRect</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.get_contained_type.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.get_contained_type.page
new file mode 100644
index 00000000..7d82f4f6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.get_contained_type.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion.get_contained_type"
+ type="topic"
+ style="method"
+ 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.FooBUnion" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_foo_bunion_get_contained_type</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBUnion.prototype.get_contained_type</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_contained_type():Number {
+ // Gjs wrapper for regress_foo_bunion_get_contained_type()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.new.page
new file mode 100644
index 00000000..e16397c9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion.new"
+ type="topic"
+ style="constructor"
+ 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.FooBUnion" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooBUnion</api:type>
+ </api:returns>
+ <api:name>regress_foo_bunion_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBUnion.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.FooBUnion {
+ // Gjs wrapper for regress_foo_bunion_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page
new file mode 100644
index 00000000..8644d96e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBUnion.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooBUnion</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.method.page
new file mode 100644
index 00000000..896d02ad
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.method.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed.method"
+ type="topic"
+ style="method"
+ 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.FooBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_boxed_method</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBoxed.prototype.method</title>
+
+<synopsis><code mime="text/x-gjs">
+function method():void {
+ // Gjs wrapper for regress_foo_boxed_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.new.page
new file mode 100644
index 00000000..67b1c4fc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed.new"
+ type="topic"
+ style="constructor"
+ 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.FooBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooBoxed</api:type>
+ </api:returns>
+ <api:name>regress_foo_boxed_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBoxed.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.FooBoxed {
+ // Gjs wrapper for regress_foo_boxed_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.page
new file mode 100644
index 00000000..bca1f99a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooBoxed</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.page
new file mode 100644
index 00000000..0b4f9e52
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBuffer"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooBuffer</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let foo_buffer = new Regress.FooBuffer();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ <item>
+ <code>Regress.FooBuffer</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.some_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.some_method.page
new file mode 100644
index 00000000..871ec7af
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooBuffer.some_method.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBuffer.some_method"
+ type="topic"
+ style="method"
+ 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.FooBuffer" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_buffer_some_method</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBuffer.prototype.some_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function some_method():void {
+ // Gjs wrapper for regress_foo_buffer_some_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooCallback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooCallback.page
new file mode 100644
index 00000000..52feda29
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.method.page
new file mode 100644
index 00000000..0b1b6b86
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.method.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.FooDBusData.method"
+ type="topic"
+ style="method"
+ 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.FooDBusData" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_dbus_data_method</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooDBusData.prototype.method</title>
+
+<synopsis><code mime="text/x-gjs">
+function method():void {
+ // Gjs wrapper for regress_foo_dbus_data_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.page
new file mode 100644
index 00000000..b4eaeade
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooDBusData.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooDBusData"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooDBusData</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumFullname.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumFullname.page
new file mode 100644
index 00000000..00169aaf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumFullname.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumFullname"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumFullname</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooEnumFullname.ONE</code></title>
+
+</item>
+<item>
+<title><code>FooEnumFullname.TWO</code></title>
+
+</item>
+<item>
+<title><code>FooEnumFullname.THREE</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumNoType.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumNoType.page
new file mode 100644
index 00000000..d2b41e61
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumNoType.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumNoType"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumNoType</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooEnumNoType.UN</code></title>
+
+</item>
+<item>
+<title><code>FooEnumNoType.DEUX</code></title>
+
+</item>
+<item>
+<title><code>FooEnumNoType.TROIS</code></title>
+
+</item>
+<item>
+<title><code>FooEnumNoType.NEUF</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.method.page
new file mode 100644
index 00000000..e3240c10
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.method.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType.method"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_foo_enum_type_method</api:name>
+ <api:arg>
+ <api:type>Regress.FooEnumType</api:type>
+ <api:name>regress_foo_enum</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>method</title>
+
+<synopsis><code mime="text/x-gjs">
+function method(regress_foo_enum:Regress.FooEnumType):Number {
+ // Gjs wrapper for regress_foo_enum_type_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>regress_foo_enum</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.page
new file mode 100644
index 00000000..c3ff89b3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumType</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooEnumType.ALPHA</code></title>
+
+</item>
+<item>
+<title><code>FooEnumType.BETA</code></title>
+
+</item>
+<item>
+<title><code>FooEnumType.DELTA</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.returnv.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.returnv.page
new file mode 100644
index 00000000..4e42fdeb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEnumType.returnv.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType.returnv"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooEnumType</api:type>
+ </api:returns>
+ <api:name>regress_foo_enum_type_returnv</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>returnv</title>
+
+<synopsis><code mime="text/x-gjs">
+function returnv(x:Number):Regress.FooEnumType {
+ // Gjs wrapper for regress_foo_enum_type_returnv()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.page
new file mode 100644
index 00000000..8c0b6a23
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooError.GOOD</code></title>
+
+</item>
+<item>
+<title><code>FooError.BAD</code></title>
+
+</item>
+<item>
+<title><code>FooError.UGLY</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.quark.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.quark.page
new file mode 100644
index 00000000..ed023765
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_foo_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>quark</title>
+
+<synopsis><code mime="text/x-gjs">
+function quark():GLib.Quark {
+ // Gjs wrapper for regress_foo_error_quark()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page
new file mode 100644
index 00000000..ce368302
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEvent.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEvent"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooEvent</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventAny.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventAny.page
new file mode 100644
index 00000000..562ec03c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventAny.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEventAny"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooEventAny</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventExpose.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventExpose.page
new file mode 100644
index 00000000..0000add5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooEventExpose.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEventExpose"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooEventExpose</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsNoType.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsNoType.page
new file mode 100644
index 00000000..53539d49
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsNoType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooFlagsNoType"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooFlagsNoType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsType.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsType.page
new file mode 100644
index 00000000..2b4afeb5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooFlagsType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooFlagsType"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooFlagsType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.copy.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.copy.page
new file mode 100644
index 00000000..1a61cfbb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.copy.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct.copy"
+ type="topic"
+ style="method"
+ 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.FooForeignStruct" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooForeignStruct</api:type>
+ </api:returns>
+ <api:name>regress_foo_foreign_struct_copy</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooForeignStruct.prototype.copy</title>
+
+<synopsis><code mime="text/x-gjs">
+function copy():Regress.FooForeignStruct {
+ // Gjs wrapper for regress_foo_foreign_struct_copy()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.new.page
new file mode 100644
index 00000000..814eef35
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct.new"
+ type="topic"
+ style="constructor"
+ 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.FooForeignStruct" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooForeignStruct</api:type>
+ </api:returns>
+ <api:name>regress_foo_foreign_struct_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooForeignStruct.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.FooForeignStruct {
+ // Gjs wrapper for regress_foo_foreign_struct_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.page
new file mode 100644
index 00000000..312994a9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooForeignStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooForeignStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface-do_regress_foo.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface-do_regress_foo.page
new file mode 100644
index 00000000..17f6ec94
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface-do_regress_foo.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface-do_regress_foo"
+ type="topic"
+ style="vfunc"
+ 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.FooInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterface::do_regress_foo</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_do_regress_foo(x:Number):void {
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.do_regress_foo.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.do_regress_foo.page
new file mode 100644
index 00000000..993998e4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.do_regress_foo.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface.do_regress_foo"
+ type="topic"
+ style="method"
+ 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.FooInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_interface_do_regress_foo</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooInterface.prototype.do_regress_foo</title>
+
+<synopsis><code mime="text/x-gjs">
+function do_regress_foo(x:Number):void {
+ // Gjs wrapper for regress_foo_interface_do_regress_foo()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.page
new file mode 100644
index 00000000..83ae1d0d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.page
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterface</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let foo_interface = new Regress.FooInterface();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.FooInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.static_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.static_method.page
new file mode 100644
index 00000000..d38a4488
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooInterface.static_method.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface.static_method"
+ type="topic"
+ style="function"
+ 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.FooInterface" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_interface_static_method</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>static_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function static_method(x:Number):void {
+ // Gjs wrapper for regress_foo_interface_static_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-read_fn.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-read_fn.page
new file mode 100644
index 00000000..4bdaf370
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-read_fn.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-read_fn"
+ type="topic"
+ style="vfunc"
+ 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.FooObject" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject::read_fn</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_read_fn(offset:Number, length:Number):void {
+}
+</code></synopsis>
+
+
+ <p>Read some stuff.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>offset</code></title>
+<p>offset</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>length</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-signal.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-signal.page
new file mode 100644
index 00000000..6e5657d4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-signal.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-signal"
+ type="topic"
+ style="signal"
+ 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.FooObject" group="signal" type="guide"/>
+ <title type="link" role="topic">signal</title>
+
+ </info>
+ <title>Regress.FooObject::signal</title>
+
+<synopsis><code mime="text/x-python">
+function callback(foo_object, object:GObject.Object, p0:gpointer, ):String;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>foo_object</code></title>
+<p>instance of <link xref="Regress.FooObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>p0</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-string.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-string.page
new file mode 100644
index 00000000..a738fdd7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-string.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-string"
+ type="topic"
+ style="property"
+ 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.FooObject" group="property" type="guide"/>
+ <title type="link" role="topic">string</title>
+
+ </info>
+ <title>Regress.FooObject:string</title>
+
+<synopsis><code mime="text/x-python">
+"string" String : Read / Write / Construct
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-virtual_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-virtual_method.page
new file mode 100644
index 00000000..d2ccd866
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject-virtual_method.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-virtual_method"
+ type="topic"
+ style="vfunc"
+ 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.FooObject" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject::virtual_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_virtual_method(first_param:Number):Boolean {
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>first_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.a_global_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.a_global_method.page
new file mode 100644
index 00000000..83fec18f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.a_global_method.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.a_global_method"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_a_global_method</api:name>
+ <api:arg>
+ <api:type>Utility.Object</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>a_global_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function a_global_method(obj:Utility.Object):void {
+ // Gjs wrapper for regress_foo_object_a_global_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.append_new_stack_layer.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.append_new_stack_layer.page
new file mode 100644
index 00000000..f1bfd923
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.append_new_stack_layer.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.append_new_stack_layer"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooOtherObject</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_append_new_stack_layer</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.append_new_stack_layer</title>
+
+<synopsis><code mime="text/x-gjs">
+function append_new_stack_layer(x:Number):Regress.FooOtherObject {
+ // Gjs wrapper for regress_foo_object_append_new_stack_layer()
+}
+</code></synopsis>
+
+
+ <p>This shouldn't be scanned as a constructor.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.dup_name.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.dup_name.page
new file mode 100644
index 00000000..d74f95bf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.dup_name.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.dup_name"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_dup_name</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.dup_name</title>
+
+<synopsis><code mime="text/x-gjs">
+function dup_name():String {
+ // Gjs wrapper for regress_foo_object_dup_name()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.external_type.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.external_type.page
new file mode 100644
index 00000000..7da1b86e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.external_type.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.external_type"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Utility.Object</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_external_type</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.external_type</title>
+
+<synopsis><code mime="text/x-gjs">
+function external_type():Utility.Object {
+ // Gjs wrapper for regress_foo_object_external_type()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p><code>null</code> always</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_default.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_default.page
new file mode 100644
index 00000000..8ab86544
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_default.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.get_default"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooSubobject</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_get_default</api:name>
+ </api:function>
+
+ </info>
+ <title>get_default</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_default():Regress.FooSubobject {
+ // Gjs wrapper for regress_foo_object_get_default()
+}
+</code></synopsis>
+
+
+ <p>This function is intended to match clutter_stage_get_default which
+uses a C sugar return type.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>The global <link xref="Regress.FooSubobject"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_name.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_name.page
new file mode 100644
index 00000000..b9c69d2b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.get_name.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.get_name"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_get_name</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.get_name</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_name():String {
+ // Gjs wrapper for regress_foo_object_get_name()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.handle_glyph.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.handle_glyph.page
new file mode 100644
index 00000000..3209f200
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.handle_glyph.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.handle_glyph"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_handle_glyph</api:name>
+ <api:arg>
+ <api:type>Utility.Glyph</api:type>
+ <api:name>glyph</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.handle_glyph</title>
+
+<synopsis><code mime="text/x-gjs">
+function handle_glyph(glyph:Utility.Glyph):void {
+ // Gjs wrapper for regress_foo_object_handle_glyph()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>glyph</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.is_it_time_yet.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.is_it_time_yet.page
new file mode 100644
index 00000000..f42e16bb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.is_it_time_yet.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.is_it_time_yet"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_is_it_time_yet</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>time</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.is_it_time_yet</title>
+
+<synopsis><code mime="text/x-gjs">
+function is_it_time_yet(time:Number):void {
+ // Gjs wrapper for regress_foo_object_is_it_time_yet()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>time</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new.page
new file mode 100644
index 00000000..fa40bfc3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.new"
+ type="topic"
+ style="constructor"
+ 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.FooObject" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooObject</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.FooObject {
+ // Gjs wrapper for regress_foo_object_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new_as_super.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new_as_super.page
new file mode 100644
index 00000000..0323a1be
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.new_as_super.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.new_as_super"
+ type="topic"
+ style="constructor"
+ 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.FooObject" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_new_as_super</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.new_as_super</title>
+
+<synopsis><code mime="text/x-gjs">
+function new_as_super():GObject.Object {
+ // Gjs wrapper for regress_foo_object_new_as_super()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.page
new file mode 100644
index 00000000..1cbea89b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let foo_object = new Regress.FooObject({
+ <link xref='Regress.FooObject-hidden'>hidden</link>: value,
+ <link xref='Regress.FooObject-string'>string</link>: value,
+});
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.read.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.read.page
new file mode 100644
index 00000000..78bdb648
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.read.page
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.read"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_read</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>offset</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.read</title>
+
+<synopsis><code mime="text/x-gjs">
+function read(offset:Number, length:Number):void {
+ // Gjs wrapper for regress_foo_object_read()
+}
+</code></synopsis>
+
+
+ <p>Read some stuff.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>offset</code></title>
+<p>offset</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>length</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.static_meth.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.static_meth.page
new file mode 100644
index 00000000..c4c1045a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.static_meth.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.static_meth"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_static_meth</api:name>
+ </api:function>
+
+ </info>
+ <title>static_meth</title>
+
+<synopsis><code mime="text/x-gjs">
+function static_meth():Number {
+ // Gjs wrapper for regress_foo_object_static_meth()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.various.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.various.page
new file mode 100644
index 00000000..1f509214
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.various.page
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.various"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_various</api:name>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GType</api:type>
+ <api:name>some_type</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.various</title>
+
+<synopsis><code mime="text/x-gjs">
+function various(data:gpointer, some_type:GType):void {
+ // Gjs wrapper for regress_foo_object_various()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>some_type</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.virtual_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.virtual_method.page
new file mode 100644
index 00000000..3467ca20
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObject.virtual_method.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.virtual_method"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_virtual_method</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>first_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.prototype.virtual_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function virtual_method(first_param:Number):Boolean {
+ // Gjs wrapper for regress_foo_object_virtual_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>first_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObjectCookie.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObjectCookie.page
new file mode 100644
index 00000000..44a63ab1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooObjectCookie.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObjectCookie"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooObjectCookie</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooOtherObject.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooOtherObject.page
new file mode 100644
index 00000000..0916a449
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooOtherObject.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.FooOtherObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooOtherObject</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let foo_other_object = new Regress.FooOtherObject();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooOtherObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.add.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.add.page
new file mode 100644
index 00000000..276450e6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.add.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooRectangle.add"
+ type="topic"
+ style="method"
+ 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.FooRectangle" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_rectangle_add</api:name>
+ <api:arg>
+ <api:type>Regress.FooRectangle</api:type>
+ <api:name>r2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooRectangle.prototype.add</title>
+
+<synopsis><code mime="text/x-gjs">
+function add(r2:Regress.FooRectangle):void {
+ // Gjs wrapper for regress_foo_rectangle_add()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>r2</code></title>
+<p>source rectangle</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.page
new file mode 100644
index 00000000..0cfef622
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooRectangle.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooRectangle"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooRectangle</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStackLayer.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStackLayer.page
new file mode 100644
index 00000000..8a08c9ae
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStackLayer.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.FooStackLayer"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooStackLayer</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooStackLayer.DESKTOP</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.BOTTOM</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.NORMAL</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.TOP</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.DOCK</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.FULLSCREEN</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.FOCUSED_WINDOW</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.OVERRIDE_REDIRECT</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.LAST</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStruct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStruct.page
new file mode 100644
index 00000000..84f5d192
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy-event.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy-event.page
new file mode 100644
index 00000000..961a22e6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy-event.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-destroy-event"
+ type="topic"
+ style="signal"
+ 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.FooSubInterface" group="signal" type="guide"/>
+ <title type="link" role="topic">destroy-event</title>
+
+ </info>
+ <title>Regress.FooSubInterface::destroy-event</title>
+
+<synopsis><code mime="text/x-python">
+function callback(foo_sub_interface, ):void;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>foo_sub_interface</code></title>
+<p>instance of <link xref="Regress.FooSubInterface"/> that is emitting the signal</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy_event.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy_event.page
new file mode 100644
index 00000000..5abc585f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-destroy_event.page
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-destroy_event"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::destroy_event</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_destroy_event():void {
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_bar.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_bar.page
new file mode 100644
index 00000000..81649248
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_bar.page
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-do_bar"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::do_bar</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_do_bar():void {
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_baz.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_baz.page
new file mode 100644
index 00000000..4945c890
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface-do_baz.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-do_baz"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::do_baz</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_do_baz(callback:GObject.Callback):void {
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_bar.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_bar.page
new file mode 100644
index 00000000..a258a3e6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_bar.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface.do_bar"
+ type="topic"
+ style="method"
+ 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.FooSubInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_sub_interface_do_bar</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooSubInterface.prototype.do_bar</title>
+
+<synopsis><code mime="text/x-gjs">
+function do_bar():void {
+ // Gjs wrapper for regress_foo_sub_interface_do_bar()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_baz.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_baz.page
new file mode 100644
index 00000000..b55a8d78
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.do_baz.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface.do_baz"
+ type="topic"
+ style="method"
+ 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.FooSubInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_sub_interface_do_baz</api:name>
+ <api:arg>
+ <api:type>GObject.Callback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooSubInterface.prototype.do_baz</title>
+
+<synopsis><code mime="text/x-gjs">
+function do_baz(callback:GObject.Callback):void {
+ // Gjs wrapper for regress_foo_sub_interface_do_baz()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.page
new file mode 100644
index 00000000..0694e3df
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubInterface.page
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let foo_sub_interface = new Regress.FooSubInterface();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.FooSubInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.new.page
new file mode 100644
index 00000000..08cb116d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubobject.new"
+ type="topic"
+ style="constructor"
+ 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.FooSubobject" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooSubobject</api:type>
+ </api:returns>
+ <api:name>regress_foo_subobject_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooSubobject.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.FooSubobject {
+ // Gjs wrapper for regress_foo_subobject_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.page
new file mode 100644
index 00000000..f9cac644
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooSubobject.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubobject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubobject</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let foo_subobject = new Regress.FooSubobject();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ <item>
+ <code>Regress.FooSubobject</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooThingWithArray.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooThingWithArray.page
new file mode 100644
index 00000000..430dce7c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooThingWithArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooThingWithArray"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooThingWithArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page
new file mode 100644
index 00000000..9746f17e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUnion.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooUnion"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooUnion</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUtilityStruct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUtilityStruct.page
new file mode 100644
index 00000000..2b94f691
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooUtilityStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooUtilityStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooUtilityStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooXEvent.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooXEvent.page
new file mode 100644
index 00000000..c389ef05
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.FooXEvent.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooXEvent"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooXEvent</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeGnomeKeyringPasswordSchema.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeGnomeKeyringPasswordSchema.page
new file mode 100644
index 00000000..44a946ee
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeGnomeKeyringPasswordSchema.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeGnomeKeyringPasswordSchema"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.LikeGnomeKeyringPasswordSchema</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.page
new file mode 100644
index 00000000..fb4831f5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeXklConfigItem"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.LikeXklConfigItem</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.set_name.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.set_name.page
new file mode 100644
index 00000000..f81bc5df
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.LikeXklConfigItem.set_name.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeXklConfigItem.set_name"
+ type="topic"
+ style="method"
+ 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.LikeXklConfigItem" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_like_xkl_config_item_set_name</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>name</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.LikeXklConfigItem.prototype.set_name</title>
+
+<synopsis><code mime="text/x-gjs">
+function set_name(name:String):void {
+ // Gjs wrapper for regress_like_xkl_config_item_set_name()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>name</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.PtrArrayAlias.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.PtrArrayAlias.page
new file mode 100644
index 00000000..f66aee44
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.PtrArrayAlias.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.PtrArrayAlias"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.PtrArrayAlias</title>
+
+
+
+ <p>Typedef'd GPtrArray for some reason</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.page
new file mode 100644
index 00000000..f31b58ec
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestABCError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestABCError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestABCError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestABCError.CODE2</code></title>
+
+</item>
+<item>
+<title><code>TestABCError.CODE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.quark.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.quark.page
new file mode 100644
index 00000000..72f9adc3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestABCError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestABCError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_abc_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>quark</title>
+
+<synopsis><code mime="text/x-gjs">
+function quark():GLib.Quark {
+ // Gjs wrapper for regress_test_abc_error_quark()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.copy.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.copy.page
new file mode 100644
index 00000000..751ce883
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.copy.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxed</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_copy</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.prototype.copy</title>
+
+<synopsis><code mime="text/x-gjs">
+function copy():Regress.TestBoxed {
+ // Gjs wrapper for regress_test_boxed_copy()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.equals.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.equals.page
new file mode 100644
index 00000000..5c23da2d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.equals.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.equals"
+ type="topic"
+ style="method"
+ 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.TestBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_equals</api:name>
+ <api:arg>
+ <api:type>Regress.TestBoxed</api:type>
+ <api:name>other</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.prototype.equals</title>
+
+<synopsis><code mime="text/x-gjs">
+function equals(other:Regress.TestBoxed):Boolean {
+ // Gjs wrapper for regress_test_boxed_equals()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>other</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new.page
new file mode 100644
index 00000000..88e33de3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxed</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.TestBoxed {
+ // Gjs wrapper for regress_test_boxed_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor1.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor1.page
new file mode 100644
index 00000000..801bad21
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor1.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new_alternative_constructor1"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxed</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new_alternative_constructor1</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.new_alternative_constructor1</title>
+
+<synopsis><code mime="text/x-gjs">
+function new_alternative_constructor1(i:Number):Regress.TestBoxed {
+ // Gjs wrapper for regress_test_boxed_new_alternative_constructor1()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor2.page
new file mode 100644
index 00000000..23fa6723
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor2.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new_alternative_constructor2"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxed</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new_alternative_constructor2</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>j</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.new_alternative_constructor2</title>
+
+<synopsis><code mime="text/x-gjs">
+function new_alternative_constructor2(i:Number, j:Number):Regress.TestBoxed {
+ // Gjs wrapper for regress_test_boxed_new_alternative_constructor2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+
+</item>
+<item>
+<title><code>j</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor3.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor3.page
new file mode 100644
index 00000000..8f0c2d28
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.new_alternative_constructor3.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.new_alternative_constructor3"
+ type="topic"
+ style="constructor"
+ 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.TestBoxed" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxed</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_new_alternative_constructor3</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>s</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.new_alternative_constructor3</title>
+
+<synopsis><code mime="text/x-gjs">
+function new_alternative_constructor3(s:String):Regress.TestBoxed {
+ // Gjs wrapper for regress_test_boxed_new_alternative_constructor3()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>s</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.page
new file mode 100644
index 00000000..baa423f2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxed</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.copy.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.copy.page
new file mode 100644
index 00000000..06bccc87
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.copy.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxedB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxedB</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_b_copy</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedB.prototype.copy</title>
+
+<synopsis><code mime="text/x-gjs">
+function copy():Regress.TestBoxedB {
+ // Gjs wrapper for regress_test_boxed_b_copy()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.new.page
new file mode 100644
index 00000000..e71147ae
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.new.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxedB" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxedB</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_b_new</api:name>
+ <api:arg>
+ <api:type>gint8</api:type>
+ <api:name>some_int8</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>some_long</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedB.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new(some_int8:gint8, some_long:Number):Regress.TestBoxedB {
+ // Gjs wrapper for regress_test_boxed_b_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>some_int8</code></title>
+
+</item>
+<item>
+<title><code>some_long</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.page
new file mode 100644
index 00000000..0e39780b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.new.page
new file mode 100644
index 00000000..542c93e4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedC.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxedC" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxedC</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_c_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedC.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.TestBoxedC {
+ // Gjs wrapper for regress_test_boxed_c_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.page
new file mode 100644
index 00000000..18b77d9f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedC.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedC"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedC</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.copy.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.copy.page
new file mode 100644
index 00000000..7b51fd5b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.copy.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxedD</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_copy</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedD.prototype.copy</title>
+
+<synopsis><code mime="text/x-gjs">
+function copy():Regress.TestBoxedD {
+ // Gjs wrapper for regress_test_boxed_d_copy()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.free.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.free.page
new file mode 100644
index 00000000..82df9040
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.free.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.free"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_free</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedD.prototype.free</title>
+
+<synopsis><code mime="text/x-gjs">
+function free():void {
+ // Gjs wrapper for regress_test_boxed_d_free()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.get_magic.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.get_magic.page
new file mode 100644
index 00000000..0f7923e6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.get_magic.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.get_magic"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_get_magic</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedD.prototype.get_magic</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_magic():Number {
+ // Gjs wrapper for regress_test_boxed_d_get_magic()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.new.page
new file mode 100644
index 00000000..cfd50c56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.new.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.new"
+ type="topic"
+ style="constructor"
+ 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.TestBoxedD" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxedD</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_new</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>a_string</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>a_int</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedD.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new(a_string:String, a_int:Number):Regress.TestBoxedD {
+ // Gjs wrapper for regress_test_boxed_d_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>a_string</code></title>
+
+</item>
+<item>
+<title><code>a_int</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.page
new file mode 100644
index 00000000..995e80dd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestBoxedD.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedD</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallback.page
new file mode 100644
index 00000000..bed84d50
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackArray.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackArray.page
new file mode 100644
index 00000000..7d3f7b83
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackArray"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackFull.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackFull.page
new file mode 100644
index 00000000..0b8fca1d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackFull.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackFull"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackFull</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackGError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackGError.page
new file mode 100644
index 00000000..804382f5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackGError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackGError"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackGError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackHashtable.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackHashtable.page
new file mode 100644
index 00000000..06ebb706
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackHashtable.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackHashtable"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackHashtable</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackOwnedGError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackOwnedGError.page
new file mode 100644
index 00000000..28b21ea4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackOwnedGError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackOwnedGError"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackOwnedGError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackUserData.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackUserData.page
new file mode 100644
index 00000000..286c830a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestCallbackUserData.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackUserData"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackUserData</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestDEFError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestDEFError.page
new file mode 100644
index 00000000..589059d5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestDEFError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestDEFError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestDEFError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestDEFError.CODE0</code></title>
+
+</item>
+<item>
+<title><code>TestDEFError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestDEFError.CODE2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.page
new file mode 100644
index 00000000..814b474b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnum"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnum</title>
+
+
+
+ <p>By purpose, not all members have documentation</p>
+
+
+
+
+<terms>
+<item>
+<title><code>TestEnum.VALUE1</code></title>
+<p>value 1</p>
+</item>
+<item>
+<title><code>TestEnum.VALUE2</code></title>
+<p>value 2</p>
+</item>
+<item>
+<title><code>TestEnum.VALUE3</code></title>
+
+</item>
+<item>
+<title><code>TestEnum.VALUE4</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.param.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.param.page
new file mode 100644
index 00000000..b4dfb296
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnum.param.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnum.param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_test_enum_param</api:name>
+ <api:arg>
+ <api:type>Regress.TestEnum</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>param</title>
+
+<synopsis><code mime="text/x-gjs">
+function param(e:Regress.TestEnum):String {
+ // Gjs wrapper for regress_test_enum_param()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumNoGEnum.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumNoGEnum.page
new file mode 100644
index 00000000..5c0c5594
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumNoGEnum.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnumNoGEnum"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnumNoGEnum</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestEnumNoGEnum.EVALUE1</code></title>
+
+</item>
+<item>
+<title><code>TestEnumNoGEnum.EVALUE2</code></title>
+
+</item>
+<item>
+<title><code>TestEnumNoGEnum.EVALUE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumUnsigned.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumUnsigned.page
new file mode 100644
index 00000000..df3cfa1e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestEnumUnsigned.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnumUnsigned"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnumUnsigned</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestEnumUnsigned.VALUE1</code></title>
+
+</item>
+<item>
+<title><code>TestEnumUnsigned.VALUE2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.page
new file mode 100644
index 00000000..d6a6ebb2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestError.CODE2</code></title>
+
+</item>
+<item>
+<title><code>TestError.CODE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.quark.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.quark.page
new file mode 100644
index 00000000..f849bfe4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>quark</title>
+
+<synopsis><code mime="text/x-gjs">
+function quark():GLib.Quark {
+ // Gjs wrapper for regress_test_error_quark()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFlags.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFlags.page
new file mode 100644
index 00000000..d5bfeeb4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFlags.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFlags"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFlags</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.new.page
new file mode 100644
index 00000000..94c80cfa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFloating.new"
+ type="topic"
+ style="constructor"
+ 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.TestFloating" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestFloating</api:type>
+ </api:returns>
+ <api:name>regress_test_floating_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestFloating.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.TestFloating {
+ // Gjs wrapper for regress_test_floating_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>A new floating <link xref="Regress.TestFloating"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.page
new file mode 100644
index 00000000..07ef3f21
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFloating.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFloating"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFloating</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_floating = new Regress.TestFloating();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>GObject.InitiallyUnowned</code>
+ <item>
+ <code>Regress.TestFloating</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.page
new file mode 100644
index 00000000..a8cb35a0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.page
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObject</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_fundamental_object = new Regress.TestFundamentalObject();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestFundamentalObject</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.ref.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.ref.page
new file mode 100644
index 00000000..b1c37efb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.ref.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject.ref"
+ type="topic"
+ style="method"
+ 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.TestFundamentalObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestFundamentalObject</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_object_ref</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestFundamentalObject.prototype.ref</title>
+
+<synopsis><code mime="text/x-gjs">
+function ref():Regress.TestFundamentalObject {
+ // Gjs wrapper for regress_test_fundamental_object_ref()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>A new <link xref="Regress.TestFundamentalObject"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.unref.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.unref.page
new file mode 100644
index 00000000..758a30d7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObject.unref.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject.unref"
+ type="topic"
+ style="method"
+ 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.TestFundamentalObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_object_unref</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestFundamentalObject.prototype.unref</title>
+
+<synopsis><code mime="text/x-gjs">
+function unref():void {
+ // Gjs wrapper for regress_test_fundamental_object_unref()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectCopyFunction.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectCopyFunction.page
new file mode 100644
index 00000000..73a33285
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectCopyFunction.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObjectCopyFunction"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObjectCopyFunction</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectFinalizeFunction.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectFinalizeFunction.page
new file mode 100644
index 00000000..df0e8fba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalObjectFinalizeFunction.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObjectFinalizeFunction"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObjectFinalizeFunction</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.new.page
new file mode 100644
index 00000000..c6a31f90
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.new.page
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalSubObject.new"
+ type="topic"
+ style="constructor"
+ 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.TestFundamentalSubObject"
+ group="constructor"
+ type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestFundamentalSubObject</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_sub_object_new</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestFundamentalSubObject.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new(data:String):Regress.TestFundamentalSubObject {
+ // Gjs wrapper for regress_test_fundamental_sub_object_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.page
new file mode 100644
index 00000000..619eb308
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestFundamentalSubObject.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalSubObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalSubObject</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_fundamental_sub_object = new Regress.TestFundamentalSubObject();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestFundamentalObject</code>
+ <item>
+ <code>Regress.TestFundamentalSubObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo.page
new file mode 100644
index 00000000..176211b3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.do_foo"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_do_foo</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.prototype.do_foo</title>
+
+<synopsis><code mime="text/x-gjs">
+function do_foo(x:Number):void {
+ // Gjs wrapper for regress_test_inherit_drawable_do_foo()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page
new file mode 100644
index 00000000..038b73f9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.do_foo_maybe_throw"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_do_foo_maybe_throw</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.prototype.do_foo_maybe_throw</title>
+
+<synopsis><code mime="text/x-gjs">
+function do_foo_maybe_throw(x:Number):void {
+ // Gjs wrapper for regress_test_inherit_drawable_do_foo_maybe_throw()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_origin.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_origin.page
new file mode 100644
index 00000000..9dd2cbaa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_origin.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.get_origin"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_get_origin</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.prototype.get_origin</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_origin():void {
+ // Gjs wrapper for regress_test_inherit_drawable_get_origin()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_size.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_size.page
new file mode 100644
index 00000000..669ab1ce
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.get_size.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.get_size"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_get_size</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.prototype.get_size</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_size():void {
+ // Gjs wrapper for regress_test_inherit_drawable_get_size()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.page
new file mode 100644
index 00000000..02fa0649
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritDrawable.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestInheritDrawable</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_inherit_drawable = new Regress.TestInheritDrawable();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestInheritDrawable</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritPixmapObjectClass.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritPixmapObjectClass.page
new file mode 100644
index 00000000..0df0396b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInheritPixmapObjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritPixmapObjectClass"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestInheritPixmapObjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInterface.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInterface.page
new file mode 100644
index 00000000..4f398908
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestInterface.page
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestInterface</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_interface = new Regress.TestInterface();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-all.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-all.page
new file mode 100644
index 00000000..c2d87a47
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-all.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-all"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">all</title>
+
+ </info>
+ <title>Regress.TestObj::all</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, ):void;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-allow_none_vfunc.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-allow_none_vfunc.page
new file mode 100644
index 00000000..3febd772
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-allow_none_vfunc.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-allow_none_vfunc"
+ type="topic"
+ style="vfunc"
+ 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="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj::allow_none_vfunc</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_allow_none_vfunc(two:Regress.TestObj):void {
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>two</code></title>
+<p>Another object</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-bare.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-bare.page
new file mode 100644
index 00000000..f1f1b520
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-bare.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-bare"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">bare</title>
+
+ </info>
+ <title>Regress.TestObj:bare</title>
+
+<synopsis><code mime="text/x-python">
+"bare" GObject.Object : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-boxed.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-boxed.page
new file mode 100644
index 00000000..a392a771
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-boxed.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-boxed"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">boxed</title>
+
+ </info>
+ <title>Regress.TestObj:boxed</title>
+
+<synopsis><code mime="text/x-python">
+"boxed" Regress.TestBoxed : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-cleanup.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-cleanup.page
new file mode 100644
index 00000000..8e5e2bfe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-cleanup.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-cleanup"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">cleanup</title>
+
+ </info>
+ <title>Regress.TestObj::cleanup</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, ):void;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-double.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-double.page
new file mode 100644
index 00000000..5e2df6bb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-double.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-double"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">double</title>
+
+ </info>
+ <title>Regress.TestObj:double</title>
+
+<synopsis><code mime="text/x-python">
+"double" Number : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-first.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-first.page
new file mode 100644
index 00000000..d0294e9e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-first.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-first"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">first</title>
+
+ </info>
+ <title>Regress.TestObj::first</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, ):void;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-float.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-float.page
new file mode 100644
index 00000000..0554ba82
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-float.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-float"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">float</title>
+
+ </info>
+ <title>Regress.TestObj:float</title>
+
+<synopsis><code mime="text/x-python">
+"float" Number : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-gtype.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-gtype.page
new file mode 100644
index 00000000..6b222e4e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-gtype.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-gtype"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">gtype</title>
+
+ </info>
+ <title>Regress.TestObj:gtype</title>
+
+<synopsis><code mime="text/x-python">
+"gtype" GType : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table-old.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table-old.page
new file mode 100644
index 00000000..1d3c3c22
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table-old.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-hash-table-old"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">hash-table-old</title>
+
+ </info>
+ <title>Regress.TestObj:hash-table-old</title>
+
+<synopsis><code mime="text/x-python">
+"hash-table-old" {String: gint8} : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table.page
new file mode 100644
index 00000000..f8d3441a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-hash-table.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-hash-table"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">hash-table</title>
+
+ </info>
+ <title>Regress.TestObj:hash-table</title>
+
+<synopsis><code mime="text/x-python">
+"hash-table" {String: gint8} : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-int.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-int.page
new file mode 100644
index 00000000..0c3f4ccb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-int.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-int"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">int</title>
+
+ </info>
+ <title>Regress.TestObj:int</title>
+
+<synopsis><code mime="text/x-python">
+"int" Number : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list-old.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list-old.page
new file mode 100644
index 00000000..9d8ea917
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list-old.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-list-old"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">list-old</title>
+
+ </info>
+ <title>Regress.TestObj:list-old</title>
+
+<synopsis><code mime="text/x-python">
+"list-old" [String] : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list.page
new file mode 100644
index 00000000..02638e9e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-list.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-list"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">list</title>
+
+ </info>
+ <title>Regress.TestObj:list</title>
+
+<synopsis><code mime="text/x-python">
+"list" [String] : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-matrix.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-matrix.page
new file mode 100644
index 00000000..1d832171
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-matrix.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-matrix"
+ type="topic"
+ style="vfunc"
+ 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="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj::matrix</title>
+
+<synopsis><code mime="text/x-gjs">
+function vfunc_matrix(somestr:String):Number {
+}
+</code></synopsis>
+
+
+ <p>This method is virtual. Notably its name differs from the virtual
+slot name, which makes it useful for testing bindings handle this
+case.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>somestr</code></title>
+<p>Meaningless string</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page
new file mode 100644
index 00000000..c359b137
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-len-prop.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-array-len-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-array-len-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-array-len-prop</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, arr:[Number], ):void;
+</code></synopsis>
+
+
+ <p>This test signal similar to GSettings::change-event</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arr</code></title>
+<p>numbers, or <code>null</code></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-prop.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-prop.page
new file mode 100644
index 00000000..b1919f9b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-array-prop.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-array-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-array-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-array-prop</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, arr:[Number], ):void;
+</code></synopsis>
+
+
+ <p>This test signal is like TelepathyGlib's
+ TpChannel:: group-members-changed-detailed:</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arr</code></title>
+<p>numbers</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-foreign-struct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-foreign-struct.page
new file mode 100644
index 00000000..31b8ca38
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-foreign-struct.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-foreign-struct"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-foreign-struct</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-foreign-struct</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, cr:cairo.Context, ):void;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>cr</code></title>
+<p>A cairo context.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-hash-prop.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-hash-prop.page
new file mode 100644
index 00000000..137a4130
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-hash-prop.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-hash-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-hash-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-hash-prop</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, hash:{String: GObject.Value}, ):void;
+</code></synopsis>
+
+
+ <p>This test signal is like TelepathyGlib's
+ TpAccount::status-changed</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>hash</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-int64-prop.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-int64-prop.page
new file mode 100644
index 00000000..6c528c03
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-int64-prop.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-int64-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-int64-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-int64-prop</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, i:Number, ):Number;
+</code></synopsis>
+
+
+ <p>You can use this with regress_test_obj_emit_sig_with_int64, or raise from
+the introspection client langage.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-intarray-ret.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-intarray-ret.page
new file mode 100644
index 00000000..f724bcbf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-intarray-ret.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-intarray-ret"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-intarray-ret</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-intarray-ret</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, i:Number, ):[Number];
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-obj.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-obj.page
new file mode 100644
index 00000000..d7e15e05
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-obj.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-obj"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-obj</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-obj</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, obj:GObject.Object, ):void;
+</code></synopsis>
+
+
+ <p>Test transfer none GObject as a param (tests refcounting).
+Use with regress_test_obj_emit_sig_with_obj</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>obj</code></title>
+<p>A newly created RegressTestObj</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-strv.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-strv.page
new file mode 100644
index 00000000..a63e2076
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-strv.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-strv"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-strv</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-strv</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, strs:[String], ):void;
+</code></synopsis>
+
+
+ <p>Test GStrv as a param.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>strs</code></title>
+<p>strings</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-uint64-prop.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-uint64-prop.page
new file mode 100644
index 00000000..6fbf7a09
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-sig-with-uint64-prop.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-uint64-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-uint64-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-uint64-prop</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, i:Number, ):Number;
+</code></synopsis>
+
+
+ <p>You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
+the introspection client langage.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-string.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-string.page
new file mode 100644
index 00000000..2e91097a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-string.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-string"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">string</title>
+
+ </info>
+ <title>Regress.TestObj:string</title>
+
+<synopsis><code mime="text/x-python">
+"string" String : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test-with-static-scope-arg.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test-with-static-scope-arg.page
new file mode 100644
index 00000000..b19711f1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test-with-static-scope-arg.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-test-with-static-scope-arg"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">test-with-static-scope-arg</title>
+
+ </info>
+ <title>Regress.TestObj::test-with-static-scope-arg</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, object:Regress.TestSimpleBoxedA, ):void;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>object</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test.page
new file mode 100644
index 00000000..9700cefd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj-test.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-test"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">test</title>
+
+ </info>
+ <title>Regress.TestObj::test</title>
+
+<synopsis><code mime="text/x-python">
+function callback(test_obj, ):void;
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.constructor.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.constructor.page
new file mode 100644
index 00000000..4f2183d8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.constructor.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.constructor"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestObj</api:type>
+ </api:returns>
+ <api:name>regress_constructor</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.constructor</title>
+
+<synopsis><code mime="text/x-gjs">
+function constructor():Regress.TestObj {
+ // Gjs wrapper for regress_constructor()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.do_matrix.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.do_matrix.page
new file mode 100644
index 00000000..0770d0d3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.do_matrix.page
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.do_matrix"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_do_matrix</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>somestr</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.do_matrix</title>
+
+<synopsis><code mime="text/x-gjs">
+function do_matrix(somestr:String):Number {
+ // Gjs wrapper for regress_test_obj_do_matrix()
+}
+</code></synopsis>
+
+
+ <p>This method is virtual. Notably its name differs from the virtual
+slot name, which makes it useful for testing bindings handle this
+case.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>somestr</code></title>
+<p>Meaningless string</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_foreign_struct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_foreign_struct.page
new file mode 100644
index 00000000..5e719483
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_foreign_struct.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_foreign_struct"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_foreign_struct</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.emit_sig_with_foreign_struct</title>
+
+<synopsis><code mime="text/x-gjs">
+function emit_sig_with_foreign_struct():void {
+ // Gjs wrapper for regress_test_obj_emit_sig_with_foreign_struct()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_int64.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_int64.page
new file mode 100644
index 00000000..1c46dfbb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_int64.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_int64"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_int64</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.emit_sig_with_int64</title>
+
+<synopsis><code mime="text/x-gjs">
+function emit_sig_with_int64():void {
+ // Gjs wrapper for regress_test_obj_emit_sig_with_int64()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_obj.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_obj.page
new file mode 100644
index 00000000..ea33a826
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_obj.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_obj"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_obj</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.emit_sig_with_obj</title>
+
+<synopsis><code mime="text/x-gjs">
+function emit_sig_with_obj():void {
+ // Gjs wrapper for regress_test_obj_emit_sig_with_obj()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_uint64.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_uint64.page
new file mode 100644
index 00000000..35c06780
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.emit_sig_with_uint64.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_uint64"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_uint64</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.emit_sig_with_uint64</title>
+
+<synopsis><code mime="text/x-gjs">
+function emit_sig_with_uint64():void {
+ // Gjs wrapper for regress_test_obj_emit_sig_with_uint64()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.forced_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.forced_method.page
new file mode 100644
index 00000000..b3ff3bf7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.forced_method.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.forced_method"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_forced_method</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.forced_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function forced_method():void {
+ // Gjs wrapper for regress_forced_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method.page
new file mode 100644
index 00000000..9ee87686
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.instance_method"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_instance_method</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.instance_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function instance_method():Number {
+ // Gjs wrapper for regress_test_obj_instance_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method_callback.page
new file mode 100644
index 00000000..fe260691
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.instance_method_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.instance_method_callback"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_instance_method_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.instance_method_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function instance_method_callback(callback:Regress.TestCallback):void {
+ // Gjs wrapper for regress_test_obj_instance_method_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new.page
new file mode 100644
index 00000000..024db932
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.new"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestObj</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_new</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new(obj:Regress.TestObj):Regress.TestObj {
+ // Gjs wrapper for regress_test_obj_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_callback.page
new file mode 100644
index 00000000..4eaa0365
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_callback.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.new_callback"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestObj</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_new_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.new_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function new_callback(callback:Regress.TestCallbackUserData):Regress.TestObj {
+ // Gjs wrapper for regress_test_obj_new_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_from_file.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_from_file.page
new file mode 100644
index 00000000..c54fa622
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.new_from_file.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.new_from_file"
+ type="topic"
+ style="constructor"
+ 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="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestObj</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_new_from_file</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.new_from_file</title>
+
+<synopsis><code mime="text/x-gjs">
+function new_from_file(x:String):Regress.TestObj {
+ // Gjs wrapper for regress_test_obj_new_from_file()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.null_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.null_out.page
new file mode 100644
index 00000000..dfc9ef04
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.null_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.null_out"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_null_out</api:name>
+ </api:function>
+
+ </info>
+ <title>null_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function null_out():void {
+ // Gjs wrapper for regress_test_obj_null_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.page
new file mode 100644
index 00000000..b8428942
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.page
@@ -0,0 +1,75 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_obj = new Regress.TestObj({
+ <link xref='Regress.TestObj-bare'>bare</link>: value,
+ <link xref='Regress.TestObj-boxed'>boxed</link>: value,
+ <link xref='Regress.TestObj-double'>double</link>: value,
+ <link xref='Regress.TestObj-float'>float</link>: value,
+ <link xref='Regress.TestObj-gtype'>gtype</link>: value,
+ <link xref='Regress.TestObj-hash-table'>hash_table</link>: value,
+ <link xref='Regress.TestObj-hash-table-old'>hash_table_old</link>: value,
+ <link xref='Regress.TestObj-int'>int</link>: value,
+ <link xref='Regress.TestObj-list'>list</link>: value,
+ <link xref='Regress.TestObj-list-old'>list_old</link>: value,
+ <link xref='Regress.TestObj-string'>string</link>: value,
+});
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestObj</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.set_bare.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.set_bare.page
new file mode 100644
index 00000000..dca89e84
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.set_bare.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.set_bare"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_set_bare</api:name>
+ <api:arg>
+ <api:type>GObject.Object</api:type>
+ <api:name>bare</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.set_bare</title>
+
+<synopsis><code mime="text/x-gjs">
+function set_bare(bare:GObject.Object):void {
+ // Gjs wrapper for regress_test_obj_set_bare()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>bare</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_inout_param.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_inout_param.page
new file mode 100644
index 00000000..aee3f2c6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_inout_param.page
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_inout_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_inout_param</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.skip_inout_param</title>
+
+<synopsis><code mime="text/x-gjs">
+function skip_inout_param(a:Number, c:Number, inout_d:Number, num1:Number, num2:Number):Boolean {
+ // Gjs wrapper for regress_test_obj_skip_inout_param()
+}
+</code></synopsis>
+
+
+ <p>Check that the out value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>true</code> if the call succeeds, <code>false</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_out_param.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_out_param.page
new file mode 100644
index 00000000..75b7bb2c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_out_param.page
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_out_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_out_param</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.skip_out_param</title>
+
+<synopsis><code mime="text/x-gjs">
+function skip_out_param(a:Number, c:Number, inout_d:Number, num1:Number, num2:Number):Boolean {
+ // Gjs wrapper for regress_test_obj_skip_out_param()
+}
+</code></synopsis>
+
+
+ <p>Check that the out value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>true</code> if the call succeeds, <code>false</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_param.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_param.page
new file mode 100644
index 00000000..cd2081f8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_param.page
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_param</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.skip_param</title>
+
+<synopsis><code mime="text/x-gjs">
+function skip_param(a:Number, c:Number, inout_d:Number, num1:Number, num2:Number):Boolean {
+ // Gjs wrapper for regress_test_obj_skip_param()
+}
+</code></synopsis>
+
+
+ <p>Check that a parameter is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>true</code> if the call succeeds, <code>false</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val.page
new file mode 100644
index 00000000..22ec5729
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val.page
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_return_val"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_return_val</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.skip_return_val</title>
+
+<synopsis><code mime="text/x-gjs">
+function skip_return_val(a:Number, c:Number, inout_d:Number, num1:Number, num2:Number):Boolean {
+ // Gjs wrapper for regress_test_obj_skip_return_val()
+}
+</code></synopsis>
+
+
+ <p>Check that the return value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>true</code> if the call succeeds, <code>false</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val_no_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val_no_out.page
new file mode 100644
index 00000000..74701f7d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.skip_return_val_no_out.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_return_val_no_out"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_return_val_no_out</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.skip_return_val_no_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function skip_return_val_no_out(a:Number):Boolean {
+ // Gjs wrapper for regress_test_obj_skip_return_val_no_out()
+}
+</code></synopsis>
+
+
+ <p>Check that the return value is skipped. Succeed if a is nonzero, otherwise
+raise an error.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p><code>true</code> if the call succeeds, <code>false</code> if @error is set.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method.page
new file mode 100644
index 00000000..d1f2e59b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.static_method"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_static_method</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>static_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function static_method(x:Number):Number {
+ // Gjs wrapper for regress_test_obj_static_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method_callback.page
new file mode 100644
index 00000000..13e917eb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.static_method_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.static_method_callback"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_static_method_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>static_method_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function static_method_callback(callback:Regress.TestCallback):void {
+ // Gjs wrapper for regress_test_obj_static_method_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_0.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_0.page
new file mode 100644
index 00000000..78bf63ba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_0.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.torture_signature_0"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_torture_signature_0</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.torture_signature_0</title>
+
+<synopsis><code mime="text/x-gjs">
+function torture_signature_0(x:Number, foo:String, m:Number):void {
+ // Gjs wrapper for regress_test_obj_torture_signature_0()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_1.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_1.page
new file mode 100644
index 00000000..553ddd20
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestObj.torture_signature_1.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.torture_signature_1"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_torture_signature_1</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.prototype.torture_signature_1</title>
+
+<synopsis><code mime="text/x-gjs">
+function torture_signature_1(x:Number, foo:String, m:Number):Boolean {
+ // Gjs wrapper for regress_test_obj_torture_signature_1()
+}
+</code></synopsis>
+
+
+ <p>This function throws an error if m is odd.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.page
new file mode 100644
index 00000000..858e58a8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestOtherError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestOtherError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestOtherError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestOtherError.CODE2</code></title>
+
+</item>
+<item>
+<title><code>TestOtherError.CODE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.quark.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.quark.page
new file mode 100644
index 00000000..d75b6aa4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestOtherError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestOtherError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_unconventional_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>quark</title>
+
+<synopsis><code mime="text/x-gjs">
+function quark():GLib.Quark {
+ // Gjs wrapper for regress_test_unconventional_error_quark()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateEnum.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateEnum.page
new file mode 100644
index 00000000..66b477d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateEnum.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestPrivateEnum"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestPrivateEnum</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateStruct.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateStruct.page
new file mode 100644
index 00000000..7b1309da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestPrivateStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestPrivateStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestPrivateStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestReferenceEnum.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestReferenceEnum.page
new file mode 100644
index 00000000..2c8b1abb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestReferenceEnum.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestReferenceEnum"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestReferenceEnum</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestReferenceEnum.0</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.1</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.2</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.3</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.4</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.5</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.const_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.const_return.page
new file mode 100644
index 00000000..7f5dfde3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.const_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.const_return"
+ type="topic"
+ style="function"
+ 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.TestSimpleBoxedA" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_const_return</api:name>
+ </api:function>
+
+ </info>
+ <title>const_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function const_return():Regress.TestSimpleBoxedA {
+ // Gjs wrapper for regress_test_simple_boxed_a_const_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.copy.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.copy.page
new file mode 100644
index 00000000..6aa09744
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.copy.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.copy"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_copy</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA.prototype.copy</title>
+
+<synopsis><code mime="text/x-gjs">
+function copy():Regress.TestSimpleBoxedA {
+ // Gjs wrapper for regress_test_simple_boxed_a_copy()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.equals.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.equals.page
new file mode 100644
index 00000000..52e58775
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.equals.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.equals"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_equals</api:name>
+ <api:arg>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ <api:name>other_a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA.prototype.equals</title>
+
+<synopsis><code mime="text/x-gjs">
+function equals(other_a:Regress.TestSimpleBoxedA):Boolean {
+ // Gjs wrapper for regress_test_simple_boxed_a_equals()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>other_a</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.page
new file mode 100644
index 00000000..9117ddb9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedA.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.copy.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.copy.page
new file mode 100644
index 00000000..b1bd51aa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.copy.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedB.copy"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestSimpleBoxedB</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_b_copy</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSimpleBoxedB.prototype.copy</title>
+
+<synopsis><code mime="text/x-gjs">
+function copy():Regress.TestSimpleBoxedB {
+ // Gjs wrapper for regress_test_simple_boxed_b_copy()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.page
new file mode 100644
index 00000000..7ecc623e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleBoxedB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedB"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleBoxedB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleCallback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleCallback.page
new file mode 100644
index 00000000..f8157820
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSimpleCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.clone.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.clone.page
new file mode 100644
index 00000000..ded4a799
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.clone.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA.clone"
+ type="topic"
+ style="method"
+ 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.TestStructA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_a_clone</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestStructA.prototype.clone</title>
+
+<synopsis><code mime="text/x-gjs">
+function clone():void {
+ // Gjs wrapper for regress_test_struct_a_clone()
+}
+</code></synopsis>
+
+
+ <p>Make a copy of a RegressTestStructA</p>
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.page
new file mode 100644
index 00000000..a6a98173
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructA</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.parse.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.parse.page
new file mode 100644
index 00000000..38406e68
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructA.parse.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA.parse"
+ type="topic"
+ style="function"
+ 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.TestStructA" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_a_parse</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>string</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>parse</title>
+
+<synopsis><code mime="text/x-gjs">
+function parse(string:String):void {
+ // Gjs wrapper for regress_test_struct_a_parse()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>string</code></title>
+<p>ignored</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.clone.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.clone.page
new file mode 100644
index 00000000..20278cd2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.clone.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructB.clone"
+ type="topic"
+ style="method"
+ 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.TestStructB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_b_clone</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestStructB.prototype.clone</title>
+
+<synopsis><code mime="text/x-gjs">
+function clone():void {
+ // Gjs wrapper for regress_test_struct_b_clone()
+}
+</code></synopsis>
+
+
+ <p>Make a copy of a RegressTestStructB</p>
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.page
new file mode 100644
index 00000000..21d86261
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructB"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructC.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructC.page
new file mode 100644
index 00000000..6bd58122
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructC.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructC"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructC</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructD.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructD.page
new file mode 100644
index 00000000..aa9f131c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructD.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructD"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructD</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE.page
new file mode 100644
index 00000000..b931c367
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructE"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructE</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page
new file mode 100644
index 00000000..3b81e621
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructE__some_union__union.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructE__some_union__union"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructE__some_union__union</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructF.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructF.page
new file mode 100644
index 00000000..cfb434b4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructF.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructF"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructF</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.frob.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.frob.page
new file mode 100644
index 00000000..f0edd05a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.frob.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructFixedArray.frob"
+ type="topic"
+ style="method"
+ 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.TestStructFixedArray" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_fixed_array_frob</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestStructFixedArray.prototype.frob</title>
+
+<synopsis><code mime="text/x-gjs">
+function frob():void {
+ // Gjs wrapper for regress_test_struct_fixed_array_frob()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.page
new file mode 100644
index 00000000..db6e7893
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestStructFixedArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructFixedArray"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructFixedArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.instance_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.instance_method.page
new file mode 100644
index 00000000..26fc7905
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.instance_method.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.instance_method"
+ type="topic"
+ style="method"
+ 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.TestSubObj" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_instance_method</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSubObj.prototype.instance_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function instance_method():Number {
+ // Gjs wrapper for regress_test_sub_obj_instance_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.new.page
new file mode 100644
index 00000000..31deab7f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.new"
+ type="topic"
+ style="constructor"
+ 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.TestSubObj" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestObj</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSubObj.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.TestObj {
+ // Gjs wrapper for regress_test_sub_obj_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.page
new file mode 100644
index 00000000..7147da12
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestSubObj</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_sub_obj = new Regress.TestSubObj();
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestObj</code>
+ <item>
+ <code>Regress.TestSubObj</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.unset_bare.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.unset_bare.page
new file mode 100644
index 00000000..a632f8f4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestSubObj.unset_bare.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.unset_bare"
+ type="topic"
+ style="method"
+ 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.TestSubObj" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_unset_bare</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSubObj.prototype.unset_bare</title>
+
+<synopsis><code mime="text/x-gjs">
+function unset_bare():void {
+ // Gjs wrapper for regress_test_sub_obj_unset_bare()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestTypeGUInt64.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestTypeGUInt64.page
new file mode 100644
index 00000000..e0a7bc09
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestTypeGUInt64.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestTypeGUInt64"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestTypeGUInt64</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x-testbool.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x-testbool.page
new file mode 100644
index 00000000..256dbb6d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x-testbool.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x-testbool"
+ type="topic"
+ style="property"
+ 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.TestWi8021x" group="property" type="guide"/>
+ <title type="link" role="topic">testbool</title>
+
+ </info>
+ <title>Regress.TestWi8021x:testbool</title>
+
+<synopsis><code mime="text/x-python">
+"testbool" Boolean : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.get_testbool.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.get_testbool.page
new file mode 100644
index 00000000..e42b0d74
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.get_testbool.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.get_testbool"
+ type="topic"
+ style="method"
+ 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.TestWi8021x" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_get_testbool</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestWi8021x.prototype.get_testbool</title>
+
+<synopsis><code mime="text/x-gjs">
+function get_testbool():Boolean {
+ // Gjs wrapper for regress_test_wi_802_1x_get_testbool()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.new.page
new file mode 100644
index 00000000..b8b162cf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.new.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.new"
+ type="topic"
+ style="constructor"
+ 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.TestWi8021x" group="constructor" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestWi8021x</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestWi8021x.new</title>
+
+<synopsis><code mime="text/x-gjs">
+function new():Regress.TestWi8021x {
+ // Gjs wrapper for regress_test_wi_802_1x_new()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.page
new file mode 100644
index 00000000..d69548f3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.page
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestWi8021x</title>
+
+ <synopsis><code>
+const Regress = imports.gi.Regress;
+
+let test_wi8021x = new Regress.TestWi8021x({
+ <link xref='Regress.TestWi8021x-testbool'>testbool</link>: value,
+});
+ </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestWi8021x</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/x-gjs"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.set_testbool.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.set_testbool.page
new file mode 100644
index 00000000..e052ed5d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.set_testbool.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.set_testbool"
+ type="topic"
+ style="method"
+ 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.TestWi8021x" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_set_testbool</api:name>
+ <api:arg>
+ <api:type>Boolean</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestWi8021x.prototype.set_testbool</title>
+
+<synopsis><code mime="text/x-gjs">
+function set_testbool(v:Boolean):void {
+ // Gjs wrapper for regress_test_wi_802_1x_set_testbool()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>v</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.static_method.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.static_method.page
new file mode 100644
index 00000000..ccfe04c6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.TestWi8021x.static_method.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.static_method"
+ type="topic"
+ style="function"
+ 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.TestWi8021x" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_static_method</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>static_method</title>
+
+<synopsis><code mime="text/x-gjs">
+function static_method(x:Number):Number {
+ // Gjs wrapper for regress_test_wi_802_1x_static_method()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.aliased_caller_alloc.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.aliased_caller_alloc.page
new file mode 100644
index 00000000..de2b93b3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.aliased_caller_alloc.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.aliased_caller_alloc"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_aliased_caller_alloc</api:name>
+ </api:function>
+
+ </info>
+ <title>aliased_caller_alloc</title>
+
+<synopsis><code mime="text/x-gjs">
+function aliased_caller_alloc():void {
+ // Gjs wrapper for regress_aliased_caller_alloc()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_attribute_func.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_attribute_func.page
new file mode 100644
index 00000000..8f00a104
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_attribute_func.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_attribute_func"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_annotation_attribute_func</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_attribute_func</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_attribute_func(object:Regress.AnnotationObject, data:String):Number {
+ // Gjs wrapper for regress_annotation_attribute_func()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>A <link xref="Regress.AnnotationObject"/>.</p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>Some data.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>The return value.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_custom_destroy.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_custom_destroy.page
new file mode 100644
index 00000000..c3e96530
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_custom_destroy.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_custom_destroy"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_custom_destroy</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_custom_destroy</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_custom_destroy(callback:Regress.AnnotationCallback):void {
+ // Gjs wrapper for regress_annotation_custom_destroy()
+}
+</code></synopsis>
+
+
+ <p>Test messing up the heuristic of closure/destroy-notification
+detection, and fixing it via annotations.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+<p>Destroy notification</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_get_source_file.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_get_source_file.page
new file mode 100644
index 00000000..39f6c148
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_get_source_file.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_get_source_file"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>filename</api:type>
+ </api:returns>
+ <api:name>regress_annotation_get_source_file</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_get_source_file</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_get_source_file():filename {
+ // Gjs wrapper for regress_annotation_get_source_file()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>Source file</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_init.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_init.page
new file mode 100644
index 00000000..c75d9c27
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_init.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_init"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_init</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>argv</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_init</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_init(argv:[String]):void {
+ // Gjs wrapper for regress_annotation_init()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>argv</code></title>
+<p>The arguments.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_invalid_regress_annotation.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_invalid_regress_annotation.page
new file mode 100644
index 00000000..1997a4db
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_invalid_regress_annotation.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_invalid_regress_annotation"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_invalid_regress_annotation</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_invalid_regress_annotation</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_invalid_regress_annotation(foo:Number):void {
+ // Gjs wrapper for regress_annotation_invalid_regress_annotation()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>foo</code></title>
+<p>some text (e.g. example) or else</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_ptr_array.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_ptr_array.page
new file mode 100644
index 00000000..9bfb1680
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_ptr_array.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_ptr_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_ptr_array</api:name>
+ <api:arg>
+ <api:type>[GObject.Value]</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_ptr_array</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_ptr_array(array:[GObject.Value]):void {
+ // Gjs wrapper for regress_annotation_ptr_array()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+<p>the array</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_array.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_array.page
new file mode 100644
index 00000000..3f63c9a5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_array.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_return_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_return_array</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_return_array</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_return_array():[String] {
+ // Gjs wrapper for regress_annotation_return_array()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>The return value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_filename.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_filename.page
new file mode 100644
index 00000000..86419455
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_return_filename.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_return_filename"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>filename</api:type>
+ </api:returns>
+ <api:name>regress_annotation_return_filename</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_return_filename</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_return_filename():filename {
+ // Gjs wrapper for regress_annotation_return_filename()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>An annotated filename</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_set_source_file.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_set_source_file.page
new file mode 100644
index 00000000..a5977b87
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_set_source_file.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_set_source_file"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_set_source_file</api:name>
+ <api:arg>
+ <api:type>filename</api:type>
+ <api:name>fname</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_set_source_file</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_set_source_file(fname:filename):void {
+ // Gjs wrapper for regress_annotation_set_source_file()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>fname</code></title>
+<p>Source file</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_space_after_comment_bug631690.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_space_after_comment_bug631690.page
new file mode 100644
index 00000000..675e00da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_space_after_comment_bug631690.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_space_after_comment_bug631690"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_space_after_comment_bug631690</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_space_after_comment_bug631690</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_space_after_comment_bug631690():void {
+ // Gjs wrapper for regress_annotation_space_after_comment_bug631690()
+}
+</code></synopsis>
+
+
+ <p>Explicitly test having a space after the ** here.</p>
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_array_length.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_array_length.page
new file mode 100644
index 00000000..347eb6d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_array_length.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_array_length"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_array_length</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>properties</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_string_array_length</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_string_array_length(properties:[String]):void {
+ // Gjs wrapper for regress_annotation_string_array_length()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>properties</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated.page
new file mode 100644
index 00000000..741447ea
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_zero_terminated"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_zero_terminated</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_string_zero_terminated</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_string_zero_terminated():[String] {
+ // Gjs wrapper for regress_annotation_string_zero_terminated()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>The return value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated_out.page
new file mode 100644
index 00000000..cd4d8bef
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_string_zero_terminated_out.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_zero_terminated_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_zero_terminated_out</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>annotation_string_zero_terminated_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_string_zero_terminated_out(out:[String]):void {
+ // Gjs wrapper for regress_annotation_string_zero_terminated_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_test_parsing_bug630862.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_test_parsing_bug630862.page
new file mode 100644
index 00000000..edade5bb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_test_parsing_bug630862.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_test_parsing_bug630862"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_test_parsing_bug630862</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_test_parsing_bug630862</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_test_parsing_bug630862():GObject.Object {
+ // Gjs wrapper for regress_annotation_test_parsing_bug630862()
+}
+</code></synopsis>
+
+
+ <p>See https://bugzilla.gnome.org/show_bug.cgi?id=630862</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>An object, note the colon:in here</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page
new file mode 100644
index 00000000..a4fceafb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_transfer_floating.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_transfer_floating"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_transfer_floating</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_transfer_floating</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_transfer_floating():GObject.Object {
+ // Gjs wrapper for regress_annotation_transfer_floating()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>A floating object</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_versioned.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_versioned.page
new file mode 100644
index 00000000..f1d57003
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.annotation_versioned.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_versioned"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_annotation_versioned</api:name>
+ </api:function>
+
+ </info>
+ <title>annotation_versioned</title>
+
+<synopsis><code mime="text/x-gjs">
+function annotation_versioned():void {
+ // Gjs wrapper for regress_annotation_versioned()
+}
+</code></synopsis>
+
+
+
+
+
+ <p>Since 0.6</p>
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.atest_error_quark.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.atest_error_quark.page
new file mode 100644
index 00000000..3aade3ca
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.atest_error_quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.atest_error_quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_atest_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>atest_error_quark</title>
+
+<synopsis><code mime="text/x-gjs">
+function atest_error_quark():GLib.Quark {
+ // Gjs wrapper for regress_atest_error_quark()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_async_ready_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_async_ready_callback.page
new file mode 100644
index 00000000..980a9302
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_async_ready_callback.page
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_async_ready_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_async_ready_callback</api:name>
+ <api:arg>
+ <api:type>Gio.Cancellable</api:type>
+ <api:name>cancellable</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Gio.AsyncReadyCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_async_ready_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_async_ready_callback(cancellable:Gio.Cancellable, callback:Gio.AsyncReadyCallback):void {
+ // Gjs wrapper for regress_foo_async_ready_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>cancellable</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_destroy_notify_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_destroy_notify_callback.page
new file mode 100644
index 00000000..d5cff2a4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_destroy_notify_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_destroy_notify_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_destroy_notify_callback</api:name>
+ <api:arg>
+ <api:type>Regress.FooCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_destroy_notify_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_destroy_notify_callback(callback:Regress.FooCallback):void {
+ // Gjs wrapper for regress_foo_destroy_notify_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_init.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_init.page
new file mode 100644
index 00000000..20eb206c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_init.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_init"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_foo_init</api:name>
+ </api:function>
+
+ </info>
+ <title>foo_init</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_init():Number {
+ // Gjs wrapper for regress_foo_init()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_method_external_references.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_method_external_references.page
new file mode 100644
index 00000000..10876aa8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_method_external_references.page
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_method_external_references"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_method_external_references</api:name>
+ <api:arg>
+ <api:type>Utility.Object</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Utility.EnumType</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Utility.FlagType</api:type>
+ <api:name>f</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Utility.Struct</api:type>
+ <api:name>s</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_method_external_references</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_method_external_references(object:Utility.Object, e:Utility.EnumType, f:Utility.FlagType, s:Utility.Struct):void {
+ // Gjs wrapper for regress_foo_method_external_references()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>f</code></title>
+
+</item>
+<item>
+<title><code>s</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_not_a_constructor_new.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_not_a_constructor_new.page
new file mode 100644
index 00000000..31f881b7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_not_a_constructor_new.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_not_a_constructor_new"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooObject</api:type>
+ </api:returns>
+ <api:name>regress_foo_not_a_constructor_new</api:name>
+ </api:function>
+
+ </info>
+ <title>foo_not_a_constructor_new</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_not_a_constructor_new():Regress.FooObject {
+ // Gjs wrapper for regress_foo_not_a_constructor_new()
+}
+</code></synopsis>
+
+
+ <p>This should be scanned as a top-level function, and shouldn't cause
+a "Can't find matching type for constructor" warning.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_array.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_array.page
new file mode 100644
index 00000000..989084bf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_array.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_array</api:name>
+ </api:function>
+
+ </info>
+ <title>foo_test_array</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_array():[String] {
+ // Gjs wrapper for regress_foo_test_array()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_param.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_param.page
new file mode 100644
index 00000000..4f095620
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_param.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_char_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_char_param</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_test_const_char_param</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_const_char_param(param:String):void {
+ // Gjs wrapper for regress_foo_test_const_char_param()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_retval.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_retval.page
new file mode 100644
index 00000000..3ff92653
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_char_retval.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_char_retval"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_char_retval</api:name>
+ </api:function>
+
+ </info>
+ <title>foo_test_const_char_retval</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_const_char_retval():String {
+ // Gjs wrapper for regress_foo_test_const_char_retval()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_param.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_param.page
new file mode 100644
index 00000000..da103fbf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_param.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_struct_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_struct_param</api:name>
+ <api:arg>
+ <api:type>Regress.FooStruct</api:type>
+ <api:name>param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_test_const_struct_param</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_const_struct_param(param:Regress.FooStruct):void {
+ // Gjs wrapper for regress_foo_test_const_struct_param()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_retval.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_retval.page
new file mode 100644
index 00000000..9c7539c3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_const_struct_retval.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_struct_retval"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooStruct</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_struct_retval</api:name>
+ </api:function>
+
+ </info>
+ <title>foo_test_const_struct_retval</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_const_struct_retval():Regress.FooStruct {
+ // Gjs wrapper for regress_foo_test_const_struct_retval()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array.page
new file mode 100644
index 00000000..fe3b85ac
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_string_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_string_array</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_test_string_array</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_string_array(array:[String]):void {
+ // Gjs wrapper for regress_foo_test_string_array()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array_with_g.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array_with_g.page
new file mode 100644
index 00000000..8b5c9018
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_string_array_with_g.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_string_array_with_g"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_string_array_with_g</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_test_string_array_with_g</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_string_array_with_g(array:[String]):void {
+ // Gjs wrapper for regress_foo_test_string_array_with_g()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_qualifier.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_qualifier.page
new file mode 100644
index 00000000..c35d3e99
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_qualifier.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_unsigned_qualifier"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_unsigned_qualifier</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>unsigned_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_test_unsigned_qualifier</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_unsigned_qualifier(unsigned_param:Number):void {
+ // Gjs wrapper for regress_foo_test_unsigned_qualifier()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>unsigned_param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_type.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_type.page
new file mode 100644
index 00000000..9f68b516
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.foo_test_unsigned_type.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_unsigned_type"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_unsigned_type</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>unsigned_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>foo_test_unsigned_type</title>
+
+<synopsis><code mime="text/x-gjs">
+function foo_test_unsigned_type(unsigned_param:Number):void {
+ // Gjs wrapper for regress_foo_test_unsigned_type()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>unsigned_param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.func_obj_null_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.func_obj_null_in.page
new file mode 100644
index 00000000..446001a0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.func_obj_null_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.func_obj_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_func_obj_null_in</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>func_obj_null_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function func_obj_null_in(obj:Regress.TestObj):void {
+ // Gjs wrapper for regress_func_obj_null_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.global_get_flags_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.global_get_flags_out.page
new file mode 100644
index 00000000..bafa5417
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.global_get_flags_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.global_get_flags_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_global_get_flags_out</api:name>
+ </api:function>
+
+ </info>
+ <title>global_get_flags_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function global_get_flags_out():void {
+ // Gjs wrapper for regress_global_get_flags_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.has_parameter_named_attrs.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.has_parameter_named_attrs.page
new file mode 100644
index 00000000..d4f673d8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.has_parameter_named_attrs.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.has_parameter_named_attrs"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_has_parameter_named_attrs</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[guint32]</api:type>
+ <api:name>attributes</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>has_parameter_named_attrs</title>
+
+<synopsis><code mime="text/x-gjs">
+function has_parameter_named_attrs(foo:Number, attributes:[guint32]):void {
+ // Gjs wrapper for regress_has_parameter_named_attrs()
+}
+</code></synopsis>
+
+
+ <p>This test case mirrors GnomeKeyringPasswordSchema from
+libgnome-keyring.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>foo</code></title>
+<p>some int</p>
+</item>
+<item>
+<title><code>attributes</code></title>
+<p>list of attributes</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.introspectable_via_alias.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.introspectable_via_alias.page
new file mode 100644
index 00000000..aa2baa6c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.introspectable_via_alias.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.introspectable_via_alias"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_introspectable_via_alias</api:name>
+ <api:arg>
+ <api:type>Regress.PtrArrayAlias</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>introspectable_via_alias</title>
+
+<synopsis><code mime="text/x-gjs">
+function introspectable_via_alias(data:Regress.PtrArrayAlias):void {
+ // Gjs wrapper for regress_introspectable_via_alias()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.set_abort_on_error.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.set_abort_on_error.page
new file mode 100644
index 00000000..9b300e17
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.set_abort_on_error.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.set_abort_on_error"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_set_abort_on_error</api:name>
+ <api:arg>
+ <api:type>Boolean</api:type>
+ <api:name>abort_on_error</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>set_abort_on_error</title>
+
+<synopsis><code mime="text/x-gjs">
+function set_abort_on_error(abort_on_error:Boolean):void {
+ // Gjs wrapper for regress_set_abort_on_error()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>abort_on_error</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_callback.page
new file mode 100644
index 00000000..112cd23f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_callback.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_array_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackArray</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_callback(callback:Regress.TestCallbackArray):Number {
+ // Gjs wrapper for regress_test_array_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_out_objects.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_out_objects.page
new file mode 100644
index 00000000..51026b59
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_out_objects.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_out_objects"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_out_objects</api:name>
+ </api:function>
+
+ </info>
+ <title>test_array_fixed_out_objects</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_fixed_out_objects():void {
+ // Gjs wrapper for regress_test_array_fixed_out_objects()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_in.page
new file mode 100644
index 00000000..14a6e66e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_in</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_fixed_size_int_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_fixed_size_int_in(ints:[Number]):Number {
+ // Gjs wrapper for regress_test_array_fixed_size_int_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>a list of 5 integers</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the sum of the items in <code>ints</code></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_out.page
new file mode 100644
index 00000000..ce62153d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_array_fixed_size_int_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_fixed_size_int_out():void {
+ // Gjs wrapper for regress_test_array_fixed_size_int_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_return.page
new file mode 100644
index 00000000..1e2c6786
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_fixed_size_int_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[Number]</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_array_fixed_size_int_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_fixed_size_int_return():[Number] {
+ // Gjs wrapper for regress_test_array_fixed_size_int_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>a list of 5 integers ranging from 0 to 4</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint16_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint16_in.page
new file mode 100644
index 00000000..e4b957e7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint16_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint16_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint16_in</api:name>
+ <api:arg>
+ <api:type>[gint16]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_gint16_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_gint16_in(ints:[gint16]):Number {
+ // Gjs wrapper for regress_test_array_gint16_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint32_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint32_in.page
new file mode 100644
index 00000000..171ad11e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint32_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint32_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint32</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint32_in</api:name>
+ <api:arg>
+ <api:type>[gint32]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_gint32_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_gint32_in(ints:[gint32]):gint32 {
+ // Gjs wrapper for regress_test_array_gint32_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint64_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint64_in.page
new file mode 100644
index 00000000..a8b51a6b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint64_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint64_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint64_in</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_gint64_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_gint64_in(ints:[Number]):Number {
+ // Gjs wrapper for regress_test_array_gint64_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint8_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint8_in.page
new file mode 100644
index 00000000..16ddc7c5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gint8_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint8_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint8_in</api:name>
+ <api:arg>
+ <api:type>[gint8]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_gint8_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_gint8_in(ints:[gint8]):Number {
+ // Gjs wrapper for regress_test_array_gint8_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gtype_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gtype_in.page
new file mode 100644
index 00000000..61e1d0a4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_gtype_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gtype_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gtype_in</api:name>
+ <api:arg>
+ <api:type>[GType]</api:type>
+ <api:name>types</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_gtype_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_gtype_in(types:[GType]):String {
+ // Gjs wrapper for regress_test_array_gtype_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>types</code></title>
+<p>List of types</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>string representation of provided types</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_full_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_full_out.page
new file mode 100644
index 00000000..5f580ad7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_full_out.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_full_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[Number]</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_full_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_array_int_full_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_int_full_out():[Number] {
+ // Gjs wrapper for regress_test_array_int_full_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>a new array of integers.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_in.page
new file mode 100644
index 00000000..3d41dca7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_in</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_int_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_int_in(ints:[Number]):Number {
+ // Gjs wrapper for regress_test_array_int_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_inout.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_inout.page
new file mode 100644
index 00000000..b4094cd8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_inout.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_inout"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_inout</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_int_inout</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_int_inout(ints:[Number]):void {
+ // Gjs wrapper for regress_test_array_int_inout()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>a list of integers whose items will be increased by 1, except the first that will be dropped</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_none_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_none_out.page
new file mode 100644
index 00000000..ac105214
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_none_out.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_none_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[Number]</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_none_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_array_int_none_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_int_none_out():[Number] {
+ // Gjs wrapper for regress_test_array_int_none_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>a static array of integers.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_in.page
new file mode 100644
index 00000000..33b27a00
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_null_in</api:name>
+ <api:arg>
+ <api:type>[Number]</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_array_int_null_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_int_null_in(arr:[Number]):void {
+ // Gjs wrapper for regress_test_array_int_null_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_out.page
new file mode 100644
index 00000000..1e1a3640
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_null_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_null_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_array_int_null_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_int_null_out():void {
+ // Gjs wrapper for regress_test_array_int_null_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_out.page
new file mode 100644
index 00000000..78953ec6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_array_int_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_array_int_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_array_int_out():void {
+ // Gjs wrapper for regress_test_array_int_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_async_ready_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_async_ready_callback.page
new file mode 100644
index 00000000..89d737c7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_async_ready_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_async_ready_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_async_ready_callback</api:name>
+ <api:arg>
+ <api:type>Gio.AsyncReadyCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_async_ready_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_async_ready_callback(callback:Gio.AsyncReadyCallback):void {
+ // Gjs wrapper for regress_test_async_ready_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean.page
new file mode 100644
index 00000000..e165db21
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean</api:name>
+ <api:arg>
+ <api:type>Boolean</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_boolean</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_boolean(in:Boolean):Boolean {
+ // Gjs wrapper for regress_test_boolean()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_false.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_false.page
new file mode 100644
index 00000000..21e169c0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_false.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean_false"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean_false</api:name>
+ <api:arg>
+ <api:type>Boolean</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_boolean_false</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_boolean_false(in:Boolean):Boolean {
+ // Gjs wrapper for regress_test_boolean_false()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_true.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_true.page
new file mode 100644
index 00000000..e525a2f8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_boolean_true.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean_true"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean_true</api:name>
+ <api:arg>
+ <api:type>Boolean</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_boolean_true</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_boolean_true(in:Boolean):Boolean {
+ // Gjs wrapper for regress_test_boolean_true()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_full_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_full_return.page
new file mode 100644
index 00000000..1c222c6c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_full_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_context_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo.Context</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_context_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_cairo_context_full_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_cairo_context_full_return():cairo.Context {
+ // Gjs wrapper for regress_test_cairo_context_full_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_none_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_none_in.page
new file mode 100644
index 00000000..f710ac0a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_context_none_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_context_none_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_context_none_in</api:name>
+ <api:arg>
+ <api:type>cairo.Context</api:type>
+ <api:name>context</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_cairo_context_none_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_cairo_context_none_in(context:cairo.Context):void {
+ // Gjs wrapper for regress_test_cairo_context_none_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>context</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_out.page
new file mode 100644
index 00000000..dcec607e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_full_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_full_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_cairo_surface_full_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_cairo_surface_full_out():void {
+ // Gjs wrapper for regress_test_cairo_surface_full_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_return.page
new file mode 100644
index 00000000..f1b0f96c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_full_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo.Surface</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_cairo_surface_full_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_cairo_surface_full_return():cairo.Surface {
+ // Gjs wrapper for regress_test_cairo_surface_full_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_in.page
new file mode 100644
index 00000000..783576a0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_none_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_none_in</api:name>
+ <api:arg>
+ <api:type>cairo.Surface</api:type>
+ <api:name>surface</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_cairo_surface_none_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_cairo_surface_none_in(surface:cairo.Surface):void {
+ // Gjs wrapper for regress_test_cairo_surface_none_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>surface</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_return.page
new file mode 100644
index 00000000..72e602ef
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_cairo_surface_none_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_none_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo.Surface</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_none_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_cairo_surface_none_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_cairo_surface_none_return():cairo.Surface {
+ // Gjs wrapper for regress_test_cairo_surface_none_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback.page
new file mode 100644
index 00000000..869dd98c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_callback(callback:Regress.TestCallback):Number {
+ // Gjs wrapper for regress_test_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_async.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_async.page
new file mode 100644
index 00000000..7b9ef5b6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_async.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_async"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_async</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_callback_async</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_callback_async(callback:Regress.TestCallbackUserData):void {
+ // Gjs wrapper for regress_test_callback_async()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify.page
new file mode 100644
index 00000000..d147c974
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_destroy_notify"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_destroy_notify</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_callback_destroy_notify</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_callback_destroy_notify(callback:Regress.TestCallbackUserData):Number {
+ // Gjs wrapper for regress_test_callback_destroy_notify()
+}
+</code></synopsis>
+
+
+ <p>Notified - callback persists until a DestroyNotify delegate
+is invoked.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify_no_user_data.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify_no_user_data.page
new file mode 100644
index 00000000..7fa31a30
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_destroy_notify_no_user_data.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_destroy_notify_no_user_data"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_destroy_notify_no_user_data</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_callback_destroy_notify_no_user_data</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_callback_destroy_notify_no_user_data(callback:Regress.TestCallbackUserData):Number {
+ // Gjs wrapper for regress_test_callback_destroy_notify_no_user_data()
+}
+</code></synopsis>
+
+
+ <p>Adds a scope notified callback with no user data. This can invoke an error
+condition in bindings which needs to be tested.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_async.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_async.page
new file mode 100644
index 00000000..66dec18b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_async.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_thaw_async"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_thaw_async</api:name>
+ </api:function>
+
+ </info>
+ <title>test_callback_thaw_async</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_callback_thaw_async():Number {
+ // Gjs wrapper for regress_test_callback_thaw_async()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_notifications.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_notifications.page
new file mode 100644
index 00000000..9a8b57e1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_thaw_notifications.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_thaw_notifications"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_thaw_notifications</api:name>
+ </api:function>
+
+ </info>
+ <title>test_callback_thaw_notifications</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_callback_thaw_notifications():Number {
+ // Gjs wrapper for regress_test_callback_thaw_notifications()
+}
+</code></synopsis>
+
+
+ <p>Invokes all callbacks installed by #test_callback_destroy_notify(),
+adding up their return values, and removes them, invoking the
+corresponding destroy notfications.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>Sum of the return values of the invoked callbacks.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_user_data.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_user_data.page
new file mode 100644
index 00000000..dd9f5977
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_callback_user_data.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_user_data"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_user_data</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_callback_user_data</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_callback_user_data(callback:Regress.TestCallbackUserData):Number {
+ // Gjs wrapper for regress_test_callback_user_data()
+}
+</code></synopsis>
+
+
+ <p>Call - callback parameter persists for the duration of the method
+call and can be released on return.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure.page
new file mode 100644
index 00000000..a9545447
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_closure</api:name>
+ <api:arg>
+ <api:type>GObject.Closure</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_closure</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_closure(closure:GObject.Closure):Number {
+ // Gjs wrapper for regress_test_closure()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_one_arg.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_one_arg.page
new file mode 100644
index 00000000..3c37f7ac
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_one_arg.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure_one_arg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_closure_one_arg</api:name>
+ <api:arg>
+ <api:type>GObject.Closure</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>arg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_closure_one_arg</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_closure_one_arg(closure:GObject.Closure, arg:Number):Number {
+ // Gjs wrapper for regress_test_closure_one_arg()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+
+</item>
+<item>
+<title><code>arg</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_variant.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_variant.page
new file mode 100644
index 00000000..2bdbfe6d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_closure_variant.page
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure_variant"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_closure_variant</api:name>
+ <api:arg>
+ <api:type>GObject.Closure</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GLib.Variant</api:type>
+ <api:name>arg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_closure_variant</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_closure_variant(closure:GObject.Closure, arg:GLib.Variant):GLib.Variant {
+ // Gjs wrapper for regress_test_closure_variant()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+<p>GClosure which takes one GVariant and returns a GVariant</p>
+</item>
+<item>
+<title><code>arg</code></title>
+<p>a GVariant passed as argument to <code>closure</code></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the return value of <code>closure</code></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_date_in_gvalue.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_date_in_gvalue.page
new file mode 100644
index 00000000..acb379e7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_date_in_gvalue.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_date_in_gvalue"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Value</api:type>
+ </api:returns>
+ <api:name>regress_test_date_in_gvalue</api:name>
+ </api:function>
+
+ </info>
+ <title>test_date_in_gvalue</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_date_in_gvalue():GObject.Value {
+ // Gjs wrapper for regress_test_date_in_gvalue()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_def_error_quark.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_def_error_quark.page
new file mode 100644
index 00000000..5a82a3f5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_def_error_quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_def_error_quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_def_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>test_def_error_quark</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_def_error_quark():GLib.Quark {
+ // Gjs wrapper for regress_test_def_error_quark()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_double.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_double.page
new file mode 100644
index 00000000..0ed75f62
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_double.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_double"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_double</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_double</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_double(in:Number):Number {
+ // Gjs wrapper for regress_test_double()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_filename_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_filename_return.page
new file mode 100644
index 00000000..b26b613e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_filename_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_filename_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[filename]</api:type>
+ </api:returns>
+ <api:name>regress_test_filename_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_filename_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_filename_return():[filename] {
+ // Gjs wrapper for regress_test_filename_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>list of strings</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_float.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_float.page
new file mode 100644
index 00000000..30f2ef76
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_float.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_float"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_float</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_float</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_float(in:Number):Number {
+ // Gjs wrapper for regress_test_float()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_container_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_container_return.page
new file mode 100644
index 00000000..a4196285
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_garray_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_garray_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_garray_container_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_garray_container_return():[String] {
+ // Gjs wrapper for regress_test_garray_container_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_full_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_full_return.page
new file mode 100644
index 00000000..86b1b78b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_garray_full_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_garray_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_garray_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_garray_full_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_garray_full_return():[String] {
+ // Gjs wrapper for regress_test_garray_full_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gerror_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gerror_callback.page
new file mode 100644
index 00000000..31ab83c2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gerror_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gerror_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_gerror_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gerror_callback(callback:Regress.TestCallbackGError):void {
+ // Gjs wrapper for regress_test_gerror_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_container_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_container_return.page
new file mode 100644
index 00000000..b002deb8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: String}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_container_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_container_return():{String: String} {
+ // Gjs wrapper for regress_test_ghash_container_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_everything_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_everything_return.page
new file mode 100644
index 00000000..1c1a0a91
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: String}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_everything_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_everything_return():{String: String} {
+ // Gjs wrapper for regress_test_ghash_everything_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_in.page
new file mode 100644
index 00000000..2c801375
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_gvalue_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_gvalue_in</api:name>
+ <api:arg>
+ <api:type>{String: GObject.Value}</api:type>
+ <api:name>hash</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_ghash_gvalue_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_gvalue_in(hash:{String: GObject.Value}):void {
+ // Gjs wrapper for regress_test_ghash_gvalue_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>hash</code></title>
+<p>the hash table returned by <link xref="Regress.test_ghash_gvalue_return"/>.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_return.page
new file mode 100644
index 00000000..08748ea5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_gvalue_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_gvalue_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: GObject.Value}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_gvalue_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_gvalue_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_gvalue_return():{String: GObject.Value} {
+ // Gjs wrapper for regress_test_ghash_gvalue_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return.page
new file mode 100644
index 00000000..4dece432
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nested_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: {String: String}}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nested_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_nested_everything_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_nested_everything_return():{String: {String: String}} {
+ // Gjs wrapper for regress_test_ghash_nested_everything_return()
+}
+</code></synopsis>
+
+
+ <p>Specify nested parameterized types directly with the (type ) annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return2.page
new file mode 100644
index 00000000..8aa4da37
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nested_everything_return2.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nested_everything_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: {String: String}}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nested_everything_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_nested_everything_return2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_nested_everything_return2():{String: {String: String}} {
+ // Gjs wrapper for regress_test_ghash_nested_everything_return2()
+}
+</code></synopsis>
+
+
+ <p>Another way of specifying nested parameterized types: using the
+element-type annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in.page
new file mode 100644
index 00000000..62990fce
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_in</api:name>
+ <api:arg>
+ <api:type>{String: String}</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_ghash_nothing_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_nothing_in(in:{String: String}):void {
+ // Gjs wrapper for regress_test_ghash_nothing_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in2.page
new file mode 100644
index 00000000..72d774d8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_in2.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_in2</api:name>
+ <api:arg>
+ <api:type>{String: String}</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_ghash_nothing_in2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_nothing_in2(in:{String: String}):void {
+ // Gjs wrapper for regress_test_ghash_nothing_in2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return.page
new file mode 100644
index 00000000..e3729a57
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: String}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_nothing_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_nothing_return():{String: String} {
+ // Gjs wrapper for regress_test_ghash_nothing_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return2.page
new file mode 100644
index 00000000..7777ab42
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_nothing_return2.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: String}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_nothing_return2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_nothing_return2():{String: String} {
+ // Gjs wrapper for regress_test_ghash_nothing_return2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_in.page
new file mode 100644
index 00000000..413a75bf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_in</api:name>
+ <api:arg>
+ <api:type>{String: String}</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_ghash_null_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_null_in(in:{String: String}):void {
+ // Gjs wrapper for regress_test_ghash_null_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_out.page
new file mode 100644
index 00000000..2c272530
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_null_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_null_out():void {
+ // Gjs wrapper for regress_test_ghash_null_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_return.page
new file mode 100644
index 00000000..df6d6860
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ghash_null_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{String: String}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_ghash_null_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ghash_null_return():{String: String} {
+ // Gjs wrapper for regress_test_ghash_null_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_container_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_container_return.page
new file mode 100644
index 00000000..c3ac7cb1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_glist_container_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_container_return():[String] {
+ // Gjs wrapper for regress_test_glist_container_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_everything_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_everything_return.page
new file mode 100644
index 00000000..fb31f77e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_glist_everything_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_everything_return():[String] {
+ // Gjs wrapper for regress_test_glist_everything_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in.page
new file mode 100644
index 00000000..3c85d190
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_in</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_glist_nothing_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_nothing_in(in:[String]):void {
+ // Gjs wrapper for regress_test_glist_nothing_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in2.page
new file mode 100644
index 00000000..f160d126
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_in2.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_in2</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_glist_nothing_in2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_nothing_in2(in:[String]):void {
+ // Gjs wrapper for regress_test_glist_nothing_in2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return.page
new file mode 100644
index 00000000..e741d906
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_glist_nothing_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_nothing_return():[String] {
+ // Gjs wrapper for regress_test_glist_nothing_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return2.page
new file mode 100644
index 00000000..0fccdbbf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_nothing_return2.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>test_glist_nothing_return2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_nothing_return2():[String] {
+ // Gjs wrapper for regress_test_glist_nothing_return2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_in.page
new file mode 100644
index 00000000..dfedc288
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_null_in</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_glist_null_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_null_in(in:[String]):void {
+ // Gjs wrapper for regress_test_glist_null_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_out.page
new file mode 100644
index 00000000..a1c7c684
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_glist_null_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_null_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_glist_null_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_glist_null_out():void {
+ // Gjs wrapper for regress_test_glist_null_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_container_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_container_return.page
new file mode 100644
index 00000000..5133d114
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gslist_container_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_container_return():[String] {
+ // Gjs wrapper for regress_test_gslist_container_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_everything_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_everything_return.page
new file mode 100644
index 00000000..f82b1ce6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gslist_everything_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_everything_return():[String] {
+ // Gjs wrapper for regress_test_gslist_everything_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in.page
new file mode 100644
index 00000000..34096195
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_in</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_gslist_nothing_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_nothing_in(in:[String]):void {
+ // Gjs wrapper for regress_test_gslist_nothing_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in2.page
new file mode 100644
index 00000000..05e0b569
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_in2.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_in2</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_gslist_nothing_in2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_nothing_in2(in:[String]):void {
+ // Gjs wrapper for regress_test_gslist_nothing_in2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return.page
new file mode 100644
index 00000000..03597fb4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gslist_nothing_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_nothing_return():[String] {
+ // Gjs wrapper for regress_test_gslist_nothing_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return2.page
new file mode 100644
index 00000000..0331f922
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_nothing_return2.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gslist_nothing_return2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_nothing_return2():[String] {
+ // Gjs wrapper for regress_test_gslist_nothing_return2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_in.page
new file mode 100644
index 00000000..34168c85
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_null_in</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_gslist_null_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_null_in(in:[String]):void {
+ // Gjs wrapper for regress_test_gslist_null_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_out.page
new file mode 100644
index 00000000..4c9f3ca2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gslist_null_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_null_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gslist_null_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gslist_null_out():void {
+ // Gjs wrapper for regress_test_gslist_null_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gtype.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gtype.page
new file mode 100644
index 00000000..824689a2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gtype.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gtype"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GType</api:type>
+ </api:returns>
+ <api:name>regress_test_gtype</api:name>
+ <api:arg>
+ <api:type>GType</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_gtype</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gtype(in:GType):GType {
+ // Gjs wrapper for regress_test_gtype()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_as.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_as.page
new file mode 100644
index 00000000..1eedc344
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_as.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_as"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_as</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gvariant_as</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gvariant_as():GLib.Variant {
+ // Gjs wrapper for regress_test_gvariant_as()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_asv.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_asv.page
new file mode 100644
index 00000000..a5709df4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_asv.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_asv"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_asv</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gvariant_asv</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gvariant_asv():GLib.Variant {
+ // Gjs wrapper for regress_test_gvariant_asv()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_i.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_i.page
new file mode 100644
index 00000000..e1e7dc0d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_i.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_i"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_i</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gvariant_i</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gvariant_i():GLib.Variant {
+ // Gjs wrapper for regress_test_gvariant_i()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_s.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_s.page
new file mode 100644
index 00000000..139e0c61
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_s.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_s"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_s</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gvariant_s</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gvariant_s():GLib.Variant {
+ // Gjs wrapper for regress_test_gvariant_s()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_v.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_v.page
new file mode 100644
index 00000000..cec12de7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_gvariant_v.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_v"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_v</api:name>
+ </api:function>
+
+ </info>
+ <title>test_gvariant_v</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_gvariant_v():GLib.Variant {
+ // Gjs wrapper for regress_test_gvariant_v()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>New variant</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_hash_table_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_hash_table_callback.page
new file mode 100644
index 00000000..a49c65c1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_hash_table_callback.page
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<page id="Regress.test_hash_table_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_hash_table_callback</api:name>
+ <api:arg>
+ <api:type>{String: Number}</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestCallbackHashtable</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_hash_table_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_hash_table_callback(data:{String: Number}, callback:Regress.TestCallbackHashtable):void {
+ // Gjs wrapper for regress_test_hash_table_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+<p>GHashTable that gets passed to callback</p>
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int.page
new file mode 100644
index 00000000..6193dd8a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_int</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_int</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_int(in:Number):Number {
+ // Gjs wrapper for regress_test_int()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int16.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int16.page
new file mode 100644
index 00000000..d8efb0b3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int16.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int16"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint16</api:type>
+ </api:returns>
+ <api:name>regress_test_int16</api:name>
+ <api:arg>
+ <api:type>gint16</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_int16</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_int16(in:gint16):gint16 {
+ // Gjs wrapper for regress_test_int16()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int32.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int32.page
new file mode 100644
index 00000000..8015b377
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int32.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int32"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint32</api:type>
+ </api:returns>
+ <api:name>regress_test_int32</api:name>
+ <api:arg>
+ <api:type>gint32</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_int32</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_int32(in:gint32):gint32 {
+ // Gjs wrapper for regress_test_int32()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int64.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int64.page
new file mode 100644
index 00000000..24a69e96
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int64.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int64"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_int64</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_int64</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_int64(in:Number):Number {
+ // Gjs wrapper for regress_test_int64()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int8.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int8.page
new file mode 100644
index 00000000..ab573a0d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int8.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint8</api:type>
+ </api:returns>
+ <api:name>regress_test_int8</api:name>
+ <api:arg>
+ <api:type>gint8</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_int8</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_int8(in:gint8):gint8 {
+ // Gjs wrapper for regress_test_int8()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_out_utf8.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_out_utf8.page
new file mode 100644
index 00000000..020f9e22
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_out_utf8.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int_out_utf8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_int_out_utf8</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_int_out_utf8</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_int_out_utf8(in:String):void {
+ // Gjs wrapper for regress_test_int_out_utf8()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_value_arg.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_value_arg.page
new file mode 100644
index 00000000..cb84a3c9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_int_value_arg.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int_value_arg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_int_value_arg</api:name>
+ <api:arg>
+ <api:type>GObject.Value</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_int_value_arg</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_int_value_arg(v:GObject.Value):Number {
+ // Gjs wrapper for regress_test_int_value_arg()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>v</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_long.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_long.page
new file mode 100644
index 00000000..12bc1aec
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_long.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_long"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_long</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_long</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_long(in:Number):Number {
+ // Gjs wrapper for regress_test_long()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_callback.page
new file mode 100644
index 00000000..ea0646f6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_callback.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multi_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_multi_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_multi_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_multi_callback(callback:Regress.TestCallback):Number {
+ // Gjs wrapper for regress_test_multi_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_double_args.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_double_args.page
new file mode 100644
index 00000000..378ace73
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multi_double_args.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multi_double_args"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_multi_double_args</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_multi_double_args</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_multi_double_args(in:Number):void {
+ // Gjs wrapper for regress_test_multi_double_args()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multiline_doc_comments.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multiline_doc_comments.page
new file mode 100644
index 00000000..38a75e75
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_multiline_doc_comments.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multiline_doc_comments"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_multiline_doc_comments</api:name>
+ </api:function>
+
+ </info>
+ <title>test_multiline_doc_comments</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_multiline_doc_comments():void {
+ // Gjs wrapper for regress_test_multiline_doc_comments()
+}
+</code></synopsis>
+
+
+ <p>This is a function.</p><p>It has multiple lines in the documentation.</p><p>The sky is blue.</p><p>You will give me your credit card number.</p>
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_nested_parameter.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_nested_parameter.page
new file mode 100644
index 00000000..54bda89f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_nested_parameter.page
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<page id="Regress.test_nested_parameter"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_nested_parameter</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_nested_parameter</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_nested_parameter(a:Number):void {
+ // Gjs wrapper for regress_test_nested_parameter()
+}
+</code></synopsis>
+
+
+ <p>&lt;informaltable&gt;
+ &lt;tgroup cols="3"&gt;
+ &lt;thead&gt;
+ &lt;row&gt;
+ &lt;entry&gt;Syntax&lt;/entry&gt;
+ &lt;entry&gt;Explanation&lt;/entry&gt;
+ &lt;entry&gt;Examples&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;/thead&gt;
+ &lt;tbody&gt;
+ &lt;row&gt;
+ &lt;entry&gt;rgb(@r, @g, @b)&lt;/entry&gt;
+ &lt;entry&gt;An opaque color; @r, @g, @b can be either integers between
+ 0 and 255 or percentages&lt;/entry&gt;
+ &lt;entry&gt;&lt;literallayout&gt;rgb(128, 10, 54)
+rgb(20%, 30%, 0%)&lt;/literallayout&gt;&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;row&gt;
+ &lt;entry&gt;rgba(@r, @g, @b, <code>a</code>)&lt;/entry&gt;
+ &lt;entry&gt;A translucent color; @r, @g, @b are as in the previous row,
+ <code>a</code> is a floating point number between 0 and 1&lt;/entry&gt;
+ &lt;entry&gt;&lt;literallayout&gt;rgba(255, 255, 0, 0.5)&lt;/literallayout&gt;&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;/tbody&gt;
+ &lt;/tgroup&gt;
+&lt;/informaltable&gt;</p><p>What we're testing here is that the scanner ignores the <code>a</code> nested inside XML.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>An integer</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_null_gerror_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_null_gerror_callback.page
new file mode 100644
index 00000000..5af4d58c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_null_gerror_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_null_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_null_gerror_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_null_gerror_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_null_gerror_callback(callback:Regress.TestCallbackGError):void {
+ // Gjs wrapper for regress_test_null_gerror_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_owned_gerror_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_owned_gerror_callback.page
new file mode 100644
index 00000000..206ac215
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_owned_gerror_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_owned_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_owned_gerror_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackOwnedGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_owned_gerror_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_owned_gerror_callback(callback:Regress.TestCallbackOwnedGError):void {
+ // Gjs wrapper for regress_test_owned_gerror_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_short.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_short.page
new file mode 100644
index 00000000..59381ae1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_short.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_short"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gshort</api:type>
+ </api:returns>
+ <api:name>regress_test_short</api:name>
+ <api:arg>
+ <api:type>gshort</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_short</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_short(in:gshort):gshort {
+ // Gjs wrapper for regress_test_short()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_simple_callback.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_simple_callback.page
new file mode 100644
index 00000000..9d8198f7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_simple_callback.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_simple_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestSimpleCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_simple_callback</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_simple_callback(callback:Regress.TestSimpleCallback):void {
+ // Gjs wrapper for regress_test_simple_callback()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_size.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_size.page
new file mode 100644
index 00000000..bc6896d3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_size.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_size"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gsize</api:type>
+ </api:returns>
+ <api:name>regress_test_size</api:name>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_size</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_size(in:gsize):gsize {
+ // Gjs wrapper for regress_test_size()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ssize.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ssize.page
new file mode 100644
index 00000000..ccc011da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ssize.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ssize"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gssize</api:type>
+ </api:returns>
+ <api:name>regress_test_ssize</api:name>
+ <api:arg>
+ <api:type>gssize</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_ssize</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ssize(in:gssize):gssize {
+ // Gjs wrapper for regress_test_ssize()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in.page
new file mode 100644
index 00000000..7659a72a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_in</api:name>
+ <api:arg>
+ <api:type>[String]</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_strv_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_strv_in(arr:[String]):Boolean {
+ // Gjs wrapper for regress_test_strv_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in_gvalue.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in_gvalue.page
new file mode 100644
index 00000000..20617c09
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_in_gvalue.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_in_gvalue"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Value</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_in_gvalue</api:name>
+ </api:function>
+
+ </info>
+ <title>test_strv_in_gvalue</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_strv_in_gvalue():GObject.Value {
+ // Gjs wrapper for regress_test_strv_in_gvalue()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out.page
new file mode 100644
index 00000000..477a46fa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_strv_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_strv_out():[String] {
+ // Gjs wrapper for regress_test_strv_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_c.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_c.page
new file mode 100644
index 00000000..d393946c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_c.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out_c"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out_c</api:name>
+ </api:function>
+
+ </info>
+ <title>test_strv_out_c</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_strv_out_c():[String] {
+ // Gjs wrapper for regress_test_strv_out_c()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_container.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_container.page
new file mode 100644
index 00000000..f9bec391
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_out_container.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out_container"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[String]</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out_container</api:name>
+ </api:function>
+
+ </info>
+ <title>test_strv_out_container</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_strv_out_container():[String] {
+ // Gjs wrapper for regress_test_strv_out_container()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_outarg.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_outarg.page
new file mode 100644
index 00000000..01bcba42
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_strv_outarg.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_outarg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_outarg</api:name>
+ </api:function>
+
+ </info>
+ <title>test_strv_outarg</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_strv_outarg():void {
+ // Gjs wrapper for regress_test_strv_outarg()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_timet.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_timet.page
new file mode 100644
index 00000000..65ccab57
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_timet.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_timet"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_timet</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_timet</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_timet(in:Number):Number {
+ // Gjs wrapper for regress_test_timet()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_0.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_0.page
new file mode 100644
index 00000000..16965833
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_0.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_0"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_0</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_torture_signature_0</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_torture_signature_0(x:Number, foo:String, m:Number):void {
+ // Gjs wrapper for regress_test_torture_signature_0()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_1.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_1.page
new file mode 100644
index 00000000..a10b0ab5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_1.page
@@ -0,0 +1,66 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_1"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Boolean</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_1</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_torture_signature_1</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_torture_signature_1(x:Number, foo:String, m:Number):Boolean {
+ // Gjs wrapper for regress_test_torture_signature_1()
+}
+</code></synopsis>
+
+
+ <p>This function throws an error if m is odd.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_2.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_2.page
new file mode 100644
index 00000000..3a3eb39a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_torture_signature_2.page
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_2</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_torture_signature_2</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_torture_signature_2(x:Number, callback:Regress.TestCallbackUserData, foo:String, m:Number):void {
+ // Gjs wrapper for regress_test_torture_signature_2()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint.page
new file mode 100644
index 00000000..ac1653a1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_uint</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_uint</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_uint(in:Number):Number {
+ // Gjs wrapper for regress_test_uint()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint16.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint16.page
new file mode 100644
index 00000000..93faff4d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint16.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint16"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint16</api:type>
+ </api:returns>
+ <api:name>regress_test_uint16</api:name>
+ <api:arg>
+ <api:type>guint16</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_uint16</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_uint16(in:guint16):guint16 {
+ // Gjs wrapper for regress_test_uint16()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint32.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint32.page
new file mode 100644
index 00000000..ebab4d6f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint32.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint32"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint32</api:type>
+ </api:returns>
+ <api:name>regress_test_uint32</api:name>
+ <api:arg>
+ <api:type>guint32</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_uint32</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_uint32(in:guint32):guint32 {
+ // Gjs wrapper for regress_test_uint32()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint64.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint64.page
new file mode 100644
index 00000000..942d786f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint64.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint64"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_uint64</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_uint64</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_uint64(in:Number):Number {
+ // Gjs wrapper for regress_test_uint64()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint8.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint8.page
new file mode 100644
index 00000000..f39dcc12
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_uint8.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint8</api:type>
+ </api:returns>
+ <api:name>regress_test_uint8</api:name>
+ <api:arg>
+ <api:type>guint8</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_uint8</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_uint8(in:guint8):guint8 {
+ // Gjs wrapper for regress_test_uint8()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ulong.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ulong.page
new file mode 100644
index 00000000..76f33101
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ulong.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ulong"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Number</api:type>
+ </api:returns>
+ <api:name>regress_test_ulong</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_ulong</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ulong(in:Number):Number {
+ // Gjs wrapper for regress_test_ulong()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unichar.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unichar.page
new file mode 100644
index 00000000..25465b37
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unichar.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_unichar"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_test_unichar</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_unichar</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_unichar(in:String):String {
+ // Gjs wrapper for regress_test_unichar()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unsigned_enum_param.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unsigned_enum_param.page
new file mode 100644
index 00000000..8b7348e8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_unsigned_enum_param.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_unsigned_enum_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_test_unsigned_enum_param</api:name>
+ <api:arg>
+ <api:type>Regress.TestEnumUnsigned</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_unsigned_enum_param</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_unsigned_enum_param(e:Regress.TestEnumUnsigned):String {
+ // Gjs wrapper for regress_test_unsigned_enum_param()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ushort.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ushort.page
new file mode 100644
index 00000000..74ada4ba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_ushort.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ushort"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gushort</api:type>
+ </api:returns>
+ <api:name>regress_test_ushort</api:name>
+ <api:arg>
+ <api:type>gushort</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_ushort</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_ushort(in:gushort):gushort {
+ // Gjs wrapper for regress_test_ushort()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_in.page
new file mode 100644
index 00000000..63fedb9f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_const_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_const_in</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_utf8_const_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_const_in(in:String):void {
+ // Gjs wrapper for regress_test_utf8_const_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_return.page
new file mode 100644
index 00000000..a63dc22c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_const_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_const_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_const_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_utf8_const_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_const_return():String {
+ // Gjs wrapper for regress_test_utf8_const_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>UTF-8 string</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_inout.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_inout.page
new file mode 100644
index 00000000..1f282c2f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_inout.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_inout"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_inout</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>inout</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_utf8_inout</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_inout(inout:String):void {
+ // Gjs wrapper for regress_test_utf8_inout()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>inout</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_nonconst_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_nonconst_return.page
new file mode 100644
index 00000000..2fec9e8c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_nonconst_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_nonconst_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_nonconst_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_utf8_nonconst_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_nonconst_return():String {
+ // Gjs wrapper for regress_test_utf8_nonconst_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>UTF-8 string</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_in.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_in.page
new file mode 100644
index 00000000..14f3a550
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_in.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_null_in</api:name>
+ <api:arg>
+ <api:type>String</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_utf8_null_in</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_null_in(in:String):void {
+ // Gjs wrapper for regress_test_utf8_null_in()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_out.page
new file mode 100644
index 00000000..66632ffd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_null_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_null_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_utf8_null_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_null_out():void {
+ // Gjs wrapper for regress_test_utf8_null_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out.page
new file mode 100644
index 00000000..b1a40622
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_utf8_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_out():void {
+ // Gjs wrapper for regress_test_utf8_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_nonconst_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_nonconst_return.page
new file mode 100644
index 00000000..e8a097ea
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_nonconst_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out_nonconst_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>String</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out_nonconst_return</api:name>
+ </api:function>
+
+ </info>
+ <title>test_utf8_out_nonconst_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_out_nonconst_return():String {
+ // Gjs wrapper for regress_test_utf8_out_nonconst_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+<p>a copy of "first"</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_out.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_out.page
new file mode 100644
index 00000000..07107ed8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_utf8_out_out.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out_out</api:name>
+ </api:function>
+
+ </info>
+ <title>test_utf8_out_out</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_utf8_out_out():void {
+ // Gjs wrapper for regress_test_utf8_out_out()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_value_return.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_value_return.page
new file mode 100644
index 00000000..59f03b78
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_value_return.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.test_value_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Value</api:type>
+ </api:returns>
+ <api:name>regress_test_value_return</api:name>
+ <api:arg>
+ <api:type>Number</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>test_value_return</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_value_return(i:Number):GObject.Value {
+ // Gjs wrapper for regress_test_value_return()
+}
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+<p>an int</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the int wrapped in a GValue.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_versioning.page b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_versioning.page
new file mode 100644
index 00000000..eb6ce0f2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/Regress.test_versioning.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.test_versioning"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>void</api:type>
+ </api:returns>
+ <api:name>regress_test_versioning</api:name>
+ </api:function>
+
+ </info>
+ <title>test_versioning</title>
+
+<synopsis><code mime="text/x-gjs">
+function test_versioning():void {
+ // Gjs wrapper for regress_test_versioning()
+}
+</code></synopsis>
+
+
+
+
+
+ <p>Since 1.32.1</p>
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Gjs-expected/index.page b/tests/scanner/Regress-1.0-Gjs-expected/index.page
new file mode 100644
index 00000000..a5426d89
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Gjs-expected/index.page
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<page id="index"
+ type="guide"
+ style="namespace"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+
+ </info>
+ <title>Index</title>
+
+
+
+
+
+
+
+
+
+ <links type="topic" ui:expanded="true" groups="class" style="linklist">
+ <title>Classes</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.ATestError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.ATestError.page
new file mode 100644
index 00000000..9ac6820d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.ATestError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.ATestError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.ATestError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ATestError.CODE0</code></title>
+
+</item>
+<item>
+<title><code>ATestError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>ATestError.CODE2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AliasedTestBoxed.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AliasedTestBoxed.page
new file mode 100644
index 00000000..9490e4a3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AliasedTestBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AliasedTestBoxed"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AliasedTestBoxed</title>
+
+
+
+ <p>Typedef TestBoxed to test caller-allocates correctness</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationBitfield.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationBitfield.page
new file mode 100644
index 00000000..4e19ef92
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationBitfield.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationBitfield"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationBitfield</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationCallback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationCallback.page
new file mode 100644
index 00000000..9a652d80
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationCallback</title>
+
+
+
+ <p>This is a callback.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationForeachFunc.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationForeachFunc.page
new file mode 100644
index 00000000..db77a117
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationForeachFunc.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationForeachFunc"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationForeachFunc</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationListCallback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationListCallback.page
new file mode 100644
index 00000000..79844c66
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationListCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationListCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationListCallback</title>
+
+
+
+ <p>This is a callback taking a list.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationNotifyFunc.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationNotifyFunc.page
new file mode 100644
index 00000000..17c80292
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationNotifyFunc.page
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationNotifyFunc"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationNotifyFunc</title>
+
+
+
+ <p>This is a callback with a 'closure' argument that is not named
+'user_data' and hence has to be annotated.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-attribute-signal.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-attribute-signal.page
new file mode 100644
index 00000000..9ed31bc3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-attribute-signal.page
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-attribute-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">attribute-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::attribute-signal</title>
+
+<synopsis><code mime="text/x-python">
+def callback(annotation_object, arg1, arg2, user_param1, ...)
+</code></synopsis>
+
+
+ <p>This signal tests a signal with attributes.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arg1</code></title>
+<p>a value</p>
+</item>
+<item>
+<title><code>arg2</code></title>
+<p>another value</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+<p>the return value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page
new file mode 100644
index 00000000..29eedcc1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-doc-empty-arg-parsing.page
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-doc-empty-arg-parsing"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">doc-empty-arg-parsing</title>
+
+ </info>
+ <title>Regress.AnnotationObject::doc-empty-arg-parsing</title>
+
+<synopsis><code mime="text/x-python">
+def callback(annotation_object, arg1, user_param1, ...)
+</code></synopsis>
+
+
+ <p>This signal tests an empty document argument (<code>arg1</code>)</p>
+
+
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arg1</code></title>
+
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-function-property.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-function-property.page
new file mode 100644
index 00000000..d9d8b55a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-function-property.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-function-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">function-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:function-property</title>
+
+<synopsis><code mime="text/x-python">
+"function-property" Regress.AnnotationCallback : Read / Write / Construct
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-list-signal.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-list-signal.page
new file mode 100644
index 00000000..fdfa65f7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-list-signal.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-list-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">list-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::list-signal</title>
+
+<synopsis><code mime="text/x-python">
+def callback(annotation_object, list, user_param1, ...)
+</code></synopsis>
+
+
+ <p>This is a signal which takes a list of strings, but it's not
+known by GObject as it's only marked as G_TYPE_POINTER</p>
+
+
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>list</code></title>
+<p>a list of strings</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-property.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-property.page
new file mode 100644
index 00000000..a3cb0456
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-property.page
@@ -0,0 +1,30 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-string-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">string-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:string-property</title>
+
+<synopsis><code mime="text/x-python">
+"string-property" unicode : Read / Write / Construct
+</code></synopsis>
+
+
+ <p>This is a property which is a string</p>
+
+
+ <p>Since 1.0</p>
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-signal.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-signal.page
new file mode 100644
index 00000000..06e79aa3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-string-signal.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-string-signal"
+ type="topic"
+ style="signal"
+ 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.AnnotationObject" group="signal" type="guide"/>
+ <title type="link" role="topic">string-signal</title>
+
+ </info>
+ <title>Regress.AnnotationObject::string-signal</title>
+
+<synopsis><code mime="text/x-python">
+def callback(annotation_object, string, user_param1, ...)
+</code></synopsis>
+
+
+ <p>This is a signal which has a broken signal handler,
+it says it's pointer but it's actually a string.</p>
+
+
+ <p>Since 1.0</p>
+
+
+<terms>
+<item>
+<title><code>annotation_object</code></title>
+<p>instance of <link xref="Regress.AnnotationObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>string</code></title>
+<p>a string</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-tab-property.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-tab-property.page
new file mode 100644
index 00000000..c417d1ee
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject-tab-property.page
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject-tab-property"
+ type="topic"
+ style="property"
+ 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.AnnotationObject" group="property" type="guide"/>
+ <title type="link" role="topic">tab-property</title>
+
+ </info>
+ <title>Regress.AnnotationObject:tab-property</title>
+
+<synopsis><code mime="text/x-python">
+"tab-property" unicode : Read / Write / Construct
+</code></synopsis>
+
+
+ <p>This is a property annotation intentionally indented with a mix
+of tabs and strings to test the tab handling capabilities of the scanner.</p>
+
+
+ <p>Since 1.2</p>
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.allow_none.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.allow_none.page
new file mode 100644
index 00000000..a04abd75
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.allow_none.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.allow_none"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_allow_none</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>somearg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.allow_none</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, unicode)
+@returns(GObject.Object)
+def allow_none(self, somearg):
+ # Python wrapper for regress_annotation_object_allow_none()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>somearg</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleeowns.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleeowns.page
new file mode 100644
index 00000000..bebf7737
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleeowns.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.calleeowns"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_calleeowns</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject.Object</api:type>
+ <api:name>toown</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.calleeowns</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, GObject.Object)
+@returns(int)
+def calleeowns(self, toown):
+ # Python wrapper for regress_annotation_object_calleeowns()
+</code></synopsis>
+
+
+ <p>This is a test for out arguments; GObject defaults to transfer</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>toown</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleesowns.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleesowns.page
new file mode 100644
index 00000000..ef9361fd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.calleesowns.page
@@ -0,0 +1,67 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.calleesowns"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_calleesowns</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject.Object</api:type>
+ <api:name>toown1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject.Object</api:type>
+ <api:name>toown2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.calleesowns</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, GObject.Object, GObject.Object)
+@returns(int)
+def calleesowns(self, toown1, toown2):
+ # Python wrapper for regress_annotation_object_calleesowns()
+</code></synopsis>
+
+
+ <p>This is a test for out arguments, one transferred, other not</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>toown1</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>toown2</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum.page
new file mode 100644
index 00000000..4f58e6fb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.compute_sum</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, [int])
+@returns(none)
+def compute_sum(self, nums):
+ # Python wrapper for regress_annotation_object_compute_sum()
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_n.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_n.page
new file mode 100644
index 00000000..fc993130
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_n.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum_n"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum_n</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.compute_sum_n</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, [int], int)
+@returns(none)
+def compute_sum_n(self, nums, n_nums):
+ # Python wrapper for regress_annotation_object_compute_sum_n()
+</code></synopsis>
+
+
+ <p>Test taking an array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers that are zero-terminated</p>
+</item>
+<item>
+<title><code>n_nums</code></title>
+<p>Length of number array</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_nz.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_nz.page
new file mode 100644
index 00000000..67efe7c5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.compute_sum_nz.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.compute_sum_nz"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_compute_sum_nz</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>nums</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_nums</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.compute_sum_nz</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, [int], int)
+@returns(none)
+def compute_sum_nz(self, nums, n_nums):
+ # Python wrapper for regress_annotation_object_compute_sum_nz()
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>nums</code></title>
+<p>Sequence of numbers that are zero-terminated</p>
+</item>
+<item>
+<title><code>n_nums</code></title>
+<p>Length of number array</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.create_object.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.create_object.page
new file mode 100644
index 00000000..6498ac29
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.create_object.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.create_object"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_create_object</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.create_object</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns(GObject.Object)
+def create_object(self):
+ # Python wrapper for regress_annotation_object_create_object()
+</code></synopsis>
+
+
+ <p>Test returning a caller-owned object</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.do_not_use.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.do_not_use.page
new file mode 100644
index 00000000..fac9f167
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.do_not_use.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.do_not_use"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_do_not_use</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.do_not_use</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns(GObject.Object)
+def do_not_use(self):
+ # Python wrapper for regress_annotation_object_do_not_use()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.extra_annos.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.extra_annos.page
new file mode 100644
index 00000000..7e032668
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.extra_annos.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.extra_annos"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_extra_annos</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.extra_annos</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns(none)
+def extra_annos(self):
+ # Python wrapper for regress_annotation_object_extra_annos()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.foreach.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.foreach.page
new file mode 100644
index 00000000..1010a017
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.foreach.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.foreach"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_foreach</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.AnnotationForeachFunc</api:type>
+ <api:name>func</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.foreach</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, Regress.AnnotationForeachFunc, gpointer)
+@returns(none)
+def foreach(self, func, user_data):
+ # Python wrapper for regress_annotation_object_foreach()
+</code></synopsis>
+
+
+ <p>Test taking a call-scoped callback</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>func</code></title>
+<p>Callback to invoke</p>
+</item>
+<item>
+<title><code>user_data</code></title>
+<p>Callback user data</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_hash.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_hash.page
new file mode 100644
index 00000000..8d658f50
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_hash.page
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_hash"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: GObject.Object}</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_hash</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.get_hash</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns({unicode: GObject.Object})
+def get_hash(self):
+ # Python wrapper for regress_annotation_object_get_hash()
+</code></synopsis>
+
+
+ <p>This is a test for returning a hash table mapping strings to
+objects.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_objects.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_objects.page
new file mode 100644
index 00000000..ef231f5c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_objects.page
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_objects"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[Regress.AnnotationObject]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_objects</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.get_objects</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns([Regress.AnnotationObject])
+def get_objects(self):
+ # Python wrapper for regress_annotation_object_get_objects()
+</code></synopsis>
+
+
+ <p>This is a test for returning a list of objects.
+The list itself should be freed, but not the internal objects,
+intentionally similar example to gtk_container_get_children</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_strings.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_strings.page
new file mode 100644
index 00000000..13570b66
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.get_strings.page
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.get_strings"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_get_strings</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.get_strings</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns([unicode])
+def get_strings(self):
+ # Python wrapper for regress_annotation_object_get_strings()
+</code></synopsis>
+
+
+ <p>This is a test for returning a list of strings, where
+each string needs to be freed.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.hidden_self.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.hidden_self.page
new file mode 100644
index 00000000..ce1111fd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.hidden_self.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.hidden_self"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_hidden_self</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.hidden_self</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns(none)
+def hidden_self(self):
+ # Python wrapper for regress_annotation_object_hidden_self()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.AnnotationObject"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.in.page
new file mode 100644
index 00000000..0e77f853
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.in.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.in"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_in</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, int)
+@returns(int)
+def in(self, inarg):
+ # Python wrapper for regress_annotation_object_in()
+</code></synopsis>
+
+
+ <p>This is a test for in arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout.page
new file mode 100644
index 00000000..6816eaf4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.inout</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, int)
+@returns(int)
+def inout(self, inoutarg):
+ # Python wrapper for regress_annotation_object_inout()
+</code></synopsis>
+
+
+ <p>This is a test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout2.page
new file mode 100644
index 00000000..aef9deca
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout2.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout2"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout2</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.inout2</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, int)
+@returns(int)
+def inout2(self, inoutarg):
+ # Python wrapper for regress_annotation_object_inout2()
+</code></synopsis>
+
+
+ <p>This is a second test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout3.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout3.page
new file mode 100644
index 00000000..4ba4bf67
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.inout3.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.inout3"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_inout3</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inoutarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.inout3</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, int)
+@returns(int)
+def inout3(self, inoutarg):
+ # Python wrapper for regress_annotation_object_inout3()
+</code></synopsis>
+
+
+ <p>This is a 3th test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>inoutarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.method.page
new file mode 100644
index 00000000..b6badcfe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.method.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.method"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_method</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns(int)
+def method(self):
+ # Python wrapper for regress_annotation_object_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.notrans.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.notrans.page
new file mode 100644
index 00000000..aa50a26e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.notrans.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.notrans"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_notrans</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.notrans</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject)
+@returns(GObject.Object)
+def notrans(self):
+ # Python wrapper for regress_annotation_object_notrans()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.out.page
new file mode 100644
index 00000000..606b4a12
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.out.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.out"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_out</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>outarg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, int)
+@returns(int)
+def out(self, outarg):
+ # Python wrapper for regress_annotation_object_out()
+</code></synopsis>
+
+
+ <p>This is a test for out arguments</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>outarg</code></title>
+<p>This is an argument test</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.page
new file mode 100644
index 00000000..006766fc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationObject</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+annotation_object = Regress.AnnotationObject(<link xref='Regress.AnnotationObject-function-property'>function_property</link>=value, <link xref='Regress.AnnotationObject-string-property'>string_property</link>=value, <link xref='Regress.AnnotationObject-tab-property'>tab_property</link>=value) </code></synopsis>
+
+
+ <p>This is an object used to test annotations.</p>
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.AnnotationObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.parse_args.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.parse_args.page
new file mode 100644
index 00000000..760e0be7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.parse_args.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.parse_args"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_parse_args</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>argc</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>argv</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.parse_args</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, int, [unicode])
+@returns(none)
+def parse_args(self, argc, argv):
+ # Python wrapper for regress_annotation_object_parse_args()
+</code></synopsis>
+
+
+ <p>Test taking a zero-terminated array with length parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>argc</code></title>
+<p>Length of the argument vector</p>
+</item>
+<item>
+<title><code>argv</code></title>
+<p>Argument vector</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data.page
new file mode 100644
index 00000000..7cd52364
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[guint8]</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.set_data</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, [guint8], gsize)
+@returns(none)
+def set_data(self, data, length):
+ # Python wrapper for regress_annotation_object_set_data()
+</code></synopsis>
+
+
+ <p>Test taking a guchar * with a length.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>Length of the data</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data2.page
new file mode 100644
index 00000000..cd47036a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data2.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data2"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data2</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[gint8]</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.set_data2</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, [gint8], gsize)
+@returns(none)
+def set_data2(self, data, length):
+ # Python wrapper for regress_annotation_object_set_data2()
+</code></synopsis>
+
+
+ <p>Test taking a gchar * with a length.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>Length of the data</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data3.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data3.page
new file mode 100644
index 00000000..b9016e87
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.set_data3.page
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.set_data3"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_set_data3</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[guint8]</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.set_data3</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, [guint8], gsize)
+@returns(none)
+def set_data3(self, data, length):
+ # Python wrapper for regress_annotation_object_set_data3()
+</code></synopsis>
+
+
+ <p>Test taking a gchar * with a length, overriding the array element
+type.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>The data</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>Length of the data</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.string_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.string_out.page
new file mode 100644
index 00000000..c1d085aa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.string_out.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.string_out"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_string_out</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>str_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.string_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, unicode)
+@returns(bool)
+def string_out(self, str_out):
+ # Python wrapper for regress_annotation_object_string_out()
+</code></synopsis>
+
+
+ <p>Test returning a string as an out parameter</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>str_out</code></title>
+<p>string return value</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.use_buffer.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.use_buffer.page
new file mode 100644
index 00000000..385fe89f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.use_buffer.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.use_buffer"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_use_buffer</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>guint8</api:type>
+ <api:name>bytes</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.use_buffer</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, guint8)
+@returns(none)
+def use_buffer(self, bytes):
+ # Python wrapper for regress_annotation_object_use_buffer()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="GObject.Object"/></p>
+</item>
+<item>
+<title><code>bytes</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.watch_full.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.watch_full.page
new file mode 100644
index 00000000..66a53d54
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.watch_full.page
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.watch_full"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_watch_full</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.AnnotationForeachFunc</api:type>
+ <api:name>func</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GLib.DestroyNotify</api:type>
+ <api:name>destroy</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.watch_full</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, Regress.AnnotationForeachFunc, gpointer, GLib.DestroyNotify)
+@returns(none)
+def watch_full(self, func, user_data, destroy):
+ # Python wrapper for regress_annotation_object_watch_full()
+</code></synopsis>
+
+
+ <p>Test overriding via the "Rename To" annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.AnnotationObject"/></p>
+</item>
+<item>
+<title><code>func</code></title>
+<p>The callback</p>
+</item>
+<item>
+<title><code>user_data</code></title>
+<p>The callback data</p>
+</item>
+<item>
+<title><code>destroy</code></title>
+<p>Destroy notification</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.with_voidp.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.with_voidp.page
new file mode 100644
index 00000000..bda3e9a0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationObject.with_voidp.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationObject.with_voidp"
+ type="topic"
+ style="method"
+ 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.AnnotationObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_object_with_voidp</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.AnnotationObject.with_voidp</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, gpointer)
+@returns(none)
+def with_voidp(self, data):
+ # Python wrapper for regress_annotation_object_with_voidp()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+<p>Opaque pointer handle</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationStruct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationStruct.page
new file mode 100644
index 00000000..e2100429
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.AnnotationStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.AnnotationStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.AnnotationStruct</title>
+
+
+
+ <p>This is a test of an array of object in an field of a struct.</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooASingle.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooASingle.page
new file mode 100644
index 00000000..09cd98fd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooASingle.page
@@ -0,0 +1,31 @@
+<?xml version="1.0"?>
+<page id="Regress.FooASingle"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooASingle</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooASingle.FOO_SOME_SINGLE_ENUM</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooAddressType.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooAddressType.page
new file mode 100644
index 00000000..008a8f36
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooAddressType.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooAddressType"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooAddressType</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooAddressType.INVALID</code></title>
+
+</item>
+<item>
+<title><code>FooAddressType.IPV4</code></title>
+
+</item>
+<item>
+<title><code>FooAddressType.IPV6</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.add.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.add.page
new file mode 100644
index 00000000..c7e03ace
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.add.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect.add"
+ type="topic"
+ style="method"
+ 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.FooBRect" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_brect_add</api:name>
+ <api:arg>
+ <api:type>Regress.FooBRect</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.FooBRect</api:type>
+ <api:name>b2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBRect.add</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooBRect, Regress.FooBRect)
+@returns(none)
+def add(self, b2):
+ # Python wrapper for regress_foo_brect_add()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>b2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.page
new file mode 100644
index 00000000..fd1e9d6e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBRect.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBRect"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooBRect</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.get_contained_type.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.get_contained_type.page
new file mode 100644
index 00000000..4052ec56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.get_contained_type.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion.get_contained_type"
+ type="topic"
+ style="method"
+ 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.FooBUnion" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_foo_bunion_get_contained_type</api:name>
+ <api:arg>
+ <api:type>Regress.FooBUnion</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBUnion.get_contained_type</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooBUnion)
+@returns(int)
+def get_contained_type(self):
+ # Python wrapper for regress_foo_bunion_get_contained_type()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.page
new file mode 100644
index 00000000..8644d96e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBUnion.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBUnion"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooBUnion</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.method.page
new file mode 100644
index 00000000..95f06fbb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.method.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed.method"
+ type="topic"
+ style="method"
+ 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.FooBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_boxed_method</api:name>
+ <api:arg>
+ <api:type>Regress.FooBoxed</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBoxed.method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooBoxed)
+@returns(none)
+def method(self):
+ # Python wrapper for regress_foo_boxed_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.page
new file mode 100644
index 00000000..bca1f99a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBoxed"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooBoxed</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.page
new file mode 100644
index 00000000..1a515428
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.page
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBuffer"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooBuffer</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+foo_buffer = Regress.FooBuffer() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ <item>
+ <code>Regress.FooBuffer</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.some_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.some_method.page
new file mode 100644
index 00000000..e971b2d6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooBuffer.some_method.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.FooBuffer.some_method"
+ type="topic"
+ style="method"
+ 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.FooBuffer" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_buffer_some_method</api:name>
+ <api:arg>
+ <api:type>Regress.FooBuffer</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooBuffer.some_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooBuffer)
+@returns(none)
+def some_method(self):
+ # Python wrapper for regress_foo_buffer_some_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooCallback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooCallback.page
new file mode 100644
index 00000000..52feda29
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.method.page
new file mode 100644
index 00000000..fe1b6472
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.method.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.FooDBusData.method"
+ type="topic"
+ style="method"
+ 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.FooDBusData" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_dbus_data_method</api:name>
+ <api:arg>
+ <api:type>Regress.FooDBusData</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooDBusData.method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooDBusData)
+@returns(none)
+def method(self):
+ # Python wrapper for regress_foo_dbus_data_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.page
new file mode 100644
index 00000000..b4eaeade
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooDBusData.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooDBusData"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooDBusData</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumFullname.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumFullname.page
new file mode 100644
index 00000000..00169aaf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumFullname.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumFullname"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumFullname</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooEnumFullname.ONE</code></title>
+
+</item>
+<item>
+<title><code>FooEnumFullname.TWO</code></title>
+
+</item>
+<item>
+<title><code>FooEnumFullname.THREE</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumNoType.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumNoType.page
new file mode 100644
index 00000000..d2b41e61
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumNoType.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumNoType"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumNoType</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooEnumNoType.UN</code></title>
+
+</item>
+<item>
+<title><code>FooEnumNoType.DEUX</code></title>
+
+</item>
+<item>
+<title><code>FooEnumNoType.TROIS</code></title>
+
+</item>
+<item>
+<title><code>FooEnumNoType.NEUF</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.method.page
new file mode 100644
index 00000000..a802f265
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.method.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType.method"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_foo_enum_type_method</api:name>
+ <api:arg>
+ <api:type>Regress.FooEnumType</api:type>
+ <api:name>regress_foo_enum</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooEnumType)
+@returns(int)
+def method(regress_foo_enum):
+ # Python wrapper for regress_foo_enum_type_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>regress_foo_enum</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.page
new file mode 100644
index 00000000..c3ff89b3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooEnumType</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooEnumType.ALPHA</code></title>
+
+</item>
+<item>
+<title><code>FooEnumType.BETA</code></title>
+
+</item>
+<item>
+<title><code>FooEnumType.DELTA</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.returnv.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.returnv.page
new file mode 100644
index 00000000..149cc4fe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEnumType.returnv.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEnumType.returnv"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooEnumType</api:type>
+ </api:returns>
+ <api:name>regress_foo_enum_type_returnv</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.returnv</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(Regress.FooEnumType)
+def returnv(x):
+ # Python wrapper for regress_foo_enum_type_returnv()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooError.page
new file mode 100644
index 00000000..8c0b6a23
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.FooError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooError.GOOD</code></title>
+
+</item>
+<item>
+<title><code>FooError.BAD</code></title>
+
+</item>
+<item>
+<title><code>FooError.UGLY</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooError.quark.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooError.quark.page
new file mode 100644
index 00000000..81f81a7d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_foo_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.quark</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Quark)
+def quark():
+ # Python wrapper for regress_foo_error_quark()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEvent.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEvent.page
new file mode 100644
index 00000000..ce368302
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEvent.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEvent"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooEvent</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEventAny.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEventAny.page
new file mode 100644
index 00000000..562ec03c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEventAny.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEventAny"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooEventAny</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooEventExpose.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEventExpose.page
new file mode 100644
index 00000000..0000add5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooEventExpose.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooEventExpose"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooEventExpose</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsNoType.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsNoType.page
new file mode 100644
index 00000000..53539d49
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsNoType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooFlagsNoType"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooFlagsNoType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsType.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsType.page
new file mode 100644
index 00000000..2b4afeb5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooFlagsType.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooFlagsType"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooFlagsType</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.copy.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.copy.page
new file mode 100644
index 00000000..1dbb5dc0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.copy.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct.copy"
+ type="topic"
+ style="method"
+ 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.FooForeignStruct" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooForeignStruct</api:type>
+ </api:returns>
+ <api:name>regress_foo_foreign_struct_copy</api:name>
+ <api:arg>
+ <api:type>Regress.FooForeignStruct</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooForeignStruct.copy</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooForeignStruct)
+@returns(Regress.FooForeignStruct)
+def copy(self):
+ # Python wrapper for regress_foo_foreign_struct_copy()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.page
new file mode 100644
index 00000000..312994a9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooForeignStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooForeignStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooForeignStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface-do_regress_foo.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface-do_regress_foo.page
new file mode 100644
index 00000000..d0be1eb5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface-do_regress_foo.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface-do_regress_foo"
+ type="topic"
+ style="vfunc"
+ 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.FooInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterface::do_regress_foo</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooInterface, int)
+@returns(none)
+def do_do_regress_foo(self, x):
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.do_regress_foo.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.do_regress_foo.page
new file mode 100644
index 00000000..3b2f26d6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.do_regress_foo.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface.do_regress_foo"
+ type="topic"
+ style="method"
+ 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.FooInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_interface_do_regress_foo</api:name>
+ <api:arg>
+ <api:type>Regress.FooInterface</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooInterface.do_regress_foo</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooInterface, int)
+@returns(none)
+def do_regress_foo(self, x):
+ # Python wrapper for regress_foo_interface_do_regress_foo()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.page
new file mode 100644
index 00000000..d2a482f7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooInterface</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+foo_interface = Regress.FooInterface() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.FooInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.static_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.static_method.page
new file mode 100644
index 00000000..1c6c1660
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooInterface.static_method.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.FooInterface.static_method"
+ type="topic"
+ style="function"
+ 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.FooInterface" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_interface_static_method</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooInterface.static_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(none)
+def static_method(x):
+ # Python wrapper for regress_foo_interface_static_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-read_fn.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-read_fn.page
new file mode 100644
index 00000000..c2ca1c09
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-read_fn.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-read_fn"
+ type="topic"
+ style="vfunc"
+ 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.FooObject" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject::read_fn</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, int, int)
+@returns(none)
+def do_read_fn(object, offset, length):
+</code></synopsis>
+
+
+ <p>Read some stuff.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>offset</code></title>
+<p>offset</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>length</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-signal.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-signal.page
new file mode 100644
index 00000000..ee6c20c5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-signal.page
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-signal"
+ type="topic"
+ style="signal"
+ 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.FooObject" group="signal" type="guide"/>
+ <title type="link" role="topic">signal</title>
+
+ </info>
+ <title>Regress.FooObject::signal</title>
+
+<synopsis><code mime="text/x-python">
+def callback(foo_object, object, p0, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>foo_object</code></title>
+<p>instance of <link xref="Regress.FooObject"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>p0</code></title>
+
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-string.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-string.page
new file mode 100644
index 00000000..9d61f3ab
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-string.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-string"
+ type="topic"
+ style="property"
+ 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.FooObject" group="property" type="guide"/>
+ <title type="link" role="topic">string</title>
+
+ </info>
+ <title>Regress.FooObject:string</title>
+
+<synopsis><code mime="text/x-python">
+"string" unicode : Read / Write / Construct
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-virtual_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-virtual_method.page
new file mode 100644
index 00000000..01cf6dba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject-virtual_method.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject-virtual_method"
+ type="topic"
+ style="vfunc"
+ 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.FooObject" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject::virtual_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, int)
+@returns(bool)
+def do_virtual_method(object, first_param):
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>first_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.a_global_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.a_global_method.page
new file mode 100644
index 00000000..87645bcf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.a_global_method.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.a_global_method"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_a_global_method</api:name>
+ <api:arg>
+ <api:type>Utility.Object</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.a_global_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Utility.Object)
+@returns(none)
+def a_global_method(obj):
+ # Python wrapper for regress_foo_object_a_global_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.append_new_stack_layer.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.append_new_stack_layer.page
new file mode 100644
index 00000000..23ba26b8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.append_new_stack_layer.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.append_new_stack_layer"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooOtherObject</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_append_new_stack_layer</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.append_new_stack_layer</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, int)
+@returns(Regress.FooOtherObject)
+def append_new_stack_layer(self, x):
+ # Python wrapper for regress_foo_object_append_new_stack_layer()
+</code></synopsis>
+
+
+ <p>This shouldn't be scanned as a constructor.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.dup_name.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.dup_name.page
new file mode 100644
index 00000000..dcc20f6c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.dup_name.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.dup_name"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_dup_name</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.dup_name</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject)
+@returns(unicode)
+def dup_name(self):
+ # Python wrapper for regress_foo_object_dup_name()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.external_type.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.external_type.page
new file mode 100644
index 00000000..0b32befd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.external_type.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.external_type"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Utility.Object</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_external_type</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.external_type</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject)
+@returns(Utility.Object)
+def external_type(self):
+ # Python wrapper for regress_foo_object_external_type()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.FooObject"/></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_default.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_default.page
new file mode 100644
index 00000000..826efd85
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_default.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.get_default"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooSubobject</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_get_default</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.get_default</title>
+
+<synopsis><code mime="text/x-python">
+@returns(Regress.FooSubobject)
+def get_default():
+ # Python wrapper for regress_foo_object_get_default()
+</code></synopsis>
+
+
+ <p>This function is intended to match clutter_stage_get_default which
+uses a C sugar return type.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_name.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_name.page
new file mode 100644
index 00000000..e66d4932
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.get_name.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.get_name"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_get_name</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.get_name</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject)
+@returns(unicode)
+def get_name(self):
+ # Python wrapper for regress_foo_object_get_name()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.handle_glyph.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.handle_glyph.page
new file mode 100644
index 00000000..e171f820
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.handle_glyph.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.handle_glyph"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_handle_glyph</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Utility.Glyph</api:type>
+ <api:name>glyph</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.handle_glyph</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, Utility.Glyph)
+@returns(none)
+def handle_glyph(self, glyph):
+ # Python wrapper for regress_foo_object_handle_glyph()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>glyph</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.is_it_time_yet.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.is_it_time_yet.page
new file mode 100644
index 00000000..1781562f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.is_it_time_yet.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.is_it_time_yet"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_is_it_time_yet</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>time</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.is_it_time_yet</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, int)
+@returns(none)
+def is_it_time_yet(self, time):
+ # Python wrapper for regress_foo_object_is_it_time_yet()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>time</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.page
new file mode 100644
index 00000000..3265e6b5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooObject</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+foo_object = Regress.FooObject(<link xref='Regress.FooObject-hidden'>hidden</link>=value, <link xref='Regress.FooObject-string'>string</link>=value) </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.read.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.read.page
new file mode 100644
index 00000000..88dee520
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.read.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.read"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_read</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>offset</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.read</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, int, int)
+@returns(none)
+def read(self, offset, length):
+ # Python wrapper for regress_foo_object_read()
+</code></synopsis>
+
+
+ <p>Read some stuff.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>obj</p>
+</item>
+<item>
+<title><code>offset</code></title>
+<p>offset</p>
+</item>
+<item>
+<title><code>length</code></title>
+<p>length</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.static_meth.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.static_meth.page
new file mode 100644
index 00000000..c652a104
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.static_meth.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.static_meth"
+ type="topic"
+ style="function"
+ 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.FooObject" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_static_meth</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.static_meth</title>
+
+<synopsis><code mime="text/x-python">
+@returns(int)
+def static_meth():
+ # Python wrapper for regress_foo_object_static_meth()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.various.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.various.page
new file mode 100644
index 00000000..efdc5c45
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.various.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.various"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_various</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GType</api:type>
+ <api:name>some_type</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.various</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, gpointer, GType)
+@returns(none)
+def various(self, data, some_type):
+ # Python wrapper for regress_foo_object_various()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>some_type</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.virtual_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.virtual_method.page
new file mode 100644
index 00000000..f4920bed
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObject.virtual_method.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObject.virtual_method"
+ type="topic"
+ style="method"
+ 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.FooObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_foo_object_virtual_method</api:name>
+ <api:arg>
+ <api:type>Regress.FooObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>first_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooObject.virtual_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooObject, int)
+@returns(bool)
+def virtual_method(self, first_param):
+ # Python wrapper for regress_foo_object_virtual_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>first_param</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooObjectCookie.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObjectCookie.page
new file mode 100644
index 00000000..44a63ab1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooObjectCookie.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooObjectCookie"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooObjectCookie</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooOtherObject.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooOtherObject.page
new file mode 100644
index 00000000..dadf5236
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooOtherObject.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.FooOtherObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooOtherObject</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+foo_other_object = Regress.FooOtherObject() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooOtherObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.add.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.add.page
new file mode 100644
index 00000000..fe924f40
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.add.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.FooRectangle.add"
+ type="topic"
+ style="method"
+ 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.FooRectangle" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_rectangle_add</api:name>
+ <api:arg>
+ <api:type>Regress.FooRectangle</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.FooRectangle</api:type>
+ <api:name>r2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooRectangle.add</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooRectangle, Regress.FooRectangle)
+@returns(none)
+def add(self, r2):
+ # Python wrapper for regress_foo_rectangle_add()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>add to this rect</p>
+</item>
+<item>
+<title><code>r2</code></title>
+<p>source rectangle</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.page
new file mode 100644
index 00000000..0cfef622
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooRectangle.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooRectangle"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooRectangle</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooStackLayer.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooStackLayer.page
new file mode 100644
index 00000000..8a08c9ae
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooStackLayer.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.FooStackLayer"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.FooStackLayer</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>FooStackLayer.DESKTOP</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.BOTTOM</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.NORMAL</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.TOP</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.DOCK</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.FULLSCREEN</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.FOCUSED_WINDOW</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.OVERRIDE_REDIRECT</code></title>
+
+</item>
+<item>
+<title><code>FooStackLayer.LAST</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooStruct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooStruct.page
new file mode 100644
index 00000000..84f5d192
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy-event.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy-event.page
new file mode 100644
index 00000000..a42bb176
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy-event.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-destroy-event"
+ type="topic"
+ style="signal"
+ 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.FooSubInterface" group="signal" type="guide"/>
+ <title type="link" role="topic">destroy-event</title>
+
+ </info>
+ <title>Regress.FooSubInterface::destroy-event</title>
+
+<synopsis><code mime="text/x-python">
+def callback(foo_sub_interface, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>foo_sub_interface</code></title>
+<p>instance of <link xref="Regress.FooSubInterface"/> that is emitting the signal</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy_event.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy_event.page
new file mode 100644
index 00000000..82dbc622
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-destroy_event.page
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-destroy_event"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::destroy_event</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooSubInterface)
+@returns(none)
+def do_destroy_event(self):
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_bar.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_bar.page
new file mode 100644
index 00000000..a035189a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_bar.page
@@ -0,0 +1,36 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-do_bar"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::do_bar</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooSubInterface)
+@returns(none)
+def do_do_bar(self):
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_baz.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_baz.page
new file mode 100644
index 00000000..3b0404fa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface-do_baz.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface-do_baz"
+ type="topic"
+ style="vfunc"
+ 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.FooSubInterface" group="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface::do_baz</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooSubInterface, GObject.Callback, gpointer)
+@returns(none)
+def do_do_baz(self, callback, user_data):
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_bar.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_bar.page
new file mode 100644
index 00000000..1ecac0d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_bar.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface.do_bar"
+ type="topic"
+ style="method"
+ 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.FooSubInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_sub_interface_do_bar</api:name>
+ <api:arg>
+ <api:type>Regress.FooSubInterface</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooSubInterface.do_bar</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooSubInterface)
+@returns(none)
+def do_bar(self):
+ # Python wrapper for regress_foo_sub_interface_do_bar()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_baz.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_baz.page
new file mode 100644
index 00000000..071fb0d5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.do_baz.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface.do_baz"
+ type="topic"
+ style="method"
+ 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.FooSubInterface" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_sub_interface_do_baz</api:name>
+ <api:arg>
+ <api:type>Regress.FooSubInterface</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject.Callback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.FooSubInterface.do_baz</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooSubInterface, GObject.Callback, gpointer)
+@returns(none)
+def do_baz(self, callback, user_data):
+ # Python wrapper for regress_foo_sub_interface_do_baz()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.page
new file mode 100644
index 00000000..81593d32
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubInterface.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubInterface</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+foo_sub_interface = Regress.FooSubInterface() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.FooSubInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubobject.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubobject.page
new file mode 100644
index 00000000..fc7b5ad1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooSubobject.page
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<page id="Regress.FooSubobject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.FooSubobject</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+foo_subobject = Regress.FooSubobject() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.FooObject</code>
+ <item>
+ <code>Regress.FooSubobject</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooThingWithArray.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooThingWithArray.page
new file mode 100644
index 00000000..430dce7c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooThingWithArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooThingWithArray"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooThingWithArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooUnion.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooUnion.page
new file mode 100644
index 00000000..9746f17e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooUnion.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooUnion"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooUnion</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooUtilityStruct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooUtilityStruct.page
new file mode 100644
index 00000000..2b94f691
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooUtilityStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooUtilityStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.FooUtilityStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.FooXEvent.page b/tests/scanner/Regress-1.0-Python-expected/Regress.FooXEvent.page
new file mode 100644
index 00000000..c389ef05
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.FooXEvent.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.FooXEvent"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.FooXEvent</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.LikeGnomeKeyringPasswordSchema.page b/tests/scanner/Regress-1.0-Python-expected/Regress.LikeGnomeKeyringPasswordSchema.page
new file mode 100644
index 00000000..44a946ee
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.LikeGnomeKeyringPasswordSchema.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeGnomeKeyringPasswordSchema"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.LikeGnomeKeyringPasswordSchema</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.page b/tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.page
new file mode 100644
index 00000000..fb4831f5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeXklConfigItem"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.LikeXklConfigItem</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.set_name.page b/tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.set_name.page
new file mode 100644
index 00000000..a6815c8b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.LikeXklConfigItem.set_name.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.LikeXklConfigItem.set_name"
+ type="topic"
+ style="method"
+ 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.LikeXklConfigItem" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_like_xkl_config_item_set_name</api:name>
+ <api:arg>
+ <api:type>Regress.LikeXklConfigItem</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>name</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.LikeXklConfigItem.set_name</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.LikeXklConfigItem, unicode)
+@returns(none)
+def set_name(self, name):
+ # Python wrapper for regress_like_xkl_config_item_set_name()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>name</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.PtrArrayAlias.page b/tests/scanner/Regress-1.0-Python-expected/Regress.PtrArrayAlias.page
new file mode 100644
index 00000000..f66aee44
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.PtrArrayAlias.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.PtrArrayAlias"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.PtrArrayAlias</title>
+
+
+
+ <p>Typedef'd GPtrArray for some reason</p>
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.page
new file mode 100644
index 00000000..f31b58ec
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestABCError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestABCError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestABCError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestABCError.CODE2</code></title>
+
+</item>
+<item>
+<title><code>TestABCError.CODE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.quark.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.quark.page
new file mode 100644
index 00000000..8a8114df
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestABCError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestABCError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_abc_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.quark</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Quark)
+def quark():
+ # Python wrapper for regress_test_abc_error_quark()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.copy.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.copy.page
new file mode 100644
index 00000000..6e69b52e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.copy.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxed</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_copy</api:name>
+ <api:arg>
+ <api:type>Regress.TestBoxed</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.copy</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestBoxed)
+@returns(Regress.TestBoxed)
+def copy(self):
+ # Python wrapper for regress_test_boxed_copy()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.equals.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.equals.page
new file mode 100644
index 00000000..b4e88aaf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.equals.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed.equals"
+ type="topic"
+ style="method"
+ 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.TestBoxed" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_equals</api:name>
+ <api:arg>
+ <api:type>Regress.TestBoxed</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestBoxed</api:type>
+ <api:name>other</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxed.equals</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestBoxed, Regress.TestBoxed)
+@returns(bool)
+def equals(self, other):
+ # Python wrapper for regress_test_boxed_equals()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>other</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.page
new file mode 100644
index 00000000..baa423f2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxed.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxed"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxed</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.copy.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.copy.page
new file mode 100644
index 00000000..2629154a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.copy.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxedB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxedB</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_b_copy</api:name>
+ <api:arg>
+ <api:type>Regress.TestBoxedB</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedB.copy</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestBoxedB)
+@returns(Regress.TestBoxedB)
+def copy(self):
+ # Python wrapper for regress_test_boxed_b_copy()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.page
new file mode 100644
index 00000000..0e39780b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedB"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedC.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedC.page
new file mode 100644
index 00000000..18b77d9f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedC.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedC"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedC</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.copy.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.copy.page
new file mode 100644
index 00000000..9910236c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.copy.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.copy"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestBoxedD</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_copy</api:name>
+ <api:arg>
+ <api:type>Regress.TestBoxedD</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedD.copy</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestBoxedD)
+@returns(Regress.TestBoxedD)
+def copy(self):
+ # Python wrapper for regress_test_boxed_d_copy()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.free.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.free.page
new file mode 100644
index 00000000..9750cc3f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.free.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.free"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_free</api:name>
+ <api:arg>
+ <api:type>Regress.TestBoxedD</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedD.free</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestBoxedD)
+@returns(none)
+def free(self):
+ # Python wrapper for regress_test_boxed_d_free()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.get_magic.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.get_magic.page
new file mode 100644
index 00000000..f050eb66
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.get_magic.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD.get_magic"
+ type="topic"
+ style="method"
+ 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.TestBoxedD" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_boxed_d_get_magic</api:name>
+ <api:arg>
+ <api:type>Regress.TestBoxedD</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestBoxedD.get_magic</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestBoxedD)
+@returns(int)
+def get_magic(self):
+ # Python wrapper for regress_test_boxed_d_get_magic()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.page
new file mode 100644
index 00000000..995e80dd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestBoxedD.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestBoxedD"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestBoxedD</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallback.page
new file mode 100644
index 00000000..bed84d50
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackArray.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackArray.page
new file mode 100644
index 00000000..7d3f7b83
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackArray"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackFull.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackFull.page
new file mode 100644
index 00000000..0b8fca1d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackFull.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackFull"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackFull</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackGError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackGError.page
new file mode 100644
index 00000000..804382f5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackGError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackGError"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackGError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackHashtable.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackHashtable.page
new file mode 100644
index 00000000..06ebb706
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackHashtable.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackHashtable"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackHashtable</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackOwnedGError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackOwnedGError.page
new file mode 100644
index 00000000..28b21ea4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackOwnedGError.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackOwnedGError"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackOwnedGError</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackUserData.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackUserData.page
new file mode 100644
index 00000000..286c830a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestCallbackUserData.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestCallbackUserData"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestCallbackUserData</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestDEFError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestDEFError.page
new file mode 100644
index 00000000..589059d5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestDEFError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestDEFError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestDEFError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestDEFError.CODE0</code></title>
+
+</item>
+<item>
+<title><code>TestDEFError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestDEFError.CODE2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.page
new file mode 100644
index 00000000..814b474b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnum"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnum</title>
+
+
+
+ <p>By purpose, not all members have documentation</p>
+
+
+
+
+<terms>
+<item>
+<title><code>TestEnum.VALUE1</code></title>
+<p>value 1</p>
+</item>
+<item>
+<title><code>TestEnum.VALUE2</code></title>
+<p>value 2</p>
+</item>
+<item>
+<title><code>TestEnum.VALUE3</code></title>
+
+</item>
+<item>
+<title><code>TestEnum.VALUE4</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.param.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.param.page
new file mode 100644
index 00000000..24684786
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnum.param.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnum.param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_test_enum_param</api:name>
+ <api:arg>
+ <api:type>Regress.TestEnum</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.param</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestEnum)
+@returns(unicode)
+def param(e):
+ # Python wrapper for regress_test_enum_param()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumNoGEnum.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumNoGEnum.page
new file mode 100644
index 00000000..5c0c5594
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumNoGEnum.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnumNoGEnum"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnumNoGEnum</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestEnumNoGEnum.EVALUE1</code></title>
+
+</item>
+<item>
+<title><code>TestEnumNoGEnum.EVALUE2</code></title>
+
+</item>
+<item>
+<title><code>TestEnumNoGEnum.EVALUE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumUnsigned.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumUnsigned.page
new file mode 100644
index 00000000..df3cfa1e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestEnumUnsigned.page
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<page id="Regress.TestEnumUnsigned"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestEnumUnsigned</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestEnumUnsigned.VALUE1</code></title>
+
+</item>
+<item>
+<title><code>TestEnumUnsigned.VALUE2</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestError.page
new file mode 100644
index 00000000..d6a6ebb2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestError.CODE2</code></title>
+
+</item>
+<item>
+<title><code>TestError.CODE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestError.quark.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestError.quark.page
new file mode 100644
index 00000000..07a91a37
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.quark</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Quark)
+def quark():
+ # Python wrapper for regress_test_error_quark()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFlags.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFlags.page
new file mode 100644
index 00000000..d5bfeeb4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFlags.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFlags"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFlags</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFloating.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFloating.page
new file mode 100644
index 00000000..a2b80e1d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFloating.page
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFloating"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFloating</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_floating = Regress.TestFloating() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>GObject.InitiallyUnowned</code>
+ <item>
+ <code>Regress.TestFloating</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.page
new file mode 100644
index 00000000..7035407d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObject</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_fundamental_object = Regress.TestFundamentalObject() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestFundamentalObject</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.ref.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.ref.page
new file mode 100644
index 00000000..ed3159d0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.ref.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject.ref"
+ type="topic"
+ style="method"
+ 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.TestFundamentalObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestFundamentalObject</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_object_ref</api:name>
+ <api:arg>
+ <api:type>Regress.TestFundamentalObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestFundamentalObject.ref</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestFundamentalObject)
+@returns(Regress.TestFundamentalObject)
+def ref(self):
+ # Python wrapper for regress_test_fundamental_object_ref()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.unref.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.unref.page
new file mode 100644
index 00000000..1ecf6c1e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObject.unref.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObject.unref"
+ type="topic"
+ style="method"
+ 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.TestFundamentalObject" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_fundamental_object_unref</api:name>
+ <api:arg>
+ <api:type>Regress.TestFundamentalObject</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestFundamentalObject.unref</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestFundamentalObject)
+@returns(none)
+def unref(self):
+ # Python wrapper for regress_test_fundamental_object_unref()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectCopyFunction.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectCopyFunction.page
new file mode 100644
index 00000000..73a33285
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectCopyFunction.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObjectCopyFunction"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObjectCopyFunction</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectFinalizeFunction.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectFinalizeFunction.page
new file mode 100644
index 00000000..df0e8fba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalObjectFinalizeFunction.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalObjectFinalizeFunction"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalObjectFinalizeFunction</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalSubObject.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalSubObject.page
new file mode 100644
index 00000000..6b1e810a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestFundamentalSubObject.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.TestFundamentalSubObject"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestFundamentalSubObject</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_fundamental_sub_object = Regress.TestFundamentalSubObject() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestFundamentalObject</code>
+ <item>
+ <code>Regress.TestFundamentalSubObject</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo.page
new file mode 100644
index 00000000..1cfcfdcb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.do_foo"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_do_foo</api:name>
+ <api:arg>
+ <api:type>Regress.TestInheritDrawable</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.do_foo</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestInheritDrawable, int)
+@returns(none)
+def do_foo(self, x):
+ # Python wrapper for regress_test_inherit_drawable_do_foo()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page
new file mode 100644
index 00000000..e00b489c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.do_foo_maybe_throw.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.do_foo_maybe_throw"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_do_foo_maybe_throw</api:name>
+ <api:arg>
+ <api:type>Regress.TestInheritDrawable</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.do_foo_maybe_throw</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestInheritDrawable, int)
+@returns(none)
+def do_foo_maybe_throw(self, x):
+ # Python wrapper for regress_test_inherit_drawable_do_foo_maybe_throw()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_origin.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_origin.page
new file mode 100644
index 00000000..357d0694
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_origin.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.get_origin"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_get_origin</api:name>
+ <api:arg>
+ <api:type>Regress.TestInheritDrawable</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.get_origin</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestInheritDrawable, int, int)
+@returns(none)
+def get_origin(self, x, y):
+ # Python wrapper for regress_test_inherit_drawable_get_origin()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_size.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_size.page
new file mode 100644
index 00000000..3bbdfed1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.get_size.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable.get_size"
+ type="topic"
+ style="method"
+ 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.TestInheritDrawable" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_inherit_drawable_get_size</api:name>
+ <api:arg>
+ <api:type>Regress.TestInheritDrawable</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>width</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>height</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestInheritDrawable.get_size</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestInheritDrawable, int, int)
+@returns(none)
+def get_size(self, width, height):
+ # Python wrapper for regress_test_inherit_drawable_get_size()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>width</code></title>
+
+</item>
+<item>
+<title><code>height</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.page
new file mode 100644
index 00000000..1fdd2c89
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritDrawable.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritDrawable"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestInheritDrawable</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_inherit_drawable = Regress.TestInheritDrawable() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestInheritDrawable</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritPixmapObjectClass.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritPixmapObjectClass.page
new file mode 100644
index 00000000..0df0396b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInheritPixmapObjectClass.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInheritPixmapObjectClass"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestInheritPixmapObjectClass</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestInterface.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInterface.page
new file mode 100644
index 00000000..807e18ae
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestInterface.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.TestInterface"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestInterface</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_interface = Regress.TestInterface() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>Regress.TestInterface</code>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-all.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-all.page
new file mode 100644
index 00000000..f8fb4a1c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-all.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-all"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">all</title>
+
+ </info>
+ <title>Regress.TestObj::all</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-allow_none_vfunc.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-allow_none_vfunc.page
new file mode 100644
index 00000000..7a3b9c91
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-allow_none_vfunc.page
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-allow_none_vfunc"
+ type="topic"
+ style="vfunc"
+ 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="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj::allow_none_vfunc</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, Regress.TestObj)
+@returns(none)
+def do_allow_none_vfunc(obj, two):
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>two</code></title>
+<p>Another object</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-bare.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-bare.page
new file mode 100644
index 00000000..f1f1b520
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-bare.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-bare"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">bare</title>
+
+ </info>
+ <title>Regress.TestObj:bare</title>
+
+<synopsis><code mime="text/x-python">
+"bare" GObject.Object : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-boxed.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-boxed.page
new file mode 100644
index 00000000..a392a771
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-boxed.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-boxed"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">boxed</title>
+
+ </info>
+ <title>Regress.TestObj:boxed</title>
+
+<synopsis><code mime="text/x-python">
+"boxed" Regress.TestBoxed : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-cleanup.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-cleanup.page
new file mode 100644
index 00000000..f35c0314
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-cleanup.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-cleanup"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">cleanup</title>
+
+ </info>
+ <title>Regress.TestObj::cleanup</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-double.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-double.page
new file mode 100644
index 00000000..70fd579b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-double.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-double"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">double</title>
+
+ </info>
+ <title>Regress.TestObj:double</title>
+
+<synopsis><code mime="text/x-python">
+"double" float : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-first.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-first.page
new file mode 100644
index 00000000..b5bcd2c0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-first.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-first"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">first</title>
+
+ </info>
+ <title>Regress.TestObj::first</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-float.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-float.page
new file mode 100644
index 00000000..87be50fe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-float.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-float"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">float</title>
+
+ </info>
+ <title>Regress.TestObj:float</title>
+
+<synopsis><code mime="text/x-python">
+"float" float : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-gtype.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-gtype.page
new file mode 100644
index 00000000..6b222e4e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-gtype.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-gtype"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">gtype</title>
+
+ </info>
+ <title>Regress.TestObj:gtype</title>
+
+<synopsis><code mime="text/x-python">
+"gtype" GType : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table-old.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table-old.page
new file mode 100644
index 00000000..c796f365
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table-old.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-hash-table-old"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">hash-table-old</title>
+
+ </info>
+ <title>Regress.TestObj:hash-table-old</title>
+
+<synopsis><code mime="text/x-python">
+"hash-table-old" {unicode: gint8} : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table.page
new file mode 100644
index 00000000..c5d426cf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-hash-table.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-hash-table"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">hash-table</title>
+
+ </info>
+ <title>Regress.TestObj:hash-table</title>
+
+<synopsis><code mime="text/x-python">
+"hash-table" {unicode: gint8} : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-int.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-int.page
new file mode 100644
index 00000000..db7a89e1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-int.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-int"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">int</title>
+
+ </info>
+ <title>Regress.TestObj:int</title>
+
+<synopsis><code mime="text/x-python">
+"int" int : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list-old.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list-old.page
new file mode 100644
index 00000000..95367ec2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list-old.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-list-old"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">list-old</title>
+
+ </info>
+ <title>Regress.TestObj:list-old</title>
+
+<synopsis><code mime="text/x-python">
+"list-old" [unicode] : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list.page
new file mode 100644
index 00000000..aca148d8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-list.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-list"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">list</title>
+
+ </info>
+ <title>Regress.TestObj:list</title>
+
+<synopsis><code mime="text/x-python">
+"list" [unicode] : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-matrix.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-matrix.page
new file mode 100644
index 00000000..fe7066a2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-matrix.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-matrix"
+ type="topic"
+ style="vfunc"
+ 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="vfunc" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj::matrix</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, unicode)
+@returns(int)
+def do_matrix(obj, somestr):
+</code></synopsis>
+
+
+ <p>This method is virtual. Notably its name differs from the virtual
+slot name, which makes it useful for testing bindings handle this
+case.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+
+</item>
+<item>
+<title><code>somestr</code></title>
+<p>Meaningless string</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page
new file mode 100644
index 00000000..a228de1f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-len-prop.page
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-array-len-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-array-len-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-array-len-prop</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, arr, len, user_param1, ...)
+</code></synopsis>
+
+
+ <p>This test signal similar to GSettings::change-event</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arr</code></title>
+<p>numbers, or <code>None</code></p>
+</item>
+<item>
+<title><code>len</code></title>
+<p>length of <code>arr</code>, or 0</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-prop.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-prop.page
new file mode 100644
index 00000000..eb1b99ff
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-array-prop.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-array-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-array-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-array-prop</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, arr, user_param1, ...)
+</code></synopsis>
+
+
+ <p>This test signal is like TelepathyGlib's
+ TpChannel:: group-members-changed-detailed:</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>arr</code></title>
+<p>numbers</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-foreign-struct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-foreign-struct.page
new file mode 100644
index 00000000..36a30d7e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-foreign-struct.page
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-foreign-struct"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-foreign-struct</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-foreign-struct</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, cr, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>cr</code></title>
+<p>A cairo context.</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-hash-prop.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-hash-prop.page
new file mode 100644
index 00000000..2048ad2c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-hash-prop.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-hash-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-hash-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-hash-prop</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, hash, user_param1, ...)
+</code></synopsis>
+
+
+ <p>This test signal is like TelepathyGlib's
+ TpAccount::status-changed</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>hash</code></title>
+
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-int64-prop.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-int64-prop.page
new file mode 100644
index 00000000..a782484b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-int64-prop.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-int64-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-int64-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-int64-prop</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, i, user_param1, ...)
+</code></synopsis>
+
+
+ <p>You can use this with regress_test_obj_emit_sig_with_int64, or raise from
+the introspection client langage.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-intarray-ret.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-intarray-ret.page
new file mode 100644
index 00000000..d070f179
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-intarray-ret.page
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-intarray-ret"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-intarray-ret</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-intarray-ret</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, i, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-obj.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-obj.page
new file mode 100644
index 00000000..d4814a83
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-obj.page
@@ -0,0 +1,46 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-obj"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-obj</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-obj</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, obj, user_param1, ...)
+</code></synopsis>
+
+
+ <p>Test transfer none GObject as a param (tests refcounting).
+Use with regress_test_obj_emit_sig_with_obj</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>obj</code></title>
+<p>A newly created RegressTestObj</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-strv.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-strv.page
new file mode 100644
index 00000000..a7037a49
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-strv.page
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-strv"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-strv</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-strv</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, strs, user_param1, ...)
+</code></synopsis>
+
+
+ <p>Test GStrv as a param.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>strs</code></title>
+<p>strings</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-uint64-prop.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-uint64-prop.page
new file mode 100644
index 00000000..c89d1d16
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-sig-with-uint64-prop.page
@@ -0,0 +1,50 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-sig-with-uint64-prop"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">sig-with-uint64-prop</title>
+
+ </info>
+ <title>Regress.TestObj::sig-with-uint64-prop</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, i, user_param1, ...)
+</code></synopsis>
+
+
+ <p>You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
+the introspection client langage.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>i</code></title>
+<p>an integer</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-string.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-string.page
new file mode 100644
index 00000000..fa499937
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-string.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-string"
+ type="topic"
+ style="property"
+ 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="property" type="guide"/>
+ <title type="link" role="topic">string</title>
+
+ </info>
+ <title>Regress.TestObj:string</title>
+
+<synopsis><code mime="text/x-python">
+"string" unicode : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test-with-static-scope-arg.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test-with-static-scope-arg.page
new file mode 100644
index 00000000..736814c7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test-with-static-scope-arg.page
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-test-with-static-scope-arg"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">test-with-static-scope-arg</title>
+
+ </info>
+ <title>Regress.TestObj::test-with-static-scope-arg</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, object, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<item>
+<title><code>object</code></title>
+
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test.page
new file mode 100644
index 00000000..e09f531e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj-test.page
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj-test"
+ type="topic"
+ style="signal"
+ 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="signal" type="guide"/>
+ <title type="link" role="topic">test</title>
+
+ </info>
+ <title>Regress.TestObj::test</title>
+
+<synopsis><code mime="text/x-python">
+def callback(test_obj, user_param1, ...)
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>test_obj</code></title>
+<p>instance of <link xref="Regress.TestObj"/> that is emitting the signal</p>
+</item>
+<title><code>user_param1</code></title>
+<p>first user parameter (if any) specified with the connect() method</p>
+<item>
+<title><code>...</code></title>
+<p>additional user parameters (if any)</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.do_matrix.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.do_matrix.page
new file mode 100644
index 00000000..07eaa505
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.do_matrix.page
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.do_matrix"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_do_matrix</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>somestr</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.do_matrix</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, unicode)
+@returns(int)
+def do_matrix(self, somestr):
+ # Python wrapper for regress_test_obj_do_matrix()
+</code></synopsis>
+
+
+ <p>This method is virtual. Notably its name differs from the virtual
+slot name, which makes it useful for testing bindings handle this
+case.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>somestr</code></title>
+<p>Meaningless string</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_foreign_struct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_foreign_struct.page
new file mode 100644
index 00000000..065d7456
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_foreign_struct.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_foreign_struct"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_foreign_struct</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.emit_sig_with_foreign_struct</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def emit_sig_with_foreign_struct(self):
+ # Python wrapper for regress_test_obj_emit_sig_with_foreign_struct()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_int64.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_int64.page
new file mode 100644
index 00000000..fb0679af
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_int64.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_int64"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_int64</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.emit_sig_with_int64</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def emit_sig_with_int64(self):
+ # Python wrapper for regress_test_obj_emit_sig_with_int64()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_obj.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_obj.page
new file mode 100644
index 00000000..25154985
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_obj.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_obj"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_obj</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.emit_sig_with_obj</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def emit_sig_with_obj(self):
+ # Python wrapper for regress_test_obj_emit_sig_with_obj()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_uint64.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_uint64.page
new file mode 100644
index 00000000..34fbfe39
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.emit_sig_with_uint64.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.emit_sig_with_uint64"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_emit_sig_with_uint64</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.emit_sig_with_uint64</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def emit_sig_with_uint64(self):
+ # Python wrapper for regress_test_obj_emit_sig_with_uint64()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.forced_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.forced_method.page
new file mode 100644
index 00000000..e4770525
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.forced_method.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.forced_method"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_forced_method</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.forced_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def forced_method(self):
+ # Python wrapper for regress_forced_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method.page
new file mode 100644
index 00000000..58c58e31
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.instance_method"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_instance_method</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.instance_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(int)
+def instance_method(self):
+ # Python wrapper for regress_test_obj_instance_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method_callback.page
new file mode 100644
index 00000000..d491fa61
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.instance_method_callback.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.instance_method_callback"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_instance_method_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.instance_method_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, Regress.TestCallback)
+@returns(none)
+def instance_method_callback(self, callback):
+ # Python wrapper for regress_test_obj_instance_method_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.null_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.null_out.page
new file mode 100644
index 00000000..a1c06605
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.null_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.null_out"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_null_out</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.null_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def null_out(obj):
+ # Python wrapper for regress_test_obj_null_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.page
new file mode 100644
index 00000000..1ded23c7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestObj</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_obj = Regress.TestObj(<link xref='Regress.TestObj-bare'>bare</link>=value, <link xref='Regress.TestObj-boxed'>boxed</link>=value, <link xref='Regress.TestObj-double'>double</link>=value, <link xref='Regress.TestObj-float'>float</link>=value, <link xref='Regress.TestObj-gtype'>gtype</link>=value, <link xref='Regress.TestObj-hash-table'>hash_table</link>=value, <link xref='Regress.TestObj-hash-table-old'>hash_table_old</link>=value, <link xref='Regress.TestObj-int'>int</link>=value, <link xref='Regress.TestObj-list'>list</link>=value, <link xref='Regress.TestObj-list-old'>list_old</link>=value, <link xref='Regress.TestObj-string'>string</link>=value) </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestObj</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.set_bare.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.set_bare.page
new file mode 100644
index 00000000..63acc894
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.set_bare.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.set_bare"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_set_bare</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GObject.Object</api:type>
+ <api:name>bare</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.set_bare</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, GObject.Object)
+@returns(none)
+def set_bare(self, bare):
+ # Python wrapper for regress_test_obj_set_bare()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>bare</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_inout_param.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_inout_param.page
new file mode 100644
index 00000000..3d32ba0b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_inout_param.page
@@ -0,0 +1,107 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_inout_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_inout_param</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.skip_inout_param</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, int, int, float, int, int, int, int)
+@returns(bool)
+def skip_inout_param(self, a, out_b, c, inout_d, out_sum, num1, num2):
+ # Python wrapper for regress_test_obj_skip_inout_param()
+</code></synopsis>
+
+
+ <p>Check that the out value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.TestObj"/>.</p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_out_param.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_out_param.page
new file mode 100644
index 00000000..58c5268b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_out_param.page
@@ -0,0 +1,107 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_out_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_out_param</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.skip_out_param</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, int, int, float, int, int, int, int)
+@returns(bool)
+def skip_out_param(self, a, out_b, c, inout_d, out_sum, num1, num2):
+ # Python wrapper for regress_test_obj_skip_out_param()
+</code></synopsis>
+
+
+ <p>Check that the out value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.TestObj"/>.</p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_param.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_param.page
new file mode 100644
index 00000000..c02f3b95
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_param.page
@@ -0,0 +1,107 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_param"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_param</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.skip_param</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, int, int, float, int, int, int, int)
+@returns(bool)
+def skip_param(self, a, out_b, c, inout_d, out_sum, num1, num2):
+ # Python wrapper for regress_test_obj_skip_param()
+</code></synopsis>
+
+
+ <p>Check that a parameter is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.TestObj"/>.</p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val.page
new file mode 100644
index 00000000..2aadb427
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val.page
@@ -0,0 +1,107 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_return_val"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_return_val</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_b</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>c</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>inout_d</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>out_sum</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num1</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>num2</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.skip_return_val</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, int, int, float, int, int, int, int)
+@returns(bool)
+def skip_return_val(self, a, out_b, c, inout_d, out_sum, num1, num2):
+ # Python wrapper for regress_test_obj_skip_return_val()
+</code></synopsis>
+
+
+ <p>Check that the return value is skipped</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>out_b</code></title>
+<p>A return value.</p>
+</item>
+<item>
+<title><code>c</code></title>
+<p>Other parameter.</p>
+</item>
+<item>
+<title><code>inout_d</code></title>
+<p>Will be incremented.</p>
+</item>
+<item>
+<title><code>out_sum</code></title>
+<p>Return value.</p>
+</item>
+<item>
+<title><code>num1</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>num2</code></title>
+<p>Number.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val_no_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val_no_out.page
new file mode 100644
index 00000000..f0c50f5f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.skip_return_val_no_out.page
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.skip_return_val_no_out"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_skip_return_val_no_out</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.skip_return_val_no_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, int)
+@returns(bool)
+def skip_return_val_no_out(self, a):
+ # Python wrapper for regress_test_obj_skip_return_val_no_out()
+</code></synopsis>
+
+
+ <p>Check that the return value is skipped. Succeed if a is nonzero, otherwise
+raise an error.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>a <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>a</code></title>
+<p>Parameter.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method.page
new file mode 100644
index 00000000..67510263
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.static_method"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>float</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_static_method</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.static_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(float)
+def static_method(x):
+ # Python wrapper for regress_test_obj_static_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method_callback.page
new file mode 100644
index 00000000..4d97f31f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.static_method_callback.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.static_method_callback"
+ type="topic"
+ style="function"
+ 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="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_static_method_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.static_method_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallback)
+@returns(none)
+def static_method_callback(callback):
+ # Python wrapper for regress_test_obj_static_method_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_0.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_0.page
new file mode 100644
index 00000000..4cc806d4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_0.page
@@ -0,0 +1,95 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.torture_signature_0"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_torture_signature_0</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.torture_signature_0</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, int, float, int, unicode, int, int)
+@returns(none)
+def torture_signature_0(self, x, y, z, foo, q, m):
+ # Python wrapper for regress_test_obj_torture_signature_0()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_1.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_1.page
new file mode 100644
index 00000000..7ccc1327
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestObj.torture_signature_1.page
@@ -0,0 +1,99 @@
+<?xml version="1.0"?>
+<page id="Regress.TestObj.torture_signature_1"
+ type="topic"
+ style="method"
+ 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="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_obj_torture_signature_1</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestObj.torture_signature_1</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj, int, float, int, unicode, int, int)
+@returns(bool)
+def torture_signature_1(self, x, y, z, foo, q, m):
+ # Python wrapper for regress_test_obj_torture_signature_1()
+</code></synopsis>
+
+
+ <p>This function throws an error if m is odd.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.page
new file mode 100644
index 00000000..858e58a8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.TestOtherError"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestOtherError</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestOtherError.CODE1</code></title>
+
+</item>
+<item>
+<title><code>TestOtherError.CODE2</code></title>
+
+</item>
+<item>
+<title><code>TestOtherError.CODE3</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.quark.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.quark.page
new file mode 100644
index 00000000..341e774e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestOtherError.quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestOtherError.quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_unconventional_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.quark</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Quark)
+def quark():
+ # Python wrapper for regress_test_unconventional_error_quark()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateEnum.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateEnum.page
new file mode 100644
index 00000000..66b477d2
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateEnum.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestPrivateEnum"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestPrivateEnum</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateStruct.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateStruct.page
new file mode 100644
index 00000000..7b1309da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestPrivateStruct.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestPrivateStruct"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestPrivateStruct</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestReferenceEnum.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestReferenceEnum.page
new file mode 100644
index 00000000..2c8b1abb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestReferenceEnum.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestReferenceEnum"
+ type="topic"
+ style="enum"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="enum" type="guide"/>
+
+ </info>
+ <title>Regress.TestReferenceEnum</title>
+
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>TestReferenceEnum.0</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.1</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.2</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.3</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.4</code></title>
+
+</item>
+<item>
+<title><code>TestReferenceEnum.5</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.const_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.const_return.page
new file mode 100644
index 00000000..499a0475
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.const_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.const_return"
+ type="topic"
+ style="function"
+ 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.TestSimpleBoxedA" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_const_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA.const_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns(Regress.TestSimpleBoxedA)
+def const_return():
+ # Python wrapper for regress_test_simple_boxed_a_const_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.copy.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.copy.page
new file mode 100644
index 00000000..5e3fc24d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.copy.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.copy"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_copy</api:name>
+ <api:arg>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA.copy</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestSimpleBoxedA)
+@returns(Regress.TestSimpleBoxedA)
+def copy(self):
+ # Python wrapper for regress_test_simple_boxed_a_copy()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.equals.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.equals.page
new file mode 100644
index 00000000..a9ae5b2f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.equals.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA.equals"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_a_equals</api:name>
+ <api:arg>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestSimpleBoxedA</api:type>
+ <api:name>other_a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA.equals</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestSimpleBoxedA, Regress.TestSimpleBoxedA)
+@returns(bool)
+def equals(self, other_a):
+ # Python wrapper for regress_test_simple_boxed_a_equals()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>other_a</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.page
new file mode 100644
index 00000000..9117ddb9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedA.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedA"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleBoxedA</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.copy.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.copy.page
new file mode 100644
index 00000000..999c8500
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.copy.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedB.copy"
+ type="topic"
+ style="method"
+ 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.TestSimpleBoxedB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.TestSimpleBoxedB</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_boxed_b_copy</api:name>
+ <api:arg>
+ <api:type>Regress.TestSimpleBoxedB</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSimpleBoxedB.copy</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestSimpleBoxedB)
+@returns(Regress.TestSimpleBoxedB)
+def copy(self):
+ # Python wrapper for regress_test_simple_boxed_b_copy()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.page
new file mode 100644
index 00000000..7ecc623e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleBoxedB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleBoxedB"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleBoxedB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleCallback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleCallback.page
new file mode 100644
index 00000000..f8157820
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSimpleCallback.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSimpleCallback"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestSimpleCallback</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.clone.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.clone.page
new file mode 100644
index 00000000..cb2ea92f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.clone.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA.clone"
+ type="topic"
+ style="method"
+ 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.TestStructA" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_a_clone</api:name>
+ <api:arg>
+ <api:type>Regress.TestStructA</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestStructA</api:type>
+ <api:name>a_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestStructA.clone</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestStructA, Regress.TestStructA)
+@returns(none)
+def clone(self, a_out):
+ # Python wrapper for regress_test_struct_a_clone()
+</code></synopsis>
+
+
+ <p>Make a copy of a RegressTestStructA</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>the structure</p>
+</item>
+<item>
+<title><code>a_out</code></title>
+<p>the cloned structure</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.page
new file mode 100644
index 00000000..a6a98173
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructA</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.parse.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.parse.page
new file mode 100644
index 00000000..bfd3189d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructA.parse.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructA.parse"
+ type="topic"
+ style="function"
+ 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.TestStructA" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_a_parse</api:name>
+ <api:arg>
+ <api:type>Regress.TestStructA</api:type>
+ <api:name>a_out</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>string</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestStructA.parse</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestStructA, unicode)
+@returns(none)
+def parse(a_out, string):
+ # Python wrapper for regress_test_struct_a_parse()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>a_out</code></title>
+<p>the structure that is to be filled</p>
+</item>
+<item>
+<title><code>string</code></title>
+<p>ignored</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.clone.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.clone.page
new file mode 100644
index 00000000..ea78efdb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.clone.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructB.clone"
+ type="topic"
+ style="method"
+ 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.TestStructB" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_b_clone</api:name>
+ <api:arg>
+ <api:type>Regress.TestStructB</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestStructB</api:type>
+ <api:name>b_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestStructB.clone</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestStructB, Regress.TestStructB)
+@returns(none)
+def clone(self, b_out):
+ # Python wrapper for regress_test_struct_b_clone()
+</code></synopsis>
+
+
+ <p>Make a copy of a RegressTestStructB</p>
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+<p>the structure</p>
+</item>
+<item>
+<title><code>b_out</code></title>
+<p>the cloned structure</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.page
new file mode 100644
index 00000000..21d86261
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructB.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructB"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructB</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructC.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructC.page
new file mode 100644
index 00000000..6bd58122
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructC.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructC"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructC</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructD.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructD.page
new file mode 100644
index 00000000..aa9f131c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructD.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructD"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructD</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE.page
new file mode 100644
index 00000000..b931c367
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructE"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructE</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE__some_union__union.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE__some_union__union.page
new file mode 100644
index 00000000..3b81e621
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructE__some_union__union.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructE__some_union__union"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructE__some_union__union</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructF.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructF.page
new file mode 100644
index 00000000..cfb434b4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructF.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructF"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructF</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.frob.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.frob.page
new file mode 100644
index 00000000..8f9e2888
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.frob.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructFixedArray.frob"
+ type="topic"
+ style="method"
+ 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.TestStructFixedArray" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_struct_fixed_array_frob</api:name>
+ <api:arg>
+ <api:type>Regress.TestStructFixedArray</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestStructFixedArray.frob</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestStructFixedArray)
+@returns(none)
+def frob(self):
+ # Python wrapper for regress_test_struct_fixed_array_frob()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.page
new file mode 100644
index 00000000..db6e7893
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestStructFixedArray.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestStructFixedArray"
+ type="guide"
+ style="record"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="record" type="guide"/>
+
+ </info>
+ <title>Regress.TestStructFixedArray</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.instance_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.instance_method.page
new file mode 100644
index 00000000..9806d282
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.instance_method.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.instance_method"
+ type="topic"
+ style="method"
+ 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.TestSubObj" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_instance_method</api:name>
+ <api:arg>
+ <api:type>Regress.TestSubObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSubObj.instance_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestSubObj)
+@returns(int)
+def instance_method(self):
+ # Python wrapper for regress_test_sub_obj_instance_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.page
new file mode 100644
index 00000000..b1dc19b1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.page
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestSubObj</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_sub_obj = Regress.TestSubObj() </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestObj</code>
+ <item>
+ <code>Regress.TestSubObj</code>
+ </item>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.unset_bare.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.unset_bare.page
new file mode 100644
index 00000000..2b548390
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestSubObj.unset_bare.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.TestSubObj.unset_bare"
+ type="topic"
+ style="method"
+ 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.TestSubObj" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_sub_obj_unset_bare</api:name>
+ <api:arg>
+ <api:type>Regress.TestSubObj</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestSubObj.unset_bare</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestSubObj)
+@returns(none)
+def unset_bare(self):
+ # Python wrapper for regress_test_sub_obj_unset_bare()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestTypeGUInt64.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestTypeGUInt64.page
new file mode 100644
index 00000000..e0a7bc09
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestTypeGUInt64.page
@@ -0,0 +1,25 @@
+<?xml version="1.0"?>
+<page id="Regress.TestTypeGUInt64"
+ type="topic"
+ style="default"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="default" type="guide"/>
+
+ </info>
+ <title>Regress.TestTypeGUInt64</title>
+
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x-testbool.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x-testbool.page
new file mode 100644
index 00000000..00c168bc
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x-testbool.page
@@ -0,0 +1,29 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x-testbool"
+ type="topic"
+ style="property"
+ 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.TestWi8021x" group="property" type="guide"/>
+ <title type="link" role="topic">testbool</title>
+
+ </info>
+ <title>Regress.TestWi8021x:testbool</title>
+
+<synopsis><code mime="text/x-python">
+"testbool" bool : Read / Write
+</code></synopsis>
+
+
+
+
+
+
+
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.get_testbool.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.get_testbool.page
new file mode 100644
index 00000000..cd83b9da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.get_testbool.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.get_testbool"
+ type="topic"
+ style="method"
+ 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.TestWi8021x" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_get_testbool</api:name>
+ <api:arg>
+ <api:type>Regress.TestWi8021x</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestWi8021x.get_testbool</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestWi8021x)
+@returns(bool)
+def get_testbool(self):
+ # Python wrapper for regress_test_wi_802_1x_get_testbool()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.page
new file mode 100644
index 00000000..aef03874
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.page
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x"
+ type="guide"
+ style="class"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="class" type="guide"/>
+
+ </info>
+ <title>Regress.TestWi8021x</title>
+
+ <synopsis><code>
+from gi.repository import Regress
+
+test_wi8021x = Regress.TestWi8021x(<link xref='Regress.TestWi8021x-testbool'>testbool</link>=value) </code></synopsis>
+
+
+
+
+
+
+
+ <synopsis>
+ <title>Hierarchy</title>
+ <tree>
+ <item>
+ <code>GObject.Object</code>
+ <item>
+ <code>Regress.TestWi8021x</code>
+ </item>
+ </item>
+ </tree>
+ </synopsis>
+
+
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="method" style="linklist">
+ <title>Methods</title>
+ </links>
+ <links type="topic" ui:expanded="true"
+ api:type="function" api:mime="text/python"
+ groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="property" style="linklist">
+ <title>Properties</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="signal" style="linklist">
+ <title>Signals</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="vfunc" style="linklist">
+ <title>Virtual functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.set_testbool.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.set_testbool.page
new file mode 100644
index 00000000..59dbbd94
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.set_testbool.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.set_testbool"
+ type="topic"
+ style="method"
+ 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.TestWi8021x" group="method" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_set_testbool</api:name>
+ <api:arg>
+ <api:type>Regress.TestWi8021x</api:type>
+ <api:name>self</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>bool</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestWi8021x.set_testbool</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestWi8021x, bool)
+@returns(none)
+def set_testbool(self, v):
+ # Python wrapper for regress_test_wi_802_1x_set_testbool()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>self</code></title>
+
+</item>
+<item>
+<title><code>v</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.static_method.page b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.static_method.page
new file mode 100644
index 00000000..d2d83e36
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.TestWi8021x.static_method.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.TestWi8021x.static_method"
+ type="topic"
+ style="function"
+ 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.TestWi8021x" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_wi_802_1x_static_method</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Regress.TestWi8021x.static_method</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def static_method(x):
+ # Python wrapper for regress_test_wi_802_1x_static_method()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.aliased_caller_alloc.page b/tests/scanner/Regress-1.0-Python-expected/Regress.aliased_caller_alloc.page
new file mode 100644
index 00000000..e210a976
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.aliased_caller_alloc.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.aliased_caller_alloc"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_aliased_caller_alloc</api:name>
+ <api:arg>
+ <api:type>Regress.AliasedTestBoxed</api:type>
+ <api:name>boxed</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.aliased_caller_alloc</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AliasedTestBoxed)
+@returns(none)
+def aliased_caller_alloc(boxed):
+ # Python wrapper for regress_aliased_caller_alloc()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>boxed</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_attribute_func.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_attribute_func.page
new file mode 100644
index 00000000..edee18bf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_attribute_func.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_attribute_func"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_annotation_attribute_func</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationObject</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_attribute_func</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationObject, unicode)
+@returns(int)
+def annotation_attribute_func(object, data):
+ # Python wrapper for regress_annotation_attribute_func()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+<p>A <link xref="Regress.AnnotationObject"/>.</p>
+</item>
+<item>
+<title><code>data</code></title>
+<p>Some data.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_custom_destroy.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_custom_destroy.page
new file mode 100644
index 00000000..860107f1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_custom_destroy.page
@@ -0,0 +1,64 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_custom_destroy"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_custom_destroy</api:name>
+ <api:arg>
+ <api:type>Regress.AnnotationCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.AnnotationNotifyFunc</api:type>
+ <api:name>destroy</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_custom_destroy</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.AnnotationCallback, Regress.AnnotationNotifyFunc, gpointer)
+@returns(none)
+def annotation_custom_destroy(callback, destroy, data):
+ # Python wrapper for regress_annotation_custom_destroy()
+</code></synopsis>
+
+
+ <p>Test messing up the heuristic of closure/destroy-notification
+detection, and fixing it via annotations.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+<p>Destroy notification</p>
+</item>
+<item>
+<title><code>destroy</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_get_source_file.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_get_source_file.page
new file mode 100644
index 00000000..51a2ce47
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_get_source_file.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_get_source_file"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>filename</api:type>
+ </api:returns>
+ <api:name>regress_annotation_get_source_file</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_get_source_file</title>
+
+<synopsis><code mime="text/x-python">
+@returns(filename)
+def annotation_get_source_file():
+ # Python wrapper for regress_annotation_get_source_file()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_init.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_init.page
new file mode 100644
index 00000000..16c7ebd8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_init.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_init"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_init</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>argc</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>argv</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_init</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [unicode])
+@returns(none)
+def annotation_init(argc, argv):
+ # Python wrapper for regress_annotation_init()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>argc</code></title>
+<p>The number of args.</p>
+</item>
+<item>
+<title><code>argv</code></title>
+<p>The arguments.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_invalid_regress_annotation.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_invalid_regress_annotation.page
new file mode 100644
index 00000000..58701043
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_invalid_regress_annotation.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_invalid_regress_annotation"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_invalid_regress_annotation</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_invalid_regress_annotation</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(none)
+def annotation_invalid_regress_annotation(foo):
+ # Python wrapper for regress_annotation_invalid_regress_annotation()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>foo</code></title>
+<p>some text (e.g. example) or else</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_ptr_array.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_ptr_array.page
new file mode 100644
index 00000000..62cfbf7b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_ptr_array.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_ptr_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_ptr_array</api:name>
+ <api:arg>
+ <api:type>[GObject.Value]</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_ptr_array</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([GObject.Value])
+@returns(none)
+def annotation_ptr_array(array):
+ # Python wrapper for regress_annotation_ptr_array()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+<p>the array</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_array.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_array.page
new file mode 100644
index 00000000..fa1908d1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_array.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_return_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_return_array</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_return_array</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns([unicode])
+def annotation_return_array(length):
+ # Python wrapper for regress_annotation_return_array()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>length</code></title>
+<p>Number of return values</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_filename.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_filename.page
new file mode 100644
index 00000000..4cbc4dbe
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_return_filename.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_return_filename"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>filename</api:type>
+ </api:returns>
+ <api:name>regress_annotation_return_filename</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_return_filename</title>
+
+<synopsis><code mime="text/x-python">
+@returns(filename)
+def annotation_return_filename():
+ # Python wrapper for regress_annotation_return_filename()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_set_source_file.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_set_source_file.page
new file mode 100644
index 00000000..6eb6e853
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_set_source_file.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_set_source_file"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_set_source_file</api:name>
+ <api:arg>
+ <api:type>filename</api:type>
+ <api:name>fname</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_set_source_file</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(filename)
+@returns(none)
+def annotation_set_source_file(fname):
+ # Python wrapper for regress_annotation_set_source_file()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>fname</code></title>
+<p>Source file</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_space_after_comment_bug631690.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_space_after_comment_bug631690.page
new file mode 100644
index 00000000..00154848
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_space_after_comment_bug631690.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_space_after_comment_bug631690"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_space_after_comment_bug631690</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_space_after_comment_bug631690</title>
+
+<synopsis><code mime="text/x-python">
+@returns(none)
+def annotation_space_after_comment_bug631690():
+ # Python wrapper for regress_annotation_space_after_comment_bug631690()
+</code></synopsis>
+
+
+ <p>Explicitly test having a space after the ** here.</p>
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_array_length.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_array_length.page
new file mode 100644
index 00000000..c7d24096
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_array_length.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_array_length"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_array_length</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_properties</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>properties</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_string_array_length</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [unicode])
+@returns(none)
+def annotation_string_array_length(n_properties, properties):
+ # Python wrapper for regress_annotation_string_array_length()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_properties</code></title>
+
+</item>
+<item>
+<title><code>properties</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated.page
new file mode 100644
index 00000000..765658c0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_zero_terminated"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_zero_terminated</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_string_zero_terminated</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def annotation_string_zero_terminated():
+ # Python wrapper for regress_annotation_string_zero_terminated()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated_out.page
new file mode 100644
index 00000000..1a9e2a42
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_string_zero_terminated_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_string_zero_terminated_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_string_zero_terminated_out</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_string_zero_terminated_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def annotation_string_zero_terminated_out(out):
+ # Python wrapper for regress_annotation_string_zero_terminated_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_test_parsing_bug630862.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_test_parsing_bug630862.page
new file mode 100644
index 00000000..868c2d84
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_test_parsing_bug630862.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_test_parsing_bug630862"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_test_parsing_bug630862</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_test_parsing_bug630862</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GObject.Object)
+def annotation_test_parsing_bug630862():
+ # Python wrapper for regress_annotation_test_parsing_bug630862()
+</code></synopsis>
+
+
+ <p>See https://bugzilla.gnome.org/show_bug.cgi?id=630862</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page
new file mode 100644
index 00000000..223d1a2b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_transfer_floating.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_transfer_floating"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Object</api:type>
+ </api:returns>
+ <api:name>regress_annotation_transfer_floating</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_transfer_floating</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GObject.Object)
+def annotation_transfer_floating():
+ # Python wrapper for regress_annotation_transfer_floating()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_versioned.page b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_versioned.page
new file mode 100644
index 00000000..51d53cd8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.annotation_versioned.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.annotation_versioned"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_annotation_versioned</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.annotation_versioned</title>
+
+<synopsis><code mime="text/x-python">
+@returns(none)
+def annotation_versioned():
+ # Python wrapper for regress_annotation_versioned()
+</code></synopsis>
+
+
+
+
+
+ <p>Since 0.6</p>
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.atest_error_quark.page b/tests/scanner/Regress-1.0-Python-expected/Regress.atest_error_quark.page
new file mode 100644
index 00000000..9adb4a8b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.atest_error_quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.atest_error_quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_atest_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.atest_error_quark</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Quark)
+def atest_error_quark():
+ # Python wrapper for regress_atest_error_quark()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_async_ready_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_async_ready_callback.page
new file mode 100644
index 00000000..b2c0a69a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_async_ready_callback.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_async_ready_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_async_ready_callback</api:name>
+ <api:arg>
+ <api:type>Gio.Cancellable</api:type>
+ <api:name>cancellable</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Gio.AsyncReadyCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_async_ready_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Gio.Cancellable, Gio.AsyncReadyCallback, gpointer)
+@returns(none)
+def foo_async_ready_callback(cancellable, callback, user_data):
+ # Python wrapper for regress_foo_async_ready_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>cancellable</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_destroy_notify_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_destroy_notify_callback.page
new file mode 100644
index 00000000..873beb20
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_destroy_notify_callback.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_destroy_notify_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_destroy_notify_callback</api:name>
+ <api:arg>
+ <api:type>Regress.FooCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GLib.DestroyNotify</api:type>
+ <api:name>destroy</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_destroy_notify_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooCallback, gpointer, GLib.DestroyNotify)
+@returns(none)
+def foo_destroy_notify_callback(callback, data, destroy):
+ # Python wrapper for regress_foo_destroy_notify_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>data</code></title>
+
+</item>
+<item>
+<title><code>destroy</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_init.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_init.page
new file mode 100644
index 00000000..6b62ac46
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_init.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_init"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_foo_init</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.foo_init</title>
+
+<synopsis><code mime="text/x-python">
+@returns(int)
+def foo_init():
+ # Python wrapper for regress_foo_init()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_method_external_references.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_method_external_references.page
new file mode 100644
index 00000000..4be81792
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_method_external_references.page
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_method_external_references"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_method_external_references</api:name>
+ <api:arg>
+ <api:type>Utility.Object</api:type>
+ <api:name>object</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Utility.EnumType</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Utility.FlagType</api:type>
+ <api:name>f</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Utility.Struct</api:type>
+ <api:name>s</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_method_external_references</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Utility.Object, Utility.EnumType, Utility.FlagType, Utility.Struct)
+@returns(none)
+def foo_method_external_references(object, e, f, s):
+ # Python wrapper for regress_foo_method_external_references()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>object</code></title>
+
+</item>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>f</code></title>
+
+</item>
+<item>
+<title><code>s</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_not_a_constructor_new.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_not_a_constructor_new.page
new file mode 100644
index 00000000..0f9ba11a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_not_a_constructor_new.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_not_a_constructor_new"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooObject</api:type>
+ </api:returns>
+ <api:name>regress_foo_not_a_constructor_new</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.foo_not_a_constructor_new</title>
+
+<synopsis><code mime="text/x-python">
+@returns(Regress.FooObject)
+def foo_not_a_constructor_new():
+ # Python wrapper for regress_foo_not_a_constructor_new()
+</code></synopsis>
+
+
+ <p>This should be scanned as a top-level function, and shouldn't cause
+a "Can't find matching type for constructor" warning.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_array.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_array.page
new file mode 100644
index 00000000..d8cdbf50
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_array.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_array</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_array</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def foo_test_array():
+ # Python wrapper for regress_foo_test_array()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_param.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_param.page
new file mode 100644
index 00000000..fa7bc2e8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_param.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_char_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_char_param</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_const_char_param</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(none)
+def foo_test_const_char_param(param):
+ # Python wrapper for regress_foo_test_const_char_param()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_retval.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_retval.page
new file mode 100644
index 00000000..34ae3f9c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_char_retval.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_char_retval"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_char_retval</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_const_char_retval</title>
+
+<synopsis><code mime="text/x-python">
+@returns(unicode)
+def foo_test_const_char_retval():
+ # Python wrapper for regress_foo_test_const_char_retval()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_param.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_param.page
new file mode 100644
index 00000000..f32ff39e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_param.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_struct_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_struct_param</api:name>
+ <api:arg>
+ <api:type>Regress.FooStruct</api:type>
+ <api:name>param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_const_struct_param</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.FooStruct)
+@returns(none)
+def foo_test_const_struct_param(param):
+ # Python wrapper for regress_foo_test_const_struct_param()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_retval.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_retval.page
new file mode 100644
index 00000000..24337f06
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_const_struct_retval.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_const_struct_retval"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>Regress.FooStruct</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_const_struct_retval</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_const_struct_retval</title>
+
+<synopsis><code mime="text/x-python">
+@returns(Regress.FooStruct)
+def foo_test_const_struct_retval():
+ # Python wrapper for regress_foo_test_const_struct_retval()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array.page
new file mode 100644
index 00000000..8e242c5a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_string_array"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_string_array</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_string_array</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def foo_test_string_array(array):
+ # Python wrapper for regress_foo_test_string_array()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array_with_g.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array_with_g.page
new file mode 100644
index 00000000..92752bf4
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_string_array_with_g.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_string_array_with_g"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_string_array_with_g</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>array</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_string_array_with_g</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def foo_test_string_array_with_g(array):
+ # Python wrapper for regress_foo_test_string_array_with_g()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>array</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_qualifier.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_qualifier.page
new file mode 100644
index 00000000..2006eaef
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_qualifier.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_unsigned_qualifier"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_unsigned_qualifier</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>unsigned_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_unsigned_qualifier</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(none)
+def foo_test_unsigned_qualifier(unsigned_param):
+ # Python wrapper for regress_foo_test_unsigned_qualifier()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>unsigned_param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_type.page b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_type.page
new file mode 100644
index 00000000..c32efe88
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.foo_test_unsigned_type.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.foo_test_unsigned_type"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_foo_test_unsigned_type</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>unsigned_param</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.foo_test_unsigned_type</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(none)
+def foo_test_unsigned_type(unsigned_param):
+ # Python wrapper for regress_foo_test_unsigned_type()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>unsigned_param</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.func_obj_null_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.func_obj_null_in.page
new file mode 100644
index 00000000..1e737c0f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.func_obj_null_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.func_obj_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_func_obj_null_in</api:name>
+ <api:arg>
+ <api:type>Regress.TestObj</api:type>
+ <api:name>obj</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.func_obj_null_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestObj)
+@returns(none)
+def func_obj_null_in(obj):
+ # Python wrapper for regress_func_obj_null_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>obj</code></title>
+<p>A <link xref="Regress.TestObj"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.global_get_flags_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.global_get_flags_out.page
new file mode 100644
index 00000000..825fe351
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.global_get_flags_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.global_get_flags_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_global_get_flags_out</api:name>
+ <api:arg>
+ <api:type>Regress.TestFlags</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.global_get_flags_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestFlags)
+@returns(none)
+def global_get_flags_out(v):
+ # Python wrapper for regress_global_get_flags_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>v</code></title>
+<p>A flags value</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.has_parameter_named_attrs.page b/tests/scanner/Regress-1.0-Python-expected/Regress.has_parameter_named_attrs.page
new file mode 100644
index 00000000..51ae15f7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.has_parameter_named_attrs.page
@@ -0,0 +1,56 @@
+<?xml version="1.0"?>
+<page id="Regress.has_parameter_named_attrs"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_has_parameter_named_attrs</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[guint32]</api:type>
+ <api:name>attributes</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.has_parameter_named_attrs</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [guint32])
+@returns(none)
+def has_parameter_named_attrs(foo, attributes):
+ # Python wrapper for regress_has_parameter_named_attrs()
+</code></synopsis>
+
+
+ <p>This test case mirrors GnomeKeyringPasswordSchema from
+libgnome-keyring.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>foo</code></title>
+<p>some int</p>
+</item>
+<item>
+<title><code>attributes</code></title>
+<p>list of attributes</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.introspectable_via_alias.page b/tests/scanner/Regress-1.0-Python-expected/Regress.introspectable_via_alias.page
new file mode 100644
index 00000000..9fc5a47c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.introspectable_via_alias.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.introspectable_via_alias"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_introspectable_via_alias</api:name>
+ <api:arg>
+ <api:type>Regress.PtrArrayAlias</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.introspectable_via_alias</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.PtrArrayAlias)
+@returns(none)
+def introspectable_via_alias(data):
+ # Python wrapper for regress_introspectable_via_alias()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.set_abort_on_error.page b/tests/scanner/Regress-1.0-Python-expected/Regress.set_abort_on_error.page
new file mode 100644
index 00000000..ad81bff0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.set_abort_on_error.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.set_abort_on_error"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_set_abort_on_error</api:name>
+ <api:arg>
+ <api:type>bool</api:type>
+ <api:name>abort_on_error</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.set_abort_on_error</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(bool)
+@returns(none)
+def set_abort_on_error(abort_on_error):
+ # Python wrapper for regress_set_abort_on_error()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>abort_on_error</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_callback.page
new file mode 100644
index 00000000..536a02cd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_callback.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackArray</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackArray)
+@returns(int)
+def test_array_callback(callback):
+ # Python wrapper for regress_test_array_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_out_objects.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_out_objects.page
new file mode 100644
index 00000000..26ddf0ca
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_out_objects.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_out_objects"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_out_objects</api:name>
+ <api:arg>
+ <api:type>[Regress.TestObj]</api:type>
+ <api:name>objs</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_fixed_out_objects</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([Regress.TestObj])
+@returns(none)
+def test_array_fixed_out_objects(objs):
+ # Python wrapper for regress_test_array_fixed_out_objects()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>objs</code></title>
+<p>An array of <link xref="Regress.TestObj"/></p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_in.page
new file mode 100644
index 00000000..eb816b81
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_in.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_in</api:name>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_fixed_size_int_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([int])
+@returns(int)
+def test_array_fixed_size_int_in(ints):
+ # Python wrapper for regress_test_array_fixed_size_int_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>a list of 5 integers</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_out.page
new file mode 100644
index 00000000..39db1de3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_out</api:name>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_fixed_size_int_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([int])
+@returns(none)
+def test_array_fixed_size_int_out(ints):
+ # Python wrapper for regress_test_array_fixed_size_int_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>ints</code></title>
+<p>a list of 5 integers ranging from 0 to 4</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_return.page
new file mode 100644
index 00000000..30cfee8d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_fixed_size_int_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_fixed_size_int_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[int]</api:type>
+ </api:returns>
+ <api:name>regress_test_array_fixed_size_int_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_fixed_size_int_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([int])
+def test_array_fixed_size_int_return():
+ # Python wrapper for regress_test_array_fixed_size_int_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint16_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint16_in.page
new file mode 100644
index 00000000..62c1c4c5
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint16_in.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint16_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint16_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[gint16]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_gint16_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [gint16])
+@returns(int)
+def test_array_gint16_in(n_ints, ints):
+ # Python wrapper for regress_test_array_gint16_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint32_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint32_in.page
new file mode 100644
index 00000000..948b271b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint32_in.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint32_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint32</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint32_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[gint32]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_gint32_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [gint32])
+@returns(gint32)
+def test_array_gint32_in(n_ints, ints):
+ # Python wrapper for regress_test_array_gint32_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint64_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint64_in.page
new file mode 100644
index 00000000..6756e0d0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint64_in.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint64_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint64_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_gint64_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [int])
+@returns(int)
+def test_array_gint64_in(n_ints, ints):
+ # Python wrapper for regress_test_array_gint64_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint8_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint8_in.page
new file mode 100644
index 00000000..a7d70018
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gint8_in.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gint8_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gint8_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[gint8]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_gint8_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [gint8])
+@returns(int)
+def test_array_gint8_in(n_ints, ints):
+ # Python wrapper for regress_test_array_gint8_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gtype_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gtype_in.page
new file mode 100644
index 00000000..e56b5223
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_gtype_in.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_gtype_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_test_array_gtype_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_types</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[GType]</api:type>
+ <api:name>types</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_gtype_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [GType])
+@returns(unicode)
+def test_array_gtype_in(n_types, types):
+ # Python wrapper for regress_test_array_gtype_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_types</code></title>
+
+</item>
+<item>
+<title><code>types</code></title>
+<p>List of types</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_full_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_full_out.page
new file mode 100644
index 00000000..42cbb0f8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_full_out.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_full_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[int]</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_full_out</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_int_full_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns([int])
+def test_array_int_full_out(len):
+ # Python wrapper for regress_test_array_int_full_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>len</code></title>
+<p>length of the returned array.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_in.page
new file mode 100644
index 00000000..8e706e8f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_in.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_in</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_int_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [int])
+@returns(int)
+def test_array_int_in(n_ints, ints):
+ # Python wrapper for regress_test_array_int_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+
+</item>
+<item>
+<title><code>ints</code></title>
+<p>List of ints</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_inout.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_inout.page
new file mode 100644
index 00000000..b3f4448b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_inout.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_inout"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_inout</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_int_inout</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [int])
+@returns(none)
+def test_array_int_inout(n_ints, ints):
+ # Python wrapper for regress_test_array_int_inout()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+<p>the length of <code>ints</code></p>
+</item>
+<item>
+<title><code>ints</code></title>
+<p>a list of integers whose items will be increased by 1, except the first that will be dropped</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_none_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_none_out.page
new file mode 100644
index 00000000..21e5bac0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_none_out.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_none_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[int]</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_none_out</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_int_none_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns([int])
+def test_array_int_none_out(len):
+ # Python wrapper for regress_test_array_int_none_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>len</code></title>
+<p>length of the returned array.</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_in.page
new file mode 100644
index 00000000..9b3fc8b0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_in.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_null_in</api:name>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_int_null_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([int], int)
+@returns(none)
+def test_array_int_null_in(arr, len):
+ # Python wrapper for regress_test_array_int_null_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+<item>
+<title><code>len</code></title>
+<p>length</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_out.page
new file mode 100644
index 00000000..5b83b30a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_null_out.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_null_out</api:name>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>len</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_int_null_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([int], int)
+@returns(none)
+def test_array_int_null_out(arr, len):
+ # Python wrapper for regress_test_array_int_null_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+<item>
+<title><code>len</code></title>
+<p>length</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_out.page
new file mode 100644
index 00000000..b8f44411
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_array_int_out.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_array_int_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_array_int_out</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>n_ints</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>[int]</api:type>
+ <api:name>ints</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_array_int_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, [int])
+@returns(none)
+def test_array_int_out(n_ints, ints):
+ # Python wrapper for regress_test_array_int_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>n_ints</code></title>
+<p>the length of <code>ints</code></p>
+</item>
+<item>
+<title><code>ints</code></title>
+<p>a list of 5 integers, from 0 to 4 in consecutive order</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_async_ready_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_async_ready_callback.page
new file mode 100644
index 00000000..1dcf46cd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_async_ready_callback.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_async_ready_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_async_ready_callback</api:name>
+ <api:arg>
+ <api:type>Gio.AsyncReadyCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_async_ready_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Gio.AsyncReadyCallback)
+@returns(none)
+def test_async_ready_callback(callback):
+ # Python wrapper for regress_test_async_ready_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean.page
new file mode 100644
index 00000000..22d2ebfa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean</api:name>
+ <api:arg>
+ <api:type>bool</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_boolean</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(bool)
+@returns(bool)
+def test_boolean(in):
+ # Python wrapper for regress_test_boolean()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_false.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_false.page
new file mode 100644
index 00000000..877f5820
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_false.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean_false"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean_false</api:name>
+ <api:arg>
+ <api:type>bool</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_boolean_false</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(bool)
+@returns(bool)
+def test_boolean_false(in):
+ # Python wrapper for regress_test_boolean_false()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_true.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_true.page
new file mode 100644
index 00000000..3a1fc20a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_boolean_true.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_boolean_true"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_boolean_true</api:name>
+ <api:arg>
+ <api:type>bool</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_boolean_true</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(bool)
+@returns(bool)
+def test_boolean_true(in):
+ # Python wrapper for regress_test_boolean_true()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_full_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_full_return.page
new file mode 100644
index 00000000..4bf83f02
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_full_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_context_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo.Context</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_context_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_cairo_context_full_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns(cairo.Context)
+def test_cairo_context_full_return():
+ # Python wrapper for regress_test_cairo_context_full_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_none_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_none_in.page
new file mode 100644
index 00000000..a30b8d27
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_context_none_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_context_none_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_context_none_in</api:name>
+ <api:arg>
+ <api:type>cairo.Context</api:type>
+ <api:name>context</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_cairo_context_none_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(cairo.Context)
+@returns(none)
+def test_cairo_context_none_in(context):
+ # Python wrapper for regress_test_cairo_context_none_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>context</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_out.page
new file mode 100644
index 00000000..cfda6fdf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_full_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_full_out</api:name>
+ <api:arg>
+ <api:type>cairo.Surface</api:type>
+ <api:name>surface</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_cairo_surface_full_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(cairo.Surface)
+@returns(none)
+def test_cairo_surface_full_out(surface):
+ # Python wrapper for regress_test_cairo_surface_full_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>surface</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_return.page
new file mode 100644
index 00000000..5de20a93
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_full_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo.Surface</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_cairo_surface_full_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns(cairo.Surface)
+def test_cairo_surface_full_return():
+ # Python wrapper for regress_test_cairo_surface_full_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_in.page
new file mode 100644
index 00000000..af1b9489
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_none_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_none_in</api:name>
+ <api:arg>
+ <api:type>cairo.Surface</api:type>
+ <api:name>surface</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_cairo_surface_none_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(cairo.Surface)
+@returns(none)
+def test_cairo_surface_none_in(surface):
+ # Python wrapper for regress_test_cairo_surface_none_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>surface</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_return.page
new file mode 100644
index 00000000..98fa6eba
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_cairo_surface_none_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_cairo_surface_none_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>cairo.Surface</api:type>
+ </api:returns>
+ <api:name>regress_test_cairo_surface_none_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_cairo_surface_none_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns(cairo.Surface)
+def test_cairo_surface_none_return():
+ # Python wrapper for regress_test_cairo_surface_none_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback.page
new file mode 100644
index 00000000..3481fc13
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallback)
+@returns(int)
+def test_callback(callback):
+ # Python wrapper for regress_test_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_async.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_async.page
new file mode 100644
index 00000000..21dc7ee7
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_async.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_async"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_async</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_callback_async</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackUserData, gpointer)
+@returns(none)
+def test_callback_async(callback, user_data):
+ # Python wrapper for regress_test_callback_async()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify.page
new file mode 100644
index 00000000..86df7941
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify.page
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_destroy_notify"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_destroy_notify</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GLib.DestroyNotify</api:type>
+ <api:name>notify</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_callback_destroy_notify</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackUserData, gpointer, GLib.DestroyNotify)
+@returns(int)
+def test_callback_destroy_notify(callback, user_data, notify):
+ # Python wrapper for regress_test_callback_destroy_notify()
+</code></synopsis>
+
+
+ <p>Notified - callback persists until a DestroyNotify delegate
+is invoked.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>notify</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify_no_user_data.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify_no_user_data.page
new file mode 100644
index 00000000..05883e8c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_destroy_notify_no_user_data.page
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_destroy_notify_no_user_data"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_destroy_notify_no_user_data</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GLib.DestroyNotify</api:type>
+ <api:name>notify</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_callback_destroy_notify_no_user_data</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackUserData, GLib.DestroyNotify)
+@returns(int)
+def test_callback_destroy_notify_no_user_data(callback, notify):
+ # Python wrapper for regress_test_callback_destroy_notify_no_user_data()
+</code></synopsis>
+
+
+ <p>Adds a scope notified callback with no user data. This can invoke an error
+condition in bindings which needs to be tested.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>notify</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_async.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_async.page
new file mode 100644
index 00000000..d362cb86
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_async.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_thaw_async"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_thaw_async</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_callback_thaw_async</title>
+
+<synopsis><code mime="text/x-python">
+@returns(int)
+def test_callback_thaw_async():
+ # Python wrapper for regress_test_callback_thaw_async()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_notifications.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_notifications.page
new file mode 100644
index 00000000..485e69b8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_thaw_notifications.page
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_thaw_notifications"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_thaw_notifications</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_callback_thaw_notifications</title>
+
+<synopsis><code mime="text/x-python">
+@returns(int)
+def test_callback_thaw_notifications():
+ # Python wrapper for regress_test_callback_thaw_notifications()
+</code></synopsis>
+
+
+ <p>Invokes all callbacks installed by #test_callback_destroy_notify(),
+adding up their return values, and removes them, invoking the
+corresponding destroy notfications.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_user_data.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_user_data.page
new file mode 100644
index 00000000..8ec83767
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_callback_user_data.page
@@ -0,0 +1,60 @@
+<?xml version="1.0"?>
+<page id="Regress.test_callback_user_data"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_callback_user_data</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_callback_user_data</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackUserData, gpointer)
+@returns(int)
+def test_callback_user_data(callback, user_data):
+ # Python wrapper for regress_test_callback_user_data()
+</code></synopsis>
+
+
+ <p>Call - callback parameter persists for the duration of the method
+call and can be released on return.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure.page
new file mode 100644
index 00000000..d11a8a08
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_closure</api:name>
+ <api:arg>
+ <api:type>GObject.Closure</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_closure</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(GObject.Closure)
+@returns(int)
+def test_closure(closure):
+ # Python wrapper for regress_test_closure()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_one_arg.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_one_arg.page
new file mode 100644
index 00000000..f8d91f13
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_one_arg.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure_one_arg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_closure_one_arg</api:name>
+ <api:arg>
+ <api:type>GObject.Closure</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>arg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_closure_one_arg</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(GObject.Closure, int)
+@returns(int)
+def test_closure_one_arg(closure, arg):
+ # Python wrapper for regress_test_closure_one_arg()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+
+</item>
+<item>
+<title><code>arg</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_variant.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_variant.page
new file mode 100644
index 00000000..7d6a1ac3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_closure_variant.page
@@ -0,0 +1,59 @@
+<?xml version="1.0"?>
+<page id="Regress.test_closure_variant"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_closure_variant</api:name>
+ <api:arg>
+ <api:type>GObject.Closure</api:type>
+ <api:name>closure</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GLib.Variant</api:type>
+ <api:name>arg</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_closure_variant</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(GObject.Closure, GLib.Variant)
+@returns(GLib.Variant)
+def test_closure_variant(closure, arg):
+ # Python wrapper for regress_test_closure_variant()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>closure</code></title>
+<p>GClosure which takes one GVariant and returns a GVariant</p>
+</item>
+<item>
+<title><code>arg</code></title>
+<p>a GVariant passed as argument to <code>closure</code></p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_date_in_gvalue.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_date_in_gvalue.page
new file mode 100644
index 00000000..04289860
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_date_in_gvalue.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_date_in_gvalue"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Value</api:type>
+ </api:returns>
+ <api:name>regress_test_date_in_gvalue</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_date_in_gvalue</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GObject.Value)
+def test_date_in_gvalue():
+ # Python wrapper for regress_test_date_in_gvalue()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_def_error_quark.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_def_error_quark.page
new file mode 100644
index 00000000..95f40e3c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_def_error_quark.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_def_error_quark"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Quark</api:type>
+ </api:returns>
+ <api:name>regress_test_def_error_quark</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_def_error_quark</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Quark)
+def test_def_error_quark():
+ # Python wrapper for regress_test_def_error_quark()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_double.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_double.page
new file mode 100644
index 00000000..9a2b7866
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_double.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_double"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>float</api:type>
+ </api:returns>
+ <api:name>regress_test_double</api:name>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_double</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(float)
+@returns(float)
+def test_double(in):
+ # Python wrapper for regress_test_double()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_filename_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_filename_return.page
new file mode 100644
index 00000000..d267b55a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_filename_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_filename_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[filename]</api:type>
+ </api:returns>
+ <api:name>regress_test_filename_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_filename_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([filename])
+def test_filename_return():
+ # Python wrapper for regress_test_filename_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_float.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_float.page
new file mode 100644
index 00000000..9d362f8d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_float.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_float"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>float</api:type>
+ </api:returns>
+ <api:name>regress_test_float</api:name>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_float</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(float)
+@returns(float)
+def test_float(in):
+ # Python wrapper for regress_test_float()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_container_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_container_return.page
new file mode 100644
index 00000000..43990b2c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_garray_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_garray_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_garray_container_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_garray_container_return():
+ # Python wrapper for regress_test_garray_container_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_full_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_full_return.page
new file mode 100644
index 00000000..f0bfb6d3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_garray_full_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_garray_full_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_garray_full_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_garray_full_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_garray_full_return():
+ # Python wrapper for regress_test_garray_full_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gerror_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gerror_callback.page
new file mode 100644
index 00000000..5630526c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gerror_callback.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_gerror_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_gerror_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackGError)
+@returns(none)
+def test_gerror_callback(callback):
+ # Python wrapper for regress_test_gerror_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_container_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_container_return.page
new file mode 100644
index 00000000..ec91c452
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: unicode}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_container_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: unicode})
+def test_ghash_container_return():
+ # Python wrapper for regress_test_ghash_container_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_everything_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_everything_return.page
new file mode 100644
index 00000000..5356c011
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: unicode}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_everything_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: unicode})
+def test_ghash_everything_return():
+ # Python wrapper for regress_test_ghash_everything_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_in.page
new file mode 100644
index 00000000..5bbde33c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_gvalue_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_gvalue_in</api:name>
+ <api:arg>
+ <api:type>{unicode: GObject.Value}</api:type>
+ <api:name>hash</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_gvalue_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts({unicode: GObject.Value})
+@returns(none)
+def test_ghash_gvalue_in(hash):
+ # Python wrapper for regress_test_ghash_gvalue_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>hash</code></title>
+<p>the hash table returned by <link xref="Regress.test_ghash_gvalue_return"/>.</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_return.page
new file mode 100644
index 00000000..6d6a257f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_gvalue_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_gvalue_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: GObject.Value}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_gvalue_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_gvalue_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: GObject.Value})
+def test_ghash_gvalue_return():
+ # Python wrapper for regress_test_ghash_gvalue_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return.page
new file mode 100644
index 00000000..6bc643fb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nested_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: {unicode: unicode}}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nested_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_nested_everything_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: {unicode: unicode}})
+def test_ghash_nested_everything_return():
+ # Python wrapper for regress_test_ghash_nested_everything_return()
+</code></synopsis>
+
+
+ <p>Specify nested parameterized types directly with the (type ) annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return2.page
new file mode 100644
index 00000000..1cb34424
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nested_everything_return2.page
@@ -0,0 +1,43 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nested_everything_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: {unicode: unicode}}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nested_everything_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_nested_everything_return2</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: {unicode: unicode}})
+def test_ghash_nested_everything_return2():
+ # Python wrapper for regress_test_ghash_nested_everything_return2()
+</code></synopsis>
+
+
+ <p>Another way of specifying nested parameterized types: using the
+element-type annotation.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in.page
new file mode 100644
index 00000000..b1d295cf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_in</api:name>
+ <api:arg>
+ <api:type>{unicode: unicode}</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_nothing_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts({unicode: unicode})
+@returns(none)
+def test_ghash_nothing_in(in):
+ # Python wrapper for regress_test_ghash_nothing_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in2.page
new file mode 100644
index 00000000..df58bb6d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_in2.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_in2</api:name>
+ <api:arg>
+ <api:type>{unicode: unicode}</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_nothing_in2</title>
+
+<synopsis><code mime="text/x-python">
+@accepts({unicode: unicode})
+@returns(none)
+def test_ghash_nothing_in2(in):
+ # Python wrapper for regress_test_ghash_nothing_in2()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return.page
new file mode 100644
index 00000000..072fed9b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: unicode}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_nothing_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: unicode})
+def test_ghash_nothing_return():
+ # Python wrapper for regress_test_ghash_nothing_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return2.page
new file mode 100644
index 00000000..161d3f62
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_nothing_return2.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: unicode}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_nothing_return2</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: unicode})
+def test_ghash_nothing_return2():
+ # Python wrapper for regress_test_ghash_nothing_return2()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_in.page
new file mode 100644
index 00000000..ee3ed32e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_in</api:name>
+ <api:arg>
+ <api:type>{unicode: unicode}</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_null_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts({unicode: unicode})
+@returns(none)
+def test_ghash_null_in(in):
+ # Python wrapper for regress_test_ghash_null_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_out.page
new file mode 100644
index 00000000..683efc41
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_out</api:name>
+ <api:arg>
+ <api:type>{unicode: unicode}</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_null_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts({unicode: unicode})
+@returns(none)
+def test_ghash_null_out(out):
+ # Python wrapper for regress_test_ghash_null_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_return.page
new file mode 100644
index 00000000..ea516226
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ghash_null_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ghash_null_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>{unicode: unicode}</api:type>
+ </api:returns>
+ <api:name>regress_test_ghash_null_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_ghash_null_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns({unicode: unicode})
+def test_ghash_null_return():
+ # Python wrapper for regress_test_ghash_null_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_container_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_container_return.page
new file mode 100644
index 00000000..9d098baa
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_container_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_glist_container_return():
+ # Python wrapper for regress_test_glist_container_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_everything_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_everything_return.page
new file mode 100644
index 00000000..6b2d3704
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_everything_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_glist_everything_return():
+ # Python wrapper for regress_test_glist_everything_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in.page
new file mode 100644
index 00000000..4873a198
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_in</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_nothing_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_glist_nothing_in(in):
+ # Python wrapper for regress_test_glist_nothing_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in2.page
new file mode 100644
index 00000000..e28d3a89
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_in2.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_in2</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_nothing_in2</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_glist_nothing_in2(in):
+ # Python wrapper for regress_test_glist_nothing_in2()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return.page
new file mode 100644
index 00000000..b4b12c81
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_nothing_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_glist_nothing_return():
+ # Python wrapper for regress_test_glist_nothing_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return2.page
new file mode 100644
index 00000000..aab83e50
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_nothing_return2.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_nothing_return2</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_glist_nothing_return2():
+ # Python wrapper for regress_test_glist_nothing_return2()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_in.page
new file mode 100644
index 00000000..ac3f3d62
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_null_in</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_null_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_glist_null_in(in):
+ # Python wrapper for regress_test_glist_null_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_out.page
new file mode 100644
index 00000000..335d1b21
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_glist_null_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_glist_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_glist_null_out</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>out_list</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_glist_null_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_glist_null_out(out_list):
+ # Python wrapper for regress_test_glist_null_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out_list</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_container_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_container_return.page
new file mode 100644
index 00000000..702c635c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_container_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_container_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_container_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_container_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_gslist_container_return():
+ # Python wrapper for regress_test_gslist_container_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_everything_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_everything_return.page
new file mode 100644
index 00000000..95fd40c8
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_everything_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_everything_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_everything_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_everything_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_gslist_everything_return():
+ # Python wrapper for regress_test_gslist_everything_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in.page
new file mode 100644
index 00000000..534ac13e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_in</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_nothing_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_gslist_nothing_in(in):
+ # Python wrapper for regress_test_gslist_nothing_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in2.page
new file mode 100644
index 00000000..a7e0635b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_in2.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_in2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_in2</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_nothing_in2</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_gslist_nothing_in2(in):
+ # Python wrapper for regress_test_gslist_nothing_in2()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return.page
new file mode 100644
index 00000000..ff7d7e56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_nothing_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_gslist_nothing_return():
+ # Python wrapper for regress_test_gslist_nothing_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return2.page
new file mode 100644
index 00000000..cf0f67ab
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_nothing_return2.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_nothing_return2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_nothing_return2</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_nothing_return2</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_gslist_nothing_return2():
+ # Python wrapper for regress_test_gslist_nothing_return2()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_in.page
new file mode 100644
index 00000000..b0174663
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_null_in</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_null_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_gslist_null_in(in):
+ # Python wrapper for regress_test_gslist_null_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_out.page
new file mode 100644
index 00000000..24ef27f1
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gslist_null_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gslist_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_gslist_null_out</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>out_list</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_gslist_null_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_gslist_null_out(out_list):
+ # Python wrapper for regress_test_gslist_null_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out_list</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gtype.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gtype.page
new file mode 100644
index 00000000..38ffb442
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gtype.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gtype"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GType</api:type>
+ </api:returns>
+ <api:name>regress_test_gtype</api:name>
+ <api:arg>
+ <api:type>GType</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_gtype</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(GType)
+@returns(GType)
+def test_gtype(in):
+ # Python wrapper for regress_test_gtype()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_as.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_as.page
new file mode 100644
index 00000000..f4c4cd80
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_as.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_as"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_as</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gvariant_as</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Variant)
+def test_gvariant_as():
+ # Python wrapper for regress_test_gvariant_as()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_asv.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_asv.page
new file mode 100644
index 00000000..8357191f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_asv.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_asv"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_asv</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gvariant_asv</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Variant)
+def test_gvariant_asv():
+ # Python wrapper for regress_test_gvariant_asv()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_i.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_i.page
new file mode 100644
index 00000000..c0db4608
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_i.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_i"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_i</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gvariant_i</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Variant)
+def test_gvariant_i():
+ # Python wrapper for regress_test_gvariant_i()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_s.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_s.page
new file mode 100644
index 00000000..454fc8a9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_s.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_s"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_s</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gvariant_s</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Variant)
+def test_gvariant_s():
+ # Python wrapper for regress_test_gvariant_s()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_v.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_v.page
new file mode 100644
index 00000000..e8a6c00f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_gvariant_v.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_gvariant_v"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GLib.Variant</api:type>
+ </api:returns>
+ <api:name>regress_test_gvariant_v</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_gvariant_v</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GLib.Variant)
+def test_gvariant_v():
+ # Python wrapper for regress_test_gvariant_v()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_hash_table_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_hash_table_callback.page
new file mode 100644
index 00000000..2f8ebcb6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_hash_table_callback.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_hash_table_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_hash_table_callback</api:name>
+ <api:arg>
+ <api:type>{unicode: int}</api:type>
+ <api:name>data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestCallbackHashtable</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_hash_table_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts({unicode: int}, Regress.TestCallbackHashtable)
+@returns(none)
+def test_hash_table_callback(data, callback):
+ # Python wrapper for regress_test_hash_table_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>data</code></title>
+<p>GHashTable that gets passed to callback</p>
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_int.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int.page
new file mode 100644
index 00000000..d0398835
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_int</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_int</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def test_int(in):
+ # Python wrapper for regress_test_int()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_int16.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int16.page
new file mode 100644
index 00000000..7e995172
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int16.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int16"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint16</api:type>
+ </api:returns>
+ <api:name>regress_test_int16</api:name>
+ <api:arg>
+ <api:type>gint16</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_int16</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(gint16)
+@returns(gint16)
+def test_int16(in):
+ # Python wrapper for regress_test_int16()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_int32.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int32.page
new file mode 100644
index 00000000..03e5c07c
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int32.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int32"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint32</api:type>
+ </api:returns>
+ <api:name>regress_test_int32</api:name>
+ <api:arg>
+ <api:type>gint32</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_int32</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(gint32)
+@returns(gint32)
+def test_int32(in):
+ # Python wrapper for regress_test_int32()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_int64.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int64.page
new file mode 100644
index 00000000..645792cf
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int64.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int64"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_int64</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_int64</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def test_int64(in):
+ # Python wrapper for regress_test_int64()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_int8.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int8.page
new file mode 100644
index 00000000..c733d1bd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int8.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gint8</api:type>
+ </api:returns>
+ <api:name>regress_test_int8</api:name>
+ <api:arg>
+ <api:type>gint8</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_int8</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(gint8)
+@returns(gint8)
+def test_int8(in):
+ # Python wrapper for regress_test_int8()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_int_out_utf8.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int_out_utf8.page
new file mode 100644
index 00000000..f43f0bce
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int_out_utf8.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int_out_utf8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_int_out_utf8</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>length</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_int_out_utf8</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, unicode)
+@returns(none)
+def test_int_out_utf8(length, in):
+ # Python wrapper for regress_test_int_out_utf8()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>length</code></title>
+
+</item>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_int_value_arg.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int_value_arg.page
new file mode 100644
index 00000000..d7210b5e
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_int_value_arg.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_int_value_arg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_int_value_arg</api:name>
+ <api:arg>
+ <api:type>GObject.Value</api:type>
+ <api:name>v</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_int_value_arg</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(GObject.Value)
+@returns(int)
+def test_int_value_arg(v):
+ # Python wrapper for regress_test_int_value_arg()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>v</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_long.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_long.page
new file mode 100644
index 00000000..147cae22
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_long.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_long"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_long</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_long</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def test_long(in):
+ # Python wrapper for regress_test_long()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_callback.page
new file mode 100644
index 00000000..c195b821
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_callback.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multi_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_multi_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_multi_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallback)
+@returns(int)
+def test_multi_callback(callback):
+ # Python wrapper for regress_test_multi_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_double_args.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_double_args.page
new file mode 100644
index 00000000..7946d576
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_multi_double_args.page
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multi_double_args"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_multi_double_args</api:name>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>one</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>two</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_multi_double_args</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(float, float, float)
+@returns(none)
+def test_multi_double_args(in, one, two):
+ # Python wrapper for regress_test_multi_double_args()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>one</code></title>
+
+</item>
+<item>
+<title><code>two</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_multiline_doc_comments.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_multiline_doc_comments.page
new file mode 100644
index 00000000..25161388
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_multiline_doc_comments.page
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+<page id="Regress.test_multiline_doc_comments"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_multiline_doc_comments</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_multiline_doc_comments</title>
+
+<synopsis><code mime="text/x-python">
+@returns(none)
+def test_multiline_doc_comments():
+ # Python wrapper for regress_test_multiline_doc_comments()
+</code></synopsis>
+
+
+ <p>This is a function.</p><p>It has multiple lines in the documentation.</p><p>The sky is blue.</p><p>You will give me your credit card number.</p>
+
+
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_nested_parameter.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_nested_parameter.page
new file mode 100644
index 00000000..98c1fd3b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_nested_parameter.page
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<page id="Regress.test_nested_parameter"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_nested_parameter</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>a</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_nested_parameter</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(none)
+def test_nested_parameter(a):
+ # Python wrapper for regress_test_nested_parameter()
+</code></synopsis>
+
+
+ <p>&lt;informaltable&gt;
+ &lt;tgroup cols="3"&gt;
+ &lt;thead&gt;
+ &lt;row&gt;
+ &lt;entry&gt;Syntax&lt;/entry&gt;
+ &lt;entry&gt;Explanation&lt;/entry&gt;
+ &lt;entry&gt;Examples&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;/thead&gt;
+ &lt;tbody&gt;
+ &lt;row&gt;
+ &lt;entry&gt;rgb(@r, @g, @b)&lt;/entry&gt;
+ &lt;entry&gt;An opaque color; @r, @g, @b can be either integers between
+ 0 and 255 or percentages&lt;/entry&gt;
+ &lt;entry&gt;&lt;literallayout&gt;rgb(128, 10, 54)
+rgb(20%, 30%, 0%)&lt;/literallayout&gt;&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;row&gt;
+ &lt;entry&gt;rgba(@r, @g, @b, <code>a</code>)&lt;/entry&gt;
+ &lt;entry&gt;A translucent color; @r, @g, @b are as in the previous row,
+ <code>a</code> is a floating point number between 0 and 1&lt;/entry&gt;
+ &lt;entry&gt;&lt;literallayout&gt;rgba(255, 255, 0, 0.5)&lt;/literallayout&gt;&lt;/entry&gt;
+ &lt;/row&gt;
+ &lt;/tbody&gt;
+ &lt;/tgroup&gt;
+&lt;/informaltable&gt;</p><p>What we're testing here is that the scanner ignores the <code>a</code> nested inside XML.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>a</code></title>
+<p>An integer</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_null_gerror_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_null_gerror_callback.page
new file mode 100644
index 00000000..cdb1b928
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_null_gerror_callback.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_null_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_null_gerror_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_null_gerror_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackGError)
+@returns(none)
+def test_null_gerror_callback(callback):
+ # Python wrapper for regress_test_null_gerror_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_owned_gerror_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_owned_gerror_callback.page
new file mode 100644
index 00000000..f33b39ed
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_owned_gerror_callback.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_owned_gerror_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_owned_gerror_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestCallbackOwnedGError</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_owned_gerror_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestCallbackOwnedGError)
+@returns(none)
+def test_owned_gerror_callback(callback):
+ # Python wrapper for regress_test_owned_gerror_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_short.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_short.page
new file mode 100644
index 00000000..e2f45632
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_short.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_short"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gshort</api:type>
+ </api:returns>
+ <api:name>regress_test_short</api:name>
+ <api:arg>
+ <api:type>gshort</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_short</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(gshort)
+@returns(gshort)
+def test_short(in):
+ # Python wrapper for regress_test_short()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_simple_callback.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_simple_callback.page
new file mode 100644
index 00000000..a9fa29c0
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_simple_callback.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_simple_callback"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_simple_callback</api:name>
+ <api:arg>
+ <api:type>Regress.TestSimpleCallback</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_simple_callback</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestSimpleCallback)
+@returns(none)
+def test_simple_callback(callback):
+ # Python wrapper for regress_test_simple_callback()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>callback</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_size.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_size.page
new file mode 100644
index 00000000..7935c215
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_size.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_size"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gsize</api:type>
+ </api:returns>
+ <api:name>regress_test_size</api:name>
+ <api:arg>
+ <api:type>gsize</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_size</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(gsize)
+@returns(gsize)
+def test_size(in):
+ # Python wrapper for regress_test_size()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ssize.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ssize.page
new file mode 100644
index 00000000..47fe2cd3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ssize.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ssize"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gssize</api:type>
+ </api:returns>
+ <api:name>regress_test_ssize</api:name>
+ <api:arg>
+ <api:type>gssize</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ssize</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(gssize)
+@returns(gssize)
+def test_ssize(in):
+ # Python wrapper for regress_test_ssize()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in.page
new file mode 100644
index 00000000..1121a7da
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_in</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>arr</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_strv_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(bool)
+def test_strv_in(arr):
+ # Python wrapper for regress_test_strv_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>arr</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in_gvalue.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in_gvalue.page
new file mode 100644
index 00000000..fcffe1bb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_in_gvalue.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_in_gvalue"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Value</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_in_gvalue</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_strv_in_gvalue</title>
+
+<synopsis><code mime="text/x-python">
+@returns(GObject.Value)
+def test_strv_in_gvalue():
+ # Python wrapper for regress_test_strv_in_gvalue()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out.page
new file mode 100644
index 00000000..eea084cb
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_strv_out</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_strv_out():
+ # Python wrapper for regress_test_strv_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_c.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_c.page
new file mode 100644
index 00000000..c800fa0a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_c.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out_c"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out_c</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_strv_out_c</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_strv_out_c():
+ # Python wrapper for regress_test_strv_out_c()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_container.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_container.page
new file mode 100644
index 00000000..69f6c56f
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_out_container.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_out_container"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>[unicode]</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_out_container</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_strv_out_container</title>
+
+<synopsis><code mime="text/x-python">
+@returns([unicode])
+def test_strv_out_container():
+ # Python wrapper for regress_test_strv_out_container()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_outarg.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_outarg.page
new file mode 100644
index 00000000..3624f8a9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_strv_outarg.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_strv_outarg"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_strv_outarg</api:name>
+ <api:arg>
+ <api:type>[unicode]</api:type>
+ <api:name>retp</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_strv_outarg</title>
+
+<synopsis><code mime="text/x-python">
+@accepts([unicode])
+@returns(none)
+def test_strv_outarg(retp):
+ # Python wrapper for regress_test_strv_outarg()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>retp</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_timet.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_timet.page
new file mode 100644
index 00000000..51698280
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_timet.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_timet"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_timet</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_timet</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def test_timet(in):
+ # Python wrapper for regress_test_timet()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_0.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_0.page
new file mode 100644
index 00000000..7875a817
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_0.page
@@ -0,0 +1,87 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_0"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_0</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_torture_signature_0</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, float, int, unicode, int, int)
+@returns(none)
+def test_torture_signature_0(x, y, z, foo, q, m):
+ # Python wrapper for regress_test_torture_signature_0()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_1.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_1.page
new file mode 100644
index 00000000..6a499a56
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_1.page
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_1"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>bool</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_1</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_torture_signature_1</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, float, int, unicode, int, int)
+@returns(bool)
+def test_torture_signature_1(x, y, z, foo, q, m):
+ # Python wrapper for regress_test_torture_signature_1()
+</code></synopsis>
+
+
+ <p>This function throws an error if m is odd.</p>
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_2.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_2.page
new file mode 100644
index 00000000..01f77785
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_torture_signature_2.page
@@ -0,0 +1,111 @@
+<?xml version="1.0"?>
+<page id="Regress.test_torture_signature_2"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_torture_signature_2</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>x</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>Regress.TestCallbackUserData</api:type>
+ <api:name>callback</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>gpointer</api:type>
+ <api:name>user_data</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>GLib.DestroyNotify</api:type>
+ <api:name>notify</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>float</api:type>
+ <api:name>y</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>z</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>foo</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>q</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>m</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_torture_signature_2</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int, Regress.TestCallbackUserData, gpointer, GLib.DestroyNotify, float, int, unicode, int, int)
+@returns(none)
+def test_torture_signature_2(x, callback, user_data, notify, y, z, foo, q, m):
+ # Python wrapper for regress_test_torture_signature_2()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>x</code></title>
+
+</item>
+<item>
+<title><code>callback</code></title>
+
+</item>
+<item>
+<title><code>user_data</code></title>
+
+</item>
+<item>
+<title><code>notify</code></title>
+
+</item>
+<item>
+<title><code>y</code></title>
+
+</item>
+<item>
+<title><code>z</code></title>
+
+</item>
+<item>
+<title><code>foo</code></title>
+
+</item>
+<item>
+<title><code>q</code></title>
+
+</item>
+<item>
+<title><code>m</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint.page
new file mode 100644
index 00000000..f6943c0a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_uint</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_uint</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def test_uint(in):
+ # Python wrapper for regress_test_uint()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint16.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint16.page
new file mode 100644
index 00000000..5ace288d
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint16.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint16"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint16</api:type>
+ </api:returns>
+ <api:name>regress_test_uint16</api:name>
+ <api:arg>
+ <api:type>guint16</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_uint16</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(guint16)
+@returns(guint16)
+def test_uint16(in):
+ # Python wrapper for regress_test_uint16()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint32.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint32.page
new file mode 100644
index 00000000..084d6192
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint32.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint32"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint32</api:type>
+ </api:returns>
+ <api:name>regress_test_uint32</api:name>
+ <api:arg>
+ <api:type>guint32</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_uint32</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(guint32)
+@returns(guint32)
+def test_uint32(in):
+ # Python wrapper for regress_test_uint32()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint64.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint64.page
new file mode 100644
index 00000000..b2234a3a
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint64.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint64"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_uint64</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_uint64</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def test_uint64(in):
+ # Python wrapper for regress_test_uint64()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint8.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint8.page
new file mode 100644
index 00000000..94e367b6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_uint8.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_uint8"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>guint8</api:type>
+ </api:returns>
+ <api:name>regress_test_uint8</api:name>
+ <api:arg>
+ <api:type>guint8</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_uint8</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(guint8)
+@returns(guint8)
+def test_uint8(in):
+ # Python wrapper for regress_test_uint8()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ulong.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ulong.page
new file mode 100644
index 00000000..dc98e475
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ulong.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ulong"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>int</api:type>
+ </api:returns>
+ <api:name>regress_test_ulong</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ulong</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(int)
+def test_ulong(in):
+ # Python wrapper for regress_test_ulong()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_unichar.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_unichar.page
new file mode 100644
index 00000000..abc373ea
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_unichar.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_unichar"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_test_unichar</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_unichar</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(unicode)
+def test_unichar(in):
+ # Python wrapper for regress_test_unichar()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_unsigned_enum_param.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_unsigned_enum_param.page
new file mode 100644
index 00000000..eb7ff64b
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_unsigned_enum_param.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_unsigned_enum_param"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_test_unsigned_enum_param</api:name>
+ <api:arg>
+ <api:type>Regress.TestEnumUnsigned</api:type>
+ <api:name>e</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_unsigned_enum_param</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(Regress.TestEnumUnsigned)
+@returns(unicode)
+def test_unsigned_enum_param(e):
+ # Python wrapper for regress_test_unsigned_enum_param()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>e</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_ushort.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ushort.page
new file mode 100644
index 00000000..4bebadc3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_ushort.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_ushort"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>gushort</api:type>
+ </api:returns>
+ <api:name>regress_test_ushort</api:name>
+ <api:arg>
+ <api:type>gushort</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_ushort</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(gushort)
+@returns(gushort)
+def test_ushort(in):
+ # Python wrapper for regress_test_ushort()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_in.page
new file mode 100644
index 00000000..4d4ff1af
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_const_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_const_in</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_const_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(none)
+def test_utf8_const_in(in):
+ # Python wrapper for regress_test_utf8_const_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_return.page
new file mode 100644
index 00000000..7149eac9
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_const_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_const_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_const_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_const_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns(unicode)
+def test_utf8_const_return():
+ # Python wrapper for regress_test_utf8_const_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_inout.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_inout.page
new file mode 100644
index 00000000..28ecfc27
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_inout.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_inout"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_inout</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>inout</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_inout</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(none)
+def test_utf8_inout(inout):
+ # Python wrapper for regress_test_utf8_inout()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>inout</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_nonconst_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_nonconst_return.page
new file mode 100644
index 00000000..1d1be7dd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_nonconst_return.page
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_nonconst_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_nonconst_return</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_nonconst_return</title>
+
+<synopsis><code mime="text/x-python">
+@returns(unicode)
+def test_utf8_nonconst_return():
+ # Python wrapper for regress_test_utf8_nonconst_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_in.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_in.page
new file mode 100644
index 00000000..8074cafd
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_in.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_null_in"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_null_in</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>in</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_null_in</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(none)
+def test_utf8_null_in(in):
+ # Python wrapper for regress_test_utf8_null_in()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>in</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_out.page
new file mode 100644
index 00000000..da98d744
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_null_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_null_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_null_out</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>char_out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_null_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(none)
+def test_utf8_null_out(char_out):
+ # Python wrapper for regress_test_utf8_null_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>char_out</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out.page
new file mode 100644
index 00000000..3aa56f02
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out.page
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(none)
+def test_utf8_out(out):
+ # Python wrapper for regress_test_utf8_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_nonconst_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_nonconst_return.page
new file mode 100644
index 00000000..0b775cc3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_nonconst_return.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out_nonconst_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>unicode</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out_nonconst_return</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>out</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_out_nonconst_return</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode)
+@returns(unicode)
+def test_utf8_out_nonconst_return(out):
+ # Python wrapper for regress_test_utf8_out_nonconst_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out</code></title>
+<p>a copy of "second"</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_out.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_out.page
new file mode 100644
index 00000000..5a6bc2e6
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_utf8_out_out.page
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page id="Regress.test_utf8_out_out"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_utf8_out_out</api:name>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>out0</api:name>
+ </api:arg>
+ <api:arg>
+ <api:type>unicode</api:type>
+ <api:name>out1</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_utf8_out_out</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(unicode, unicode)
+@returns(none)
+def test_utf8_out_out(out0, out1):
+ # Python wrapper for regress_test_utf8_out_out()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>out0</code></title>
+<p>a copy of "first"</p>
+</item>
+<item>
+<title><code>out1</code></title>
+<p>a copy of "second"</p>
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_value_return.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_value_return.page
new file mode 100644
index 00000000..ef9f97e3
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_value_return.page
@@ -0,0 +1,51 @@
+<?xml version="1.0"?>
+<page id="Regress.test_value_return"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>GObject.Value</api:type>
+ </api:returns>
+ <api:name>regress_test_value_return</api:name>
+ <api:arg>
+ <api:type>int</api:type>
+ <api:name>i</api:name>
+ </api:arg>
+ </api:function>
+
+ </info>
+ <title>Index.test_value_return</title>
+
+<synopsis><code mime="text/x-python">
+@accepts(int)
+@returns(GObject.Value)
+def test_value_return(i):
+ # Python wrapper for regress_test_value_return()
+</code></synopsis>
+
+
+
+
+
+
+
+<terms>
+<item>
+<title><code>i</code></title>
+<p>an int</p>
+</item>
+<item>
+<title><code>Returns</code></title>
+{formatter.format(node, node.retval.doc)}
+</item>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/Regress.test_versioning.page b/tests/scanner/Regress-1.0-Python-expected/Regress.test_versioning.page
new file mode 100644
index 00000000..847a5c33
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/Regress.test_versioning.page
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<page id="Regress.test_versioning"
+ type="topic"
+ style="function"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+ <link xref="index" group="function" type="guide"/>
+ <api:function>
+ <api:returns>
+ <api:type>none</api:type>
+ </api:returns>
+ <api:name>regress_test_versioning</api:name>
+ </api:function>
+
+ </info>
+ <title>Index.test_versioning</title>
+
+<synopsis><code mime="text/x-python">
+@returns(none)
+def test_versioning():
+ # Python wrapper for regress_test_versioning()
+</code></synopsis>
+
+
+
+
+
+ <p>Since 1.32.1</p>
+
+
+<terms>
+</terms>
+
+
+
+</page>
diff --git a/tests/scanner/Regress-1.0-Python-expected/index.page b/tests/scanner/Regress-1.0-Python-expected/index.page
new file mode 100644
index 00000000..a5426d89
--- /dev/null
+++ b/tests/scanner/Regress-1.0-Python-expected/index.page
@@ -0,0 +1,32 @@
+<?xml version="1.0"?>
+<page id="index"
+ type="guide"
+ style="namespace"
+ xmlns="http://projectmallard.org/1.0/"
+ xmlns:api="http://projectmallard.org/experimental/api/"
+ xmlns:ui="http://projectmallard.org/1.0/ui/">
+ <info>
+
+
+ </info>
+ <title>Index</title>
+
+
+
+
+
+
+
+
+
+ <links type="topic" ui:expanded="true" groups="class" style="linklist">
+ <title>Classes</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="function" style="linklist">
+ <title>Functions</title>
+ </links>
+ <links type="topic" ui:expanded="true" groups="#first #default #last" style="linklist">
+ <title>Other</title>
+ </links>
+
+</page>
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 1adc5caf..0dadc59c 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -6,9 +6,8 @@ and/or use gtk-doc annotations. -->
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="GLib" version="2.0"/>
- <include name="GObject" version="2.0"/>
<include name="Gio" version="2.0"/>
+ <include name="Utility" version="1.0"/>
<include name="cairo" version="1.0"/>
<c:include name="regress.h"/>
<namespace name="Regress"
@@ -17,36 +16,1896 @@ and/or use gtk-doc annotations. -->
c:identifier-prefixes="Regress"
c:symbol-prefixes="regress">
<alias name="AliasedTestBoxed" c:type="RegressAliasedTestBoxed">
- <doc xml:whitespace="preserve">Typedef TestBoxed to test caller-allocates correctness</doc>
+ <doc xml:space="preserve">Typedef TestBoxed to test caller-allocates correctness</doc>
<type name="TestBoxed" c:type="RegressTestBoxed"/>
</alias>
+ <alias name="FooObjectCookie" c:type="RegressFooObjectCookie">
+ <type name="gpointer" c:type="gpointer"/>
+ </alias>
+ <alias name="FooXEvent" c:type="RegressFooXEvent">
+ <type name="gpointer" c:type="gpointer"/>
+ </alias>
<alias name="IntSet" c:type="RegressIntSet" introspectable="0">
- <doc xml:whitespace="preserve">Compatibility typedef, like telepathy-glib's TpIntSet</doc>
+ <doc xml:space="preserve">Compatibility typedef, like telepathy-glib's TpIntSet</doc>
<type name="Intset" c:type="RegressIntset"/>
</alias>
<alias name="PtrArrayAlias" c:type="RegressPtrArrayAlias">
- <doc xml:whitespace="preserve">Typedef'd GPtrArray for some reason</doc>
+ <doc xml:space="preserve">Typedef'd GPtrArray for some reason</doc>
<type name="GLib.PtrArray" c:type="GPtrArray"/>
</alias>
<alias name="TestTypeGUInt64" c:type="RegressTestTypeGUInt64">
<type name="guint64" c:type="guint64"/>
</alias>
<alias name="VaListAlias" c:type="RegressVaListAlias" introspectable="0">
- <doc xml:whitespace="preserve">Typedef'd va_list for additional reasons</doc>
+ <doc xml:space="preserve">Typedef'd va_list for additional reasons</doc>
<type name="va_list" c:type="va_list"/>
</alias>
+ <constant name="ANNOTATION_CALCULATED_DEFINE"
+ value="100"
+ c:type="REGRESS_ANNOTATION_CALCULATED_DEFINE">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="ANNOTATION_CALCULATED_LARGE"
+ value="10000000000UL"
+ c:type="REGRESS_ANNOTATION_CALCULATED_LARGE"
+ version="1.4">
+ <doc xml:space="preserve">Constant to define a calculated large value</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <constant name="ANNOTATION_CALCULATED_LARGE_DIV"
+ value="1000000UL"
+ c:type="REGRESS_ANNOTATION_CALCULATED_LARGE_DIV">
+ <doc xml:space="preserve">Constant to define a calculated large value</doc>
+ <type name="gint" c:type="gint"/>
+ </constant>
<enumeration name="ATestError"
c:type="RegressATestError"
glib:error-domain="regress-atest-error">
- <member name="code0" value="0" c:identifier="REGRESS_ATEST_ERROR_CODE0"/>
- <member name="code1" value="1" c:identifier="REGRESS_ATEST_ERROR_CODE1"/>
- <member name="code2" value="2" c:identifier="REGRESS_ATEST_ERROR_CODE2"/>
+ <member name="code0" value="0" c:identifier="REGRESS_ATEST_ERROR_CODE0">
+ </member>
+ <member name="code1" value="1" c:identifier="REGRESS_ATEST_ERROR_CODE1">
+ </member>
+ <member name="code2" value="2" c:identifier="REGRESS_ATEST_ERROR_CODE2">
+ </member>
</enumeration>
+ <bitfield name="AnnotationBitfield" c:type="RegressAnnotationBitfield">
+ <member name="foo" value="1" c:identifier="ANN_FLAG_FOO">
+ </member>
+ <member name="bar" value="2" c:identifier="ANN_FLAG_BAR">
+ </member>
+ </bitfield>
+ <callback name="AnnotationCallback" c:type="RegressAnnotationCallback">
+ <doc xml:space="preserve">This is a callback.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">array of ints</doc>
+ <type name="gint" c:type="const gint*"/>
+ </return-value>
+ <parameters>
+ <parameter name="in" transfer-ownership="none">
+ <doc xml:space="preserve">array of ints</doc>
+ <type name="gint" c:type="const gint*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="AnnotationForeachFunc"
+ c:type="RegressAnnotationForeachFunc">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </parameter>
+ <parameter name="item" transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none" closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="AnnotationListCallback"
+ c:type="RegressAnnotationListCallback">
+ <doc xml:space="preserve">This is a callback taking a list.</doc>
+ <return-value transfer-ownership="container">
+ <doc xml:space="preserve">list of strings</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ <parameters>
+ <parameter name="in" transfer-ownership="none">
+ <doc xml:space="preserve">list of strings</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </parameter>
+ </parameters>
+ </callback>
+ <callback name="AnnotationNotifyFunc" c:type="RegressAnnotationNotifyFunc">
+ <doc xml:space="preserve">This is a callback with a 'closure' argument that is not named
+'user_data' and hence has to be annotated.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="data" transfer-ownership="none" closure="0">
+ <doc xml:space="preserve">The user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <class name="AnnotationObject"
+ c:symbol-prefix="annotation_object"
+ c:type="RegressAnnotationObject"
+ parent="GObject.Object"
+ glib:type-name="RegressAnnotationObject"
+ glib:get-type="regress_annotation_object_get_type"
+ glib:type-struct="AnnotationObjectClass">
+ <attribute name="org.example.Test" value="cows"/>
+ <doc xml:space="preserve">This is an object used to test annotations.</doc>
+ <method name="allow_none"
+ c:identifier="regress_annotation_object_allow_none">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%NULL always</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="somearg" transfer-ownership="none" allow-none="1">
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="calleeowns"
+ c:identifier="regress_annotation_object_calleeowns">
+ <doc xml:space="preserve">This is a test for out arguments; GObject defaults to transfer</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="toown"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="GObject.Object" c:type="GObject**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="calleesowns"
+ c:identifier="regress_annotation_object_calleesowns">
+ <doc xml:space="preserve">This is a test for out arguments, one transferred, other not</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="toown1"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="GObject.Object" c:type="GObject**"/>
+ </parameter>
+ <parameter name="toown2"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="GObject.Object" c:type="GObject**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="compute_sum"
+ c:identifier="regress_annotation_object_compute_sum">
+ <doc xml:space="preserve">Test taking a zero-terminated array</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="nums" transfer-ownership="none">
+ <doc xml:space="preserve">Sequence of numbers</doc>
+ <array zero-terminated="0" c:type="int*">
+ <type name="gint" c:type="int"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="compute_sum_n"
+ c:identifier="regress_annotation_object_compute_sum_n">
+ <doc xml:space="preserve">Test taking an array with length parameter</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="nums" transfer-ownership="none">
+ <doc xml:space="preserve">Sequence of numbers that are zero-terminated</doc>
+ <array length="1" zero-terminated="0" c:type="int*">
+ <type name="gint" c:type="int"/>
+ </array>
+ </parameter>
+ <parameter name="n_nums" transfer-ownership="none">
+ <doc xml:space="preserve">Length of number array</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="compute_sum_nz"
+ c:identifier="regress_annotation_object_compute_sum_nz">
+ <doc xml:space="preserve">Test taking a zero-terminated array with length parameter</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="nums" transfer-ownership="none">
+ <doc xml:space="preserve">Sequence of numbers that are zero-terminated</doc>
+ <array length="1" zero-terminated="1" c:type="int*">
+ <type name="gint" c:type="int"/>
+ </array>
+ </parameter>
+ <parameter name="n_nums" transfer-ownership="none">
+ <doc xml:space="preserve">Length of number array</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="create_object"
+ c:identifier="regress_annotation_object_create_object">
+ <doc xml:space="preserve">Test returning a caller-owned object</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The object</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="do_not_use"
+ c:identifier="regress_annotation_object_do_not_use"
+ deprecated="Use regress_annotation_object_create_object() instead."
+ deprecated-version="0.12">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%NULL always</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="extra_annos"
+ c:identifier="regress_annotation_object_extra_annos">
+ <attribute name="org.foobar" value="testvalue"/>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="foreach" c:identifier="regress_annotation_object_foreach">
+ <doc xml:space="preserve">Test taking a call-scoped callback</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <doc xml:space="preserve">Callback to invoke</doc>
+ <type name="AnnotationForeachFunc"
+ c:type="RegressAnnotationForeachFunc"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none">
+ <doc xml:space="preserve">Callback user data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_hash"
+ c:identifier="regress_annotation_object_get_hash">
+ <doc xml:space="preserve">This is a test for returning a hash table mapping strings to
+objects.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">hash table</doc>
+ <type name="GLib.HashTable" c:type="GHashTable*">
+ <type name="utf8"/>
+ <type name="GObject.Object"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_objects"
+ c:identifier="regress_annotation_object_get_objects">
+ <doc xml:space="preserve">This is a test for returning a list of objects.
+The list itself should be freed, but not the internal objects,
+intentionally similar example to gtk_container_get_children</doc>
+ <return-value transfer-ownership="container">
+ <doc xml:space="preserve">list of objects</doc>
+ <type name="GLib.SList" c:type="GSList*">
+ <type name="AnnotationObject"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_strings"
+ c:identifier="regress_annotation_object_get_strings">
+ <doc xml:space="preserve">This is a test for returning a list of strings, where
+each string needs to be freed.</doc>
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">list of strings</doc>
+ <type name="GLib.List" c:type="GList*">
+ <type name="utf8"/>
+ </type>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="hidden_self"
+ c:identifier="regress_annotation_object_hidden_self">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="gpointer"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="in" c:identifier="regress_annotation_object_in">
+ <doc xml:space="preserve">This is a test for in arguments</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="inarg" transfer-ownership="none">
+ <doc xml:space="preserve">This is an argument test</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="inout" c:identifier="regress_annotation_object_inout">
+ <doc xml:space="preserve">This is a test for out arguments</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="inoutarg"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">This is an argument test</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="inout2" c:identifier="regress_annotation_object_inout2">
+ <doc xml:space="preserve">This is a second test for out arguments</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="inoutarg"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">This is an argument test</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="inout3" c:identifier="regress_annotation_object_inout3">
+ <doc xml:space="preserve">This is a 3th test for out arguments</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="inoutarg"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full"
+ allow-none="1">
+ <doc xml:space="preserve">This is an argument test</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="method" c:identifier="regress_annotation_object_method">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="notrans" c:identifier="regress_annotation_object_notrans">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">An object, not referenced</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="out" c:identifier="regress_annotation_object_out">
+ <doc xml:space="preserve">This is a test for out arguments</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">an int</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="outarg"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">This is an argument test</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="parse_args"
+ c:identifier="regress_annotation_object_parse_args">
+ <doc xml:space="preserve">Test taking a zero-terminated array with length parameter</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="argc"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Length of the argument vector</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ <parameter name="argv"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Argument vector</doc>
+ <array length="0" zero-terminated="1" c:type="char***">
+ <type name="utf8" c:type="char**"/>
+ </array>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_data"
+ c:identifier="regress_annotation_object_set_data">
+ <doc xml:space="preserve">Test taking a guchar * with a length.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">The data</doc>
+ <array length="1" zero-terminated="0" c:type="guchar*">
+ <type name="guint8" c:type="guchar"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_data2"
+ c:identifier="regress_annotation_object_set_data2">
+ <doc xml:space="preserve">Test taking a gchar * with a length.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">The data</doc>
+ <array length="1" zero-terminated="0" c:type="gchar*">
+ <type name="gint8"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="set_data3"
+ c:identifier="regress_annotation_object_set_data3">
+ <doc xml:space="preserve">Test taking a gchar * with a length, overriding the array element
+type.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">The data</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint8"/>
+ </array>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">Length of the data</doc>
+ <type name="gsize" c:type="gsize"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="string_out"
+ c:identifier="regress_annotation_object_string_out">
+ <doc xml:space="preserve">Test returning a string as an out parameter</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">some boolean</doc>
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="str_out"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">string return value</doc>
+ <type name="utf8" c:type="char**"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="use_buffer"
+ c:identifier="regress_annotation_object_use_buffer">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #GObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="bytes" transfer-ownership="none">
+ <type name="guint8" c:type="guchar*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="watch"
+ c:identifier="regress_annotation_object_watch"
+ shadowed-by="watch_full"
+ introspectable="0">
+ <doc xml:space="preserve">This is here just for the sake of being overriden by its
+regress_annotation_object_watch_full().</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="func" transfer-ownership="none" closure="1">
+ <doc xml:space="preserve">The callback</doc>
+ <type name="AnnotationForeachFunc"
+ c:type="RegressAnnotationForeachFunc"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none">
+ <doc xml:space="preserve">The callback data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="watch_full"
+ c:identifier="regress_annotation_object_watch_full"
+ shadows="watch">
+ <doc xml:space="preserve">Test overriding via the "Rename To" annotation.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressAnnotationObject</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="func"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <doc xml:space="preserve">The callback</doc>
+ <type name="AnnotationForeachFunc"
+ c:type="RegressAnnotationForeachFunc"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none">
+ <doc xml:space="preserve">The callback data</doc>
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy" transfer-ownership="none" scope="async">
+ <doc xml:space="preserve">Destroy notification</doc>
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="with_voidp"
+ c:identifier="regress_annotation_object_with_voidp">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <doc xml:space="preserve">Opaque pointer handle</doc>
+ <type name="gpointer" c:type="void*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="function-property"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="AnnotationCallback" c:type="gpointer"/>
+ </property>
+ <property name="string-property"
+ version="1.0"
+ deprecated="Use better-string-property instead"
+ deprecated-version="1.2"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">This is a property which is a string</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <property name="tab-property"
+ version="1.2"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <doc xml:space="preserve">This is a property annotation intentionally indented with a mix
+of tabs and strings to test the tab handling capabilities of the scanner.</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent_instance">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <glib:signal name="attribute-signal" when="last">
+ <doc xml:space="preserve">This signal tests a signal with attributes.</doc>
+ <return-value transfer-ownership="full">
+ <attribute name="some.annotation.foo3" value="val3"/>
+ <doc xml:space="preserve">the return value</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="arg1" transfer-ownership="none">
+ <attribute name="some.annotation.foo1" value="val1"/>
+ <doc xml:space="preserve">a value</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ <parameter name="arg2" transfer-ownership="none">
+ <attribute name="some.annotation.foo2" value="val2"/>
+ <doc xml:space="preserve">another value</doc>
+ <type name="utf8" c:type="gchar*"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="doc-empty-arg-parsing" when="last">
+ <doc xml:space="preserve">This signal tests an empty document argument (@arg1)</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="arg1" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="list-signal" when="last">
+ <doc xml:space="preserve">This is a signal which takes a list of strings, but it's not
+known by GObject as it's only marked as G_TYPE_POINTER</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="list" transfer-ownership="container">
+ <doc xml:space="preserve">a list of strings</doc>
+ <type name="GLib.List" c:type="gpointer">
+ <type name="utf8"/>
+ </type>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="string-signal"
+ when="last"
+ version="1.0"
+ deprecated="Use other-signal instead"
+ deprecated-version="1.2">
+ <doc xml:space="preserve">This is a signal which has a broken signal handler,
+it says it's pointer but it's actually a string.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="string" transfer-ownership="none">
+ <doc xml:space="preserve">a string</doc>
+ <type name="utf8" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="AnnotationObjectClass"
+ c:type="RegressAnnotationObjectClass"
+ glib:is-gtype-struct-for="AnnotationObject">
+ <field name="parent_class">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ </record>
+ <record name="AnnotationStruct" c:type="RegressAnnotationStruct">
+ <doc xml:space="preserve">This is a test of an array of object in an field of a struct.</doc>
+ <field name="objects" writable="1">
+ <array zero-terminated="0"
+ c:type="RegressAnnotationObject"
+ fixed-size="10">
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </array>
+ </field>
+ </record>
<constant name="DOUBLE_CONSTANT"
value="44.220000"
c:type="REGRESS_DOUBLE_CONSTANT">
<type name="gdouble" c:type="gdouble"/>
</constant>
+ <constant name="FOO_DEFINE_SHOULD_BE_EXPOSED"
+ value="should be exposed"
+ c:type="REGRESS_FOO_DEFINE_SHOULD_BE_EXPOSED">
+ <type name="utf8" c:type="gchar*"/>
+ </constant>
+ <constant name="FOO_PIE_IS_TASTY"
+ value="3.141590"
+ c:type="REGRESS_FOO_PIE_IS_TASTY">
+ <type name="gdouble" c:type="gdouble"/>
+ </constant>
+ <constant name="FOO_SUCCESS_INT"
+ value="4408"
+ c:type="REGRESS_FOO_SUCCESS_INT">
+ <type name="gint" c:type="gint"/>
+ </constant>
+ <enumeration name="FooASingle" c:type="RegressFooASingle">
+ <member name="foo_some_single_enum"
+ value="0"
+ c:identifier="REGRESS_FOO_SOME_SINGLE_ENUM">
+ </member>
+ </enumeration>
+ <enumeration name="FooAddressType" c:type="RegressFooAddressType">
+ <member name="invalid"
+ value="0"
+ c:identifier="REGRESS_FOO_ADDRESS_INVALID">
+ </member>
+ <member name="ipv4" value="1" c:identifier="REGRESS_FOO_ADDRESS_IPV4">
+ </member>
+ <member name="ipv6" value="2" c:identifier="REGRESS_FOO_ADDRESS_IPV6">
+ </member>
+ </enumeration>
+ <record name="FooBRect"
+ c:type="RegressFooBRect"
+ glib:type-name="RegressFooBRect"
+ glib:get-type="regress_foo_brect_get_type"
+ c:symbol-prefix="foo_brect">
+ <field name="x" writable="1">
+ <type name="gdouble" c:type="double"/>
+ </field>
+ <field name="y" writable="1">
+ <type name="gdouble" c:type="double"/>
+ </field>
+ <constructor name="new" c:identifier="regress_foo_brect_new">
+ <return-value transfer-ownership="full">
+ <type name="FooBRect" c:type="RegressFooBRect*"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gdouble" c:type="double"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <type name="gdouble" c:type="double"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="add" c:identifier="regress_foo_brect_add">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="b1" transfer-ownership="none">
+ <type name="FooBRect" c:type="RegressFooBRect*"/>
+ </instance-parameter>
+ <parameter name="b2" transfer-ownership="none">
+ <type name="FooBRect" c:type="RegressFooBRect*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
+ <union name="FooBUnion"
+ c:type="RegressFooBUnion"
+ glib:type-name="RegressFooBUnion"
+ glib:get-type="regress_foo_bunion_get_type"
+ c:symbol-prefix="foo_bunion">
+ <field name="type" writable="1">
+ <type name="gint" c:type="int"/>
+ </field>
+ <field name="v" writable="1">
+ <type name="gdouble" c:type="double"/>
+ </field>
+ <field name="rect" writable="1">
+ <type name="FooBRect" c:type="RegressFooBRect*"/>
+ </field>
+ <constructor name="new" c:identifier="regress_foo_bunion_new">
+ <return-value transfer-ownership="full">
+ <type name="FooBUnion" c:type="RegressFooBUnion*"/>
+ </return-value>
+ </constructor>
+ <method name="get_contained_type"
+ c:identifier="regress_foo_bunion_get_contained_type">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="bunion" transfer-ownership="none">
+ <type name="FooBUnion" c:type="RegressFooBUnion*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </union>
+ <record name="FooBoxed"
+ c:type="RegressFooBoxed"
+ glib:type-name="RegressFooBoxed"
+ glib:get-type="regress_foo_boxed_get_type"
+ c:symbol-prefix="foo_boxed">
+ <constructor name="new" c:identifier="regress_foo_boxed_new">
+ <return-value transfer-ownership="full">
+ <type name="FooBoxed" c:type="RegressFooBoxed*"/>
+ </return-value>
+ </constructor>
+ <method name="method" c:identifier="regress_foo_boxed_method">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="FooBoxed" c:type="RegressFooBoxed*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <class name="FooBuffer"
+ c:symbol-prefix="foo_buffer"
+ c:type="RegressFooBuffer"
+ parent="FooObject"
+ glib:type-name="RegressFooBuffer"
+ glib:get-type="regress_foo_buffer_get_type"
+ glib:type-struct="FooBufferClass">
+ <implements name="FooInterface"/>
+ <method name="some_method" c:identifier="regress_foo_buffer_some_method">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="buffer" transfer-ownership="none">
+ <type name="FooBuffer" c:type="RegressFooBuffer*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </class>
+ <record name="FooBufferClass"
+ c:type="RegressFooBufferClass"
+ disguised="1"
+ glib:is-gtype-struct-for="FooBuffer">
+ </record>
+ <callback name="FooCallback" c:type="RegressFooCallback">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="regress_foo" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </parameter>
+ <parameter name="b" transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ <record name="FooDBusData"
+ c:type="RegressFooDBusData"
+ glib:type-name="RegressFooDBusData"
+ glib:get-type="regress_foo_dbus_data_get_type"
+ c:symbol-prefix="foo_dbus_data">
+ <method name="method" c:identifier="regress_foo_dbus_data_method">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="dbusdata" transfer-ownership="none">
+ <type name="FooDBusData" c:type="RegressFooDBusData*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <enumeration name="FooEnumFullname" c:type="RegressFooEnumFullname">
+ <member name="one"
+ value="1"
+ c:identifier="REGRESS_FOO_ENUM_FULLNAME_ONE">
+ </member>
+ <member name="two"
+ value="2"
+ c:identifier="REGRESS_FOO_ENUM_FULLNAME_TWO">
+ </member>
+ <member name="three"
+ value="3"
+ c:identifier="REGRESS_FOO_ENUM_FULLNAME_THREE">
+ </member>
+ </enumeration>
+ <enumeration name="FooEnumNoType" c:type="RegressFooEnumNoType">
+ <member name="un" value="1" c:identifier="REGRESS_FOO_ENUM_UN">
+ </member>
+ <member name="deux" value="2" c:identifier="REGRESS_FOO_ENUM_DEUX">
+ </member>
+ <member name="trois" value="3" c:identifier="REGRESS_FOO_ENUM_TROIS">
+ </member>
+ <member name="neuf" value="9" c:identifier="REGRESS_FOO_ENUM_NEUF">
+ </member>
+ </enumeration>
+ <enumeration name="FooEnumType"
+ glib:type-name="RegressFooEnumType"
+ glib:get-type="regress_foo_enum_type_get_type"
+ c:type="RegressFooEnumType">
+ <member name="alpha"
+ value="0"
+ c:identifier="REGRESS_FOO_ENUM_ALPHA"
+ glib:nick="alpha">
+ </member>
+ <member name="beta"
+ value="1"
+ c:identifier="REGRESS_FOO_ENUM_BETA"
+ glib:nick="beta">
+ </member>
+ <member name="delta"
+ value="2"
+ c:identifier="REGRESS_FOO_ENUM_DELTA"
+ glib:nick="delta">
+ </member>
+ <function name="method" c:identifier="regress_foo_enum_type_method">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </return-value>
+ <parameters>
+ <parameter name="regress_foo_enum" transfer-ownership="none">
+ <type name="FooEnumType" c:type="RegressFooEnumType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="returnv" c:identifier="regress_foo_enum_type_returnv">
+ <return-value transfer-ownership="none">
+ <type name="FooEnumType" c:type="RegressFooEnumType"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </function>
+ </enumeration>
+ <enumeration name="FooError"
+ glib:type-name="RegressFooError"
+ glib:get-type="regress_foo_error_get_type"
+ c:type="RegressFooError"
+ glib:error-domain="regress_foo-error-quark">
+ <member name="good"
+ value="0"
+ c:identifier="REGRESS_FOO_ERROR_GOOD"
+ glib:nick="good">
+ </member>
+ <member name="bad"
+ value="1"
+ c:identifier="REGRESS_FOO_ERROR_BAD"
+ glib:nick="bad">
+ </member>
+ <member name="ugly"
+ value="2"
+ c:identifier="REGRESS_FOO_ERROR_UGLY"
+ glib:nick="ugly">
+ </member>
+ <function name="quark" c:identifier="regress_foo_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </enumeration>
+ <union name="FooEvent" c:type="RegressFooEvent">
+ <field name="type" writable="1">
+ <type name="gint" c:type="int"/>
+ </field>
+ <field name="any" writable="1">
+ <type name="FooEventAny" c:type="RegressFooEventAny"/>
+ </field>
+ <field name="expose" writable="1">
+ <type name="FooEventExpose" c:type="RegressFooEventExpose"/>
+ </field>
+ </union>
+ <record name="FooEventAny" c:type="RegressFooEventAny">
+ <field name="send_event" writable="1">
+ <type name="gint8" c:type="gint8"/>
+ </field>
+ </record>
+ <record name="FooEventExpose" c:type="RegressFooEventExpose">
+ <field name="send_event" writable="1">
+ <type name="gint8" c:type="gint8"/>
+ </field>
+ <field name="count" writable="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ </record>
+ <bitfield name="FooFlagsNoType" c:type="RegressFooFlagsNoType">
+ <member name="ett" value="1" c:identifier="REGRESS_FOO_FLAGS_ETT">
+ </member>
+ <member name="tva" value="2" c:identifier="REGRESS_FOO_FLAGS_TVA">
+ </member>
+ <member name="fyra" value="4" c:identifier="REGRESS_FOO_FLAGS_FYRA">
+ </member>
+ </bitfield>
+ <bitfield name="FooFlagsType"
+ glib:type-name="RegressFooFlagsType"
+ glib:get-type="regress_foo_flags_type_get_type"
+ c:type="RegressFooFlagsType">
+ <member name="first"
+ value="1"
+ c:identifier="REGRESS_FOO_FLAGS_FIRST"
+ glib:nick="first">
+ </member>
+ <member name="second"
+ value="2"
+ c:identifier="REGRESS_FOO_FLAGS_SECOND"
+ glib:nick="second">
+ </member>
+ <member name="third"
+ value="4"
+ c:identifier="REGRESS_FOO_FLAGS_THIRD"
+ glib:nick="third">
+ </member>
+ </bitfield>
+ <record name="FooForeignStruct"
+ c:type="RegressFooForeignStruct"
+ foreign="1">
+ <field name="regress_foo" writable="1">
+ <type name="gint" c:type="int"/>
+ </field>
+ <constructor name="new" c:identifier="regress_foo_foreign_struct_new">
+ <return-value transfer-ownership="full">
+ <type name="FooForeignStruct" c:type="RegressFooForeignStruct*"/>
+ </return-value>
+ </constructor>
+ <method name="copy" c:identifier="regress_foo_foreign_struct_copy">
+ <return-value transfer-ownership="full">
+ <type name="FooForeignStruct" c:type="RegressFooForeignStruct*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="original" transfer-ownership="none">
+ <type name="FooForeignStruct" c:type="RegressFooForeignStruct*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
+ <interface name="FooInterface"
+ c:symbol-prefix="foo_interface"
+ c:type="RegressFooInterface"
+ glib:type-name="RegressFooInterface"
+ glib:get-type="regress_foo_interface_get_type"
+ glib:type-struct="FooInterfaceIface">
+ <function name="static_method"
+ c:identifier="regress_foo_interface_static_method">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </function>
+ <virtual-method name="do_regress_foo" invoker="do_regress_foo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="FooInterface" c:type="RegressFooInterface*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="do_regress_foo"
+ c:identifier="regress_foo_interface_do_regress_foo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="iface" transfer-ownership="none">
+ <type name="FooInterface" c:type="RegressFooInterface*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="FooInterfaceIface"
+ c:type="RegressFooInterfaceIface"
+ glib:is-gtype-struct-for="FooInterface">
+ <field name="parent_iface">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="do_regress_foo">
+ <callback name="do_regress_foo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="FooInterface" c:type="RegressFooInterface*"/>
+ </parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <class name="FooObject"
+ c:symbol-prefix="foo_object"
+ c:type="RegressFooObject"
+ parent="GObject.Object"
+ glib:type-name="RegressFooObject"
+ glib:get-type="regress_foo_object_get_type"
+ glib:type-struct="FooObjectClass">
+ <implements name="FooInterface"/>
+ <constructor name="new" c:identifier="regress_foo_object_new">
+ <return-value transfer-ownership="full">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </return-value>
+ </constructor>
+ <constructor name="new_as_super"
+ c:identifier="regress_foo_object_new_as_super">
+ <return-value transfer-ownership="full">
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ </constructor>
+ <function name="a_global_method"
+ c:identifier="regress_foo_object_a_global_method">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="obj" transfer-ownership="none">
+ <type name="Utility.Object" c:type="UtilityObject*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="get_default"
+ c:identifier="regress_foo_object_get_default">
+ <doc xml:space="preserve">This function is intended to match clutter_stage_get_default which
+uses a C sugar return type.</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">The global #RegressFooSubobject</doc>
+ <type name="FooSubobject" c:type="RegressFooObject*"/>
+ </return-value>
+ </function>
+ <function name="static_meth"
+ c:identifier="regress_foo_object_static_meth">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </return-value>
+ </function>
+ <virtual-method name="read_fn" invoker="read">
+ <doc xml:space="preserve">Read some stuff.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">length</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="virtual_method" invoker="virtual_method">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="first_param" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="append_new_stack_layer"
+ c:identifier="regress_foo_object_append_new_stack_layer">
+ <doc xml:space="preserve">This shouldn't be scanned as a constructor.</doc>
+ <return-value transfer-ownership="none">
+ <type name="FooOtherObject" c:type="RegressFooOtherObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="dup_name" c:identifier="regress_foo_object_dup_name">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="char*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="external_type"
+ c:identifier="regress_foo_object_external_type">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">%NULL always</doc>
+ <type name="Utility.Object" c:type="UtilityObject*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressFooObject</doc>
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_name" c:identifier="regress_foo_object_get_name">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="handle_glyph"
+ c:identifier="regress_foo_object_handle_glyph">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="glyph" transfer-ownership="none">
+ <type name="Utility.Glyph" c:type="UtilityGlyph"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="is_it_time_yet"
+ c:identifier="regress_foo_object_is_it_time_yet">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+ <type name="glong" c:type="time_t"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="new_cookie"
+ c:identifier="regress_foo_object_new_cookie"
+ introspectable="0">
+ <doc xml:space="preserve">Not sure why this test is here...</doc>
+ <return-value>
+ <type name="FooObjectCookie" c:type="RegressFooObjectCookie"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="target" transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="read" c:identifier="regress_foo_object_read">
+ <doc xml:space="preserve">Read some stuff.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">obj</doc>
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">length</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="skipped_method"
+ c:identifier="regress_foo_object_skipped_method"
+ introspectable="0">
+ <doc xml:space="preserve">This is only useful from C.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">obj</doc>
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="take_all"
+ c:identifier="regress_foo_object_take_all"
+ introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="arg2" transfer-ownership="none">
+ <varargs>
+ </varargs>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="various" c:identifier="regress_foo_object_various">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="void*"/>
+ </parameter>
+ <parameter name="some_type" transfer-ownership="none">
+ <type name="GType" c:type="GType"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="virtual_method"
+ c:identifier="regress_foo_object_virtual_method">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="first_param" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <property name="hidden"
+ introspectable="0"
+ writable="1"
+ construct-only="1"
+ transfer-ownership="none">
+ <type/>
+ </property>
+ <property name="string"
+ writable="1"
+ construct="1"
+ transfer-ownership="none">
+ <type name="utf8" c:type="gchar*"/>
+ </property>
+ <field name="parent_instance">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ <field name="some_int">
+ <type name="gint" c:type="int"/>
+ </field>
+ <glib:signal name="signal" when="last">
+ <return-value transfer-ownership="full">
+ <type name="utf8" c:type="gchar*"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="GObject.Object"/>
+ </parameter>
+ <parameter name="p0" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ </class>
+ <record name="FooObjectClass"
+ c:type="RegressFooObjectClass"
+ glib:is-gtype-struct-for="FooObject">
+ <field name="parent_class">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ <field name="virtual_method">
+ <callback name="virtual_method">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </parameter>
+ <parameter name="first_param" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="read_fn">
+ <callback name="read_fn">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </parameter>
+ <parameter name="offset" transfer-ownership="none">
+ <doc xml:space="preserve">offset</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="length" transfer-ownership="none">
+ <doc xml:space="preserve">length</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="_reserved">
+ <array zero-terminated="0" c:type="GCallback" fixed-size="4">
+ <type name="GObject.Callback" c:type="GCallback"/>
+ </array>
+ </field>
+ </record>
+ <class name="FooOtherObject"
+ c:symbol-prefix="foo_other_object"
+ c:type="RegressFooOtherObject"
+ parent="GObject.Object"
+ glib:type-name="RegressFooOtherObject"
+ glib:get-type="regress_foo_other_object_get_type"
+ glib:type-struct="FooOtherObjectClass">
+ </class>
+ <record name="FooOtherObjectClass"
+ c:type="RegressFooOtherObjectClass"
+ disguised="1"
+ glib:is-gtype-struct-for="FooOtherObject">
+ </record>
+ <record name="FooRectangle" c:type="RegressFooRectangle">
+ <field name="x" writable="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="y" writable="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="width" writable="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <field name="height" writable="1">
+ <type name="gint" c:type="gint"/>
+ </field>
+ <method name="add" c:identifier="regress_foo_rectangle_add">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="r1"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">add to this rect</doc>
+ <type name="FooRectangle" c:type="RegressFooRectangle*"/>
+ </instance-parameter>
+ <parameter name="r2" transfer-ownership="none">
+ <doc xml:space="preserve">source rectangle</doc>
+ <type name="FooRectangle" c:type="const RegressFooRectangle*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <function name="new"
+ c:identifier="regress_foo_rectangle_new"
+ introspectable="0">
+ <doc xml:space="preserve">This is a C convenience constructor; we have to (skip)
+it because it's not a boxed type.</doc>
+ <return-value>
+ <type name="FooRectangle" c:type="RegressFooRectangle*"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </function>
+ </record>
+ <enumeration name="FooSkippable"
+ introspectable="0"
+ c:type="RegressFooSkippable">
+ <doc xml:space="preserve">Some type that is only interesting from C and should not be
+exposed to language bindings.</doc>
+ <member name="one" value="0" c:identifier="REGRESS_FOO_SKIPPABLE_ONE">
+ <doc xml:space="preserve">a skippable enum value</doc>
+ </member>
+ <member name="two" value="1" c:identifier="REGRESS_FOO_SKIPPABLE_TWO">
+ <doc xml:space="preserve">another skippable enum value</doc>
+ </member>
+ </enumeration>
+ <enumeration name="FooStackLayer" c:type="RegressFooStackLayer">
+ <member name="desktop"
+ value="0"
+ c:identifier="REGRESS_FOO_LAYER_DESKTOP">
+ </member>
+ <member name="bottom" value="1" c:identifier="REGRESS_FOO_LAYER_BOTTOM">
+ </member>
+ <member name="normal" value="2" c:identifier="REGRESS_FOO_LAYER_NORMAL">
+ </member>
+ <member name="top" value="4" c:identifier="REGRESS_FOO_LAYER_TOP">
+ </member>
+ <member name="dock" value="4" c:identifier="REGRESS_FOO_LAYER_DOCK">
+ </member>
+ <member name="fullscreen"
+ value="5"
+ c:identifier="REGRESS_FOO_LAYER_FULLSCREEN">
+ </member>
+ <member name="focused_window"
+ value="6"
+ c:identifier="REGRESS_FOO_LAYER_FOCUSED_WINDOW">
+ </member>
+ <member name="override_redirect"
+ value="7"
+ c:identifier="REGRESS_FOO_LAYER_OVERRIDE_REDIRECT">
+ </member>
+ <member name="last" value="8" c:identifier="REGRESS_FOO_LAYER_LAST">
+ </member>
+ </enumeration>
+ <record name="FooStruct" c:type="RegressFooStruct">
+ <field name="priv" writable="1">
+ <type name="FooStructPrivate" c:type="RegressFooStructPrivate*"/>
+ </field>
+ <field name="member" writable="1">
+ <type name="gint" c:type="int"/>
+ </field>
+ </record>
+ <record name="FooStructPrivate"
+ c:type="RegressFooStructPrivate"
+ disguised="1">
+ </record>
+ <interface name="FooSubInterface"
+ c:symbol-prefix="foo_sub_interface"
+ c:type="RegressFooSubInterface"
+ glib:type-name="RegressFooSubInterface"
+ glib:get-type="regress_foo_sub_interface_get_type"
+ glib:type-struct="FooSubInterfaceIface">
+ <prerequisite name="FooInterface"/>
+ <virtual-method name="destroy_event">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="do_bar" invoker="do_bar">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </instance-parameter>
+ </parameters>
+ </virtual-method>
+ <virtual-method name="do_baz" invoker="do_baz">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </instance-parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <type name="GObject.Callback" c:type="GCallback"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none" closure="1">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="do_bar" c:identifier="regress_foo_sub_interface_do_bar">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="do_baz" c:identifier="regress_foo_sub_interface_do_baz">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </instance-parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="call"
+ closure="1">
+ <type name="GObject.Callback" c:type="GCallback"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ <glib:signal name="destroy-event" when="last">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ </interface>
+ <record name="FooSubInterfaceIface"
+ c:type="RegressFooSubInterfaceIface"
+ glib:is-gtype-struct-for="FooSubInterface">
+ <field name="parent_iface">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="destroy_event">
+ <callback name="destroy_event">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="do_bar">
+ <callback name="do_bar">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ <field name="do_baz">
+ <callback name="do_baz">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="FooSubInterface" c:type="RegressFooSubInterface*"/>
+ </parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="call"
+ closure="2">
+ <type name="GObject.Callback" c:type="GCallback"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none" closure="2">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <class name="FooSubobject"
+ c:symbol-prefix="foo_subobject"
+ c:type="RegressFooSubobject"
+ parent="FooObject"
+ abstract="1"
+ glib:type-name="RegressFooSubobject"
+ glib:get-type="regress_foo_subobject_get_type"
+ glib:type-struct="FooSubobjectClass">
+ <implements name="FooInterface"/>
+ <constructor name="new" c:identifier="regress_foo_subobject_new">
+ <return-value transfer-ownership="full">
+ <type name="FooSubobject" c:type="RegressFooSubobject*"/>
+ </return-value>
+ </constructor>
+ <field name="parent_instance">
+ <type name="FooObject" c:type="RegressFooObject"/>
+ </field>
+ </class>
+ <record name="FooSubobjectClass"
+ c:type="RegressFooSubobjectClass"
+ glib:is-gtype-struct-for="FooSubobject">
+ <field name="parent_class">
+ <type name="FooObjectClass" c:type="RegressFooObjectClass"/>
+ </field>
+ </record>
+ <record name="FooThingWithArray" c:type="RegressFooThingWithArray">
+ <field name="x" writable="1">
+ <type name="gint" c:type="int"/>
+ </field>
+ <field name="y" writable="1">
+ <type name="gint" c:type="int"/>
+ </field>
+ <field name="lines" writable="1">
+ <array zero-terminated="0" c:type="char" fixed-size="80">
+ <type name="gchar" c:type="char"/>
+ </array>
+ </field>
+ <field name="data" writable="1">
+ <type name="guint8" c:type="guchar*"/>
+ </field>
+ </record>
+ <union name="FooUnion" c:type="RegressFooUnion">
+ <field name="regress_foo" writable="1">
+ <type name="gint" c:type="int"/>
+ </field>
+ </union>
+ <record name="FooUtilityStruct" c:type="RegressFooUtilityStruct">
+ <field name="bar" writable="1">
+ <type name="Utility.Struct" c:type="UtilityStruct"/>
+ </field>
+ </record>
+ <callback name="FooVarargsCallback"
+ c:type="RegressFooVarargsCallback"
+ introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="param" transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="arg1" transfer-ownership="none">
+ <varargs>
+ </varargs>
+ </parameter>
+ </parameters>
+ </callback>
<constant name="GUINT64_CONSTANT"
value="18446744073709551615"
c:type="REGRESS_GUINT64_CONSTANT">
@@ -66,7 +1925,7 @@ and/or use gtk-doc annotations. -->
<type name="gint" c:type="gint"/>
</constant>
<record name="Intset" c:type="RegressIntset" disguised="1">
- <doc xml:whitespace="preserve">Like telepathy-glib's TpIntset.</doc>
+ <doc xml:space="preserve">Like telepathy-glib's TpIntset.</doc>
</record>
<constant name="LONG_STRING_CONSTANT"
value="TYPE,VALUE,ENCODING,CHARSET,LANGUAGE,DOM,INTL,POSTAL,PARCEL,HOME,WORK,PREF,VOICE,FAX,MSG,CELL,PAGER,BBS,MODEM,CAR,ISDN,VIDEO,AOL,APPLELINK,ATTMAIL,CIS,EWORLD,INTERNET,IBMMAIL,MCIMAIL,POWERSHARE,PRODIGY,TLX,X400,GIF,CGM,WMF,BMP,MET,PMB,DIB,PICT,TIFF,PDF,PS,JPEG,QTIME,MPEG,MPEG2,AVI,WAVE,AIFF,PCM,X509,PGP"
@@ -87,6 +1946,27 @@ and/or use gtk-doc annotations. -->
<type name="gdouble" c:type="double"/>
</field>
</record>
+ <record name="LikeXklConfigItem" c:type="RegressLikeXklConfigItem">
+ <field name="name" writable="1">
+ <array zero-terminated="0" c:type="gchar" fixed-size="32">
+ <type name="gchar" c:type="gchar"/>
+ </array>
+ </field>
+ <method name="set_name"
+ c:identifier="regress_like_xkl_config_item_set_name">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="LikeXklConfigItem" c:type="RegressLikeXklConfigItem*"/>
+ </instance-parameter>
+ <parameter name="name" transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </method>
+ </record>
<constant name="MAXUINT64"
value="18446744073709551615"
c:type="REGRESS_MAXUINT64">
@@ -115,7 +1995,7 @@ and/or use gtk-doc annotations. -->
<record name="SkippedStructure"
c:type="RegressSkippedStructure"
introspectable="0">
- <doc xml:whitespace="preserve">This should be skipped, and moreover, all function which
+ <doc xml:space="preserve">This should be skipped, and moreover, all function which
use it should be.</doc>
<field name="x" writable="1">
<type name="gint" c:type="int"/>
@@ -132,15 +2012,18 @@ use it should be.</doc>
<member name="code1"
value="1"
c:identifier="REGRESS_TEST_ABC_ERROR_CODE1"
- glib:nick="code1"/>
+ glib:nick="code1">
+ </member>
<member name="code2"
value="2"
c:identifier="REGRESS_TEST_ABC_ERROR_CODE2"
- glib:nick="code2"/>
+ glib:nick="code2">
+ </member>
<member name="code3"
value="3"
c:identifier="REGRESS_TEST_ABC_ERROR_CODE3"
- glib:nick="code3"/>
+ glib:nick="code3">
+ </member>
<function name="quark" c:identifier="regress_test_abc_error_quark">
<return-value transfer-ownership="none">
<type name="GLib.Quark" c:type="GQuark"/>
@@ -206,12 +2089,20 @@ use it should be.</doc>
<return-value transfer-ownership="full">
<type name="TestBoxed" c:type="RegressTestBoxed*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="TestBoxed" c:type="RegressTestBoxed*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="equals" c:identifier="regress_test_boxed_equals">
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="TestBoxed" c:type="RegressTestBoxed*"/>
+ </instance-parameter>
<parameter name="other" transfer-ownership="none">
<type name="TestBoxed" c:type="RegressTestBoxed*"/>
</parameter>
@@ -246,6 +2137,11 @@ use it should be.</doc>
<return-value transfer-ownership="full">
<type name="TestBoxedB" c:type="RegressTestBoxedB*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="TestBoxedB" c:type="RegressTestBoxedB*"/>
+ </instance-parameter>
+ </parameters>
</method>
</record>
<record name="TestBoxedC"
@@ -265,6 +2161,55 @@ use it should be.</doc>
</return-value>
</constructor>
</record>
+ <record name="TestBoxedD"
+ c:type="RegressTestBoxedD"
+ glib:type-name="RegressTestBoxedD"
+ glib:get-type="regress_test_boxed_d_get_type"
+ c:symbol-prefix="test_boxed_d">
+ <constructor name="new" c:identifier="regress_test_boxed_d_new">
+ <return-value transfer-ownership="full">
+ <type name="TestBoxedD" c:type="RegressTestBoxedD*"/>
+ </return-value>
+ <parameters>
+ <parameter name="a_string" transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ <parameter name="a_int" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </constructor>
+ <method name="copy" c:identifier="regress_test_boxed_d_copy">
+ <return-value transfer-ownership="full">
+ <type name="TestBoxedD" c:type="RegressTestBoxedD*"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="TestBoxedD" c:type="RegressTestBoxedD*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="free" c:identifier="regress_test_boxed_d_free">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="TestBoxedD" c:type="RegressTestBoxedD*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ <method name="get_magic" c:identifier="regress_test_boxed_d_get_magic">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="boxed" transfer-ownership="none">
+ <type name="TestBoxedD" c:type="RegressTestBoxedD*"/>
+ </instance-parameter>
+ </parameters>
+ </method>
+ </record>
<record name="TestBoxedPrivate"
c:type="RegressTestBoxedPrivate"
disguised="1">
@@ -303,15 +2248,15 @@ use it should be.</doc>
</return-value>
<parameters>
<parameter name="foo" transfer-ownership="none">
- <doc xml:whitespace="preserve">the investment rate</doc>
+ <doc xml:space="preserve">the investment rate</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="bar" transfer-ownership="none">
- <doc xml:whitespace="preserve">how much money</doc>
+ <doc xml:space="preserve">how much money</doc>
<type name="gdouble" c:type="double"/>
</parameter>
<parameter name="path" transfer-ownership="none">
- <doc xml:whitespace="preserve">Path to file</doc>
+ <doc xml:space="preserve">Path to file</doc>
<type name="filename" c:type="char*"/>
</parameter>
</parameters>
@@ -333,7 +2278,7 @@ use it should be.</doc>
</return-value>
<parameters>
<parameter name="data" transfer-ownership="none">
- <doc xml:whitespace="preserve">a hash table; will be modified</doc>
+ <doc xml:space="preserve">a hash table; will be modified</doc>
<type name="GLib.HashTable" c:type="GHashTable*">
<type name="utf8"/>
<type name="gint"/>
@@ -348,7 +2293,7 @@ use it should be.</doc>
</return-value>
<parameters>
<parameter name="error" transfer-ownership="full">
- <doc xml:whitespace="preserve">GError instance; must be freed by the callback</doc>
+ <doc xml:space="preserve">GError instance; must be freed by the callback</doc>
<type name="GLib.Error" c:type="GError*"/>
</parameter>
</parameters>
@@ -368,34 +2313,44 @@ use it should be.</doc>
glib:error-domain="regress-test-def-error">
<member name="code0"
value="0"
- c:identifier="REGRESS_TEST_DEF_ERROR_CODE0"/>
+ c:identifier="REGRESS_TEST_DEF_ERROR_CODE0">
+ </member>
<member name="code1"
value="1"
- c:identifier="REGRESS_TEST_DEF_ERROR_CODE1"/>
+ c:identifier="REGRESS_TEST_DEF_ERROR_CODE1">
+ </member>
<member name="code2"
value="2"
- c:identifier="REGRESS_TEST_DEF_ERROR_CODE2"/>
+ c:identifier="REGRESS_TEST_DEF_ERROR_CODE2">
+ </member>
</enumeration>
<enumeration name="TestEnum"
glib:type-name="RegressTestEnum"
glib:get-type="regress_test_enum_get_type"
c:type="RegressTestEnum">
+ <doc xml:space="preserve">By purpose, not all members have documentation</doc>
<member name="value1"
value="0"
c:identifier="REGRESS_TEST_VALUE1"
- glib:nick="value1"/>
+ glib:nick="value1">
+ <doc xml:space="preserve">value 1</doc>
+ </member>
<member name="value2"
value="1"
c:identifier="REGRESS_TEST_VALUE2"
- glib:nick="value2"/>
+ glib:nick="value2">
+ <doc xml:space="preserve">value 2</doc>
+ </member>
<member name="value3"
value="-1"
c:identifier="REGRESS_TEST_VALUE3"
- glib:nick="value3"/>
+ glib:nick="value3">
+ </member>
<member name="value4"
value="48"
c:identifier="REGRESS_TEST_VALUE4"
- glib:nick="value4"/>
+ glib:nick="value4">
+ </member>
<function name="param" c:identifier="regress_test_enum_param">
<return-value transfer-ownership="none">
<type name="utf8" c:type="const gchar*"/>
@@ -408,9 +2363,12 @@ use it should be.</doc>
</function>
</enumeration>
<enumeration name="TestEnumNoGEnum" c:type="RegressTestEnumNoGEnum">
- <member name="evalue1" value="0" c:identifier="REGRESS_TEST_EVALUE1"/>
- <member name="evalue2" value="42" c:identifier="REGRESS_TEST_EVALUE2"/>
- <member name="evalue3" value="48" c:identifier="REGRESS_TEST_EVALUE3"/>
+ <member name="evalue1" value="0" c:identifier="REGRESS_TEST_EVALUE1">
+ </member>
+ <member name="evalue2" value="42" c:identifier="REGRESS_TEST_EVALUE2">
+ </member>
+ <member name="evalue3" value="48" c:identifier="REGRESS_TEST_EVALUE3">
+ </member>
</enumeration>
<enumeration name="TestEnumUnsigned"
glib:type-name="RegressTestEnumUnsigned"
@@ -419,11 +2377,13 @@ use it should be.</doc>
<member name="value1"
value="1"
c:identifier="REGRESS_TEST_UNSIGNED_VALUE1"
- glib:nick="value1"/>
+ glib:nick="value1">
+ </member>
<member name="value2"
value="2147483648"
c:identifier="REGRESS_TEST_UNSIGNED_VALUE2"
- glib:nick="value2"/>
+ glib:nick="value2">
+ </member>
</enumeration>
<enumeration name="TestError"
glib:type-name="RegressTestError"
@@ -433,15 +2393,18 @@ use it should be.</doc>
<member name="code1"
value="1"
c:identifier="REGRESS_TEST_ERROR_CODE1"
- glib:nick="code1"/>
+ glib:nick="code1">
+ </member>
<member name="code2"
value="2"
c:identifier="REGRESS_TEST_ERROR_CODE2"
- glib:nick="code2"/>
+ glib:nick="code2">
+ </member>
<member name="code3"
value="3"
c:identifier="REGRESS_TEST_ERROR_CODE3"
- glib:nick="code3"/>
+ glib:nick="code3">
+ </member>
<function name="quark" c:identifier="regress_test_error_quark">
<return-value transfer-ownership="none">
<type name="GLib.Quark" c:type="GQuark"/>
@@ -455,15 +2418,18 @@ use it should be.</doc>
<member name="flag1"
value="1"
c:identifier="TEST_FLAG1"
- glib:nick="flag1"/>
+ glib:nick="flag1">
+ </member>
<member name="flag2"
value="2"
c:identifier="TEST_FLAG2"
- glib:nick="flag2"/>
+ glib:nick="flag2">
+ </member>
<member name="flag3"
value="4"
c:identifier="TEST_FLAG3"
- glib:nick="flag3"/>
+ glib:nick="flag3">
+ </member>
</bitfield>
<class name="TestFloating"
c:symbol-prefix="test_floating"
@@ -474,7 +2440,7 @@ use it should be.</doc>
glib:type-struct="TestFloatingClass">
<constructor name="new" c:identifier="regress_test_floating_new">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">A new floating #RegressTestFloating</doc>
+ <doc xml:space="preserve">A new floating #RegressTestFloating</doc>
<type name="TestFloating" c:type="RegressTestFloating*"/>
</return-value>
</constructor>
@@ -504,16 +2470,30 @@ use it should be.</doc>
glib:get-value-func="regress_test_value_get_fundamental_object">
<method name="ref" c:identifier="regress_test_fundamental_object_ref">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">A new #RegressTestFundamentalObject</doc>
+ <doc xml:space="preserve">A new #RegressTestFundamentalObject</doc>
<type name="TestFundamentalObject"
c:type="RegressTestFundamentalObject*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="fundamental_object"
+ transfer-ownership="none">
+ <type name="TestFundamentalObject"
+ c:type="RegressTestFundamentalObject*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="unref"
c:identifier="regress_test_fundamental_object_unref">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="fundamental_object"
+ transfer-ownership="none">
+ <type name="TestFundamentalObject"
+ c:type="RegressTestFundamentalObject*"/>
+ </instance-parameter>
+ </parameters>
</method>
<field name="instance">
<type name="GObject.TypeInstance" c:type="GTypeInstance"/>
@@ -601,6 +2581,111 @@ use it should be.</doc>
c:type="RegressTestFundamentalObjectClass"/>
</field>
</record>
+ <class name="TestInheritDrawable"
+ c:symbol-prefix="test_inherit_drawable"
+ c:type="RegressTestInheritDrawable"
+ parent="GObject.Object"
+ abstract="1"
+ glib:type-name="RegressTestInheritDrawable"
+ glib:get-type="regress_test_inherit_drawable_get_type"
+ glib:type-struct="TestInheritDrawableClass">
+ <method name="do_foo"
+ c:identifier="regress_test_inherit_drawable_do_foo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="TestInheritDrawable"
+ c:type="RegressTestInheritDrawable*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="do_foo_maybe_throw"
+ c:identifier="regress_test_inherit_drawable_do_foo_maybe_throw"
+ throws="1">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="TestInheritDrawable"
+ c:type="RegressTestInheritDrawable*"/>
+ </instance-parameter>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_origin"
+ c:identifier="regress_test_inherit_drawable_get_origin">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="TestInheritDrawable"
+ c:type="RegressTestInheritDrawable*"/>
+ </instance-parameter>
+ <parameter name="x"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ <parameter name="y"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <method name="get_size"
+ c:identifier="regress_test_inherit_drawable_get_size">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="TestInheritDrawable"
+ c:type="RegressTestInheritDrawable*"/>
+ </instance-parameter>
+ <parameter name="width"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ <parameter name="height"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <type name="guint" c:type="guint*"/>
+ </parameter>
+ </parameters>
+ </method>
+ <field name="parent_instance">
+ <type name="GObject.Object" c:type="GObject"/>
+ </field>
+ </class>
+ <record name="TestInheritDrawableClass"
+ c:type="RegressTestInheritDrawableClass"
+ glib:is-gtype-struct-for="TestInheritDrawable">
+ <field name="parent_class">
+ <type name="GObject.ObjectClass" c:type="GObjectClass"/>
+ </field>
+ </record>
+ <record name="TestInheritPixmapObjectClass"
+ c:type="RegressTestInheritPixmapObjectClass">
+ <field name="parent_class" writable="1">
+ <type name="TestInheritDrawableClass"
+ c:type="RegressTestInheritDrawableClass"/>
+ </field>
+ </record>
<interface name="TestInterface"
c:symbol-prefix="test_interface"
c:type="RegressTestInterface"
@@ -633,7 +2718,7 @@ use it should be.</doc>
</return-value>
<parameters>
<parameter name="obj" transfer-ownership="none">
- <doc xml:whitespace="preserve">A #RegressTestObj</doc>
+ <doc xml:space="preserve">A #RegressTestObj</doc>
<type name="TestObj" c:type="RegressTestObj*"/>
</parameter>
</parameters>
@@ -682,7 +2767,7 @@ use it should be.</doc>
caller-allocates="0"
transfer-ownership="full"
allow-none="1">
- <doc xml:whitespace="preserve">A #RegressTestObj</doc>
+ <doc xml:space="preserve">A #RegressTestObj</doc>
<type name="TestObj" c:type="RegressTestObj**"/>
</parameter>
</parameters>
@@ -717,36 +2802,46 @@ use it should be.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="two" transfer-ownership="none" allow-none="1">
- <doc xml:whitespace="preserve">Another object</doc>
+ <doc xml:space="preserve">Another object</doc>
<type name="TestObj" c:type="RegressTestObj*"/>
</parameter>
</parameters>
</virtual-method>
<virtual-method name="matrix" invoker="do_matrix">
- <doc xml:whitespace="preserve">This method is virtual. Notably its name differs from the virtual
+ <doc xml:space="preserve">This method is virtual. Notably its name differs from the virtual
slot name, which makes it useful for testing bindings handle this
case.</doc>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="somestr" transfer-ownership="none">
- <doc xml:whitespace="preserve">Meaningless string</doc>
+ <doc xml:space="preserve">Meaningless string</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
</virtual-method>
<method name="do_matrix" c:identifier="regress_test_obj_do_matrix">
- <doc xml:whitespace="preserve">This method is virtual. Notably its name differs from the virtual
+ <doc xml:space="preserve">This method is virtual. Notably its name differs from the virtual
slot name, which makes it useful for testing bindings handle this
case.</doc>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressTestObj</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="somestr" transfer-ownership="none">
- <doc xml:whitespace="preserve">Meaningless string</doc>
+ <doc xml:space="preserve">Meaningless string</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
@@ -756,35 +2851,66 @@ case.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="emit_sig_with_int64"
c:identifier="regress_test_obj_emit_sig_with_int64">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="emit_sig_with_obj"
c:identifier="regress_test_obj_emit_sig_with_obj">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="emit_sig_with_uint64"
c:identifier="regress_test_obj_emit_sig_with_uint64">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="forced_method" c:identifier="regress_forced_method">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressTestObj</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="instance_method"
c:identifier="regress_test_obj_instance_method">
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="instance_method_callback"
c:identifier="regress_test_obj_instance_method_callback">
@@ -792,6 +2918,9 @@ case.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="callback"
transfer-ownership="none"
allow-none="1"
@@ -805,6 +2934,9 @@ case.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="bare" transfer-ownership="none" allow-none="1">
<type name="GObject.Object" c:type="GObject*"/>
</parameter>
@@ -813,25 +2945,29 @@ case.</doc>
<method name="skip_inout_param"
c:identifier="regress_test_obj_skip_inout_param"
throws="1">
- <doc xml:whitespace="preserve">Check that the out value is skipped</doc>
+ <doc xml:space="preserve">Check that the out value is skipped</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+ <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressTestObj.</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="a" transfer-ownership="none">
- <doc xml:whitespace="preserve">Parameter.</doc>
+ <doc xml:space="preserve">Parameter.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="out_b"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Return value.</doc>
+ <doc xml:space="preserve">Return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="c" transfer-ownership="none">
- <doc xml:whitespace="preserve">Other parameter.</doc>
+ <doc xml:space="preserve">Other parameter.</doc>
<type name="gdouble" c:type="gdouble"/>
</parameter>
<parameter name="inout_d"
@@ -839,22 +2975,22 @@ case.</doc>
caller-allocates="0"
transfer-ownership="full"
skip="1">
- <doc xml:whitespace="preserve">Will be incremented.</doc>
+ <doc xml:space="preserve">Will be incremented.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="out_sum"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Return value.</doc>
+ <doc xml:space="preserve">Return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="num1" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="num2" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
</parameters>
@@ -862,14 +2998,18 @@ case.</doc>
<method name="skip_out_param"
c:identifier="regress_test_obj_skip_out_param"
throws="1">
- <doc xml:whitespace="preserve">Check that the out value is skipped</doc>
+ <doc xml:space="preserve">Check that the out value is skipped</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+ <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressTestObj.</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="a" transfer-ownership="none">
- <doc xml:whitespace="preserve">Parameter.</doc>
+ <doc xml:space="preserve">Parameter.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="out_b"
@@ -877,33 +3017,33 @@ case.</doc>
caller-allocates="0"
transfer-ownership="full"
skip="1">
- <doc xml:whitespace="preserve">Return value.</doc>
+ <doc xml:space="preserve">Return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="c" transfer-ownership="none">
- <doc xml:whitespace="preserve">Other parameter.</doc>
+ <doc xml:space="preserve">Other parameter.</doc>
<type name="gdouble" c:type="gdouble"/>
</parameter>
<parameter name="inout_d"
direction="inout"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Will be incremented.</doc>
+ <doc xml:space="preserve">Will be incremented.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="out_sum"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Return value.</doc>
+ <doc xml:space="preserve">Return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="num1" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="num2" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
</parameters>
@@ -911,47 +3051,51 @@ case.</doc>
<method name="skip_param"
c:identifier="regress_test_obj_skip_param"
throws="1">
- <doc xml:whitespace="preserve">Check that a parameter is skipped</doc>
+ <doc xml:space="preserve">Check that a parameter is skipped</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+ <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressTestObj.</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="a" transfer-ownership="none">
- <doc xml:whitespace="preserve">Parameter.</doc>
+ <doc xml:space="preserve">Parameter.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="out_b"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Return value.</doc>
+ <doc xml:space="preserve">Return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="c" transfer-ownership="none" skip="1">
- <doc xml:whitespace="preserve">Other parameter.</doc>
+ <doc xml:space="preserve">Other parameter.</doc>
<type name="gdouble" c:type="gdouble"/>
</parameter>
<parameter name="inout_d"
direction="inout"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Will be incremented.</doc>
+ <doc xml:space="preserve">Will be incremented.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="out_sum"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Return value.</doc>
+ <doc xml:space="preserve">Return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="num1" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="num2" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
</parameters>
@@ -959,47 +3103,51 @@ case.</doc>
<method name="skip_return_val"
c:identifier="regress_test_obj_skip_return_val"
throws="1">
- <doc xml:whitespace="preserve">Check that the return value is skipped</doc>
+ <doc xml:space="preserve">Check that the return value is skipped</doc>
<return-value transfer-ownership="none" skip="1">
- <doc xml:whitespace="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+ <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressTestObj</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="a" transfer-ownership="none">
- <doc xml:whitespace="preserve">Parameter.</doc>
+ <doc xml:space="preserve">Parameter.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="out_b"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">A return value.</doc>
+ <doc xml:space="preserve">A return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="c" transfer-ownership="none">
- <doc xml:whitespace="preserve">Other parameter.</doc>
+ <doc xml:space="preserve">Other parameter.</doc>
<type name="gdouble" c:type="gdouble"/>
</parameter>
<parameter name="inout_d"
direction="inout"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Will be incremented.</doc>
+ <doc xml:space="preserve">Will be incremented.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="out_sum"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">Return value.</doc>
+ <doc xml:space="preserve">Return value.</doc>
<type name="gint" c:type="gint*"/>
</parameter>
<parameter name="num1" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
<parameter name="num2" transfer-ownership="none">
- <doc xml:whitespace="preserve">Number.</doc>
+ <doc xml:space="preserve">Number.</doc>
<type name="gint" c:type="gint"/>
</parameter>
</parameters>
@@ -1007,15 +3155,19 @@ case.</doc>
<method name="skip_return_val_no_out"
c:identifier="regress_test_obj_skip_return_val_no_out"
throws="1">
- <doc xml:whitespace="preserve">Check that the return value is skipped. Succeed if a is nonzero, otherwise
+ <doc xml:space="preserve">Check that the return value is skipped. Succeed if a is nonzero, otherwise
raise an error.</doc>
<return-value transfer-ownership="none" skip="1">
- <doc xml:whitespace="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
+ <doc xml:space="preserve">%TRUE if the call succeeds, %FALSE if @error is set.</doc>
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressTestObj</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="a" transfer-ownership="none">
- <doc xml:whitespace="preserve">Parameter.</doc>
+ <doc xml:space="preserve">Parameter.</doc>
<type name="gint" c:type="gint"/>
</parameter>
</parameters>
@@ -1026,6 +3178,10 @@ raise an error.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressTestObj</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -1058,11 +3214,15 @@ raise an error.</doc>
<method name="torture_signature_1"
c:identifier="regress_test_obj_torture_signature_1"
throws="1">
- <doc xml:whitespace="preserve">This function throws an error if m is odd.</doc>
+ <doc xml:space="preserve">This function throws an error if m is odd.</doc>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressTestObj</doc>
+ <type name="TestObj" c:type="RegressTestObj*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -1099,13 +3259,13 @@ raise an error.</doc>
<type name="TestBoxed"/>
</property>
<property name="double" writable="1" transfer-ownership="none">
- <type name="gdouble"/>
+ <type name="gdouble" c:type="gdouble"/>
</property>
<property name="float" writable="1" transfer-ownership="none">
- <type name="gfloat"/>
+ <type name="gfloat" c:type="gfloat"/>
</property>
<property name="gtype" writable="1" transfer-ownership="none">
- <type name="GType"/>
+ <type name="GType" c:type="GType"/>
</property>
<property name="hash-table" writable="1" transfer-ownership="container">
<type name="GLib.HashTable">
@@ -1122,20 +3282,20 @@ raise an error.</doc>
</type>
</property>
<property name="int" writable="1" transfer-ownership="none">
- <type name="gint"/>
+ <type name="gint" c:type="gint"/>
</property>
<property name="list" writable="1" transfer-ownership="none">
- <type name="GLib.List">
+ <type name="GLib.List" c:type="gpointer">
<type name="utf8"/>
</type>
</property>
<property name="list-old" writable="1" transfer-ownership="none">
- <type name="GLib.List">
+ <type name="GLib.List" c:type="gpointer">
<type name="utf8"/>
</type>
</property>
<property name="string" writable="1" transfer-ownership="none">
- <type name="utf8"/>
+ <type name="utf8" c:type="gchar*"/>
</property>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
@@ -1179,28 +3339,46 @@ raise an error.</doc>
action="1"
no-hooks="1">
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
</glib:signal>
<glib:signal name="cleanup" when="cleanup">
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
</glib:signal>
<glib:signal name="first" when="first">
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
+ </return-value>
+ </glib:signal>
+ <glib:signal name="sig-with-array-len-prop" when="last">
+ <doc xml:space="preserve">This test signal similar to GSettings::change-event</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <parameter name="arr" transfer-ownership="none" allow-none="1">
+ <doc xml:space="preserve">numbers, or %NULL</doc>
+ <array length="1" zero-terminated="0" c:type="gpointer">
+ <type name="guint"/>
+ </array>
+ </parameter>
+ <parameter name="len" transfer-ownership="none">
+ <doc xml:space="preserve">length of @arr, or 0</doc>
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ </parameters>
</glib:signal>
<glib:signal name="sig-with-array-prop" when="last">
- <doc xml:whitespace="preserve">This test signal is like TelepathyGlib's
+ <doc xml:space="preserve">This test signal is like TelepathyGlib's
TpChannel:: group-members-changed-detailed:</doc>
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="arr" transfer-ownership="none">
- <doc xml:whitespace="preserve">numbers</doc>
+ <doc xml:space="preserve">numbers</doc>
<array name="GLib.Array">
<type name="guint"/>
</array>
@@ -1209,20 +3387,20 @@ raise an error.</doc>
</glib:signal>
<glib:signal name="sig-with-foreign-struct" when="last">
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="cr" transfer-ownership="none">
- <doc xml:whitespace="preserve">A cairo context.</doc>
+ <doc xml:space="preserve">A cairo context.</doc>
<type name="cairo.Context"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="sig-with-hash-prop" when="last">
- <doc xml:whitespace="preserve">This test signal is like TelepathyGlib's
+ <doc xml:space="preserve">This test signal is like TelepathyGlib's
TpAccount::status-changed</doc>
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="hash" transfer-ownership="none">
@@ -1234,39 +3412,52 @@ raise an error.</doc>
</parameters>
</glib:signal>
<glib:signal name="sig-with-int64-prop" when="last">
- <doc xml:whitespace="preserve">You can use this with regress_test_obj_emit_sig_with_int64, or raise from
+ <doc xml:space="preserve">You can use this with regress_test_obj_emit_sig_with_int64, or raise from
the introspection client langage.</doc>
<return-value transfer-ownership="none">
- <type name="gint64"/>
+ <type name="gint64" c:type="gint64"/>
</return-value>
<parameters>
<parameter name="i" transfer-ownership="none">
- <doc xml:whitespace="preserve">an integer</doc>
- <type name="gint64"/>
+ <doc xml:space="preserve">an integer</doc>
+ <type name="gint64" c:type="gint64"/>
+ </parameter>
+ </parameters>
+ </glib:signal>
+ <glib:signal name="sig-with-intarray-ret" when="last">
+ <return-value transfer-ownership="full">
+ <array name="GLib.Array">
+ <type name="gint"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="i" transfer-ownership="none">
+ <doc xml:space="preserve">an integer</doc>
+ <type name="gint" c:type="gint"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="sig-with-obj" when="last">
- <doc xml:whitespace="preserve">Test transfer none GObject as a param (tests refcounting).
+ <doc xml:space="preserve">Test transfer none GObject as a param (tests refcounting).
Use with regress_test_obj_emit_sig_with_obj</doc>
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="obj" transfer-ownership="none">
- <doc xml:whitespace="preserve">A newly created RegressTestObj</doc>
+ <doc xml:space="preserve">A newly created RegressTestObj</doc>
<type name="GObject.Object"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="sig-with-strv" when="last">
- <doc xml:whitespace="preserve">Test GStrv as a param.</doc>
+ <doc xml:space="preserve">Test GStrv as a param.</doc>
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="strs" transfer-ownership="none">
- <doc xml:whitespace="preserve">strings</doc>
+ <doc xml:space="preserve">strings</doc>
<array>
<type name="utf8"/>
</array>
@@ -1274,21 +3465,21 @@ Use with regress_test_obj_emit_sig_with_obj</doc>
</parameters>
</glib:signal>
<glib:signal name="sig-with-uint64-prop" when="last">
- <doc xml:whitespace="preserve">You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
+ <doc xml:space="preserve">You can use this with regress_test_obj_emit_sig_with_uint64, or raise from
the introspection client langage.</doc>
<return-value transfer-ownership="none">
- <type name="guint64"/>
+ <type name="guint64" c:type="guint64"/>
</return-value>
<parameters>
<parameter name="i" transfer-ownership="none">
- <doc xml:whitespace="preserve">an integer</doc>
- <type name="guint64"/>
+ <doc xml:space="preserve">an integer</doc>
+ <type name="guint64" c:type="guint64"/>
</parameter>
</parameters>
</glib:signal>
<glib:signal name="test" when="last" no-recurse="1" no-hooks="1">
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
</glib:signal>
<glib:signal name="test-with-static-scope-arg"
@@ -1296,7 +3487,7 @@ the introspection client langage.</doc>
no-recurse="1"
no-hooks="1">
<return-value transfer-ownership="none">
- <type name="none"/>
+ <type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="object" transfer-ownership="none">
@@ -1321,7 +3512,7 @@ the introspection client langage.</doc>
<type name="TestObj" c:type="RegressTestObj*"/>
</parameter>
<parameter name="somestr" transfer-ownership="none">
- <doc xml:whitespace="preserve">Meaningless string</doc>
+ <doc xml:space="preserve">Meaningless string</doc>
<type name="utf8" c:type="const char*"/>
</parameter>
</parameters>
@@ -1337,7 +3528,7 @@ the introspection client langage.</doc>
<type name="TestObj" c:type="RegressTestObj*"/>
</parameter>
<parameter name="two" transfer-ownership="none" allow-none="1">
- <doc xml:whitespace="preserve">Another object</doc>
+ <doc xml:space="preserve">Another object</doc>
<type name="TestObj" c:type="RegressTestObj*"/>
</parameter>
</parameters>
@@ -1372,15 +3563,18 @@ the introspection client langage.</doc>
<member name="code1"
value="1"
c:identifier="REGRESS_TEST_OTHER_ERROR_CODE1"
- glib:nick="code1"/>
+ glib:nick="code1">
+ </member>
<member name="code2"
value="2"
c:identifier="REGRESS_TEST_OTHER_ERROR_CODE2"
- glib:nick="code2"/>
+ glib:nick="code2">
+ </member>
<member name="code3"
value="3"
c:identifier="REGRESS_TEST_OTHER_ERROR_CODE3"
- glib:nick="code3"/>
+ glib:nick="code3">
+ </member>
<function name="quark"
c:identifier="regress_test_unconventional_error_quark">
<return-value transfer-ownership="none">
@@ -1391,10 +3585,12 @@ the introspection client langage.</doc>
<bitfield name="TestPrivateEnum" c:type="RegressTestPrivateEnum">
<member name="public_enum_before"
value="1"
- c:identifier="REGRESS_TEST_PUBLIC_ENUM_BEFORE"/>
+ c:identifier="REGRESS_TEST_PUBLIC_ENUM_BEFORE">
+ </member>
<member name="public_enum_after"
value="4"
- c:identifier="REGRESS_TEST_PUBLIC_ENUM_AFTER"/>
+ c:identifier="REGRESS_TEST_PUBLIC_ENUM_AFTER">
+ </member>
</bitfield>
<record name="TestPrivateStruct" c:type="RegressTestPrivateStruct">
<field name="this_is_public_before" writable="1">
@@ -1407,6 +3603,20 @@ the introspection client langage.</doc>
<type name="gint" c:type="gint"/>
</field>
</record>
+ <enumeration name="TestReferenceEnum" c:type="RegressTestReferenceEnum">
+ <member name="0" value="4" c:identifier="REGRESS_TEST_REFERENCE_0">
+ </member>
+ <member name="1" value="2" c:identifier="REGRESS_TEST_REFERENCE_1">
+ </member>
+ <member name="2" value="54" c:identifier="REGRESS_TEST_REFERENCE_2">
+ </member>
+ <member name="3" value="4" c:identifier="REGRESS_TEST_REFERENCE_3">
+ </member>
+ <member name="4" value="216" c:identifier="REGRESS_TEST_REFERENCE_4">
+ </member>
+ <member name="5" value="-217" c:identifier="REGRESS_TEST_REFERENCE_5">
+ </member>
+ </enumeration>
<record name="TestSimpleBoxedA"
c:type="RegressTestSimpleBoxedA"
glib:type-name="RegressTestSimpleBoxedA"
@@ -1428,12 +3638,20 @@ the introspection client langage.</doc>
<return-value transfer-ownership="full">
<type name="TestSimpleBoxedA" c:type="RegressTestSimpleBoxedA*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="a" transfer-ownership="none">
+ <type name="TestSimpleBoxedA" c:type="RegressTestSimpleBoxedA*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="equals" c:identifier="regress_test_simple_boxed_a_equals">
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
<parameters>
+ <instance-parameter name="a" transfer-ownership="none">
+ <type name="TestSimpleBoxedA" c:type="RegressTestSimpleBoxedA*"/>
+ </instance-parameter>
<parameter name="other_a" transfer-ownership="none">
<type name="TestSimpleBoxedA" c:type="RegressTestSimpleBoxedA*"/>
</parameter>
@@ -1462,6 +3680,11 @@ the introspection client langage.</doc>
<return-value transfer-ownership="full">
<type name="TestSimpleBoxedB" c:type="RegressTestSimpleBoxedB*"/>
</return-value>
+ <parameters>
+ <instance-parameter name="b" transfer-ownership="none">
+ <type name="TestSimpleBoxedB" c:type="RegressTestSimpleBoxedB*"/>
+ </instance-parameter>
+ </parameters>
</method>
</record>
<callback name="TestSimpleCallback" c:type="RegressTestSimpleCallback">
@@ -1483,16 +3706,20 @@ the introspection client langage.</doc>
<type name="TestEnum" c:type="RegressTestEnum"/>
</field>
<method name="clone" c:identifier="regress_test_struct_a_clone">
- <doc xml:whitespace="preserve">Make a copy of a RegressTestStructA</doc>
+ <doc xml:space="preserve">Make a copy of a RegressTestStructA</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="a" transfer-ownership="none">
+ <doc xml:space="preserve">the structure</doc>
+ <type name="TestStructA" c:type="RegressTestStructA*"/>
+ </instance-parameter>
<parameter name="a_out"
direction="out"
caller-allocates="1"
transfer-ownership="none">
- <doc xml:whitespace="preserve">the cloned structure</doc>
+ <doc xml:space="preserve">the cloned structure</doc>
<type name="TestStructA" c:type="RegressTestStructA*"/>
</parameter>
</parameters>
@@ -1506,11 +3733,11 @@ the introspection client langage.</doc>
direction="out"
caller-allocates="1"
transfer-ownership="none">
- <doc xml:whitespace="preserve">the structure that is to be filled</doc>
+ <doc xml:space="preserve">the structure that is to be filled</doc>
<type name="TestStructA" c:type="RegressTestStructA*"/>
</parameter>
<parameter name="string" transfer-ownership="none">
- <doc xml:whitespace="preserve">ignored</doc>
+ <doc xml:space="preserve">ignored</doc>
<type name="utf8" c:type="const gchar*"/>
</parameter>
</parameters>
@@ -1524,16 +3751,20 @@ the introspection client langage.</doc>
<type name="TestStructA" c:type="RegressTestStructA"/>
</field>
<method name="clone" c:identifier="regress_test_struct_b_clone">
- <doc xml:whitespace="preserve">Make a copy of a RegressTestStructB</doc>
+ <doc xml:space="preserve">Make a copy of a RegressTestStructB</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="b" transfer-ownership="none">
+ <doc xml:space="preserve">the structure</doc>
+ <type name="TestStructB" c:type="RegressTestStructB*"/>
+ </instance-parameter>
<parameter name="b_out"
direction="out"
caller-allocates="1"
transfer-ownership="none">
- <doc xml:whitespace="preserve">the cloned structure</doc>
+ <doc xml:space="preserve">the cloned structure</doc>
<type name="TestStructB" c:type="RegressTestStructB*"/>
</parameter>
</parameters>
@@ -1647,6 +3878,12 @@ the introspection client langage.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="str" transfer-ownership="none">
+ <type name="TestStructFixedArray"
+ c:type="RegressTestStructFixedArray*"/>
+ </instance-parameter>
+ </parameters>
</method>
</record>
<class name="TestSubObj"
@@ -1666,11 +3903,21 @@ the introspection client langage.</doc>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestSubObj" c:type="RegressTestSubObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="unset_bare" c:identifier="regress_test_sub_obj_unset_bare">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestSubObj" c:type="RegressTestSubObj*"/>
+ </instance-parameter>
+ </parameters>
</method>
<field name="parent_instance">
<type name="TestObj" c:type="RegressTestObj"/>
@@ -1711,6 +3958,11 @@ the introspection client langage.</doc>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
+ <parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestWi8021x" c:type="RegressTestWi8021x*"/>
+ </instance-parameter>
+ </parameters>
</method>
<method name="set_testbool"
c:identifier="regress_test_wi_802_1x_set_testbool">
@@ -1718,13 +3970,16 @@ the introspection client langage.</doc>
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="obj" transfer-ownership="none">
+ <type name="TestWi8021x" c:type="RegressTestWi8021x*"/>
+ </instance-parameter>
<parameter name="v" transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</parameter>
</parameters>
</method>
<property name="testbool" writable="1" transfer-ownership="none">
- <type name="gboolean"/>
+ <type name="gboolean" c:type="gboolean"/>
</property>
<field name="parent_instance">
<type name="GObject.Object" c:type="GObject"/>
@@ -1759,19 +4014,549 @@ the introspection client langage.</doc>
</parameter>
</parameters>
</function>
+ <function name="annotation_attribute_func"
+ c:identifier="regress_annotation_attribute_func">
+ <return-value transfer-ownership="none">
+ <attribute name="some.other.annotation" value="value2"/>
+ <attribute name="yet.another.annotation" value="another_value"/>
+ <doc xml:space="preserve">The return value.</doc>
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <doc xml:space="preserve">A #RegressAnnotationObject.</doc>
+ <type name="AnnotationObject" c:type="RegressAnnotationObject*"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <attribute name="some.annotation" value="value"/>
+ <attribute name="another.annotation" value="blahvalue"/>
+ <doc xml:space="preserve">Some data.</doc>
+ <type name="utf8" c:type="const gchar*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_custom_destroy"
+ c:identifier="regress_annotation_custom_destroy">
+ <doc xml:space="preserve">Test messing up the heuristic of closure/destroy-notification
+detection, and fixing it via annotations.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="notified"
+ closure="2"
+ destroy="1">
+ <doc xml:space="preserve">Destroy notification</doc>
+ <type name="AnnotationCallback" c:type="RegressAnnotationCallback"/>
+ </parameter>
+ <parameter name="destroy"
+ transfer-ownership="none"
+ scope="notified"
+ closure="2">
+ <type name="AnnotationNotifyFunc"
+ c:type="RegressAnnotationNotifyFunc"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_get_source_file"
+ c:identifier="regress_annotation_get_source_file">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">Source file</doc>
+ <type name="filename" c:type="char*"/>
+ </return-value>
+ </function>
+ <function name="annotation_init" c:identifier="regress_annotation_init">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="argc"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">The number of args.</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ <parameter name="argv"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">The arguments.</doc>
+ <array length="0" zero-terminated="0" c:type="char***">
+ <type name="utf8" c:type="char**"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_invalid_regress_annotation"
+ c:identifier="regress_annotation_invalid_regress_annotation">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="foo" transfer-ownership="none">
+ <doc xml:space="preserve">some text (e.g. example) or else</doc>
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_ptr_array"
+ c:identifier="regress_annotation_ptr_array">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="array" transfer-ownership="none">
+ <doc xml:space="preserve">the array</doc>
+ <array name="GLib.PtrArray" c:type="GPtrArray*">
+ <type name="GObject.Value"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_return_array"
+ c:identifier="regress_annotation_return_array">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The return value</doc>
+ <array length="0" zero-terminated="0" c:type="char**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ <parameters>
+ <parameter name="length"
+ direction="out"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <doc xml:space="preserve">Number of return values</doc>
+ <type name="gint" c:type="int*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_return_filename"
+ c:identifier="regress_annotation_return_filename">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">An annotated filename</doc>
+ <type name="filename" c:type="gchar*"/>
+ </return-value>
+ </function>
+ <function name="annotation_set_source_file"
+ c:identifier="regress_annotation_set_source_file">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="fname" transfer-ownership="none">
+ <doc xml:space="preserve">Source file</doc>
+ <type name="filename" c:type="char*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_space_after_comment_bug631690"
+ c:identifier="regress_annotation_space_after_comment_bug631690">
+ <doc xml:space="preserve">Explicitly test having a space after the ** here.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
+ <function name="annotation_string_array_length"
+ c:identifier="regress_annotation_string_array_length">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="n_properties" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="properties" transfer-ownership="none">
+ <array length="0" zero-terminated="0" c:type="gchar*">
+ <type name="utf8"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_string_zero_terminated"
+ c:identifier="regress_annotation_string_zero_terminated">
+ <return-value transfer-ownership="full">
+ <doc xml:space="preserve">The return value</doc>
+ <array c:type="char**">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ </function>
+ <function name="annotation_string_zero_terminated_out"
+ c:identifier="regress_annotation_string_zero_terminated_out">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="out"
+ direction="inout"
+ caller-allocates="0"
+ transfer-ownership="full">
+ <array c:type="char***">
+ <type name="utf8" c:type="char**"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="annotation_test_parsing_bug630862"
+ c:identifier="regress_annotation_test_parsing_bug630862">
+ <doc xml:space="preserve">See https://bugzilla.gnome.org/show_bug.cgi?id=630862</doc>
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">An object, note the colon:in here</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ </function>
+ <function name="annotation_transfer_floating"
+ c:identifier="regress_annotation_transfer_floating">
+ <return-value transfer-ownership="none">
+ <doc xml:space="preserve">A floating object</doc>
+ <type name="GObject.Object" c:type="GObject*"/>
+ </return-value>
+ </function>
+ <function name="annotation_versioned"
+ c:identifier="regress_annotation_versioned"
+ version="0.6">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ </function>
<function name="atest_error_quark"
c:identifier="regress_atest_error_quark">
<return-value transfer-ownership="none">
<type name="GLib.Quark" c:type="GQuark"/>
</return-value>
</function>
+ <function name="foo_async_ready_callback"
+ c:identifier="regress_foo_async_ready_callback">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="cancellable" transfer-ownership="none" allow-none="1">
+ <type name="Gio.Cancellable" c:type="GCancellable*"/>
+ </parameter>
+ <parameter name="callback"
+ transfer-ownership="none"
+ allow-none="1"
+ scope="async"
+ closure="2">
+ <type name="Gio.AsyncReadyCallback" c:type="GAsyncReadyCallback"/>
+ </parameter>
+ <parameter name="user_data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_destroy_notify_callback"
+ c:identifier="regress_foo_destroy_notify_callback">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="callback"
+ transfer-ownership="none"
+ scope="notified"
+ closure="1"
+ destroy="2">
+ <type name="FooCallback" c:type="RegressFooCallback"/>
+ </parameter>
+ <parameter name="data" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ <parameter name="destroy" transfer-ownership="none" scope="async">
+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_enum_type_method"
+ c:identifier="regress_foo_enum_type_method"
+ moved-to="FooEnumType.method">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </return-value>
+ <parameters>
+ <parameter name="regress_foo_enum" transfer-ownership="none">
+ <type name="FooEnumType" c:type="RegressFooEnumType"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_enum_type_returnv"
+ c:identifier="regress_foo_enum_type_returnv"
+ moved-to="FooEnumType.returnv">
+ <return-value transfer-ownership="none">
+ <type name="FooEnumType" c:type="RegressFooEnumType"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_error_quark"
+ c:identifier="regress_foo_error_quark"
+ moved-to="FooError.quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ <function name="foo_init" c:identifier="regress_foo_init">
+ <return-value transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </return-value>
+ </function>
+ <function name="foo_interface_static_method"
+ c:identifier="regress_foo_interface_static_method"
+ moved-to="FooInterface.static_method">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_method_external_references"
+ c:identifier="regress_foo_method_external_references">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="object" transfer-ownership="none">
+ <type name="Utility.Object" c:type="UtilityObject*"/>
+ </parameter>
+ <parameter name="e" transfer-ownership="none">
+ <type name="Utility.EnumType" c:type="UtilityEnumType"/>
+ </parameter>
+ <parameter name="f" transfer-ownership="none">
+ <type name="Utility.FlagType" c:type="UtilityFlagType"/>
+ </parameter>
+ <parameter name="s" transfer-ownership="none">
+ <type name="Utility.Struct" c:type="UtilityStruct"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_not_a_constructor_new"
+ c:identifier="regress_foo_not_a_constructor_new">
+ <doc xml:space="preserve">This should be scanned as a top-level function, and shouldn't cause
+a "Can't find matching type for constructor" warning.</doc>
+ <return-value transfer-ownership="none">
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </return-value>
+ </function>
+ <function name="foo_rectangle_new"
+ c:identifier="regress_foo_rectangle_new"
+ moved-to="FooRectangle.new"
+ introspectable="0">
+ <doc xml:space="preserve">This is a C convenience constructor; we have to (skip)
+it because it's not a boxed type.</doc>
+ <return-value>
+ <type name="FooRectangle" c:type="RegressFooRectangle*"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="y" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="width" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="height" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_skip_me"
+ c:identifier="regress_foo_skip_me"
+ introspectable="0">
+ <doc xml:space="preserve">Does something that's only interesting from C and should not be
+exposed to language bindings.</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="fs" transfer-ownership="none">
+ <doc xml:space="preserve">a #RegressFooSkippable</doc>
+ <type name="FooSkippable" c:type="RegressFooSkippable"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_some_variant"
+ c:identifier="regress_foo_some_variant"
+ introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="args" transfer-ownership="none">
+ <type name="va_list" c:type="va_list"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_some_variant_ptr"
+ c:identifier="regress_foo_some_variant_ptr"
+ introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="x" transfer-ownership="none">
+ <type name="guint" c:type="guint"/>
+ </parameter>
+ <parameter name="args" transfer-ownership="none">
+ <type name="va_list" c:type="va_list*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_array" c:identifier="regress_foo_test_array">
+ <return-value transfer-ownership="container">
+ <array name="GLib.Array" c:type="GArray*">
+ <type name="utf8"/>
+ </array>
+ </return-value>
+ </function>
+ <function name="foo_test_const_char_param"
+ c:identifier="regress_foo_test_const_char_param">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="param" transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_const_char_retval"
+ c:identifier="regress_foo_test_const_char_retval">
+ <return-value transfer-ownership="none">
+ <type name="utf8" c:type="const char*"/>
+ </return-value>
+ </function>
+ <function name="foo_test_const_struct_param"
+ c:identifier="regress_foo_test_const_struct_param">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="param" transfer-ownership="none">
+ <type name="FooStruct" c:type="const RegressFooStruct*"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_const_struct_retval"
+ c:identifier="regress_foo_test_const_struct_retval">
+ <return-value transfer-ownership="none">
+ <type name="FooStruct" c:type="const RegressFooStruct*"/>
+ </return-value>
+ </function>
+ <function name="foo_test_string_array"
+ c:identifier="regress_foo_test_string_array">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="array" transfer-ownership="none">
+ <array c:type="char**">
+ <type name="utf8" c:type="char*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_string_array_with_g"
+ c:identifier="regress_foo_test_string_array_with_g">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="array" transfer-ownership="none">
+ <array c:type="gchar**">
+ <type name="utf8" c:type="gchar*"/>
+ </array>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_unsigned_qualifier"
+ c:identifier="regress_foo_test_unsigned_qualifier">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="unsigned_param" transfer-ownership="none">
+ <type name="guint" c:type="unsigned int"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_unsigned_type"
+ c:identifier="regress_foo_test_unsigned_type">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="unsigned_param" transfer-ownership="none">
+ <type name="guint" c:type="unsigned"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_varargs_callback"
+ c:identifier="regress_foo_test_varargs_callback"
+ introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="i" transfer-ownership="none">
+ <type name="gint" c:type="gint"/>
+ </parameter>
+ <parameter name="callback" transfer-ownership="none">
+ <type name="FooVarargsCallback" c:type="RegressFooVarargsCallback"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_varargs_callback2"
+ c:identifier="regress_foo_test_varargs_callback2"
+ introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="callback" transfer-ownership="none">
+ <type name="FooVarargsCallback" c:type="RegressFooVarargsCallback"/>
+ </parameter>
+ </parameters>
+ </function>
+ <function name="foo_test_varargs_callback3"
+ c:identifier="regress_foo_test_varargs_callback3"
+ introspectable="0">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="callback" transfer-ownership="none">
+ <type name="FooVarargsCallback" c:type="RegressFooVarargsCallback"/>
+ </parameter>
+ <parameter name="callback2" transfer-ownership="none">
+ <type name="FooVarargsCallback" c:type="RegressFooVarargsCallback"/>
+ </parameter>
+ </parameters>
+ </function>
<function name="func_obj_null_in" c:identifier="regress_func_obj_null_in">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="obj" transfer-ownership="none" allow-none="1">
- <doc xml:whitespace="preserve">A #RegressTestObj</doc>
+ <doc xml:space="preserve">A #RegressTestObj</doc>
<type name="TestObj" c:type="RegressTestObj*"/>
</parameter>
</parameters>
@@ -1786,25 +4571,25 @@ the introspection client langage.</doc>
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">A flags value</doc>
+ <doc xml:space="preserve">A flags value</doc>
<type name="TestFlags" c:type="RegressTestFlags*"/>
</parameter>
</parameters>
</function>
<function name="has_parameter_named_attrs"
c:identifier="regress_has_parameter_named_attrs">
- <doc xml:whitespace="preserve">This test case mirrors GnomeKeyringPasswordSchema from
+ <doc xml:space="preserve">This test case mirrors GnomeKeyringPasswordSchema from
libgnome-keyring.</doc>
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
</return-value>
<parameters>
<parameter name="foo" transfer-ownership="none">
- <doc xml:whitespace="preserve">some int</doc>
+ <doc xml:space="preserve">some int</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="attributes" transfer-ownership="none">
- <doc xml:whitespace="preserve">list of attributes</doc>
+ <doc xml:space="preserve">list of attributes</doc>
<array zero-terminated="0" c:type="gpointer" fixed-size="32">
<type name="guint32" c:type="gpointer"/>
</array>
@@ -1891,7 +4676,7 @@ libgnome-keyring.</doc>
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">An array of #RegressTestObj</doc>
+ <doc xml:space="preserve">An array of #RegressTestObj</doc>
<array zero-terminated="0" c:type="RegressTestObj***" fixed-size="2">
<type name="TestObj" c:type="RegressTestObj**"/>
</array>
@@ -1901,12 +4686,12 @@ libgnome-keyring.</doc>
<function name="test_array_fixed_size_int_in"
c:identifier="regress_test_array_fixed_size_int_in">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">the sum of the items in @ints</doc>
+ <doc xml:space="preserve">the sum of the items in @ints</doc>
<type name="gint" c:type="int"/>
</return-value>
<parameters>
<parameter name="ints" transfer-ownership="none">
- <doc xml:whitespace="preserve">a list of 5 integers</doc>
+ <doc xml:space="preserve">a list of 5 integers</doc>
<array zero-terminated="0" c:type="int*" fixed-size="5">
<type name="gint" c:type="int"/>
</array>
@@ -1923,7 +4708,7 @@ libgnome-keyring.</doc>
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">a list of 5 integers ranging from 0 to 4</doc>
+ <doc xml:space="preserve">a list of 5 integers ranging from 0 to 4</doc>
<array zero-terminated="0" c:type="int**" fixed-size="5">
<type name="gint" c:type="int*"/>
</array>
@@ -1933,7 +4718,7 @@ libgnome-keyring.</doc>
<function name="test_array_fixed_size_int_return"
c:identifier="regress_test_array_fixed_size_int_return">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">a list of 5 integers ranging from 0 to 4</doc>
+ <doc xml:space="preserve">a list of 5 integers ranging from 0 to 4</doc>
<array zero-terminated="0" c:type="int*" fixed-size="5">
<type name="gint" c:type="int"/>
</array>
@@ -1949,7 +4734,7 @@ libgnome-keyring.</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="ints" transfer-ownership="none">
- <doc xml:whitespace="preserve">List of ints</doc>
+ <doc xml:space="preserve">List of ints</doc>
<array length="0" zero-terminated="0" c:type="gint16*">
<type name="gint16" c:type="gint16"/>
</array>
@@ -1966,7 +4751,7 @@ libgnome-keyring.</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="ints" transfer-ownership="none">
- <doc xml:whitespace="preserve">List of ints</doc>
+ <doc xml:space="preserve">List of ints</doc>
<array length="0" zero-terminated="0" c:type="gint32*">
<type name="gint32" c:type="gint32"/>
</array>
@@ -1983,7 +4768,7 @@ libgnome-keyring.</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="ints" transfer-ownership="none">
- <doc xml:whitespace="preserve">List of ints</doc>
+ <doc xml:space="preserve">List of ints</doc>
<array length="0" zero-terminated="0" c:type="gint64*">
<type name="gint64" c:type="gint64"/>
</array>
@@ -2000,7 +4785,7 @@ libgnome-keyring.</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="ints" transfer-ownership="none">
- <doc xml:whitespace="preserve">List of ints</doc>
+ <doc xml:space="preserve">List of ints</doc>
<array length="0" zero-terminated="0" c:type="gint8*">
<type name="gint8" c:type="gint8"/>
</array>
@@ -2010,7 +4795,7 @@ libgnome-keyring.</doc>
<function name="test_array_gtype_in"
c:identifier="regress_test_array_gtype_in">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">string representation of provided types</doc>
+ <doc xml:space="preserve">string representation of provided types</doc>
<type name="utf8" c:type="char*"/>
</return-value>
<parameters>
@@ -2018,7 +4803,7 @@ libgnome-keyring.</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="types" transfer-ownership="none">
- <doc xml:whitespace="preserve">List of types</doc>
+ <doc xml:space="preserve">List of types</doc>
<array length="0" zero-terminated="0" c:type="GType*">
<type name="GType" c:type="GType"/>
</array>
@@ -2028,7 +4813,7 @@ libgnome-keyring.</doc>
<function name="test_array_int_full_out"
c:identifier="regress_test_array_int_full_out">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">a new array of integers.</doc>
+ <doc xml:space="preserve">a new array of integers.</doc>
<array length="0" zero-terminated="0" c:type="int*">
<type name="gint" c:type="int"/>
</array>
@@ -2038,7 +4823,7 @@ libgnome-keyring.</doc>
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">length of the returned array.</doc>
+ <doc xml:space="preserve">length of the returned array.</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
@@ -2053,7 +4838,7 @@ libgnome-keyring.</doc>
<type name="gint" c:type="int"/>
</parameter>
<parameter name="ints" transfer-ownership="none">
- <doc xml:whitespace="preserve">List of ints</doc>
+ <doc xml:space="preserve">List of ints</doc>
<array length="0" zero-terminated="0" c:type="int*">
<type name="gint" c:type="int"/>
</array>
@@ -2070,14 +4855,14 @@ libgnome-keyring.</doc>
direction="inout"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">the length of @ints</doc>
+ <doc xml:space="preserve">the length of @ints</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="ints"
direction="inout"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">a list of integers whose items will be increased by 1, except the first that will be dropped</doc>
+ <doc xml:space="preserve">a list of integers whose items will be increased by 1, except the first that will be dropped</doc>
<array length="0" zero-terminated="0" c:type="int**">
<type name="gint" c:type="int*"/>
</array>
@@ -2087,7 +4872,7 @@ libgnome-keyring.</doc>
<function name="test_array_int_none_out"
c:identifier="regress_test_array_int_none_out">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">a static array of integers.</doc>
+ <doc xml:space="preserve">a static array of integers.</doc>
<array length="0" zero-terminated="0" c:type="int*">
<type name="gint" c:type="int"/>
</array>
@@ -2097,7 +4882,7 @@ libgnome-keyring.</doc>
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">length of the returned array.</doc>
+ <doc xml:space="preserve">length of the returned array.</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
@@ -2114,7 +4899,7 @@ libgnome-keyring.</doc>
</array>
</parameter>
<parameter name="len" transfer-ownership="none">
- <doc xml:whitespace="preserve">length</doc>
+ <doc xml:space="preserve">length</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
@@ -2138,7 +4923,7 @@ libgnome-keyring.</doc>
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">length</doc>
+ <doc xml:space="preserve">length</doc>
<type name="gint" c:type="int*"/>
</parameter>
</parameters>
@@ -2153,14 +4938,14 @@ libgnome-keyring.</doc>
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">the length of @ints</doc>
+ <doc xml:space="preserve">the length of @ints</doc>
<type name="gint" c:type="int*"/>
</parameter>
<parameter name="ints"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">a list of 5 integers, from 0 to 4 in consecutive order</doc>
+ <doc xml:space="preserve">a list of 5 integers, from 0 to 4 in consecutive order</doc>
<array length="0" zero-terminated="0" c:type="int**">
<type name="gint" c:type="int*"/>
</array>
@@ -2300,7 +5085,7 @@ libgnome-keyring.</doc>
</function>
<function name="test_callback_destroy_notify"
c:identifier="regress_test_callback_destroy_notify">
- <doc xml:whitespace="preserve">Notified - callback persists until a DestroyNotify delegate
+ <doc xml:space="preserve">Notified - callback persists until a DestroyNotify delegate
is invoked.</doc>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
@@ -2324,7 +5109,7 @@ is invoked.</doc>
</function>
<function name="test_callback_destroy_notify_no_user_data"
c:identifier="regress_test_callback_destroy_notify_no_user_data">
- <doc xml:whitespace="preserve">Adds a scope notified callback with no user data. This can invoke an error
+ <doc xml:space="preserve">Adds a scope notified callback with no user data. This can invoke an error
condition in bindings which needs to be tested.</doc>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
@@ -2350,17 +5135,17 @@ condition in bindings which needs to be tested.</doc>
</function>
<function name="test_callback_thaw_notifications"
c:identifier="regress_test_callback_thaw_notifications">
- <doc xml:whitespace="preserve">Invokes all callbacks installed by #test_callback_destroy_notify(),
+ <doc xml:space="preserve">Invokes all callbacks installed by #test_callback_destroy_notify(),
adding up their return values, and removes them, invoking the
corresponding destroy notfications.</doc>
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">Sum of the return values of the invoked callbacks.</doc>
+ <doc xml:space="preserve">Sum of the return values of the invoked callbacks.</doc>
<type name="gint" c:type="int"/>
</return-value>
</function>
<function name="test_callback_user_data"
c:identifier="regress_test_callback_user_data">
- <doc xml:whitespace="preserve">Call - callback parameter persists for the duration of the method
+ <doc xml:space="preserve">Call - callback parameter persists for the duration of the method
call and can be released on return.</doc>
<return-value transfer-ownership="none">
<type name="gint" c:type="int"/>
@@ -2405,16 +5190,16 @@ call and can be released on return.</doc>
<function name="test_closure_variant"
c:identifier="regress_test_closure_variant">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">the return value of @closure</doc>
+ <doc xml:space="preserve">the return value of @closure</doc>
<type name="GLib.Variant" c:type="GVariant*"/>
</return-value>
<parameters>
<parameter name="closure" transfer-ownership="none">
- <doc xml:whitespace="preserve">GClosure which takes one GVariant and returns a GVariant</doc>
+ <doc xml:space="preserve">GClosure which takes one GVariant and returns a GVariant</doc>
<type name="GObject.Closure" c:type="GClosure*"/>
</parameter>
<parameter name="arg" transfer-ownership="none" allow-none="1">
- <doc xml:whitespace="preserve">a GVariant passed as argument to @closure</doc>
+ <doc xml:space="preserve">a GVariant passed as argument to @closure</doc>
<type name="GLib.Variant" c:type="GVariant*"/>
</parameter>
</parameters>
@@ -2463,7 +5248,7 @@ call and can be released on return.</doc>
<function name="test_filename_return"
c:identifier="regress_test_filename_return">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">list of strings</doc>
+ <doc xml:space="preserve">list of strings</doc>
<type name="GLib.SList" c:type="GSList*">
<type name="filename"/>
</type>
@@ -2531,7 +5316,7 @@ call and can be released on return.</doc>
</return-value>
<parameters>
<parameter name="hash" transfer-ownership="none">
- <doc xml:whitespace="preserve">the hash table returned by regress_test_ghash_gvalue_return().</doc>
+ <doc xml:space="preserve">the hash table returned by regress_test_ghash_gvalue_return().</doc>
<type name="GLib.HashTable" c:type="GHashTable*">
<type name="utf8"/>
<type name="GObject.Value"/>
@@ -2550,7 +5335,7 @@ call and can be released on return.</doc>
</function>
<function name="test_ghash_nested_everything_return"
c:identifier="regress_test_ghash_nested_everything_return">
- <doc xml:whitespace="preserve">Specify nested parameterized types directly with the (type ) annotation.</doc>
+ <doc xml:space="preserve">Specify nested parameterized types directly with the (type ) annotation.</doc>
<return-value transfer-ownership="full">
<type name="GLib.HashTable" c:type="GHashTable*">
<type name="utf8"/>
@@ -2563,7 +5348,7 @@ call and can be released on return.</doc>
</function>
<function name="test_ghash_nested_everything_return2"
c:identifier="regress_test_ghash_nested_everything_return2">
- <doc xml:whitespace="preserve">Another way of specifying nested parameterized types: using the
+ <doc xml:space="preserve">Another way of specifying nested parameterized types: using the
element-type annotation.</doc>
<return-value transfer-ownership="full">
<type name="GLib.HashTable" c:type="GHashTable*">
@@ -2850,32 +5635,32 @@ element-type annotation.</doc>
</function>
<function name="test_gvariant_as" c:identifier="regress_test_gvariant_as">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">New variant</doc>
+ <doc xml:space="preserve">New variant</doc>
<type name="GLib.Variant" c:type="GVariant*"/>
</return-value>
</function>
<function name="test_gvariant_asv"
c:identifier="regress_test_gvariant_asv">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">New variant</doc>
+ <doc xml:space="preserve">New variant</doc>
<type name="GLib.Variant" c:type="GVariant*"/>
</return-value>
</function>
<function name="test_gvariant_i" c:identifier="regress_test_gvariant_i">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">New variant</doc>
+ <doc xml:space="preserve">New variant</doc>
<type name="GLib.Variant" c:type="GVariant*"/>
</return-value>
</function>
<function name="test_gvariant_s" c:identifier="regress_test_gvariant_s">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">New variant</doc>
+ <doc xml:space="preserve">New variant</doc>
<type name="GLib.Variant" c:type="GVariant*"/>
</return-value>
</function>
<function name="test_gvariant_v" c:identifier="regress_test_gvariant_v">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">New variant</doc>
+ <doc xml:space="preserve">New variant</doc>
<type name="GLib.Variant" c:type="GVariant*"/>
</return-value>
</function>
@@ -2886,7 +5671,7 @@ element-type annotation.</doc>
</return-value>
<parameters>
<parameter name="data" transfer-ownership="none">
- <doc xml:whitespace="preserve">GHashTable that gets passed to callback</doc>
+ <doc xml:space="preserve">GHashTable that gets passed to callback</doc>
<type name="GLib.HashTable" c:type="GHashTable*">
<type name="utf8"/>
<type name="gint"/>
@@ -3025,7 +5810,7 @@ element-type annotation.</doc>
</function>
<function name="test_multiline_doc_comments"
c:identifier="regress_test_multiline_doc_comments">
- <doc xml:whitespace="preserve">This is a function.
+ <doc xml:space="preserve">This is a function.
It has multiple lines in the documentation.
@@ -3038,7 +5823,7 @@ You will give me your credit card number.</doc>
</function>
<function name="test_nested_parameter"
c:identifier="regress_test_nested_parameter">
- <doc xml:whitespace="preserve">&lt;informaltable&gt;
+ <doc xml:space="preserve">&lt;informaltable&gt;
&lt;tgroup cols="3"&gt;
&lt;thead&gt;
&lt;row&gt;
@@ -3071,7 +5856,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
</return-value>
<parameters>
<parameter name="a" transfer-ownership="none">
- <doc xml:whitespace="preserve">An integer</doc>
+ <doc xml:space="preserve">An integer</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
@@ -3140,6 +5925,21 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
</parameter>
</parameters>
</function>
+ <function name="test_skip_unannotated_callback"
+ c:identifier="regress_test_skip_unannotated_callback"
+ introspectable="0">
+ <doc xml:space="preserve">Should not emit a warning:
+https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="callback" transfer-ownership="none">
+ <doc xml:space="preserve">No annotation here</doc>
+ <type name="TestCallback" c:type="RegressTestCallback"/>
+ </parameter>
+ </parameters>
+ </function>
<function name="test_ssize" c:identifier="regress_test_ssize">
<return-value transfer-ownership="none">
<type name="gssize" c:type="gssize"/>
@@ -3161,11 +5961,11 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
direction="out"
caller-allocates="1"
transfer-ownership="none">
- <doc xml:whitespace="preserve">the structure that is to be filled</doc>
+ <doc xml:space="preserve">the structure that is to be filled</doc>
<type name="TestStructA" c:type="RegressTestStructA*"/>
</parameter>
<parameter name="string" transfer-ownership="none">
- <doc xml:whitespace="preserve">ignored</doc>
+ <doc xml:space="preserve">ignored</doc>
<type name="utf8" c:type="const gchar*"/>
</parameter>
</parameters>
@@ -3273,7 +6073,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
<function name="test_torture_signature_1"
c:identifier="regress_test_torture_signature_1"
throws="1">
- <doc xml:whitespace="preserve">This function throws an error if m is odd.</doc>
+ <doc xml:space="preserve">This function throws an error if m is odd.</doc>
<return-value transfer-ownership="none">
<type name="gboolean" c:type="gboolean"/>
</return-value>
@@ -3468,7 +6268,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
<function name="test_utf8_const_return"
c:identifier="regress_test_utf8_const_return">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">UTF-8 string</doc>
+ <doc xml:space="preserve">UTF-8 string</doc>
<type name="utf8" c:type="const char*"/>
</return-value>
</function>
@@ -3488,7 +6288,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
<function name="test_utf8_nonconst_return"
c:identifier="regress_test_utf8_nonconst_return">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">UTF-8 string</doc>
+ <doc xml:space="preserve">UTF-8 string</doc>
<type name="utf8" c:type="char*"/>
</return-value>
</function>
@@ -3534,7 +6334,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
<function name="test_utf8_out_nonconst_return"
c:identifier="regress_test_utf8_out_nonconst_return">
<return-value transfer-ownership="full">
- <doc xml:whitespace="preserve">a copy of "first"</doc>
+ <doc xml:space="preserve">a copy of "first"</doc>
<type name="utf8" c:type="char*"/>
</return-value>
<parameters>
@@ -3542,7 +6342,7 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">a copy of "second"</doc>
+ <doc xml:space="preserve">a copy of "second"</doc>
<type name="utf8" c:type="char**"/>
</parameter>
</parameters>
@@ -3557,14 +6357,14 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">a copy of "first"</doc>
+ <doc xml:space="preserve">a copy of "first"</doc>
<type name="utf8" c:type="char**"/>
</parameter>
<parameter name="out1"
direction="out"
caller-allocates="0"
transfer-ownership="full">
- <doc xml:whitespace="preserve">a copy of "second"</doc>
+ <doc xml:space="preserve">a copy of "second"</doc>
<type name="utf8" c:type="char**"/>
</parameter>
</parameters>
@@ -3585,12 +6385,12 @@ What we're testing here is that the scanner ignores the @a nested inside XML.</d
<function name="test_value_return"
c:identifier="regress_test_value_return">
<return-value transfer-ownership="none">
- <doc xml:whitespace="preserve">the int wrapped in a GValue.</doc>
+ <doc xml:space="preserve">the int wrapped in a GValue.</doc>
<type name="GObject.Value" c:type="const GValue*"/>
</return-value>
<parameters>
<parameter name="i" transfer-ownership="none">
- <doc xml:whitespace="preserve">an int</doc>
+ <doc xml:space="preserve">an int</doc>
<type name="gint" c:type="int"/>
</parameter>
</parameters>
diff --git a/tests/scanner/Regress-1.0-sections-expected.txt b/tests/scanner/Regress-1.0-sections-expected.txt
new file mode 100644
index 00000000..96df7c59
--- /dev/null
+++ b/tests/scanner/Regress-1.0-sections-expected.txt
@@ -0,0 +1,362 @@
+
+<SECTION>
+<FILE>main</FILE>
+<TITLE>Main</TITLE>
+regress_aliased_caller_alloc
+regress_annotation_attribute_func
+regress_annotation_custom_destroy
+regress_annotation_get_source_file
+regress_annotation_init
+regress_annotation_invalid_regress_annotation
+regress_annotation_ptr_array
+regress_annotation_return_array
+regress_annotation_return_filename
+regress_annotation_set_source_file
+regress_annotation_space_after_comment_bug631690
+regress_annotation_string_array_length
+regress_annotation_string_zero_terminated
+regress_annotation_string_zero_terminated_out
+regress_annotation_test_parsing_bug630862
+regress_annotation_transfer_floating
+regress_annotation_versioned
+regress_atest_error_quark
+regress_foo_async_ready_callback
+regress_foo_destroy_notify_callback
+regress_foo_enum_type_method
+regress_foo_enum_type_returnv
+regress_foo_error_quark
+regress_foo_init
+regress_foo_interface_static_method
+regress_foo_method_external_references
+regress_foo_not_a_constructor_new
+regress_foo_rectangle_new
+regress_foo_skip_me
+regress_foo_some_variant
+regress_foo_some_variant_ptr
+regress_foo_test_array
+regress_foo_test_const_char_param
+regress_foo_test_const_char_retval
+regress_foo_test_const_struct_param
+regress_foo_test_const_struct_retval
+regress_foo_test_string_array
+regress_foo_test_string_array_with_g
+regress_foo_test_unsigned_qualifier
+regress_foo_test_unsigned_type
+regress_foo_test_varargs_callback
+regress_foo_test_varargs_callback2
+regress_foo_test_varargs_callback3
+regress_func_obj_null_in
+regress_global_get_flags_out
+regress_has_parameter_named_attrs
+regress_introspectable_via_alias
+regress_not_introspectable_via_alias
+regress_random_function_with_skipped_structure
+regress_set_abort_on_error
+regress_test_abc_error_quark
+regress_test_array_callback
+regress_test_array_fixed_out_objects
+regress_test_array_fixed_size_int_in
+regress_test_array_fixed_size_int_out
+regress_test_array_fixed_size_int_return
+regress_test_array_gint16_in
+regress_test_array_gint32_in
+regress_test_array_gint64_in
+regress_test_array_gint8_in
+regress_test_array_gtype_in
+regress_test_array_int_full_out
+regress_test_array_int_in
+regress_test_array_int_inout
+regress_test_array_int_none_out
+regress_test_array_int_null_in
+regress_test_array_int_null_out
+regress_test_array_int_out
+regress_test_async_ready_callback
+regress_test_boolean
+regress_test_boolean_false
+regress_test_boolean_true
+regress_test_cairo_context_full_return
+regress_test_cairo_context_none_in
+regress_test_cairo_surface_full_out
+regress_test_cairo_surface_full_return
+regress_test_cairo_surface_none_in
+regress_test_cairo_surface_none_return
+regress_test_callback
+regress_test_callback_async
+regress_test_callback_destroy_notify
+regress_test_callback_destroy_notify_no_user_data
+regress_test_callback_thaw_async
+regress_test_callback_thaw_notifications
+regress_test_callback_user_data
+regress_test_closure
+regress_test_closure_one_arg
+regress_test_closure_variant
+regress_test_date_in_gvalue
+regress_test_def_error_quark
+regress_test_double
+regress_test_enum_param
+regress_test_error_quark
+regress_test_filename_return
+regress_test_float
+regress_test_garray_container_return
+regress_test_garray_full_return
+regress_test_gerror_callback
+regress_test_ghash_container_return
+regress_test_ghash_everything_return
+regress_test_ghash_gvalue_in
+regress_test_ghash_gvalue_return
+regress_test_ghash_nested_everything_return
+regress_test_ghash_nested_everything_return2
+regress_test_ghash_nothing_in
+regress_test_ghash_nothing_in2
+regress_test_ghash_nothing_return
+regress_test_ghash_nothing_return2
+regress_test_ghash_null_in
+regress_test_ghash_null_out
+regress_test_ghash_null_return
+regress_test_glist_container_return
+regress_test_glist_everything_return
+regress_test_glist_nothing_in
+regress_test_glist_nothing_in2
+regress_test_glist_nothing_return
+regress_test_glist_nothing_return2
+regress_test_glist_null_in
+regress_test_glist_null_out
+regress_test_gslist_container_return
+regress_test_gslist_everything_return
+regress_test_gslist_nothing_in
+regress_test_gslist_nothing_in2
+regress_test_gslist_nothing_return
+regress_test_gslist_nothing_return2
+regress_test_gslist_null_in
+regress_test_gslist_null_out
+regress_test_gtype
+regress_test_gvariant_as
+regress_test_gvariant_asv
+regress_test_gvariant_i
+regress_test_gvariant_s
+regress_test_gvariant_v
+regress_test_hash_table_callback
+regress_test_int
+regress_test_int16
+regress_test_int32
+regress_test_int64
+regress_test_int8
+regress_test_int_out_utf8
+regress_test_int_value_arg
+regress_test_long
+regress_test_multi_callback
+regress_test_multi_double_args
+regress_test_multiline_doc_comments
+regress_test_nested_parameter
+regress_test_null_gerror_callback
+regress_test_owned_gerror_callback
+regress_test_short
+regress_test_simple_boxed_a_const_return
+regress_test_simple_callback
+regress_test_size
+regress_test_skip_unannotated_callback
+regress_test_ssize
+regress_test_struct_a_parse
+regress_test_strv_in
+regress_test_strv_in_gvalue
+regress_test_strv_out
+regress_test_strv_out_c
+regress_test_strv_out_container
+regress_test_strv_outarg
+regress_test_timet
+regress_test_torture_signature_0
+regress_test_torture_signature_1
+regress_test_torture_signature_2
+regress_test_uint
+regress_test_uint16
+regress_test_uint32
+regress_test_uint64
+regress_test_uint8
+regress_test_ulong
+regress_test_unconventional_error_quark
+regress_test_unichar
+regress_test_unsigned_enum_param
+regress_test_ushort
+regress_test_utf8_const_in
+regress_test_utf8_const_return
+regress_test_utf8_inout
+regress_test_utf8_nonconst_return
+regress_test_utf8_null_in
+regress_test_utf8_null_out
+regress_test_utf8_out
+regress_test_utf8_out_nonconst_return
+regress_test_utf8_out_out
+regress_test_value_get_fundamental_object
+regress_test_value_return
+regress_test_value_set_fundamental_object
+regress_test_versioning
+
+<SECTION>
+<FILE>regress-annotation-object</FILE>
+<TITLE>RegressAnnotationObject</TITLE>
+RegressAnnotationObject
+RegressAnnotationObjectClass
+regress_annotation_object_allow_none
+regress_annotation_object_calleeowns
+regress_annotation_object_calleesowns
+regress_annotation_object_compute_sum
+regress_annotation_object_compute_sum_n
+regress_annotation_object_compute_sum_nz
+regress_annotation_object_create_object
+regress_annotation_object_do_not_use
+regress_annotation_object_extra_annos
+regress_annotation_object_foreach
+regress_annotation_object_get_hash
+regress_annotation_object_get_objects
+regress_annotation_object_get_strings
+regress_annotation_object_hidden_self
+regress_annotation_object_in
+regress_annotation_object_inout
+regress_annotation_object_inout2
+regress_annotation_object_inout3
+regress_annotation_object_method
+regress_annotation_object_notrans
+regress_annotation_object_out
+regress_annotation_object_parse_args
+regress_annotation_object_set_data
+regress_annotation_object_set_data2
+regress_annotation_object_set_data3
+regress_annotation_object_string_out
+regress_annotation_object_use_buffer
+regress_annotation_object_watch
+regress_annotation_object_watch_full
+regress_annotation_object_with_voidp
+
+<SECTION>
+<FILE>regress-foo-buffer</FILE>
+<TITLE>RegressFooBuffer</TITLE>
+RegressFooBuffer
+RegressFooBufferClass
+regress_foo_buffer_some_method
+
+<SECTION>
+<FILE>regress-foo-interface</FILE>
+<TITLE>RegressFooInterface</TITLE>
+RegressFooInterface
+RegressFooInterfaceIface
+regress_foo_interface_do_regress_foo
+regress_foo_interface_static_method
+
+<SECTION>
+<FILE>regress-foo-object</FILE>
+<TITLE>RegressFooObject</TITLE>
+RegressFooObject
+RegressFooObjectClass
+regress_foo_object_append_new_stack_layer
+regress_foo_object_dup_name
+regress_foo_object_external_type
+regress_foo_object_get_name
+regress_foo_object_handle_glyph
+regress_foo_object_is_it_time_yet
+regress_foo_object_new_cookie
+regress_foo_object_read
+regress_foo_object_skipped_method
+regress_foo_object_take_all
+regress_foo_object_various
+regress_foo_object_virtual_method
+regress_foo_object_a_global_method
+regress_foo_object_get_default
+regress_foo_object_static_meth
+
+<SECTION>
+<FILE>regress-foo-other-object</FILE>
+<TITLE>RegressFooOtherObject</TITLE>
+RegressFooOtherObject
+RegressFooOtherObjectClass
+
+<SECTION>
+<FILE>regress-foo-sub-interface</FILE>
+<TITLE>RegressFooSubInterface</TITLE>
+RegressFooSubInterface
+RegressFooSubInterfaceIface
+regress_foo_sub_interface_do_bar
+regress_foo_sub_interface_do_baz
+
+<SECTION>
+<FILE>regress-foo-subobject</FILE>
+<TITLE>RegressFooSubobject</TITLE>
+RegressFooSubobject
+RegressFooSubobjectClass
+
+<SECTION>
+<FILE>regress-test-floating</FILE>
+<TITLE>RegressTestFloating</TITLE>
+RegressTestFloating
+RegressTestFloatingClass
+
+<SECTION>
+<FILE>regress-test-fundamental-object</FILE>
+<TITLE>RegressTestFundamentalObject</TITLE>
+RegressTestFundamentalObject
+RegressTestFundamentalObjectClass
+regress_test_fundamental_object_ref
+regress_test_fundamental_object_unref
+
+<SECTION>
+<FILE>regress-test-fundamental-sub-object</FILE>
+<TITLE>RegressTestFundamentalSubObject</TITLE>
+RegressTestFundamentalSubObject
+RegressTestFundamentalSubObjectClass
+
+<SECTION>
+<FILE>regress-test-inherit-drawable</FILE>
+<TITLE>RegressTestInheritDrawable</TITLE>
+RegressTestInheritDrawable
+RegressTestInheritDrawableClass
+regress_test_inherit_drawable_do_foo
+regress_test_inherit_drawable_do_foo_maybe_throw
+regress_test_inherit_drawable_get_origin
+regress_test_inherit_drawable_get_size
+
+<SECTION>
+<FILE>regress-test-interface</FILE>
+<TITLE>RegressTestInterface</TITLE>
+RegressTestInterface
+RegressTestInterfaceIface
+
+<SECTION>
+<FILE>regress-test-obj</FILE>
+<TITLE>RegressTestObj</TITLE>
+RegressTestObj
+RegressTestObjClass
+regress_test_obj_do_matrix
+regress_test_obj_emit_sig_with_foreign_struct
+regress_test_obj_emit_sig_with_int64
+regress_test_obj_emit_sig_with_obj
+regress_test_obj_emit_sig_with_uint64
+regress_forced_method
+regress_test_obj_instance_method
+regress_test_obj_instance_method_callback
+regress_test_obj_set_bare
+regress_test_obj_skip_inout_param
+regress_test_obj_skip_out_param
+regress_test_obj_skip_param
+regress_test_obj_skip_return_val
+regress_test_obj_skip_return_val_no_out
+regress_test_obj_torture_signature_0
+regress_test_obj_torture_signature_1
+regress_test_obj_null_out
+regress_test_obj_static_method
+regress_test_obj_static_method_callback
+
+<SECTION>
+<FILE>regress-test-sub-obj</FILE>
+<TITLE>RegressTestSubObj</TITLE>
+RegressTestSubObj
+RegressTestSubObjClass
+regress_test_sub_obj_instance_method
+regress_test_sub_obj_unset_bare
+
+<SECTION>
+<FILE>regress-test-wi8021x</FILE>
+<TITLE>RegressTestWi8021x</TITLE>
+RegressTestWi8021x
+RegressTestWi8021xClass
+regress_test_wi_802_1x_get_testbool
+regress_test_wi_802_1x_set_testbool
+regress_test_wi_802_1x_static_method
diff --git a/tests/scanner/SLetter-1.0-expected.gir b/tests/scanner/SLetter-1.0-expected.gir
index c6da0df4..a98ebb27 100644
--- a/tests/scanner/SLetter-1.0-expected.gir
+++ b/tests/scanner/SLetter-1.0-expected.gir
@@ -6,8 +6,6 @@ and/or use gtk-doc annotations. -->
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="GLib" version="2.0"/>
- <include name="GObject" version="2.0"/>
<include name="Gio" version="2.0"/>
<c:include name="sletter.h"/>
<namespace name="SLetter"
@@ -18,9 +16,12 @@ and/or use gtk-doc annotations. -->
<enumeration name="DBusError"
c:type="SDBusError"
glib:error-domain="s-dbus-error">
- <member name="code1" value="1" c:identifier="S_DBUS_ERROR_CODE1"/>
- <member name="code2" value="2" c:identifier="S_DBUS_ERROR_CODE2"/>
- <member name="code3" value="3" c:identifier="S_DBUS_ERROR_CODE3"/>
+ <member name="code1" value="1" c:identifier="S_DBUS_ERROR_CODE1">
+ </member>
+ <member name="code2" value="2" c:identifier="S_DBUS_ERROR_CODE2">
+ </member>
+ <member name="code3" value="3" c:identifier="S_DBUS_ERROR_CODE3">
+ </member>
</enumeration>
<record name="Point" c:type="SPoint">
<field name="x" writable="1">
@@ -33,9 +34,12 @@ and/or use gtk-doc annotations. -->
<enumeration name="SpawnError"
c:type="SSpawnError"
glib:error-domain="s-spawn-error">
- <member name="code1" value="1" c:identifier="S_SPAWN_ERROR_CODE1"/>
- <member name="code2" value="2" c:identifier="S_SPAWN_ERROR_CODE2"/>
- <member name="code3" value="3" c:identifier="S_SPAWN_ERROR_CODE3"/>
+ <member name="code1" value="1" c:identifier="S_SPAWN_ERROR_CODE1">
+ </member>
+ <member name="code2" value="2" c:identifier="S_SPAWN_ERROR_CODE2">
+ </member>
+ <member name="code3" value="3" c:identifier="S_SPAWN_ERROR_CODE3">
+ </member>
</enumeration>
<function name="dbus_error_quark" c:identifier="s_dbus_error_quark">
<return-value transfer-ownership="none">
diff --git a/tests/scanner/TestInherit-1.0-expected.gir b/tests/scanner/TestInherit-1.0-expected.gir
index 6b16ab70..1f1a3286 100644
--- a/tests/scanner/TestInherit-1.0-expected.gir
+++ b/tests/scanner/TestInherit-1.0-expected.gir
@@ -29,6 +29,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="Drawable" c:type="TestInheritDrawable*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -41,6 +44,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="Drawable" c:type="TestInheritDrawable*"/>
+ </instance-parameter>
<parameter name="x" transfer-ownership="none">
<type name="gint" c:type="int"/>
</parameter>
@@ -52,6 +58,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="Drawable" c:type="TestInheritDrawable*"/>
+ </instance-parameter>
<parameter name="x"
direction="out"
caller-allocates="0"
@@ -71,6 +80,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="drawable" transfer-ownership="none">
+ <type name="Drawable" c:type="TestInheritDrawable*"/>
+ </instance-parameter>
<parameter name="width"
direction="out"
caller-allocates="0"
diff --git a/tests/scanner/Utility-1.0-expected.gir b/tests/scanner/Utility-1.0-expected.gir
index 747f99c1..1936fd2b 100644
--- a/tests/scanner/Utility-1.0-expected.gir
+++ b/tests/scanner/Utility-1.0-expected.gir
@@ -6,7 +6,6 @@ and/or use gtk-doc annotations. -->
xmlns="http://www.gtk.org/introspection/core/1.0"
xmlns:c="http://www.gtk.org/introspection/c/1.0"
xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="GLib" version="2.0"/>
<include name="GObject" version="2.0"/>
<package name="gobject-2.0"/>
<c:include name="utility.h"/>
@@ -40,9 +39,12 @@ and/or use gtk-doc annotations. -->
</record>
</union>
<enumeration name="EnumType" c:type="UtilityEnumType">
- <member name="a" value="0" c:identifier="UTILITY_ENUM_A"/>
- <member name="b" value="1" c:identifier="UTILITY_ENUM_B"/>
- <member name="c" value="2" c:identifier="UTILITY_ENUM_C"/>
+ <member name="a" value="0" c:identifier="UTILITY_ENUM_A">
+ </member>
+ <member name="b" value="1" c:identifier="UTILITY_ENUM_B">
+ </member>
+ <member name="c" value="2" c:identifier="UTILITY_ENUM_C">
+ </member>
</enumeration>
<callback name="FileFunc" c:type="UtilityFileFunc">
<return-value transfer-ownership="none">
@@ -58,9 +60,12 @@ and/or use gtk-doc annotations. -->
</parameters>
</callback>
<bitfield name="FlagType" c:type="UtilityFlagType">
- <member name="a" value="1" c:identifier="UTILITY_FLAG_A"/>
- <member name="b" value="2" c:identifier="UTILITY_FLAG_B"/>
- <member name="c" value="4" c:identifier="UTILITY_FLAG_C"/>
+ <member name="a" value="1" c:identifier="UTILITY_FLAG_A">
+ </member>
+ <member name="b" value="2" c:identifier="UTILITY_FLAG_B">
+ </member>
+ <member name="c" value="4" c:identifier="UTILITY_FLAG_C">
+ </member>
</bitfield>
<class name="Object"
c:symbol-prefix="object"
@@ -74,6 +79,9 @@ and/or use gtk-doc annotations. -->
<type name="none" c:type="void"/>
</return-value>
<parameters>
+ <instance-parameter name="object" transfer-ownership="none">
+ <type name="Object" c:type="UtilityObject*"/>
+ </instance-parameter>
<parameter name="path" transfer-ownership="none">
<type name="utf8" c:type="const char*"/>
</parameter>
diff --git a/tests/scanner/WarnLib-1.0-expected.gir b/tests/scanner/WarnLib-1.0-expected.gir
new file mode 100644
index 00000000..0fc0d846
--- /dev/null
+++ b/tests/scanner/WarnLib-1.0-expected.gir
@@ -0,0 +1,94 @@
+<?xml version="1.0"?>
+<!-- This file was automatically generated from C sources - DO NOT EDIT!
+To affect the contents of this file, edit the original C definitions,
+and/or use gtk-doc annotations. -->
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
+ <include name="Gio" version="2.0"/>
+ <c:include name="warnlib.h"/>
+ <namespace name="WarnLib"
+ version="1.0"
+ shared-library=""
+ c:identifier-prefixes="WarnLib"
+ c:symbol-prefixes="warnlib_">
+ <interface name="Whatever"
+ c:symbol-prefix="whatever"
+ c:type="WarnLibWhatever"
+ glib:type-name="WarnLibWhatever"
+ glib:get-type="warnlib_whatever_get_type"
+ glib:type-struct="WhateverIface">
+ <virtual-method name="do_moo" invoker="do_moo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Whatever" c:type="WarnLibWhatever*"/>
+ </instance-parameter>
+ <parameter name="arg1" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="arg2" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </virtual-method>
+ <method name="do_moo" c:identifier="warnlib_whatever_do_moo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <instance-parameter name="self" transfer-ownership="none">
+ <type name="Whatever" c:type="WarnLibWhatever*"/>
+ </instance-parameter>
+ <parameter name="arg1" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="arg2" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </method>
+ </interface>
+ <record name="WhateverIface"
+ c:type="WarnLibWhateverIface"
+ glib:is-gtype-struct-for="Whatever">
+ <field name="parent_iface">
+ <type name="GObject.TypeInterface" c:type="GTypeInterface"/>
+ </field>
+ <field name="do_moo">
+ <callback name="do_moo">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ <parameter name="self" transfer-ownership="none">
+ <type name="Whatever" c:type="WarnLibWhatever*"/>
+ </parameter>
+ <parameter name="arg1" transfer-ownership="none">
+ <type name="gint" c:type="int"/>
+ </parameter>
+ <parameter name="arg2" transfer-ownership="none">
+ <type name="gpointer" c:type="gpointer"/>
+ </parameter>
+ </parameters>
+ </callback>
+ </field>
+ </record>
+ <function name="throw_unpaired"
+ c:identifier="warnlib_throw_unpaired"
+ throws="1">
+ <return-value transfer-ownership="none">
+ <type name="gboolean" c:type="gboolean"/>
+ </return-value>
+ </function>
+ <function name="unpaired_error_quark"
+ c:identifier="warnlib_unpaired_error_quark">
+ <return-value transfer-ownership="none">
+ <type name="GLib.Quark" c:type="GQuark"/>
+ </return-value>
+ </function>
+ </namespace>
+</repository>
diff --git a/tests/scanner/annotation.c b/tests/scanner/annotation.c
index d23239d5..0a92d3a1 100644
--- a/tests/scanner/annotation.c
+++ b/tests/scanner/annotation.c
@@ -3,7 +3,7 @@
char backslash_parsing_tester = '\\';
-G_DEFINE_TYPE (AnnotationObject, annotation_object, G_TYPE_OBJECT);
+G_DEFINE_TYPE (RegressAnnotationObject, regress_annotation_object, G_TYPE_OBJECT);
enum {
PROP_0,
@@ -20,13 +20,13 @@ enum {
LAST_SIGNAL
};
-static guint annotation_object_signals[LAST_SIGNAL] = { 0 };
+static guint regress_annotation_object_signals[LAST_SIGNAL] = { 0 };
static void
-annotation_object_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+regress_annotation_object_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
switch (prop_id)
{
@@ -43,10 +43,10 @@ annotation_object_set_property (GObject *object,
}
static void
-annotation_object_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+regress_annotation_object_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
switch (prop_id)
{
@@ -63,18 +63,18 @@ annotation_object_get_property (GObject *object,
}
static void
-annotation_object_class_init (AnnotationObjectClass *klass)
+regress_annotation_object_class_init (RegressAnnotationObjectClass *klass)
{
GObjectClass *gobject_class;
gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->set_property = annotation_object_set_property;
- gobject_class->get_property = annotation_object_get_property;
+ gobject_class->set_property = regress_annotation_object_set_property;
+ gobject_class->get_property = regress_annotation_object_get_property;
/**
- * AnnotationObject::string-signal:
- * @annotation: the annotation object
+ * RegressAnnotationObject::string-signal:
+ * @regress_annotation: the regress_annotation object
* @string: (type utf8): a string
*
* This is a signal which has a broken signal handler,
@@ -83,7 +83,7 @@ annotation_object_class_init (AnnotationObjectClass *klass)
* Since: 1.0
* Deprecated: 1.2: Use other-signal instead
*/
- annotation_object_signals[STRING_SIGNAL] =
+ regress_annotation_object_signals[STRING_SIGNAL] =
g_signal_new ("string-signal",
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_LAST,
@@ -93,14 +93,14 @@ annotation_object_class_init (AnnotationObjectClass *klass)
G_TYPE_NONE, 1, G_TYPE_POINTER);
/**
- * AnnotationObject::list-signal:
- * @annotation: the annotation object
+ * RegressAnnotationObject::list-signal:
+ * @regress_annotation: the regress_annotation object
* @list: (type GLib.List) (element-type utf8) (transfer container): a list of strings
*
* This is a signal which takes a list of strings, but it's not
* known by GObject as it's only marked as G_TYPE_POINTER
*/
- annotation_object_signals[LIST_SIGNAL] =
+ regress_annotation_object_signals[LIST_SIGNAL] =
g_signal_new ("list-signal",
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_LAST,
@@ -110,13 +110,13 @@ annotation_object_class_init (AnnotationObjectClass *klass)
G_TYPE_NONE, 1, G_TYPE_POINTER);
/**
- * AnnotationObject::doc-empty-arg-parsing:
- * @annotation: the annotation object
+ * RegressAnnotationObject::doc-empty-arg-parsing:
+ * @regress_annotation: the regress_annotation object
* @arg1:
*
* This signal tests an empty document argument (@arg1)
*/
- annotation_object_signals[DOC_EMPTY_ARG_PARSING] =
+ regress_annotation_object_signals[DOC_EMPTY_ARG_PARSING] =
g_signal_new ("doc-empty-arg-parsing",
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_LAST,
@@ -126,8 +126,8 @@ annotation_object_class_init (AnnotationObjectClass *klass)
G_TYPE_NONE, 1, G_TYPE_POINTER);
/**
- * AnnotationObject::attribute-signal:
- * @annotation: the annotation object
+ * RegressAnnotationObject::attribute-signal:
+ * @regress_annotation: the regress_annotation object
* @arg1: (attribute some.annotation.foo1 val1): a value
* @arg2: (attribute some.annotation.foo2 val2): another value
*
@@ -135,7 +135,7 @@ annotation_object_class_init (AnnotationObjectClass *klass)
*
* Returns: (attribute some.annotation.foo3 val3): the return value
*/
- annotation_object_signals[ATTRIBUTE_SIGNAL] =
+ regress_annotation_object_signals[ATTRIBUTE_SIGNAL] =
g_signal_new ("attribute-signal",
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_LAST,
@@ -148,7 +148,7 @@ annotation_object_class_init (AnnotationObjectClass *klass)
G_TYPE_STRING);
/**
- * AnnotationObject:string-property:
+ * RegressAnnotationObject:string-property:
*
* This is a property which is a string
*
@@ -163,9 +163,9 @@ annotation_object_class_init (AnnotationObjectClass *klass)
NULL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
/**
- * AnnotationObject:function-property:
+ * RegressAnnotationObject:function-property:
*
- * Type: AnnotationCallback
+ * Type: RegressAnnotationCallback
*/
g_object_class_install_property (gobject_class,
PROP_FUNCTION_PROPERTY,
@@ -175,7 +175,7 @@ annotation_object_class_init (AnnotationObjectClass *klass)
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
/**
- * AnnotationObject:tab-property:
+ * RegressAnnotationObject:tab-property:
*
* This is a property annotation intentionally indented with a mix
* of tabs and strings to test the tab handling capabilities of the scanner.
@@ -192,25 +192,25 @@ annotation_object_class_init (AnnotationObjectClass *klass)
}
static void
-annotation_object_init (AnnotationObject *object)
+regress_annotation_object_init (RegressAnnotationObject *object)
{
}
/**
- * annotation_object_method:
+ * regress_annotation_object_method:
* @object: a #GObject
*
* Return value: an int
**/
gint
-annotation_object_method (AnnotationObject *object)
+regress_annotation_object_method (RegressAnnotationObject *object)
{
return 1;
}
/**
- * annotation_object_out:
+ * regress_annotation_object_out:
* @object: a #GObject
* @outarg: (out): This is an argument test
*
@@ -219,14 +219,14 @@ annotation_object_method (AnnotationObject *object)
* Return value: an int
*/
gint
-annotation_object_out (AnnotationObject *object, int *outarg)
+regress_annotation_object_out (RegressAnnotationObject *object, int *outarg)
{
*outarg = 2;
return 1;
}
/**
- * annotation_object_in:
+ * regress_annotation_object_in:
* @object: a #GObject
* @inarg: (in) (transfer none): This is an argument test
*
@@ -235,14 +235,14 @@ annotation_object_out (AnnotationObject *object, int *outarg)
* Return value: an int
*/
gint
-annotation_object_in (AnnotationObject *object, int *inarg)
+regress_annotation_object_in (RegressAnnotationObject *object, int *inarg)
{
return *inarg;
}
/**
- * annotation_object_inout:
+ * regress_annotation_object_inout:
* @object: a #GObject
* @inoutarg: (inout): This is an argument test
*
@@ -251,13 +251,13 @@ annotation_object_in (AnnotationObject *object, int *inarg)
* Return value: an int
*/
gint
-annotation_object_inout (AnnotationObject *object, int *inoutarg)
+regress_annotation_object_inout (RegressAnnotationObject *object, int *inoutarg)
{
return *inoutarg += 1;
}
/**
- * annotation_object_inout2:
+ * regress_annotation_object_inout2:
* @object: a #GObject
* @inoutarg: (inout): This is an argument test
*
@@ -266,14 +266,14 @@ annotation_object_inout (AnnotationObject *object, int *inoutarg)
* Return value: an int
*/
gint
-annotation_object_inout2 (AnnotationObject *object, int *inoutarg)
+regress_annotation_object_inout2 (RegressAnnotationObject *object, int *inoutarg)
{
return *inoutarg += 1;
}
/**
- * annotation_object_inout3:
+ * regress_annotation_object_inout3:
* @object: a #GObject
* @inoutarg: (inout) (allow-none): This is an argument test
*
@@ -282,7 +282,7 @@ annotation_object_inout2 (AnnotationObject *object, int *inoutarg)
* Return value: an int
*/
gint
-annotation_object_inout3 (AnnotationObject *object, int *inoutarg)
+regress_annotation_object_inout3 (RegressAnnotationObject *object, int *inoutarg)
{
if (inoutarg)
return *inoutarg + 1;
@@ -290,7 +290,7 @@ annotation_object_inout3 (AnnotationObject *object, int *inoutarg)
}
/**
- * annotation_object_calleeowns:
+ * regress_annotation_object_calleeowns:
* @object: a #GObject
* @toown: (out): a #GObject
*
@@ -299,14 +299,14 @@ annotation_object_inout3 (AnnotationObject *object, int *inoutarg)
* Return value: an int
*/
gint
-annotation_object_calleeowns (AnnotationObject *object, GObject **toown)
+regress_annotation_object_calleeowns (RegressAnnotationObject *object, GObject **toown)
{
return 1;
}
/**
- * annotation_object_calleesowns:
+ * regress_annotation_object_calleesowns:
* @object: a #GObject
* @toown1: (out) (transfer full): a #GObject
* @toown2: (out) (transfer none): a #GObject
@@ -316,16 +316,16 @@ annotation_object_calleeowns (AnnotationObject *object, GObject **toown)
* Return value: an int
*/
gint
-annotation_object_calleesowns (AnnotationObject *object,
- GObject **toown1,
- GObject **toown2)
+regress_annotation_object_calleesowns (RegressAnnotationObject *object,
+ GObject **toown1,
+ GObject **toown2)
{
return 1;
}
/**
- * annotation_object_get_strings:
+ * regress_annotation_object_get_strings:
* @object: a #GObject
*
* This is a test for returning a list of strings, where
@@ -334,16 +334,16 @@ annotation_object_calleesowns (AnnotationObject *object,
* Return value: (element-type utf8) (transfer full): list of strings
*/
GList*
-annotation_object_get_strings (AnnotationObject *object)
+regress_annotation_object_get_strings (RegressAnnotationObject *object)
{
GList *list = NULL;
- list = g_list_prepend (list, g_strdup ("annotation"));
+ list = g_list_prepend (list, g_strdup ("regress_annotation"));
list = g_list_prepend (list, g_strdup ("bar"));
return list;
}
/**
- * annotation_object_get_hash:
+ * regress_annotation_object_get_hash:
* @object: a #GObject
*
* This is a test for returning a hash table mapping strings to
@@ -352,7 +352,7 @@ annotation_object_get_strings (AnnotationObject *object)
* Return value: (element-type utf8 GObject) (transfer full): hash table
*/
GHashTable*
-annotation_object_get_hash (AnnotationObject *object)
+regress_annotation_object_get_hash (RegressAnnotationObject *object)
{
GHashTable *hash = g_hash_table_new_full (g_str_hash, g_str_equal,
g_free, g_object_unref);
@@ -362,27 +362,27 @@ annotation_object_get_hash (AnnotationObject *object)
}
/**
- * annotation_object_with_voidp:
+ * regress_annotation_object_with_voidp:
* @data: Opaque pointer handle
*/
void
-annotation_object_with_voidp (AnnotationObject *object, void *data)
+regress_annotation_object_with_voidp (RegressAnnotationObject *object, void *data)
{
}
/**
- * annotation_object_get_objects:
+ * regress_annotation_object_get_objects:
* @object: a #GObject
*
* This is a test for returning a list of objects.
* The list itself should be freed, but not the internal objects,
* intentionally similar example to gtk_container_get_children
*
- * Return value: (element-type AnnotationObject) (transfer container): list of objects
+ * Return value: (element-type RegressAnnotationObject) (transfer container): list of objects
*/
GSList*
-annotation_object_get_objects (AnnotationObject *object)
+regress_annotation_object_get_objects (RegressAnnotationObject *object)
{
GSList *list = NULL;
list = g_slist_prepend (list, object);
@@ -390,7 +390,7 @@ annotation_object_get_objects (AnnotationObject *object)
}
/**
- * annotation_object_create_object:
+ * regress_annotation_object_create_object:
* @object: a #GObject
*
* Test returning a caller-owned object
@@ -398,39 +398,39 @@ annotation_object_get_objects (AnnotationObject *object)
* Return value: (transfer full): The object
**/
GObject*
-annotation_object_create_object (AnnotationObject *object)
+regress_annotation_object_create_object (RegressAnnotationObject *object)
{
- return g_object_ref (object);
+ return g_object_ref (object);
}
/**
- * annotation_object_use_buffer:
+ * regress_annotation_object_use_buffer:
* @object: a #GObject
*
**/
void
-annotation_object_use_buffer (AnnotationObject *object,
- guchar *bytes)
+regress_annotation_object_use_buffer (RegressAnnotationObject *object,
+ guchar *bytes)
{
}
/**
- * annotation_object_compute_sum:
+ * regress_annotation_object_compute_sum:
* @object: a #GObject
* @nums: (array): Sequence of numbers
*
* Test taking a zero-terminated array
**/
void
-annotation_object_compute_sum (AnnotationObject *object,
- int *nums)
+regress_annotation_object_compute_sum (RegressAnnotationObject *object,
+ int *nums)
{
}
/**
- * annotation_object_compute_sum_n:
+ * regress_annotation_object_compute_sum_n:
* @object: a #GObject
* @nums: (array length=n_nums zero-terminated=0): Sequence of
* numbers that are zero-terminated
@@ -439,16 +439,16 @@ annotation_object_compute_sum (AnnotationObject *object,
* Test taking an array with length parameter
**/
void
-annotation_object_compute_sum_n(AnnotationObject *object,
- int *nums,
- int n_nums)
+regress_annotation_object_compute_sum_n(RegressAnnotationObject *object,
+ int *nums,
+ int n_nums)
{
}
/**
- * annotation_object_compute_sum_nz:
- * @object: a #AnnotationObject
+ * regress_annotation_object_compute_sum_nz:
+ * @object: a #RegressAnnotationObject
* @nums: (array length=n_nums zero-terminated=1): Sequence of numbers that
* are zero-terminated
* @n_nums: Length of number array
@@ -456,32 +456,32 @@ annotation_object_compute_sum_n(AnnotationObject *object,
* Test taking a zero-terminated array with length parameter
**/
void
-annotation_object_compute_sum_nz(AnnotationObject *object,
- int *nums,
- int n_nums)
+regress_annotation_object_compute_sum_nz(RegressAnnotationObject *object,
+ int *nums,
+ int n_nums)
{
}
/**
- * annotation_object_parse_args:
- * @object: a #AnnotationObject
+ * regress_annotation_object_parse_args:
+ * @object: a #RegressAnnotationObject
* @argc: (inout): Length of the argument vector
* @argv: (inout) (array length=argc zero-terminated=1): Argument vector
*
* Test taking a zero-terminated array with length parameter
**/
void
-annotation_object_parse_args(AnnotationObject *object,
- int *argc,
- char ***argv)
+regress_annotation_object_parse_args(RegressAnnotationObject *object,
+ int *argc,
+ char ***argv)
{
}
/**
- * annotation_object_string_out:
- * @object: a #AnnotationObject
+ * regress_annotation_object_string_out:
+ * @object: a #RegressAnnotationObject
* @str_out: (out) (transfer full): string return value
*
* Test returning a string as an out parameter
@@ -489,63 +489,63 @@ annotation_object_parse_args(AnnotationObject *object,
* Returns: some boolean
**/
gboolean
-annotation_object_string_out(AnnotationObject *object,
- char **str_out)
+regress_annotation_object_string_out(RegressAnnotationObject *object,
+ char **str_out)
{
return FALSE;
}
/**
- * annotation_object_foreach:
- * @object: a #AnnotationObject
+ * regress_annotation_object_foreach:
+ * @object: a #RegressAnnotationObject
* @func: (scope call): Callback to invoke
* @user_data: Callback user data
*
* Test taking a call-scoped callback
**/
void
-annotation_object_foreach (AnnotationObject *object,
- AnnotationForeachFunc func,
- gpointer user_data)
+regress_annotation_object_foreach (RegressAnnotationObject *object,
+ RegressAnnotationForeachFunc func,
+ gpointer user_data)
{
-
+
}
/**
- * annotation_object_set_data:
- * @object: a #AnnotationObject
+ * regress_annotation_object_set_data:
+ * @object: a #RegressAnnotationObject
* @data: (array length=length): The data
* @length: Length of the data
*
* Test taking a guchar * with a length.
**/
void
-annotation_object_set_data (AnnotationObject *object,
- const guchar *data,
- gsize length)
+regress_annotation_object_set_data (RegressAnnotationObject *object,
+ const guchar *data,
+ gsize length)
{
-
+
}
/**
- * annotation_object_set_data2:
- * @object: a #AnnotationObject
+ * regress_annotation_object_set_data2:
+ * @object: a #RegressAnnotationObject
* @data: (array length=length) (element-type gint8): The data
* @length: Length of the data
*
* Test taking a gchar * with a length.
**/
void
-annotation_object_set_data2 (AnnotationObject *object,
- const gchar *data,
- gsize length)
+regress_annotation_object_set_data2 (RegressAnnotationObject *object,
+ const gchar *data,
+ gsize length)
{
-
+
}
/**
- * annotation_object_set_data3:
- * @object: a #AnnotationObject
+ * regress_annotation_object_set_data3:
+ * @object: a #RegressAnnotationObject
* @data: (array length=length) (element-type guint8): The data
* @length: Length of the data
*
@@ -553,233 +553,233 @@ annotation_object_set_data2 (AnnotationObject *object,
* type.
**/
void
-annotation_object_set_data3 (AnnotationObject *object,
- gpointer data,
- gsize length)
+regress_annotation_object_set_data3 (RegressAnnotationObject *object,
+ gpointer data,
+ gsize length)
{
-
+
}
/**
- * annotation_object_allow_none:
+ * regress_annotation_object_allow_none:
* @object: a #GObject
* @somearg: (allow-none):
*
* Returns: (transfer none): %NULL always
**/
GObject*
-annotation_object_allow_none (AnnotationObject *object, const gchar *somearg)
+regress_annotation_object_allow_none (RegressAnnotationObject *object, const gchar *somearg)
{
return NULL;
}
/**
- * annotation_object_notrans:
+ * regress_annotation_object_notrans:
* @object: a #GObject
*
* Returns: (transfer none): An object, not referenced
**/
GObject*
-annotation_object_notrans (AnnotationObject *object)
+regress_annotation_object_notrans (RegressAnnotationObject *object)
{
return NULL;
}
/**
- * annotation_object_do_not_use:
+ * regress_annotation_object_do_not_use:
* @object: a #GObject
*
* Returns: (transfer none): %NULL always
- * Deprecated: 0.12: Use annotation_object_create_object() instead.
+ * Deprecated: 0.12: Use regress_annotation_object_create_object() instead.
**/
GObject*
-annotation_object_do_not_use (AnnotationObject *object)
+regress_annotation_object_do_not_use (RegressAnnotationObject *object)
{
return NULL;
}
/**
- * annotation_object_watch: (skip)
- * @object: A #AnnotationObject
+ * regress_annotation_object_watch: (skip)
+ * @object: A #RegressAnnotationObject
* @func: The callback
* @user_data: The callback data
*
* This is here just for the sake of being overriden by its
- * annotation_object_watch_full().
+ * regress_annotation_object_watch_full().
*/
void
-annotation_object_watch (AnnotationObject *object,
- AnnotationForeachFunc func,
- gpointer user_data)
+regress_annotation_object_watch (RegressAnnotationObject *object,
+ RegressAnnotationForeachFunc func,
+ gpointer user_data)
{
}
/**
- * annotation_object_watch_full:
- * @object: A #AnnotationObject
+ * regress_annotation_object_watch_full:
+ * @object: A #RegressAnnotationObject
* @func: The callback
* @user_data: The callback data
* @destroy: Destroy notification
*
* Test overriding via the "Rename To" annotation.
*
- * Rename to: annotation_object_watch
+ * Rename to: regress_annotation_object_watch
*/
void
-annotation_object_watch_full (AnnotationObject *object,
- AnnotationForeachFunc func,
- gpointer user_data,
- GDestroyNotify destroy)
+regress_annotation_object_watch_full (RegressAnnotationObject *object,
+ RegressAnnotationForeachFunc func,
+ gpointer user_data,
+ GDestroyNotify destroy)
{
}
/**
- * annotation_object_hidden_self:
- * @object: (type AnnotationObject): A #AnnotationObject
+ * regress_annotation_object_hidden_self:
+ * @object: (type RegressAnnotationObject): A #RegressAnnotationObject
**/
void
-annotation_object_hidden_self (gpointer object)
+regress_annotation_object_hidden_self (gpointer object)
{
}
/**
- * annotation_init:
- * @argc: (inout): The number of args.
+ * regress_annotation_init:
+ * @argc: (inout): The number of args.
* @argv: (inout) (array length=argc): The arguments.
**/
void
-annotation_init (int *argc, char ***argv)
+regress_annotation_init (int *argc, char ***argv)
{
}
/**
- * annotation_return_array:
+ * regress_annotation_return_array:
* @length: (out): Number of return values
*
* Return value: (transfer full) (array length=length): The return value
**/
char **
-annotation_return_array (int *length)
+regress_annotation_return_array (int *length)
{
return NULL;
}
/**
- * annotation_string_zero_terminated:
+ * regress_annotation_string_zero_terminated:
*
* Return value: (transfer full) (array zero-terminated=1): The return value
**/
char **
-annotation_string_zero_terminated (void)
+regress_annotation_string_zero_terminated (void)
{
return NULL;
}
/**
- * annotation_string_zero_terminated_out:
+ * regress_annotation_string_zero_terminated_out:
* @out: (array zero-terminated=1) (inout):
**/
void
-annotation_string_zero_terminated_out (char ***out)
+regress_annotation_string_zero_terminated_out (char ***out)
{
}
/**
- * annotation_versioned:
+ * regress_annotation_versioned:
*
* Since: 0.6
**/
void
-annotation_versioned (void)
+regress_annotation_versioned (void)
{
}
/**
- * annotation_string_array_length:
+ * regress_annotation_string_array_length:
* @n_properties:
* @properties: (array length=n_properties) (element-type utf8):
*/
void
-annotation_string_array_length (guint n_properties, const gchar * const properties[])
+regress_annotation_string_array_length (guint n_properties, const gchar * const properties[])
{
}
/**
- * annotation_object_extra_annos:
+ * regress_annotation_object_extra_annos:
*
* Attributes: (org.foobar testvalue)
*/
void
-annotation_object_extra_annos (AnnotationObject *object)
+regress_annotation_object_extra_annos (RegressAnnotationObject *object)
{
}
/**
- * annotation_custom_destroy:
+ * regress_annotation_custom_destroy:
* @callback: (destroy destroy) (closure data): Destroy notification
*
* Test messing up the heuristic of closure/destroy-notification
* detection, and fixing it via annotations.
*/
void
-annotation_custom_destroy (AnnotationCallback callback,
- AnnotationNotifyFunc destroy,
- gpointer data)
+regress_annotation_custom_destroy (RegressAnnotationCallback callback,
+ RegressAnnotationNotifyFunc destroy,
+ gpointer data)
{
}
/**
- * annotation_get_source_file:
+ * regress_annotation_get_source_file:
*
* Return value: (type filename) (transfer full): Source file
*/
char *
-annotation_get_source_file (void)
+regress_annotation_get_source_file (void)
{
return NULL;
}
/**
- * annotation_set_source_file:
+ * regress_annotation_set_source_file:
* @fname: (type filename): Source file
*
*/
void
-annotation_set_source_file (const char *fname)
+regress_annotation_set_source_file (const char *fname)
{
}
/**
- * annotation_ptr_array:
- * @array: (element-type GLib.Value): the array
+ * regress_annotation_ptr_array:
+ * @array: (element-type GObject.Value): the array
*/
void
-annotation_ptr_array (GPtrArray *array)
+regress_annotation_ptr_array (GPtrArray *array)
{
}
/**
- * annotation_attribute_func:
- * @object: A #AnnotationObject.
+ * regress_annotation_attribute_func:
+ * @object: A #RegressAnnotationObject.
* @data: (attribute some.annotation value) (attribute another.annotation blahvalue): Some data.
*
* Returns: (attribute some.other.annotation value2) (attribute yet.another.annotation another_value): The return value.
*/
gint
-annotation_attribute_func (AnnotationObject *object,
- const gchar *data)
+regress_annotation_attribute_func (RegressAnnotationObject *object,
+ const gchar *data)
{
return 42;
}
/**
- * annotation_invalid_annotation:
+ * regress_annotation_invalid_regress_annotation:
* @foo: some text (e.g. example) or else
*/
void
-annotation_invalid_annotation (int foo)
+regress_annotation_invalid_regress_annotation (int foo)
{
}
@@ -789,47 +789,47 @@ char backslash_parsing_tester_2 = '\\';
/**
- * annotation_test_parsing_bug630862:
+ * regress_annotation_test_parsing_bug630862:
*
* See https://bugzilla.gnome.org/show_bug.cgi?id=630862
*
* Returns: (transfer none): An object, note the colon:in here
*/
GObject *
-annotation_test_parsing_bug630862 (void)
+regress_annotation_test_parsing_bug630862 (void)
{
return NULL;
}
-/**
- * annotation_space_after_comment_bug631690:
+/**
+ * regress_annotation_space_after_comment_bug631690:
*
* Explicitly test having a space after the ** here.
*/
void
-annotation_space_after_comment_bug631690 (void)
+regress_annotation_space_after_comment_bug631690 (void)
{
}
/**
- * annotation_return_filename:
+ * regress_annotation_return_filename:
*
* Returns: (type filename): An annotated filename
*/
gchar*
-annotation_return_filename (void)
+regress_annotation_return_filename (void)
{
return "a utf-8 filename";
}
/**
- * annotation_transfer_floating:
+ * regress_annotation_transfer_floating:
*
* Returns: (transfer floating): A floating object
*/
GObject *
-annotation_transfer_floating(void)
+regress_annotation_transfer_floating(void)
{
return NULL;
}
diff --git a/tests/scanner/annotation.h b/tests/scanner/annotation.h
index b3b4bd4c..66470cbb 100644
--- a/tests/scanner/annotation.h
+++ b/tests/scanner/annotation.h
@@ -1,5 +1,5 @@
-#ifndef __ANNOTATION_OBJECT_H__
-#define __ANNOTATION_OBJECT_H__
+#ifndef __REGRESS_ANNOTATION_OBJECT_H__
+#define __REGRESS_ANNOTATION_OBJECT_H__
#include <glib-object.h>
@@ -7,190 +7,192 @@ typedef enum /*< flags,prefix=ANN >*/
{
ANN_FLAG_FOO = 1,
ANN_FLAG_BAR = 2
-} AnnotationBitfield;
+} RegressAnnotationBitfield;
/**
- * AnnotationCallback:
+ * RegressAnnotationCallback:
* @in: (in) (transfer none): array of ints
*
* This is a callback.
* Return value: (transfer none): array of ints
*/
-typedef const gint* (*AnnotationCallback) (const gint *in);
+typedef const gint* (*RegressAnnotationCallback) (const gint *in);
/**
- * AnnotationListCallback:
+ * RegressAnnotationListCallback:
* @in: (in) (transfer none) (element-type utf8): list of strings
*
* This is a callback taking a list.
* Return value: (transfer container) (element-type utf8): list of strings
*/
-typedef GList* (*AnnotationListCallback) (GList *in);
+typedef GList* (*RegressAnnotationListCallback) (GList *in);
/**
- * AnnotationNotifyFunc:
+ * RegressAnnotationNotifyFunc:
* @data: (closure): The user data
*
* This is a callback with a 'closure' argument that is not named
* 'user_data' and hence has to be annotated.
*/
-typedef void (*AnnotationNotifyFunc) (gpointer data);
+typedef void (*RegressAnnotationNotifyFunc) (gpointer data);
/**
- * AnnotationObject:
+ * RegressAnnotationObject:
*
* This is an object used to test annotations.
*
* Attributes: (org.example.Test cows)
*/
-typedef struct _AnnotationObject AnnotationObject;
-typedef struct _AnnotationObjectClass AnnotationObjectClass;
+typedef struct _RegressAnnotationObject RegressAnnotationObject;
+typedef struct _RegressAnnotationObjectClass RegressAnnotationObjectClass;
-typedef void (*AnnotationForeachFunc) (AnnotationObject *object,
+typedef void (*RegressAnnotationForeachFunc) (RegressAnnotationObject *object,
const char *item,
gpointer user_data);
-struct _AnnotationObject
+struct _RegressAnnotationObject
{
GObject parent_instance;
};
-struct _AnnotationObjectClass
+struct _RegressAnnotationObjectClass
{
GObjectClass parent_class;
};
-GType annotation_object_get_type (void);
+GType regress_annotation_object_get_type (void);
-gint annotation_object_method (AnnotationObject *object);
-gint annotation_object_out (AnnotationObject *object,
+gint regress_annotation_object_method (RegressAnnotationObject *object);
+gint regress_annotation_object_out (RegressAnnotationObject *object,
int *outarg);
-GObject* annotation_object_create_object(AnnotationObject *object);
-GObject* annotation_object_allow_none (AnnotationObject *object,
+GObject* regress_annotation_object_create_object(RegressAnnotationObject *object);
+GObject* regress_annotation_object_allow_none (RegressAnnotationObject *object,
const gchar *somearg);
-GObject* annotation_object_notrans (AnnotationObject *object);
-gint annotation_object_inout (AnnotationObject *object,
+GObject* regress_annotation_object_notrans (RegressAnnotationObject *object);
+gint regress_annotation_object_inout (RegressAnnotationObject *object,
int *inoutarg);
-gint annotation_object_inout2 (AnnotationObject *object,
+gint regress_annotation_object_inout2 (RegressAnnotationObject *object,
int *inoutarg);
-gint annotation_object_inout3 (AnnotationObject *object,
+gint regress_annotation_object_inout3 (RegressAnnotationObject *object,
int *inoutarg);
-gint annotation_object_in (AnnotationObject *object,
+gint regress_annotation_object_in (RegressAnnotationObject *object,
int *inarg);
-gint annotation_object_calleeowns (AnnotationObject *object,
+gint regress_annotation_object_calleeowns (RegressAnnotationObject *object,
GObject **toown);
-gint annotation_object_calleesowns (AnnotationObject *object,
+gint regress_annotation_object_calleesowns (RegressAnnotationObject *object,
GObject **toown1,
GObject **toown2);
-GList* annotation_object_get_strings (AnnotationObject *object);
-GHashTable*annotation_object_get_hash (AnnotationObject *object);
-void annotation_object_with_voidp (AnnotationObject *object,
+GList* regress_annotation_object_get_strings (RegressAnnotationObject *object);
+GHashTable*regress_annotation_object_get_hash (RegressAnnotationObject *object);
+void regress_annotation_object_with_voidp (RegressAnnotationObject *object,
void *data);
-GSList* annotation_object_get_objects (AnnotationObject *object);
+GSList* regress_annotation_object_get_objects (RegressAnnotationObject *object);
-void annotation_object_use_buffer (AnnotationObject *object,
+void regress_annotation_object_use_buffer (RegressAnnotationObject *object,
guchar *bytes);
-void annotation_object_compute_sum (AnnotationObject *object,
+void regress_annotation_object_compute_sum (RegressAnnotationObject *object,
int *nums);
-void annotation_object_compute_sum_n(AnnotationObject *object,
+void regress_annotation_object_compute_sum_n(RegressAnnotationObject *object,
int *nums,
int n_nums);
-void annotation_object_compute_sum_nz(AnnotationObject *object,
+void regress_annotation_object_compute_sum_nz(RegressAnnotationObject *object,
int *nums,
int n_nums);
-void annotation_object_parse_args (AnnotationObject *object,
+void regress_annotation_object_parse_args (RegressAnnotationObject *object,
int *argc,
char ***argv);
-gboolean annotation_object_string_out (AnnotationObject *object,
+gboolean regress_annotation_object_string_out (RegressAnnotationObject *object,
char **str_out);
-void annotation_object_foreach (AnnotationObject *object,
- AnnotationForeachFunc func,
+void regress_annotation_object_foreach (RegressAnnotationObject *object,
+ RegressAnnotationForeachFunc func,
gpointer user_data);
-void annotation_object_set_data (AnnotationObject *object,
+void regress_annotation_object_set_data (RegressAnnotationObject *object,
const guchar *data,
gsize length);
-void annotation_object_set_data2 (AnnotationObject *object,
+void regress_annotation_object_set_data2 (RegressAnnotationObject *object,
const gchar *data,
gsize length);
-void annotation_object_set_data3 (AnnotationObject *object,
+void regress_annotation_object_set_data3 (RegressAnnotationObject *object,
gpointer data,
gsize length);
-GObject* annotation_object_do_not_use (AnnotationObject *object);
-void annotation_object_watch (AnnotationObject *object,
- AnnotationForeachFunc func,
+GObject* regress_annotation_object_do_not_use (RegressAnnotationObject *object);
+void regress_annotation_object_watch (RegressAnnotationObject *object,
+ RegressAnnotationForeachFunc func,
gpointer user_data);
-void annotation_object_watch_full (AnnotationObject *object,
- AnnotationForeachFunc func,
+void regress_annotation_object_watch_full (RegressAnnotationObject *object,
+ RegressAnnotationForeachFunc func,
gpointer user_data,
GDestroyNotify destroy);
-void annotation_object_hidden_self (gpointer object);
+void regress_annotation_object_hidden_self (gpointer object);
-void annotation_init (int *argc,
+void regress_annotation_init (int *argc,
char ***argv);
-char ** annotation_return_array (int *length);
-void annotation_versioned (void);
-char ** annotation_string_zero_terminated (void);
-void annotation_string_zero_terminated_out (char ***out);
+char ** regress_annotation_return_array (int *length);
+void regress_annotation_versioned (void);
+char ** regress_annotation_string_zero_terminated (void);
+void regress_annotation_string_zero_terminated_out (char ***out);
-void annotation_string_array_length (guint n_properties, const gchar * const properties[]);
+void regress_annotation_string_array_length (guint n_properties, const gchar * const properties[]);
-void annotation_object_extra_annos (AnnotationObject *object);
+void regress_annotation_object_extra_annos (RegressAnnotationObject *object);
-void annotation_custom_destroy (AnnotationCallback callback,
- AnnotationNotifyFunc destroy,
+void regress_annotation_custom_destroy (RegressAnnotationCallback callback,
+ RegressAnnotationNotifyFunc destroy,
gpointer data);
-char * annotation_get_source_file (void);
-void annotation_set_source_file (const char *fname);
+char * regress_annotation_get_source_file (void);
+void regress_annotation_set_source_file (const char *fname);
-gint annotation_attribute_func (AnnotationObject *object,
+gint regress_annotation_attribute_func (RegressAnnotationObject *object,
const gchar *data);
-void annotation_invalid_annotation (int foo);
+void regress_annotation_invalid_regress_annotation (int foo);
/**
- * AnnotationStruct:
+ * RegressAnnotationStruct:
*
* This is a test of an array of object in an field of a struct.
*/
-struct AnnotationStruct
+struct RegressAnnotationStruct
{
- AnnotationObject *objects[10];
+ RegressAnnotationObject *objects[10];
};
-void annotation_ptr_array (GPtrArray *array);
+void regress_annotation_ptr_array (GPtrArray *array);
-GObject * annotation_test_parsing_bug630862 (void);
+GObject * regress_annotation_test_parsing_bug630862 (void);
-void annotation_space_after_comment_bug631690 (void);
+void regress_annotation_space_after_comment_bug631690 (void);
-gchar* annotation_return_filename (void);
+gchar* regress_annotation_return_filename (void);
-GObject * annotation_transfer_floating(void);
+GObject * regress_annotation_transfer_floating(void);
/* This one we can handle properly */
-#define ANNOTATION_CALCULATED_DEFINE (10 * 10)
+#define REGRESS_ANNOTATION_CALCULATED_DEFINE (10 * 10)
/**
- * ANNOTATION_CALCULATED_LARGE:
+ * REGRESS_ANNOTATION_CALCULATED_LARGE:
*
* Constant to define a calculated large value
*
* Value: 10000000000UL
+ *
+ * Since: 1.4
*/
-#define ANNOTATION_CALCULATED_LARGE (1000 * G_GINT64_CONSTANT (10000000))
+#define REGRESS_ANNOTATION_CALCULATED_LARGE (1000 * G_GINT64_CONSTANT (10000000))
/**
- * ANNOTATION_CALCULATED_LARGE_DIV:
+ * REGRESS_ANNOTATION_CALCULATED_LARGE_DIV:
*
* Constant to define a calculated large value
*
* Value: 1000000UL
*/
-#define ANNOTATION_CALCULATED_LARGE_DIV (1000 / G_GINT64_CONSTANT (10000000))
+#define REGRESS_ANNOTATION_CALCULATED_LARGE_DIV (1000 / G_GINT64_CONSTANT (10000000))
-#endif /* __ANNOTATION_OBJECT_H__ */
+#endif /* __REGRESS_ANNOTATION_OBJECT_H__ */
diff --git a/tests/scanner/annotationparser/README b/tests/scanner/annotationparser/README
new file mode 100644
index 00000000..03cdf59d
--- /dev/null
+++ b/tests/scanner/annotationparser/README
@@ -0,0 +1,51 @@
+test_patterns.py
+================
+
+Notes
+-----
+
+The tests included within test_patterns.py are designed to torture the regular
+expression programs used to match different parts of GTK-Doc comment blocks
+by giscanner/annotationparser.py
+
+
+test_parser.py
+==============
+
+Notes
+-----
+
+- the names of directories containing test .xml and the .xml files themselves should
+ not contain the hyphen ('-') character. This because we use the directory and file
+ names to generate valid Python method names (where the hyphen character is illegal).
+
+- GTK-Doc comment blocks can contain XML fragments on their own. You can wrap such
+ comment blocks into a CDATA section to prevent the tests XML parser from doing the
+ wrong thing.
+ Occasionally, GTK-Doc comment blocks containing XML fragments can also contain CDATA
+ sections on their own. This can be handled by wrapping the GTK-Doc comment block into
+ a CDATA section as described above, and escape the embedded GTK-Doc CDATA section's
+ opening bracket "<!" with "{{!" and the matching close bracket ">" with "!}}".
+
+- *Note well* that the trailing whitespace in gi/syntax_paragraph_breaks.xml *is* expected.
+ Whatever your text editor of choice or scm du jour might claim, trailing whitespace
+ are required for these tests!
+
+
+Tests
+-----
+
+gtk-doc/*.xml:
+ The GTK-Doc comment block tests in this directory are copied verbatim from the GTK-Doc
+ test suite. Not all of these tests make sense from GTK-Doc's point of view without the
+ actual C sources they document, but are great for testing the level of understanding
+ AnnotationParser has about the GTK-Doc comment block syntax.
+
+ GTK-Doc tests originally taken at revision:
+ http://git.gnome.org/browse/gtk-doc/tree/tests?id=2a6b01253fe41412172a60f26705114b953d0a95
+
+
+gobject-introspection/*.xml:
+ GTK-Doc comment blocks specifically designed to ensure AnnotationParser does the
+ right thing and continues to function correctly. The goal is to exercise all possible
+ combinations of tags, parameters and annotations (both current and deprecated syntax).
diff --git a/tests/scanner/annotationparser/gi/annotation_allow_none.xml b/tests/scanner/annotationparser/gi/annotation_allow_none.xml
new file mode 100644
index 00000000..02db79a9
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_allow_none.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_inout:
+ * @object: a #GObject
+ * @inoutarg: (inout) (allow-none): This is an argument test
+ *
+ * This is a test for out arguments
+ *
+ * Return value: an int
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_inout</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #GObject</description>
+ </parameter>
+ <parameter>
+ <name>inoutarg</name>
+ <annotations>
+ <annotation>
+ <name>inout</name>
+ </annotation>
+ <annotation>
+ <name>allow-none</name>
+ </annotation>
+ </annotations>
+ <description>This is an argument test</description>
+ </parameter>
+ </parameters>
+ <description>This is a test for out arguments</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>an int</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_array.xml b/tests/scanner/annotationparser/gi/annotation_array.xml
new file mode 100644
index 00000000..26bb1104
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_array.xml
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_compute_sum:
+ * @nums: (array): Sequence of numbers
+ *
+ * Test taking a zero-terminated array
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_compute_sum</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>nums</name>
+ <annotations>
+ <annotation>
+ <name>array</name>
+ </annotation>
+ </annotations>
+ <description>Sequence of numbers</description>
+ </parameter>
+ </parameters>
+ <description>Test taking a zero-terminated array</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_object_compute_sum_n:
+ * @object: a #AnnotationObject
+ * @nums: (array length=n_nums zero-terminated=0): Sequence of
+ * numbers that are zero-terminated
+ * @n_nums: Length of number array
+ *
+ * Test taking an array with length parameter
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_compute_sum_n</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #AnnotationObject</description>
+ </parameter>
+ <parameter>
+ <name>nums</name>
+ <annotations>
+ <annotation>
+ <name>array</name>
+ <options>
+ <option>
+ <name>length</name>
+ <value>n_nums</value>
+ </option>
+ <option>
+ <name>zero-terminated</name>
+ <value>0</value>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>Sequence of numbers that are zero-terminated</description>
+ </parameter>
+ <parameter>
+ <name>n_nums</name>
+ <description>Length of number array</description>
+ </parameter>
+ </parameters>
+ <description>Test taking an array with length parameter</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_object_compute_sum_nz:
+ * @object: a #AnnotationObject
+ * @nums: (array length=n_nums zero-terminated=1): Sequence of numbers that
+ * are zero-terminated
+ * @n_nums: Length of number array
+ *
+ * Test taking a zero-terminated array with length parameter
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_compute_sum_nz</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #AnnotationObject</description>
+ </parameter>
+ <parameter>
+ <name>nums</name>
+ <annotations>
+ <annotation>
+ <name>array</name>
+ <options>
+ <option>
+ <name>length</name>
+ <value>n_nums</value>
+ </option>
+ <option>
+ <name>zero-terminated</name>
+ <value>1</value>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>Sequence of numbers that are zero-terminated</description>
+ </parameter>
+ <parameter>
+ <name>n_nums</name>
+ <description>Length of number array</description>
+ </parameter>
+ </parameters>
+ <description>Test taking a zero-terminated array with length parameter</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_object_parse_args:
+ * @object: a #AnnotationObject
+ * @argc: (inout): Length of the argument vector
+ * @argv: (inout) (array length=argc zero-terminated=1): Argument vector
+ *
+ * Test taking a zero-terminated array with length parameter
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_parse_args</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #AnnotationObject</description>
+ </parameter>
+ <parameter>
+ <name>argc</name>
+ <annotations>
+ <annotation>
+ <name>inout</name>
+ </annotation>
+ </annotations>
+ <description>Length of the argument vector</description>
+ </parameter>
+ <parameter>
+ <name>argv</name>
+ <annotations>
+ <annotation>
+ <name>inout</name>
+ </annotation>
+ <annotation>
+ <name>array</name>
+ <options>
+ <option>
+ <name>length</name>
+ <value>argc</value>
+ </option>
+ <option>
+ <name>zero-terminated</name>
+ <value>1</value>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>Argument vector</description>
+ </parameter>
+ </parameters>
+ <description>Test taking a zero-terminated array with length parameter</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_object_set_data:
+ * @object: a #AnnotationObject
+ * @data: (array length=length): The data
+ * @length: Length of the data
+ *
+ * Test taking a guchar * with a length.
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_set_data</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #AnnotationObject</description>
+ </parameter>
+ <parameter>
+ <name>data</name>
+ <annotations>
+ <annotation>
+ <name>array</name>
+ <options>
+ <option>
+ <name>length</name>
+ <value>length</value>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>The data</description>
+ </parameter>
+ <parameter>
+ <name>length</name>
+ <description>Length of the data</description>
+ </parameter>
+ </parameters>
+ <description>Test taking a guchar * with a length.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_string_zero_terminated:
+ * @data: (array fixed-size=2): a third value
+ *
+ * Return value: (transfer full) (array zero-terminated=1): The return value
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_string_zero_terminated</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>data</name>
+ <annotations>
+ <annotation>
+ <name>array</name>
+ <options>
+ <option>
+ <name>fixed-size</name>
+ <value>2</value>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>a third value</description>
+ </parameter>
+ </parameters>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <annotations>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>full</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>array</name>
+ <options>
+ <option>
+ <name>zero-terminated</name>
+ <value>1</value>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>The return value</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_closure.xml b/tests/scanner/annotationparser/gi/annotation_closure.xml
new file mode 100644
index 00000000..8211dc7b
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_closure.xml
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * AnnotationNotifyFunc:
+ * @data: (closure): The user data
+ *
+ * This is a callback with a 'closure' argument that is not named
+ * 'user_data' and hence has to be annotated.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>AnnotationNotifyFunc</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>data</name>
+ <annotations>
+ <annotation>
+ <name>closure</name>
+ </annotation>
+ </annotations>
+ <description>The user data</description>
+ </parameter>
+ </parameters>
+ <description>This is a callback with a 'closure' argument that is not named
+'user_data' and hence has to be annotated.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_custom_destroy:
+ * @callback: (destroy destroy) (closure data): Destroy notification
+ *
+ * Test messing up the heuristic of closure/destroy-notification
+ * detection, and fixing it via annotations.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_custom_destroy</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>callback</name>
+ <annotations>
+ <annotation>
+ <name>destroy</name>
+ <options>
+ <option>
+ <name>destroy</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>closure</name>
+ <options>
+ <option>
+ <name>data</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>Destroy notification</description>
+ </parameter>
+ </parameters>
+ <description>Test messing up the heuristic of closure/destroy-notification
+detection, and fixing it via annotations.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_constructor.xml b/tests/scanner/annotationparser/gi/annotation_constructor.xml
new file mode 100644
index 00000000..4bf3b038
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_constructor.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * regress_constructor: (constructor)
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>regress_constructor</name>
+ <annotations>
+ <annotation>
+ <name>constructor</name>
+ </annotation>
+ </annotations>
+ </identifier>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_destroy.xml b/tests/scanner/annotationparser/gi/annotation_destroy.xml
new file mode 100644
index 00000000..449dd8e1
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_destroy.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_custom_destroy:
+ * @callback: (destroy destroy) (closure data): Destroy notification
+ *
+ * Test messing up the heuristic of closure/destroy-notification
+ * detection, and fixing it via annotations.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_custom_destroy</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>callback</name>
+ <annotations>
+ <annotation>
+ <name>destroy</name>
+ <options>
+ <option>
+ <name>destroy</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>closure</name>
+ <options>
+ <option>
+ <name>data</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>Destroy notification</description>
+ </parameter>
+ </parameters>
+ <description>Test messing up the heuristic of closure/destroy-notification
+detection, and fixing it via annotations.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_element_type.xml b/tests/scanner/annotationparser/gi/annotation_element_type.xml
new file mode 100644
index 00000000..d03c4268
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_element_type.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * foo_test_array:
+ *
+ * Returns: (element-type utf8) (transfer container): returns %NULL.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>foo_test_array</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <annotations>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>utf8</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>container</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>returns %NULL.</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * RegressTestObj::sig-with-hash-prop:
+ * @self: an object
+ * @hash: (element-type utf8 GObject.Value):
+ *
+ * This test signal is like TelepathyGlib's
+ * TpAccount::status-changed
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>RegressTestObj::sig-with-hash-prop</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>an object</description>
+ </parameter>
+ <parameter>
+ <name>hash</name>
+ <annotations>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>utf8</name>
+ </option>
+ <option>
+ <name>GObject.Value</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ </parameter>
+ </parameters>
+ <description>This test signal is like TelepathyGlib's
+ TpAccount::status-changed</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * regress_test_ghash_nested_everything_return2:
+ *
+ * Another way of specifying nested parameterized types: using the
+ * element-type annotation.
+ *
+ * Return value: (element-type utf8 GLib.HashTable<utf8,utf8>) (transfer full):
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>regress_test_ghash_nested_everything_return2</name>
+ </identifier>
+ <description>Another way of specifying nested parameterized types: using the
+element-type annotation.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <annotations>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>utf8</name>
+ </option>
+ <option>
+ <name><![CDATA[GLib.HashTable<utf8,utf8>]]></name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>full</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_foreign.xml b/tests/scanner/annotationparser/gi/annotation_foreign.xml
new file mode 100644
index 00000000..11e589c5
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_foreign.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * FooForeignStruct: (foreign)
+ *
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>FooForeignStruct</name>
+ <annotations>
+ <annotation>
+ <name>foreign</name>
+ </annotation>
+ </annotations>
+ </identifier>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_get_value_func.xml b/tests/scanner/annotationparser/gi/annotation_get_value_func.xml
new file mode 100644
index 00000000..bc779943
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_get_value_func.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ "Get value func:" tag syntax
+ -->
+ <commentblock>/**
+ * RegressTestFundamentalObject:
+ *
+ * This object tests regressions...
+ *
+ * Get value func: regress_test_value_get_fundamental_object
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>RegressTestFundamentalObject</name>
+ </identifier>
+ <description>This object tests regressions...</description>
+ <tags>
+ <tag>
+ <name>get value func</name>
+ <description>regress_test_value_get_fundamental_object</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_in.xml b/tests/scanner/annotationparser/gi/annotation_in.xml
new file mode 100644
index 00000000..517f1a3f
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_in.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_in:
+ * @object: a #GObject
+ * @inarg: (in) (transfer none): This is an argument test
+ *
+ * This is a test for in arguments
+ *
+ * Return value: an int
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_in</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #GObject</description>
+ </parameter>
+ <parameter>
+ <name>inarg</name>
+ <annotations>
+ <annotation>
+ <name>in</name>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>none</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>This is an argument test</description>
+ </parameter>
+ </parameters>
+ <description>This is a test for in arguments</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>an int</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_in_out.xml b/tests/scanner/annotationparser/gi/annotation_in_out.xml
new file mode 100644
index 00000000..c8d36f45
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_in_out.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_inout:
+ * @object: a #GObject
+ * @inoutarg: (inout): This is an argument test
+ * @inoutarg2: (in-out): This is an argument test
+ *
+ * This is a test for inout arguments
+ *
+ * Return value: an int
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_inout</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #GObject</description>
+ </parameter>
+ <parameter>
+ <name>inoutarg</name>
+ <annotations>
+ <annotation>
+ <name>inout</name>
+ </annotation>
+ </annotations>
+ <description>This is an argument test</description>
+ </parameter>
+ <parameter>
+ <name>inoutarg2</name>
+ <annotations>
+ <annotation>
+ <name>in-out</name>
+ </annotation>
+ </annotations>
+ <description>This is an argument test</description>
+ </parameter>
+ </parameters>
+ <description>This is a test for inout arguments</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>an int</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_method.xml b/tests/scanner/annotationparser/gi/annotation_method.xml
new file mode 100644
index 00000000..e4d44389
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_method.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * regress_forced_method: (method)
+ * @obj: A #RegressTestObj
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>regress_forced_method</name>
+ <annotations>
+ <annotation>
+ <name>method</name>
+ </annotation>
+ </annotations>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>obj</name>
+ <description>A #RegressTestObj</description>
+ </parameter>
+ </parameters>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_out.xml b/tests/scanner/annotationparser/gi/annotation_out.xml
new file mode 100644
index 00000000..cca5e12e
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_out.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_out:
+ * @object: a #GObject
+ * @outarg: (out): This is an argument test
+ *
+ * This is a test for out arguments
+ *
+ * Return value: an int
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_out</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #GObject</description>
+ </parameter>
+ <parameter>
+ <name>outarg</name>
+ <annotations>
+ <annotation>
+ <name>out</name>
+ </annotation>
+ </annotations>
+ <description>This is an argument test</description>
+ </parameter>
+ </parameters>
+ <description>This is a test for out arguments</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>an int</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * regress_test_struct_a_clone:
+ * @a: the structure
+ * @a_out: (out caller-allocates): the cloned structure
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>regress_test_struct_a_clone</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>the structure</description>
+ </parameter>
+ <parameter>
+ <name>a_out</name>
+ <annotations>
+ <annotation>
+ <name>out</name>
+ <options>
+ <option>
+ <name>caller-allocates</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>the cloned structure</description>
+ </parameter>
+ </parameters>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * regress_test_struct_a_clone:
+ * @a: the structure
+ * @a_out: (out callee-allocates): the cloned structure
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>regress_test_struct_a_clone</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>the structure</description>
+ </parameter>
+ <parameter>
+ <name>a_out</name>
+ <annotations>
+ <annotation>
+ <name>out</name>
+ <options>
+ <option>
+ <name>callee-allocates</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>the cloned structure</description>
+ </parameter>
+ </parameters>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_ref_func.xml b/tests/scanner/annotationparser/gi/annotation_ref_func.xml
new file mode 100644
index 00000000..7850fc3f
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_ref_func.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ "Ref func:" tag syntax
+ -->
+ <commentblock>/**
+ * RegressTestFundamentalObject:
+ *
+ * This object tests regressions...
+ *
+ * Ref func: regress_test_fundamental_object_ref
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>RegressTestFundamentalObject</name>
+ </identifier>
+ <description>This object tests regressions...</description>
+ <tags>
+ <tag>
+ <name>ref func</name>
+ <description>regress_test_fundamental_object_ref</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_rename_to.xml b/tests/scanner/annotationparser/gi/annotation_rename_to.xml
new file mode 100644
index 00000000..390f4878
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_rename_to.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ "Rename to:" tag syntax
+ -->
+ <commentblock>/**
+ * annotation_object_watch_full:
+ * @object: A #AnnotationObject
+ * @func: The callback
+ * @user_data: The callback data
+ * @destroy: Destroy notification
+ *
+ * Test overriding via the "Rename To" annotation.
+ *
+ * Rename to: annotation_object_watch
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_watch_full</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>A #AnnotationObject</description>
+ </parameter>
+ <parameter>
+ <name>func</name>
+ <description>The callback</description>
+ </parameter>
+ <parameter>
+ <name>user_data</name>
+ <description>The callback data</description>
+ </parameter>
+ <parameter>
+ <name>destroy</name>
+ <description>Destroy notification</description>
+ </parameter>
+ </parameters>
+ <description>Test overriding via the "Rename To" annotation.</description>
+ <tags>
+ <tag>
+ <name>rename to</name>
+ <description>annotation_object_watch</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_scope.xml b/tests/scanner/annotationparser/gi/annotation_scope.xml
new file mode 100644
index 00000000..7f05a4c6
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_scope.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_foreach:
+ * @object: a #AnnotationObject
+ * @func: (scope call): Callback to invoke
+ * @user_data: Callback user data
+ *
+ * Test taking a call-scoped callback
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_foreach</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #AnnotationObject</description>
+ </parameter>
+ <parameter>
+ <name>func</name>
+ <annotations>
+ <annotation>
+ <name>scope</name>
+ <options>
+ <option>
+ <name>call</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>Callback to invoke</description>
+ </parameter>
+ <parameter>
+ <name>user_data</name>
+ <description>Callback user data</description>
+ </parameter>
+ </parameters>
+ <description>Test taking a call-scoped callback</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * regress_test_callback_destroy_notify:
+ * @callback: (scope notified):
+ *
+ * Notified - callback persists until a DestroyNotify delegate
+ * is invoked.
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>regress_test_callback_destroy_notify</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>callback</name>
+ <annotations>
+ <annotation>
+ <name>scope</name>
+ <options>
+ <option>
+ <name>notified</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ </parameter>
+ </parameters>
+ <description>Notified - callback persists until a DestroyNotify delegate
+is invoked.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * regress_test_callback_async:
+ * @callback: (scope async):
+ *
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>regress_test_callback_async</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>callback</name>
+ <annotations>
+ <annotation>
+ <name>scope</name>
+ <options>
+ <option>
+ <name>async</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ </parameter>
+ </parameters>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_set_value_func.xml b/tests/scanner/annotationparser/gi/annotation_set_value_func.xml
new file mode 100644
index 00000000..1f3a44d3
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_set_value_func.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ "Set value func:" tag syntax
+ -->
+ <commentblock>/**
+ * RegressTestFundamentalObject:
+ *
+ * This object tests regressions...
+ *
+ * Set value func: regress_test_value_set_fundamental_object
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>RegressTestFundamentalObject</name>
+ </identifier>
+ <description>This object tests regressions...</description>
+ <tags>
+ <tag>
+ <name>set value func</name>
+ <description>regress_test_value_set_fundamental_object</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_skip.xml b/tests/scanner/annotationparser/gi/annotation_skip.xml
new file mode 100644
index 00000000..030b0c42
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_skip.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_watch: (skip)
+ * @object: A #AnnotationObject
+ * @func: The callback
+ * @user_data: The callback data
+ *
+ * This is here just for the sake of being overriden by its
+ * annotation_object_watch_full().
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_watch</name>
+ <annotations>
+ <annotation>
+ <name>skip</name>
+ </annotation>
+ </annotations>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>A #AnnotationObject</description>
+ </parameter>
+ <parameter>
+ <name>func</name>
+ <description>The callback</description>
+ </parameter>
+ <parameter>
+ <name>user_data</name>
+ <description>The callback data</description>
+ </parameter>
+ </parameters>
+ <description>This is here just for the sake of being overriden by its
+annotation_object_watch_full().</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_transfer.xml b/tests/scanner/annotationparser/gi/annotation_transfer.xml
new file mode 100644
index 00000000..49df32fd
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_transfer.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * AnnotationObject::list-signal:
+ * @annotation: the annotation object
+ * @list: (type GLib.List) (element-type utf8) (transfer container): a list of strings
+ *
+ * This is a signal which takes a list of strings, but it's not
+ * known by GObject as it's only marked as G_TYPE_POINTER
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>AnnotationObject::list-signal</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>annotation</name>
+ <description>the annotation object</description>
+ </parameter>
+ <parameter>
+ <name>list</name>
+ <annotations>
+ <annotation>
+ <name>type</name>
+ <options>
+ <option>
+ <name>GLib.List</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>utf8</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>container</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>a list of strings</description>
+ </parameter>
+ </parameters>
+ <description>This is a signal which takes a list of strings, but it's not
+known by GObject as it's only marked as G_TYPE_POINTER</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_object_in:
+ * @object: a #GObject
+ * @inarg: (in) (transfer none): This is an argument test
+ *
+ * This is a test for in arguments
+ *
+ * Return value: an int
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_in</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>a #GObject</description>
+ </parameter>
+ <parameter>
+ <name>inarg</name>
+ <annotations>
+ <annotation>
+ <name>in</name>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>none</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>This is an argument test</description>
+ </parameter>
+ </parameters>
+ <description>This is a test for in arguments</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>an int</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_transfer_floating:
+ *
+ * Returns: (transfer floating): A floating object
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_transfer_floating</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <annotations>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>floating</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>A floating object</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ "Transfer:" tag syntax
+ -->
+ <commentblock>/**
+ * FsSession:codecs-without-config:
+ *
+ * This is the same list of codecs as #FsSession:codecs
+ * without....
+ *
+ * Transfer: full
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>FsSession:codecs-without-config</name>
+ </identifier>
+ <description>This is the same list of codecs as #FsSession:codecs
+without....</description>
+ <tags>
+ <tag>
+ <name>transfer</name>
+ <description>full</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_type.xml b/tests/scanner/annotationparser/gi/annotation_type.xml
new file mode 100644
index 00000000..d357423a
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_type.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * AnnotationObject::list-signal:
+ * @annotation: the annotation object
+ * @list: (type GLib.List) (element-type utf8) (transfer container): a list of strings
+ *
+ * This is a signal which takes a list of strings, but it's not
+ * known by GObject as it's only marked as G_TYPE_POINTER
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>AnnotationObject::list-signal</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>annotation</name>
+ <description>the annotation object</description>
+ </parameter>
+ <parameter>
+ <name>list</name>
+ <annotations>
+ <annotation>
+ <name>type</name>
+ <options>
+ <option>
+ <name>GLib.List</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>utf8</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>container</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>a list of strings</description>
+ </parameter>
+ </parameters>
+ <description>This is a signal which takes a list of strings, but it's not
+known by GObject as it's only marked as G_TYPE_POINTER</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ "Type:" tag syntax
+ -->
+ <commentblock>/**
+ * RegressTestObj:hash-table:
+ *
+ * Test.
+ *
+ * Type: GLib.HashTable(utf8,gint8)
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>RegressTestObj:hash-table</name>
+ </identifier>
+ <description>Test.</description>
+ <tags>
+ <tag>
+ <name>type</name>
+ <description>GLib.HashTable(utf8,gint8)</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_unref_func.xml b/tests/scanner/annotationparser/gi/annotation_unref_func.xml
new file mode 100644
index 00000000..98ac0a3e
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_unref_func.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ "Unref func:" tag syntax
+ -->
+ <commentblock>/**
+ * RegressTestFundamentalObject:
+ *
+ * This object tests regressions...
+ *
+ * Unref func: regress_test_fundamental_object_unref
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>RegressTestFundamentalObject</name>
+ </identifier>
+ <description>This object tests regressions...</description>
+ <tags>
+ <tag>
+ <name>unref func</name>
+ <description>regress_test_fundamental_object_unref</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_value.xml b/tests/scanner/annotationparser/gi/annotation_value.xml
new file mode 100644
index 00000000..4a1a0785
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_value.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ "Value:" tag syntax
+ -->
+ <commentblock>/**
+ * ANNOTATION_CALCULATED_LARGE:
+ *
+ * Constant to define a calculated large value
+ *
+ * Value: 10000000000UL
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>ANNOTATION_CALCULATED_LARGE</name>
+ </identifier>
+ <description>Constant to define a calculated large value</description>
+ <tags>
+ <tag>
+ <name>value</name>
+ <description>10000000000UL</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/annotation_virtual.xml b/tests/scanner/annotationparser/gi/annotation_virtual.xml
new file mode 100644
index 00000000..f2b6b23a
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/annotation_virtual.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ "Virtual:" tag syntax
+ -->
+ <commentblock>/**
+ * foo_object_read:
+ * @object: obj
+ * @offset: offset
+ * @length: length
+ *
+ * Read some stuff.
+ *
+ * Virtual: read_fn
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>foo_object_read</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>object</name>
+ <description>obj</description>
+ </parameter>
+ <parameter>
+ <name>offset</name>
+ <description>offset</description>
+ </parameter>
+ <parameter>
+ <name>length</name>
+ <description>length</description>
+ </parameter>
+ </parameters>
+ <description>Read some stuff.</description>
+ <tags>
+ <tag>
+ <name>virtual</name>
+ <description>read_fn</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/syntax.xml b/tests/scanner/annotationparser/gi/syntax.xml
new file mode 100644
index 00000000..f07e4fbd
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/syntax.xml
@@ -0,0 +1,136 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>//Test</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>// Test</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/*Test*/</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/* Test */</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/* Test
+something */</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/*
+Test
+something */</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/**Test*/</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/** Test */</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/** Test
+something */</commentblock>
+</test>
+
+<test>
+ <!--
+ Not GTK-Doc
+ -->
+ <commentblock>/**
+*/</commentblock>
+</test>
+
+<test>
+ <!--
+ Technically not GTK-Doc, but we need to support this for backwards compatibility
+ -->
+ <commentblock>/**
+Test
+something */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Test</name>
+ </identifier>
+ <description>something</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Technically not GTK-Doc, but we need to support this for backwards compatibility
+ -->
+ <commentblock>/**
+Test
+something **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>Test</name>
+ </identifier>
+ <description>something</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Broken comment block, signal the start of the comment block description followed
+ by a parameter instead.
+ -->
+ <commentblock>/**
+ * SECTION:meepapp
+ *
+ * @short_description: the application class
+ *
+ * The application class handles ...
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:meepapp</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>the application class</description>
+ </parameter>
+ </parameters>
+ <description>The application class handles ...</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/syntax_identifier.xml b/tests/scanner/annotationparser/gi/syntax_identifier.xml
new file mode 100644
index 00000000..69dcf328
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/syntax_identifier.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ Identifier part not on the first line.
+ -->
+ <commentblock>/**
+*
+* SECTION:meepapp
+*/</commentblock>
+</test>
+
+<test>
+ <!--
+ Multiple identifier parts
+ -->
+ <commentblock>/**
+ * SECTION:meepapp
+ * SECTION:meepapp2
+ * @short_description: the application class
+ *
+ * The application class handles ...
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:meepapp</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>the application class</description>
+ </parameter>
+ </parameters>
+ <description>SECTION:meepapp2
+The application class handles ...</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Section documentation including all optional metadata.
+ -->
+ <commentblock>/**
+ * SECTION:meepapp
+ * @short_description: the application class
+ * @title: Meep application
+ * @section_id:
+ * @see_also: #MeepSettings
+ * @stability: Stable
+ * @include: meep/app.h
+ * @image: application.png
+ *
+ * The application class handles ...
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:meepapp</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>the application class</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <description>Meep application</description>
+ </parameter>
+ <parameter>
+ <name>section_id</name>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#MeepSettings</description>
+ </parameter>
+ <parameter>
+ <name>stability</name>
+ <description>Stable</description>
+ </parameter>
+ <parameter>
+ <name>include</name>
+ <description>meep/app.h</description>
+ </parameter>
+ <parameter>
+ <name>image</name>
+ <description>application.png</description>
+ </parameter>
+ </parameters>
+ <description>The application class handles ...</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Broken comment block with empty line between identifier and parameters parts.
+ -->
+ <commentblock>/**
+ * SECTION:meepapp
+ *
+ * @short_description: the application class
+ * @title: Meep application
+ * @section_id:
+ * @see_also: #MeepSettings
+ * @stability: Stable
+ * @include: meep/app.h
+ * @image: application.png
+ *
+ * The application class handles ...
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:meepapp</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>the application class</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <description>Meep application</description>
+ </parameter>
+ <parameter>
+ <name>section_id</name>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#MeepSettings</description>
+ </parameter>
+ <parameter>
+ <name>stability</name>
+ <description>Stable</description>
+ </parameter>
+ <parameter>
+ <name>include</name>
+ <description>meep/app.h</description>
+ </parameter>
+ <parameter>
+ <name>image</name>
+ <description>application.png</description>
+ </parameter>
+ </parameters>
+ <description>The application class handles ...</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Broken comment block with description part before parameters part, without empty line.
+ -->
+ <commentblock>/**
+ * SECTION:meepapp
+ *
+ * The application class handles ...
+ * @short_description: the application class
+ * @title: Meep application
+ * @section_id:
+ * @see_also: #MeepSettings
+ * @stability: Stable
+ * @include: meep/app.h
+ * @image: application.png
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:meepapp</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>the application class</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <description>Meep application</description>
+ </parameter>
+ <parameter>
+ <name>section_id</name>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#MeepSettings</description>
+ </parameter>
+ <parameter>
+ <name>stability</name>
+ <description>Stable</description>
+ </parameter>
+ <parameter>
+ <name>include</name>
+ <description>meep/app.h</description>
+ </parameter>
+ <parameter>
+ <name>image</name>
+ <description>application.png</description>
+ </parameter>
+ </parameters>
+ <description>The application class handles ...</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Broken comment block with description part before parameters part, with empty line.
+ -->
+ <commentblock>/**
+ * SECTION:meepapp
+ *
+ * The application class handles ...
+ *
+ * @short_description: the application class
+ * @title: Meep application
+ * @section_id:
+ * @see_also: #MeepSettings
+ * @stability: Stable
+ * @include: meep/app.h
+ * @image: application.png
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:meepapp</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>the application class</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <description>Meep application</description>
+ </parameter>
+ <parameter>
+ <name>section_id</name>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#MeepSettings</description>
+ </parameter>
+ <parameter>
+ <name>stability</name>
+ <description>Stable</description>
+ </parameter>
+ <parameter>
+ <name>include</name>
+ <description>meep/app.h</description>
+ </parameter>
+ <parameter>
+ <name>image</name>
+ <description>application.png</description>
+ </parameter>
+ </parameters>
+ <description>The application class handles ...</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Old style implicit returns.
+ https://bugzilla.gnome.org/show_bug.cgi?id=457077
+ -->
+ <commentblock>/**
+ * SECTION:tester
+ * @short_description: module for gtk-doc unit test
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ *
+ * As described in http://bugzilla.gnome.org/show_bug.cgi?id=457077 it
+ * returns nothing.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:tester</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>module for gtk-doc unit test</description>
+ </parameter>
+ </parameters>
+ <description>This file contains non-sense code for the sole purpose of testing the docs.
+
+As described in http://bugzilla.gnome.org/show_bug.cgi?id=457077 it
+returns nothing.</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Invalid identifier
+ -->
+ <commentblock>/**
+ * gnm_cell_set_expr_and_value: Stores (WITHOUT COPYING) the supplied value, and
+ * references the supplied expression and links it into the expression
+ * list. It marks the sheet as dirty. It is intended for use by import
+ * routines or operations that do bulk assignment.
+ *
+ * WARNING : This is an internal routine that does not queue redraws,
+ * does not auto-resize, does not calculate spans, and does
+ * not render the value.
+ *
+ * NOTE : This DOES check for array partitioning.
+ */</commentblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/syntax_nested_tags.xml b/tests/scanner/annotationparser/gi/syntax_nested_tags.xml
new file mode 100644
index 00000000..d07b6f12
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/syntax_nested_tags.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ Well, not really nested tags as the Since: 2.30 is considered to be part of the
+ description of the @G_APPLICATION_NON_UNIQUE parameter.
+ -->
+ <commentblock>/**
+ * GApplicationFlags:
+ * @G_APPLICATION_NON_UNIQUE: Make no attempts to do any of the typical
+ * single-instance application negotiation, even if the application
+ * ID is given. The application neither attempts to become the
+ * owner of the application ID nor does it check if an existing
+ * owner already exists. Everything occurs in the local process.
+ * Since: 2.30.
+ *
+ * Flags used to define the behaviour of a #GApplication.
+ *
+ * Since: 2.28
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>GApplicationFlags</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>G_APPLICATION_NON_UNIQUE</name>
+ <description>Make no attempts to do any of the typical single-instance application negotiation, even if the application ID is given. The application neither attempts to become the owner of the application ID nor does it check if an existing owner already exists. Everything occurs in the local process. Since: 2.30.</description>
+ </parameter>
+ </parameters>
+ <description>Flags used to define the behaviour of a #GApplication.</description>
+ <tags>
+ <tag>
+ <name>since</name>
+ <description>2.28</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/syntax_paragraph_breaks.xml b/tests/scanner/annotationparser/gi/syntax_paragraph_breaks.xml
new file mode 100644
index 00000000..4ae1e036
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/syntax_paragraph_breaks.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <!--
+ All lines (outside program- listings and CDATA sections) just containing
+ a ' *' (blank-asterisk) are converted to paragraph breaks.
+ -->
+ <commentblock>/**
+ * SECTION:test
+ *
+ * The following line is ' *' (blank-asterisk).
+ *
+ * So this is considered a new paragraph.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description>The following line is ' *' (blank-asterisk).
+
+So this is considered a new paragraph.</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Description: tag, all lines (outside program- listings and CDATA sections) just containing
+ a ' *' (blank-asterisk) are converted to paragraph breaks.
+ -->
+ <commentblock>/**
+ * SECTION:test
+ *
+ * Description: The following line is ' *' (blank-asterisk).
+ *
+ * So this is considered a new paragraph.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description>The following line is ' *' (blank-asterisk).
+
+So this is considered a new paragraph.</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ ' * ' (blank-asterisk-blank) are also converted to paragraph breaks.
+ -->
+ <commentblock>/**
+ * SECTION:test
+ *
+ * The following line is ' * ' (blank-asterisk-blank).
+ *
+ * So this is considered a new paragraph.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description>The following line is ' * ' (blank-asterisk-blank).
+
+So this is considered a new paragraph.</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Description: tag, ' * ' (blank-asterisk-blank) are also converted to paragraph breaks.
+ -->
+ <commentblock>/**
+ * SECTION:test
+ *
+ * Description: The following line is ' * ' (blank-asterisk-blank).
+ *
+ * So this is considered a new paragraph.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description>The following line is ' * ' (blank-asterisk-blank).
+
+So this is considered a new paragraph.</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ If you want an "empty line" but not a paragraph break, change that into ' * '
+ (blank-asterisk-blank-blank). The "empty line" can be easily recognized in the
+ output as it contains a single space character.
+ -->
+ <commentblock>/**
+ * SECTION:test
+ *
+ * The following line is (blank-asterisk-blank-blank).
+ *
+ * So this is preceded by an empty line and is not considered a new paragraph.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description>The following line is (blank-asterisk-blank-blank).
+
+So this is preceded by an empty line and is not considered a new paragraph.</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Description: tag, if you want an "empty line" but not a paragraph break, change that into ' * '
+ (blank-asterisk-blank-blank). The "empty line" can be easily recognized in the
+ output as it contains a single space character.
+ -->
+ <commentblock>/**
+ * SECTION:test
+ *
+ * Description: The following line is (blank-asterisk-blank-blank).
+ *
+ * So this is preceded by an empty line and is not considered a new paragraph.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description>The following line is (blank-asterisk-blank-blank).
+
+So this is preceded by an empty line and is not considered a new paragraph.</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ If you want an "empty line" but not a paragraph break, change that into ' * '
+ (blank-asterisk-blank-blank). The "empty line" can be easily recognized in the
+ output as it contains a single space character.
+ -->
+ <commentblock><![CDATA[/**
+ * SECTION:test
+ *
+ * <example>
+ * <title>Iterating over attributes</title>
+ * <programlisting>
+ * void
+ * print_attributes (GIBaseInfo *info)
+ * {
+ * GIAttributeIter iter = { 0, };
+ * char *name;
+ * char *value;
+ *
+ * while (g_base_info_iterate_attributes (info, &iter, &name, &value))
+ * {
+ * g_print ("attribute name: %s value: %s", name, value);
+ * }
+ * }
+ * </programlisting>
+ * </example>
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description><![CDATA[<example>
+<title>Iterating over attributes</title>
+<programlisting>
+void
+print_attributes (GIBaseInfo *info)
+{
+ GIAttributeIter iter = { 0, };
+ char *name;
+ char *value;
+
+ while (g_base_info_iterate_attributes (info, &iter, &name, &value))
+ {
+ g_print ("attribute name: %s value: %s", name, value);
+ }
+}
+</programlisting>
+</example>]]></description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Description: tag, if you want an "empty line" but not a paragraph break, change that into ' * '
+ (blank-asterisk-blank-blank). The "empty line" can be easily recognized in the
+ output as it contains a single space character.
+ -->
+ <commentblock><![CDATA[/**
+ * SECTION:test
+ *
+ * Description: <example>
+ * <title>Iterating over attributes</title>
+ * <programlisting>
+ * void
+ * print_attributes (GIBaseInfo *info)
+ * {
+ * GIAttributeIter iter = { 0, };
+ * char *name;
+ * char *value;
+ *
+ * while (g_base_info_iterate_attributes (info, &iter, &name, &value))
+ * {
+ * g_print ("attribute name: %s value: %s", name, value);
+ * }
+ * }
+ * </programlisting>
+ * </example>
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:test</name>
+ </identifier>
+ <description><![CDATA[<example>
+<title>Iterating over attributes</title>
+<programlisting>
+void
+print_attributes (GIBaseInfo *info)
+{
+ GIAttributeIter iter = { 0, };
+ char *name;
+ char *value;
+
+ while (g_base_info_iterate_attributes (info, &iter, &name, &value))
+ {
+ g_print ("attribute name: %s value: %s", name, value);
+ }
+}
+</programlisting>
+</example>]]></description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/tag_deprecated.xml b/tests/scanner/annotationparser/gi/tag_deprecated.xml
new file mode 100644
index 00000000..6374bf81
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/tag_deprecated.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Deprecated: 0.6: Use something else instead
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>deprecated</name>
+ <description>0.6: Use something else instead</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Deprecated: 0.6
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>deprecated</name>
+ <description>0.6</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/tag_description.xml b/tests/scanner/annotationparser/gi/tag_description.xml
new file mode 100644
index 00000000..75860f60
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/tag_description.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * shiny_function:
+ *
+ * Description: This is a callback with a 'closure' argument that is not named
+ * 'user_data' and hence has to be annotated.
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>shiny_function</name>
+ </identifier>
+ <description>This is a callback with a 'closure' argument that is not named
+'user_data' and hence has to be annotated.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/tag_returns.xml b/tests/scanner/annotationparser/gi/tag_returns.xml
new file mode 100644
index 00000000..302d8cf6
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/tag_returns.xml
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_object_string_out:
+ *
+ * Test returning a string as an out parameter
+ *
+ * Returns: some boolean
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_string_out</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>some boolean</description>
+ </tag>
+ </tags>
+ <description>Test returning a string as an out parameter</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Deprecated "Return value:" tag
+ -->
+ <commentblock>/**
+ * annotation_object_string_out:
+ *
+ * Test returning a string as an out parameter
+ *
+ * Return value: some boolean
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_string_out</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>some boolean</description>
+ </tag>
+ </tags>
+ <description>Test returning a string as an out parameter</description>
+ </docblock>
+</test>
+
+<test>
+ <!--
+ Deprecated "@returns" as a parameter
+ -->
+ <commentblock>/**
+ * annotation_object_string_out:
+ * @returns: some boolean
+ *
+ * Test returning a string as an out parameter
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_object_string_out</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>some boolean</description>
+ </tag>
+ </tags>
+ <description>Test returning a string as an out parameter</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/tag_since.xml b/tests/scanner/annotationparser/gi/tag_since.xml
new file mode 100644
index 00000000..2bd8c5c2
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/tag_since.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Since: 0.6
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>since</name>
+ <description>0.6</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Since: this function is available since version 0.6
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>since</name>
+ <description>this function is available since version 0.6</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gi/tag_stability.xml b/tests/scanner/annotationparser/gi/tag_stability.xml
new file mode 100644
index 00000000..154b8385
--- /dev/null
+++ b/tests/scanner/annotationparser/gi/tag_stability.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Stability: Stable
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>stability</name>
+ <description>Stable</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Stability: Unstable
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>stability</name>
+ <description>Unstable</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Stability: Private
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>stability</name>
+ <description>Private</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_versioned:
+ *
+ * Stability: behavior tends to vary depending on the phase of the moon.
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_versioned</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>stability</name>
+ <description>behavior tends to vary depending on the phase of the moon.</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/annotations/tester.c.xml b/tests/scanner/annotationparser/gtkdoc/annotations/tester.c.xml
new file mode 100644
index 00000000..9be3db76
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/annotations/tester.c.xml
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * SECTION:tester
+ * @short_description: module for gtk-doc unit test
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:tester</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>module for gtk-doc unit test</description>
+ </parameter>
+ </parameters>
+ <description>This file contains non-sense code for the sole purpose of testing the docs.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_array_length:
+ * @list: a #GtkListStore
+ * @n_columns: number of columns
+ * @types: (array length=n_columns): list of types
+ *
+ * Document parameter relation for array length.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_array_length</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>list</name>
+ <description>a #GtkListStore</description>
+ </parameter>
+ <parameter>
+ <name>n_columns</name>
+ <description>number of columns</description>
+ </parameter>
+ <parameter>
+ <name>types</name>
+ <annotations>
+ <annotation>
+ <name>array</name>
+ <options>
+ <option>
+ <name>length</name>
+ <value>n_columns</value>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>list of types</description>
+ </parameter>
+ </parameters>
+ <description>Document parameter relation for array length.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_nullable:
+ * @uri: a uri
+ * @label: (allow-none): an optional string, which is used in ways too
+ * complicated to describe in a single line, making it necessary to wrap it
+ *
+ * Document optional parameters.
+ *
+ * Returns: (transfer full) (allow-none): Returns stuff which you have to
+ * free after use, whose description is also rather long
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_nullable</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>uri</name>
+ <description>a uri</description>
+ </parameter>
+ <parameter>
+ <name>label</name>
+ <annotations>
+ <annotation>
+ <name>allow-none</name>
+ </annotation>
+ </annotations>
+ <description>an optional string, which is used in ways too complicated to describe in a single line, making it necessary to wrap it</description>
+ </parameter>
+ </parameters>
+ <description>Document optional parameters.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <annotations>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>full</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>allow-none</name>
+ </annotation>
+ </annotations>
+ <description>Returns stuff which you have to free after use, whose description is also rather long</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_elementtype:
+ * @list: (element-type GObject): list of #GObject instances to search
+ *
+ * Document optional parameters.
+ *
+ * Returns: %TRUE for success
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_elementtype</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>list</name>
+ <annotations>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>GObject</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>list of #GObject instances to search</description>
+ </parameter>
+ </parameters>
+ <description>Document optional parameters.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>%TRUE for success</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_elementtype_transfer:
+ * @list: (element-type utf8) (transfer full): list of #GObject instances to search
+ *
+ * Document optional parameters.
+ *
+ * Returns: %TRUE for success
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_elementtype_transfer</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>list</name>
+ <annotations>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>utf8</name>
+ </option>
+ </options>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>full</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>list of #GObject instances to search</description>
+ </parameter>
+ </parameters>
+ <description>Document optional parameters.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>%TRUE for success</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_elementtype_returns:
+ *
+ * Document optional parameters.
+ *
+ * Returns: (element-type GObject): A list of #GObject instances.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_elementtype_returns</name>
+ </identifier>
+ <description>Document optional parameters.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <annotations>
+ <annotation>
+ <name>element-type</name>
+ <options>
+ <option>
+ <name>GObject</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>A list of #GObject instances.</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_outparams:
+ * @list: (out) (transfer none): a pointer to take a list
+ *
+ * Document optional parameters.
+ *
+ * Returns: %TRUE for success
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_outparams</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>list</name>
+ <annotations>
+ <annotation>
+ <name>out</name>
+ </annotation>
+ <annotation>
+ <name>transfer</name>
+ <options>
+ <option>
+ <name>none</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>a pointer to take a list</description>
+ </parameter>
+ </parameters>
+ <description>Document optional parameters.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>%TRUE for success</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_skip: (skip)
+ * @list: a pointer to take a list
+ *
+ * Documentation for this function.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_skip</name>
+ <annotations>
+ <annotation>
+ <name>skip</name>
+ </annotation>
+ </annotations>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>list</name>
+ <description>a pointer to take a list</description>
+ </parameter>
+ </parameters>
+ <description>Documentation for this function.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * annotation_scope:
+ * @callback: (scope async): a callback
+ * @user_data: data to pass to callback
+ *
+ * Documentation for this function.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>annotation_scope</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>callback</name>
+ <annotations>
+ <annotation>
+ <name>scope</name>
+ <options>
+ <option>
+ <name>async</name>
+ </option>
+ </options>
+ </annotation>
+ </annotations>
+ <description>a callback</description>
+ </parameter>
+ <parameter>
+ <name>user_data</name>
+ <description>data to pass to callback</description>
+ </parameter>
+ </parameters>
+ <description>Documentation for this function.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/annotations/tester.h.xml b/tests/scanner/annotationparser/gtkdoc/annotations/tester.h.xml
new file mode 100644
index 00000000..b79e1bcd
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/annotations/tester.h.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * GtkdocAnnotation:
+ * @that: (allow-none): eventualy points to something
+ *
+ * small struct
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocAnnotation</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>that</name>
+ <annotations>
+ <annotation>
+ <name>allow-none</name>
+ </annotation>
+ </annotations>
+ <description>eventualy points to something</description>
+ </parameter>
+ </parameters>
+ <description>small struct</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/bugs/tester.c.xml b/tests/scanner/annotationparser/gtkdoc/bugs/tester.c.xml
new file mode 100644
index 00000000..f0a2b225
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/bugs/tester.c.xml
@@ -0,0 +1,765 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock><![CDATA[/**
+ * SECTION:tester
+ * @short_description: module for gtk-doc unit test
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ *
+ * As described in http://bugzilla.gnome.org/show_bug.cgi?id=457077 it
+ * returns nothing.
+ *
+ * Some special characters need escaping. The tests should pass 100\%.
+ * Try a <ulink url="http://www.gtk.org/gtk-doc/#Top">link containing a # char</ulink>.
+ *
+ * <refsect2 id="dummy-id">
+ * <title>more details</title>
+ * <para>
+ * Second paragraph inside subsection.
+ * </para>
+ * </refsect2>
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:tester</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>module for gtk-doc unit test</description>
+ </parameter>
+ </parameters>
+ <description><![CDATA[This file contains non-sense code for the sole purpose of testing the docs.
+
+As described in http://bugzilla.gnome.org/show_bug.cgi?id=457077 it
+returns nothing.
+
+Some special characters need escaping. The tests should pass 100\%.
+Try a <ulink url="http://www.gtk.org/gtk-doc/#Top">link containing a # char</ulink>.
+
+<refsect2 id="dummy-id">
+<title>more details</title>
+<para>
+Second paragraph inside subsection.
+</para>
+</refsect2>]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_141869_a:
+ * @pid: arg
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=141869
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_141869_a</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>pid</name>
+ <description>arg</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=141869</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_141869_b:
+ * @pid: arg
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=141869
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_141869_b</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>pid</name>
+ <description>arg</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=141869</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_379466:
+ * @pid: arg
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=379466
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_379466</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>pid</name>
+ <description>arg</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=379466</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_380824:
+ * @arg: arg
+ *
+ * Returns a value.
+ * http://bugzilla.gnome.org/show_bug.cgi?id=380824
+ *
+ * Since: 0.1
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_380824</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>arg</name>
+ <description>arg</description>
+ </parameter>
+ </parameters>
+ <description>Returns a value.
+http://bugzilla.gnome.org/show_bug.cgi?id=380824</description>
+ <tags>
+ <tag>
+ <name>since</name>
+ <description>0.1</description>
+ </tag>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_411739:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=411739
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_411739</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=411739</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_419997:
+ * @const_values: arg
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=419997
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_419997</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>const_values</name>
+ <description>arg</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=419997</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_445693:
+ * @pid: arg
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=445693
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_445693</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>pid</name>
+ <description>arg</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=445693</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_471014:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=471014
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_471014</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=471014</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug446648:
+ * @BUG_446648_FOO: foo
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=446648
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug446648</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>BUG_446648_FOO</name>
+ <description>foo</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=446648</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_552602:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=552602
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_552602</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=552602</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_574654a:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=574654
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_574654a</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=574654</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_574654b:
+ * @offset: skip this many items
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=574654
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_574654b</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>offset</name>
+ <description>skip this many items</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=574654</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_580300a_get_type:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=580300
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_580300a_get_type</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=580300</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_580300b_get_type:
+ * @a: value
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=580300
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_580300b_get_type</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>value</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=580300</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_580300c_get_type:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=580300
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_580300c_get_type</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=580300</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_580300d_get_type:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=580300
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_580300d_get_type</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=580300</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_597937:
+ * @function_arg: value
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=597937
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_597937</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>function_arg</name>
+ <description>value</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=597937</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_602518a:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=602518
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_602518a</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=602518</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_602518b:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=602518
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_602518b</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=602518</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_602518c:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=602518
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_602518c</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=602518</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_607445:
+ * @a: parameter
+ * @n: parameter
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=607445
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_607445</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>parameter</description>
+ </parameter>
+ <parameter>
+ <name>n</name>
+ <description>parameter</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=607445</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_610257:
+ * @der: parameter
+ * @len: parameter
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=610257
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_610257</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>der</name>
+ <description>parameter</description>
+ </parameter>
+ <parameter>
+ <name>len</name>
+ <description>parameter</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=610257</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * bug_623968a:
+ *
+ * <para>test</para>
+ * <refsect3>
+ * <title>subsect</title>
+ * <para>test</para>
+ * </refsect3>
+ **/]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_623968a</name>
+ </identifier>
+ <description><![CDATA[<para>test</para>
+<refsect3>
+ <title>subsect</title>
+ <para>test</para>
+</refsect3>]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * bug_623968b:
+ *
+ * test
+ *
+ * <refsect3>
+ * <title>subsect</title>
+ * <para>test</para>
+ * </refsect3>
+ **/]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_623968b</name>
+ </identifier>
+ <description><![CDATA[test
+
+<refsect3>
+ <title>subsect</title>
+ <para>test</para>
+</refsect3>]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * bug_623968c:
+ *
+ * <para>test</para>
+ **/]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_623968c</name>
+ </identifier>
+ <description><![CDATA[<para>test</para>]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_624200a:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=624200
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_624200a</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=624200</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_624200b:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=624200
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_624200b</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=624200</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_638330:
+ * @arg1: arg1
+ * @data: data
+ * @length: length
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=638330
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_638330</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>arg1</name>
+ <description>arg1</description>
+ </parameter>
+ <parameter>
+ <name>data</name>
+ <description>data</description>
+ </parameter>
+ <parameter>
+ <name>length</name>
+ <description>length</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=638330</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_000000_va1:
+ * @name: a name
+ * @...: A printf-style message to output
+ *
+ * Outputs a message.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_000000_va1</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>name</name>
+ <description>a name</description>
+ </parameter>
+ <parameter>
+ <name>...</name>
+ <description>A printf-style message to output</description>
+ </parameter>
+ </parameters>
+ <description>Outputs a message.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_624001a:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=624001
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_624001a</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=624001</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_624001b:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=624001
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_624001b</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=624001</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_624001c:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=624001
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_624001c</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=624001</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_624001d:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=624001
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_624001d</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=624001</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_624001e:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=624001
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_624001e</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=624001</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/bugs/tester.h.xml b/tests/scanner/annotationparser/gtkdoc/bugs/tester.h.xml
new file mode 100644
index 00000000..da7c7919
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/bugs/tester.h.xml
@@ -0,0 +1,677 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * Bug324535:
+ * @BUG_324535_A: enum 1
+ * @BUG_324535_B: enum 2
+ * @BUG_324535_C: enum 3
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=324535
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug324535</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>BUG_324535_A</name>
+ <description>enum 1</description>
+ </parameter>
+ <parameter>
+ <name>BUG_324535_B</name>
+ <description>enum 2</description>
+ </parameter>
+ <parameter>
+ <name>BUG_324535_C</name>
+ <description>enum 3</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=324535</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_481811:
+ * @x: argument
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=481811
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_481811</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>x</name>
+ <description>argument</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=481811</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_501038:
+ * @a: value
+ * @b: deprecated value
+ * @_b: scrambled deprecated value
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=501038
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_501038</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>value</description>
+ </parameter>
+ <parameter>
+ <name>b</name>
+ <description>deprecated value</description>
+ </parameter>
+ <parameter>
+ <name>_b</name>
+ <description>scrambled deprecated value</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=501038</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_460127:
+ * @a: field
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=460127
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_460127</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>field</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=460127</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_477532:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=477532
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_477532</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=477532</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug446648:
+ * @BUG_446648_FOO: field
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=446648
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug446648</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>BUG_446648_FOO</name>
+ <description>field</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=446648</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug512154:
+ * @index: field
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=512154
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug512154</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>index</name>
+ <description>field</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=512154</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_512155a_function_pointer_t:
+ * @arg1: param 1
+ * @arg2: param 1
+ * @arg3: param 1
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=512155
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_512155a_function_pointer_t</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>arg1</name>
+ <description>param 1</description>
+ </parameter>
+ <parameter>
+ <name>arg2</name>
+ <description>param 1</description>
+ </parameter>
+ <parameter>
+ <name>arg3</name>
+ <description>param 1</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=512155</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_512155b_function_pointer_t:
+ * @arg1: param 1
+ * @arg2: param 1
+ * @arg3: param 1
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=512155
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_512155b_function_pointer_t</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>arg1</name>
+ <description>param 1</description>
+ </parameter>
+ <parameter>
+ <name>arg2</name>
+ <description>param 1</description>
+ </parameter>
+ <parameter>
+ <name>arg3</name>
+ <description>param 1</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=512155</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_512155c_function_pointer_t:
+ * @arg1: param 1
+ * @arg2: param 1
+ * @arg3: param 1
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=512155
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_512155c_function_pointer_t</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>arg1</name>
+ <description>param 1</description>
+ </parameter>
+ <parameter>
+ <name>arg2</name>
+ <description>param 1</description>
+ </parameter>
+ <parameter>
+ <name>arg3</name>
+ <description>param 1</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=512155</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * BUG_530758:
+ *
+ * {{![CDATA[http://bugzilla.gnome.org/show_bug.cgi?id=530758#c1]]!}}
+ *
+ * <ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=530758#c1">Test</ulink>
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>BUG_530758</name>
+ </identifier>
+ <description><![CDATA[{{![CDATA[http://bugzilla.gnome.org/show_bug.cgi?id=530758#c1]]!}}
+
+<ulink url="http://bugzilla.gnome.org/show_bug.cgi?id=530758#c1">Test</ulink>]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_532395a:
+ * @number: a number
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=532395
+ *
+ * Returns: number
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_532395a</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>number</name>
+ <description>a number</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=532395</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>number</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_532395b:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=532395
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_532395b</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=532395</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_544172:
+ * @self: object pointer.
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=544172
+ *
+ * Returns: result or %NULL.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_544172</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>object pointer.</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=544172</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result or %NULL.</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_554833:
+ * @i: value;
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=554833
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_554833</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>i</name>
+ <description>value;</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=554833</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * bug_554833_new:
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=554833
+ *
+ * Returns: result
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>bug_554833_new</name>
+ </identifier>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=554833</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>result</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug165425a:
+ * @i: data as int
+ * @f: data as float
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=165425
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug165425a</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>i</name>
+ <description>data as int</description>
+ </parameter>
+ <parameter>
+ <name>f</name>
+ <description>data as float</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=165425</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug165425b:
+ * @i: data as int
+ * @f: data as float
+ *
+ * http://bugzilla.gnome.org/show_bug.cgi?id=165425
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug165425b</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>i</name>
+ <description>data as int</description>
+ </parameter>
+ <parameter>
+ <name>f</name>
+ <description>data as float</description>
+ </parameter>
+ </parameters>
+ <description>http://bugzilla.gnome.org/show_bug.cgi?id=165425</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug642998:
+ * @red: red color intensity, from 0–255
+ * @green: green color intensity, from 0–255
+ * @blue: blue color intensity, from 0–255
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=642998
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug642998</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>red</name>
+ <description>red color intensity, from 0–255</description>
+ </parameter>
+ <parameter>
+ <name>green</name>
+ <description>green color intensity, from 0–255</description>
+ </parameter>
+ <parameter>
+ <name>blue</name>
+ <description>blue color intensity, from 0–255</description>
+ </parameter>
+ </parameters>
+ <description>https://bugzilla.gnome.org/show_bug.cgi?id=642998</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug644291:
+ * @BUG_644291_START: foo
+ * @BUG_644291_TEXT: bar
+ * @BUG_644291_END: milk
+ * @BUG_644291_ATTRIBUTE: comes
+ * @BUG_644291_XMLNS: from
+ * @BUG_644291_ASSIGN_TO: cows
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=644291
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug644291</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>BUG_644291_START</name>
+ <description>foo</description>
+ </parameter>
+ <parameter>
+ <name>BUG_644291_TEXT</name>
+ <description>bar</description>
+ </parameter>
+ <parameter>
+ <name>BUG_644291_END</name>
+ <description>milk</description>
+ </parameter>
+ <parameter>
+ <name>BUG_644291_ATTRIBUTE</name>
+ <description>comes</description>
+ </parameter>
+ <parameter>
+ <name>BUG_644291_XMLNS</name>
+ <description>from</description>
+ </parameter>
+ <parameter>
+ <name>BUG_644291_ASSIGN_TO</name>
+ <description>cows</description>
+ </parameter>
+ </parameters>
+ <description>https://bugzilla.gnome.org/show_bug.cgi?id=644291</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * BUG_000000_VA2:
+ * @name: a name
+ * @...: A printf-style message to output
+ *
+ * Outputs a message.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>BUG_000000_VA2</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>name</name>
+ <description>a name</description>
+ </parameter>
+ <parameter>
+ <name>...</name>
+ <description>A printf-style message to output</description>
+ </parameter>
+ </parameters>
+ <description>Outputs a message.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * BUG_000000_VA3:
+ * @name: a name
+ * @...: A printf-style message to output
+ *
+ * Outputs a message.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>BUG_000000_VA3</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>name</name>
+ <description>a name</description>
+ </parameter>
+ <parameter>
+ <name>...</name>
+ <description>A printf-style message to output</description>
+ </parameter>
+ </parameters>
+ <description>Outputs a message.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * Bug000000Scope:
+ *
+ * Opaque structure.
+ * "warning: Field descriptions for Bug000000Scope are missing in source code comment block."
+ * but not if we remove the blank line before "int b";
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>Bug000000Scope</name>
+ </identifier>
+ <description>Opaque structure.
+"warning: Field descriptions for Bug000000Scope are missing in source code comment block."
+but not if we remove the blank line before "int b";</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * gst_play_marshal_BUFFER__BOXED:
+ * @closure: test
+ * @return_value: test
+ * @marshal_data: test
+ *
+ * test.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>gst_play_marshal_BUFFER__BOXED</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>closure</name>
+ <description>test</description>
+ </parameter>
+ <parameter>
+ <name>return_value</name>
+ <description>test</description>
+ </parameter>
+ <parameter>
+ <name>marshal_data</name>
+ <description>test</description>
+ </parameter>
+ </parameters>
+ <description>test.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * BUG_656773a:
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=656773
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>BUG_656773a</name>
+ </identifier>
+ <description>https://bugzilla.gnome.org/show_bug.cgi?id=656773</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * BUG_656773b:
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=656773
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>BUG_656773b</name>
+ </identifier>
+ <description>https://bugzilla.gnome.org/show_bug.cgi?id=656773</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * BUG_656773c:
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=656773
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>BUG_656773c</name>
+ </identifier>
+ <description>https://bugzilla.gnome.org/show_bug.cgi?id=656773</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * BUG_656946:
+ *
+ * https://bugzilla.gnome.org/show_bug.cgi?id=656946
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>BUG_656946</name>
+ </identifier>
+ <description>https://bugzilla.gnome.org/show_bug.cgi?id=656946</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/empty/tester.c.xml b/tests/scanner/annotationparser/gtkdoc/empty/tester.c.xml
new file mode 100644
index 00000000..c18e29fd
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/empty/tester.c.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock><![CDATA[/**
+ * SECTION:tester
+ * @short_description: module for gtk-doc unit test
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ *
+ * As described in http://bugzilla.gnome.org/show_bug.cgi?id=457077 it
+ * returns nothing.
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:tester</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>module for gtk-doc unit test</description>
+ </parameter>
+ </parameters>
+ <description><![CDATA[This file contains non-sense code for the sole purpose of testing the docs.
+
+As described in http://bugzilla.gnome.org/show_bug.cgi?id=457077 it
+returns nothing.]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * test:
+ * @a: arg
+ *
+ * lonely function
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>test</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>arg</description>
+ </parameter>
+ </parameters>
+ <description>lonely function</description>
+ </docblock>
+ </test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/fail/tester.c.xml b/tests/scanner/annotationparser/gtkdoc/fail/tester.c.xml
new file mode 100644
index 00000000..7ebf440b
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/fail/tester.c.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/*
+ * SECTION:tester_nodocs
+ * @short_description: module for gtk-doc unit test
+ * @title: GtkdocTesterNoDocs
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</commentblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * SECTION:tester_nolongdesc
+ * @short_description: module for gtk-doc unit test
+ * @title: GtkdocTesterNoLongDesc
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:tester_nolongdesc</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>module for gtk-doc unit test</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocTesterNoLongDesc</description>
+ </parameter>
+ </parameters>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * SECTION:tester_noshortdesc
+ * @title: GtkdocTesterNoShortDesc
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:tester_noshortdesc</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocTesterNoShortDesc</description>
+ </parameter>
+ </parameters>
+ <description>This file contains non-sense code for the sole purpose of testing the docs.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * SECTION:tester_brokendocs
+ * @short_description: module for gtk-doc unit test
+ * @title: GtkdocTesterBrokenDocs
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:tester_brokendocs</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>short_description</name>
+ <description>module for gtk-doc unit test</description>
+ </parameter>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocTesterBrokenDocs</description>
+ </parameter>
+ </parameters>
+ <description>This file contains non-sense code for the sole purpose of testing the docs.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * func_no_docs:
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>func_no_docs</name>
+ </identifier>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * func_no_item_docs:
+ *
+ * Here we document the function but not the parameters.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>func_no_item_docs</name>
+ </identifier>
+ <description>Here we document the function but not the parameters.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * func_incomplete_docs:
+ * @a: a value
+ *
+ * Here we document the function but not all the parameters.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>func_incomplete_docs</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>a value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the function but not all the parameters.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * func_unused_docs:
+ * @a: a value
+ * @b: a value
+ * @c: an unexisting value
+ *
+ * Here we document the function and more than the actual parameters.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>func_unused_docs</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>b</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>c</name>
+ <description>an unexisting value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the function and more than the actual parameters.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/fail/tester.h.xml b/tests/scanner/annotationparser/gtkdoc/fail/tester.h.xml
new file mode 100644
index 00000000..3e51b761
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/fail/tester.h.xml
@@ -0,0 +1,205 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+<commentblock>/**
+ * MACRO_NO_ITEM_DOCS:
+ *
+ * Here we document the macro but not the parameters.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>MACRO_NO_ITEM_DOCS</name>
+ </identifier>
+ <description>Here we document the macro but not the parameters.</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * MACRO_INCOMPLETE_DOCS:
+ * @a: a value
+ *
+ * Here we document the macro but not all the parameters.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>MACRO_INCOMPLETE_DOCS</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>a value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the macro but not all the parameters.</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * MACRO_UNUSED_DOCS:
+ * @a: a value
+ * @b: a value
+ * @c: an unexisting value
+ *
+ * Here we document the macro and more than the actual parameters.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>MACRO_UNUSED_DOCS</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>b</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>c</name>
+ <description>an unexisting value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the macro and more than the actual parameters.</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * EnumNoItemDocs:
+ *
+ * Here we document the enum but not the values.
+ * http://bugzilla.gnome.org/show_bug.cgi?id=568711
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>EnumNoItemDocs</name>
+ </identifier>
+ <description>Here we document the enum but not the values.
+http://bugzilla.gnome.org/show_bug.cgi?id=568711</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * EnumIncompleteDocs:
+ * @ENUM_INCOMPLETE_DOCS_1: a value
+ *
+ * Here we document the enum but not all the values.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>EnumIncompleteDocs</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>ENUM_INCOMPLETE_DOCS_1</name>
+ <description>a value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the enum but not all the values.</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * EnumUnusedDocs:
+ * @ENUM_UNUSED_DOCS_1: a value
+ * @ENUM_UNUSED_DOCS_2: a value
+ * @ENUM_UNUSED_DOCS_3: an unexisting value
+ *
+ * Here we document the enum and more than the actual values.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>EnumUnusedDocs</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>ENUM_UNUSED_DOCS_1</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>ENUM_UNUSED_DOCS_2</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>ENUM_UNUSED_DOCS_3</name>
+ <description>an unexisting value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the enum and more than the actual values.</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * StructNoItemDocs:
+ *
+ * Here we document the struct but not the values.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>StructNoItemDocs</name>
+ </identifier>
+ <description>Here we document the struct but not the values.</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * StructIncompleteDocs:
+ * @a: a value
+ *
+ * Here we document the struct but not all the values.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>StructIncompleteDocs</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>a value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the struct but not all the values.</description>
+ </docblock>
+</test>
+
+<test>
+<commentblock>/**
+ * StructUnusedDocs:
+ * @a: a value
+ * @b: a value
+ * @c: an unexisting value
+ *
+ * Here we document the struct and more than the actual values.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>StructUnusedDocs</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>a</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>b</name>
+ <description>a value</description>
+ </parameter>
+ <parameter>
+ <name>c</name>
+ <description>an unexisting value</description>
+ </parameter>
+ </parameters>
+ <description>Here we document the struct and more than the actual values.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/gobject/giface.c.xml b/tests/scanner/annotationparser/gtkdoc/gobject/giface.c.xml
new file mode 100644
index 00000000..ea09d126
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/gobject/giface.c.xml
@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock><![CDATA[/**
+ * SECTION:iface
+ * @title: GtkdocIface
+ * @short_description: interface for gtk-doc unit test
+ * @see_also: #GtkdocObject
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ * We can link to the #GtkdocIface:itest property and the #GtkdocIface::itest
+ * signal.
+ * An instance can be configured using the gtkdoc_iface_configure() function.
+ *
+ * I can haz pictures too!
+ * <mediaobject>
+ * <imageobject><imagedata fileref="home.png" format="PNG"/></imageobject>
+ * <caption><para>Home sweet home.</para></caption>
+ * </mediaobject>
+ *
+ * Just incase you wonder, special caracters can be escaped with a \ like in \%
+ * or \# or even \@.
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:iface</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocIface</description>
+ </parameter>
+ <parameter>
+ <name>short_description</name>
+ <description>interface for gtk-doc unit test</description>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#GtkdocObject</description>
+ </parameter>
+ </parameters>
+ <description><![CDATA[This file contains non-sense code for the sole purpose of testing the docs.
+We can link to the #GtkdocIface:itest property and the #GtkdocIface::itest
+signal.
+An instance can be configured using the gtkdoc_iface_configure() function.
+
+I can haz pictures too!
+<mediaobject>
+ <imageobject><imagedata fileref="home.png" format="PNG"/></imageobject>
+ <caption><para>Home sweet home.</para></caption>
+</mediaobject>
+
+Just incase you wonder, special caracters can be escaped with a \ like in \%
+or \# or even \@.]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * SECTION:iface2
+ * @title: GtkdocIface2
+ * @short_description: interface with a prerequisite for gtk-doc unit test
+ * @see_also: #GtkdocObject, #GtkdocIface
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:iface2</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocIface2</description>
+ </parameter>
+ <parameter>
+ <name>short_description</name>
+ <description>interface with a prerequisite for gtk-doc unit test</description>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#GtkdocObject, #GtkdocIface</description>
+ </parameter>
+ </parameters>
+ <description>This file contains non-sense code for the sole purpose of testing the docs.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * gtkdoc_iface_configure:
+ * @config: settings
+ *
+ * Configure a new instance
+ *
+ * Returns: %TRUE for sucess or %FALSE in case of an error
+ *
+ * Since: 0.1
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>gtkdoc_iface_configure</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>config</name>
+ <description>settings</description>
+ </parameter>
+ </parameters>
+ <description>Configure a new instance</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>%TRUE for sucess or %FALSE in case of an error</description>
+ </tag>
+ <tag>
+ <name>since</name>
+ <description>0.1</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocIface::itest:
+ * @self: myself
+ *
+ * The event has been triggered.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocIface::itest</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>myself</description>
+ </parameter>
+ </parameters>
+ <description>The event has been triggered.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/gobject/giface.h.xml b/tests/scanner/annotationparser/gtkdoc/gobject/giface.h.xml
new file mode 100644
index 00000000..7185ad0b
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/gobject/giface.h.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * GtkdocIface:
+ *
+ * opaque instance of gtk-doc unit test interface
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocIface</name>
+ </identifier>
+ <description>opaque instance of gtk-doc unit test interface</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocIface2:
+ *
+ * opaque instance of gtk-doc unit test interface
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocIface2</name>
+ </identifier>
+ <description>opaque instance of gtk-doc unit test interface</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocIfaceInterface:
+ * @parent: this is a bug :/
+ * @test: overideable method
+ *
+ * class data of gtk-doc unit test interface
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocIfaceInterface</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>parent</name>
+ <description>this is a bug :/</description>
+ </parameter>
+ <parameter>
+ <name>test</name>
+ <description>overideable method</description>
+ </parameter>
+ </parameters>
+ <description>class data of gtk-doc unit test interface</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GTKDOC_IFACE_MACRO_DUMMY:
+ * @parameter_1: first arg
+ * @parameter_2: second arg
+ *
+ * This macro does nothing.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GTKDOC_IFACE_MACRO_DUMMY</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>parameter_1</name>
+ <description>first arg</description>
+ </parameter>
+ <parameter>
+ <name>parameter_2</name>
+ <description>second arg</description>
+ </parameter>
+ </parameters>
+ <description>This macro does nothing.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GTKDOC_IFACE_MACRO_SUM:
+ * @parameter_1: first arg
+ * @parameter_2: second arg
+ *
+ * This macro adds its args.
+ *
+ * Returns: the sum of @parameter_1 and @parameter_2
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GTKDOC_IFACE_MACRO_SUM</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>parameter_1</name>
+ <description>first arg</description>
+ </parameter>
+ <parameter>
+ <name>parameter_2</name>
+ <description>second arg</description>
+ </parameter>
+ </parameters>
+ <description>This macro adds its args.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>the sum of @parameter_1 and @parameter_2</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/gobject/gobject.c.xml b/tests/scanner/annotationparser/gtkdoc/gobject/gobject.c.xml
new file mode 100644
index 00000000..e6ac5f97
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/gobject/gobject.c.xml
@@ -0,0 +1,416 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock><![CDATA[/**
+ * SECTION:object
+ * @title: GtkdocObject
+ * @short_description: class for gtk-doc unit test
+ * @see_also: #GtkdocIface
+ * @Image: object.png
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ * We can link to the #GtkdocObject:otest property and the #GtkdocObject::otest
+ * signal.
+ *
+ * When subclassing it is useful to override the #GtkdocObjectClass.test()
+ * method. The #GtkdocObjectClass.foo_bar() vmethod lets you refine your
+ * frobnicator.
+ *
+ * A new instance can be created using the gtkdoc_object_new() function. The
+ * whole lifecycle usualy looks like shown in this example:
+ * |[{{!-- language="C" --!}}
+ * GObject *myobj;
+ *
+ * myobj = gtkdoc_object_new();
+ * // do somehing
+ * g_object_unref (myobj);
+ * ]|
+ *
+ * # Examples #
+ *
+ * You can also change parameters:
+ * <informalexample>
+ * <programlisting language="c"><xi:include xmlns:xi="http://www.w3.org/2003/XInclude" parse="text" href="../../examples/gobject.c" /></programlisting>
+ * </informalexample>
+ *
+ * This example serves two main purposes:
+ * - testing conversion (long description
+ * follows here)
+ * - catching bugs
+ * - having an example
+ *
+ * Nothing more to say.
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:object</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocObject</description>
+ </parameter>
+ <parameter>
+ <name>short_description</name>
+ <description>class for gtk-doc unit test</description>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#GtkdocIface</description>
+ </parameter>
+ <parameter>
+ <name>Image</name>
+ <description>object.png</description>
+ </parameter>
+ </parameters>
+ <description><![CDATA[This file contains non-sense code for the sole purpose of testing the docs.
+We can link to the #GtkdocObject:otest property and the #GtkdocObject::otest
+signal.
+
+When subclassing it is useful to override the #GtkdocObjectClass.test()
+method. The #GtkdocObjectClass.foo_bar() vmethod lets you refine your
+frobnicator.
+
+A new instance can be created using the gtkdoc_object_new() function. The
+whole lifecycle usualy looks like shown in this example:
+|[{{!-- language="C" --!}}
+GObject *myobj;
+
+myobj = gtkdoc_object_new();
+// do somehing
+g_object_unref (myobj);
+]|
+
+# Examples #
+
+You can also change parameters:
+<informalexample>
+<programlisting language="c"><xi:include xmlns:xi="http://www.w3.org/2003/XInclude" parse="text" href="../../examples/gobject.c" /></programlisting>
+</informalexample>
+
+This example serves two main purposes:
+- testing conversion (long description
+ follows here)
+- catching bugs
+- having an example
+
+Nothing more to say.]]></description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * SECTION:object2
+ * @title: GtkdocObject2
+ * @short_description: class with interface for gtk-doc unit test
+ * @see_also: #GtkdocIface
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ *
+ * Internals
+ * =========
+ *
+ * All the internal details go here or not:
+ * - single item list
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:object2</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocObject2</description>
+ </parameter>
+ <parameter>
+ <name>short_description</name>
+ <description>class with interface for gtk-doc unit test</description>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#GtkdocIface</description>
+ </parameter>
+ </parameters>
+ <description>This file contains non-sense code for the sole purpose of testing the docs.
+
+Internals
+=========
+
+All the internal details go here or not:
+- single item list</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * gtkdoc_object_new:
+ *
+ * Create a new instance
+ * <note><para>
+ * This will only work if you have called g_type_init() before.
+ * </para></note>
+ * Returns: the instance or %NULL in case of an error
+ *
+ * Since: 0.1
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>gtkdoc_object_new</name>
+ </identifier>
+ <description><![CDATA[Create a new instance
+<note><para>
+ This will only work if you have called g_type_init() before.
+</para></note>]]></description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>the instance or %NULL in case of an error</description>
+ </tag>
+ <tag>
+ <name>since</name>
+ <description>0.1</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * gtkdoc_object_set_otest:
+ * @self: the object
+ * @value: the new otest value, whose description extends further than one
+ * line will allow
+ *
+ * Set the #GtkdocObject:otest property.
+ *
+ * Deprecated: Use g_object_set(obj,&quot;otest&quot;,value,NULL); instead.
+ *
+ * Since: 0.5
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>gtkdoc_object_set_otest</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>the object</description>
+ </parameter>
+ <parameter>
+ <name>value</name>
+ <description>the new otest value, whose description extends further than one line will allow</description>
+ </parameter>
+ </parameters>
+ <description>Set the #GtkdocObject:otest property.</description>
+ <tags>
+ <tag>
+ <name>deprecated</name>
+ <description><![CDATA[Use g_object_set(obj,&quot;otest&quot;,value,NULL); instead.]]></description>
+ </tag>
+ <tag>
+ <name>since</name>
+ <description>0.5</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock><![CDATA[/**
+ * gtkdoc_object_frobnicate:
+ * @self: the object
+ * @n: number of iterations
+ *
+ * Frobnicate the content of @self @n times. This implements a
+ * complex algorithm (http://en.wikipedia.org/wiki/Algorithm).
+ * <footnote>
+ * <para>
+ * Negative frobnication can lead to unexpected behaviour.
+ * </para>
+ * </footnote>
+ *
+ * Since: 0.5
+ */]]></commentblock>
+ <docblock>
+ <identifier>
+ <name>gtkdoc_object_frobnicate</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>the object</description>
+ </parameter>
+ <parameter>
+ <name>n</name>
+ <description>number of iterations</description>
+ </parameter>
+ </parameters>
+ <description><![CDATA[Frobnicate the content of @self @n times. This implements a
+complex algorithm (http://en.wikipedia.org/wiki/Algorithm).
+<footnote>
+ <para>
+ Negative frobnication can lead to unexpected behaviour.
+ </para>
+</footnote>]]></description>
+ <tags>
+ <tag>
+ <name>since</name>
+ <description>0.5</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * gtkdoc_object_fooify:
+ * @self: the object
+ * @...: a NULL terminated list of arguments
+ *
+ * Fooify the content of @self.
+ *
+ * Returns: %TRUE for success
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>gtkdoc_object_fooify</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>the object</description>
+ </parameter>
+ <parameter>
+ <name>...</name>
+ <description>a NULL terminated list of arguments</description>
+ </parameter>
+ </parameters>
+ <description>Fooify the content of @self.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>%TRUE for success</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject::otest:
+ * @self: myself
+ *
+ * The event has been triggered.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject::otest</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>myself</description>
+ </parameter>
+ </parameters>
+ <description>The event has been triggered.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject::dep-otest:
+ * @self: myself
+ *
+ * The event has been triggered.
+ *
+ * Deprecated: Use the #GtkdocObject::otest signal instead.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject::dep-otest</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>self</name>
+ <description>myself</description>
+ </parameter>
+ </parameters>
+ <description>The event has been triggered.</description>
+ <tags>
+ <tag>
+ <name>deprecated</name>
+ <description>Use the #GtkdocObject::otest signal instead.</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject::strings-changed:
+ *
+ * Something has happened.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject::strings-changed</name>
+ </identifier>
+ <description>Something has happened.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject::variant-changed:
+ *
+ * Something has happened.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject::variant-changed</name>
+ </identifier>
+ <description>Something has happened.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject:otest:
+ *
+ * Since: 0.1
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject:otest</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>since</name>
+ <description>0.1</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject:dep-otest:
+ *
+ * Deprecated: use #GtkdocObject:otest property
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject:dep-otest</name>
+ </identifier>
+ <tags>
+ <tag>
+ <name>deprecated</name>
+ <description>use #GtkdocObject:otest property</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/gobject/gobject.h.xml b/tests/scanner/annotationparser/gtkdoc/gobject/gobject.h.xml
new file mode 100644
index 00000000..42fcc664
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/gobject/gobject.h.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject:
+ *
+ * instance data of gtk-doc unit test class
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject</name>
+ </identifier>
+ <description>instance data of gtk-doc unit test class</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObjectClass:
+ * @parent: this is a bug :/
+ * @test: overideable method
+ * @ping: can be used before calling the @test() function
+ * @foo_bar: lets you refine your frobnicator
+ *
+ * class data of gtk-doc unit test class
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObjectClass</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>parent</name>
+ <description>this is a bug :/</description>
+ </parameter>
+ <parameter>
+ <name>test</name>
+ <description>overideable method</description>
+ </parameter>
+ <parameter>
+ <name>ping</name>
+ <description>can be used before calling the @test() function</description>
+ </parameter>
+ <parameter>
+ <name>foo_bar</name>
+ <description>lets you refine your frobnicator</description>
+ </parameter>
+ </parameters>
+ <description>class data of gtk-doc unit test class</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject2:
+ *
+ * instance data of gtk-doc unit test class
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject2</name>
+ </identifier>
+ <description>instance data of gtk-doc unit test class</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocObject2Class:
+ * @parent: this is a bug :/
+ *
+ * class data of gtk-doc unit test class
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocObject2Class</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>parent</name>
+ <description>this is a bug :/</description>
+ </parameter>
+ </parameters>
+ <description>class data of gtk-doc unit test class</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GTKDOC_OBJECT_MACRO_DUMMY:
+ * @parameter_1: first arg
+ * @parameter_2: second arg
+ *
+ * This macro does nothing.
+ *
+ * Since: 0.1
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GTKDOC_OBJECT_MACRO_DUMMY</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>parameter_1</name>
+ <description>first arg</description>
+ </parameter>
+ <parameter>
+ <name>parameter_2</name>
+ <description>second arg</description>
+ </parameter>
+ </parameters>
+ <description>This macro does nothing.</description>
+ <tags>
+ <tag>
+ <name>since</name>
+ <description>0.1</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GTKDOC_OBJECT_MACRO_SUM:
+ * @parameter_1: first arg
+ * @parameter_2: second arg
+ *
+ * This macro adds its args.
+ *
+ * Returns: the sum of @parameter_1 and @parameter_2
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GTKDOC_OBJECT_MACRO_SUM</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>parameter_1</name>
+ <description>first arg</description>
+ </parameter>
+ <parameter>
+ <name>parameter_2</name>
+ <description>second arg</description>
+ </parameter>
+ </parameters>
+ <description>This macro adds its args.</description>
+ <tags>
+ <tag>
+ <name>returns</name>
+ <description>the sum of @parameter_1 and @parameter_2</description>
+ </tag>
+ </tags>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/gobject/gtypes.c.xml b/tests/scanner/annotationparser/gtkdoc/gobject/gtypes.c.xml
new file mode 100644
index 00000000..72dcdf90
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/gobject/gtypes.c.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * SECTION:types
+ * @title: GtkdocTypes
+ * @short_description: other gobject types for gtk-doc unit test
+ * @see_also: #GtkdocObject, #GtkdocIface
+ *
+ * This file contains non-sense code for the sole purpose of testing the docs.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>SECTION:types</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>title</name>
+ <description>GtkdocTypes</description>
+ </parameter>
+ <parameter>
+ <name>short_description</name>
+ <description>other gobject types for gtk-doc unit test</description>
+ </parameter>
+ <parameter>
+ <name>see_also</name>
+ <description>#GtkdocObject, #GtkdocIface</description>
+ </parameter>
+ </parameters>
+ <description>This file contains non-sense code for the sole purpose of testing the docs.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/gtkdoc/gobject/gtypes.h.xml b/tests/scanner/annotationparser/gtkdoc/gobject/gtypes.h.xml
new file mode 100644
index 00000000..1d188271
--- /dev/null
+++ b/tests/scanner/annotationparser/gtkdoc/gobject/gtypes.h.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<tests>
+
+<test>
+ <commentblock>/**
+ * GtkdocEnum:
+ * @GTKDOC_ENUM_V1: first
+ * @GTKDOC_ENUM_V2: second
+ * Since: 0.10
+ *
+ * Enum values for the #GtkdocEnum type.
+ */</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocEnum</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>GTKDOC_ENUM_V1</name>
+ <description>first</description>
+ </parameter>
+ <parameter>
+ <name>GTKDOC_ENUM_V2</name>
+ <description>second Since: 0.10</description>
+ </parameter>
+ </parameters>
+ <description>Enum values for the #GtkdocEnum type.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocPlainOldData:
+ * @n: Some integer member.
+ * @x: Some floating point member.
+ *
+ * Unboxed plain old data that should default to public members.
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocPlainOldData</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>n</name>
+ <description>Some integer member.</description>
+ </parameter>
+ <parameter>
+ <name>x</name>
+ <description>Some floating point member.</description>
+ </parameter>
+ </parameters>
+ <description>Unboxed plain old data that should default to public members.</description>
+ </docblock>
+</test>
+
+<test>
+ <commentblock>/**
+ * GtkdocBoxedPlainOldData:
+ * @n: Some integer member.
+ * @x: Some floating point member.
+ *
+ * Boxed plain old data that should default to public members.
+ **/</commentblock>
+ <docblock>
+ <identifier>
+ <name>GtkdocBoxedPlainOldData</name>
+ </identifier>
+ <parameters>
+ <parameter>
+ <name>n</name>
+ <description>Some integer member.</description>
+ </parameter>
+ <parameter>
+ <name>x</name>
+ <description>Some floating point member.</description>
+ </parameter>
+ </parameters>
+ <description>Boxed plain old data that should default to public members.</description>
+ </docblock>
+</test>
+
+</tests>
diff --git a/tests/scanner/annotationparser/test_parser.py b/tests/scanner/annotationparser/test_parser.py
new file mode 100644
index 00000000..ce3ccd22
--- /dev/null
+++ b/tests/scanner/annotationparser/test_parser.py
@@ -0,0 +1,298 @@
+# -*- Mode: Python -*-
+# GObject-Introspection - a framework for introspecting GObject libraries
+# Copyright (C) 2012 Dieter Verfaillie <dieterv@optionexplicit.be>
+#
+# 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 the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+
+
+'''
+test_parser.py
+
+Tests ensuring the "parse tree" built by annotationparser.py
+continues to function correctly.
+'''
+
+
+import difflib
+import os
+import xml.etree.ElementTree as etree
+import unittest
+
+from giscanner.annotationparser import AnnotationParser
+from giscanner.ast import Namespace
+from giscanner.message import MessageLogger
+
+
+def parsed2tree(docblock):
+ parsed = ''
+
+ if docblock is not None:
+ parsed += '<docblock>\n'
+
+ parsed += ' <identifier>\n'
+ # An identifier name is always required, but we can't trust our
+ # own parser to ensure this when testing so fall back to an empty
+ # string when no name has been parsed...
+ parsed += ' <name>%s</name>\n' % (docblock.name or '', )
+ if docblock.options.values:
+ parsed += ' <annotations>\n'
+ for key, value in docblock.options.values:
+ parsed += ' <annotation>\n'
+ parsed += ' <name>%s</name>\n' % (key, )
+ if value is not None:
+ options = value.all()
+ parsed += ' <options>\n'
+ for option in options:
+ parsed += ' <option>\n'
+ parsed += ' <name>%s</name>\n' % (option, )
+ if options[option] is not None:
+ parsed += ' <value>%s</value>\n' % (options[option], )
+ parsed += ' </option>\n'
+ parsed += ' </options>\n'
+ parsed += ' </annotation>\n'
+ parsed += ' </annotations>\n'
+ parsed += ' </identifier>\n'
+
+ if docblock.params:
+ parsed += ' <parameters>\n'
+ for param_name in docblock.params:
+ param = docblock.params.get(param_name)
+ parsed += ' <parameter>\n'
+ parsed += ' <name>%s</name>\n' % (param_name, )
+ if param.options.values:
+ parsed += ' <annotations>\n'
+ for key, value in param.options.values:
+ parsed += ' <annotation>\n'
+ parsed += ' <name>%s</name>\n' % (key, )
+ if value is not None:
+ options = value.all()
+ parsed += ' <options>\n'
+ for option in options:
+ parsed += ' <option>\n'
+ parsed += ' <name>%s</name>\n' % (option, )
+ if options[option] is not None:
+ parsed += ' <value>%s</value>\n' % (options[option], )
+ parsed += ' </option>\n'
+ parsed += ' </options>\n'
+ parsed += ' </annotation>\n'
+ parsed += ' </annotations>\n'
+ if param.comment or param.value:
+ parsed += ' <description>%s</description>\n' % (param.comment or param.value, )
+ parsed += ' </parameter>\n'
+ parsed += ' </parameters>\n'
+
+ if docblock.comment or docblock.value:
+ parsed += ' <description>%s</description>\n' % (docblock.comment or docblock.value, )
+
+ if docblock.tags:
+ parsed += ' <tags>\n'
+ for tag_name in docblock.tags:
+ tag = docblock.tags.get(tag_name)
+ parsed += ' <tag>\n'
+ parsed += ' <name>%s</name>\n' % (tag_name, )
+ if tag.options.values:
+ parsed += ' <annotations>\n'
+ for key, value in tag.options.values:
+ parsed += ' <annotation>\n'
+ parsed += ' <name>%s</name>\n' % (key, )
+ if value is not None:
+ options = value.all()
+ parsed += ' <options>\n'
+ for option in options:
+ parsed += ' <option>\n'
+ parsed += ' <name>%s</name>\n' % (option, )
+ if options[option] is not None:
+ parsed += ' <value>%s</value>\n' % (options[option], )
+ parsed += ' </option>\n'
+ parsed += ' </options>\n'
+ parsed += ' </annotation>\n'
+ parsed += ' </annotations>\n'
+ if tag.comment or tag.value:
+ parsed += ' <description>%s</description>\n' % (tag.comment or tag.value, )
+ parsed += ' </tag>\n'
+ parsed += ' </tags>\n'
+
+ parsed += '<docblock>'
+
+ return parsed
+
+
+def expected2tree(docblock):
+ # Note: this sucks, but we can't rely on etree.tostring() to generate useable output :(
+
+ expected = ''
+
+ if docblock is not None:
+ expected += '<docblock>\n'
+
+ if docblock.find('identifier') is not None:
+ expected += ' <identifier>\n'
+ # Expecting an identifier name is required, don't bother checking if it's there or not
+ expected += ' <name>%s</name>\n' % (docblock.find('identifier/name').text, )
+ annotations = docblock.find('identifier/annotations')
+ if annotations is not None:
+ expected += ' <annotations>\n'
+ for annotation in annotations.findall('annotation'):
+ expected += ' <annotation>\n'
+ expected += ' <name>%s</name>\n' % (annotation.find('name').text, )
+ if annotation.find('options') is not None:
+ expected += ' <options>\n'
+ for option in annotation.findall('options/option'):
+ expected += ' <option>\n'
+ expected += ' <name>%s</name>\n' % (option.find('name').text, )
+ if option.find('value') is not None:
+ expected += ' <value>%s</value>\n' % (option.find('value').text, )
+ expected += ' </option>\n'
+ expected += ' </options>\n'
+ expected += ' </annotation>\n'
+ expected += ' </annotations>\n'
+ expected += ' </identifier>\n'
+
+ parameters = docblock.find('parameters')
+ if parameters is not None:
+ expected += ' <parameters>\n'
+ for parameter in parameters.findall('parameter'):
+ expected += ' <parameter>\n'
+ expected += ' <name>%s</name>\n' % (parameter.find('name').text, )
+ annotations = parameter.find('annotations')
+ if annotations is not None:
+ expected += ' <annotations>\n'
+ for annotation in parameter.findall('annotations/annotation'):
+ expected += ' <annotation>\n'
+ expected += ' <name>%s</name>\n' % (annotation.find('name').text, )
+ if annotation.find('options') is not None:
+ expected += ' <options>\n'
+ for option in annotation.findall('options/option'):
+ expected += ' <option>\n'
+ expected += ' <name>%s</name>\n' % (option.find('name').text, )
+ if option.find('value') is not None:
+ expected += ' <value>%s</value>\n' % (option.find('value').text, )
+ expected += ' </option>\n'
+ expected += ' </options>\n'
+ expected += ' </annotation>\n'
+ expected += ' </annotations>\n'
+ if parameter.find('description') is not None:
+ expected += ' <description>%s</description>\n' % (parameter.find('description').text, )
+ expected += ' </parameter>\n'
+ expected += ' </parameters>\n'
+
+ description = docblock.find('description')
+ if description is not None:
+ expected += ' <description>%s</description>\n' % (description.text, )
+
+ tags = docblock.find('tags')
+ if tags is not None:
+ expected += ' <tags>\n'
+ for tag in tags.findall('tag'):
+ expected += ' <tag>\n'
+ expected += ' <name>%s</name>\n' % (tag.find('name').text, )
+ annotations = tag.find('annotations')
+ if annotations is not None:
+ expected += ' <annotations>\n'
+ for annotation in tag.findall('annotations/annotation'):
+ expected += ' <annotation>\n'
+ expected += ' <name>%s</name>\n' % (annotation.find('name').text, )
+ if annotation.find('options') is not None:
+ expected += ' <options>\n'
+ for option in annotation.findall('options/option'):
+ expected += ' <option>\n'
+ expected += ' <name>%s</name>\n' % (option.find('name').text, )
+ if option.find('value') is not None:
+ expected += ' <value>%s</value>\n' % (option.find('value').text, )
+ expected += ' </option>\n'
+ expected += ' </options>\n'
+ expected += ' </annotation>\n'
+ expected += ' </annotations>\n'
+ if tag.find('description') is not None:
+ expected += ' <description>%s</description>\n' % (tag.find('description').text, )
+ expected += ' </tag>\n'
+ expected += ' </tags>\n'
+
+ expected += '<docblock>'
+
+ return expected
+
+
+def create_tests(tests_dir, tests_file):
+ tests_name = os.path.relpath(tests_file[:-4], tests_dir)
+ tests_name = tests_name.replace('/', '.').replace('\\', '.')
+
+ tests_tree = etree.parse(tests_file).getroot()
+
+ fix_cdata_elements = tests_tree.findall('test/commentblock')
+ fix_cdata_elements += tests_tree.findall('.//description')
+
+ for element in fix_cdata_elements:
+ if element.text:
+ element.text = element.text.replace('{{?', '<!')
+ element.text = element.text.replace('}}', '>')
+
+ for counter, test in enumerate(tests_tree.findall('test')):
+ test_name = 'test_%s.%03d' % (tests_name, counter + 1)
+ test_method = TestCommentBlock.__create_test__(test)
+ setattr(TestCommentBlock, test_name, test_method)
+
+
+class TestCommentBlock(unittest.TestCase):
+ @classmethod
+ def __create_test__(cls, testcase):
+ def do_test(self):
+ # Parse GTK-Doc comment block
+ commentblock = testcase.find('commentblock').text
+ parsed_docblock = AnnotationParser().parse_comment_block((commentblock, 'test.c', 1))
+ parsed_tree = parsed2tree(parsed_docblock).split('\n')
+
+ # Get expected output
+ expected_docblock = testcase.find('docblock')
+ expected_tree = expected2tree(expected_docblock).split('\n')
+
+ # Construct a meaningful message
+ msg = 'Parsed DocBlock object tree does not match expected output:\n\n'
+ msg += '%s\n\n' % (commentblock, )
+
+ diff = difflib.unified_diff(expected_tree, parsed_tree,
+ 'Expected DocBlock', 'Parsed DocBlock',
+ n=max(len(expected_tree), len(parsed_tree)),
+ lineterm='')
+ for line in diff:
+ msg += '%s\n' % (line, )
+
+ # Compare parsed with expected DocBlock tree
+ self.assertEqual(parsed_tree, expected_tree, msg)
+
+ return do_test
+
+
+if __name__ == '__main__':
+ # Initialize message logger
+ # TODO: at some point it might be a good idea to test warnings emitted
+ # by annotationparser here, instead of having them in tests/warn/annotationparser.h?
+ namespace = Namespace('Test', '1.0')
+ logger = MessageLogger.get(namespace=namespace)
+ logger.enable_warnings(False)
+
+ # Load test cases from disc
+ tests_dir = os.path.dirname(os.path.abspath(__file__))
+
+ for dirpath, dirnames, filenames in os.walk(tests_dir):
+ for filename in filenames:
+ tests_file = os.path.join(dirpath, filename)
+ if os.path.basename(tests_file).endswith('.xml'):
+ create_tests(tests_dir, tests_file)
+
+ # Run test suite
+ unittest.main()
diff --git a/tests/scanner/annotationparser/test_patterns.py b/tests/scanner/annotationparser/test_patterns.py
new file mode 100644
index 00000000..6db99c3f
--- /dev/null
+++ b/tests/scanner/annotationparser/test_patterns.py
@@ -0,0 +1,618 @@
+# -*- Mode: Python -*-
+# GObject-Introspection - a framework for introspecting GObject libraries
+# Copyright (C) 2012 Dieter Verfaillie <dieterv@optionexplicit.be>
+#
+# 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 the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+
+
+'''
+test_patterns.py
+
+Tests ensuring the regular expression programs used
+in annotationparser.py continue to function correctly.
+Each regular expression program is tested on input that
+should not match and input that should match. When input
+should match, resulting symbolic groups are verified
+against the expected output.
+'''
+
+
+from giscanner.annotationparser import (SECTION_RE, SYMBOL_RE, PROPERTY_RE,
+ SIGNAL_RE, PARAMETER_RE, TAG_RE,
+ COMMENT_END_RE)
+from unittest import (TestCase, main)
+
+
+identifier_section_tests = [
+ (SECTION_RE, 'TSIEOCN',
+ None),
+ (SECTION_RE, 'section',
+ None),
+ (SECTION_RE, 'section:',
+ None),
+ (SECTION_RE, 'section:test',
+ None),
+ (SECTION_RE, 'SECTION',
+ {'colon': '',
+ 'section_name': None}),
+ (SECTION_RE, 'SECTION \t ',
+ {'colon': '',
+ 'section_name': None}),
+ (SECTION_RE, ' \t SECTION \t ',
+ {'colon': '',
+ 'section_name': None}),
+ (SECTION_RE, 'SECTION: \t ',
+ {'colon': ':',
+ 'section_name': None}),
+ (SECTION_RE, 'SECTION : ',
+ {'colon': ':',
+ 'section_name': None}),
+ (SECTION_RE, ' SECTION : ',
+ {'colon': ':',
+ 'section_name': None}),
+ (SECTION_RE, 'SECTION:gtkwidget',
+ {'colon': ':',
+ 'section_name': 'gtkwidget'}),
+ (SECTION_RE, 'SECTION:gtkwidget ',
+ {'colon': ':',
+ 'section_name': 'gtkwidget'}),
+ (SECTION_RE, ' SECTION:gtkwidget',
+ {'colon': ':',
+ 'section_name': 'gtkwidget'}),
+ (SECTION_RE, ' SECTION:gtkwidget\t ',
+ {'colon': ':',
+ 'section_name': 'gtkwidget'}),
+ (SECTION_RE, 'SECTION: gtkwidget ',
+ {'colon': ':',
+ 'section_name': 'gtkwidget'}),
+ (SECTION_RE, 'SECTION : gtkwidget',
+ {'colon': ':',
+ 'section_name': 'gtkwidget'}),
+ (SECTION_RE, 'SECTION gtkwidget \f ',
+ {'colon': '',
+ 'section_name': 'gtkwidget'})]
+
+identifier_symbol_tests = [
+ (SYMBOL_RE, 'GBaseFinalizeFunc:',
+ {'colon': ':',
+ 'symbol_name': 'GBaseFinalizeFunc',
+ 'annotations': ''}),
+ (SYMBOL_RE, 'gtk_widget_show ',
+ {'colon': '',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, ' gtk_widget_show',
+ {'colon': '',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, ' gtk_widget_show ',
+ {'colon': '',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, 'gtk_widget_show:',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, 'gtk_widget_show :',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, 'gtk_widget_show: ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, 'gtk_widget_show : ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, ' gtk_widget_show:',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, ' gtk_widget_show :',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, ' gtk_widget_show: ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, ' gtk_widget_show : ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': ''}),
+ (SYMBOL_RE, 'gtk_widget_show (skip)',
+ {'colon': '',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, 'gtk_widget_show: (skip)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, 'gtk_widget_show : (skip)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, 'gtk_widget_show: (skip)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, 'gtk_widget_show : (skip)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, ' gtk_widget_show:(skip)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, ' gtk_widget_show :(skip)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, ' gtk_widget_show: (skip)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)'}),
+ (SYMBOL_RE, ' gtk_widget_show : (skip) \t ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) \t '}),
+ (SYMBOL_RE, ' gtk_widget_show : (skip) \t ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) \t '}),
+ (SYMBOL_RE, 'gtk_widget_show:(skip)(test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)(test1)'}),
+ (SYMBOL_RE, 'gtk_widget_show (skip)(test1)',
+ {'colon': '',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip)(test1)'}),
+ (SYMBOL_RE, 'gtk_widget_show: (skip) (test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1)'}),
+ (SYMBOL_RE, 'gtk_widget_show : (skip) (test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1)'}),
+ (SYMBOL_RE, 'gtk_widget_show: (skip) (test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1)'}),
+ (SYMBOL_RE, 'gtk_widget_show : (skip) (test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1)'}),
+ (SYMBOL_RE, ' gtk_widget_show:(skip) (test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1)'}),
+ (SYMBOL_RE, ' gtk_widget_show :(skip) (test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1)'}),
+ (SYMBOL_RE, ' gtk_widget_show: (skip) (test1)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1)'}),
+ (SYMBOL_RE, ' gtk_widget_show : (skip) (test1) ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) '}),
+ (SYMBOL_RE, 'gtk_widget_show: (skip) (test1) (test-2)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2)'}),
+ (SYMBOL_RE, 'gtk_widget_show : (skip) (test1) (test-2)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2)'}),
+ (SYMBOL_RE, 'gtk_widget_show: (skip) (test1) (test-2)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2)'}),
+ (SYMBOL_RE, 'gtk_widget_show : (skip) (test1) (test-2)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2)'}),
+ (SYMBOL_RE, ' gtk_widget_show:(skip) (test1) (test-2)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2)'}),
+ (SYMBOL_RE, ' gtk_widget_show :(skip) (test1) (test-2)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2)'}),
+ (SYMBOL_RE, ' gtk_widget_show: (skip) (test1) (test-2)',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2)'}),
+ (SYMBOL_RE, ' gtk_widget_show : (skip) (test1) (test-2) ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2) '}),
+ (SYMBOL_RE, ' gtk_widget_show : (skip) (test1) (test-2) ',
+ {'colon': ':',
+ 'symbol_name': 'gtk_widget_show',
+ 'annotations': '(skip) (test1) (test-2) '}),
+ # constants
+ (SYMBOL_RE, 'MY_CONSTANT:',
+ {'colon': ':',
+ 'symbol_name': 'MY_CONSTANT',
+ 'annotations': ''}),
+ # structs
+ (SYMBOL_RE, 'FooWidget:',
+ {'colon': ':',
+ 'symbol_name': 'FooWidget',
+ 'annotations': ''}),
+ # enums
+ (SYMBOL_RE, 'Something:',
+ {'colon': ':',
+ 'symbol_name': 'Something',
+ 'annotations': ''})]
+
+identifier_property_tests = [
+ # simple property name
+ (PROPERTY_RE, 'GtkWidget:name (skip)',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': '',
+ 'annotations': '(skip)'}),
+ (PROPERTY_RE, 'GtkWidget:name',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' GtkWidget :name',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'GtkWidget: name ',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' GtkWidget : name ',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'GtkWidget:name:',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'GtkWidget:name: ',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' GtkWidget:name:',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'name',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'Something:name:',
+ {'class_name': 'Something',
+ 'property_name': 'name',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'Something:name: ',
+ {'class_name': 'Something',
+ 'property_name': 'name',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' Something:name:',
+ {'class_name': 'Something',
+ 'property_name': 'name',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'Weird-thing:name:',
+ None),
+ (PROPERTY_RE, 'really-weird_thing:name:',
+ None),
+ (PROPERTY_RE, 'GWin32InputStream:handle:',
+ {'class_name': 'GWin32InputStream',
+ 'property_name': 'handle',
+ 'colon': ':',
+ 'annotations': ''}),
+ # property name that contains a dash
+ (PROPERTY_RE, 'GtkWidget:double-buffered (skip)',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': '',
+ 'annotations': '(skip)'}),
+ (PROPERTY_RE, 'GtkWidget:double-buffered',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' GtkWidget :double-buffered',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'GtkWidget: double-buffered ',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' GtkWidget : double-buffered ',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': '',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'GtkWidget:double-buffered:',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'GtkWidget:double-buffered: ',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' GtkWidget:double-buffered:',
+ {'class_name': 'GtkWidget',
+ 'property_name': 'double-buffered',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'Something:double-buffered:',
+ {'class_name': 'Something',
+ 'property_name': 'double-buffered',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'Something:double-buffered: ',
+ {'class_name': 'Something',
+ 'property_name': 'double-buffered',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, ' Something:double-buffered:',
+ {'class_name': 'Something',
+ 'property_name': 'double-buffered',
+ 'colon': ':',
+ 'annotations': ''}),
+ (PROPERTY_RE, 'Weird-thing:double-buffered:',
+ None),
+ (PROPERTY_RE, 'really-weird_thing:double-buffered:',
+ None),
+ (PROPERTY_RE, ' GMemoryOutputStream:realloc-function: (skip)',
+ {'class_name': 'GMemoryOutputStream',
+ 'property_name': 'realloc-function',
+ 'colon': ':',
+ 'annotations': '(skip)'})]
+
+identifier_signal_tests = [
+ # simple property name
+ (SIGNAL_RE, 'GtkWidget::changed: (skip)',
+ {'class_name': 'GtkWidget',
+ 'signal_name': 'changed',
+ 'colon': ':',
+ 'annotations': '(skip)'}),
+ (SIGNAL_RE, 'GtkWidget::changed:',
+ {'class_name': 'GtkWidget',
+ 'signal_name': 'changed',
+ 'colon': ':',
+ 'annotations': ''}),
+ (SIGNAL_RE, 'Something::changed:',
+ {'class_name': 'Something',
+ 'signal_name': 'changed',
+ 'colon': ':',
+ 'annotations': ''}),
+ (SIGNAL_RE, 'Weird-thing::changed:',
+ None),
+ (SIGNAL_RE, 'really-weird_thing::changed:',
+ None),
+ # signal name that contains a dash
+ (SIGNAL_RE, 'GtkWidget::hierarchy-changed: (skip)',
+ {'class_name': 'GtkWidget',
+ 'signal_name': 'hierarchy-changed',
+ 'colon': ':',
+ 'annotations': '(skip)'}),
+ (SIGNAL_RE, 'GtkWidget::hierarchy-changed:',
+ {'class_name': 'GtkWidget',
+ 'signal_name': 'hierarchy-changed',
+ 'colon': ':',
+ 'annotations': ''}),
+ (SIGNAL_RE, 'Something::hierarchy-changed:',
+ {'class_name': 'Something',
+ 'signal_name': 'hierarchy-changed',
+ 'colon': ':',
+ 'annotations': ''}),
+ (SIGNAL_RE, 'Weird-thing::hierarchy-changed:',
+ None),
+ (SIGNAL_RE, 'really-weird_thing::hierarchy-changed:',
+ None)]
+
+parameter_tests = [
+ (PARAMETER_RE, '@Short_description: Base class for all widgets ',
+ {'parameter_name': 'Short_description',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'Base class for all widgets'}),
+ (PARAMETER_RE, '@...: the value of the first property, followed optionally by more',
+ {'parameter_name': '...',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'the value of the first property, followed optionally by more'}),
+ (PARAMETER_RE, '@widget: a #GtkWidget',
+ {'parameter_name': 'widget',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'a #GtkWidget'}),
+ (PARAMETER_RE, '@widget_pointer: (inout) (transfer none): '
+ 'address of a variable that contains @widget',
+ {'parameter_name': 'widget_pointer',
+ 'annotations': '(inout) (transfer none)',
+ 'colon': ':',
+ 'description': 'address of a variable that contains @widget'}),
+ (PARAMETER_RE, '@weird_thing: (inout) (transfer none) (allow-none) (attribute) (destroy) '
+ '(foreign) (inout) (out) (transfer) (skip) (method): some weird @thing',
+ {'parameter_name': 'weird_thing',
+ 'annotations': '(inout) (transfer none) (allow-none) (attribute) (destroy) '
+ '(foreign) (inout) (out) (transfer) (skip) (method)',
+ 'colon': ':',
+ 'description': 'some weird @thing'}),
+ (PARAMETER_RE, '@data: a pointer to the element data. The data may be moved as elements '
+ 'are added to the #GByteArray.',
+ {'parameter_name': 'data',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'a pointer to the element data. The data may be moved as elements '
+ 'are added to the #GByteArray.'}),
+ (PARAMETER_RE, '@a: a #GSequenceIter',
+ {'parameter_name': 'a',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'a #GSequenceIter'}),
+ (PARAMETER_RE, '@keys: (array length=n_keys) (element-type GQuark) (allow-none):',
+ {'parameter_name': 'keys',
+ 'annotations': '(array length=n_keys) (element-type GQuark) (allow-none)',
+ 'colon': ':',
+ 'description': ''})]
+
+tag_tests = [
+ (TAG_RE, 'Since 3.0',
+ None),
+ (TAG_RE, 'Since: 3.0',
+ {'tag_name': 'Since',
+ 'annotations': '',
+ 'colon': '',
+ 'description': '3.0'}),
+ (TAG_RE, 'Attributes: (inout) (transfer none): some note about attributes',
+ {'tag_name': 'Attributes',
+ 'annotations': '(inout) (transfer none)',
+ 'colon': ':',
+ 'description': 'some note about attributes'}),
+ (TAG_RE, 'Rename to: something_else',
+ {'tag_name': 'Rename to',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'something_else'}),
+ (TAG_RE, '@Deprecated: Since 2.8, reference counting is done atomically',
+ None),
+ (TAG_RE, 'Returns %TRUE and does weird things',
+ None),
+ (TAG_RE, 'Returns: a #GtkWidget',
+ {'tag_name': 'Returns',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'a #GtkWidget'}),
+ (TAG_RE, 'Return value: (transfer none): The binary data that @text responds. '
+ 'This pointer',
+ {'tag_name': 'Return value',
+ 'annotations': '(transfer none)',
+ 'colon': ':',
+ 'description': 'The binary data that @text responds. This pointer'}),
+ (TAG_RE, 'Return value: (transfer full) (array length=out_len) (element-type guint8):',
+ {'tag_name': 'Return value',
+ 'annotations': '(transfer full) (array length=out_len) (element-type guint8)',
+ 'colon': ':',
+ 'description': ''}),
+ (TAG_RE, 'Returns: A boolean value, but let me tell you a bit about this boolean. It',
+ {'tag_name': 'Returns',
+ 'annotations': '',
+ 'colon': '',
+ 'description': 'A boolean value, but let me tell you a bit about this boolean. '
+ 'It'}),
+ (TAG_RE, 'Returns: (transfer container) (element-type GObject.ParamSpec): a',
+ {'tag_name': 'Returns',
+ 'annotations': '(transfer container) (element-type GObject.ParamSpec)',
+ 'colon': ':',
+ 'description': 'a'}),
+ (TAG_RE, 'Return value: (type GLib.HashTable<utf8,GLib.HashTable<utf8,utf8>>) '
+ '(transfer full):',
+ {'tag_name': 'Return value',
+ 'annotations': '(type GLib.HashTable<utf8,GLib.HashTable<utf8,utf8>>) '
+ '(transfer full)',
+ 'colon': ':',
+ 'description': ''})]
+
+comment_end_tests = [
+ (COMMENT_END_RE, '*/',
+ {'description': ''}),
+ (COMMENT_END_RE, ' */',
+ {'description': ''}),
+ (COMMENT_END_RE, ' */ ',
+ {'description': ''}),
+ (COMMENT_END_RE, '**/',
+ {'description': ''}),
+ (COMMENT_END_RE, ' **/',
+ {'description': ''}),
+ (COMMENT_END_RE, ' **/ ',
+ {'description': ''}),
+ (COMMENT_END_RE, 'test */',
+ {'description': 'test'}),
+ (COMMENT_END_RE, ' test*/',
+ {'description': 'test'}),
+ (COMMENT_END_RE, 'test **/',
+ {'description': 'test'}),
+ (COMMENT_END_RE, ' test**/',
+ {'description': 'test'}),
+ (COMMENT_END_RE, 'test *****/',
+ {'description': 'test'}),
+ (COMMENT_END_RE, ' test*****/',
+ {'description': 'test'})]
+
+
+def create_tests(tests_name, testcases):
+ for (index, testcase) in enumerate(testcases):
+ real_test_name = '%s_%03d' % (tests_name, index)
+
+ test_method = TestProgram.__create_test__(testcase)
+ test_method.__name__ = real_test_name
+ setattr(TestProgram, real_test_name, test_method)
+
+
+class TestProgram(TestCase):
+ @classmethod
+ def __create_test__(cls, testcase):
+ def do_test(self):
+ (program, text, expected) = testcase
+
+ match = program.match(text)
+
+ if expected is None:
+ msg = 'Program matched text but shouldn\'t:\n"%s"'
+ self.assertTrue(match is None, msg % (text, ))
+ else:
+ msg = 'Program should match text but didn\'t:\n"%s"'
+ self.assertTrue(match is not None, msg % (text, ))
+
+ for key, value in expected.items():
+ msg = 'expected "%s" for "%s" but match returned "%s"'
+ msg = msg % (value, key, match.group(key))
+ self.assertEqual(match.group(key), value, msg)
+
+ return do_test
+
+
+if __name__ == '__main__':
+ # Create tests from data
+ create_tests('test_identifier_section', identifier_section_tests)
+ create_tests('test_identifier_symbol', identifier_symbol_tests)
+ create_tests('test_identifier_property', identifier_property_tests)
+ create_tests('test_identifier_signal', identifier_signal_tests)
+ create_tests('test_parameter', parameter_tests)
+ create_tests('test_tag', tag_tests)
+ create_tests('test_comment_end', comment_end_tests)
+
+ # Run test suite
+ main()
diff --git a/tests/scanner/barapp.c b/tests/scanner/barapp.c
index db4be8db..ed391204 100644
--- a/tests/scanner/barapp.c
+++ b/tests/scanner/barapp.c
@@ -54,7 +54,6 @@ main(int argc, char **argv)
g_printerr ("usage: barapp --introspect-dump=types.txt,out.xml\\n");
return 1;
}
- g_type_init ();
if (!g_irepository_dump (argv[1] + strlen (prefix), &error))
{
diff --git a/tests/scanner/drawable.c b/tests/scanner/drawable.c
index 6ab8ecf7..e378286b 100644
--- a/tests/scanner/drawable.c
+++ b/tests/scanner/drawable.c
@@ -1,54 +1,54 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
#include "drawable.h"
-G_DEFINE_ABSTRACT_TYPE (TestInheritDrawable, test_inherit_drawable, G_TYPE_OBJECT);
+G_DEFINE_ABSTRACT_TYPE (RegressTestInheritDrawable, regress_test_inherit_drawable, G_TYPE_OBJECT);
static void
-test_inherit_drawable_class_init (TestInheritDrawableClass *klass)
+regress_test_inherit_drawable_class_init (RegressTestInheritDrawableClass *klass)
{
}
static void
-test_inherit_drawable_init (TestInheritDrawable *drawable)
+regress_test_inherit_drawable_init (RegressTestInheritDrawable *drawable)
{
}
-void
-test_inherit_drawable_do_foo (TestInheritDrawable *drawable, int x)
+void
+regress_test_inherit_drawable_do_foo (RegressTestInheritDrawable *drawable, int x)
{
-
+
}
/**
- * test_inherit_drawable_get_origin:
+ * regress_test_inherit_drawable_get_origin:
* @drawable:
* @x: (out):
* @y: (out):
*/
void
-test_inherit_drawable_get_origin (TestInheritDrawable *drawable, int *x, int *y)
+regress_test_inherit_drawable_get_origin (RegressTestInheritDrawable *drawable, int *x, int *y)
{
*x = 0;
*y = 0;
}
/**
- * test_inherit_drawable_get_size:
+ * regress_test_inherit_drawable_get_size:
* @drawable:
* @width: (out):
* @height: (out):
*/
void
-test_inherit_drawable_get_size (TestInheritDrawable *drawable, guint *width, guint *height)
+regress_test_inherit_drawable_get_size (RegressTestInheritDrawable *drawable, guint *width, guint *height)
{
*width = 42;
*height = 42;
}
void
-test_inherit_drawable_do_foo_maybe_throw (TestInheritDrawable *drawable, int x, GError **error)
+regress_test_inherit_drawable_do_foo_maybe_throw (RegressTestInheritDrawable *drawable, int x, GError **error)
{
if (x != 42)
g_set_error(error, 0, 12, "The answer should be 42!");
diff --git a/tests/scanner/drawable.h b/tests/scanner/drawable.h
index d1752e44..58383589 100644
--- a/tests/scanner/drawable.h
+++ b/tests/scanner/drawable.h
@@ -1,33 +1,33 @@
-#ifndef __TEST_INHERIT_DRAWABLE_H__
-#define __TEST_INHERIT_DRAWABLE_H__
+#ifndef __REGRESS_TEST_INHERIT_DRAWABLE_H__
+#define __REGRESS_TEST_INHERIT_DRAWABLE_H__
#include <glib-object.h>
-typedef struct _TestInheritDrawable TestInheritDrawable;
-typedef struct _TestInheritDrawableClass TestInheritDrawableClass;
+typedef struct _RegressTestInheritDrawable RegressTestInheritDrawable;
+typedef struct _RegressTestInheritDrawableClass RegressTestInheritDrawableClass;
-struct _TestInheritDrawable
+struct _RegressTestInheritDrawable
{
GObject parent_instance;
};
-struct _TestInheritDrawableClass
+struct _RegressTestInheritDrawableClass
{
GObjectClass parent_class;
};
-GType test_inherit_drawable_get_type (void) G_GNUC_CONST;
+GType regress_test_inherit_drawable_get_type (void) G_GNUC_CONST;
-void test_inherit_drawable_do_foo (TestInheritDrawable *drawable, int x);
-void test_inherit_drawable_get_origin (TestInheritDrawable *drawable, int *x, int *y);
-void test_inherit_drawable_get_size (TestInheritDrawable *drawable, guint *width, guint *height);
-void test_inherit_drawable_do_foo_maybe_throw (TestInheritDrawable *drawable, int x, GError **error);
+void regress_test_inherit_drawable_do_foo (RegressTestInheritDrawable *drawable, int x);
+void regress_test_inherit_drawable_get_origin (RegressTestInheritDrawable *drawable, int *x, int *y);
+void regress_test_inherit_drawable_get_size (RegressTestInheritDrawable *drawable, guint *width, guint *height);
+void regress_test_inherit_drawable_do_foo_maybe_throw (RegressTestInheritDrawable *drawable, int x, GError **error);
-typedef struct _TestInheritPixmapObjectClass TestInheritPixmapObjectClass;
+typedef struct _RegressTestInheritPixmapObjectClass RegressTestInheritPixmapObjectClass;
-struct _TestInheritPixmapObjectClass
+struct _RegressTestInheritPixmapObjectClass
{
- TestInheritDrawableClass parent_class;
+ RegressTestInheritDrawableClass parent_class;
};
-#endif /* __TEST_INHERIT_DRAWABLE_H__ */
+#endif /* __REGRESS_TEST_INHERIT_DRAWABLE_H__ */
diff --git a/tests/scanner/foo.c b/tests/scanner/foo.c
index f8cc350b..4d5090b6 100644
--- a/tests/scanner/foo.c
+++ b/tests/scanner/foo.c
@@ -1,45 +1,44 @@
#include "foo.h"
-#include "girepository.h"
/* A hidden type not exposed publicly, similar to GUPNP's XML wrapper
object */
-typedef struct _FooHidden FooHidden;
-
-int foo_init_argv (int argc, char **argv);
-int foo_init_argv_address (int *argc, char ***argv);
-void foo_private_function (FooObject *foo);
-void foo_test_unsigned (unsigned int uint);
-void foo_interface_do_foo (FooInterface *self, int x);
-void foo_do_foo (FooInterface *self, int x);
-int foo_enum_method (FooEnumType foo_enum);
-FooHidden * foo_hidden_copy (const FooHidden *boxed);
-void foo_hidden_free (FooHidden *boxed);
-GType foo_hidden_get_type (void);
-FooBoxed *foo_boxed_copy (const FooBoxed *boxed);
-void foo_boxed_free (FooBoxed *boxed);
-void foo_dbus_data_free (FooDBusData *boxed);
-FooDBusData *foo_dbus_data_copy (const FooDBusData *boxed);
+typedef struct _RegressFooHidden RegressFooHidden;
+
+int regress_foo_init_argv (int argc, char **argv);
+int regress_foo_init_argv_address (int *argc, char ***argv);
+void regress_foo_private_function (RegressFooObject *regress_foo);
+void regress_foo_test_unsigned (unsigned int uint);
+void regress_foo_interface_do_regress_foo (RegressFooInterface *self, int x);
+void regress_foo_do_regress_foo (RegressFooInterface *self, int x);
+int regress_foo_enum_method (RegressFooEnumType regress_foo_enum);
+RegressFooHidden * regress_foo_hidden_copy (const RegressFooHidden *boxed);
+void regress_foo_hidden_free (RegressFooHidden *boxed);
+GType regress_foo_hidden_get_type (void);
+RegressFooBoxed *regress_foo_boxed_copy (const RegressFooBoxed *boxed);
+void regress_foo_boxed_free (RegressFooBoxed *boxed);
+void regress_foo_dbus_data_free (RegressFooDBusData *boxed);
+RegressFooDBusData *regress_foo_dbus_data_copy (const RegressFooDBusData *boxed);
typedef struct
{
int i;
} PrivateStruct;
-void foo_private_function (FooObject *foo)
+void regress_foo_private_function (RegressFooObject *regress_foo)
{
}
GType
-foo_interface_get_type (void)
+regress_foo_interface_get_type (void)
{
static GType object_type = 0;
if (!object_type)
{
object_type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "FooInterface",
- sizeof (FooInterfaceIface),
+ "RegressFooInterface",
+ sizeof (RegressFooInterfaceIface),
NULL, 0, NULL, 0);
g_type_interface_add_prerequisite (object_type, G_TYPE_OBJECT);
@@ -48,12 +47,12 @@ foo_interface_get_type (void)
return object_type;
}
-void foo_interface_do_foo (FooInterface *self, int x)
+void regress_foo_interface_do_regress_foo (RegressFooInterface *self, int x)
{
- FOO_INTERFACE_GET_INTERFACE(self)->do_foo (self, x);
+ REGRESS_FOO_INTERFACE_GET_INTERFACE(self)->do_regress_foo (self, x);
}
-void foo_interface_static_method (int x)
+void regress_foo_interface_static_method (int x)
{
}
@@ -68,14 +67,14 @@ enum {
LAST_SIGNAL
};
-static guint foo_object_signals[LAST_SIGNAL] = { 0 };
+static guint regress_foo_object_signals[LAST_SIGNAL] = { 0 };
static void
-foo_foo_interface_init (gpointer g_iface,
- gpointer iface_data)
+regress_foo_regress_foo_interface_init (gpointer g_iface,
+ gpointer iface_data)
{
- FooInterfaceIface *iface = (FooInterfaceIface *)g_iface;
- iface->do_foo = foo_do_foo;
+ RegressFooInterfaceIface *iface = (RegressFooInterfaceIface *)g_iface;
+ iface->do_regress_foo = regress_foo_do_regress_foo;
}
enum {
@@ -84,75 +83,68 @@ enum {
};
static void
-foo_sub_interface_class_init (gpointer g_class, gpointer class_data);
+regress_foo_sub_interface_class_init (gpointer g_class, gpointer class_data);
-static guint foo_subiface_signals[SUBIFACE_LAST_SIGNAL] = { 0 };
+static guint regress_foo_subiface_signals[SUBIFACE_LAST_SIGNAL] = { 0 };
GType
-foo_sub_interface_get_type (void)
+regress_foo_sub_interface_get_type (void)
{
static GType object_type = 0;
if (!object_type)
{
object_type = g_type_register_static_simple (G_TYPE_INTERFACE,
- "FooSubInterface",
- sizeof (FooSubInterfaceIface),
- foo_sub_interface_class_init, 0, NULL, 0);
+ "RegressFooSubInterface",
+ sizeof (RegressFooSubInterfaceIface),
+ regress_foo_sub_interface_class_init, 0, NULL, 0);
- g_type_interface_add_prerequisite (object_type, FOO_TYPE_INTERFACE);
+ g_type_interface_add_prerequisite (object_type, REGRESS_FOO_TYPE_INTERFACE);
}
return object_type;
}
static void
-foo_sub_interface_class_init (gpointer g_class, gpointer class_data)
+regress_foo_sub_interface_class_init (gpointer g_class, gpointer class_data)
{
- foo_subiface_signals[SUBIFACE_DESTROY_EVENT] =
- g_signal_new ("destroy-event", FOO_TYPE_SUBINTERFACE,
+ regress_foo_subiface_signals[SUBIFACE_DESTROY_EVENT] =
+ g_signal_new ("destroy-event", REGRESS_FOO_TYPE_SUBINTERFACE,
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (FooSubInterfaceIface, destroy_event),
- NULL, NULL,
- gi_cclosure_marshal_generic,
+ G_STRUCT_OFFSET (RegressFooSubInterfaceIface, destroy_event),
+ NULL, NULL, NULL,
G_TYPE_NONE,
0,
G_TYPE_NONE);
}
void
-foo_sub_interface_do_bar (FooSubInterface *self)
+regress_foo_sub_interface_do_bar (RegressFooSubInterface *self)
{
- FOO_SUBINTERFACE_GET_INTERFACE(self)->do_bar (self);
-}
-
-void
-foo_sub_interface_do_moo (FooSubInterface *self, int x, gpointer y)
-{
- FOO_SUBINTERFACE_GET_INTERFACE(self)->do_moo (self, x, y);
+ REGRESS_FOO_SUBINTERFACE_GET_INTERFACE(self)->do_bar (self);
}
/**
- * foo_sub_interface_do_baz:
+ * regress_foo_sub_interface_do_baz:
* @self:
* @callback: (scope call):
* @user_data:
*/
void
-foo_sub_interface_do_baz (FooSubInterface *self, GCallback callback, gpointer user_data)
+regress_foo_sub_interface_do_baz (RegressFooSubInterface *self, GCallback callback, gpointer user_data)
{
- FOO_SUBINTERFACE_GET_INTERFACE(self)->do_baz (self, callback, user_data);
+ REGRESS_FOO_SUBINTERFACE_GET_INTERFACE(self)->do_baz (self, callback, user_data);
}
-G_DEFINE_TYPE_EXTENDED (FooObject, foo_object, G_TYPE_OBJECT,
- 0, G_IMPLEMENT_INTERFACE (FOO_TYPE_INTERFACE,
- foo_foo_interface_init));
+G_DEFINE_TYPE_EXTENDED (RegressFooObject, regress_foo_object, G_TYPE_OBJECT,
+ 0, G_IMPLEMENT_INTERFACE (REGRESS_FOO_TYPE_INTERFACE,
+ regress_foo_regress_foo_interface_init));
static void
-foo_object_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+regress_foo_object_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
{
switch (prop_id)
{
@@ -167,10 +159,10 @@ foo_object_set_property (GObject *object,
}
static void
-foo_object_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+regress_foo_object_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
{
switch (prop_id)
{
@@ -185,14 +177,14 @@ foo_object_get_property (GObject *object,
}
static void
-foo_object_class_init (FooObjectClass *klass)
+regress_foo_object_class_init (RegressFooObjectClass *klass)
{
GObjectClass *gobject_class;
gobject_class = G_OBJECT_CLASS (klass);
- gobject_class->set_property = foo_object_set_property;
- gobject_class->get_property = foo_object_get_property;
+ gobject_class->set_property = regress_foo_object_set_property;
+ gobject_class->get_property = regress_foo_object_get_property;
g_object_class_install_property (gobject_class,
PROP_STRING,
@@ -206,9 +198,9 @@ foo_object_class_init (FooObjectClass *klass)
g_param_spec_boxed ("hidden",
"hidden property",
"should not be exposed",
- foo_hidden_get_type (),
+ regress_foo_hidden_get_type (),
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
- foo_object_signals[SIGNAL] =
+ regress_foo_object_signals[SIGNAL] =
g_signal_new ("signal",
G_OBJECT_CLASS_TYPE (gobject_class),
G_SIGNAL_RUN_LAST,
@@ -220,80 +212,80 @@ foo_object_class_init (FooObjectClass *klass)
}
static void
-foo_object_init (FooObject *object)
+regress_foo_object_init (RegressFooObject *object)
{
}
-FooObject *
-foo_object_new (void)
+RegressFooObject *
+regress_foo_object_new (void)
{
- return g_object_new (FOO_TYPE_OBJECT, NULL);
+ return g_object_new (REGRESS_FOO_TYPE_OBJECT, NULL);
}
GObject *
-foo_object_new_as_super (void)
+regress_foo_object_new_as_super (void)
{
- return g_object_new (FOO_TYPE_OBJECT, NULL);
+ return g_object_new (REGRESS_FOO_TYPE_OBJECT, NULL);
}
/**
- * foo_object_external_type:
- * @object: a #FooObject
+ * regress_foo_object_external_type:
+ * @object: a #RegressFooObject
*
* Returns: (transfer none): %NULL always
*/
UtilityObject*
-foo_object_external_type (FooObject *object)
+regress_foo_object_external_type (RegressFooObject *object)
{
return NULL;
}
void
-foo_object_take_all (FooObject *object, int x, ...)
+regress_foo_object_take_all (RegressFooObject *object, int x, ...)
{
}
void
-foo_do_foo (FooInterface *self, int x)
+regress_foo_do_regress_foo (RegressFooInterface *self, int x)
{
}
void
-foo_object_is_it_time_yet (FooObject *object, time_t time)
+regress_foo_object_is_it_time_yet (RegressFooObject *object, time_t time)
{
}
/**
- * foo_object_new_cookie: (skip)
+ * regress_foo_object_new_cookie: (skip)
* @object:
* @target:
*
* Not sure why this test is here...
*/
-FooObjectCookie
-foo_object_new_cookie (FooObject *object, const char *target)
+RegressFooObjectCookie
+regress_foo_object_new_cookie (RegressFooObject *object, const char *target)
{
return NULL;
}
const char *
-foo_object_get_name (FooObject *object)
+regress_foo_object_get_name (RegressFooObject *object)
{
- return "foo";
+ return "regress_foo";
}
char *
-foo_object_dup_name (FooObject *object)
+regress_foo_object_dup_name (RegressFooObject *object)
{
- return g_strdup ("foo");
+ return g_strdup ("regress_foo");
}
/**
- * foo_object_read:
+ * regress_foo_object_read:
* @object: obj
* @offset: offset
* @length: length
@@ -303,244 +295,244 @@ foo_object_dup_name (FooObject *object)
* Virtual: read_fn
*/
void
-foo_object_read (FooObject *object, int offset, int length)
+regress_foo_object_read (RegressFooObject *object, int offset, int length)
{
}
/**
- * foo_object_skipped_method: (skip)
+ * regress_foo_object_skipped_method: (skip)
* @object: obj
*
* This is only useful from C.
*/
void
-foo_object_skipped_method (FooObject *object)
+regress_foo_object_skipped_method (RegressFooObject *object)
{
}
-G_DEFINE_ABSTRACT_TYPE (FooSubobject, foo_subobject, FOO_TYPE_OBJECT);
+G_DEFINE_ABSTRACT_TYPE (RegressFooSubobject, regress_foo_subobject, REGRESS_FOO_TYPE_OBJECT);
static void
-foo_subobject_class_init (FooSubobjectClass *klass)
+regress_foo_subobject_class_init (RegressFooSubobjectClass *klass)
{
}
static void
-foo_subobject_init (FooSubobject *object)
+regress_foo_subobject_init (RegressFooSubobject *object)
{
}
/**
- * foo_object_get_default:
+ * regress_foo_object_get_default:
*
* This function is intended to match clutter_stage_get_default which
* uses a C sugar return type.
*
- * Return value: (type FooSubobject) (transfer none): The global #FooSubobject
+ * Return value: (type RegressFooSubobject) (transfer none): The global #RegressFooSubobject
*/
-FooObject *
-foo_object_get_default ()
+RegressFooObject *
+regress_foo_object_get_default ()
{
return NULL;
}
-int foo_init (void)
+int regress_foo_init (void)
{
- return FOO_SUCCESS_INT;
+ return REGRESS_FOO_SUCCESS_INT;
}
-int foo_init_argv (int argc, char **argv)
+int regress_foo_init_argv (int argc, char **argv)
{
- return FOO_SUCCESS_INT;
+ return REGRESS_FOO_SUCCESS_INT;
}
-int foo_init_argv_address (int *argc, char ***argv)
+int regress_foo_init_argv_address (int *argc, char ***argv)
{
- return FOO_SUCCESS_INT;
+ return REGRESS_FOO_SUCCESS_INT;
}
GType
-foo_enum_type_get_type (void)
-{
- static GType etype = 0;
- if (G_UNLIKELY(etype == 0)) {
- static const GEnumValue values[] = {
- { FOO_ENUM_ALPHA, "FOO_ENUM_ALPHA", "alpha" },
- { FOO_ENUM_BETA, "FOO_ENUM_BETA", "beta" },
- { FOO_ENUM_DELTA, "FOO_ENUM_DELTA", "delta" },
- { 0, NULL, NULL }
- };
- etype = g_enum_register_static (g_intern_static_string ("FooEnumType"), values);
- }
- return etype;
+regress_foo_enum_type_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GEnumValue values[] = {
+ { REGRESS_FOO_ENUM_ALPHA, "REGRESS_FOO_ENUM_ALPHA", "alpha" },
+ { REGRESS_FOO_ENUM_BETA, "REGRESS_FOO_ENUM_BETA", "beta" },
+ { REGRESS_FOO_ENUM_DELTA, "REGRESS_FOO_ENUM_DELTA", "delta" },
+ { 0, NULL, NULL }
+ };
+ etype = g_enum_register_static (g_intern_static_string ("RegressFooEnumType"), values);
+ }
+ return etype;
}
-int foo_enum_method (FooEnumType foo_enum)
+int regress_foo_enum_method (RegressFooEnumType regress_foo_enum)
{
return 0;
}
GType
-foo_flags_type_get_type (void)
-{
- static GType etype = 0;
- if (G_UNLIKELY(etype == 0)) {
- static const GFlagsValue values[] = {
- { FOO_FLAGS_FIRST, "FOO_FLAGS_FIRST", "first" },
- { FOO_FLAGS_SECOND, "FOO_FLAGS_SECOND", "second" },
- { FOO_FLAGS_THIRD, "FOO_FLAGS_THIRD", "third" },
- { 0, NULL, NULL }
- };
- etype = g_flags_register_static (g_intern_static_string ("FooFlagsType"), values);
- }
- return etype;
+regress_foo_flags_type_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GFlagsValue values[] = {
+ { REGRESS_FOO_FLAGS_FIRST, "REGRESS_FOO_FLAGS_FIRST", "first" },
+ { REGRESS_FOO_FLAGS_SECOND, "REGRESS_FOO_FLAGS_SECOND", "second" },
+ { REGRESS_FOO_FLAGS_THIRD, "REGRESS_FOO_FLAGS_THIRD", "third" },
+ { 0, NULL, NULL }
+ };
+ etype = g_flags_register_static (g_intern_static_string ("RegressFooFlagsType"), values);
+ }
+ return etype;
}
-struct _FooBoxed
+struct _RegressFooBoxed
{
int private;
};
-FooBoxed *
-foo_boxed_copy (const FooBoxed *boxed)
+RegressFooBoxed *
+regress_foo_boxed_copy (const RegressFooBoxed *boxed)
{
- return (FooBoxed *)g_memdup (boxed, sizeof (FooBoxed));
+ return (RegressFooBoxed *)g_memdup (boxed, sizeof (RegressFooBoxed));
}
void
-foo_boxed_free (FooBoxed *boxed)
+regress_foo_boxed_free (RegressFooBoxed *boxed)
{
- g_slice_free (FooBoxed, boxed);
+ g_slice_free (RegressFooBoxed, boxed);
}
GType
-foo_boxed_get_type (void)
+regress_foo_boxed_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
- our_type = g_boxed_type_register_static ("FooBoxed",
- (GBoxedCopyFunc) foo_boxed_copy,
- (GBoxedFreeFunc) foo_boxed_free);
+ our_type = g_boxed_type_register_static ("RegressFooBoxed",
+ (GBoxedCopyFunc) regress_foo_boxed_copy,
+ (GBoxedFreeFunc) regress_foo_boxed_free);
return our_type;
}
-FooBoxed *
-foo_boxed_new (void)
+RegressFooBoxed *
+regress_foo_boxed_new (void)
{
- return g_slice_new0 (FooBoxed);
+ return g_slice_new0 (RegressFooBoxed);
}
void
-foo_boxed_method (FooBoxed *boxed)
+regress_foo_boxed_method (RegressFooBoxed *boxed)
{
}
-/* FooDbus */
-struct _FooDBusData
+/* RegressFooDbus */
+struct _RegressFooDBusData
{
double private;
};
-FooDBusData *
-foo_dbus_data_copy (const FooDBusData *boxed)
+RegressFooDBusData *
+regress_foo_dbus_data_copy (const RegressFooDBusData *boxed)
{
- return (FooDBusData *)g_memdup (boxed, sizeof (FooDBusData));
+ return (RegressFooDBusData *)g_memdup (boxed, sizeof (RegressFooDBusData));
}
void
-foo_dbus_data_free (FooDBusData *boxed)
+regress_foo_dbus_data_free (RegressFooDBusData *boxed)
{
- g_slice_free (FooDBusData, boxed);
+ g_slice_free (RegressFooDBusData, boxed);
}
GType
-foo_dbus_data_get_type (void)
+regress_foo_dbus_data_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
- our_type = g_boxed_type_register_static ("FooDBusData",
- (GBoxedCopyFunc) foo_dbus_data_copy,
- (GBoxedFreeFunc) foo_dbus_data_free);
+ our_type = g_boxed_type_register_static ("RegressFooDBusData",
+ (GBoxedCopyFunc) regress_foo_dbus_data_copy,
+ (GBoxedFreeFunc) regress_foo_dbus_data_free);
return our_type;
}
GType
-foo_brect_get_type (void)
+regress_foo_brect_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
- our_type = g_boxed_type_register_static ("FooBRect",
+ our_type = g_boxed_type_register_static ("RegressFooBRect",
(GBoxedCopyFunc) g_memdup, /* Won't work */
(GBoxedFreeFunc) g_free);
return our_type;
}
GType
-foo_bunion_get_type (void)
+regress_foo_bunion_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
- our_type = g_boxed_type_register_static ("FooBUnion",
+ our_type = g_boxed_type_register_static ("RegressFooBUnion",
(GBoxedCopyFunc) g_memdup, /* Won't work */
(GBoxedFreeFunc) g_free);
return our_type;
}
-void foo_test_unsigned (unsigned int uint)
+void regress_foo_test_unsigned (unsigned int uint)
{
}
/**
- * foo_test_string_array:
+ * regress_foo_test_string_array:
* @array: (array zero-terminated=1):
*/
void
-foo_test_string_array (char **array)
+regress_foo_test_string_array (char **array)
{
}
/**
- * foo_test_string_array_with_g:
+ * regress_foo_test_string_array_with_g:
* @array: (array zero-terminated=1):
*/
void
-foo_test_string_array_with_g (gchar **array)
+regress_foo_test_string_array_with_g (gchar **array)
{
}
/**
- * foo_test_array:
+ * regress_foo_test_array:
*
* Returns: (element-type utf8) (transfer container):
*/
GArray *
-foo_test_array (void)
+regress_foo_test_array (void)
{
return NULL;
}
/**
- * foo_rectangle_new: (skip)
+ * regress_foo_rectangle_new: (skip)
*
* This is a C convenience constructor; we have to (skip)
* it because it's not a boxed type.
*/
-FooRectangle *
-foo_rectangle_new (int x, int y, int width, int height)
+RegressFooRectangle *
+regress_foo_rectangle_new (int x, int y, int width, int height)
{
- FooRectangle *r = g_slice_new (FooRectangle);
+ RegressFooRectangle *r = g_slice_new (RegressFooRectangle);
r->x = x;
r->y = y;
r->width = width;
@@ -549,250 +541,250 @@ foo_rectangle_new (int x, int y, int width, int height)
}
/**
- * foo_rectangle_add:
+ * regress_foo_rectangle_add:
* @r1: (inout): add to this rect
* @r2: source rectangle
*/
void
-foo_rectangle_add(FooRectangle *r1, const FooRectangle *r2)
+regress_foo_rectangle_add(RegressFooRectangle *r1, const RegressFooRectangle *r2)
{
}
-/* FooHidden */
+/* RegressFooHidden */
-struct _FooHidden
+struct _RegressFooHidden
{
char *frob;
};
-FooHidden *
-foo_hidden_copy (const FooHidden *boxed)
+RegressFooHidden *
+regress_foo_hidden_copy (const RegressFooHidden *boxed)
{
- return (FooHidden *)g_memdup (boxed, sizeof (FooHidden));
+ return (RegressFooHidden *)g_memdup (boxed, sizeof (RegressFooHidden));
}
void
-foo_hidden_free (FooHidden *boxed)
+regress_foo_hidden_free (RegressFooHidden *boxed)
{
- g_slice_free (FooHidden, boxed);
+ g_slice_free (RegressFooHidden, boxed);
}
GType
-foo_hidden_get_type (void)
+regress_foo_hidden_get_type (void)
{
static GType our_type = 0;
if (our_type == 0)
- our_type = g_boxed_type_register_static ("FooHidden",
- (GBoxedCopyFunc) foo_hidden_copy,
- (GBoxedFreeFunc) foo_hidden_free);
+ our_type = g_boxed_type_register_static ("RegressFooHidden",
+ (GBoxedCopyFunc) regress_foo_hidden_copy,
+ (GBoxedFreeFunc) regress_foo_hidden_free);
return our_type;
}
GType
-foo_error_get_type (void)
-{
- static GType etype = 0;
- if (G_UNLIKELY(etype == 0)) {
- static const GEnumValue values[] = {
- { FOO_ERROR_GOOD, "FOO_ERROR_GOOD", "good" },
- { FOO_ERROR_BAD, "FOO_ERROR_BAD", "bad" },
- { FOO_ERROR_UGLY, "FOO_ERROR_UGLY", "ugly" },
- { 0, NULL, NULL }
- };
- etype = g_enum_register_static (g_intern_static_string ("FooError"), values);
- }
- return etype;
+regress_foo_error_get_type (void)
+{
+ static GType etype = 0;
+ if (G_UNLIKELY(etype == 0)) {
+ static const GEnumValue values[] = {
+ { REGRESS_FOO_ERROR_GOOD, "REGRESS_FOO_ERROR_GOOD", "good" },
+ { REGRESS_FOO_ERROR_BAD, "REGRESS_FOO_ERROR_BAD", "bad" },
+ { REGRESS_FOO_ERROR_UGLY, "REGRESS_FOO_ERROR_UGLY", "ugly" },
+ { 0, NULL, NULL }
+ };
+ etype = g_enum_register_static (g_intern_static_string ("RegressFooError"), values);
+ }
+ return etype;
}
GQuark
-foo_error_quark (void)
+regress_foo_error_quark (void)
{
- return g_quark_from_static_string ("foo-error-quark");
+ return g_quark_from_static_string ("regress_foo-error-quark");
}
void
-foo_some_variant (guint x, va_list args)
+regress_foo_some_variant (guint x, va_list args)
{
}
-GType foo_tile_handler_get_type(void);
+GType regress_foo_tile_handler_get_type(void);
/* This setup of a totally hidden parent class matches
* http://bugzilla.gnome.org/show_bug.cgi?id=561360
*/
-#define FOO_TYPE_TILE_HANDLER (foo_tile_handler_get_type ())
-#define FOO_TILE_HANDLER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), FOO_TYPE_TILE_HANDLER, FooTileHandler))
-#define FOO_IS_TILE_HANDLER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), FOO_TYPE_TILE_HANDLER))
+#define REGRESS_FOO_TYPE_TILE_HANDLER (regress_foo_tile_handler_get_type ())
+#define REGRESS_FOO_TILE_HANDLER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_TILE_HANDLER, RegressFooTileHandler))
+#define REGRESS_FOO_IS_TILE_HANDLER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_TILE_HANDLER))
-struct _FooTileHandler
+struct _RegressFooTileHandler
{
- FooObject parent_instance;
+ RegressFooObject parent_instance;
};
-struct _FooTileHandlerClass
+struct _RegressFooTileHandlerClass
{
- FooObjectClass parent_class;
+ RegressFooObjectClass parent_class;
};
-typedef struct _FooTileHandler FooTileHandler;
-typedef struct _FooTileHandlerClass FooTileHandlerClass;
+typedef struct _RegressFooTileHandler RegressFooTileHandler;
+typedef struct _RegressFooTileHandlerClass RegressFooTileHandlerClass;
-G_DEFINE_TYPE(FooTileHandler, foo_tile_handler, FOO_TYPE_OBJECT);
+G_DEFINE_TYPE(RegressFooTileHandler, regress_foo_tile_handler, REGRESS_FOO_TYPE_OBJECT);
static void
-foo_tile_handler_class_init (FooTileHandlerClass *klass)
+regress_foo_tile_handler_class_init (RegressFooTileHandlerClass *klass)
{
}
static void
-foo_tile_handler_init (FooTileHandler *object)
+regress_foo_tile_handler_init (RegressFooTileHandler *object)
{
}
-struct _FooBuffer
+struct _RegressFooBuffer
{
- FooTileHandler parent_instance;
+ RegressFooTileHandler parent_instance;
};
-struct _FooBufferClass
+struct _RegressFooBufferClass
{
- FooTileHandlerClass parent_class;
+ RegressFooTileHandlerClass parent_class;
};
-G_DEFINE_TYPE(FooBuffer, foo_buffer, FOO_TYPE_TILE_HANDLER);
+G_DEFINE_TYPE(RegressFooBuffer, regress_foo_buffer, REGRESS_FOO_TYPE_TILE_HANDLER);
static void
-foo_buffer_class_init (FooBufferClass *klass)
+regress_foo_buffer_class_init (RegressFooBufferClass *klass)
{
}
static void
-foo_buffer_init (FooBuffer *object)
+regress_foo_buffer_init (RegressFooBuffer *object)
{
}
void
-foo_buffer_some_method (FooBuffer *buffer)
+regress_foo_buffer_some_method (RegressFooBuffer *buffer)
{
}
-struct _FooOtherObject
+struct _RegressFooOtherObject
{
GObject parent_instance;
};
-struct _FooOtherObjectClass
+struct _RegressFooOtherObjectClass
{
GObjectClass parent_class;
};
-G_DEFINE_TYPE(FooOtherObject, foo_other_object, G_TYPE_OBJECT);
+G_DEFINE_TYPE(RegressFooOtherObject, regress_foo_other_object, G_TYPE_OBJECT);
static void
-foo_other_object_class_init (FooOtherObjectClass *klass)
+regress_foo_other_object_class_init (RegressFooOtherObjectClass *klass)
{
}
static void
-foo_other_object_init (FooOtherObject *object)
+regress_foo_other_object_init (RegressFooOtherObject *object)
{
}
-#define FOO_DEFINE_SHOULD_NOT_BE_EXPOSED "should not be exposed"
+#define REGRESS_FOO_DEFINE_SHOULD_NOT_BE_EXPOSED "should not be exposed"
/**
- * foo_skip_me: (skip)
- * @fs: a #FooSkippable
+ * regress_foo_skip_me: (skip)
+ * @fs: a #RegressFooSkippable
*
* Does something that's only interesting from C and should not be
* exposed to language bindings.
*/
void
-foo_skip_me (FooSkippable fs)
+regress_foo_skip_me (RegressFooSkippable fs)
{
}
/**
- * FooForeignStruct: (foreign)
+ * RegressFooForeignStruct: (foreign)
*
*/
-FooForeignStruct*
-foo_foreign_struct_new (void)
+RegressFooForeignStruct*
+regress_foo_foreign_struct_new (void)
{
- return g_slice_new0 (FooForeignStruct);
+ return g_slice_new0 (RegressFooForeignStruct);
}
-FooForeignStruct*
-foo_foreign_struct_copy (FooForeignStruct *original)
+RegressFooForeignStruct*
+regress_foo_foreign_struct_copy (RegressFooForeignStruct *original)
{
- FooForeignStruct *copy;
- copy = foo_foreign_struct_new ();
- copy->foo = original->foo;
- return copy;
+ RegressFooForeignStruct *copy;
+ copy = regress_foo_foreign_struct_new ();
+ copy->regress_foo = original->regress_foo;
+ return copy;
}
/**
- * foo_test_varargs_callback: (skip)
+ * regress_foo_test_varargs_callback: (skip)
*
*/
void
-foo_test_varargs_callback (gint i, FooVarargsCallback callback)
+regress_foo_test_varargs_callback (gint i, RegressFooVarargsCallback callback)
{
}
/**
- * foo_test_varargs_callback2: (skip)
+ * regress_foo_test_varargs_callback2: (skip)
*
*/
void
-foo_test_varargs_callback2 (FooVarargsCallback callback)
+regress_foo_test_varargs_callback2 (RegressFooVarargsCallback callback)
{
}
/**
- * foo_test_varargs_callback3: (skip)
+ * regress_foo_test_varargs_callback3: (skip)
*
*/
void
-foo_test_varargs_callback3 (FooVarargsCallback callback,
- FooVarargsCallback callback2)
+regress_foo_test_varargs_callback3 (RegressFooVarargsCallback callback,
+ RegressFooVarargsCallback callback2)
{
}
/**
- * foo_object_append_new_stack_layer:
+ * regress_foo_object_append_new_stack_layer:
*
* This shouldn't be scanned as a constructor.
*
* Returns: (transfer none):
*/
-FooOtherObject *
-foo_object_append_new_stack_layer (FooObject *obj, int x)
+RegressFooOtherObject *
+regress_foo_object_append_new_stack_layer (RegressFooObject *obj, int x)
{
return NULL;
}
/**
- * foo_not_a_constructor_new:
+ * regress_foo_not_a_constructor_new:
*
* This should be scanned as a top-level function, and shouldn't cause
* a "Can't find matching type for constructor" warning.
*
* Returns: (transfer none):
*/
-FooObject *
-foo_not_a_constructor_new (void)
+RegressFooObject *
+regress_foo_not_a_constructor_new (void)
{
return NULL;
}
diff --git a/tests/scanner/foo.h b/tests/scanner/foo.h
index f852083c..e097560e 100644
--- a/tests/scanner/foo.h
+++ b/tests/scanner/foo.h
@@ -1,257 +1,253 @@
-#ifndef __FOO_OBJECT_H__
-#define __FOO_OBJECT_H__
+#ifndef __REGRESS_FOO_OBJECT_H__
+#define __REGRESS_FOO_OBJECT_H__
#include <glib-object.h>
#include <gio/gio.h> /* GAsyncReadyCallback */
#include "utility.h"
-#define FOO_SUCCESS_INT 0x1138
+#define REGRESS_FOO_SUCCESS_INT 0x1138
-#define FOO_DEFINE_SHOULD_BE_EXPOSED "should be exposed"
+#define REGRESS_FOO_DEFINE_SHOULD_BE_EXPOSED "should be exposed"
-#define FOO_PIE_IS_TASTY 3.14159
+#define REGRESS_FOO_PIE_IS_TASTY 3.14159
-#define FOO_TYPE_INTERFACE (foo_interface_get_type ())
-#define FOO_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), FOO_TYPE_INTERFACE, FooInterface))
-#define FOO_IS_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), FOO_TYPE_INTERFACE))
-#define FOO_INTERFACE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), FOO_TYPE_INTERFACE, FooInterfaceIface))
+#define REGRESS_FOO_TYPE_INTERFACE (regress_foo_interface_get_type ())
+#define REGRESS_FOO_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_INTERFACE, RegressFooInterface))
+#define REGRESS_FOO_IS_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_INTERFACE))
+#define REGRESS_FOO_INTERFACE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), REGRESS_FOO_TYPE_INTERFACE, RegressFooInterfaceIface))
-#define FOO_TYPE_SUBINTERFACE (foo_sub_interface_get_type ())
-#define FOO_SUBINTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), FOO_TYPE_SUBINTERFACE, FooSubInterface))
-#define FOO_IS_SUBINTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), FOO_TYPE_SUBINTERFACE))
-#define FOO_SUBINTERFACE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), FOO_TYPE_SUBINTERFACE, FooSubInterfaceIface))
+#define REGRESS_FOO_TYPE_SUBINTERFACE (regress_foo_sub_interface_get_type ())
+#define REGRESS_FOO_SUBINTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_SUBINTERFACE, RegressFooSubInterface))
+#define REGRESS_FOO_IS_SUBINTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_SUBINTERFACE))
+#define REGRESS_FOO_SUBINTERFACE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), REGRESS_FOO_TYPE_SUBINTERFACE, RegressFooSubInterfaceIface))
-#define FOO_TYPE_OBJECT (foo_object_get_type ())
-#define FOO_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), FOO_TYPE_OBJECT, FooObject))
-#define FOO_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), FOO_TYPE_OBJECT))
+#define REGRESS_FOO_TYPE_OBJECT (regress_foo_object_get_type ())
+#define REGRESS_FOO_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_OBJECT, RegressFooObject))
+#define REGRESS_FOO_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_OBJECT))
-#define FOO_TYPE_SUBOBJECT (foo_subobject_get_type ())
-#define FOO_SUBOBJECT(subobject) (G_TYPE_CHECK_INSTANCE_CAST ((subobject), FOO_TYPE_SUBOBJECT, FooSubobject))
-#define FOO_IS_SUBOBJECT(subobject) (G_TYPE_CHECK_INSTANCE_TYPE ((subobject), FOO_TYPE_SUBOBJECT))
+#define REGRESS_FOO_TYPE_SUBOBJECT (regress_foo_subobject_get_type ())
+#define REGRESS_FOO_SUBOBJECT(subobject) (G_TYPE_CHECK_INSTANCE_CAST ((subobject), REGRESS_FOO_TYPE_SUBOBJECT, RegressFooSubobject))
+#define REGRESS_FOO_IS_SUBOBJECT(subobject) (G_TYPE_CHECK_INSTANCE_TYPE ((subobject), REGRESS_FOO_TYPE_SUBOBJECT))
-#define FOO_TYPE_BUFFER (foo_buffer_get_type ())
-#define FOO_BUFFER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), FOO_TYPE_BUFFER, FooBuffer))
-#define FOO_IS_BUFFER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), FOO_TYPE_BUFFER))
+#define REGRESS_FOO_TYPE_BUFFER (regress_foo_buffer_get_type ())
+#define REGRESS_FOO_BUFFER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_BUFFER, RegressFooBuffer))
+#define REGRESS_FOO_IS_BUFFER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_BUFFER))
-#define FOO_TYPE_OTHER_OBJECT (foo_other_object_get_type ())
-#define FOO_OTHER_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), FOO_TYPE_OTHER_OBJECT, FooOtherObject))
-#define FOO_IS_OTHER_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), FOO_TYPE_OTHER_OBJECT))
+#define REGRESS_FOO_TYPE_OTHER_OBJECT (regress_foo_other_object_get_type ())
+#define REGRESS_FOO_OTHER_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_FOO_TYPE_OTHER_OBJECT, RegressFooOtherObject))
+#define REGRESS_FOO_IS_OTHER_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_FOO_TYPE_OTHER_OBJECT))
-typedef struct _FooInterface FooInterface;
-typedef struct _FooInterfaceIface FooInterfaceIface;
-typedef struct _FooSubInterface FooSubInterface;
-typedef struct _FooSubInterfaceIface FooSubInterfaceIface;
-typedef struct _FooObject FooObject;
-typedef struct _FooObjectClass FooObjectClass;
-typedef struct _FooSubobject FooSubobject;
-typedef struct _FooSubobjectClass FooSubobjectClass;
-typedef struct _FooBuffer FooBuffer;
-typedef struct _FooBufferClass FooBufferClass;
-typedef struct _FooOtherObject FooOtherObject;
-typedef struct _FooOtherObjectClass FooOtherObjectClass;
+typedef struct _RegressFooInterface RegressFooInterface;
+typedef struct _RegressFooInterfaceIface RegressFooInterfaceIface;
+typedef struct _RegressFooSubInterface RegressFooSubInterface;
+typedef struct _RegressFooSubInterfaceIface RegressFooSubInterfaceIface;
+typedef struct _RegressFooObject RegressFooObject;
+typedef struct _RegressFooObjectClass RegressFooObjectClass;
+typedef struct _RegressFooSubobject RegressFooSubobject;
+typedef struct _RegressFooSubobjectClass RegressFooSubobjectClass;
+typedef struct _RegressFooBuffer RegressFooBuffer;
+typedef struct _RegressFooBufferClass RegressFooBufferClass;
+typedef struct _RegressFooOtherObject RegressFooOtherObject;
+typedef struct _RegressFooOtherObjectClass RegressFooOtherObjectClass;
-struct _FooInterfaceIface
+struct _RegressFooInterfaceIface
{
GTypeInterface parent_iface;
- void (*do_foo) (FooInterface *self, int x);
+ void (*do_regress_foo) (RegressFooInterface *self, int x);
};
-GType foo_interface_get_type (void) G_GNUC_CONST;
+GType regress_foo_interface_get_type (void) G_GNUC_CONST;
-void foo_interface_do_foo (FooInterface *iface, int x);
+void regress_foo_interface_do_regress_foo (RegressFooInterface *iface, int x);
-void foo_interface_static_method (int x);
+void regress_foo_interface_static_method (int x);
-struct _FooSubInterfaceIface
+struct _RegressFooSubInterfaceIface
{
GTypeInterface parent_iface;
/* signals */
- void (*destroy_event) (FooSubInterface *self);
+ void (*destroy_event) (RegressFooSubInterface *self);
/* virtual table */
- void (*do_bar) (FooSubInterface *self);
+ void (*do_bar) (RegressFooSubInterface *self);
- /* explicitly test un-named parameters */
- void (*do_moo) (FooSubInterface *self, int, gpointer);
-
- void (*do_baz) (FooSubInterface *self, GCallback callback, gpointer user_data);
+ void (*do_baz) (RegressFooSubInterface *self, GCallback callback, gpointer user_data);
};
-GType foo_sub_interface_get_type (void) G_GNUC_CONST;
+GType regress_foo_sub_interface_get_type (void) G_GNUC_CONST;
-void foo_sub_interface_do_bar (FooSubInterface *self);
-void foo_sub_interface_do_moo (FooSubInterface *self, int, gpointer);
-void foo_sub_interface_do_baz (FooSubInterface *self,
- GCallback callback,
- gpointer user_data);
+void regress_foo_sub_interface_do_bar (RegressFooSubInterface *self);
+void regress_foo_sub_interface_do_baz (RegressFooSubInterface *self,
+ GCallback callback,
+ gpointer user_data);
-struct _FooObject
+struct _RegressFooObject
{
GObject parent_instance;
int some_int;
};
-struct _FooObjectClass
+struct _RegressFooObjectClass
{
GObjectClass parent_class;
- gboolean (* virtual_method) (FooObject *object, int first_param);
+ gboolean (* virtual_method) (RegressFooObject *object, int first_param);
/* Intended to match GFile */
- void (*read_fn) (FooObject *object, int offset, int length);
+ void (*read_fn) (RegressFooObject *object, int offset, int length);
/* Test reserved stuff */
GCallback _reserved[4];
};
-gint foo_init (void);
+gint regress_foo_init (void);
-GType foo_object_get_type (void) G_GNUC_CONST;
-FooObject* foo_object_new (void);
-UtilityObject* foo_object_external_type (FooObject *object);
-GObject* foo_object_new_as_super (void);
+GType regress_foo_object_get_type (void) G_GNUC_CONST;
+RegressFooObject* regress_foo_object_new (void);
+UtilityObject* regress_foo_object_external_type (RegressFooObject *object);
+GObject* regress_foo_object_new_as_super (void);
-void foo_object_various (FooObject *object, void *data, GType some_type);
+void regress_foo_object_various (RegressFooObject *object, void *data, GType some_type);
-void foo_object_take_all (FooObject *object, int x, ...);
+void regress_foo_object_take_all (RegressFooObject *object, int x, ...);
-typedef gpointer FooObjectCookie;
+typedef gpointer RegressFooObjectCookie;
-FooObjectCookie foo_object_new_cookie (FooObject *object, const char *target);
+RegressFooObjectCookie regress_foo_object_new_cookie (RegressFooObject *object, const char *target);
-void foo_object_is_it_time_yet (FooObject *object, time_t time);
+void regress_foo_object_is_it_time_yet (RegressFooObject *object, time_t time);
-const char * foo_object_get_name (FooObject *object);
+const char * regress_foo_object_get_name (RegressFooObject *object);
-char * foo_object_dup_name (FooObject *object);
+char * regress_foo_object_dup_name (RegressFooObject *object);
-void foo_object_handle_glyph (FooObject *object, UtilityGlyph glyph);
+void regress_foo_object_handle_glyph (RegressFooObject *object, UtilityGlyph glyph);
-gboolean foo_object_virtual_method (FooObject *object, int first_param);
+gboolean regress_foo_object_virtual_method (RegressFooObject *object, int first_param);
-void foo_object_read (FooObject *object, int offset, int length);
+void regress_foo_object_read (RegressFooObject *object, int offset, int length);
-int foo_object_static_meth (void);
+int regress_foo_object_static_meth (void);
-void foo_object_skipped_method (FooObject *object);
+void regress_foo_object_skipped_method (RegressFooObject *object);
-struct _FooSubobject
+struct _RegressFooSubobject
{
- FooObject parent_instance;
+ RegressFooObject parent_instance;
};
-struct _FooSubobjectClass
+struct _RegressFooSubobjectClass
{
- FooObjectClass parent_class;
+ RegressFooObjectClass parent_class;
};
-GType foo_subobject_get_type (void) G_GNUC_CONST;
-FooSubobject* foo_subobject_new (void);
+GType regress_foo_subobject_get_type (void) G_GNUC_CONST;
+RegressFooSubobject* regress_foo_subobject_new (void);
-FooObject * foo_object_get_default (void);
+RegressFooObject * regress_foo_object_get_default (void);
-GType foo_buffer_get_type (void);
+GType regress_foo_buffer_get_type (void);
-void foo_buffer_some_method (FooBuffer *buffer);
+void regress_foo_buffer_some_method (RegressFooBuffer *buffer);
-GType foo_other_object_get_type (void) G_GNUC_CONST;
+GType regress_foo_other_object_get_type (void) G_GNUC_CONST;
-FooObject * foo_not_a_constructor_new (void);
+RegressFooObject * regress_foo_not_a_constructor_new (void);
typedef enum
{
- FOO_ENUM_ALPHA,
- FOO_ENUM_BETA,
- FOO_ENUM_DELTA
-} FooEnumType;
+ REGRESS_FOO_ENUM_ALPHA,
+ REGRESS_FOO_ENUM_BETA,
+ REGRESS_FOO_ENUM_DELTA
+} RegressFooEnumType;
-GType foo_enum_type_get_type (void);
+GType regress_foo_enum_type_get_type (void);
-int foo_enum_type_method (FooEnumType foo_enum);
+int regress_foo_enum_type_method (RegressFooEnumType regress_foo_enum);
-FooEnumType foo_enum_type_returnv (int x);
+RegressFooEnumType regress_foo_enum_type_returnv (int x);
typedef enum
{
- FOO_FLAGS_FIRST = 1 << 0,
- FOO_FLAGS_SECOND = 1 << 1,
- FOO_FLAGS_THIRD = 1 << 2
-} FooFlagsType;
+ REGRESS_FOO_FLAGS_FIRST = 1 << 0,
+ REGRESS_FOO_FLAGS_SECOND = 1 << 1,
+ REGRESS_FOO_FLAGS_THIRD = 1 << 2
+} RegressFooFlagsType;
-GType foo_flags_type_get_type (void);
+GType regress_foo_flags_type_get_type (void);
typedef enum
{
- FOO_ENUM_UN = 1,
- FOO_ENUM_DEUX = 2,
- FOO_ENUM_TROIS = 3,
- FOO_ENUM_NEUF = 9
-} FooEnumNoType;
+ REGRESS_FOO_ENUM_UN = 1,
+ REGRESS_FOO_ENUM_DEUX = 2,
+ REGRESS_FOO_ENUM_TROIS = 3,
+ REGRESS_FOO_ENUM_NEUF = 9
+} RegressFooEnumNoType;
typedef enum
{
- FOO_FLAGS_ETT = 1 << 0,
- FOO_FLAGS_TVA = 1 << 1,
- FOO_FLAGS_FYRA = 1 << 2
-} FooFlagsNoType;
+ REGRESS_FOO_FLAGS_ETT = 1 << 0,
+ REGRESS_FOO_FLAGS_TVA = 1 << 1,
+ REGRESS_FOO_FLAGS_FYRA = 1 << 2
+} RegressFooFlagsNoType;
typedef enum
{
- FOO_ENUM_FULLNAME_ONE = 1,
- FOO_ENUM_FULLNAME_TWO,
- FOO_ENUM_FULLNAME_THREE
-} FooEnumFullname;
+ REGRESS_FOO_ENUM_FULLNAME_ONE = 1,
+ REGRESS_FOO_ENUM_FULLNAME_TWO,
+ REGRESS_FOO_ENUM_FULLNAME_THREE
+} RegressFooEnumFullname;
typedef enum
{
- FOO_ADDRESS_INVALID,
- FOO_ADDRESS_IPV4,
- FOO_ADDRESS_IPV6
-} FooAddressType;
+ REGRESS_FOO_ADDRESS_INVALID,
+ REGRESS_FOO_ADDRESS_IPV4,
+ REGRESS_FOO_ADDRESS_IPV6
+} RegressFooAddressType;
-typedef struct _FooBoxed FooBoxed;
+typedef struct _RegressFooBoxed RegressFooBoxed;
-GType foo_boxed_get_type (void) G_GNUC_CONST;
-FooBoxed* foo_boxed_new (void);
-void foo_boxed_method (FooBoxed* boxed);
+GType regress_foo_boxed_get_type (void) G_GNUC_CONST;
+RegressFooBoxed* regress_foo_boxed_new (void);
+void regress_foo_boxed_method (RegressFooBoxed* boxed);
/* This one tests capitalization handling with respect to DBus */
-typedef struct _FooDBusData FooDBusData;
-GType foo_dbus_data_get_type (void) G_GNUC_CONST;
-void foo_dbus_data_method (FooDBusData* dbusdata);
+typedef struct _RegressFooDBusData RegressFooDBusData;
+GType regress_foo_dbus_data_get_type (void) G_GNUC_CONST;
+void regress_foo_dbus_data_method (RegressFooDBusData* dbusdata);
/* FIXME: Scanner does not support this yet
-const char *FOO_CONSTANT_STR = "foo-constant-str";
-const int FOO_CONSTANT_INT = 10;
-const float FOO_CONSTANT_FLOAT = 10;
+const char *REGRESS_FOO_CONSTANT_STR = "regress_foo-constant-str";
+const int REGRESS_FOO_CONSTANT_INT = 10;
+const float REGRESS_FOO_CONSTANT_FLOAT = 10;
*/
/* Callback */
-typedef gboolean (* FooCallback) (FooObject *foo, gboolean b, gpointer data);
+typedef gboolean (* RegressFooCallback) (RegressFooObject *regress_foo, gboolean b, gpointer data);
/* Invalid comments, should be ignored */
/* @ */
/* @: */
-typedef struct _FooStruct FooStruct;
-typedef struct _FooStructPrivate FooStructPrivate;
+typedef struct _RegressFooStruct RegressFooStruct;
+typedef struct _RegressFooStructPrivate RegressFooStructPrivate;
-struct _FooStruct
+struct _RegressFooStruct
{
- FooStructPrivate *priv;
+ RegressFooStructPrivate *priv;
int member;
};
-typedef struct _FooRectangle FooRectangle;
+typedef struct _RegressFooRectangle RegressFooRectangle;
-struct _FooRectangle
+struct _RegressFooRectangle
{
gint x;
gint y;
@@ -260,81 +256,81 @@ struct _FooRectangle
};
void
-foo_method_external_references (UtilityObject *object,
- UtilityEnumType e,
- UtilityFlagType f,
- UtilityStruct s);
+regress_foo_method_external_references (UtilityObject *object,
+ UtilityEnumType e,
+ UtilityFlagType f,
+ UtilityStruct s);
-void foo_rectangle_add(FooRectangle *r1, const FooRectangle *r2);
+void regress_foo_rectangle_add(RegressFooRectangle *r1, const RegressFooRectangle *r2);
-FooRectangle * foo_rectangle_new (int x, int y, int width, int height);
+RegressFooRectangle * regress_foo_rectangle_new (int x, int y, int width, int height);
-typedef struct _FooEventAny FooEventAny;
-typedef struct _FooEventExpose FooEventExpose;
+typedef struct _RegressFooEventAny RegressFooEventAny;
+typedef struct _RegressFooEventExpose RegressFooEventExpose;
-typedef union _FooEvent FooEvent;
+typedef union _RegressFooEvent RegressFooEvent;
-struct _FooEventAny
+struct _RegressFooEventAny
{
gint8 send_event;
};
-struct _FooEventExpose
+struct _RegressFooEventExpose
{
gint8 send_event;
gint count;
};
-union _FooEvent
+union _RegressFooEvent
{
int type;
- FooEventAny any;
- FooEventExpose expose;
+ RegressFooEventAny any;
+ RegressFooEventExpose expose;
};
-typedef void FooXEvent;
+typedef void RegressFooXEvent;
/* And now some boxed variants */
-typedef struct _FooBRect FooBRect;
+typedef struct _RegressFooBRect RegressFooBRect;
-struct _FooBRect
+struct _RegressFooBRect
{
double x;
double y;
};
-GType foo_brect_get_type (void);
+GType regress_foo_brect_get_type (void);
-FooBRect *foo_brect_new (double x, double y);
+RegressFooBRect *regress_foo_brect_new (double x, double y);
-void foo_brect_add (FooBRect *b1, FooBRect *b2);
+void regress_foo_brect_add (RegressFooBRect *b1, RegressFooBRect *b2);
-typedef union _FooBUnion FooBUnion;
+typedef union _RegressFooBUnion RegressFooBUnion;
-union _FooBUnion
+union _RegressFooBUnion
{
int type;
double v;
- FooBRect *rect;
+ RegressFooBRect *rect;
};
-typedef union _FooUnion FooUnion;
+typedef union _RegressFooUnion RegressFooUnion;
-union _FooUnion
+union _RegressFooUnion
{
- int foo;
+ int regress_foo;
};
-typedef struct _FooUtilityStruct FooUtilityStruct;
-struct _FooUtilityStruct
+typedef struct _RegressFooUtilityStruct RegressFooUtilityStruct;
+struct _RegressFooUtilityStruct
{
UtilityStruct bar;
};
-typedef struct _FooThingWithArray FooThingWithArray;
-struct _FooThingWithArray
+typedef struct _RegressFooThingWithArray RegressFooThingWithArray;
+struct _RegressFooThingWithArray
{
int x;
int y;
@@ -342,100 +338,100 @@ struct _FooThingWithArray
guchar *data;
} ;
-FooBUnion *foo_bunion_new (void);
+RegressFooBUnion *regress_foo_bunion_new (void);
-GType foo_bunion_get_type (void);
+GType regress_foo_bunion_get_type (void);
-int foo_bunion_get_contained_type (FooBUnion *bunion);
+int regress_foo_bunion_get_contained_type (RegressFooBUnion *bunion);
-void foo_test_unsigned_qualifier (unsigned int unsigned_param);
-void foo_test_unsigned_type (unsigned unsigned_param);
+void regress_foo_test_unsigned_qualifier (unsigned int unsigned_param);
+void regress_foo_test_unsigned_type (unsigned unsigned_param);
-void foo_test_string_array (char **array);
+void regress_foo_test_string_array (char **array);
-void foo_test_string_array_with_g (gchar **array);
+void regress_foo_test_string_array_with_g (gchar **array);
-GArray *foo_test_array (void);
+GArray *regress_foo_test_array (void);
-const char * foo_test_const_char_retval (void);
-const FooStruct * foo_test_const_struct_retval (void);
-void foo_test_const_char_param (const char * param);
-void foo_test_const_struct_param (const FooStruct * param);
+const char * regress_foo_test_const_char_retval (void);
+const RegressFooStruct * regress_foo_test_const_struct_retval (void);
+void regress_foo_test_const_char_param (const char * param);
+void regress_foo_test_const_struct_param (const RegressFooStruct * param);
-typedef void (*FooVarargsCallback) (const char * param, ...);
-void foo_test_varargs_callback (gint i, FooVarargsCallback callback);
-void foo_test_varargs_callback2 (FooVarargsCallback callback);
-void foo_test_varargs_callback3 (FooVarargsCallback callback,
- FooVarargsCallback callback2);
+typedef void (*RegressFooVarargsCallback) (const char * param, ...);
+void regress_foo_test_varargs_callback (gint i, RegressFooVarargsCallback callback);
+void regress_foo_test_varargs_callback2 (RegressFooVarargsCallback callback);
+void regress_foo_test_varargs_callback3 (RegressFooVarargsCallback callback,
+ RegressFooVarargsCallback callback2);
/* Make sure callbacks get the right scope by default */
-void foo_async_ready_callback(GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data);
-void foo_destroy_notify_callback(FooCallback callback,
- gpointer data,
- GDestroyNotify destroy);
+void regress_foo_async_ready_callback(GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+void regress_foo_destroy_notify_callback(RegressFooCallback callback,
+ gpointer data,
+ GDestroyNotify destroy);
typedef enum {
- FOO_ERROR_GOOD,
- FOO_ERROR_BAD,
- FOO_ERROR_UGLY
-} FooError;
-GType foo_error_get_type (void);
+ REGRESS_FOO_ERROR_GOOD,
+ REGRESS_FOO_ERROR_BAD,
+ REGRESS_FOO_ERROR_UGLY
+} RegressFooError;
+GType regress_foo_error_get_type (void);
-GQuark foo_error_quark (void);
+GQuark regress_foo_error_quark (void);
typedef enum
{
- FOO_LAYER_DESKTOP = 0,
- FOO_LAYER_BOTTOM = 1,
- FOO_LAYER_NORMAL = 2,
- FOO_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
- FOO_LAYER_DOCK = 4,
- FOO_LAYER_FULLSCREEN = 5,
- FOO_LAYER_FOCUSED_WINDOW = 6,
- FOO_LAYER_OVERRIDE_REDIRECT = 7,
- FOO_LAYER_LAST = 8
-} FooStackLayer;
+ REGRESS_FOO_LAYER_DESKTOP = 0,
+ REGRESS_FOO_LAYER_BOTTOM = 1,
+ REGRESS_FOO_LAYER_NORMAL = 2,
+ REGRESS_FOO_LAYER_TOP = 4, /* Same as DOCK; see EWMH and bug 330717 */
+ REGRESS_FOO_LAYER_DOCK = 4,
+ REGRESS_FOO_LAYER_FULLSCREEN = 5,
+ REGRESS_FOO_LAYER_FOCUSED_WINDOW = 6,
+ REGRESS_FOO_LAYER_OVERRIDE_REDIRECT = 7,
+ REGRESS_FOO_LAYER_LAST = 8
+} RegressFooStackLayer;
typedef enum
{
- FOO_SOME_SINGLE_ENUM
-} FooASingle;
+ REGRESS_FOO_SOME_SINGLE_ENUM
+} RegressFooASingle;
/* Should be skipped */
-void foo_some_variant (guint x, va_list args);
-void foo_some_variant_ptr (guint x, va_list *args);
+void regress_foo_some_variant (guint x, va_list args);
+void regress_foo_some_variant_ptr (guint x, va_list *args);
/**
- * FooSkippable: (skip)
- * @FOO_SKIPPABLE_ONE: a skippable enum value
- * @FOO_SKIPPABLE_TWO: another skippable enum value
+ * RegressFooSkippable: (skip)
+ * @REGRESS_FOO_SKIPPABLE_ONE: a skippable enum value
+ * @REGRESS_FOO_SKIPPABLE_TWO: another skippable enum value
*
* Some type that is only interesting from C and should not be
* exposed to language bindings.
*/
typedef enum {
- FOO_SKIPPABLE_ONE,
- FOO_SKIPPABLE_TWO
-} FooSkippable;
-void foo_skip_me (FooSkippable fs);
+ REGRESS_FOO_SKIPPABLE_ONE,
+ REGRESS_FOO_SKIPPABLE_TWO
+} RegressFooSkippable;
+void regress_foo_skip_me (RegressFooSkippable fs);
-typedef struct _FooForeignStruct FooForeignStruct;
+typedef struct _RegressFooForeignStruct RegressFooForeignStruct;
-struct _FooForeignStruct
+struct _RegressFooForeignStruct
{
- int foo;
+ int regress_foo;
};
-FooForeignStruct* foo_foreign_struct_new (void);
-FooForeignStruct* foo_foreign_struct_copy (FooForeignStruct *original);
+RegressFooForeignStruct* regress_foo_foreign_struct_new (void);
+RegressFooForeignStruct* regress_foo_foreign_struct_copy (RegressFooForeignStruct *original);
/* This one should be a global, not a method on UtilityObject since
* it's a separate namespace.
*/
-void foo_object_a_global_method (UtilityObject *obj);
+void regress_foo_object_a_global_method (UtilityObject *obj);
-FooOtherObject * foo_object_append_new_stack_layer (FooObject *obj, int x);
+RegressFooOtherObject * regress_foo_object_append_new_stack_layer (RegressFooObject *obj, int x);
-#endif /* __FOO_OBJECT_H__ */
+#endif /* __REGRESS_FOO_OBJECT_H__ */
diff --git a/tests/scanner/gettype.c b/tests/scanner/gettype.c
index cd816735..a3c2d6be 100644
--- a/tests/scanner/gettype.c
+++ b/tests/scanner/gettype.c
@@ -1,14 +1,14 @@
#include "gettype.h"
-G_DEFINE_TYPE(GetTypeObject, gettype_object, G_TYPE_OBJECT);
+G_DEFINE_TYPE (GetTypeObject, gettype_object, G_TYPE_OBJECT);
static void
-gettype_object_class_init (GetTypeObjectClass *klass)
+gettype_object_class_init (GetTypeObjectClass * klass)
{
}
static void
-gettype_object_init (GetTypeObject *object)
+gettype_object_init (GetTypeObject * object)
{
}
@@ -28,9 +28,9 @@ gettype_object_new (void)
* Returns: 0
*/
GType
-gettype_object_nonmeta1_get_type (GetTypeObject *obj)
+gettype_object_nonmeta1_get_type (GetTypeObject * obj)
{
- return 0;
+ return 0;
}
/**
@@ -44,7 +44,7 @@ gettype_object_nonmeta1_get_type (GetTypeObject *obj)
gboolean
gettype_object_nonmeta2_get_type (void)
{
- return TRUE;
+ return TRUE;
}
/**
@@ -58,5 +58,5 @@ gettype_object_nonmeta2_get_type (void)
gboolean
gettype_object_nonmeta_get_gtype (void)
{
- return TRUE;
+ return TRUE;
}
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index c6ca6b74..d32c52be 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -3,7 +3,6 @@
#include <stdlib.h>
#include <glib-object.h>
#include <gobject/gvaluecollector.h>
-#include <cairo-gobject.h>
#include "regress.h"
@@ -285,6 +284,7 @@ regress_test_value_return(int i)
/************************************************************************/
/* foreign structs */
+#ifndef _GI_DISABLE_CAIRO
/**
* regress_test_cairo_context_full_return:
*
@@ -365,6 +365,7 @@ regress_test_cairo_surface_full_out (cairo_surface_t **surface)
{
*surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10);
}
+#endif
/**
* regress_test_gvariant_i:
@@ -907,7 +908,7 @@ regress_test_array_int_null_out (int **arr, int *len)
/* GList */
static /*const*/ GList *
-regress_test_sequence_list()
+regress_test_sequence_list (void)
{
static GList *list = NULL;
if (!list) {
@@ -1028,7 +1029,7 @@ regress_test_glist_null_out (GSList **out_list)
/* GSList */
static /*const*/ GSList *
-regress_test_sequence_slist()
+regress_test_sequence_slist (void)
{
static GSList *list = NULL;
if (!list) {
@@ -1152,7 +1153,7 @@ static char *table_data[3][2] = {
};
static GHashTable *
-regress_test_table_ghash_new_container()
+regress_test_table_ghash_new_container (void)
{
GHashTable *hash;
int i;
@@ -1163,7 +1164,7 @@ regress_test_table_ghash_new_container()
}
static GHashTable *
-regress_test_table_ghash_new_full()
+regress_test_table_ghash_new_full (void)
{
GHashTable *hash;
int i;
@@ -1176,7 +1177,7 @@ regress_test_table_ghash_new_full()
}
static /*const*/ GHashTable *
-regress_test_table_ghash_const()
+regress_test_table_ghash_const (void)
{
static GHashTable *hash = NULL;
if (!hash) {
@@ -1953,6 +1954,53 @@ G_DEFINE_BOXED_TYPE(RegressTestBoxedC,
regress_test_boxed_c_ref,
regress_test_boxed_c_unref);
+struct _RegressTestBoxedD {
+ char *a_string;
+ gint a_int;
+};
+
+RegressTestBoxedD *
+regress_test_boxed_d_new (const char *a_string, int a_int)
+{
+ RegressTestBoxedD *boxed;
+
+ boxed = g_slice_new (RegressTestBoxedD);
+ boxed->a_string = g_strdup (a_string);
+ boxed->a_int = a_int;
+
+ return boxed;
+}
+
+RegressTestBoxedD *
+regress_test_boxed_d_copy (RegressTestBoxedD *boxed)
+{
+ RegressTestBoxedD *ret;
+
+ ret = g_slice_new (RegressTestBoxedD);
+ ret->a_string = g_strdup (boxed->a_string);
+ ret->a_int = boxed->a_int;
+
+ return ret;
+}
+
+void
+regress_test_boxed_d_free (RegressTestBoxedD *boxed)
+{
+ g_free (boxed->a_string);
+ g_slice_free (RegressTestBoxedD, boxed);
+}
+
+int
+regress_test_boxed_d_get_magic (RegressTestBoxedD *boxed)
+{
+ return strlen (boxed->a_string) + boxed->a_int;
+}
+
+G_DEFINE_BOXED_TYPE(RegressTestBoxedD,
+ regress_test_boxed_d,
+ regress_test_boxed_d_copy,
+ regress_test_boxed_d_free);
+
G_DEFINE_TYPE(RegressTestObj, regress_test_obj, G_TYPE_OBJECT);
enum
@@ -2125,6 +2173,7 @@ regress_test_obj_default_matrix (RegressTestObj *obj, const char *somestr)
enum {
REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_PROP,
+ REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_LEN_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_HASH_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_STRV,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_OBJ,
@@ -2134,6 +2183,7 @@ enum {
REGRESS_TEST_OBJ_SIGNAL_ALL,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INT64_PROP,
REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_UINT64_PROP,
+ REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INTARRAY_RET,
N_REGRESS_TEST_OBJ_SIGNALS
};
@@ -2192,6 +2242,27 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
G_TYPE_ARRAY);
/**
+ * RegressTestObj::sig-with-array-len-prop:
+ * @self: an object
+ * @arr: (array length=len) (element-type uint) (allow-none): numbers, or %NULL
+ * @len: length of @arr, or 0
+ *
+ * This test signal similar to GSettings::change-event
+ */
+ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_LEN_PROP] =
+ g_signal_new ("sig-with-array-len-prop",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ G_TYPE_NONE,
+ 2,
+ G_TYPE_POINTER,
+ G_TYPE_INT);
+
+ /**
* RegressTestObj::sig-with-hash-prop:
* @self: an object
* @hash: (element-type utf8 GObject.Value):
@@ -2250,6 +2321,7 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
1,
G_TYPE_OBJECT);
+#ifndef _GI_DISABLE_CAIRO
/**
* RegressTestObj::sig-with-foreign-struct:
* @self: an object
@@ -2266,6 +2338,7 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
G_TYPE_NONE,
1,
CAIRO_GOBJECT_TYPE_CONTEXT);
+#endif
regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_FIRST] =
g_signal_new ("first",
@@ -2340,6 +2413,25 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
1,
G_TYPE_UINT64);
+ /**
+ * RegressTestObj::sig-with-intarray-ret:
+ * @self: an object
+ * @i: an integer
+ *
+ * Returns: (array zero-terminated=1) (element-type gint) (transfer full):
+ */
+ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INTARRAY_RET] =
+ g_signal_new ("sig-with-intarray-ret",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__BOXED,
+ G_TYPE_ARRAY,
+ 1,
+ G_TYPE_INT);
+
gobject_class->set_property = regress_test_obj_set_property;
gobject_class->get_property = regress_test_obj_get_property;
gobject_class->dispose = regress_test_obj_dispose;
@@ -2553,6 +2645,7 @@ regress_test_obj_emit_sig_with_obj (RegressTestObj *obj)
g_object_unref (obj_param);
}
+#ifndef _GI_DISABLE_CAIRO
void
regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj *obj)
{
@@ -2560,6 +2653,7 @@ regress_test_obj_emit_sig_with_foreign_struct (RegressTestObj *obj)
g_signal_emit_by_name (obj, "sig-with-foreign-struct", cr);
cairo_destroy (cr);
}
+#endif
void
regress_test_obj_emit_sig_with_int64 (RegressTestObj *obj)
@@ -3514,6 +3608,18 @@ regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback)
callback (error);
}
+/**
+ * regress_test_skip_unannotated_callback: (skip)
+ * @callback: No annotation here
+ *
+ * Should not emit a warning:
+ * https://bugzilla.gnome.org/show_bug.cgi?id=685399
+ */
+void
+regress_test_skip_unannotated_callback (RegressTestCallback callback)
+{
+}
+
/* interface */
static void
@@ -3901,3 +4007,11 @@ void
regress_test_versioning (void)
{
}
+
+void
+regress_like_xkl_config_item_set_name (RegressLikeXklConfigItem *self,
+ const char *name)
+{
+ strncpy (self->name, name, sizeof (self->name) - 1);
+ self->name[sizeof(self->name)-1] = '\0';
+}
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index e1024b04..274d0e4b 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -1,10 +1,14 @@
#ifndef __GITESTTYPES_H__
#define __GITESTTYPES_H__
-#include <cairo.h>
+#ifndef _GI_DISABLE_CAIRO
+#include <cairo-gobject.h>
+#endif
#include <glib-object.h>
#include <gio/gio.h>
#include <time.h>
+#include <string.h>
+#include <stdlib.h>
void regress_set_abort_on_error (gboolean abort_on_error);
@@ -129,6 +133,7 @@ int regress_test_int_value_arg(const GValue *v);
const GValue *regress_test_value_return(int i);
/* foreign structs */
+#ifndef _GI_DISABLE_CAIRO
cairo_t *regress_test_cairo_context_full_return (void);
void regress_test_cairo_context_none_in (cairo_t *context);
@@ -136,6 +141,7 @@ cairo_surface_t *regress_test_cairo_surface_none_return (void);
cairo_surface_t *regress_test_cairo_surface_full_return (void);
void regress_test_cairo_surface_none_in (cairo_surface_t *surface);
void regress_test_cairo_surface_full_out (cairo_surface_t **surface);
+#endif
/* versioning (deprecated, since, stability) */
void regress_test_versioning (void);
@@ -150,6 +156,13 @@ GVariant *regress_test_gvariant_as (void);
#define NUM_REGRESS_FOO
+/**
+ * RegressTestEnum:
+ * @REGRESS_TEST_VALUE1: value 1
+ * @REGRESS_TEST_VALUE2: value 2
+ *
+ * By purpose, not all members have documentation
+ */
typedef enum
{
REGRESS_TEST_VALUE1,
@@ -178,6 +191,16 @@ GType regress_test_enum_unsigned_get_type (void) G_GNUC_CONST;
GType regress_test_flags_get_type (void) G_GNUC_CONST;
#define REGRESS_TEST_TYPE_FLAGS (regress_test_flags_get_type ())
+typedef enum
+{
+ REGRESS_TEST_REFERENCE_0 = 2 + 2,
+ REGRESS_TEST_REFERENCE_1 = 1 + 1,
+ REGRESS_TEST_REFERENCE_2 = 6 * 9,
+ REGRESS_TEST_REFERENCE_3 = REGRESS_TEST_REFERENCE_1 + REGRESS_TEST_REFERENCE_1,
+ REGRESS_TEST_REFERENCE_4 = REGRESS_TEST_REFERENCE_2 * REGRESS_TEST_REFERENCE_3,
+ REGRESS_TEST_REFERENCE_5 = ~REGRESS_TEST_REFERENCE_4,
+} RegressTestReferenceEnum;
+
/* this is not registered with GType */
typedef enum
{
@@ -425,6 +448,16 @@ struct _RegressTestBoxedC
GType regress_test_boxed_c_get_type (void);
RegressTestBoxedC *regress_test_boxed_c_new (void);
+typedef struct _RegressTestBoxedD RegressTestBoxedD;
+
+GType regress_test_boxed_d_get_type (void);
+
+RegressTestBoxedD *regress_test_boxed_d_new (const char *a_string, int a_int);
+RegressTestBoxedD *regress_test_boxed_d_copy (RegressTestBoxedD *boxed);
+void regress_test_boxed_d_free (RegressTestBoxedD *boxed);
+
+int regress_test_boxed_d_get_magic (RegressTestBoxedD *boxed);
+
/* gobject */
#define REGRESS_TEST_TYPE_OBJ (regress_test_obj_get_type ())
#define REGRESS_TEST_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_OBJ, RegressTestObj))
@@ -697,6 +730,8 @@ void regress_test_gerror_callback (RegressTestCallbackGError callback);
void regress_test_null_gerror_callback (RegressTestCallbackGError callback);
void regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback);
+void regress_test_skip_unannotated_callback (RegressTestCallback callback);
+
typedef struct _RegressTestInterface RegressTestInterface;
/* interface */
@@ -872,6 +907,13 @@ typedef struct {
void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray *str);
+typedef struct {
+ gchar name[32];
+} RegressLikeXklConfigItem;
+
+void regress_like_xkl_config_item_set_name (RegressLikeXklConfigItem *self,
+ const char *name);
+
#define REGRESS_UTF8_CONSTANT "const \xe2\x99\xa5 utf8"
#ifdef __GNUC__
@@ -889,7 +931,6 @@ void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray *str);
void regress_has_parameter_named_attrs (int foo,
gpointer attributes);
-
typedef struct {
int dummy;
struct {
@@ -900,6 +941,11 @@ typedef struct {
double dummy2;
} RegressLikeGnomeKeyringPasswordSchema;
+/* Ensure we ignore symbols that start with _; in particular we don't
+ * want to issue a namespace warning.
+ */
+#define _DONTSCANTHIS 1
+
/* https://bugzilla.gnome.org/show_bug.cgi?id=685022 */
#define REGRESS_MININT64 ((gint64) G_GINT64_CONSTANT(0x8000000000000000))
#define REGRESS_MAXUINT64 (G_GINT64_CONSTANT(0xffffffffffffffffU))
diff --git a/tests/scanner/warnlib.c b/tests/scanner/warnlib.c
new file mode 100644
index 00000000..940d2b6a
--- /dev/null
+++ b/tests/scanner/warnlib.c
@@ -0,0 +1,33 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+#include "config.h"
+
+#include "warnlib.h"
+
+GQuark
+warnlib_unpaired_error_quark (void)
+{
+ return g_quark_from_static_string ("warnlib-unpaired-error");
+}
+
+gboolean
+warnlib_throw_unpaired (GError **error)
+{
+ g_set_error_literal (error, warnlib_unpaired_error_quark (), 0,
+ "Unpaired error");
+ return FALSE;
+}
+
+typedef WarnLibWhateverIface WarnLibWhateverInterface;
+G_DEFINE_INTERFACE (WarnLibWhatever, warnlib_whatever, G_TYPE_OBJECT)
+
+static void
+warnlib_whatever_default_init(WarnLibWhateverIface *iface)
+{
+}
+
+void
+warnlib_whatever_do_moo (WarnLibWhatever *self, int x, gpointer y)
+{
+ WARNLIB_WHATEVER_GET_IFACE(self)->do_moo (self, x, y);
+}
diff --git a/tests/scanner/warnlib.h b/tests/scanner/warnlib.h
new file mode 100644
index 00000000..9e448c08
--- /dev/null
+++ b/tests/scanner/warnlib.h
@@ -0,0 +1,36 @@
+/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
+
+#ifndef __WARNLIB_H__
+#define __WARNLIB_H__
+
+#include <gio/gio.h>
+
+#define WARNLIB_UNPAIRED_ERROR (warnlib_unpaired_error_quark ())
+GQuark warnlib_unpaired_error_quark (void);
+
+gboolean warnlib_throw_unpaired (GError **error);
+
+/* interface */
+#define WARNLIB_TYPE_WHATEVER (warnlib_whatever_get_type ())
+#define WARNLIB_WHATEVER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), WARNLIB_TYPE_WHATEVER, WarnLibWhatever))
+#define WARNLIB_IS_WHATEVER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), WARNLIB_TYPE_WHATEVER))
+#define WARNLIB_WHATEVER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), WARNLIB_TYPE_WHATEVER, WarnLibWhateverIface))
+
+typedef struct _WarnLibWhateverIface WarnLibWhateverIface;
+typedef struct _WarnLibWhatever WarnLibWhatever;
+
+struct _WarnLibWhateverIface
+{
+ GTypeInterface parent_iface;
+
+ /* virtual table */
+
+ /* explicitly test un-named parameters */
+ void (*do_moo) (WarnLibWhatever *self, int, gpointer);
+};
+
+void warnlib_whatever_do_moo (WarnLibWhatever *self, int, gpointer);
+
+GType warnlib_whatever_get_type (void) G_GNUC_CONST;
+
+#endif
diff --git a/tests/warn/Makefile.am b/tests/warn/Makefile.am
index c4354223..bce45629 100644
--- a/tests/warn/Makefile.am
+++ b/tests/warn/Makefile.am
@@ -1,10 +1,11 @@
include $(top_srcdir)/common.mk
-TESTS = \
+TESTS = warntestrunner
+
+alltests = \
annotationparser.h \
callback-invalid-scope.h \
callback-missing-scope.h \
- return-gobject.h \
invalid-array.h \
invalid-closure.h \
invalid-constructor.h \
@@ -14,9 +15,10 @@ TESTS = \
invalid-out.h \
invalid-transfer.h \
missing-element-type.h \
+ return-gobject.h \
unknown-parameter.h \
unresolved-type.h
-EXTRA_DIST = warningtester.py common.h $(TESTS)
+EXTRA_DIST = warningtester.py $(alltests) common.h $(TESTS)
-TESTS_ENVIRONMENT = PYTHONPATH=$(top_builddir):$(top_srcdir) TOP_BUILDDIR=$(top_builddir) UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) $(PYTHON) $(srcdir)/warningtester.py
+TESTS_ENVIRONMENT = PYTHONPATH=$(top_builddir):$(top_srcdir) TOP_BUILDDIR=$(top_builddir) UNINSTALLED_INTROSPECTION_SRCDIR=$(top_srcdir) PYTHON=$(PYTHON) srcdir=$(srcdir) alltests="$(alltests)"
diff --git a/tests/warn/annotationparser.h b/tests/warn/annotationparser.h
index ff9030e4..dba69711 100644
--- a/tests/warn/annotationparser.h
+++ b/tests/warn/annotationparser.h
@@ -203,3 +203,14 @@ void test_symbol_twice_documented();
// EXPECT:195: Warning: Test: ignoring unrecognized GTK-Doc comment block, identifier not found:
//+
//+^
+
+/**
+ * regress_test_invalid_comment_end:
+ * @foo: a param
+ *
+ * invalid comment with a line without
+ * https://bugzilla.gnome.org/show_bug.cgi?id=689354 */
+
+// EXPECT:212: Warning: Test: Comments should end with */ on a new line:
+//+ * https://bugzilla.gnome.org/show_bug.cgi?id=689354 */
+//+ ^
diff --git a/tests/warn/invalid-element-type.h b/tests/warn/invalid-element-type.h
index 52e31164..bcd9123b 100644
--- a/tests/warn/invalid-element-type.h
+++ b/tests/warn/invalid-element-type.h
@@ -65,6 +65,14 @@ void test_invalid_ptrarray_element_type(GPtrArray *p1, GPtrArray *p2);
GList* test_unresolved_element_type(void);
+/**
+ * test_unresolved_value_element_type:
+ *
+ * Returns: (element-type GLib.Value) (transfer full):
+ */
+
+GPtrArray* test_unresolved_value_element_type(void);
+
// EXPECT:5: Warning: Test: element-type annotation takes at least one option, none given
// EXPECT:6: Warning: Test: element-type annotation for a list must have exactly one option, not 2 options
@@ -78,5 +86,7 @@ GList* test_unresolved_element_type(void);
// EXPECT:51: Warning: Test: element-type annotation takes at least one option, none given
// EXPECT:52: Warning: Test: invalid (element-type) for a GPtrArray, must be a pointer
// EXPECT:63: Warning: Test: test_unresolved_element_type: Unknown type: 'Unresolved'
+// EXPECT:71: Warning: Test: test_unresolved_value_element_type: Unknown type: 'GLib.Value'
// EXPECT:4: Warning: Test: test_invalid_list_element_type: argument l1: Missing (element-type) annotation
// EXPECT:4: Warning: Test: test_invalid_list_element_type: argument l2: Missing (element-type) annotation
+// EXPECT:50: Warning: Test: test_invalid_ptrarray_element_type: argument p1: Missing (element-type) annotation
diff --git a/tests/warn/missing-element-type.h b/tests/warn/missing-element-type.h
index 1f958a74..87206403 100644
--- a/tests/warn/missing-element-type.h
+++ b/tests/warn/missing-element-type.h
@@ -8,3 +8,11 @@
GSList *test_gslist_element_type(void);
// EXPECT:6: Warning: Test: test_gslist_element_type: return value: Missing (element-type) annotation
+
+/**
+ * test_ptrarray_element_type:
+ * @somearray: An array.
+ */
+void test_ptrarray_arg_element_type(GPtrArray *somearray);
+
+// EXPECT:16: Warning: Test: test_ptrarray_arg_element_type: argument somearray: Missing (element-type) annotation
diff --git a/tests/warn/unknown-parameter.h b/tests/warn/unknown-parameter.h
index 3d339b32..384704df 100644
--- a/tests/warn/unknown-parameter.h
+++ b/tests/warn/unknown-parameter.h
@@ -46,3 +46,23 @@ void test_param_missing(void);
void test_param_varargs(int i, ...);
// Should not warn
+
+/**
+ * test_undocumentable_param:
+ */
+void test_undocumentable_param(int);
+
+// EXPECT:53: Warning: Test: symbol='test_undocumentable_param': missing parameter name; undocumentable
+
+void test_undocumentable_param_2(int a, int);
+
+// EXPECT:57: Warning: Test: symbol='test_undocumentable_param_2': missing parameter name; undocumentable
+
+void test_undocumentable_param_3(int, int);
+
+// EXPECT:61: Warning: Test: symbol='test_undocumentable_param_3': missing parameter name; undocumentable
+// EXPECT:61: Warning: Test: symbol='test_undocumentable_param_3': missing parameter name; undocumentable
+
+void test_void(void);
+
+// Should not warn
diff --git a/tests/warn/warningtester.py b/tests/warn/warningtester.py
index ee6b3c16..fc3c3d2d 100644
--- a/tests/warn/warningtester.py
+++ b/tests/warn/warningtester.py
@@ -61,23 +61,24 @@ def _diff(a, b):
for line in a[i1:i2]:
for l in line.split('\n'):
if l != '':
- retval += ' ' + l + '\n'
+ retval += ' ' + l + '\n'
continue
if tag in ('replace', 'delete'):
for line in a[i1:i2]:
for l in line.split('\n'):
if l != '':
- retval += '-' + l + '\n'
+ retval += '-' + l + '\n'
if tag in ('replace', 'insert'):
for line in b[j1:j2]:
for l in line.split('\n'):
if l != '':
- retval += '+' + l + '\n'
+ retval += '+' + l + '\n'
return retval
+
def _extract_expected(filename):
fd = open(filename, 'rU')
data = fd.read()
@@ -92,6 +93,7 @@ def _extract_expected(filename):
return retval
+
def check(args):
filename = args[0]
@@ -128,12 +130,15 @@ def check(args):
expected_warnings = _extract_expected(filename)
+ expected_warnings.sort()
+ emitted_warnings.sort()
+
if len(expected_warnings) != len(emitted_warnings):
raise SystemExit('ERROR in %r: %d warnings were emitted, '
- 'expected %d:\n%s' %(os.path.basename(filename),
- len(emitted_warnings),
- len(expected_warnings),
- _diff(expected_warnings, emitted_warnings)))
+ 'expected %d:\n%s' % (os.path.basename(filename),
+ len(emitted_warnings),
+ len(expected_warnings),
+ _diff(expected_warnings, emitted_warnings)))
for emitted_warning, expected_warning in zip(emitted_warnings, expected_warnings):
if expected_warning != emitted_warning:
diff --git a/tests/warn/warntestrunner b/tests/warn/warntestrunner
new file mode 100755
index 00000000..d3a4e87a
--- /dev/null
+++ b/tests/warn/warntestrunner
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+set -e
+
+for testname in ${alltests}; do
+ echo "Running warning test:" $testname
+ $PYTHON $srcdir/warningtester.py "$srcdir/$testname"
+done
diff --git a/tools/compiler.c b/tools/compiler.c
index 7e17f1bd..f8e8a90c 100644
--- a/tools/compiler.c
+++ b/tools/compiler.c
@@ -174,8 +174,6 @@ main (int argc, char ** argv)
g_debug ("[parsing] start, %d includes",
includedirs ? g_strv_length (includedirs) : 0);
- g_type_init ();
-
if (includedirs != NULL)
for (i = 0; includedirs[i]; i++)
g_irepository_prepend_search_path (includedirs[i]);
diff --git a/tools/generate.c b/tools/generate.c
index 0426512f..3e310978 100644
--- a/tools/generate.c
+++ b/tools/generate.c
@@ -52,8 +52,6 @@ main (int argc, char *argv[])
g_log_set_always_fatal (G_LOG_LEVEL_WARNING | G_LOG_LEVEL_CRITICAL);
- g_type_init ();
-
g_typelib_check_sanity ();
context = g_option_context_new ("");