# PaCkAgE DaTaStReAm gobject-introspection 1 20674 # end of header 0707010007ff05000081a40000000000000000000000014f83d34200000138000000b600010002ffffffffffffffff0000001e00000000gobject-introspection/pkginfoPKG=gobject-introspection NAME=gobject-introspection 1.32.0 i86pc Solaris 11 VERSION=1.32.0 PSTAMP=10th April 2012 VENDOR=GNOME Project EMAIL=http://live.gnome.org/GObjectIntrospection DESC=GNOME object binding infrastructure ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 0707010007ff04000081a40000000000000000000000014f83d3420000575a000000b600010002ffffffffffffffff0000001d00000000gobject-introspection/pkgmap: 1 20674 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/g-ir-annotation-tool 0755 root root 1549 65075 1334039270 1 f none /usr/local/bin/g-ir-compiler 0755 root root 342316 60311 1334039270 1 f none /usr/local/bin/g-ir-generate 0755 root root 52216 14433 1334039270 1 f none /usr/local/bin/g-ir-scanner 0755 root root 1542 64128 1334039270 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/gobject-introspection-1.0 0755 root root 1 f none /usr/local/include/gobject-introspection-1.0/giarginfo.h 0644 root root 2278 43227 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gibaseinfo.h 0644 root root 3201 39896 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gicallableinfo.h 0644 root root 3015 20275 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giconstantinfo.h 0644 root root 1603 62713 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gienuminfo.h 0644 root root 2009 29300 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gifieldinfo.h 0644 root root 1903 17341 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gifunctioninfo.h 0644 root root 2610 11680 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giinterfaceinfo.h 0644 root root 2822 22962 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giobjectinfo.h 0644 root root 5273 31507 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gipropertyinfo.h 0644 root root 1519 60035 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giregisteredtypeinfo.h 0644 root root 2166 45040 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/girepository.h 0644 root root 6432 61786 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/girffi.h 0644 root root 3142 23498 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gisignalinfo.h 0644 root root 1534 60005 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gistructinfo.h 0644 root root 1998 30302 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gitypeinfo.h 0644 root root 2163 39435 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gitypelib.h 0644 root root 2050 21982 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gitypes.h 0644 root root 12249 50977 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giunioninfo.h 0644 root root 2231 45129 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/givfuncinfo.h 0644 root root 2350 39599 1334039270 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/girepository-1.0 0755 root root 1 f none /usr/local/lib/girepository-1.0/DBus-1.0.typelib 0644 root root 712 23773 1334039270 1 f none /usr/local/lib/girepository-1.0/DBusGLib-1.0.typelib 0644 root root 544 16274 1334039270 1 f none /usr/local/lib/girepository-1.0/GIRepository-2.0.typelib 0644 root root 23628 35213 1334039270 1 f none /usr/local/lib/girepository-1.0/GL-1.0.typelib 0644 root root 948 19511 1334039270 1 f none /usr/local/lib/girepository-1.0/GLib-2.0.typelib 0644 root root 160160 21212 1334039270 1 f none /usr/local/lib/girepository-1.0/GModule-2.0.typelib 0644 root root 1340 59600 1334039270 1 f none /usr/local/lib/girepository-1.0/GObject-2.0.typelib 0644 root root 51164 2083 1334039270 1 f none /usr/local/lib/girepository-1.0/Gio-2.0.typelib 0644 root root 290476 10011 1334039270 1 f none /usr/local/lib/girepository-1.0/cairo-1.0.typelib 0644 root root 1624 10328 1334039270 1 f none /usr/local/lib/girepository-1.0/fontconfig-2.0.typelib 0644 root root 348 7707 1334039270 1 f none /usr/local/lib/girepository-1.0/freetype2-2.0.typelib 0644 root root 420 11028 1334039270 1 f none /usr/local/lib/girepository-1.0/libxml2-2.0.typelib 0644 root root 668 13122 1334039270 1 f none /usr/local/lib/girepository-1.0/xfixes-4.0.typelib 0644 root root 240 5954 1334039270 1 f none /usr/local/lib/girepository-1.0/xft-2.0.typelib 0644 root root 464 10496 1334039270 1 f none /usr/local/lib/girepository-1.0/xlib-2.0.typelib 0644 root root 836 20882 1334039270 1 f none /usr/local/lib/girepository-1.0/xrandr-1.3.typelib 0644 root root 640 19807 1334039270 1 d none /usr/local/lib/gobject-introspection 0755 root root 1 d none /usr/local/lib/gobject-introspection/giscanner 0755 root root 1 f none /usr/local/lib/gobject-introspection/giscanner/__init__.py 0644 root root 1017 20266 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/__init__.pyc 0644 root root 373 22332 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/__init__.pyo 0644 root root 373 22332 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/_giscanner.a 0644 root root 108944 24564 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/_giscanner.la 0755 root root 1234 44336 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/_giscanner.so 0755 root root 108648 3536 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationmain.py 0644 root root 2735 17720 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationmain.pyc 0644 root root 1950 50657 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationmain.pyo 0644 root root 1950 50657 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationparser.py 0644 root root 22775 14213 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationparser.pyc 0644 root root 18222 26053 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationparser.pyo 0644 root root 18151 23828 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/ast.py 0644 root root 34922 55472 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/ast.pyc 0644 root root 38026 33630 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/ast.pyo 0644 root root 37205 63792 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/cachestore.py 0644 root root 5954 54401 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/cachestore.pyc 0644 root root 5280 65184 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/cachestore.pyo 0644 root root 5280 65184 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/codegen.py 0644 root root 4948 49053 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/codegen.pyc 0644 root root 5214 4347 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/codegen.pyo 0644 root root 5154 1363 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/docmain.py 0644 root root 2186 47670 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/docmain.pyc 0644 root root 1538 23976 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/docmain.pyo 0644 root root 1538 23976 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/dumper.py 0644 root root 10631 29987 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/dumper.pyc 0644 root root 8353 61363 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/dumper.pyo 0644 root root 8353 61363 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/gdumpparser.py 0644 root root 21954 59071 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/gdumpparser.pyc 0644 root root 18610 10692 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/gdumpparser.pyo 0644 root root 18473 3932 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girparser.py 0644 root root 24606 42714 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girparser.pyc 0644 root root 21525 54145 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girparser.pyo 0644 root root 21009 28033 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girwriter.py 0644 root root 24554 41870 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girwriter.pyc 0644 root root 22165 36361 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girwriter.pyo 0644 root root 21954 26598 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/introspectablepass.py 0644 root root 9323 37 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/introspectablepass.pyc 0644 root root 7385 7093 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/introspectablepass.pyo 0644 root root 7346 4156 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/libtoolimporter.py 0644 root root 2467 345 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/libtoolimporter.pyc 0644 root root 2278 57561 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/libtoolimporter.pyo 0644 root root 2278 57561 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/maintransformer.py 0644 root root 55890 27344 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/maintransformer.pyc 0644 root root 39799 54591 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/maintransformer.pyo 0644 root root 39675 49429 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-class.tmpl 0644 root root 1517 60158 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-default.tmpl 0644 root root 309 25670 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-enum.tmpl 0644 root root 361 30034 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-function.tmpl 0644 root root 2277 58359 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-namespace.tmpl 0644 root root 611 51310 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-property.tmpl 0644 root root 464 39451 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-record.tmpl 0644 root root 362 30190 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-signal.tmpl 0644 root root 461 38983 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-vfunc.tmpl 0644 root root 864 7684 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-class.tmpl 0644 root root 2109 49124 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-default.tmpl 0644 root root 289 23764 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-enum.tmpl 0644 root root 588 49151 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-function.tmpl 0644 root root 2199 52581 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-namespace.tmpl 0644 root root 560 46522 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-property.tmpl 0644 root root 679 57965 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-record.tmpl 0644 root root 353 29013 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-signal.tmpl 0644 root root 1581 4907 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-vfunc.tmpl 0644 root root 1447 57820 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallardwriter.py 0644 root root 9924 27033 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallardwriter.pyc 0644 root root 9389 37230 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallardwriter.pyo 0644 root root 9389 37230 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/message.py 0644 root root 6025 16942 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/message.pyc 0644 root root 6730 29994 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/message.pyo 0644 root root 6730 29994 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/odict.py 0644 root root 1380 47279 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/odict.pyc 0644 root root 1455 10610 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/odict.pyo 0644 root root 1455 10610 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/scannermain.py 0644 root root 18675 34980 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/scannermain.pyc 0644 root root 14877 23750 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/scannermain.pyo 0644 root root 14877 23750 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/shlibs.py 0644 root root 4946 9991 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/shlibs.pyc 0644 root root 3006 30589 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/shlibs.pyo 0644 root root 3006 30589 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/sourcescanner.py 0644 root root 8687 61015 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/sourcescanner.pyc 0644 root root 11226 5355 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/sourcescanner.pyo 0644 root root 11172 1508 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/testcodegen.py 0644 root root 5139 56602 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/testcodegen.pyc 0644 root root 3421 46442 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/testcodegen.pyo 0644 root root 3382 44013 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/transformer.py 0644 root root 36400 50415 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/transformer.pyc 0644 root root 30065 40813 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/transformer.pyo 0644 root root 29924 34652 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/utils.py 0644 root root 4560 42172 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/utils.pyc 0644 root root 4129 43456 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/utils.pyo 0644 root root 4129 43456 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/xmlwriter.py 0644 root root 6059 8868 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/xmlwriter.pyc 0644 root root 6201 53404 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/xmlwriter.pyo 0644 root root 6086 47483 1334039270 1 f none /usr/local/lib/libgirepository-1.0.a 0644 root root 467736 7832 1334039270 1 f none /usr/local/lib/libgirepository-1.0.la 0755 root root 1358 54238 1334039270 1 s none /usr/local/lib/libgirepository-1.0.so=libgirepository-1.0.so.1.0.0 1 s none /usr/local/lib/libgirepository-1.0.so.1=libgirepository-1.0.so.1.0.0 1 f none /usr/local/lib/libgirepository-1.0.so.1.0.0 0755 root root 412800 41682 1334039270 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/gobject-introspection-1.0.pc 0644 root root 628 58097 1334039270 1 f none /usr/local/lib/pkgconfig/gobject-introspection-no-export-1.0.pc 0644 root root 591 54622 1334039270 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/aclocal 0755 root root 1 f none /usr/local/share/aclocal/introspection.m4 0644 root root 3550 14345 1334039270 1 d none /usr/local/share/gir-1.0 0755 root root 1 f none /usr/local/share/gir-1.0/DBus-1.0.gir 0644 root root 1185 26843 1334039270 1 f none /usr/local/share/gir-1.0/DBusGLib-1.0.gir 0644 root root 797 385 1334039270 1 f none /usr/local/share/gir-1.0/GIRepository-2.0.gir 0644 root root 158846 44039 1334039270 1 f none /usr/local/share/gir-1.0/GL-1.0.gir 0644 root root 1122 23974 1334039270 1 f none /usr/local/share/gir-1.0/GLib-2.0.gir 0644 root root 1746507 40175 1334039270 1 f none /usr/local/share/gir-1.0/GModule-2.0.gir 0644 root root 5450 32159 1334039270 1 f none /usr/local/share/gir-1.0/GObject-2.0.gir 0644 root root 561848 49085 1334039270 1 f none /usr/local/share/gir-1.0/Gio-2.0.gir 0644 root root 2965491 49570 1334039270 1 f none /usr/local/share/gir-1.0/cairo-1.0.gir 0644 root root 2894 37779 1334039270 1 f none /usr/local/share/gir-1.0/fontconfig-2.0.gir 0644 root root 620 49555 1334039270 1 f none /usr/local/share/gir-1.0/freetype2-2.0.gir 0644 root root 768 60870 1334039270 1 f none /usr/local/share/gir-1.0/libxml2-2.0.gir 0644 root root 938 10158 1334039270 1 f none /usr/local/share/gir-1.0/xfixes-4.0.gir 0644 root root 361 29297 1334039270 1 f none /usr/local/share/gir-1.0/xft-2.0.gir 0644 root root 745 59386 1334039270 1 f none /usr/local/share/gir-1.0/xlib-2.0.gir 0644 root root 2325 52501 1334039270 1 f none /usr/local/share/gir-1.0/xrandr-1.3.gir 0644 root root 808 3372 1334039270 1 d none /usr/local/share/gobject-introspection-1.0 0755 root root 1 f none /usr/local/share/gobject-introspection-1.0/Makefile.introspection 0644 root root 7026 55434 1334039270 1 f none /usr/local/share/gobject-introspection-1.0/gdump.c 0644 root root 14770 50019 1334039270 1 d none /usr/local/share/gobject-introspection-1.0/tests 0755 root root 1 f none /usr/local/share/gobject-introspection-1.0/tests/everything.c 0644 root root 18770 45254 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/everything.h 0644 root root 5697 61358 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/gimarshallingtests.c 0644 root root 107450 54619 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/gimarshallingtests.h 0644 root root 39589 47686 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/regress.c 0644 root root 80584 21100 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/regress.h 0644 root root 28917 7364 1334039271 1 d none /usr/local/share/gtk-doc 0755 root root 1 d none /usr/local/share/gtk-doc/html 0755 root root 1 d none /usr/local/share/gtk-doc/html/gi 0755 root root 1 f none /usr/local/share/gtk-doc/html/gi/annotation-glossary.html 0644 root root 2828 38074 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIArgInfo.html 0644 root root 26337 5173 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIBaseInfo.html 0644 root root 39432 49821 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GICallableInfo.html 0644 root root 25556 52384 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIConstantInfo.html 0644 root root 8275 48350 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIEnumInfo.html 0644 root root 15143 28489 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIFieldInfo.html 0644 root root 17306 4486 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIFunctionInfo.html 0644 root root 22195 33535 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIInterfaceInfo.html 0644 root root 34310 46149 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIObjectInfo.html 0644 root root 65977 906 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIPropertyInfo.html 0644 root root 9131 59019 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIRegisteredTypeInfo.html 0644 root root 10864 15406 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GISignalInfo.html 0644 root root 8893 35398 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIStructInfo.html 0644 root root 18077 29457 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GITypeInfo.html 0644 root root 26443 42573 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIUnionInfo.html 0644 root root 22291 53548 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIVFuncInfo.html 0644 root root 12410 64710 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-ffi.html 0644 root root 1815 21254 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gierrordomaininfo.html 0644 root root 2459 11248 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gir-reference.html 0644 root root 10901 4570 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gir.html 0644 root root 1776 18216 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-girepository.html 0644 root root 67690 26724 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-girffi.html 0644 root root 16531 33903 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gtypelib.html 0644 root root 93168 25238 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-libgirepository.html 0644 root root 1811 22001 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-overview.html 0644 root root 2768 37816 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-repository-structs.html 0644 root root 4696 22289 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-struct-hierarchy.html 0644 root root 3544 37371 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-typelib.html 0644 root root 1770 18079 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi.devhelp2 0644 root root 42359 42030 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/girepository.html 0644 root root 5209 2640 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/glib.html 0644 root root 1842 24797 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/home.png 0644 root root 654 8089 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/index.html 0644 root root 5514 31633 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/index.sgml 0644 root root 42722 39776 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/left.png 0644 root root 459 49669 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/overview.png 0644 root root 112776 44664 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/right.png 0644 root root 472 50613 1334039271 1 f none /usr/local/share/gtk-doc/html/gi/style.css 0644 root root 5184 22070 1334039271 1 f none /usr/local/share/gtk-doc/html/gi/up.png 0644 root root 406 41501 1334039271 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/g-ir-compiler.1 0644 root root 1418 53528 1334039270 1 f none /usr/local/share/man/man1/g-ir-generate.1 0644 root root 737 61952 1334039270 1 f none /usr/local/share/man/man1/g-ir-scanner.1 0644 root root 5052 52527 1334039270 1 i checkinstall 790 2505 1334039508 1 i pkginfo 312 25119 1334039362 07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!0707010007ff05000081a40000000000000000000000014f83d34200000138000000b600010002ffffffffffffffff0000000800000000pkginfoPKG=gobject-introspection NAME=gobject-introspection 1.32.0 i86pc Solaris 11 VERSION=1.32.0 PSTAMP=10th April 2012 VENDOR=GNOME Project EMAIL=http://live.gnome.org/GObjectIntrospection DESC=GNOME object binding infrastructure ARCH=i386 CATEGORY=utility CLASSES=none BASEDIR=/ ISTATES=S s 1 2 3 RSTATES=S s 1 2 3 0707010007ff04000081a40000000000000000000000014f83d3420000575a000000b600010002ffffffffffffffff0000000700000000pkgmap: 1 20674 1 d none /usr ? ? ? 1 d none /usr/local ? ? ? 1 d none /usr/local/bin 0755 root root 1 f none /usr/local/bin/g-ir-annotation-tool 0755 root root 1549 65075 1334039270 1 f none /usr/local/bin/g-ir-compiler 0755 root root 342316 60311 1334039270 1 f none /usr/local/bin/g-ir-generate 0755 root root 52216 14433 1334039270 1 f none /usr/local/bin/g-ir-scanner 0755 root root 1542 64128 1334039270 1 d none /usr/local/include 0755 root root 1 d none /usr/local/include/gobject-introspection-1.0 0755 root root 1 f none /usr/local/include/gobject-introspection-1.0/giarginfo.h 0644 root root 2278 43227 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gibaseinfo.h 0644 root root 3201 39896 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gicallableinfo.h 0644 root root 3015 20275 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giconstantinfo.h 0644 root root 1603 62713 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gienuminfo.h 0644 root root 2009 29300 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gifieldinfo.h 0644 root root 1903 17341 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gifunctioninfo.h 0644 root root 2610 11680 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giinterfaceinfo.h 0644 root root 2822 22962 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giobjectinfo.h 0644 root root 5273 31507 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gipropertyinfo.h 0644 root root 1519 60035 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giregisteredtypeinfo.h 0644 root root 2166 45040 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/girepository.h 0644 root root 6432 61786 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/girffi.h 0644 root root 3142 23498 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gisignalinfo.h 0644 root root 1534 60005 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gistructinfo.h 0644 root root 1998 30302 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gitypeinfo.h 0644 root root 2163 39435 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gitypelib.h 0644 root root 2050 21982 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/gitypes.h 0644 root root 12249 50977 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/giunioninfo.h 0644 root root 2231 45129 1334039270 1 f none /usr/local/include/gobject-introspection-1.0/givfuncinfo.h 0644 root root 2350 39599 1334039270 1 d none /usr/local/lib 0755 root root 1 d none /usr/local/lib/girepository-1.0 0755 root root 1 f none /usr/local/lib/girepository-1.0/DBus-1.0.typelib 0644 root root 712 23773 1334039270 1 f none /usr/local/lib/girepository-1.0/DBusGLib-1.0.typelib 0644 root root 544 16274 1334039270 1 f none /usr/local/lib/girepository-1.0/GIRepository-2.0.typelib 0644 root root 23628 35213 1334039270 1 f none /usr/local/lib/girepository-1.0/GL-1.0.typelib 0644 root root 948 19511 1334039270 1 f none /usr/local/lib/girepository-1.0/GLib-2.0.typelib 0644 root root 160160 21212 1334039270 1 f none /usr/local/lib/girepository-1.0/GModule-2.0.typelib 0644 root root 1340 59600 1334039270 1 f none /usr/local/lib/girepository-1.0/GObject-2.0.typelib 0644 root root 51164 2083 1334039270 1 f none /usr/local/lib/girepository-1.0/Gio-2.0.typelib 0644 root root 290476 10011 1334039270 1 f none /usr/local/lib/girepository-1.0/cairo-1.0.typelib 0644 root root 1624 10328 1334039270 1 f none /usr/local/lib/girepository-1.0/fontconfig-2.0.typelib 0644 root root 348 7707 1334039270 1 f none /usr/local/lib/girepository-1.0/freetype2-2.0.typelib 0644 root root 420 11028 1334039270 1 f none /usr/local/lib/girepository-1.0/libxml2-2.0.typelib 0644 root root 668 13122 1334039270 1 f none /usr/local/lib/girepository-1.0/xfixes-4.0.typelib 0644 root root 240 5954 1334039270 1 f none /usr/local/lib/girepository-1.0/xft-2.0.typelib 0644 root root 464 10496 1334039270 1 f none /usr/local/lib/girepository-1.0/xlib-2.0.typelib 0644 root root 836 20882 1334039270 1 f none /usr/local/lib/girepository-1.0/xrandr-1.3.typelib 0644 root root 640 19807 1334039270 1 d none /usr/local/lib/gobject-introspection 0755 root root 1 d none /usr/local/lib/gobject-introspection/giscanner 0755 root root 1 f none /usr/local/lib/gobject-introspection/giscanner/__init__.py 0644 root root 1017 20266 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/__init__.pyc 0644 root root 373 22332 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/__init__.pyo 0644 root root 373 22332 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/_giscanner.a 0644 root root 108944 24564 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/_giscanner.la 0755 root root 1234 44336 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/_giscanner.so 0755 root root 108648 3536 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationmain.py 0644 root root 2735 17720 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationmain.pyc 0644 root root 1950 50657 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationmain.pyo 0644 root root 1950 50657 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationparser.py 0644 root root 22775 14213 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationparser.pyc 0644 root root 18222 26053 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/annotationparser.pyo 0644 root root 18151 23828 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/ast.py 0644 root root 34922 55472 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/ast.pyc 0644 root root 38026 33630 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/ast.pyo 0644 root root 37205 63792 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/cachestore.py 0644 root root 5954 54401 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/cachestore.pyc 0644 root root 5280 65184 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/cachestore.pyo 0644 root root 5280 65184 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/codegen.py 0644 root root 4948 49053 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/codegen.pyc 0644 root root 5214 4347 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/codegen.pyo 0644 root root 5154 1363 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/docmain.py 0644 root root 2186 47670 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/docmain.pyc 0644 root root 1538 23976 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/docmain.pyo 0644 root root 1538 23976 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/dumper.py 0644 root root 10631 29987 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/dumper.pyc 0644 root root 8353 61363 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/dumper.pyo 0644 root root 8353 61363 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/gdumpparser.py 0644 root root 21954 59071 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/gdumpparser.pyc 0644 root root 18610 10692 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/gdumpparser.pyo 0644 root root 18473 3932 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girparser.py 0644 root root 24606 42714 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girparser.pyc 0644 root root 21525 54145 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girparser.pyo 0644 root root 21009 28033 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girwriter.py 0644 root root 24554 41870 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girwriter.pyc 0644 root root 22165 36361 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/girwriter.pyo 0644 root root 21954 26598 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/introspectablepass.py 0644 root root 9323 37 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/introspectablepass.pyc 0644 root root 7385 7093 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/introspectablepass.pyo 0644 root root 7346 4156 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/libtoolimporter.py 0644 root root 2467 345 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/libtoolimporter.pyc 0644 root root 2278 57561 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/libtoolimporter.pyo 0644 root root 2278 57561 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/maintransformer.py 0644 root root 55890 27344 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/maintransformer.pyc 0644 root root 39799 54591 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/maintransformer.pyo 0644 root root 39675 49429 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-class.tmpl 0644 root root 1517 60158 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-default.tmpl 0644 root root 309 25670 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-enum.tmpl 0644 root root 361 30034 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-function.tmpl 0644 root root 2277 58359 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-namespace.tmpl 0644 root root 611 51310 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-property.tmpl 0644 root root 464 39451 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-record.tmpl 0644 root root 362 30190 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-signal.tmpl 0644 root root 461 38983 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-C-vfunc.tmpl 0644 root root 864 7684 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-class.tmpl 0644 root root 2109 49124 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-default.tmpl 0644 root root 289 23764 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-enum.tmpl 0644 root root 588 49151 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-function.tmpl 0644 root root 2199 52581 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-namespace.tmpl 0644 root root 560 46522 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-property.tmpl 0644 root root 679 57965 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-record.tmpl 0644 root root 353 29013 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-signal.tmpl 0644 root root 1581 4907 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallard-Python-vfunc.tmpl 0644 root root 1447 57820 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallardwriter.py 0644 root root 9924 27033 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallardwriter.pyc 0644 root root 9389 37230 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/mallardwriter.pyo 0644 root root 9389 37230 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/message.py 0644 root root 6025 16942 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/message.pyc 0644 root root 6730 29994 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/message.pyo 0644 root root 6730 29994 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/odict.py 0644 root root 1380 47279 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/odict.pyc 0644 root root 1455 10610 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/odict.pyo 0644 root root 1455 10610 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/scannermain.py 0644 root root 18675 34980 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/scannermain.pyc 0644 root root 14877 23750 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/scannermain.pyo 0644 root root 14877 23750 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/shlibs.py 0644 root root 4946 9991 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/shlibs.pyc 0644 root root 3006 30589 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/shlibs.pyo 0644 root root 3006 30589 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/sourcescanner.py 0644 root root 8687 61015 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/sourcescanner.pyc 0644 root root 11226 5355 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/sourcescanner.pyo 0644 root root 11172 1508 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/testcodegen.py 0644 root root 5139 56602 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/testcodegen.pyc 0644 root root 3421 46442 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/testcodegen.pyo 0644 root root 3382 44013 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/transformer.py 0644 root root 36400 50415 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/transformer.pyc 0644 root root 30065 40813 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/transformer.pyo 0644 root root 29924 34652 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/utils.py 0644 root root 4560 42172 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/utils.pyc 0644 root root 4129 43456 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/utils.pyo 0644 root root 4129 43456 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/xmlwriter.py 0644 root root 6059 8868 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/xmlwriter.pyc 0644 root root 6201 53404 1334039270 1 f none /usr/local/lib/gobject-introspection/giscanner/xmlwriter.pyo 0644 root root 6086 47483 1334039270 1 f none /usr/local/lib/libgirepository-1.0.a 0644 root root 467736 7832 1334039270 1 f none /usr/local/lib/libgirepository-1.0.la 0755 root root 1358 54238 1334039270 1 s none /usr/local/lib/libgirepository-1.0.so=libgirepository-1.0.so.1.0.0 1 s none /usr/local/lib/libgirepository-1.0.so.1=libgirepository-1.0.so.1.0.0 1 f none /usr/local/lib/libgirepository-1.0.so.1.0.0 0755 root root 412800 41682 1334039270 1 d none /usr/local/lib/pkgconfig 0755 root root 1 f none /usr/local/lib/pkgconfig/gobject-introspection-1.0.pc 0644 root root 628 58097 1334039270 1 f none /usr/local/lib/pkgconfig/gobject-introspection-no-export-1.0.pc 0644 root root 591 54622 1334039270 1 d none /usr/local/share 0755 root root 1 d none /usr/local/share/aclocal 0755 root root 1 f none /usr/local/share/aclocal/introspection.m4 0644 root root 3550 14345 1334039270 1 d none /usr/local/share/gir-1.0 0755 root root 1 f none /usr/local/share/gir-1.0/DBus-1.0.gir 0644 root root 1185 26843 1334039270 1 f none /usr/local/share/gir-1.0/DBusGLib-1.0.gir 0644 root root 797 385 1334039270 1 f none /usr/local/share/gir-1.0/GIRepository-2.0.gir 0644 root root 158846 44039 1334039270 1 f none /usr/local/share/gir-1.0/GL-1.0.gir 0644 root root 1122 23974 1334039270 1 f none /usr/local/share/gir-1.0/GLib-2.0.gir 0644 root root 1746507 40175 1334039270 1 f none /usr/local/share/gir-1.0/GModule-2.0.gir 0644 root root 5450 32159 1334039270 1 f none /usr/local/share/gir-1.0/GObject-2.0.gir 0644 root root 561848 49085 1334039270 1 f none /usr/local/share/gir-1.0/Gio-2.0.gir 0644 root root 2965491 49570 1334039270 1 f none /usr/local/share/gir-1.0/cairo-1.0.gir 0644 root root 2894 37779 1334039270 1 f none /usr/local/share/gir-1.0/fontconfig-2.0.gir 0644 root root 620 49555 1334039270 1 f none /usr/local/share/gir-1.0/freetype2-2.0.gir 0644 root root 768 60870 1334039270 1 f none /usr/local/share/gir-1.0/libxml2-2.0.gir 0644 root root 938 10158 1334039270 1 f none /usr/local/share/gir-1.0/xfixes-4.0.gir 0644 root root 361 29297 1334039270 1 f none /usr/local/share/gir-1.0/xft-2.0.gir 0644 root root 745 59386 1334039270 1 f none /usr/local/share/gir-1.0/xlib-2.0.gir 0644 root root 2325 52501 1334039270 1 f none /usr/local/share/gir-1.0/xrandr-1.3.gir 0644 root root 808 3372 1334039270 1 d none /usr/local/share/gobject-introspection-1.0 0755 root root 1 f none /usr/local/share/gobject-introspection-1.0/Makefile.introspection 0644 root root 7026 55434 1334039270 1 f none /usr/local/share/gobject-introspection-1.0/gdump.c 0644 root root 14770 50019 1334039270 1 d none /usr/local/share/gobject-introspection-1.0/tests 0755 root root 1 f none /usr/local/share/gobject-introspection-1.0/tests/everything.c 0644 root root 18770 45254 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/everything.h 0644 root root 5697 61358 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/gimarshallingtests.c 0644 root root 107450 54619 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/gimarshallingtests.h 0644 root root 39589 47686 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/regress.c 0644 root root 80584 21100 1334039271 1 f none /usr/local/share/gobject-introspection-1.0/tests/regress.h 0644 root root 28917 7364 1334039271 1 d none /usr/local/share/gtk-doc 0755 root root 1 d none /usr/local/share/gtk-doc/html 0755 root root 1 d none /usr/local/share/gtk-doc/html/gi 0755 root root 1 f none /usr/local/share/gtk-doc/html/gi/annotation-glossary.html 0644 root root 2828 38074 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIArgInfo.html 0644 root root 26337 5173 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIBaseInfo.html 0644 root root 39432 49821 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GICallableInfo.html 0644 root root 25556 52384 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIConstantInfo.html 0644 root root 8275 48350 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIEnumInfo.html 0644 root root 15143 28489 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIFieldInfo.html 0644 root root 17306 4486 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIFunctionInfo.html 0644 root root 22195 33535 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIInterfaceInfo.html 0644 root root 34310 46149 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIObjectInfo.html 0644 root root 65977 906 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIPropertyInfo.html 0644 root root 9131 59019 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIRegisteredTypeInfo.html 0644 root root 10864 15406 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GISignalInfo.html 0644 root root 8893 35398 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIStructInfo.html 0644 root root 18077 29457 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GITypeInfo.html 0644 root root 26443 42573 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIUnionInfo.html 0644 root root 22291 53548 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-GIVFuncInfo.html 0644 root root 12410 64710 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-ffi.html 0644 root root 1815 21254 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gierrordomaininfo.html 0644 root root 2459 11248 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gir-reference.html 0644 root root 10901 4570 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gir.html 0644 root root 1776 18216 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-girepository.html 0644 root root 67690 26724 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-girffi.html 0644 root root 16531 33903 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-gtypelib.html 0644 root root 93168 25238 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-libgirepository.html 0644 root root 1811 22001 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-overview.html 0644 root root 2768 37816 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-repository-structs.html 0644 root root 4696 22289 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-struct-hierarchy.html 0644 root root 3544 37371 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi-typelib.html 0644 root root 1770 18079 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/gi.devhelp2 0644 root root 42359 42030 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/girepository.html 0644 root root 5209 2640 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/glib.html 0644 root root 1842 24797 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/home.png 0644 root root 654 8089 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/index.html 0644 root root 5514 31633 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/index.sgml 0644 root root 42722 39776 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/left.png 0644 root root 459 49669 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/overview.png 0644 root root 112776 44664 1334039270 1 f none /usr/local/share/gtk-doc/html/gi/right.png 0644 root root 472 50613 1334039271 1 f none /usr/local/share/gtk-doc/html/gi/style.css 0644 root root 5184 22070 1334039271 1 f none /usr/local/share/gtk-doc/html/gi/up.png 0644 root root 406 41501 1334039271 1 d none /usr/local/share/man 0755 root root 1 d none /usr/local/share/man/man1 0755 root root 1 f none /usr/local/share/man/man1/g-ir-compiler.1 0644 root root 1418 53528 1334039270 1 f none /usr/local/share/man/man1/g-ir-generate.1 0644 root root 737 61952 1334039270 1 f none /usr/local/share/man/man1/g-ir-scanner.1 0644 root root 5052 52527 1334039270 1 i checkinstall 790 2505 1334039508 1 i pkginfo 312 25119 1334039362 0707010007ffe9000041ed0000000000000000000000024f83d34200000000000000b600010002ffffffffffffffff0000000800000000install0707010007ffea000081ed0000000000000000000000014f83d3d400000316000000b600010002ffffffffffffffff0000001500000000install/checkinstall#!/bin/sh # expected_bits="64" expected_release="5.11" expected_platform="i386" # release=`uname -r` platform=`uname -p` bits=`isainfo -b` # if [ ${platform} != ${expected_platform} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_platform} architecture\n" echo "\tAborting installation.\n\n\n" exit 1 fi if [ ${release} != ${expected_release} ]; then echo "\n\n\n\tThis package must be installed on a ${expected_release} machine\n" echo "\tAborting installation.\n\n\n" exit 1 fi #if [ ${bits} != ${expected_bits} ]; then # echo "\n\n\n\tThis package must be installed on a ${expected_bits} bit machine\n" # echo "\tYour machine is running a ${bits} bit O.S. currently\n" # echo "\tAborting installation.\n\n\n" # exit 1 #fi exit 0 0707010007ff06000041ed0000000000000000000000034f83d34200000000000000b600010002ffffffffffffffff0000000500000000root0707010007ff07000041ed0000000000000000000000034f83d34200000000000000b600010002ffffffffffffffff0000000900000000root/usr0707010007ff08000041ed0000000000000000000000064f83d34200000000000000b600010002ffffffffffffffff0000000f00000000root/usr/local0707010007ff9b000041ed0000000000000000000000074f83d34200000000000000b600010002ffffffffffffffff0000001500000000root/usr/local/share0707010007ffaf000041ed0000000000000000000000034f83d34200000000000000b600010002ffffffffffffffff0000002f00000000root/usr/local/share/gobject-introspection-1.00707010007ffb0000081a40000000000000000000000014f83d2e600001b72000000b600010002ffffffffffffffff0000004600000000root/usr/local/share/gobject-introspection-1.0/Makefile.introspection# -*- Mode: make -*- # Copyright 2009-2010 Johan Dahlin # # This file is free software; the author(s) gives unlimited # permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # * Input variables: # # INTROSPECTION_GIRS - List of GIRS that should be generated # INTROSPECTION_SCANNER - Command to invoke scanner, normally set by # GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4 # INTROSPECTION_SCANNER_ARGS - Additional args to pass in to the scanner # INTROSPECTION_SCANNER_ENV - Environment variables to set before running # the scanner # INTROSPECTION_COMPILER - Command to invoke compiler, normally set by # GOBJECT_INTROSPECTION_REQUIRE/CHECK() in introspection.m4 # INTROSPECTION_COMPILER_ARGS - Additional args to pass in to the compiler # # * Simple tutorial # # Add this to configure.ac: # -Wno-portability to AM_INIT_AUTOMAKE # GOBJECT_INTROSPECTION_CHECK([0.6.7]) # # Add this to Makefile.am where your library/program is built: # include $(INTROSPECTION_MAKEFILE) # INTROSPECTION_GIRS = YourLib-1.0.gir # YourLib_1_0_gir_NAMESPACE = YourLib # YourLib_1_0_gir_VERSION = 1.0 # YourLib_1_0_gir_LIBS = libyourlib.la # YourLib_1_0_gir_FILES = $(libyourlib_1_0_SOURCES) # girdir = $(datadir)/gir-1.0 # dist_gir_DATA = YourLib-1.0.gir # typelibdir = $(libdir)/girepository-1.0 # typelib_DATA = YourLib-1.0.typelib # CLEANFILES = $(dist_gir_DATA) $(typelib_DATA) # # Make sure the required variables are set, these should under normal # circumstances come from introspection.m4 $(if $(INTROSPECTION_SCANNER),,$(error Need to define INTROSPECTION_SCANNER)) $(if $(INTROSPECTION_COMPILER),,$(error Need to define INTROSPECTION_COMPILER)) # Private functions ## Transform the gir filename to something which can reference through a variable ## without automake/make complaining, eg Gtk-2.0.gir -> Gtk_2_0_gir _gir_name = $(subst /,_,$(subst -,_,$(subst .,_,$(1)))) # Namespace and Version is either fetched from the gir filename # or the _NAMESPACE/_VERSION variable combo _gir_namespace = $(or $($(_gir_name)_NAMESPACE),$(firstword $(subst -, ,$(notdir $(1))))) _gir_version = $(or $($(_gir_name)_VERSION),$(lastword $(subst -, ,$(1:.gir=)))) # _PROGRAM is an optional variable which needs it's own --program argument _gir_program = $(if $($(_gir_name)_PROGRAM),--program=$($(_gir_name)_PROGRAM)) # Variables which provides a list of things _gir_libraries = $(foreach lib,$($(_gir_name)_LIBS),--library=$(lib)) _gir_packages = $(foreach pkg,$($(_gir_name)_PACKAGES),--pkg=$(pkg)) _gir_includes = $(foreach include,$($(_gir_name)_INCLUDES),--include=$(include)) _gir_export_packages = $(foreach pkg,$($(_gir_name)_EXPORT_PACKAGES),--pkg-export=$(pkg)) # Reuse the LIBTOOL variable from automake if it's set, but # work around MSYS weirdness: When running g-ir-scanner, MSYS changes # a command-line argument --libtool="/bin/sh ../../libtool" into # --libtool=c:/opt/msys/1.0/bin/libtool. So just use sh.exe without path # because we already "know" where the libtool configure produced is. _gir_libtool = $(if $(findstring MINGW32,$(shell uname -s)),--libtool="$(top_builddir)/libtool",$(if $(LIBTOOL),--libtool="$(LIBTOOL)")) # Macros for AM_SILENT_RULES prettiness _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_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)"; # # Creates a GIR by scanning C headers/sources # $(1) - Name of the gir file (output) # # If output is Gtk-2.0.gir then you should name the variables like # Gtk_2_0_gir_NAMESPACE, Gtk_2_0_gir_VERSION etc. # Required variables: # FILES - C sources and headers which should be scanned # # One of these variables are required: # LIBS - Library where the symbol represented in the gir can be found # PROGRAM - Program where the symbol represented in the gir can be found # # Optional variables # NAMESPACE - Namespace of the gir, first letter capital, # rest should be lower case, for instance: 'Gtk', 'Clutter', 'ClutterGtk'. # If not present the namespace will be fetched from the gir filename, # the part before the first dash. For 'Gtk-2.0', namespace will be 'Gtk'. # VERSION - Version of the gir, if not present, will be fetched from gir # filename, the part after the first dash. For 'Gtk-2.0', version will be '2.0'. # LIBTOOL - Command to invoke libtool, usually set by automake # SCANNERFLAGS - Flags to pass in to the scanner, see g-ir-scanner(1) for a list # CFLAGS - Flags to pass in to the parser when scanning headers # LDFLAGS - Linker flags used by the scanner # PACKAGES - list of pkg-config names which cflags are required to parse # the headers of this gir # INCLUDES - Gir files to include without the .gir suffix, for instance # GLib-2.0, Gtk-2.0. This is needed for all libraries which you depend on that # provides introspection information. # EXPORT_PACKAGES - list of pkg-config names that are provided by this gir. # By default the names in the PACKAGES variable will be used. # define introspection-scanner # Basic sanity check, to make sure required variables are set $(if $($(_gir_name)_FILES),,$(error Need to define $(_gir_name)_FILES)) $(if $(or $(findstring --header-only,$($(_gir_name)_SCANNERFLAGS)), $($(_gir_name)_LIBS), $($(_gir_name)_PROGRAM)),, $(error Need to define $(_gir_name)_LIBS or $(_gir_name)_PROGRAM)) # Only dependencies we know are actually filenames goes into _FILES, make # sure these are built before running the scanner. Libraries and programs # needs to be added manually. $(1): $$($(_gir_name)_FILES) @ $(MKDIR_P) $(dir $(1)) $(_gir_silent_scanner_prefix) $(INTROSPECTION_SCANNER_ENV) $(INTROSPECTION_SCANNER) $(_gir_silent_scanner_opts) \ $(INTROSPECTION_SCANNER_ARGS) \ --namespace=$(_gir_namespace) \ --nsversion=$(_gir_version) \ $(_gir_libtool) \ $(_gir_packages) \ $(_gir_includes) \ $(_gir_export_packages) \ $(_gir_program) \ $(_gir_libraries) \ $($(_gir_name)_SCANNERFLAGS) \ $($(_gir_name)_CFLAGS) \ $($(_gir_name)_LDFLAGS) \ $$^ \ --output $(1) endef $(foreach gir,$(INTROSPECTION_GIRS),$(eval $(call introspection-scanner,$(gir)))) # # Compiles a gir into a typelib # $(1): gir filename (input) # $(2): typelib filename (output) # define introspection-compiler $(_gir_silent_compiler) $(INTROSPECTION_COMPILER) $(INTROSPECTION_COMPILER_ARGS) --includedir=. $(1) -o $(2) endef # Simple rule to compile a typelib. %.typelib: %.gir $(call introspection-compiler,$<,$@) 0707010007ffb1000081a40000000000000000000000014f83d2e6000039b2000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/gobject-introspection-1.0/gdump.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- * GObject introspection: Dump introspection data * * Copyright (C) 2008 Colin Walters * * 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. */ #include #include #include #include /* This file is both compiled into libgirepository.so, and installed * on the filesystem. But for the dumper, we want to avoid linking * to libgirepository; see * https://bugzilla.gnome.org/show_bug.cgi?id=630342 */ #ifdef G_IREPOSITORY_COMPILATION #include "config.h" #include "girepository.h" #endif #include static void escaped_printf (GOutputStream *out, const char *fmt, ...) { char *str; va_list args; gsize written; GError *error = NULL; va_start (args, fmt); str = g_markup_vprintf_escaped (fmt, args); if (!g_output_stream_write_all (out, str, strlen (str), &written, NULL, &error)) { g_critical ("failed to write to iochannel: %s", error->message); g_clear_error (&error); } g_free (str); va_end (args); } static void goutput_write (GOutputStream *out, const char *str) { gsize written; GError *error = NULL; if (!g_output_stream_write_all (out, str, strlen (str), &written, NULL, &error)) { g_critical ("failed to write to iochannel: %s", error->message); g_clear_error (&error); } } typedef GType (*GetTypeFunc)(void); typedef GQuark (*ErrorQuarkFunc)(void); static GType invoke_get_type (GModule *self, const char *symbol, GError **error) { GetTypeFunc sym; GType ret; if (!g_module_symbol (self, symbol, (void**)&sym)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Failed to find symbol '%s'", symbol); return G_TYPE_INVALID; } ret = sym (); if (ret == G_TYPE_INVALID) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Function '%s' returned G_TYPE_INVALID", symbol); } return ret; } static GQuark invoke_error_quark (GModule *self, const char *symbol, GError **error) { ErrorQuarkFunc sym; if (!g_module_symbol (self, symbol, (void**)&sym)) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Failed to find symbol '%s'", symbol); return G_TYPE_INVALID; } return sym (); } static void dump_properties (GType type, GOutputStream *out) { guint i; guint n_properties; GParamSpec **props; if (G_TYPE_FUNDAMENTAL (type) == G_TYPE_OBJECT) { GObjectClass *klass; klass = g_type_class_ref (type); props = g_object_class_list_properties (klass, &n_properties); } else { void *klass; klass = g_type_default_interface_ref (type); props = g_object_interface_list_properties (klass, &n_properties); } for (i = 0; i < n_properties; i++) { GParamSpec *prop; prop = props[i]; if (prop->owner_type != type) continue; escaped_printf (out, " \n", prop->name, g_type_name (prop->value_type), prop->flags); } g_free (props); } static void dump_signals (GType type, GOutputStream *out) { guint i; guint n_sigs; guint *sig_ids; sig_ids = g_signal_list_ids (type, &n_sigs); for (i = 0; i < n_sigs; i++) { guint sigid; GSignalQuery query; guint j; sigid = sig_ids[i]; g_signal_query (sigid, &query); escaped_printf (out, " \n"); for (j = 0; j < query.n_params; j++) { escaped_printf (out, " \n", g_type_name (query.param_types[j])); } goutput_write (out, " \n"); } } static void dump_object_type (GType type, const char *symbol, GOutputStream *out) { guint n_interfaces; guint i; GType *interfaces; escaped_printf (out, " str); g_string_free (parent_str, TRUE); } if (G_TYPE_IS_ABSTRACT (type)) escaped_printf (out, " abstract=\"1\""); goutput_write (out, ">\n"); interfaces = g_type_interfaces (type, &n_interfaces); for (i = 0; i < n_interfaces; i++) { GType itype = interfaces[i]; escaped_printf (out, " \n", g_type_name (itype)); } dump_properties (type, out); dump_signals (type, out); goutput_write (out, " \n"); } static void dump_interface_type (GType type, const char *symbol, GOutputStream *out) { guint n_interfaces; guint i; GType *interfaces; escaped_printf (out, " \n", g_type_name (type), symbol); interfaces = g_type_interface_prerequisites (type, &n_interfaces); for (i = 0; i < n_interfaces; i++) { GType itype = interfaces[i]; if (itype == G_TYPE_OBJECT) { /* Treat this as implicit for now; in theory GInterfaces are * supported on things like GstMiniObject, but right now * the introspection system only supports GObject. * http://bugzilla.gnome.org/show_bug.cgi?id=559706 */ continue; } escaped_printf (out, " \n", g_type_name (itype)); } dump_properties (type, out); dump_signals (type, out); goutput_write (out, " \n"); } static void dump_boxed_type (GType type, const char *symbol, GOutputStream *out) { escaped_printf (out, " \n", g_type_name (type), symbol); } static void dump_flags_type (GType type, const char *symbol, GOutputStream *out) { guint i; GFlagsClass *klass; klass = g_type_class_ref (type); escaped_printf (out, " \n", g_type_name (type), symbol); for (i = 0; i < klass->n_values; i++) { GFlagsValue *value = &(klass->values[i]); escaped_printf (out, " \n", value->value_name, value->value_nick, value->value); } goutput_write (out, " \n"); } static void dump_enum_type (GType type, const char *symbol, GOutputStream *out) { guint i; GEnumClass *klass; klass = g_type_class_ref (type); escaped_printf (out, " \n", g_type_name (type), symbol); for (i = 0; i < klass->n_values; i++) { GEnumValue *value = &(klass->values[i]); escaped_printf (out, " \n", value->value_name, value->value_nick, value->value); } goutput_write (out, " "); } static void dump_fundamental_type (GType type, const char *symbol, GOutputStream *out) { guint n_interfaces; guint i; GType *interfaces; GString *parent_str; GType parent; gboolean first = TRUE; escaped_printf (out, " len > 0) escaped_printf (out, " parents=\"%s\"", parent_str->str); g_string_free (parent_str, TRUE); goutput_write (out, ">\n"); interfaces = g_type_interfaces (type, &n_interfaces); for (i = 0; i < n_interfaces; i++) { GType itype = interfaces[i]; escaped_printf (out, " \n", g_type_name (itype)); } goutput_write (out, " \n"); } static void dump_type (GType type, const char *symbol, GOutputStream *out) { switch (g_type_fundamental (type)) { case G_TYPE_OBJECT: dump_object_type (type, symbol, out); break; case G_TYPE_INTERFACE: dump_interface_type (type, symbol, out); break; case G_TYPE_BOXED: dump_boxed_type (type, symbol, out); break; case G_TYPE_FLAGS: dump_flags_type (type, symbol, out); break; case G_TYPE_ENUM: dump_enum_type (type, symbol, out); break; case G_TYPE_POINTER: /* GValue, etc. Just skip them. */ break; default: dump_fundamental_type (type, symbol, out); break; } } static void dump_error_quark (GQuark quark, const char *symbol, GOutputStream *out) { escaped_printf (out, " \n", symbol, g_quark_to_string (quark)); } /** * g_irepository_dump: * @arg: Comma-separated pair of input and output filenames * @error: a %GError * * 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. * * The output file should already exist, but be empty. This function will * overwrite its contents. * * Returns: %TRUE on success, %FALSE on error */ #ifndef G_IREPOSITORY_COMPILATION static gboolean dump_irepository (const char *arg, GError **error) G_GNUC_UNUSED; static gboolean dump_irepository (const char *arg, GError **error) #else gboolean g_irepository_dump (const char *arg, GError **error) #endif { GHashTable *output_types; char **args; GFile *input_file; GFile *output_file; GFileInputStream *input; GFileOutputStream *output; GDataInputStream *in; GModule *self; gboolean caught_error = FALSE; self = g_module_open (NULL, 0); if (!self) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "failed to open self: %s", g_module_error ()); return FALSE; } args = g_strsplit (arg, ",", 2); input_file = g_file_new_for_path (args[0]); output_file = g_file_new_for_path (args[1]); input = g_file_read (input_file, NULL, error); if (input == NULL) return FALSE; output = g_file_replace (output_file, NULL, FALSE, 0, NULL, error); if (output == NULL) { g_input_stream_close (G_INPUT_STREAM (input), NULL, NULL); return FALSE; } goutput_write (G_OUTPUT_STREAM (output), "\n"); goutput_write (G_OUTPUT_STREAM (output), "\n"); output_types = g_hash_table_new (NULL, NULL); in = g_data_input_stream_new (G_INPUT_STREAM (input)); g_object_unref (input); while (TRUE) { gsize len; char *line = g_data_input_stream_read_line (in, &len, NULL, NULL); const char *function; if (line == NULL || *line == '\0') { g_free (line); break; } g_strchomp (line); if (strncmp (line, "get-type:", strlen ("get-type:")) == 0) { GType type; function = line + strlen ("get-type:"); type = invoke_get_type (self, function, error); if (type == G_TYPE_INVALID) { g_printerr ("Invalid GType function: '%s'\n", function); caught_error = TRUE; g_free (line); break; } if (g_hash_table_lookup (output_types, (gpointer) type)) goto next; g_hash_table_insert (output_types, (gpointer) type, (gpointer) type); dump_type (type, function, G_OUTPUT_STREAM (output)); } else if (strncmp (line, "error-quark:", strlen ("error-quark:")) == 0) { GQuark quark; function = line + strlen ("error-quark:"); quark = invoke_error_quark (self, function, error); if (quark == 0) { g_printerr ("Invalid error quark function: '%s'\n", function); caught_error = TRUE; g_free (line); break; } dump_error_quark (quark, function, G_OUTPUT_STREAM (output)); } next: g_free (line); } g_hash_table_destroy (output_types); goutput_write (G_OUTPUT_STREAM (output), "\n"); { GError **ioerror; /* Avoid overwriting an earlier set error */ if (caught_error) ioerror = NULL; else ioerror = error; if (!g_input_stream_close (G_INPUT_STREAM (in), NULL, ioerror)) return FALSE; if (!g_output_stream_close (G_OUTPUT_STREAM (output), NULL, ioerror)) return FALSE; } return !caught_error; } 0707010007ffb2000041ed0000000000000000000000024f83d34200000000000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/gobject-introspection-1.0/tests0707010007ffb6000081a40000000000000000000000014f83d2e700009aa5000000b600010002ffffffffffffffff0000004a00000000root/usr/local/share/gobject-introspection-1.0/tests/gimarshallingtests.h/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- * vim: tabstop=4 shiftwidth=4 expandtab */ #include #ifndef __GI_MARSHALLING_TESTS_H__ #define __GI_MARSHALLING_TESTS_H__ typedef struct _GIMarshallingTestsSimpleStruct GIMarshallingTestsSimpleStruct; typedef struct _GIMarshallingTestsBoxedStruct GIMarshallingTestsBoxedStruct; /* Constants */ #define GI_MARSHALLING_TESTS_CONSTANT_NUMBER 42 #define GI_MARSHALLING_TESTS_CONSTANT_UTF8 "const \xe2\x99\xa5 utf8" /* Booleans */ 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_out_true (gboolean *bool_); void gi_marshalling_tests_boolean_out_false (gboolean *bool_); void gi_marshalling_tests_boolean_inout_true_false (gboolean *bool_); void gi_marshalling_tests_boolean_inout_false_true (gboolean *bool_); /* Integers */ 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_out_max (gint8 *int8); void gi_marshalling_tests_int8_out_min (gint8 *int8); void gi_marshalling_tests_int8_inout_max_min (gint8 *int8); void gi_marshalling_tests_int8_inout_min_max (gint8 *int8); guint8 gi_marshalling_tests_uint8_return (void); void gi_marshalling_tests_uint8_in (guint8 uint8); void gi_marshalling_tests_uint8_out (guint8 *uint8); void gi_marshalling_tests_uint8_inout (guint8 *uint8); 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_out_max (gint16 *int16); void gi_marshalling_tests_int16_out_min (gint16 *int16); void gi_marshalling_tests_int16_inout_max_min (gint16 *int16); void gi_marshalling_tests_int16_inout_min_max (gint16 *int16); guint16 gi_marshalling_tests_uint16_return (void); void gi_marshalling_tests_uint16_in (guint16 uint16); void gi_marshalling_tests_uint16_out (guint16 *uint16); void gi_marshalling_tests_uint16_inout (guint16 *uint16); 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_out_max (gint32 *int32); void gi_marshalling_tests_int32_out_min (gint32 *int32); void gi_marshalling_tests_int32_inout_max_min (gint32 *int32); void gi_marshalling_tests_int32_inout_min_max (gint32 *int32); guint32 gi_marshalling_tests_uint32_return (void); void gi_marshalling_tests_uint32_in (guint32 uint32); void gi_marshalling_tests_uint32_out (guint32 *uint32); void gi_marshalling_tests_uint32_inout (guint32 *uint32); 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_out_max (gint64 *int64); void gi_marshalling_tests_int64_out_min (gint64 *int64); void gi_marshalling_tests_int64_inout_max_min (gint64 *int64); void gi_marshalling_tests_int64_inout_min_max (gint64 *int64); guint64 gi_marshalling_tests_uint64_return (void); void gi_marshalling_tests_uint64_in (guint64 uint64); void gi_marshalling_tests_uint64_out (guint64 *uint64); void gi_marshalling_tests_uint64_inout (guint64 *uint64); gshort gi_marshalling_tests_short_return_max (void); gshort gi_marshalling_tests_short_return_min (void); void gi_marshalling_tests_short_in_max (gshort short_); void gi_marshalling_tests_short_in_min (gshort short_); void gi_marshalling_tests_short_out_max (gshort *short_); void gi_marshalling_tests_short_out_min (gshort *short_); void gi_marshalling_tests_short_inout_max_min (gshort *short_); void gi_marshalling_tests_short_inout_min_max (gshort *short_); gushort gi_marshalling_tests_ushort_return (void); void gi_marshalling_tests_ushort_in (gushort ushort_); void gi_marshalling_tests_ushort_out (gushort *ushort_); void gi_marshalling_tests_ushort_inout (gushort *ushort_); gint gi_marshalling_tests_int_return_max (void); gint gi_marshalling_tests_int_return_min (void); void gi_marshalling_tests_int_in_max (gint int_); void gi_marshalling_tests_int_in_min (gint int_); void gi_marshalling_tests_int_out_max (gint *int_); void gi_marshalling_tests_int_out_min (gint *int_); void gi_marshalling_tests_int_inout_max_min (gint *int_); void gi_marshalling_tests_int_inout_min_max (gint *int_); guint gi_marshalling_tests_uint_return (void); void gi_marshalling_tests_uint_in (guint uint_); void gi_marshalling_tests_uint_out (guint *uint_); void gi_marshalling_tests_uint_inout (guint *uint_); glong gi_marshalling_tests_long_return_max (void); glong gi_marshalling_tests_long_return_min (void); void gi_marshalling_tests_long_in_max (glong long_); void gi_marshalling_tests_long_in_min (glong long_); void gi_marshalling_tests_long_out_max (glong *long_); void gi_marshalling_tests_long_out_min (glong *long_); void gi_marshalling_tests_long_inout_max_min (glong *long_); void gi_marshalling_tests_long_inout_min_max (glong *long_); gulong gi_marshalling_tests_ulong_return (void); void gi_marshalling_tests_ulong_in (gulong ulong_); void gi_marshalling_tests_ulong_out (gulong *ulong_); void gi_marshalling_tests_ulong_inout (gulong *ulong_); gssize gi_marshalling_tests_ssize_return_max (void); gssize gi_marshalling_tests_ssize_return_min (void); void gi_marshalling_tests_ssize_in_max (gssize ssize); void gi_marshalling_tests_ssize_in_min (gssize ssize); void gi_marshalling_tests_ssize_out_max (gssize *ssize); void gi_marshalling_tests_ssize_out_min (gssize *ssize); void gi_marshalling_tests_ssize_inout_max_min (gssize *ssize); void gi_marshalling_tests_ssize_inout_min_max (gssize *ssize); gsize gi_marshalling_tests_size_return (void); void gi_marshalling_tests_size_in (gsize size); void gi_marshalling_tests_size_out (gsize *size); void gi_marshalling_tests_size_inout (gsize *size); /* Floating-point */ gfloat gi_marshalling_tests_float_return (void); void gi_marshalling_tests_float_in (gfloat float_); void gi_marshalling_tests_float_out (gfloat *float_); void gi_marshalling_tests_float_inout (gfloat *float_); gdouble gi_marshalling_tests_double_return (void); void gi_marshalling_tests_double_in (gdouble double_); void gi_marshalling_tests_double_out (gdouble *double_); void gi_marshalling_tests_double_inout (gdouble *double_); /* 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_out (time_t *time_t_); void gi_marshalling_tests_time_t_inout (time_t *time_t_); /* GType */ GType gi_marshalling_tests_gtype_return (void); GType gi_marshalling_tests_gtype_string_return (void); void gi_marshalling_tests_gtype_in (GType gtype); void gi_marshalling_tests_gtype_string_in (GType gtype); void gi_marshalling_tests_gtype_out (GType *gtype); void gi_marshalling_tests_gtype_string_out (GType *gtype); void gi_marshalling_tests_gtype_inout (GType *gtype); /* UTF-8 */ const gchar *gi_marshalling_tests_utf8_none_return (void); gchar *gi_marshalling_tests_utf8_full_return (void); void gi_marshalling_tests_utf8_none_in (const gchar *utf8); void gi_marshalling_tests_utf8_full_in (gchar *utf8); void gi_marshalling_tests_utf8_none_out (gchar **utf8); void gi_marshalling_tests_utf8_full_out (gchar **utf8); void gi_marshalling_tests_utf8_dangling_out (gchar **utf8); void gi_marshalling_tests_utf8_none_inout (gchar **utf8); void gi_marshalling_tests_utf8_full_inout (gchar **utf8); GSList *gi_marshalling_tests_filename_list_return (void); /* Enum */ typedef enum { GI_MARSHALLING_TESTS_ENUM_VALUE1, GI_MARSHALLING_TESTS_ENUM_VALUE2, GI_MARSHALLING_TESTS_ENUM_VALUE3 = 42 } GIMarshallingTestsEnum; typedef enum { GI_MARSHALLING_TESTS_SECOND_ENUM_SECONDVALUE1, GI_MARSHALLING_TESTS_SECOND_ENUM_SECONDVALUE2, } GIMarshallingTestsSecondEnum; GIMarshallingTestsEnum gi_marshalling_tests_enum_returnv (void); void gi_marshalling_tests_enum_in (GIMarshallingTestsEnum enum_); void gi_marshalling_tests_enum_out (GIMarshallingTestsEnum *enum_); void gi_marshalling_tests_enum_inout (GIMarshallingTestsEnum *enum_); /* GEnum */ typedef enum { GI_MARSHALLING_TESTS_GENUM_VALUE1, GI_MARSHALLING_TESTS_GENUM_VALUE2, GI_MARSHALLING_TESTS_GENUM_VALUE3 = 42 } GIMarshallingTestsGEnum; GType gi_marshalling_tests_genum_get_type (void) G_GNUC_CONST; #define GI_MARSHALLING_TESTS_TYPE_GENUM (gi_marshalling_tests_genum_get_type ()) GIMarshallingTestsEnum gi_marshalling_tests_genum_returnv (void); void gi_marshalling_tests_genum_in (GIMarshallingTestsGEnum enum_); void gi_marshalling_tests_genum_out (GIMarshallingTestsGEnum *enum_); void gi_marshalling_tests_genum_inout (GIMarshallingTestsGEnum *enum_); /* GFlags */ typedef enum { GI_MARSHALLING_TESTS_FLAGS_VALUE1 = 1 << 0, GI_MARSHALLING_TESTS_FLAGS_VALUE2 = 1 << 1, GI_MARSHALLING_TESTS_FLAGS_VALUE3 = 1 << 2, GI_MARSHALLING_TESTS_FLAGS_MASK = GI_MARSHALLING_TESTS_FLAGS_VALUE1 | GI_MARSHALLING_TESTS_FLAGS_VALUE2, GI_MARSHALLING_TESTS_FLAGS_MASK2 = GI_MARSHALLING_TESTS_FLAGS_MASK } GIMarshallingTestsFlags; GType gi_marshalling_tests_flags_get_type (void) G_GNUC_CONST; #define GI_MARSHALLING_TESTS_TYPE_FLAGS (gi_marshalling_tests_flags_get_type ()) 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_out (GIMarshallingTestsFlags *flags_); void gi_marshalling_tests_flags_inout (GIMarshallingTestsFlags *flags_); /* Flags with no GType */ typedef enum { GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE1 = 1 << 0, GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2 = 1 << 1, GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE3 = 1 << 2, GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_MASK = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE1 | GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2, GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_MASK2 = GI_MARSHALLING_TESTS_FLAGS_MASK } GIMarshallingTestsNoTypeFlags; 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_out (GIMarshallingTestsNoTypeFlags *flags_); void gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *flags_); /* Arrays */ gboolean gi_marshalling_tests_init_function (gint *n_args, char ***argv); /* Fixed-size */ const gint *gi_marshalling_tests_array_fixed_int_return (void); const gshort *gi_marshalling_tests_array_fixed_short_return (void); void gi_marshalling_tests_array_fixed_int_in (const gint *ints); void gi_marshalling_tests_array_fixed_short_in (const gshort *shorts); void gi_marshalling_tests_array_fixed_out (gint **ints); void gi_marshalling_tests_array_fixed_out_struct (GIMarshallingTestsSimpleStruct **structs); void gi_marshalling_tests_array_fixed_inout (gint **ints); /* Variable-size */ const gint *gi_marshalling_tests_array_return (gint *length); const gint *gi_marshalling_tests_array_return_etc (gint first, gint *length, gint last, gint *sum); void gi_marshalling_tests_array_in (const gint *ints, gint length); void 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); 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_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); void gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *_enum, gint length); void 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); void 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); void 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); /* Zero-terminated */ gchar **gi_marshalling_tests_array_zero_terminated_return (void); gchar **gi_marshalling_tests_array_zero_terminated_return_null (void); GIMarshallingTestsBoxedStruct **gi_marshalling_tests_array_zero_terminated_return_struct (void); void gi_marshalling_tests_array_zero_terminated_in (gchar **utf8s); void gi_marshalling_tests_array_zero_terminated_out (gchar ***utf8s); void gi_marshalling_tests_array_zero_terminated_inout (gchar ***utf8s); GVariant **gi_marshalling_tests_array_gvariant_none_in (GVariant **variants); GVariant **gi_marshalling_tests_array_gvariant_container_in (GVariant **variants); GVariant **gi_marshalling_tests_array_gvariant_full_in (GVariant **variants); /* GArray */ GArray *gi_marshalling_tests_garray_int_none_return (void); GArray *gi_marshalling_tests_garray_utf8_none_return (void); GArray *gi_marshalling_tests_garray_utf8_container_return (void); GArray *gi_marshalling_tests_garray_utf8_full_return (void); void gi_marshalling_tests_garray_int_none_in (GArray *array_); 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_none_inout (GArray **array_); void gi_marshalling_tests_garray_utf8_container_inout (GArray **array_); void gi_marshalling_tests_garray_utf8_full_inout (GArray **array_); /* GPtrArray */ GPtrArray *gi_marshalling_tests_gptrarray_utf8_none_return (void); GPtrArray *gi_marshalling_tests_gptrarray_utf8_container_return (void); GPtrArray *gi_marshalling_tests_gptrarray_utf8_full_return (void); void gi_marshalling_tests_gptrarray_utf8_none_in (GPtrArray *parray_); void gi_marshalling_tests_gptrarray_utf8_none_out (GPtrArray **parray_); void gi_marshalling_tests_gptrarray_utf8_container_out (GPtrArray **parray_); void gi_marshalling_tests_gptrarray_utf8_full_out (GPtrArray **parray_); void gi_marshalling_tests_gptrarray_utf8_none_inout (GPtrArray **parray_); void gi_marshalling_tests_gptrarray_utf8_container_inout (GPtrArray **parray_); 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_); /* GStrv */ GStrv gi_marshalling_tests_gstrv_return (void); void gi_marshalling_tests_gstrv_in (GStrv g_strv); void gi_marshalling_tests_gstrv_out (GStrv *g_strv); void gi_marshalling_tests_gstrv_inout (GStrv *g_strv); /* GList */ GList *gi_marshalling_tests_glist_int_none_return (void); GList *gi_marshalling_tests_glist_utf8_none_return (void); GList *gi_marshalling_tests_glist_utf8_container_return (void); GList *gi_marshalling_tests_glist_utf8_full_return (void); void gi_marshalling_tests_glist_int_none_in (GList *list); void gi_marshalling_tests_glist_utf8_none_in (GList *list); void gi_marshalling_tests_glist_utf8_none_out (GList **list); void gi_marshalling_tests_glist_utf8_container_out (GList **list); void gi_marshalling_tests_glist_utf8_full_out (GList **list); void gi_marshalling_tests_glist_utf8_none_inout (GList **list); void gi_marshalling_tests_glist_utf8_container_inout (GList **list); void gi_marshalling_tests_glist_utf8_full_inout (GList **list); /* GSList */ GSList *gi_marshalling_tests_gslist_int_none_return (void); GSList *gi_marshalling_tests_gslist_utf8_none_return (void); GSList *gi_marshalling_tests_gslist_utf8_container_return (void); GSList *gi_marshalling_tests_gslist_utf8_full_return (void); void gi_marshalling_tests_gslist_int_none_in (GSList *list); void gi_marshalling_tests_gslist_utf8_none_in (GSList *list); void gi_marshalling_tests_gslist_utf8_none_out (GSList **list); void gi_marshalling_tests_gslist_utf8_container_out (GSList **list); void gi_marshalling_tests_gslist_utf8_full_out (GSList **list); void gi_marshalling_tests_gslist_utf8_none_inout (GSList **list); void gi_marshalling_tests_gslist_utf8_container_inout (GSList **list); void gi_marshalling_tests_gslist_utf8_full_inout (GSList **list); /* GHashTable */ GHashTable *gi_marshalling_tests_ghashtable_int_none_return (void); GHashTable *gi_marshalling_tests_ghashtable_utf8_none_return (void); GHashTable *gi_marshalling_tests_ghashtable_utf8_container_return (void); GHashTable *gi_marshalling_tests_ghashtable_utf8_full_return (void); void gi_marshalling_tests_ghashtable_int_none_in (GHashTable *hash_table); void gi_marshalling_tests_ghashtable_utf8_none_in (GHashTable *hash_table); void gi_marshalling_tests_ghashtable_utf8_container_in (GHashTable *hash_table); void gi_marshalling_tests_ghashtable_utf8_full_in (GHashTable *hash_table); void gi_marshalling_tests_ghashtable_utf8_none_out (GHashTable **hash_table); void gi_marshalling_tests_ghashtable_utf8_container_out (GHashTable **hash_table); void gi_marshalling_tests_ghashtable_utf8_full_out (GHashTable **hash_table); void gi_marshalling_tests_ghashtable_utf8_none_inout (GHashTable **hash_table); void gi_marshalling_tests_ghashtable_utf8_container_inout (GHashTable **hash_table); void gi_marshalling_tests_ghashtable_utf8_full_inout (GHashTable **hash_table); /* GValue */ GValue *gi_marshalling_tests_gvalue_return (void); void gi_marshalling_tests_gvalue_in (GValue *value); void gi_marshalling_tests_gvalue_in_with_type (GValue *value, GType type); void gi_marshalling_tests_gvalue_in_enum (GValue *value); void gi_marshalling_tests_gvalue_out (GValue **value); void gi_marshalling_tests_gvalue_inout (GValue **value); void gi_marshalling_tests_gvalue_flat_array (guint n_values, const GValue *values); GValue *gi_marshalling_tests_return_gvalue_flat_array (void); GValue *gi_marshalling_tests_gvalue_flat_array_round_trip (const GValue one, const GValue two, const GValue three); /* GClosure */ void gi_marshalling_tests_gclosure_in (GClosure *closure); GClosure *gi_marshalling_tests_gclosure_return (void); /* Callback return values */ /** * GIMarshallingTestsCallbackReturnValueOnly: */ typedef glong (* GIMarshallingTestsCallbackReturnValueOnly) (); glong gi_marshalling_tests_callback_return_value_only (GIMarshallingTestsCallbackReturnValueOnly callback); /** * GIMarshallingTestsCallbackOneOutParameter: * @a: (out): */ typedef void (* GIMarshallingTestsCallbackOneOutParameter) (gfloat *a); void gi_marshalling_tests_callback_one_out_parameter (GIMarshallingTestsCallbackOneOutParameter callback, gfloat *a); /** * GIMarshallingTestsCallbackMultipleOutParameters: * @a: (out): * @b: (out): */ typedef void (* GIMarshallingTestsCallbackMultipleOutParameters) (gfloat *a, gfloat *b); void gi_marshalling_tests_callback_multiple_out_parameters (GIMarshallingTestsCallbackMultipleOutParameters callback, gfloat *a, gfloat *b); /** * GIMarshallingTestsCallbackReturnValueAndOneOutParameter: * @a: (out): */ typedef glong (* GIMarshallingTestsCallbackReturnValueAndOneOutParameter) (glong *a); glong gi_marshalling_tests_callback_return_value_and_one_out_parameter (GIMarshallingTestsCallbackReturnValueAndOneOutParameter callback, glong *a); /** * GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters: * @a: (out): * @b: (out): */ typedef glong (* GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters) (glong *a, glong *b); glong gi_marshalling_tests_callback_return_value_and_multiple_out_parameters (GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters callback, glong *a, glong *b); /* Pointer */ gpointer gi_marshalling_tests_pointer_in_return (gpointer pointer); /* Structure */ struct _GIMarshallingTestsSimpleStruct { glong long_; gint8 int8; }; typedef struct { GIMarshallingTestsSimpleStruct simple_struct; } GIMarshallingTestsNestedStruct; typedef struct { GIMarshallingTestsNestedStruct *pointer; } GIMarshallingTestsNotSimpleStruct; GIMarshallingTestsSimpleStruct *gi_marshalling_tests_simple_struct_returnv (void); void gi_marshalling_tests_simple_struct_inv (GIMarshallingTestsSimpleStruct *struct_); void gi_marshalling_tests_simple_struct_method (GIMarshallingTestsSimpleStruct *struct_); typedef struct { glong long_; } GIMarshallingTestsPointerStruct; GType gi_marshalling_tests_pointer_struct_get_type (void) G_GNUC_CONST; GIMarshallingTestsPointerStruct *gi_marshalling_tests_pointer_struct_returnv (void); void gi_marshalling_tests_pointer_struct_inv (GIMarshallingTestsPointerStruct *struct_); struct _GIMarshallingTestsBoxedStruct { glong long_; GStrv g_strv; }; GType gi_marshalling_tests_boxed_struct_get_type (void) G_GNUC_CONST; GIMarshallingTestsBoxedStruct *gi_marshalling_tests_boxed_struct_new (void); GIMarshallingTestsBoxedStruct *gi_marshalling_tests_boxed_struct_returnv (void); void gi_marshalling_tests_boxed_struct_inv (GIMarshallingTestsBoxedStruct *struct_); void gi_marshalling_tests_boxed_struct_out (GIMarshallingTestsBoxedStruct **struct_); void gi_marshalling_tests_boxed_struct_inout (GIMarshallingTestsBoxedStruct **struct_); typedef union { glong long_; } GIMarshallingTestsUnion; GType gi_marshalling_tests_union_get_type (void) G_GNUC_CONST; GIMarshallingTestsUnion *gi_marshalling_tests_union_returnv (void); void gi_marshalling_tests_union_inv (GIMarshallingTestsUnion *union_); void gi_marshalling_tests_union_out (GIMarshallingTestsUnion **union_); void gi_marshalling_tests_union_inout (GIMarshallingTestsUnion **union_); void gi_marshalling_tests_union_method (GIMarshallingTestsUnion *union_); /* Object */ #define GI_MARSHALLING_TESTS_TYPE_OBJECT (gi_marshalling_tests_object_get_type ()) #define GI_MARSHALLING_TESTS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_OBJECT, GIMarshallingTestsObject)) #define GI_MARSHALLING_TESTS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_OBJECT, GIMarshallingTestsObjectClass)) #define GI_MARSHALLING_TESTS_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_OBJECT)) #define GI_MARSHALLING_TESTS_IS_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_OBJECT)) #define GI_MARSHALLING_TESTS_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_OBJECT, GIMarshallingTestsObjectClass)) typedef struct _GIMarshallingTestsObjectClass GIMarshallingTestsObjectClass; typedef struct _GIMarshallingTestsObject GIMarshallingTestsObject; struct _GIMarshallingTestsObjectClass { GObjectClass parent_class; /** * GIMarshallingTestsObjectClass::method_int8_in: * @in: (in): */ void (* method_int8_in) (GIMarshallingTestsObject *self, gint8 in); /** * GIMarshallingTestsObjectClass::method_int8_out: * @out: (out): */ void (* method_int8_out) (GIMarshallingTestsObject *self, gint8 *out); /** * GIMarshallingTestsObjectClass::method_with_default_implementation: * @in: (in): */ void (* method_with_default_implementation) (GIMarshallingTestsObject *self, gint8 in); /** * GIMarshallingTestsObjectClass::method_deep_hierarchy: * @in: (in): */ void (* method_deep_hierarchy) (GIMarshallingTestsObject *self, gint8 in); /** * GIMarshallingTestsObjectClass::vfunc_return_value_only: */ glong (* vfunc_return_value_only) (GIMarshallingTestsObject *self); /** * GIMarshallingTestsObjectClass::vfunc_one_out_parameter: * @a: (out): */ void (* vfunc_one_out_parameter) (GIMarshallingTestsObject *self, gfloat *a); /** * GIMarshallingTestsObjectClass::vfunc_multiple_out_parameters: * @a: (out): * @b: (out): */ void (* vfunc_multiple_out_parameters) (GIMarshallingTestsObject *self, gfloat *a, gfloat *b); /** * GIMarshallingTestsObjectClass::vfunc_return_value_and_one_out_parameter: * @a: (out): */ glong (* vfunc_return_value_and_one_out_parameter) (GIMarshallingTestsObject *self, glong *a); /** * GIMarshallingTestsObjectClass::vfunc_return_value_and_multiple_out_parameters: * @a: (out): * @b: (out): */ glong (* vfunc_return_value_and_multiple_out_parameters) (GIMarshallingTestsObject *self, glong *a, glong *b); /** * GIMarshallingTestsObjectClass::vfunc_meth_with_err: * @x: * @error: A #GError */ gboolean (*vfunc_meth_with_err) (GIMarshallingTestsObject *object, gint x, GError **error); }; struct _GIMarshallingTestsObject { GObject parent_instance; gint int_; }; GType gi_marshalling_tests_object_get_type (void) G_GNUC_CONST; void gi_marshalling_tests_object_static_method (void); void gi_marshalling_tests_object_method (GIMarshallingTestsObject *object); void gi_marshalling_tests_object_overridden_method (GIMarshallingTestsObject *object); GIMarshallingTestsObject *gi_marshalling_tests_object_new (gint int_); void gi_marshalling_tests_object_method_array_in (GIMarshallingTestsObject *object, const gint *ints, gint length); void gi_marshalling_tests_object_method_array_out (GIMarshallingTestsObject *object, gint **ints, gint *length); void gi_marshalling_tests_object_method_array_inout (GIMarshallingTestsObject *object, gint **ints, gint *length); const gint *gi_marshalling_tests_object_method_array_return (GIMarshallingTestsObject *object, gint *length); 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_with_default_implementation (GIMarshallingTestsObject *object, gint8 in); glong gi_marshalling_tests_object_vfunc_return_value_only (GIMarshallingTestsObject *self); 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); 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); GIMarshallingTestsObject *gi_marshalling_tests_object_none_return (void); GIMarshallingTestsObject *gi_marshalling_tests_object_full_return (void); void gi_marshalling_tests_object_none_in (GIMarshallingTestsObject *object); void gi_marshalling_tests_object_full_in (GIMarshallingTestsObject *object); void gi_marshalling_tests_object_none_out (GIMarshallingTestsObject **object); 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); #define GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT (gi_marshalling_tests_sub_object_get_type ()) #define GI_MARSHALLING_TESTS_SUB_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT, GIMarshallingTestsSubObject)) #define GI_MARSHALLING_TESTS_SUB_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT, GIMarshallingTestsSubObjectClass)) #define GI_MARSHALLING_TESTS_IS_SUB_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT)) #define GI_MARSHALLING_TESTS_IS_SUB_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT)) #define GI_MARSHALLING_TESTS_SUB_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_OBJECT, GIMarshallingTestsSubObjectClass)) typedef struct _GIMarshallingTestsSubObjectClass GIMarshallingTestsSubObjectClass; typedef struct _GIMarshallingTestsSubObject GIMarshallingTestsSubObject; struct _GIMarshallingTestsSubObjectClass { GIMarshallingTestsObjectClass parent_class; }; struct _GIMarshallingTestsSubObject { GIMarshallingTestsObject parent_instance; }; GType gi_marshalling_tests_sub_object_get_type (void) G_GNUC_CONST; void gi_marshalling_tests_sub_object_sub_method (GIMarshallingTestsSubObject *object); void gi_marshalling_tests_sub_object_overwritten_method (GIMarshallingTestsSubObject *object); #define GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT (gi_marshalling_tests_sub_sub_object_get_type ()) #define GI_MARSHALLING_TESTS_SUB_SUB_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT, GIMarshallingTestsSubSubObject)) #define GI_MARSHALLING_TESTS_SUB_SUB_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT, GIMarshallingTestsSubSubObjectClass)) #define GI_MARSHALLING_TESTS_IS_SUB_SUB_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT)) #define GI_MARSHALLING_TESTS_IS_SUB_SUB_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT)) #define GI_MARSHALLING_TESTS_SUB_SUB_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_SUB_SUB_OBJECT, GIMarshallingTestsSubSubObjectClass)) typedef struct _GIMarshallingTestsSubSubObjectClass GIMarshallingTestsSubSubObjectClass; typedef struct _GIMarshallingTestsSubSubObject GIMarshallingTestsSubSubObject; struct _GIMarshallingTestsSubSubObjectClass { GIMarshallingTestsSubObjectClass parent_class; }; struct _GIMarshallingTestsSubSubObject { GIMarshallingTestsSubObject parent_instance; }; GType gi_marshalling_tests_sub_sub_object_get_type (void) G_GNUC_CONST; /* Interfaces */ #define GI_MARSHALLING_TESTS_TYPE_INTERFACE (gi_marshalling_tests_interface_get_type ()) #define GI_MARSHALLING_TESTS_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE, GIMarshallingTestsInterface)) #define GI_MARSHALLING_TESTS_IS_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE)) #define GI_MARSHALLING_TESTS_INTERFACE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GI_MARSHALLING_TESTS_TYPE_INTERFACE, GIMarshallingTestsInterfaceIface)) typedef struct _GIMarshallingTestsInterface GIMarshallingTestsInterface; typedef struct _GIMarshallingTestsInterfaceIface GIMarshallingTestsInterfaceIface; struct _GIMarshallingTestsInterfaceIface { GTypeInterface base_iface; /** * GIMarshallingTestsInterfaceIface::test_int8_in: * @in: (in): */ void (* test_int8_in) (GIMarshallingTestsInterface *self, gint8 in); }; GType gi_marshalling_tests_interface_get_type (void) G_GNUC_CONST; void gi_marshalling_tests_interface_test_int8_in (GIMarshallingTestsInterface *self, gint8 in); void gi_marshalling_tests_test_interface_test_int8_in (GIMarshallingTestsInterface *test_iface, gint8 in); /* GIMarshallingTestsInterface2 allows us testing vfunc clashes when a class' vfunc implementation ambiguously relates to its prototype */ #define GI_MARSHALLING_TESTS_TYPE_INTERFACE2 (gi_marshalling_tests_interface2_get_type ()) #define GI_MARSHALLING_TESTS_INTERFACE2(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE2, GIMarshallingTestsInterface2)) #define GI_MARSHALLING_TESTS_IS_INTERFACE2(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GI_MARSHALLING_TESTS_TYPE_INTERFACE2)) #define GI_MARSHALLING_TESTS_INTERFACE2_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE2 ((obj), GI_MARSHALLING_TESTS_TYPE_INTERFACE2, GIMarshallingTestsInterface2Iface)) typedef struct _GIMarshallingTestsInterface2 GIMarshallingTestsInterface2; typedef struct _GIMarshallingTestsInterface2Iface GIMarshallingTestsInterface2Iface; struct _GIMarshallingTestsInterface2Iface { GTypeInterface base_iface; /** * GIMarshallingTestsInterface2Iface::test_int8_in: * @in: (in): */ void (* test_int8_in) (GIMarshallingTestsInterface2 *self, gint8 in); }; GType gi_marshalling_tests_interface2_get_type (void) G_GNUC_CONST; /* Multiple output arguments */ void gi_marshalling_tests_int_out_out (gint *int0, gint *int1); void gi_marshalling_tests_int_three_in_three_out(gint a, gint b, gint c, gint *out0, gint *out1, gint *out2); gint gi_marshalling_tests_int_return_out (gint *int_); /* GError */ #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_DOMAIN "gi-marshalling-tests-gerror-domain" #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_CODE 5 #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_MESSAGE "gi-marshalling-tests-gerror-message" #define GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE "we got an error, life is shit" void gi_marshalling_tests_gerror(GError **error); void gi_marshalling_tests_gerror_array_in(gint *in_ints, GError **error); void gi_marshalling_tests_gerror_out(GError **error, gchar **debug); void gi_marshalling_tests_gerror_out_transfer_none(GError **err, const gchar **debug); GError *gi_marshalling_tests_gerror_return(void); /* Overrides */ #define GI_MARSHALLING_TESTS_OVERRIDES_CONSTANT 42 typedef struct { glong long_; } GIMarshallingTestsOverridesStruct; GType gi_marshalling_tests_overrides_struct_get_type (void) G_GNUC_CONST; GIMarshallingTestsOverridesStruct *gi_marshalling_tests_overrides_struct_new (void); glong gi_marshalling_tests_overrides_struct_method (GIMarshallingTestsOverridesStruct *struct_); GIMarshallingTestsOverridesStruct *gi_marshalling_tests_overrides_struct_returnv (void); #define GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT (gi_marshalling_tests_overrides_object_get_type ()) #define GI_MARSHALLING_TESTS_OVERRIDES_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, GIMarshallingTestsOverridesObject)) #define GI_MARSHALLING_TESTS_OVERRIDES_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, GIMarshallingTestsOverridesObjectClass)) #define GI_MARSHALLING_TESTS_IS_OVERRIDES_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT)) #define GI_MARSHALLING_TESTS_IS_OVERRIDES_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT)) #define GI_MARSHALLING_TESTS_OVERRIDES_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, GIMarshallingTestsOverridesObjectClass)) typedef struct _GIMarshallingTestsOverridesObjectClass GIMarshallingTestsOverridesObjectClass; typedef struct _GIMarshallingTestsOverridesObject GIMarshallingTestsOverridesObject; struct _GIMarshallingTestsOverridesObjectClass { GObjectClass parent_class; }; struct _GIMarshallingTestsOverridesObject { GObject parent_instance; glong long_; }; GType gi_marshalling_tests_overrides_object_get_type (void) G_GNUC_CONST; GIMarshallingTestsOverridesObject *gi_marshalling_tests_overrides_object_new (void); glong gi_marshalling_tests_overrides_object_method (GIMarshallingTestsOverridesObject *object); GIMarshallingTestsOverridesObject *gi_marshalling_tests_overrides_object_returnv (void); /* Properties Object */ #define GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT (gi_marshalling_tests_properties_object_get_type ()) #define GI_MARSHALLING_TESTS_PROPERTIES_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, GIMarshallingTestsPropertiesObject)) #define GI_MARSHALLING_TESTS_PROPERTIES_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, GIMarshallingTestsPropertiesObjectClass)) #define GI_MARSHALLING_TESTS_IS_PROPERTIES_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT)) #define GI_MARSHALLING_TESTS_IS_PROPERTIES_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT)) #define GI_MARSHALLING_TESTS_PROPERTIES_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, GIMarshallingTestsPropertiesObjectClass)) typedef struct _GIMarshallingTestsPropertiesObject GIMarshallingTestsPropertiesObject; typedef struct _GIMarshallingTestsPropertiesObjectClass GIMarshallingTestsPropertiesObjectClass; struct _GIMarshallingTestsPropertiesObject { GObject parent_instance; gboolean some_boolean; gchar some_char; guchar some_uchar; gint some_int; guint some_uint; glong some_long; gulong some_ulong; gint64 some_int64; guint64 some_uint64; gfloat some_float; gdouble some_double; }; struct _GIMarshallingTestsPropertiesObjectClass { GObjectClass parent_class; }; GType gi_marshalling_tests_properties_object_get_type (void) G_GNUC_CONST; GIMarshallingTestsPropertiesObject *gi_marshalling_tests_properties_object_new (void); #endif /* _GI_MARSHALLING_TESTS_H_ */ 0707010007ffb8000081a40000000000000000000000014f83d2e7000070f5000000b600010002ffffffffffffffff0000003f00000000root/usr/local/share/gobject-introspection-1.0/tests/regress.h#ifndef __GITESTTYPES_H__ #define __GITESTTYPES_H__ #include #include #include #include void regress_set_abort_on_error (gboolean abort_on_error); /* basic types */ gboolean regress_test_boolean (gboolean in); gboolean regress_test_boolean_true (gboolean in); gboolean regress_test_boolean_false (gboolean in); gint8 regress_test_int8 (gint8 in); guint8 regress_test_uint8 (guint8 in); gint16 regress_test_int16 (gint16 in); guint16 regress_test_uint16 (guint16 in); gint32 regress_test_int32 (gint32 in); guint32 regress_test_uint32 (guint32 in); gint64 regress_test_int64 (gint64 in); guint64 regress_test_uint64 (guint64 in); gshort regress_test_short (gshort in); gushort regress_test_ushort (gushort in); gint regress_test_int (gint in); guint regress_test_uint (guint in); glong regress_test_long (glong in); gulong regress_test_ulong (gulong in); gssize regress_test_ssize (gssize in); gsize regress_test_size (gsize in); gfloat regress_test_float (gfloat in); gdouble regress_test_double (gdouble in); gunichar regress_test_unichar (gunichar in); time_t regress_test_timet (time_t in); GType regress_test_gtype (GType in); /* utf8 */ const char *regress_test_utf8_const_return (void); char *regress_test_utf8_nonconst_return (void); void regress_test_utf8_const_in (const char *in); void regress_test_utf8_out (char **out); void regress_test_utf8_inout (char **inout); GSList *regress_test_filename_return (void); void regress_test_utf8_null_in (char *in); void regress_test_utf8_null_out (char **char_out); /* in arguments after out arguments */ void regress_test_int_out_utf8 (int *length, const char *in); /* multiple output arguments */ void regress_test_multi_double_args (gdouble in, gdouble *one, gdouble *two); void regress_test_utf8_out_out (char **out0, char **out1); char *regress_test_utf8_out_nonconst_return (char **out); /* non-basic-types */ /* array */ gboolean regress_test_strv_in (char **arr); int regress_test_array_int_in (int n_ints, int *ints); void regress_test_array_int_out (int *n_ints, int **ints); void regress_test_array_int_inout (int *n_ints, int **ints); int regress_test_array_gint8_in (int n_ints, gint8 *ints); int regress_test_array_gint16_in (int n_ints, gint16 *ints); gint32 regress_test_array_gint32_in (int n_ints, gint32 *ints); gint64 regress_test_array_gint64_in (int n_ints, gint64 *ints); char *regress_test_array_gtype_in (int n_types, GType *types); char **regress_test_strv_out_container (void); char **regress_test_strv_out (void); const char * const * regress_test_strv_out_c (void); void regress_test_strv_outarg (char ***retp); int regress_test_array_fixed_size_int_in (int *ints); void regress_test_array_fixed_size_int_out (int **ints); int *regress_test_array_fixed_size_int_return (void); /* transfer tests */ int *regress_test_array_int_full_out(int *len); int *regress_test_array_int_none_out(int *len); void regress_test_array_int_null_in (int *arr, int len); void regress_test_array_int_null_out (int **arr, int *len); /* interface */ /* GList */ const GList *regress_test_glist_nothing_return (void); GList *regress_test_glist_nothing_return2 (void); GList *regress_test_glist_container_return (void); GList *regress_test_glist_everything_return (void); void regress_test_glist_nothing_in (const GList *in); void regress_test_glist_nothing_in2 (GList *in); void regress_test_glist_null_in(GSList *in); void regress_test_glist_null_out(GSList **out_list); /* GSList */ const GSList *regress_test_gslist_nothing_return (void); GSList *regress_test_gslist_nothing_return2 (void); GSList *regress_test_gslist_container_return (void); GSList *regress_test_gslist_everything_return (void); void regress_test_gslist_nothing_in (const GSList *in); void regress_test_gslist_nothing_in2 (GSList *in); void regress_test_gslist_null_in(GSList *in); void regress_test_gslist_null_out(GSList **out_list); /* GHashTable */ const GHashTable *regress_test_ghash_null_return (void); const GHashTable *regress_test_ghash_nothing_return (void); GHashTable *regress_test_ghash_nothing_return2 (void); GHashTable *regress_test_ghash_container_return (void); GHashTable *regress_test_ghash_everything_return (void); void regress_test_ghash_null_in (const GHashTable *in); void regress_test_ghash_null_out (const GHashTable **out); void regress_test_ghash_nothing_in (const GHashTable *in); void regress_test_ghash_nothing_in2 (GHashTable *in); GHashTable *regress_test_ghash_nested_everything_return (void); GHashTable *regress_test_ghash_nested_everything_return2 (void); /* GPtrArray */ GPtrArray *regress_test_garray_container_return (void); GPtrArray *regress_test_garray_full_return (void); /* error? */ /* closure */ int regress_test_closure (GClosure *closure); int regress_test_closure_one_arg (GClosure *closure, int arg); GVariant *regress_test_closure_variant (GClosure *closure, const GVariant* arg); /* value */ int regress_test_int_value_arg(const GValue *v); const GValue *regress_test_value_return(int i); /* foreign structs */ cairo_t *regress_test_cairo_context_full_return (void); void regress_test_cairo_context_none_in (cairo_t *context); 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); GVariant *regress_test_gvariant_i (void); GVariant *regress_test_gvariant_s (void); GVariant *regress_test_gvariant_asv (void); GVariant *regress_test_gvariant_v (void); GVariant *regress_test_gvariant_as (void); /* enums / flags */ #define NUM_REGRESS_FOO typedef enum { REGRESS_TEST_VALUE1, REGRESS_TEST_VALUE2, REGRESS_TEST_VALUE3 = -1, REGRESS_TEST_VALUE4 = '0' } RegressTestEnum; typedef enum { REGRESS_TEST_UNSIGNED_VALUE1 = 1, REGRESS_TEST_UNSIGNED_VALUE2 = 0x80000000 } RegressTestEnumUnsigned; typedef enum { REGRESS_TEST_FLAG1 = 1 << 0, REGRESS_TEST_FLAG2 = 1 << 1, REGRESS_TEST_FLAG3 = 1 << 2, } RegressTestFlags; GType regress_test_enum_get_type (void) G_GNUC_CONST; #define REGRESS_TEST_TYPE_ENUM (regress_test_enum_get_type ()) GType regress_test_enum_unsigned_get_type (void) G_GNUC_CONST; #define REGRESS_TEST_TYPE_ENUM_UNSIGNED (regress_test_enum_unsigned_get_type ()) GType regress_test_flags_get_type (void) G_GNUC_CONST; #define REGRESS_TEST_TYPE_FLAGS (regress_test_flags_get_type ()) /* this is not registered with GType */ typedef enum { REGRESS_TEST_EVALUE1, REGRESS_TEST_EVALUE2 = 42, REGRESS_TEST_EVALUE3 = '0' } RegressTestEnumNoGEnum; const gchar * regress_test_enum_param(RegressTestEnum e); const gchar * regress_test_unsigned_enum_param(RegressTestEnumUnsigned e); void regress_global_get_flags_out (RegressTestFlags *v); /* constants */ #define REGRESS_INT_CONSTANT 4422 #define REGRESS_DOUBLE_CONSTANT 44.22 #define REGRESS_STRING_CONSTANT "Some String" #define REGRESS_Mixed_Case_Constant 4423 /* structures */ typedef struct _RegressTestStructA RegressTestStructA; typedef struct _RegressTestStructB RegressTestStructB; typedef struct _RegressTestStructC RegressTestStructC; typedef struct _RegressTestStructD RegressTestStructD; struct _RegressTestStructA { gint some_int; gint8 some_int8; gdouble some_double; RegressTestEnum some_enum; }; void regress_test_struct_a_clone (RegressTestStructA *a, RegressTestStructA *a_out); struct _RegressTestStructB { gint8 some_int8; RegressTestStructA nested_a; }; void regress_test_struct_b_clone (RegressTestStructB *b, RegressTestStructB *b_out); /* This one has a non-basic member */ struct _RegressTestStructC { gint another_int; GObject *obj; }; /* This one has annotated fields */ /** * RegressTestStructD: * @array1: (array zero-terminated=1): * @array2: (array zero-terminated=1) (element-type RegressTestObj): * @field: (type RegressTestObj): * @list: (element-type RegressTestObj): * @garray: (element-type RegressTestObj): */ struct _RegressTestStructD { RegressTestStructA **array1; gpointer *array2; gpointer field; GList *list; GPtrArray *garray; }; /* This one has an array of anonymous unions, inspired by GValue */ struct RegressTestStructE { GType some_type; union { gint v_int; guint v_uint; glong v_long; gulong v_ulong; gint64 v_int64; guint64 v_uint64; gfloat v_float; gdouble v_double; gpointer v_pointer; } some_union[2]; }; /* plain-old-data boxed types */ typedef struct _RegressTestSimpleBoxedA RegressTestSimpleBoxedA; typedef struct _RegressTestSimpleBoxedB RegressTestSimpleBoxedB; struct _RegressTestSimpleBoxedA { gint some_int; gint8 some_int8; gdouble some_double; RegressTestEnum some_enum; }; /* Intentionally uses _get_gtype */ GType regress_test_simple_boxed_a_get_gtype (void); RegressTestSimpleBoxedA *regress_test_simple_boxed_a_copy (RegressTestSimpleBoxedA *a); gboolean regress_test_simple_boxed_a_equals (RegressTestSimpleBoxedA *a, RegressTestSimpleBoxedA *other_a); const RegressTestSimpleBoxedA *regress_test_simple_boxed_a_const_return (void); struct _RegressTestSimpleBoxedB { gint8 some_int8; RegressTestSimpleBoxedA nested_a; }; GType regress_test_simple_boxed_b_get_type (void); RegressTestSimpleBoxedB *regress_test_simple_boxed_b_copy (RegressTestSimpleBoxedB *b); /* opaque boxed */ #define REGRESS_TEST_TYPE_BOXED (regress_test_boxed_get_type()) typedef struct _RegressTestBoxed RegressTestBoxed; typedef struct _RegressTestBoxedPrivate RegressTestBoxedPrivate; struct _RegressTestBoxed { gint8 some_int8; RegressTestSimpleBoxedA nested_a; RegressTestBoxedPrivate *priv; }; GType regress_test_boxed_get_type (void); RegressTestBoxed *regress_test_boxed_new (void); RegressTestBoxed *regress_test_boxed_new_alternative_constructor1 (int i); RegressTestBoxed *regress_test_boxed_new_alternative_constructor2 (int i, int j); RegressTestBoxed *regress_test_boxed_new_alternative_constructor3 (char *s); RegressTestBoxed *regress_test_boxed_copy (RegressTestBoxed *boxed); gboolean regress_test_boxed_equals (RegressTestBoxed *boxed, RegressTestBoxed *other); typedef struct _RegressTestBoxedB RegressTestBoxedB; struct _RegressTestBoxedB { gint8 some_int8; glong some_long; }; GType regress_test_boxed_b_get_type (void); RegressTestBoxedB *regress_test_boxed_b_new (gint8 some_int8, glong some_long); RegressTestBoxedB *regress_test_boxed_b_copy (RegressTestBoxedB *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)) #define REGRESS_TEST_IS_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_OBJ)) #define REGRESS_TEST_OBJ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_OBJ, RegressTestObjClass)) typedef struct _RegressTestObj RegressTestObj; typedef struct _RegressTestObjClass RegressTestObjClass; /** * RegressTestObj: * @bare: (allow-none): */ struct _RegressTestObj { GObject parent_instance; GObject *bare; RegressTestBoxed *boxed; GHashTable *hash_table; GList *list; gint8 some_int8; float some_float; double some_double; char* string; }; struct _RegressTestObjClass { GObjectClass parent_class; int (*matrix) (RegressTestObj *obj, const char *somestr); /** * RegressTestObjClass::allow_none_vfunc * @two: (allow-none): Another object */ void (*allow_none_vfunc) (RegressTestObj *obj, RegressTestObj *two); guint test_signal; guint test_signal_with_static_scope_arg; /* Should be replaced with simple "gpointer" and not be callback */ void (*_regress_reserved1) (void); void (*_regress_reserved2) (void); }; GType regress_test_obj_get_type (void); RegressTestObj* regress_test_obj_new (RegressTestObj *obj); RegressTestObj* regress_constructor (void); RegressTestObj* regress_test_obj_new_from_file (const char *x, GError **error); void regress_test_obj_set_bare (RegressTestObj *obj, GObject *bare); void regress_test_obj_emit_sig_with_obj (RegressTestObj *obj); int regress_test_obj_instance_method (RegressTestObj *obj); double regress_test_obj_static_method (int x); void regress_forced_method (RegressTestObj *obj); void regress_test_array_fixed_out_objects (RegressTestObj ***objs); void regress_test_obj_torture_signature_0 (RegressTestObj *obj, int x, double *y, int *z, const char *foo, int *q, guint m); gboolean regress_test_obj_torture_signature_1 (RegressTestObj *obj, int x, double *y, int *z, const char *foo, int *q, guint m, GError **error); 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, GError **error); gboolean regress_test_obj_skip_return_val_no_out (RegressTestObj *obj, gint a, GError **error); 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, GError **error); 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, GError **error); 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, GError **error); /* virtual */ int regress_test_obj_do_matrix (RegressTestObj *obj, const char *somestr); void regress_func_obj_null_in (RegressTestObj *obj); void regress_test_obj_null_out (RegressTestObj **obj); /* inheritance */ #define REGRESS_TEST_TYPE_SUB_OBJ (regress_test_sub_obj_get_type ()) #define REGRESS_TEST_SUB_OBJECT(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_SUB_OBJ, RegressTestSubObj)) #define REGRESS_TEST_IS_SUB_OBJECT(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_SUB_OBJ)) #define REGRESS_TEST_SUB_OBJ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_SUB_OBJ, RegressTestSubObjClass)) typedef struct _RegressTestSubObj RegressTestSubObj; typedef struct _RegressTestSubObjClass RegressTestSubObjClass; struct _RegressTestSubObj { RegressTestObj parent_instance; }; struct _RegressTestSubObjClass { RegressTestObjClass parent_class; }; GType regress_test_sub_obj_get_type (void); RegressTestObj* regress_test_sub_obj_new (void); void regress_test_sub_obj_unset_bare (RegressTestSubObj *obj); int regress_test_sub_obj_instance_method (RegressTestSubObj *obj); /* fundamental object */ #define REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT (regress_test_fundamental_object_get_type()) #define REGRESS_TEST_IS_FUNDAMENTAL_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT)) #define REGRESS_TEST_IS_FUNDAMENTAL_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT)) #define REGRESS_TEST_FUNDAMENTAL_OBJECT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObjectClass)) #define REGRESS_TEST_FUNDAMENTAL_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObject)) #define REGRESS_TEST_FUNDAMENTAL_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT, RegressTestFundamentalObjectClass)) #define REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST(obj) ((RegressTestFundamentalObject*)(obj)) typedef struct _RegressTestFundamentalObject RegressTestFundamentalObject; typedef struct _RegressTestFundamentalObjectClass RegressTestFundamentalObjectClass; /** * RegressTestFundamentalObjectCopyFunction: * * Returns: (transfer full): */ typedef RegressTestFundamentalObject * (*RegressTestFundamentalObjectCopyFunction) (const RegressTestFundamentalObject *obj); typedef void (*RegressTestFundamentalObjectFinalizeFunction) (RegressTestFundamentalObject *obj); struct _RegressTestFundamentalObject { GTypeInstance instance; gint refcount; guint flags; }; struct _RegressTestFundamentalObjectClass { GTypeClass type_class; RegressTestFundamentalObjectCopyFunction copy; RegressTestFundamentalObjectFinalizeFunction finalize; }; GType regress_test_fundamental_object_get_type (void); RegressTestFundamentalObject* regress_test_fundamental_object_ref (RegressTestFundamentalObject *fundamental_object); void regress_test_fundamental_object_unref (RegressTestFundamentalObject *fundamental_object); #define REGRESS_TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT(value) (G_VALUE_HOLDS(value, REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT)) void regress_test_value_set_fundamental_object (GValue *value, RegressTestFundamentalObject *fundamental_object); RegressTestFundamentalObject* regress_test_value_get_fundamental_object (const GValue *value); typedef struct _RegressTestFundamentalSubObject RegressTestFundamentalSubObject; typedef struct _RegressTestFundamentalSubObjectClass RegressTestFundamentalSubObjectClass; struct _RegressTestFundamentalSubObject { RegressTestFundamentalObject fundamental_object; char *data; }; struct _RegressTestFundamentalSubObjectClass { RegressTestFundamentalObjectClass fundamental_object_class; }; GType regress_test_fundamental_sub_object_get_type(void); RegressTestFundamentalSubObject * regress_test_fundamental_sub_object_new (const char *data); /* callback */ typedef void (*RegressTestSimpleCallback) (void); typedef int (*RegressTestCallback) (void); typedef int (*RegressTestCallbackUserData) (gpointer user_data); /** * RegressTestCallbackHashtable: * @data: (element-type utf8 gint): a hash table; will be modified */ typedef void (*RegressTestCallbackHashtable) (GHashTable *data); typedef void (*RegressTestCallbackGError) (const GError *error); /** * RegressTestCallbackOwnedGError: * @error: (transfer full): GError instance; must be freed by the callback */ typedef void (*RegressTestCallbackOwnedGError) (GError *error); /** * RegressTestCallbackFull: * @foo: the investment rate * @bar: how much money * @path: (type filename): Path to file */ typedef int (*RegressTestCallbackFull) (int foo, double bar, char *path); /** * RegressTestCallbackArray: * @one: (array length=one_length): * @one_length: * @two: (array length=two_length) (element-type utf8): * @two_length: */ typedef int (*RegressTestCallbackArray) (int *one, gsize one_length, const char** two, int two_length); void regress_test_simple_callback (RegressTestSimpleCallback callback); int regress_test_callback (RegressTestCallback callback); int regress_test_multi_callback (RegressTestCallback callback); int regress_test_array_callback (RegressTestCallbackArray callback); int regress_test_callback_user_data (RegressTestCallbackUserData callback, gpointer user_data); int regress_test_callback_destroy_notify (RegressTestCallbackUserData callback, gpointer user_data, GDestroyNotify notify); int regress_test_callback_thaw_notifications (void); void regress_test_callback_async (RegressTestCallbackUserData callback, gpointer user_data); int regress_test_callback_thaw_async (void); void regress_test_async_ready_callback (GAsyncReadyCallback callback); void regress_test_obj_instance_method_callback (RegressTestObj *obj, RegressTestCallback callback); void regress_test_obj_static_method_callback (RegressTestCallback callback); RegressTestObj *regress_test_obj_new_callback (RegressTestCallbackUserData callback, gpointer user_data, GDestroyNotify notify); void regress_test_hash_table_callback (GHashTable *data, RegressTestCallbackHashtable callback); void regress_test_gerror_callback (RegressTestCallbackGError callback); void regress_test_null_gerror_callback (RegressTestCallbackGError callback); void regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback); typedef struct _RegressTestInterface RegressTestInterface; /* interface */ #define REGRESS_TEST_TYPE_INTERFACE (regress_test_interface_get_type ()) #define REGRESS_TEST_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_INTERFACE, RegressTestInterface)) #define REGRESS_TEST_IS_INTERFACE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_INTERFACE)) #define REGRESS_TEST_INTERFACE_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), REGRESS_TEST_TYPE_INTERFACE, RegressTestInterfaceIface)) typedef struct _RegressTestInterfaceIface RegressTestInterfaceIface; struct _RegressTestInterfaceIface { GTypeInterface base_iface; }; GType regress_test_interface_get_type (void) G_GNUC_CONST; /* gobject with non-standard prefix */ #define REGRESS_TEST_TYPE_WI_802_1X (regress_test_wi_802_1x_get_type ()) #define REGRESS_TEST_WI_802_1X(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_WI_802_1X, RegressTestWi8021x)) #define REGRESS_TEST_IS_WI_802_1X(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_WI_802_1X)) #define REGRESS_TEST_WI_802_1X_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_WI_802_1X, RegressTestWi8021xClass)) typedef struct { GObject parent_instance; gboolean testbool; } RegressTestWi8021x; typedef struct { GObjectClass parent_class; } RegressTestWi8021xClass; GType regress_test_wi_802_1x_get_type (void); RegressTestWi8021x* regress_test_wi_802_1x_new (void); gboolean regress_test_wi_802_1x_get_testbool (RegressTestWi8021x *obj); void regress_test_wi_802_1x_set_testbool (RegressTestWi8021x *obj, gboolean v); int regress_test_wi_802_1x_static_method (int x); /* floating gobject */ #define REGRESS_TEST_TYPE_FLOATING (regress_test_floating_get_type ()) #define REGRESS_TEST_FLOATING(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), REGRESS_TEST_TYPE_FLOATING, RegressTestFloating)) #define REGRESS_TEST_IS_FLOATING(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), REGRESS_TEST_TYPE_FLOATING)) #define REGRESS_TEST_FLOATING_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), REGRESS_TEST_TYPE_FLOATING, RegressTestFloatingClass)) typedef struct { GInitiallyUnowned parent_instance; } RegressTestFloating; typedef struct { GInitiallyUnownedClass parent_class; } RegressTestFloatingClass; GType regress_test_floating_get_type (void); RegressTestFloating* regress_test_floating_new (void); /* Function signature torture tests */ void regress_test_torture_signature_0 (int x, double *y, int *z, const char *foo, int *q, guint m); gboolean regress_test_torture_signature_1 (int x, double *y, int *z, const char *foo, int *q, guint m, GError **error); 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); GValue *regress_test_date_in_gvalue (void); GValue *regress_test_strv_in_gvalue (void); GObject * _regress_this_is_a_private_symbol (void); void regress_test_multiline_doc_comments (void); void regress_test_nested_parameter (int a); /** * RegressSkippedStructure: (skip) * * This should be skipped, and moreover, all function which * use it should be. */ typedef struct { int x; double v; } RegressSkippedStructure; void regress_random_function_with_skipped_structure (int x, RegressSkippedStructure *foo, double v); /** * RegressIntset: * * Like telepathy-glib's TpIntset. * */ typedef struct _RegressIntset RegressIntset; /** * RegressIntSet: (skip) * * Compatibility typedef, like telepathy-glib's TpIntSet * */ typedef RegressIntset RegressIntSet; /** * RegressPtrArrayAlias: * * Typedef'd GPtrArray for some reason */ typedef GPtrArray RegressPtrArrayAlias; void regress_introspectable_via_alias (RegressPtrArrayAlias *data); /** * RegressVaListAlias: * * Typedef'd va_list for additional reasons */ typedef va_list RegressVaListAlias; void regress_not_introspectable_via_alias (RegressVaListAlias ok); /** * RegressAliasedTestBoxed: * * Typedef TestBoxed to test caller-allocates correctness */ typedef RegressTestBoxed RegressAliasedTestBoxed; void regress_aliased_caller_alloc (RegressAliasedTestBoxed *boxed); /* private testing */ typedef struct { gint this_is_public_before; /* < private > */ gint this_is_private; /* < public > */ gint this_is_public_after; } RegressTestPrivateStruct; typedef enum { REGRESS_TEST_PUBLIC_ENUM_BEFORE = 1 << 0, /* */ REGRESS_TEST_PRIVATE_ENUM = 1 << 1, /* */ REGRESS_TEST_PUBLIC_ENUM_AFTER = 1 << 2, } RegressTestPrivateEnum; typedef struct { gint just_int; gint array[10]; } RegressTestStructFixedArray; void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray *str); #define REGRESS_UTF8_CONSTANT "const \xe2\x99\xa5 utf8" #ifdef __GNUC__ #define REGRESS_TEST_GNUC_EXTENSION_STMT(foo) (G_GNUC_EXTENSION ({ int x[10]; x[5] = 42; x[5]; })) #endif /* https://bugzilla.gnome.org/show_bug.cgi?id=662888 */ #define REGRESS_LONG_STRING_CONSTANT \ "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" #endif /* __GITESTTYPES_H__ */ 0707010007ffb4000081a40000000000000000000000014f83d2e700001641000000b600010002ffffffffffffffff0000004200000000root/usr/local/share/gobject-introspection-1.0/tests/everything.h/* GENERATED BY testcodegen.py; DO NOT EDIT */ #ifndef __EVERYTHING_H__ #define __EVERYTHING_H__ #include void everything_nullfunc (void); gboolean everything_const_return_gboolean (void); gint8 everything_const_return_gint8 (void); guint8 everything_const_return_guint8 (void); gint16 everything_const_return_gint16 (void); guint16 everything_const_return_guint16 (void); gint32 everything_const_return_gint32 (void); guint32 everything_const_return_guint32 (void); gint64 everything_const_return_gint64 (void); guint64 everything_const_return_guint64 (void); gchar everything_const_return_gchar (void); gshort everything_const_return_gshort (void); gushort everything_const_return_gushort (void); gint everything_const_return_gint (void); guint everything_const_return_guint (void); glong everything_const_return_glong (void); gulong everything_const_return_gulong (void); gsize everything_const_return_gsize (void); gssize everything_const_return_gssize (void); gintptr everything_const_return_gintptr (void); guintptr everything_const_return_guintptr (void); gfloat everything_const_return_gfloat (void); gdouble everything_const_return_gdouble (void); gunichar everything_const_return_gunichar (void); GType everything_const_return_GType (void); const gchar* everything_const_return_utf8 (void); const gchar* everything_const_return_filename (void); void everything_oneparam_gboolean (gboolean arg0); void everything_oneparam_gint8 (gint8 arg0); void everything_oneparam_guint8 (guint8 arg0); void everything_oneparam_gint16 (gint16 arg0); void everything_oneparam_guint16 (guint16 arg0); void everything_oneparam_gint32 (gint32 arg0); void everything_oneparam_guint32 (guint32 arg0); void everything_oneparam_gint64 (gint64 arg0); void everything_oneparam_guint64 (guint64 arg0); void everything_oneparam_gchar (gchar arg0); void everything_oneparam_gshort (gshort arg0); void everything_oneparam_gushort (gushort arg0); void everything_oneparam_gint (gint arg0); void everything_oneparam_guint (guint arg0); void everything_oneparam_glong (glong arg0); void everything_oneparam_gulong (gulong arg0); void everything_oneparam_gsize (gsize arg0); void everything_oneparam_gssize (gssize arg0); void everything_oneparam_gintptr (gintptr arg0); void everything_oneparam_guintptr (guintptr arg0); void everything_oneparam_gfloat (gfloat arg0); void everything_oneparam_gdouble (gdouble arg0); void everything_oneparam_gunichar (gunichar arg0); void everything_oneparam_GType (GType arg0); void everything_oneparam_utf8 (const gchar* arg0); void everything_oneparam_filename (const gchar* arg0); void everything_one_outparam_gboolean (gboolean* arg0); void everything_one_outparam_gint8 (gint8* arg0); void everything_one_outparam_guint8 (guint8* arg0); void everything_one_outparam_gint16 (gint16* arg0); void everything_one_outparam_guint16 (guint16* arg0); void everything_one_outparam_gint32 (gint32* arg0); void everything_one_outparam_guint32 (guint32* arg0); void everything_one_outparam_gint64 (gint64* arg0); void everything_one_outparam_guint64 (guint64* arg0); void everything_one_outparam_gchar (gchar* arg0); void everything_one_outparam_gshort (gshort* arg0); void everything_one_outparam_gushort (gushort* arg0); void everything_one_outparam_gint (gint* arg0); void everything_one_outparam_guint (guint* arg0); void everything_one_outparam_glong (glong* arg0); void everything_one_outparam_gulong (gulong* arg0); void everything_one_outparam_gsize (gsize* arg0); void everything_one_outparam_gssize (gssize* arg0); void everything_one_outparam_gintptr (gintptr* arg0); void everything_one_outparam_guintptr (guintptr* arg0); void everything_one_outparam_gfloat (gfloat* arg0); void everything_one_outparam_gdouble (gdouble* arg0); void everything_one_outparam_gunichar (gunichar* arg0); void everything_one_outparam_GType (GType* arg0); void everything_one_outparam_utf8 (const gchar** arg0); void everything_one_outparam_filename (const gchar** arg0); gboolean everything_passthrough_one_gboolean (gboolean arg0); gint8 everything_passthrough_one_gint8 (gint8 arg0); guint8 everything_passthrough_one_guint8 (guint8 arg0); gint16 everything_passthrough_one_gint16 (gint16 arg0); guint16 everything_passthrough_one_guint16 (guint16 arg0); gint32 everything_passthrough_one_gint32 (gint32 arg0); guint32 everything_passthrough_one_guint32 (guint32 arg0); gint64 everything_passthrough_one_gint64 (gint64 arg0); guint64 everything_passthrough_one_guint64 (guint64 arg0); gchar everything_passthrough_one_gchar (gchar arg0); gshort everything_passthrough_one_gshort (gshort arg0); gushort everything_passthrough_one_gushort (gushort arg0); gint everything_passthrough_one_gint (gint arg0); guint everything_passthrough_one_guint (guint arg0); glong everything_passthrough_one_glong (glong arg0); gulong everything_passthrough_one_gulong (gulong arg0); gsize everything_passthrough_one_gsize (gsize arg0); gssize everything_passthrough_one_gssize (gssize arg0); gintptr everything_passthrough_one_gintptr (gintptr arg0); guintptr everything_passthrough_one_guintptr (guintptr arg0); gfloat everything_passthrough_one_gfloat (gfloat arg0); gdouble everything_passthrough_one_gdouble (gdouble arg0); gunichar everything_passthrough_one_gunichar (gunichar arg0); GType everything_passthrough_one_GType (GType arg0); const gchar* everything_passthrough_one_utf8 (const gchar* arg0); const gchar* everything_passthrough_one_filename (const gchar* arg0); #endif 0707010007ffb7000081a40000000000000000000000014f83d2e700013ac8000000b600010002ffffffffffffffff0000003f00000000root/usr/local/share/gobject-introspection-1.0/tests/regress.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ #include #include #include #include #include "regress.h" static gboolean abort_on_error = TRUE; #define ASSERT_VALUE(condition) \ if (abort_on_error) \ g_assert (condition); \ else \ g_warn_if_fail (condition); \ void regress_set_abort_on_error (gboolean in) { abort_on_error = in; } /* basic types */ gboolean regress_test_boolean (gboolean in) { return in; } gboolean regress_test_boolean_true (gboolean in) { ASSERT_VALUE (in == TRUE); return in; } gboolean regress_test_boolean_false (gboolean in) { ASSERT_VALUE (in == FALSE); return in; } gint8 regress_test_int8 (gint8 in) { return in; } guint8 regress_test_uint8 (guint8 in) { return in; } gint16 regress_test_int16 (gint16 in) { return in; } guint16 regress_test_uint16 (guint16 in) { return in; } gint32 regress_test_int32 (gint32 in) { return in; } guint32 regress_test_uint32 (guint32 in) { return in; } gint64 regress_test_int64 (gint64 in) { return in; } guint64 regress_test_uint64 (guint64 in) { return in; } gshort regress_test_short (gshort in) { return in; } gushort regress_test_ushort (gushort in) { return in; } gint regress_test_int (gint in) { return in; } guint regress_test_uint (guint in) { return in; } glong regress_test_long (glong in) { return in; } gulong regress_test_ulong (gulong in) { return in; } gssize regress_test_ssize (gssize in) { return in; } gsize regress_test_size (gsize in) { return in; } gfloat regress_test_float (gfloat in) { return in; } gdouble regress_test_double (gdouble in) { return in; } gunichar regress_test_unichar (gunichar in) { return in; } time_t regress_test_timet (time_t in) { return in; } GType regress_test_gtype (GType in) { return in; } int regress_test_closure (GClosure *closure) { GValue return_value = {0, }; int ret; g_value_init (&return_value, G_TYPE_INT); g_closure_invoke (closure, &return_value, 0, NULL, NULL); ret = g_value_get_int (&return_value); g_value_unset(&return_value); return ret; } int regress_test_closure_one_arg (GClosure *closure, int arg) { GValue return_value = {0, }; GValue arguments[1]; int ret; g_value_init (&return_value, G_TYPE_INT); memset (&arguments[0], 0, sizeof (arguments)); g_value_init (&arguments[0], G_TYPE_INT); g_value_set_int (&arguments[0], arg); g_closure_invoke (closure, &return_value, 1, arguments, NULL); ret = g_value_get_int (&return_value); g_value_unset(&return_value); g_value_unset(&arguments[0]); return ret; } /** * regress_test_closure_variant: * @closure: GClosure which takes one GVariant and returns a GVariant * @arg: (transfer none): a GVariant passed as argument to @closure * * Return value: (transfer full): the return value of @closure */ GVariant* regress_test_closure_variant (GClosure *closure, const GVariant* arg) { GValue return_value = {0, }; GValue arguments[1] = {{0,} }; GVariant *ret; g_value_init (&return_value, G_TYPE_VARIANT); g_value_init (&arguments[0], G_TYPE_VARIANT); g_value_set_variant (&arguments[0], arg); g_closure_invoke (closure, &return_value, 1, arguments, NULL); ret = g_value_get_variant (&return_value); g_value_unset (&return_value); g_value_unset (&arguments[0]); return ret; } /** * regress_test_value_arg: * @v: (transfer none): a GValue expected to contain an int * * Return value: the int contained in the GValue. */ int regress_test_int_value_arg(const GValue *v) { int i; i = g_value_get_int (v); return i; } static GValue value; /** * regress_test_value_return: * @i: an int * * Return value: (transfer none): the int wrapped in a GValue. */ const GValue * regress_test_value_return(int i) { memset(&value, '\0', sizeof(GValue)); g_value_init (&value, G_TYPE_INT); g_value_set_int (&value, i); return &value; } /************************************************************************/ /* foreign structs */ /** * regress_test_cairo_context_full_return: * Returns: (transfer full): */ cairo_t * regress_test_cairo_context_full_return (void) { cairo_surface_t *surface; surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10); return cairo_create (surface); } /** * regress_test_cairo_context_none_in: * @context: (transfer none): */ void regress_test_cairo_context_none_in (cairo_t *context) { cairo_surface_t *surface = cairo_get_target (context); g_assert (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32); g_assert (cairo_image_surface_get_width (surface) == 10); g_assert (cairo_image_surface_get_height (surface) == 10); } /** * regress_test_cairo_surface_none_return: * Returns: (transfer none): */ cairo_surface_t * regress_test_cairo_surface_none_return (void) { static cairo_surface_t *surface; if (surface == NULL) { surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10); } return surface; } /** * regress_test_cairo_surface_full_return: * Returns: (transfer full): */ cairo_surface_t * regress_test_cairo_surface_full_return (void) { return cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10); } /** * regress_test_cairo_surface_none_in: * @surface: (transfer none): */ void regress_test_cairo_surface_none_in (cairo_surface_t *surface) { g_assert (cairo_image_surface_get_format (surface) == CAIRO_FORMAT_ARGB32); g_assert (cairo_image_surface_get_width (surface) == 10); g_assert (cairo_image_surface_get_height (surface) == 10); } /** * regress_test_cairo_surface_full_out: * @surface: (out) (transfer full): */ void regress_test_cairo_surface_full_out (cairo_surface_t **surface) { *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, 10, 10); } /** * regress_test_gvariant_i: * * Returns: (transfer none): New variant */ GVariant * regress_test_gvariant_i (void) { return g_variant_new_int32 (1); } /** * regress_test_gvariant_s: * * Returns: (transfer none): New variant */ GVariant * regress_test_gvariant_s (void) { return g_variant_new_string ("one"); } /** * regress_test_gvariant_asv: * * Returns: (transfer none): New variant */ GVariant * regress_test_gvariant_asv (void) { GVariantBuilder b; g_variant_builder_init (&b, G_VARIANT_TYPE ("a{sv}")); g_variant_builder_add (&b, "{sv}", "name", g_variant_new_string ("foo")); g_variant_builder_add (&b, "{sv}", "timeout", g_variant_new_int32 (10)); return g_variant_builder_end (&b); } /** * regress_test_gvariant_v: * * Returns: (transfer none): New variant */ GVariant * regress_test_gvariant_v (void) { return g_variant_new_variant (g_variant_new_string ("contents")); } /** * regress_test_gvariant_as: * * Returns: (transfer none): New variant */ GVariant * regress_test_gvariant_as (void) { const char *as[] = { "one", "two", "three", NULL }; return g_variant_new_strv (as, -1); } /************************************************************************/ /* utf8 */ /* insert BLACK HEART SUIT to ensure UTF-8 doesn't get mangled */ static const char utf8_const[] = "const \xe2\x99\xa5 utf8"; static const char utf8_nonconst[] = "nonconst \xe2\x99\xa5 utf8"; /** * regress_test_utf8_const_return: * Return value: UTF-8 string */ const char * regress_test_utf8_const_return (void) { /* transfer mode none */ return utf8_const; } /** * regress_test_utf8_nonconst_return: * * Return value: (transfer full): UTF-8 string */ char * regress_test_utf8_nonconst_return (void) { return g_strdup (utf8_nonconst); } /** * regress_test_utf8_const_in: * */ void regress_test_utf8_const_in (const char *in) { /* transfer mode none */ g_assert (strcmp (in, utf8_const) == 0); } /** * regress_test_utf8_out: * @out: (out) (transfer full): */ void regress_test_utf8_out (char **out) { /* out parameter, transfer mode full */ *out = g_strdup (utf8_nonconst); } /** * regress_test_utf8_inout: * @inout: (inout) (transfer full): */ void regress_test_utf8_inout (char **inout) { /* inout parameter, transfer mode full */ g_assert (strcmp (*inout, utf8_const) == 0); *inout = g_strdup (utf8_nonconst); } /** * regress_test_filename_return: * * Return value: (element-type filename) (transfer full): list of strings */ GSList * regress_test_filename_return (void) { GSList *filenames = NULL; filenames = g_slist_prepend (filenames, g_filename_from_utf8("/etc/fstab", -1, NULL, NULL, NULL)); filenames = g_slist_prepend (filenames, g_filename_from_utf8("åäö", -1, NULL, NULL, NULL)); return filenames; } /* in arguments after out arguments */ /** * regress_test_int_out_utf8: * @length: (out): * @in: */ void regress_test_int_out_utf8 (int *length, const char *in) { *length = g_utf8_strlen(in, -1); } /* multiple output arguments */ /** * regress_test_multi_double_args: * @in: * @one: (out): * @two: (out): */ void regress_test_multi_double_args (gdouble in, gdouble *one, gdouble *two) { *one = in * 2; *two = in * 3; } /** * regress_test_utf8_out_out: * @out0: (out) (transfer full): a copy of "first" * @out1: (out) (transfer full): a copy of "second" */ void regress_test_utf8_out_out (char **out0, char **out1) { *out0 = g_strdup ("first"); *out1 = g_strdup ("second"); } /** * regress_test_utf8_out_nonconst_return: * @out: (out) (transfer full): a copy of "second" * * Returns: (transfer full): a copy of "first" */ char * regress_test_utf8_out_nonconst_return (char **out) { *out = g_strdup ("second"); return g_strdup ("first"); } /** * regress_test_utf8_null_in: * @in: (allow-none): */ void regress_test_utf8_null_in (char *in) { g_assert (in == NULL); } /** * regress_test_utf8_null_out: * @char_out: (allow-none) (out): */ void regress_test_utf8_null_out (char **char_out) { *char_out = NULL; } /* non-basic-types */ static const char *test_sequence[] = {"1", "2", "3"}; /* array */ /** * regress_test_array_int_in: * @n_ints: * @ints: (array length=n_ints): List of ints */ int regress_test_array_int_in (int n_ints, int *ints) { int i, sum = 0; for (i = 0; i < n_ints; i++) sum += ints[i]; return sum; } /** * regress_test_array_int_out: * @n_ints: (out): the length of @ints * @ints: (out) (array length=n_ints) (transfer full): a list of 5 integers, from 0 to 4 in consecutive order */ void regress_test_array_int_out (int *n_ints, int **ints) { int i; *n_ints = 5; *ints = g_malloc0(sizeof(**ints) * *n_ints); for (i = 1; i < *n_ints; i++) (*ints)[i] = (*ints)[i-1] + 1; } /** * regress_test_array_int_inout: * @n_ints: (inout): the length of @ints * @ints: (inout) (array length=n_ints) (transfer full): a list of integers whose items will be increased by 1, except the first that will be dropped */ void regress_test_array_int_inout (int *n_ints, int **ints) { int i; int *new_ints; if (0 < *n_ints) { *n_ints -= 1; new_ints = g_malloc(sizeof(**ints) * *n_ints); for (i = 0; i < *n_ints; i++) new_ints[i] = (*ints)[i + 1] + 1; *ints = new_ints; } } /** * regress_test_array_gint8_in: * @n_ints: * @ints: (array length=n_ints): List of ints */ int regress_test_array_gint8_in (int n_ints, gint8 *ints) { int i, sum = 0; for (i = 0; i < n_ints; i++) sum += ints[i]; return sum; } /** * regress_test_array_gint16_in: * @n_ints: * @ints: (array length=n_ints): List of ints */ int regress_test_array_gint16_in (int n_ints, gint16 *ints) { int i, sum = 0; for (i = 0; i < n_ints; i++) sum += ints[i]; return sum; } /** * regress_test_array_gint32_in: * @n_ints: * @ints: (array length=n_ints): List of ints */ gint32 regress_test_array_gint32_in (int n_ints, gint32 *ints) { int i; gint32 sum = 0; for (i = 0; i < n_ints; i++) sum += ints[i]; return sum; } /** * regress_test_array_gint64_in: * @n_ints: * @ints: (array length=n_ints): List of ints */ gint64 regress_test_array_gint64_in (int n_ints, gint64 *ints) { int i; gint64 sum = 0; for (i = 0; i < n_ints; i++) sum += ints[i]; return sum; } /** * regress_test_strv_in: * @arr: (array zero-terminated=1) (transfer none): */ gboolean regress_test_strv_in (char **arr) { if (g_strv_length (arr) != 3) return FALSE; if (strcmp (arr[0], "1") != 0) return FALSE; if (strcmp (arr[1], "2") != 0) return FALSE; if (strcmp (arr[2], "3") != 0) return FALSE; return TRUE; } /** * regress_test_array_gtype_in: * @n_types: * @types: (array length=n_types): List of types * * Return value: (transfer full): string representation of provided types * */ char * regress_test_array_gtype_in (int n_types, GType *types) { GString *string; int i; string = g_string_new ("["); for (i = 0; i < n_types; i++) { g_string_append (string, g_type_name (types[i])); g_string_append_c (string, ','); } g_string_append_c (string, ']'); return g_string_free (string, FALSE); } /** * regress_test_strv_out: * * Returns: (transfer full): */ char ** regress_test_strv_out (void) { int i = 0; int n = 6; char **ret = g_new (char *, n); ret[i++] = g_strdup ("thanks"); ret[i++] = g_strdup ("for"); ret[i++] = g_strdup ("all"); ret[i++] = g_strdup ("the"); ret[i++] = g_strdup ("fish"); ret[i++] = NULL; g_assert (i == n); return ret; } /** * regress_test_strv_out_container: * * Return value: (array zero-terminated=1) (transfer container): */ char ** regress_test_strv_out_container (void) { char **ret = g_new (char *, 4); ret[0] = "1"; ret[1] = "2"; ret[2] = "3"; ret[3] = NULL; return ret; } /** * regress_test_strv_outarg: * @retp: (array zero-terminated=1) (out) (transfer container): */ void regress_test_strv_outarg (char ***retp) { char **ret = g_new (char *, 4); ret[0] = "1"; ret[1] = "2"; ret[2] = "3"; ret[3] = NULL; *retp = ret; } /** * regress_test_array_fixed_size_int_in: * @ints: (array fixed-size=5): a list of 5 integers * * Returns: the sum of the items in @ints */ int regress_test_array_fixed_size_int_in (int *ints) { int i, sum = 0; for (i = 0; i < 5; i++) sum += ints[i]; return sum; } /** * regress_test_array_fixed_size_int_out: * @ints: (out) (array fixed-size=5) (transfer full): a list of 5 integers ranging from 0 to 4 */ void regress_test_array_fixed_size_int_out (int **ints) { int i; *ints = g_malloc0(sizeof(**ints) * 5); for (i = 1; i < 5; i++) (*ints)[i] = (*ints)[i-1] + 1; } /** * regress_test_array_fixed_size_int_return: * Returns: (array fixed-size=5) (transfer full): a list of 5 integers ranging from 0 to 4 */ int * regress_test_array_fixed_size_int_return (void) { int i, *ints; ints = g_malloc0(sizeof(*ints) * 5); for (i = 1; i < 5; i++) ints[i] = ints[i-1] + 1; return ints; } /** * regress_test_strv_out_c: * * Returns: (transfer none): */ const char * const* regress_test_strv_out_c (void) { static char **ret = NULL; if (ret == NULL) ret = regress_test_strv_out (); return (const char * const *) ret; } /** * regress_test_array_int_full_out: * @len: length of the returned array. * Returns: (array length=len) (transfer full): a new array of integers. */ int * regress_test_array_int_full_out(int *len) { int *result, i; *len = 5; result = g_malloc0(sizeof(*result) * (*len)); for (i=1; i < (*len); i++) result[i] = result[i-1] + 1; return result; } /** * regress_test_array_int_none_out: * @len: length of the returned array. * Returns: (array length=len) (transfer none): a static array of integers. */ int * regress_test_array_int_none_out(int *len) { static int result[5] = { 1, 2, 3, 4, 5 }; *len = 5; return result; } /** * regress_test_array_int_null_in: * @arr: (array length=len) (allow-none): * @len: length */ void regress_test_array_int_null_in (int *arr, int len) { g_assert (arr == NULL); } /** * regress_test_array_int_null_out: * @arr: (out) (array length=len) (allow-none): * @len: (out) : length */ void regress_test_array_int_null_out (int **arr, int *len) { *arr = NULL; *len = 0; } /* interface */ /************************************************************************/ /* GList */ static /*const*/ GList * regress_test_sequence_list() { static GList *list = NULL; if (!list) { gsize i; for (i = 0; i < G_N_ELEMENTS(test_sequence); ++i) { list = g_list_prepend (list, (gpointer)test_sequence[i]); } list = g_list_reverse (list); } return list; } /** * regress_test_glist_nothing_return: * * Return value: (element-type utf8) (transfer none): */ const GList * regress_test_glist_nothing_return (void) { return regress_test_sequence_list (); } /** * regress_test_glist_nothing_return2: * * Return value: (element-type utf8) (transfer none): */ GList * regress_test_glist_nothing_return2 (void) { return regress_test_sequence_list (); } /** * regress_test_glist_container_return: * * Return value: (element-type utf8) (transfer container): */ GList * regress_test_glist_container_return (void) { return g_list_copy (regress_test_sequence_list ()); } /** * regress_test_glist_everything_return: * * Return value: (element-type utf8) (transfer full): */ GList * regress_test_glist_everything_return (void) { GList *list; GList *l; list = g_list_copy (regress_test_sequence_list ()); for (l = list; l != NULL; l = l->next) l->data = g_strdup (l->data); return list; } static void regress_assert_test_sequence_list (const GList *in) { const GList *l; gsize i; for (i = 0, l = in; l != NULL; ++i, l = l->next) { g_assert (i < G_N_ELEMENTS(test_sequence)); g_assert (strcmp (l->data, test_sequence[i]) == 0); } g_assert (i == G_N_ELEMENTS(test_sequence)); } /** * regress_test_glist_nothing_in: * @in: (element-type utf8): */ void regress_test_glist_nothing_in (const GList *in) { regress_assert_test_sequence_list (in); } /** * regress_test_glist_nothing_in2: * @in: (element-type utf8): */ void regress_test_glist_nothing_in2 (GList *in) { regress_assert_test_sequence_list (in); } /** * regress_test_glist_null_in: * @in: (element-type utf8) (allow-none): */ void regress_test_glist_null_in (GSList *in) { g_assert (in == NULL); } /** * regress_test_glist_null_out: * @out_list: (out) (element-type utf8) (allow-none): */ void regress_test_glist_null_out (GSList **out_list) { *out_list = NULL; } /************************************************************************/ /* GSList */ static /*const*/ GSList * regress_test_sequence_slist() { static GSList *list = NULL; if (!list) { gsize i; for (i = 0; i < G_N_ELEMENTS(test_sequence); ++i) { list = g_slist_prepend (list, (gpointer)test_sequence[i]); } list = g_slist_reverse (list); } return list; } /** * regress_test_gslist_nothing_return: * * Return value: (element-type utf8) (transfer none): */ const GSList * regress_test_gslist_nothing_return (void) { return regress_test_sequence_slist (); } /** * regress_test_gslist_nothing_return2: * * Return value: (element-type utf8) (transfer none): */ GSList * regress_test_gslist_nothing_return2 (void) { return regress_test_sequence_slist (); } /** * regress_test_gslist_container_return: * * Return value: (element-type utf8) (transfer container): */ GSList * regress_test_gslist_container_return (void) { return g_slist_copy (regress_test_sequence_slist ()); } /** * regress_test_gslist_everything_return: * * Return value: (element-type utf8) (transfer full): */ GSList * regress_test_gslist_everything_return (void) { GSList *list; GSList *l; list = g_slist_copy (regress_test_sequence_slist ()); for (l = list; l != NULL; l = l->next) l->data = g_strdup (l->data); return list; } static void regress_assert_test_sequence_slist (const GSList *in) { const GSList *l; gsize i; for (i = 0, l = in; l != NULL; ++i, l = l->next) { g_assert (i < G_N_ELEMENTS(test_sequence)); g_assert (strcmp (l->data, test_sequence[i]) == 0); } g_assert (i == G_N_ELEMENTS(test_sequence)); } /** * regress_test_gslist_nothing_in: * @in: (element-type utf8): */ void regress_test_gslist_nothing_in (const GSList *in) { regress_assert_test_sequence_slist (in); } /** * regress_test_gslist_nothing_in2: * @in: (element-type utf8): */ void regress_test_gslist_nothing_in2 (GSList *in) { regress_assert_test_sequence_slist (in); } /** * regress_test_gslist_null_in: * @in: (element-type utf8) (allow-none): */ void regress_test_gslist_null_in (GSList *in) { g_assert (in == NULL); } /** * regress_test_gslist_null_out: * @out_list: (out) (element-type utf8) (allow-none): */ void regress_test_gslist_null_out (GSList **out_list) { *out_list = NULL; } /************************************************************************/ /* GHash */ static char *table_data[3][2] = { { "foo", "bar" }, { "baz", "bat" }, { "qux", "quux" } }; static GHashTable * regress_test_table_ghash_new_container() { GHashTable *hash; int i; hash = g_hash_table_new(g_str_hash, g_str_equal); for (i=0; i<3; i++) g_hash_table_insert(hash, table_data[i][0], table_data[i][1]); return hash; } static GHashTable * regress_test_table_ghash_new_full() { GHashTable *hash; int i; hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); for (i=0; i<3; i++) g_hash_table_insert(hash, g_strdup(table_data[i][0]), g_strdup(table_data[i][1])); return hash; } static /*const*/ GHashTable * regress_test_table_ghash_const() { static GHashTable *hash = NULL; if (!hash) { hash = regress_test_table_ghash_new_container(); } return hash; } /** * regress_test_ghash_null_return: * * Return value: (element-type utf8 utf8) (transfer none) (allow-none): */ const GHashTable * regress_test_ghash_null_return (void) { return NULL; } /** * regress_test_ghash_nothing_return: * * Return value: (element-type utf8 utf8) (transfer none): */ const GHashTable * regress_test_ghash_nothing_return (void) { return regress_test_table_ghash_const (); } /** * regress_test_ghash_nothing_return2: * * Return value: (element-type utf8 utf8) (transfer none): */ GHashTable * regress_test_ghash_nothing_return2 (void) { return regress_test_table_ghash_const (); } /** * regress_test_ghash_container_return: * * Return value: (element-type utf8 utf8) (transfer container): */ GHashTable * regress_test_ghash_container_return (void) { return regress_test_table_ghash_new_container (); } /** * regress_test_ghash_everything_return: * * Return value: (element-type utf8 utf8) (transfer full): */ GHashTable * regress_test_ghash_everything_return (void) { return regress_test_table_ghash_new_full (); } static void assert_test_table_ghash (const GHashTable *in) { GHashTable *h = regress_test_table_ghash_const(); GHashTableIter iter; gpointer key, value; g_assert(g_hash_table_size(h) == g_hash_table_size((GHashTable*)in)); g_hash_table_iter_init(&iter, (GHashTable*)in); while (g_hash_table_iter_next (&iter, &key, &value)) g_assert( strcmp(g_hash_table_lookup(h, (char*)key), (char*)value) == 0); } /** * regress_test_ghash_null_in: * @in: (element-type utf8 utf8) (allow-none): */ void regress_test_ghash_null_in (const GHashTable *in) { g_assert (in == NULL); } /** * regress_test_ghash_null_out: * @out: (element-type utf8 utf8) (allow-none) (out): */ void regress_test_ghash_null_out (const GHashTable **out) { *out = NULL; } /** * regress_test_ghash_nothing_in: * @in: (element-type utf8 utf8): */ void regress_test_ghash_nothing_in (const GHashTable *in) { assert_test_table_ghash (in); } /** * regress_test_ghash_nothing_in2: * @in: (element-type utf8 utf8): */ void regress_test_ghash_nothing_in2 (GHashTable *in) { assert_test_table_ghash (in); } /* Nested collection types */ /** * regress_test_ghash_nested_everything_return: * * Specify nested parameterized types directly with the (type ) annotation. * * Return value: (type GLib.HashTable>) (transfer full): */ GHashTable * regress_test_ghash_nested_everything_return (void) { GHashTable *hash; hash = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (void (*) (gpointer)) g_hash_table_destroy); g_hash_table_insert(hash, g_strdup("wibble"), regress_test_table_ghash_new_full()); return hash; } /** * 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) (transfer full): */ GHashTable * regress_test_ghash_nested_everything_return2 (void) { return regress_test_ghash_nested_everything_return(); } /************************************************************************/ /** * regress_test_garray_container_return: * * Returns: (transfer container) (type GLib.PtrArray) (element-type utf8): */ GPtrArray * regress_test_garray_container_return (void) { GPtrArray *array; array = g_ptr_array_new_with_free_func (g_free); g_ptr_array_add (array, g_strdup ("regress")); return array; } /** * regress_test_garray_full_return: * * Returns: (transfer full) (type GLib.PtrArray) (element-type utf8): */ GPtrArray * regress_test_garray_full_return (void) { GPtrArray *array; array = g_ptr_array_new (); g_ptr_array_add (array, g_strdup ("regress")); return array; } /************************************************************************/ /* error? */ /* enums / flags */ /** * NUM_REGRESS_FOO: (skip) * * num of elements in RegressFoo */ GType regress_test_enum_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { REGRESS_TEST_VALUE1, "REGRESS_TEST_VALUE1", "value1" }, { REGRESS_TEST_VALUE2, "REGRESS_TEST_VALUE2", "value2" }, { REGRESS_TEST_VALUE3, "REGRESS_TEST_VALUE3", "value3" }, { REGRESS_TEST_VALUE4, "REGRESS_TEST_VALUE4", "value4" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("RegressTestEnum"), values); } return etype; } GType regress_test_enum_unsigned_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GEnumValue values[] = { { REGRESS_TEST_UNSIGNED_VALUE1, "REGRESS_TEST_UNSIGNED_VALUE1", "value1" }, { REGRESS_TEST_UNSIGNED_VALUE2, "REGRESS_TEST_UNSIGNED_VALUE2", "value2" }, { 0, NULL, NULL } }; etype = g_enum_register_static (g_intern_static_string ("RegressTestEnumUnsigned"), values); } return etype; } GType regress_test_flags_get_type (void) { static GType etype = 0; if (G_UNLIKELY(etype == 0)) { static const GFlagsValue values[] = { { REGRESS_TEST_FLAG1, "TEST_FLAG1", "flag1" }, { REGRESS_TEST_FLAG2, "TEST_FLAG2", "flag2" }, { REGRESS_TEST_FLAG3, "TEST_FLAG3", "flag3" }, { 0, NULL, NULL } }; etype = g_flags_register_static (g_intern_static_string ("RegressTestFlags"), values); } return etype; } const gchar * regress_test_enum_param(RegressTestEnum e) { GEnumValue *ev; GEnumClass *ec; ec = g_type_class_ref (regress_test_enum_get_type ()); ev = g_enum_get_value (ec, e); g_type_class_unref (ec); return ev->value_nick; } const gchar * regress_test_unsigned_enum_param(RegressTestEnumUnsigned e) { GEnumValue *ev; GEnumClass *ec; ec = g_type_class_ref (regress_test_enum_unsigned_get_type ()); ev = g_enum_get_value (ec, e); g_type_class_unref (ec); return ev->value_nick; } /** * regress_global_get_flags_out: * @v: (out): A flags value * */ void regress_global_get_flags_out (RegressTestFlags *v) { *v = REGRESS_TEST_FLAG1 | REGRESS_TEST_FLAG3; } /* structures */ /** * regress_test_struct_a_clone: * @a: the structure * @a_out: (out caller-allocates): the cloned structure * * Make a copy of a RegressTestStructA */ void regress_test_struct_a_clone (RegressTestStructA *a, RegressTestStructA *a_out) { *a_out = *a; } /** * regress_test_struct_b_clone: * @b: the structure * @b_out: (out): the cloned structure * * Make a copy of a RegressTestStructB */ void regress_test_struct_b_clone (RegressTestStructB *b, RegressTestStructB *b_out) { *b_out = *b; } /* plain-old-data boxed types */ RegressTestSimpleBoxedA * regress_test_simple_boxed_a_copy (RegressTestSimpleBoxedA *a) { RegressTestSimpleBoxedA *new_a = g_slice_new (RegressTestSimpleBoxedA); *new_a = *a; return new_a; } static void regress_test_simple_boxed_a_free (RegressTestSimpleBoxedA *a) { g_slice_free (RegressTestSimpleBoxedA, a); } GType regress_test_simple_boxed_a_get_gtype (void) { static GType our_type = 0; if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("RegressTestSimpleBoxedA"), (GBoxedCopyFunc)regress_test_simple_boxed_a_copy, (GBoxedFreeFunc)regress_test_simple_boxed_a_free); return our_type; } RegressTestSimpleBoxedB * regress_test_simple_boxed_b_copy (RegressTestSimpleBoxedB *b) { RegressTestSimpleBoxedB *new_b = g_slice_new (RegressTestSimpleBoxedB); *new_b = *b; return new_b; } gboolean regress_test_simple_boxed_a_equals (RegressTestSimpleBoxedA *a, RegressTestSimpleBoxedA *other_a) { return (a->some_int == other_a->some_int && a->some_int8 == other_a->some_int8 && a->some_double == other_a->some_double); } const RegressTestSimpleBoxedA* regress_test_simple_boxed_a_const_return (void) { static RegressTestSimpleBoxedA simple_a = { 5, 6, 7.0 }; return &simple_a; } static void regress_test_simple_boxed_b_free (RegressTestSimpleBoxedB *a) { g_slice_free (RegressTestSimpleBoxedB, a); } GType regress_test_simple_boxed_b_get_type (void) { static GType our_type = 0; if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("RegressTestSimpleBoxedB"), (GBoxedCopyFunc)regress_test_simple_boxed_b_copy, (GBoxedFreeFunc)regress_test_simple_boxed_b_free); return our_type; } /* opaque boxed */ struct _RegressTestBoxedPrivate { guint magic; }; /** * regress_test_boxed_new: * * Returns: (transfer full): */ RegressTestBoxed * regress_test_boxed_new (void) { RegressTestBoxed *boxed = g_slice_new0(RegressTestBoxed); boxed->priv = g_slice_new0(RegressTestBoxedPrivate); boxed->priv->magic = 0xdeadbeef; return boxed; } /** * regress_test_boxed_new_alternative_constructor1: * * Returns: (transfer full): */ RegressTestBoxed * regress_test_boxed_new_alternative_constructor1 (int i) { RegressTestBoxed *boxed = g_slice_new0(RegressTestBoxed); boxed->priv = g_slice_new0(RegressTestBoxedPrivate); boxed->priv->magic = 0xdeadbeef; boxed->some_int8 = i; return boxed; } /** * regress_test_boxed_new_alternative_constructor2: * * Returns: (transfer full): */ RegressTestBoxed * regress_test_boxed_new_alternative_constructor2 (int i, int j) { RegressTestBoxed *boxed = g_slice_new0(RegressTestBoxed); boxed->priv = g_slice_new0(RegressTestBoxedPrivate); boxed->priv->magic = 0xdeadbeef; boxed->some_int8 = i + j; return boxed; } /** * regress_test_boxed_new_alternative_constructor3: * * Returns: (transfer full): */ RegressTestBoxed * regress_test_boxed_new_alternative_constructor3 (char *s) { RegressTestBoxed *boxed = g_slice_new0(RegressTestBoxed); boxed->priv = g_slice_new0(RegressTestBoxedPrivate); boxed->priv->magic = 0xdeadbeef; boxed->some_int8 = atoi(s); return boxed; } /** * regress_test_boxed_copy: * * Returns: (transfer full): */ RegressTestBoxed * regress_test_boxed_copy (RegressTestBoxed *boxed) { RegressTestBoxed *new_boxed = regress_test_boxed_new(); RegressTestBoxedPrivate *save; save = new_boxed->priv; *new_boxed = *boxed; new_boxed->priv = save; return new_boxed; } gboolean regress_test_boxed_equals (RegressTestBoxed *boxed, RegressTestBoxed *other) { return (other->some_int8 == boxed->some_int8 && regress_test_simple_boxed_a_equals(&other->nested_a, &boxed->nested_a)); } static void regress_test_boxed_free (RegressTestBoxed *boxed) { g_assert (boxed->priv->magic == 0xdeadbeef); g_slice_free (RegressTestBoxedPrivate, boxed->priv); g_slice_free (RegressTestBoxed, boxed); } GType regress_test_boxed_get_type (void) { static GType our_type = 0; if (our_type == 0) our_type = g_boxed_type_register_static (g_intern_static_string ("RegressTestBoxed"), (GBoxedCopyFunc)regress_test_boxed_copy, (GBoxedFreeFunc)regress_test_boxed_free); return our_type; } RegressTestBoxedB * regress_test_boxed_b_new (gint8 some_int8, glong some_long) { RegressTestBoxedB *boxed; boxed = g_slice_new (RegressTestBoxedB); boxed->some_int8 = some_int8; boxed->some_long = some_long; return boxed; } RegressTestBoxedB * regress_test_boxed_b_copy (RegressTestBoxedB *boxed) { return regress_test_boxed_b_new (boxed->some_int8, boxed->some_long); } static void regress_test_boxed_b_free (RegressTestBoxedB *boxed) { g_slice_free (RegressTestBoxedB, boxed); } G_DEFINE_BOXED_TYPE(RegressTestBoxedB, regress_test_boxed_b, regress_test_boxed_b_copy, regress_test_boxed_b_free); G_DEFINE_TYPE(RegressTestObj, regress_test_obj, G_TYPE_OBJECT); enum { PROP_TEST_OBJ_BARE = 1, PROP_TEST_OBJ_BOXED, PROP_TEST_OBJ_HASH_TABLE, PROP_TEST_OBJ_LIST, PROP_TEST_OBJ_HASH_TABLE_OLD, PROP_TEST_OBJ_LIST_OLD, PROP_TEST_OBJ_INT, PROP_TEST_OBJ_FLOAT, PROP_TEST_OBJ_DOUBLE, PROP_TEST_OBJ_STRING }; static void regress_test_obj_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { RegressTestObj *self = REGRESS_TEST_OBJECT (object); GList *list; switch (property_id) { case PROP_TEST_OBJ_BARE: regress_test_obj_set_bare (self, g_value_get_object (value)); break; case PROP_TEST_OBJ_BOXED: if (self->boxed) regress_test_boxed_free (self->boxed); self->boxed = g_value_dup_boxed (value); break; case PROP_TEST_OBJ_HASH_TABLE: case PROP_TEST_OBJ_HASH_TABLE_OLD: if (self->hash_table) g_hash_table_unref (self->hash_table); self->hash_table = g_hash_table_ref (g_value_get_boxed (value)); break; case PROP_TEST_OBJ_LIST: case PROP_TEST_OBJ_LIST_OLD: if (self->list != NULL) { for (list = self->list; list != NULL; list = g_list_next (list)) g_free (list->data); g_list_free (self->list); } self->list = NULL; for (list = g_value_get_pointer (value); list != NULL; list = g_list_next (list)) self->list = g_list_append (self->list, g_strdup (list->data)); break; case PROP_TEST_OBJ_INT: self->some_int8 = g_value_get_int (value); break; case PROP_TEST_OBJ_FLOAT: self->some_float = g_value_get_float (value); break; case PROP_TEST_OBJ_DOUBLE: self->some_double = g_value_get_double (value); break; case PROP_TEST_OBJ_STRING: self->string = g_value_dup_string (value); break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void regress_test_obj_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { RegressTestObj *self = REGRESS_TEST_OBJECT (object); switch (property_id) { case PROP_TEST_OBJ_BARE: g_value_set_object (value, self->bare); break; case PROP_TEST_OBJ_BOXED: g_value_set_boxed (value, self->boxed); break; case PROP_TEST_OBJ_HASH_TABLE: case PROP_TEST_OBJ_HASH_TABLE_OLD: if (self->hash_table != NULL) g_hash_table_ref (self->hash_table); g_value_set_boxed (value, self->hash_table); break; case PROP_TEST_OBJ_LIST: case PROP_TEST_OBJ_LIST_OLD: g_value_set_pointer (value, self->list); break; case PROP_TEST_OBJ_INT: g_value_set_int (value, self->some_int8); break; case PROP_TEST_OBJ_FLOAT: g_value_set_float (value, self->some_float); break; case PROP_TEST_OBJ_DOUBLE: g_value_set_double (value, self->some_double); break; case PROP_TEST_OBJ_STRING: g_value_set_string (value, self->string); break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void regress_test_obj_dispose (GObject *gobject) { RegressTestObj *self = REGRESS_TEST_OBJECT (gobject); if (self->bare) { g_object_unref (self->bare); self->bare = NULL; } if (self->boxed) { regress_test_boxed_free (self->boxed); self->boxed = NULL; } /* Chain up to the parent class */ G_OBJECT_CLASS (regress_test_obj_parent_class)->dispose (gobject); } static int regress_test_obj_default_matrix (RegressTestObj *obj, const char *somestr) { return 42; } enum { REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_PROP, REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_HASH_PROP, REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_STRV, REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_OBJ, REGRESS_TEST_OBJ_SIGNAL_FIRST, REGRESS_TEST_OBJ_SIGNAL_CLEANUP, REGRESS_TEST_OBJ_SIGNAL_ALL, N_REGRESS_TEST_OBJ_SIGNALS }; static guint regress_test_obj_signals[N_REGRESS_TEST_OBJ_SIGNALS] = { 0 }; static void regress_test_obj_class_init (RegressTestObjClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GParamSpec *pspec; GType param_types[1]; klass->test_signal = g_signal_newv ("test", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, NULL /* closure */, NULL /* accumulator */, NULL /* accumulator data */, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE /* return_type */, 0 /* n_params */, NULL /* param_types */); param_types[0] = regress_test_simple_boxed_a_get_gtype() | G_SIGNAL_TYPE_STATIC_SCOPE; klass->test_signal_with_static_scope_arg = g_signal_newv ("test-with-static-scope-arg", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, NULL /* closure */, NULL /* accumulator */, NULL /* accumulator data */, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE /* return_type */, 1 /* n_params */, param_types); /** * RegressTestObj::sig-with-array-prop: * @self: an object * @arr: (type GArray) (element-type uint): numbers * * This test signal is like TelepathyGlib's * TpChannel:: group-members-changed-detailed: */ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_PROP] = g_signal_new ("sig-with-array-prop", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, G_TYPE_ARRAY); /** * RegressTestObj::sig-with-hash-prop: * @self: an object * @hash: (element-type utf8 GObject.Value): * * This test signal is like TelepathyGlib's * TpAccount::status-changed */ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_HASH_PROP] = g_signal_new ("sig-with-hash-prop", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, G_TYPE_HASH_TABLE); /** * RegressTestObj::sig-with-strv: * @self: an object * @strs: strings * * Test GStrv as a param. */ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_STRV] = g_signal_new ("sig-with-strv", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, G_TYPE_STRV); /** * RegressTestObj::sig-with-obj: * @self: an object * @obj: (transfer none): A newly created RegressTestObj * * Test transfer none GObject as a param (tests refcounting). * Use with regress_test_obj_emit_sig_with_obj */ regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_OBJ] = g_signal_new ("sig-with-obj", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_FIRST] = g_signal_new ("first", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_FIRST, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_CLEANUP] = g_signal_new ("cleanup", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_CLEANUP, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_ALL] = g_signal_new ("all", G_TYPE_FROM_CLASS (gobject_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE | G_SIGNAL_DETAILED | G_SIGNAL_ACTION | G_SIGNAL_NO_HOOKS, 0, NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); 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; pspec = g_param_spec_object ("bare", "Bare property", "A contained object", G_TYPE_OBJECT, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_BARE, pspec); pspec = g_param_spec_boxed ("boxed", "Boxed property", "A contained boxed struct", REGRESS_TEST_TYPE_BOXED, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_BOXED, pspec); /** * RegressTestObj:hash-table: * * Type: GLib.HashTable(utf8,gint8) * Transfer: container */ pspec = g_param_spec_boxed ("hash-table", "GHashTable property", "A contained GHashTable", G_TYPE_HASH_TABLE, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_HASH_TABLE, pspec); /** * RegressTestObj:list: * * Type: GLib.List(utf8) * Transfer: none */ pspec = g_param_spec_pointer ("list", "GList property", "A contained GList", G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_LIST, pspec); /** * RegressTestObj:hash-table-old: * * Type: GLib.HashTable * Transfer: container */ pspec = g_param_spec_boxed ("hash-table-old", "GHashTable property with <>", "A contained GHashTable with <>", G_TYPE_HASH_TABLE, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_HASH_TABLE_OLD, pspec); /** * RegressTestObj:list-old: * * Type: GLib.List * Transfer: none */ pspec = g_param_spec_pointer ("list-old", "GList property with ()", "A contained GList with <>", G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_LIST_OLD, pspec); /** * TestObj:int: */ pspec = g_param_spec_int ("int", "int property", "A contained int", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_INT, pspec); /** * TestObj:float: */ pspec = g_param_spec_float ("float", "float property", "A contained float", G_MINFLOAT, G_MAXFLOAT, 1.0f, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_FLOAT, pspec); /** * TestObj:double: */ pspec = g_param_spec_double ("double", "double property", "A contained double", G_MINDOUBLE, G_MAXDOUBLE, 1.0f, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_DOUBLE, pspec); /** * TestObj:string: */ pspec = g_param_spec_string ("string", "string property", "A contained string", NULL, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_OBJ_STRING, pspec); klass->matrix = regress_test_obj_default_matrix; } static void regress_test_obj_init (RegressTestObj *obj) { obj->bare = NULL; obj->boxed = NULL; obj->hash_table = NULL; } /** * regress_test_obj_new: (constructor) * @obj: A #RegressTestObj */ RegressTestObj * regress_test_obj_new (RegressTestObj *obj) { return g_object_new (REGRESS_TEST_TYPE_OBJ, NULL); } /** * regress_constructor: (constructor) * */ RegressTestObj * regress_constructor (void) { return g_object_new (REGRESS_TEST_TYPE_OBJ, NULL); } /** * regress_test_obj_new_from_file: */ RegressTestObj * regress_test_obj_new_from_file (const char *x, GError **error) { return g_object_new (REGRESS_TEST_TYPE_OBJ, NULL); } /** * regress_test_obj_set_bare: * @bare: (allow-none): */ void regress_test_obj_set_bare (RegressTestObj *obj, GObject *bare) { if (obj->bare) g_object_unref (obj->bare); obj->bare = bare; if (obj->bare) g_object_ref (obj->bare); } void regress_test_obj_emit_sig_with_obj (RegressTestObj *obj) { RegressTestObj *obj_param = regress_constructor (); g_object_set (obj_param, "int", 3, NULL); g_signal_emit_by_name (obj, "sig-with-obj", obj_param); g_object_unref (obj_param); } int regress_test_obj_instance_method (RegressTestObj *obj) { return -1; } double regress_test_obj_static_method (int x) { return x; } /** * regress_forced_method: (method) * @obj: A #RegressTestObj * */ void regress_forced_method (RegressTestObj *obj) { } /** * regress_test_obj_torture_signature_0: * @obj: A #RegressTestObj * @x: * @y: (out): * @z: (out): * @foo: * @q: (out): * @m: * */ void regress_test_obj_torture_signature_0 (RegressTestObj *obj, int x, double *y, int *z, const char *foo, int *q, guint m) { *y = x; *z = x * 2; *q = g_utf8_strlen (foo, -1) + m; } /** * regress_test_obj_torture_signature_1: * @obj: A #RegressTestObj * @x: * @y: (out): * @z: (out): * @foo: * @q: (out): * @m: * @error: A #GError * * This function throws an error if m is odd. */ gboolean regress_test_obj_torture_signature_1 (RegressTestObj *obj, int x, double *y, int *z, const char *foo, int *q, guint m, GError **error) { *y = x; *z = x * 2; *q = g_utf8_strlen (foo, -1) + m; if (m % 2 == 0) return TRUE; g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "m is odd"); return FALSE; } /** * regress_test_obj_skip_return_val: * @obj: a #RegressTestObj * @a: Parameter. * @out_b: (out): A return value. * @c: Other parameter. * @inout_d: (inout): Will be incremented. * @out_sum: (out): Return value. * @num1: Number. * @num2: Number. * @error: Return location for error. * * Check that the return value is skipped * * Returns: (skip): %TRUE if the call succeeds, %FALSE if @error is set. */ 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, GError **error) { if (out_b != NULL) *out_b = a + 1; if (inout_d != NULL) *inout_d = *inout_d + 1; if (out_sum != NULL) *out_sum = num1 + 10*num2; return TRUE; } /** * regress_test_obj_skip_return_val_no_out: * @obj: a #RegressTestObj * @a: Parameter. * @error: Return location for error. * * Check that the return value is skipped. Succeed if a is nonzero, otherwise * raise an error. * * Returns: (skip): %TRUE if the call succeeds, %FALSE if @error is set. */ gboolean regress_test_obj_skip_return_val_no_out (RegressTestObj *obj, gint a, GError **error) { if (a == 0) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "a is zero"); return FALSE; } else { return TRUE; } } /** * regress_test_obj_skip_param: * @obj: A #RegressTestObj. * @a: Parameter. * @out_b: (out): Return value. * @c: (skip): Other parameter. * @inout_d: (inout): Will be incremented. * @out_sum: (out): Return value. * @num1: Number. * @num2: Number. * @error: Return location for error. * * Check that a parameter is skipped * * Returns: %TRUE if the call succeeds, %FALSE if @error is set. */ 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, GError **error) { if (out_b != NULL) *out_b = a + 1; if (inout_d != NULL) *inout_d = *inout_d + 1; if (out_sum != NULL) *out_sum = num1 + 10*num2; return TRUE; } /** * regress_test_obj_skip_out_param: * @obj: A #RegressTestObj. * @a: Parameter. * @out_b: (out) (skip): Return value. * @c: Other parameter. * @inout_d: (inout): Will be incremented. * @out_sum: (out): Return value. * @num1: Number. * @num2: Number. * @error: Return location for error. * * Check that the out value is skipped * * Returns: %TRUE if the call succeeds, %FALSE if @error is set. */ 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, GError **error) { if (out_b != NULL) *out_b = a + 1; if (inout_d != NULL) *inout_d = *inout_d + 1; if (out_sum != NULL) *out_sum = num1 + 10*num2; return TRUE; } /** * regress_test_obj_skip_inout_param: * @obj: A #RegressTestObj. * @a: Parameter. * @out_b: (out): Return value. * @c: Other parameter. * @inout_d: (inout) (skip): Will be incremented. * @out_sum: (out): Return value. * @num1: Number. * @num2: Number. * @error: Return location for error. * * Check that the out value is skipped * * Returns: %TRUE if the call succeeds, %FALSE if @error is set. */ 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, GError **error) { if (out_b != NULL) *out_b = a + 1; if (inout_d != NULL) *inout_d = *inout_d + 1; if (out_sum != NULL) *out_sum = num1 + 10*num2; return TRUE; } /** * regress_test_obj_do_matrix: * @obj: A #RegressTestObj * @somestr: Meaningless string * * This method is virtual. Notably its name differs from the virtual * slot name, which makes it useful for testing bindings handle this * case. * * Virtual: matrix */ int regress_test_obj_do_matrix (RegressTestObj *obj, const char *somestr) { return REGRESS_TEST_OBJ_GET_CLASS (obj)->matrix (obj, somestr); } /** * regress_func_obj_null_in: * @obj: (allow-none): A #RegressTestObj */ void regress_func_obj_null_in (RegressTestObj *obj) { } /** * regress_test_obj_null_out: * @obj: (allow-none) (out): A #RegressTestObj */ void regress_test_obj_null_out (RegressTestObj **obj) { if (obj) *obj = NULL; } /** * regress_test_array_fixed_out_objects: * @objs: (out) (array fixed-size=2) (transfer full): An array of #RegressTestObj */ void regress_test_array_fixed_out_objects (RegressTestObj ***objs) { RegressTestObj **values = g_new(gpointer, 2); values[0] = regress_constructor(); values[1] = regress_constructor(); *objs = values; } typedef struct _CallbackInfo CallbackInfo; struct _CallbackInfo { RegressTestCallbackUserData callback; GDestroyNotify notify; gpointer user_data; }; G_DEFINE_TYPE(RegressTestSubObj, regress_test_sub_obj, REGRESS_TEST_TYPE_OBJ); static void regress_test_sub_obj_class_init (RegressTestSubObjClass *klass) { } static void regress_test_sub_obj_init (RegressTestSubObj *obj) { } RegressTestObj* regress_test_sub_obj_new () { return g_object_new (REGRESS_TEST_TYPE_SUB_OBJ, NULL); } int regress_test_sub_obj_instance_method (RegressTestSubObj *obj) { return 0; } void regress_test_sub_obj_unset_bare (RegressTestSubObj *obj) { regress_test_obj_set_bare(REGRESS_TEST_OBJECT(obj), NULL); } /* RegressTestFundamental */ /** * regress_test_fundamental_object_ref: * * Returns: (transfer full): A new #RegressTestFundamentalObject */ RegressTestFundamentalObject * regress_test_fundamental_object_ref (RegressTestFundamentalObject * fundamental_object) { g_return_val_if_fail (fundamental_object != NULL, NULL); g_atomic_int_inc (&fundamental_object->refcount); return fundamental_object; } static void regress_test_fundamental_object_free (RegressTestFundamentalObject * fundamental_object) { RegressTestFundamentalObjectClass *mo_class; regress_test_fundamental_object_ref (fundamental_object); mo_class = REGRESS_TEST_FUNDAMENTAL_OBJECT_GET_CLASS (fundamental_object); mo_class->finalize (fundamental_object); if (G_LIKELY (g_atomic_int_dec_and_test (&fundamental_object->refcount))) { g_type_free_instance ((GTypeInstance *) fundamental_object); } } void regress_test_fundamental_object_unref (RegressTestFundamentalObject * fundamental_object) { g_return_if_fail (fundamental_object != NULL); g_return_if_fail (fundamental_object->refcount > 0); if (G_UNLIKELY (g_atomic_int_dec_and_test (&fundamental_object->refcount))) { regress_test_fundamental_object_free (fundamental_object); } } static void regress_test_fundamental_object_replace (RegressTestFundamentalObject ** olddata, RegressTestFundamentalObject * newdata) { RegressTestFundamentalObject *olddata_val; g_return_if_fail (olddata != NULL); olddata_val = g_atomic_pointer_get ((gpointer *) olddata); if (olddata_val == newdata) return; if (newdata) regress_test_fundamental_object_ref (newdata); while (!g_atomic_pointer_compare_and_exchange ((gpointer *) olddata, olddata_val, newdata)) { olddata_val = g_atomic_pointer_get ((gpointer *) olddata); } if (olddata_val) regress_test_fundamental_object_unref (olddata_val); } static void regress_test_value_fundamental_object_init (GValue * value) { value->data[0].v_pointer = NULL; } static void regress_test_value_fundamental_object_free (GValue * value) { if (value->data[0].v_pointer) { regress_test_fundamental_object_unref (REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST (value->data[0].v_pointer)); } } static void regress_test_value_fundamental_object_copy (const GValue * src_value, GValue * dest_value) { if (src_value->data[0].v_pointer) { dest_value->data[0].v_pointer = regress_test_fundamental_object_ref (REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST (src_value->data[0]. v_pointer)); } else { dest_value->data[0].v_pointer = NULL; } } static gpointer regress_test_value_fundamental_object_peek_pointer (const GValue * value) { return value->data[0].v_pointer; } static gchar * regress_test_value_fundamental_object_collect (GValue * value, guint n_collect_values, GTypeCValue * collect_values, guint collect_flags) { if (collect_values[0].v_pointer) { value->data[0].v_pointer = regress_test_fundamental_object_ref (collect_values[0].v_pointer); } else { value->data[0].v_pointer = NULL; } return NULL; } static gchar * regress_test_value_fundamental_object_lcopy (const GValue * value, guint n_collect_values, GTypeCValue * collect_values, guint collect_flags) { gpointer *fundamental_object_p = collect_values[0].v_pointer; if (!fundamental_object_p) { return g_strdup_printf ("value location for '%s' passed as NULL", G_VALUE_TYPE_NAME (value)); } if (!value->data[0].v_pointer) *fundamental_object_p = NULL; else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) *fundamental_object_p = value->data[0].v_pointer; else *fundamental_object_p = regress_test_fundamental_object_ref (value->data[0].v_pointer); return NULL; } static void regress_test_fundamental_object_finalize (RegressTestFundamentalObject * obj) { } static RegressTestFundamentalObject * regress_test_fundamental_object_copy_default (const RegressTestFundamentalObject * obj) { g_warning ("RegressTestFundamentalObject classes must implement RegressTestFundamentalObject::copy"); return NULL; } static void regress_test_fundamental_object_class_init (gpointer g_class, gpointer class_data) { RegressTestFundamentalObjectClass *mo_class = REGRESS_TEST_FUNDAMENTAL_OBJECT_CLASS (g_class); mo_class->copy = regress_test_fundamental_object_copy_default; mo_class->finalize = regress_test_fundamental_object_finalize; } static void regress_test_fundamental_object_init (GTypeInstance * instance, gpointer klass) { RegressTestFundamentalObject *fundamental_object = REGRESS_TEST_FUNDAMENTAL_OBJECT_CAST (instance); fundamental_object->refcount = 1; } /** * RegressTestFundamentalObject: * * Ref Func: regress_test_fundamental_object_ref * Unref Func: regress_test_fundamental_object_unref * Set Value Func: regress_test_value_set_fundamental_object * Get Value Func: regress_test_value_get_fundamental_object */ GType regress_test_fundamental_object_get_type (void) { static GType _test_fundamental_object_type = 0; if (G_UNLIKELY (_test_fundamental_object_type == 0)) { static const GTypeValueTable value_table = { regress_test_value_fundamental_object_init, regress_test_value_fundamental_object_free, regress_test_value_fundamental_object_copy, regress_test_value_fundamental_object_peek_pointer, (char *) "p", regress_test_value_fundamental_object_collect, (char *) "p", regress_test_value_fundamental_object_lcopy }; static const GTypeInfo fundamental_object_info = { sizeof (RegressTestFundamentalObjectClass), NULL, NULL, regress_test_fundamental_object_class_init, NULL, NULL, sizeof (RegressTestFundamentalObject), 0, (GInstanceInitFunc) regress_test_fundamental_object_init, &value_table }; static const GTypeFundamentalInfo fundamental_object_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; _test_fundamental_object_type = g_type_fundamental_next (); g_type_register_fundamental (_test_fundamental_object_type, "RegressTestFundamentalObject", &fundamental_object_info, &fundamental_object_fundamental_info, G_TYPE_FLAG_ABSTRACT); } return _test_fundamental_object_type; } /** * regress_test_value_set_fundamental_object: (skip) * @value: * @fundamental_object: */ void regress_test_value_set_fundamental_object (GValue * value, RegressTestFundamentalObject * fundamental_object) { gpointer *pointer_p; g_return_if_fail (REGRESS_TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT (value)); g_return_if_fail (fundamental_object == NULL || REGRESS_TEST_IS_FUNDAMENTAL_OBJECT (fundamental_object)); pointer_p = &value->data[0].v_pointer; regress_test_fundamental_object_replace ((RegressTestFundamentalObject **) pointer_p, fundamental_object); } /** * regress_test_value_get_fundamental_object: (skip) * @value: */ RegressTestFundamentalObject * regress_test_value_get_fundamental_object (const GValue * value) { g_return_val_if_fail (REGRESS_TEST_VALUE_HOLDS_FUNDAMENTAL_OBJECT (value), NULL); return value->data[0].v_pointer; } static RegressTestFundamentalObjectClass *parent_class = NULL; G_DEFINE_TYPE (RegressTestFundamentalSubObject, regress_test_fundamental_sub_object, REGRESS_TEST_TYPE_FUNDAMENTAL_OBJECT); static RegressTestFundamentalSubObject * _regress_test_fundamental_sub_object_copy (RegressTestFundamentalSubObject * fundamental_sub_object) { RegressTestFundamentalSubObject *copy; copy = regress_test_fundamental_sub_object_new(NULL); copy->data = g_strdup(fundamental_sub_object->data); return copy; } static void regress_test_fundamental_sub_object_finalize (RegressTestFundamentalSubObject * fundamental_sub_object) { g_return_if_fail (fundamental_sub_object != NULL); g_free(fundamental_sub_object->data); regress_test_fundamental_object_finalize (REGRESS_TEST_FUNDAMENTAL_OBJECT (fundamental_sub_object)); } static void regress_test_fundamental_sub_object_class_init (RegressTestFundamentalSubObjectClass * klass) { parent_class = g_type_class_peek_parent (klass); klass->fundamental_object_class.copy = (RegressTestFundamentalObjectCopyFunction) _regress_test_fundamental_sub_object_copy; klass->fundamental_object_class.finalize = (RegressTestFundamentalObjectFinalizeFunction) regress_test_fundamental_sub_object_finalize; } static void regress_test_fundamental_sub_object_init(RegressTestFundamentalSubObject *object) { } /** * regress_test_fundamental_sub_object_new: */ RegressTestFundamentalSubObject * regress_test_fundamental_sub_object_new (const char * data) { RegressTestFundamentalSubObject *object; object = (RegressTestFundamentalSubObject *) g_type_create_instance (regress_test_fundamental_sub_object_get_type()); object->data = g_strdup(data); return object; } /** * regress_test_callback: * @callback: (scope call) (allow-none): * **/ int regress_test_callback (RegressTestCallback callback) { if (callback != NULL) return callback(); return 0; } /** * regress_test_multi_callback: * @callback: (scope call) (allow-none): * **/ int regress_test_multi_callback (RegressTestCallback callback) { int sum = 0; if (callback != NULL) { sum += callback(); sum += callback(); } return sum; } /** * regress_test_array_callback: * @callback: (scope call): * **/ int regress_test_array_callback (RegressTestCallbackArray callback) { static const char *strings[] = { "one", "two", "three" }; static int ints[] = { -1, 0, 1, 2 }; int sum = 0; sum += callback(ints, 4, strings, 3); sum += callback(ints, 4, strings, 3); return sum; } /** * regress_test_simple_callback: * @callback: (scope call) (allow-none): * **/ void regress_test_simple_callback (RegressTestSimpleCallback callback) { if (callback != NULL) callback(); return; } /** * regress_test_callback_user_data: * @callback: (scope call): * * Call - callback parameter persists for the duration of the method * call and can be released on return. **/ int regress_test_callback_user_data (RegressTestCallbackUserData callback, gpointer user_data) { return callback(user_data); } static GSList *notified_callbacks = NULL; /** * regress_test_callback_destroy_notify: * @callback: (scope notified): * * Notified - callback persists until a DestroyNotify delegate * is invoked. **/ int regress_test_callback_destroy_notify (RegressTestCallbackUserData callback, gpointer user_data, GDestroyNotify notify) { int retval; CallbackInfo *info; retval = callback(user_data); info = g_slice_new(CallbackInfo); info->callback = callback; info->notify = notify; info->user_data = user_data; notified_callbacks = g_slist_prepend(notified_callbacks, info); return retval; } /** * regress_test_callback_thaw_notifications: * * Invokes all callbacks installed by #test_callback_destroy_notify(), * adding up their return values, and removes them, invoking the * corresponding destroy notfications. * * Return value: Sum of the return values of the invoked callbacks. */ int regress_test_callback_thaw_notifications (void) { int retval = 0; GSList *node; for (node = notified_callbacks; node != NULL; node = node->next) { CallbackInfo *info = node->data; retval += info->callback (info->user_data); if (info->notify) info->notify (info->user_data); g_slice_free (CallbackInfo, info); } g_slist_free (notified_callbacks); notified_callbacks = NULL; return retval; } static GSList *async_callbacks = NULL; /** * regress_test_callback_async: * @callback: (scope async): * **/ void regress_test_callback_async (RegressTestCallbackUserData callback, gpointer user_data) { CallbackInfo *info; info = g_slice_new(CallbackInfo); info->callback = callback; info->user_data = user_data; async_callbacks = g_slist_prepend(async_callbacks, info); } /** * regress_test_callback_thaw_async: */ int regress_test_callback_thaw_async (void) { int retval = 0; GSList *node; for (node = async_callbacks; node != NULL; node = node->next) { CallbackInfo *info = node->data; retval = info->callback (info->user_data); g_slice_free (CallbackInfo, info); } g_slist_free (async_callbacks); async_callbacks = NULL; return retval; } void regress_test_async_ready_callback (GAsyncReadyCallback callback) { GSimpleAsyncResult *result = g_simple_async_result_new (NULL, callback, NULL, regress_test_async_ready_callback); g_simple_async_result_complete_in_idle (result); } /** * regress_test_obj_instance_method_callback: * @callback: (scope call) (allow-none): * **/ void regress_test_obj_instance_method_callback (RegressTestObj *obj, RegressTestCallback callback) { if (callback != NULL) callback(); } /** * regress_test_obj_static_method_callback: * @callback: (scope call) (allow-none): * **/ void regress_test_obj_static_method_callback (RegressTestCallback callback) { if (callback != NULL) callback(); } /** * regress_test_obj_new_callback: * @callback: (scope notified): **/ RegressTestObj * regress_test_obj_new_callback (RegressTestCallbackUserData callback, gpointer user_data, GDestroyNotify notify) { CallbackInfo *info; callback(user_data); info = g_slice_new(CallbackInfo); info->callback = callback; info->notify = notify; info->user_data = user_data; notified_callbacks = g_slist_prepend(notified_callbacks, info); return g_object_new (REGRESS_TEST_TYPE_OBJ, NULL); } /** * regress_test_hash_table_callback: * @data: (element-type utf8 gint): GHashTable that gets passed to callback * @callback: (scope call): **/ void regress_test_hash_table_callback (GHashTable *data, RegressTestCallbackHashtable callback) { callback (data); } /** * regress_test_gerror_callback: * @callback: (scope call): **/ void regress_test_gerror_callback (RegressTestCallbackGError callback) { GError *error; error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED, "regression test error"); callback (error); g_error_free (error); } /** * regress_test_null_gerror_callback: * @callback: (scope call): **/ void regress_test_null_gerror_callback (RegressTestCallbackGError callback) { callback (NULL); } /** * regress_test_owned_gerror_callback: * @callback: (scope call): **/ void regress_test_owned_gerror_callback (RegressTestCallbackOwnedGError callback) { GError *error; error = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_PERMISSION_DENIED, "regression test owned error"); callback (error); } /* interface */ static void regress_test_interface_class_init(void *g_iface) { } GType regress_test_interface_get_type(void) { static GType type = 0; if (type == 0) { type = g_type_register_static_simple (G_TYPE_INTERFACE, "RegressTestInterface", sizeof (RegressTestInterfaceIface), (GClassInitFunc) regress_test_interface_class_init, 0, NULL, 0); } return type; } /* gobject with non-standard prefix */ G_DEFINE_TYPE(RegressTestWi8021x, regress_test_wi_802_1x, G_TYPE_OBJECT); enum { PROP_TEST_WI_802_1X_TESTBOOL = 1 }; static void regress_test_wi_802_1x_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { RegressTestWi8021x *self = REGRESS_TEST_WI_802_1X (object); switch (property_id) { case PROP_TEST_WI_802_1X_TESTBOOL: regress_test_wi_802_1x_set_testbool (self, g_value_get_boolean (value)); break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void regress_test_wi_802_1x_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { RegressTestWi8021x *self = REGRESS_TEST_WI_802_1X (object); switch (property_id) { case PROP_TEST_WI_802_1X_TESTBOOL: g_value_set_boolean (value, regress_test_wi_802_1x_get_testbool (self)); break; default: /* We don't have any other property... */ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } static void regress_test_wi_802_1x_dispose (GObject *gobject) { /* Chain up to the parent class */ G_OBJECT_CLASS (regress_test_wi_802_1x_parent_class)->dispose (gobject); } static void regress_test_wi_802_1x_class_init (RegressTestWi8021xClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GParamSpec *pspec; gobject_class->set_property = regress_test_wi_802_1x_set_property; gobject_class->get_property = regress_test_wi_802_1x_get_property; gobject_class->dispose = regress_test_wi_802_1x_dispose; pspec = g_param_spec_boolean ("testbool", "Nick for testbool", "Blurb for testbool", TRUE, G_PARAM_READWRITE); g_object_class_install_property (gobject_class, PROP_TEST_WI_802_1X_TESTBOOL, pspec); } static void regress_test_wi_802_1x_init (RegressTestWi8021x *obj) { obj->testbool = TRUE; } RegressTestWi8021x * regress_test_wi_802_1x_new (void) { return g_object_new (REGRESS_TEST_TYPE_WI_802_1X, NULL); } void regress_test_wi_802_1x_set_testbool (RegressTestWi8021x *obj, gboolean val) { obj->testbool = val; } gboolean regress_test_wi_802_1x_get_testbool (RegressTestWi8021x *obj) { return obj->testbool; } int regress_test_wi_802_1x_static_method (int x) { return 2*x; } /* floating gobject */ G_DEFINE_TYPE(RegressTestFloating, regress_test_floating, G_TYPE_INITIALLY_UNOWNED); static void regress_test_floating_finalize(GObject *object) { g_assert(!g_object_is_floating (object)); G_OBJECT_CLASS(regress_test_floating_parent_class)->finalize(object); } static void regress_test_floating_class_init (RegressTestFloatingClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); gobject_class->finalize = regress_test_floating_finalize; } static void regress_test_floating_init (RegressTestFloating *obj) { } /** * regress_test_floating_new: * * Returns:: A new floating #RegressTestFloating */ RegressTestFloating * regress_test_floating_new (void) { return g_object_new (REGRESS_TEST_TYPE_FLOATING, NULL); } /** * regress_test_torture_signature_0: * @x: * @y: (out): * @z: (out): * @foo: * @q: (out): * @m: * */ void regress_test_torture_signature_0 (int x, double *y, int *z, const char *foo, int *q, guint m) { *y = x; *z = x * 2; *q = g_utf8_strlen (foo, -1) + m; } /** * regress_test_torture_signature_1: * @x: * @y: (out): * @z: (out): * @foo: * @q: (out): * @m: * @error: A #GError * * This function throws an error if m is odd. */ gboolean regress_test_torture_signature_1 (int x, double *y, int *z, const char *foo, int *q, guint m, GError **error) { *y = x; *z = x * 2; *q = g_utf8_strlen (foo, -1) + m; if (m % 2 == 0) return TRUE; g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, "m is odd"); return FALSE; } /** * regress_test_torture_signature_2: * @x: * @callback: * @user_data: * @notify: * @y: (out): * @z: (out): * @foo: * @q: (out): * @m: * */ 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) { *y = x; *z = x * 2; *q = g_utf8_strlen (foo, -1) + m; notify (user_data); } /** * regress_test_date_in_gvalue: * * Returns: (transfer full): */ GValue * regress_test_date_in_gvalue (void) { GValue *value = g_new0 (GValue, 1); GDate *date = g_date_new_dmy (5, 12, 1984); g_value_init (value, G_TYPE_DATE); g_value_take_boxed (value, date); return value; } /** * regress_test_strv_in_gvalue: * * Returns: (transfer full): */ GValue * regress_test_strv_in_gvalue (void) { GValue *value = g_new0 (GValue, 1); const char *strv[] = { "one", "two", "three", NULL }; g_value_init (value, G_TYPE_STRV); g_value_set_boxed (value, strv); return value; } /** * regress_test_multiline_doc_comments: * * This is a function. * * It has multiple lines in the documentation. * * The sky is blue. * * You will give me your credit card number. */ void regress_test_multiline_doc_comments (void) { } /** * regress_test_nested_parameter: * @a: An integer * * * * * * Syntax * Explanation * Examples * * * * * rgb(@r, @g, @b) * An opaque color; @r, @g, @b can be either integers between * 0 and 255 or percentages * rgb(128, 10, 54) * rgb(20%, 30%, 0%) * * * rgba(@r, @g, @b, @a) * A translucent color; @r, @g, @b are as in the previous row, * @a is a floating point number between 0 and 1 * rgba(255, 255, 0, 0.5) * * * * * * What we're testing here is that the scanner ignores the @a nested inside XML. */ void regress_test_nested_parameter (int a) { } /** * regress_introspectable_via_alias: * */ void regress_introspectable_via_alias (RegressPtrArrayAlias *data) { } /** * regress_not_introspectable_via_alias: * */ void regress_not_introspectable_via_alias (RegressVaListAlias ok) { } /** * regress_aliased_caller_alloc: * @boxed: (out): */ void regress_aliased_caller_alloc (RegressAliasedTestBoxed *boxed) { boxed->priv = g_slice_new0 (RegressTestBoxedPrivate); boxed->priv->magic = 0xdeadbeef; } void regress_test_struct_fixed_array_frob (RegressTestStructFixedArray *str) { guint i; str->just_int = 7; for (i = 0; i < G_N_ELEMENTS(str->array); i++) str->array[i] = 42 + i; } 0707010007ffb5000081a40000000000000000000000014f83d2e70001a3ba000000b600010002ffffffffffffffff0000004a00000000root/usr/local/share/gobject-introspection-1.0/tests/gimarshallingtests.c/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- * vim: tabstop=4 shiftwidth=4 expandtab */ #include "gimarshallingtests.h" #include static void gi_marshalling_tests_boxed_struct_free (GIMarshallingTestsBoxedStruct *struct_); /* Booleans */ gboolean gi_marshalling_tests_boolean_return_true (void) { return TRUE; } gboolean gi_marshalling_tests_boolean_return_false (void) { return FALSE; } void gi_marshalling_tests_boolean_in_true (gboolean bool_) { g_assert (bool_ == TRUE); } void gi_marshalling_tests_boolean_in_false (gboolean bool_) { g_assert (bool_ == FALSE); } /** * gi_marshalling_tests_boolean_out_true: * @bool_: (out): */ void gi_marshalling_tests_boolean_out_true (gboolean *bool_) { *bool_ = TRUE; } /** * gi_marshalling_tests_boolean_out_false: * @bool_: (out): */ void gi_marshalling_tests_boolean_out_false (gboolean *bool_) { *bool_ = FALSE; } /** * gi_marshalling_tests_boolean_inout_true_false: * @bool_: (inout): */ void gi_marshalling_tests_boolean_inout_true_false (gboolean *bool_) { g_assert (*bool_ == TRUE); *bool_ = FALSE; } /** * gi_marshalling_tests_boolean_inout_false_true: * @bool_: (inout): */ void gi_marshalling_tests_boolean_inout_false_true (gboolean *bool_) { g_assert (*bool_ == FALSE); *bool_ = TRUE; } /* Integers */ gint8 gi_marshalling_tests_int8_return_max (void) { return G_MAXINT8; } gint8 gi_marshalling_tests_int8_return_min (void) { return G_MININT8; } void gi_marshalling_tests_int8_in_max (gint8 int8) { g_assert(int8 == G_MAXINT8); } void gi_marshalling_tests_int8_in_min (gint8 int8) { g_assert(int8 == G_MININT8); } /** * gi_marshalling_tests_int8_out_max: * @int8: (out): */ void gi_marshalling_tests_int8_out_max (gint8 *int8) { *int8 = G_MAXINT8; } /** * gi_marshalling_tests_int8_out_min: * @int8: (out): */ void gi_marshalling_tests_int8_out_min (gint8 *int8) { *int8 = G_MININT8; } /** * gi_marshalling_tests_int8_inout_max_min: * @int8: (inout): */ void gi_marshalling_tests_int8_inout_max_min (gint8 *int8) { g_assert(*int8 == G_MAXINT8); *int8 = G_MININT8; } /** * gi_marshalling_tests_int8_inout_min_max: * @int8: (inout): */ void gi_marshalling_tests_int8_inout_min_max (gint8 *int8) { g_assert(*int8 == G_MININT8); *int8 = G_MAXINT8; } guint8 gi_marshalling_tests_uint8_return (void) { return G_MAXUINT8; } void gi_marshalling_tests_uint8_in (guint8 uint8) { g_assert(uint8 == G_MAXUINT8); } /** * gi_marshalling_tests_uint8_out: * @uint8: (out): */ void gi_marshalling_tests_uint8_out (guint8 *uint8) { *uint8 = G_MAXUINT8; } /** * gi_marshalling_tests_uint8_inout: * @uint8: (inout): */ void gi_marshalling_tests_uint8_inout (guint8 *uint8) { g_assert(*uint8 == G_MAXUINT8); *uint8 = 0; } gint16 gi_marshalling_tests_int16_return_max (void) { return G_MAXINT16; } gint16 gi_marshalling_tests_int16_return_min (void) { return G_MININT16; } void gi_marshalling_tests_int16_in_max (gint16 int16) { g_assert(int16 == G_MAXINT16); } void gi_marshalling_tests_int16_in_min (gint16 int16) { g_assert(int16 == G_MININT16); } /** * gi_marshalling_tests_int16_out_max: * @int16: (out): */ void gi_marshalling_tests_int16_out_max (gint16 *int16) { *int16 = G_MAXINT16; } /** * gi_marshalling_tests_int16_out_min: * @int16: (out): */ void gi_marshalling_tests_int16_out_min (gint16 *int16) { *int16 = G_MININT16; } /** * gi_marshalling_tests_int16_inout_max_min: * @int16: (inout): */ void gi_marshalling_tests_int16_inout_max_min (gint16 *int16) { g_assert(*int16 == G_MAXINT16); *int16 = G_MININT16; } /** * gi_marshalling_tests_int16_inout_min_max: * @int16: (inout): */ void gi_marshalling_tests_int16_inout_min_max (gint16 *int16) { g_assert(*int16 == G_MININT16); *int16 = G_MAXINT16; } guint16 gi_marshalling_tests_uint16_return (void) { return G_MAXUINT16; } void gi_marshalling_tests_uint16_in (guint16 uint16) { g_assert(uint16 == G_MAXUINT16); } /** * gi_marshalling_tests_uint16_out: * @uint16: (out): */ void gi_marshalling_tests_uint16_out (guint16 *uint16) { *uint16 = G_MAXUINT16; } /** * gi_marshalling_tests_uint16_inout: * @uint16: (inout): */ void gi_marshalling_tests_uint16_inout (guint16 *uint16) { g_assert(*uint16 == G_MAXUINT16); *uint16 = 0; } gint32 gi_marshalling_tests_int32_return_max (void) { return G_MAXINT32; } gint32 gi_marshalling_tests_int32_return_min (void) { return G_MININT32; } void gi_marshalling_tests_int32_in_max (gint32 int32) { g_assert(int32 == G_MAXINT32); } void gi_marshalling_tests_int32_in_min (gint32 int32) { g_assert(int32 == G_MININT32); } /** * gi_marshalling_tests_int32_out_max: * @int32: (out): */ void gi_marshalling_tests_int32_out_max (gint32 *int32) { *int32 = G_MAXINT32; } /** * gi_marshalling_tests_int32_out_min: * @int32: (out): */ void gi_marshalling_tests_int32_out_min (gint32 *int32) { *int32 = G_MININT32; } /** * gi_marshalling_tests_int32_inout_max_min: * @int32: (inout): */ void gi_marshalling_tests_int32_inout_max_min (gint32 *int32) { g_assert(*int32 == G_MAXINT32); *int32 = G_MININT32; } /** * gi_marshalling_tests_int32_inout_min_max: * @int32: (inout): */ void gi_marshalling_tests_int32_inout_min_max (gint32 *int32) { g_assert(*int32 == G_MININT32); *int32 = G_MAXINT32; } guint32 gi_marshalling_tests_uint32_return (void) { return G_MAXUINT32; } void gi_marshalling_tests_uint32_in (guint32 uint32) { g_assert(uint32 == G_MAXUINT32); } /** * gi_marshalling_tests_uint32_out: * @uint32: (out): */ void gi_marshalling_tests_uint32_out (guint32 *uint32) { *uint32 = G_MAXUINT32; } /** * gi_marshalling_tests_uint32_inout: * @uint32: (inout): */ void gi_marshalling_tests_uint32_inout (guint32 *uint32) { g_assert(*uint32 == G_MAXUINT32); *uint32 = 0; } gint64 gi_marshalling_tests_int64_return_max (void) { return G_MAXINT64; } gint64 gi_marshalling_tests_int64_return_min (void) { return G_MININT64; } void gi_marshalling_tests_int64_in_max (gint64 int64) { g_assert(int64 == G_MAXINT64); } void gi_marshalling_tests_int64_in_min (gint64 int64) { g_assert(int64 == G_MININT64); } /** * gi_marshalling_tests_int64_out_max: * @int64: (out): */ void gi_marshalling_tests_int64_out_max (gint64 *int64) { *int64 = G_MAXINT64; } /** * gi_marshalling_tests_int64_out_min: * @int64: (out): */ void gi_marshalling_tests_int64_out_min (gint64 *int64) { *int64 = G_MININT64; } /** * gi_marshalling_tests_int64_inout_max_min: * @int64: (inout): */ void gi_marshalling_tests_int64_inout_max_min (gint64 *int64) { g_assert(*int64 == G_MAXINT64); *int64 = G_MININT64; } /** * gi_marshalling_tests_int64_inout_min_max: * @int64: (inout): */ void gi_marshalling_tests_int64_inout_min_max (gint64 *int64) { g_assert(*int64 == G_MININT64); *int64 = G_MAXINT64; } guint64 gi_marshalling_tests_uint64_return (void) { return G_MAXUINT64; } void gi_marshalling_tests_uint64_in (guint64 uint64) { g_assert(uint64 == G_MAXUINT64); } /** * gi_marshalling_tests_uint64_out: * @uint64: (out): */ void gi_marshalling_tests_uint64_out (guint64 *uint64) { *uint64 = G_MAXUINT64; } /** * gi_marshalling_tests_uint64_inout: * @uint64: (inout): */ void gi_marshalling_tests_uint64_inout (guint64 *uint64) { g_assert(*uint64 == G_MAXUINT64); *uint64 = 0; } gshort gi_marshalling_tests_short_return_max (void) { return G_MAXSHORT; } gshort gi_marshalling_tests_short_return_min (void) { return G_MINSHORT; } void gi_marshalling_tests_short_in_max (gshort short_) { g_assert(short_ == G_MAXSHORT); } void gi_marshalling_tests_short_in_min (gshort short_) { g_assert(short_ == G_MINSHORT); } /** * gi_marshalling_tests_short_out_max: * @short_: (out): */ void gi_marshalling_tests_short_out_max (gshort *short_) { *short_ = G_MAXSHORT; } /** * gi_marshalling_tests_short_out_min: * @short_: (out): */ void gi_marshalling_tests_short_out_min (gshort *short_) { *short_ = G_MINSHORT; } /** * gi_marshalling_tests_short_inout_max_min: * @short_: (inout): */ void gi_marshalling_tests_short_inout_max_min (gshort *short_) { g_assert(*short_ == G_MAXSHORT); *short_ = G_MINSHORT; } /** * gi_marshalling_tests_short_inout_min_max: * @short_: (inout): */ void gi_marshalling_tests_short_inout_min_max (gshort *short_) { g_assert(*short_ == G_MINSHORT); *short_ = G_MAXSHORT; } gushort gi_marshalling_tests_ushort_return (void) { return G_MAXUSHORT; } void gi_marshalling_tests_ushort_in (gushort ushort_) { g_assert(ushort_ == G_MAXUSHORT); } /** * gi_marshalling_tests_ushort_out: * @ushort_: (out): */ void gi_marshalling_tests_ushort_out (gushort *ushort_) { *ushort_ = G_MAXUSHORT; } /** * gi_marshalling_tests_ushort_inout: * @ushort_: (inout): */ void gi_marshalling_tests_ushort_inout (gushort *ushort_) { g_assert(*ushort_ == G_MAXUSHORT); *ushort_ = 0; } gint gi_marshalling_tests_int_return_max (void) { return G_MAXINT; } gint gi_marshalling_tests_int_return_min (void) { return G_MININT; } void gi_marshalling_tests_int_in_max (gint int_) { g_assert(int_ == G_MAXINT); } void gi_marshalling_tests_int_in_min (gint int_) { g_assert(int_ == G_MININT); } /** * gi_marshalling_tests_int_out_max: * @int_: (out): */ void gi_marshalling_tests_int_out_max (gint *int_) { *int_ = G_MAXINT; } /** * gi_marshalling_tests_int_out_min: * @int_: (out): */ void gi_marshalling_tests_int_out_min (gint *int_) { *int_ = G_MININT; } /** * gi_marshalling_tests_int_inout_max_min: * @int_: (inout): */ void gi_marshalling_tests_int_inout_max_min (gint *int_) { g_assert(*int_ == G_MAXINT); *int_ = G_MININT; } /** * gi_marshalling_tests_int_inout_min_max: * @int_: (inout): */ void gi_marshalling_tests_int_inout_min_max (gint *int_) { g_assert(*int_ == G_MININT); *int_ = G_MAXINT; } guint gi_marshalling_tests_uint_return (void) { return G_MAXUINT; } void gi_marshalling_tests_uint_in (guint uint_) { g_assert(uint_ == G_MAXUINT); } /** * gi_marshalling_tests_uint_out: * @uint_: (out): */ void gi_marshalling_tests_uint_out (guint *uint_) { *uint_ = G_MAXUINT; } /** * gi_marshalling_tests_uint_inout: * @uint_: (inout): */ void gi_marshalling_tests_uint_inout (guint *uint_) { g_assert(*uint_ == G_MAXUINT); *uint_ = 0; } glong gi_marshalling_tests_long_return_max (void) { return G_MAXLONG; } glong gi_marshalling_tests_long_return_min (void) { return G_MINLONG; } void gi_marshalling_tests_long_in_max (glong long_) { g_assert(long_ == G_MAXLONG); } void gi_marshalling_tests_long_in_min (glong long_) { g_assert(long_ == G_MINLONG); } /** * gi_marshalling_tests_long_out_max: * @long_: (out): */ void gi_marshalling_tests_long_out_max (glong *long_) { *long_ = G_MAXLONG; } /** * gi_marshalling_tests_long_out_min: * @long_: (out): */ void gi_marshalling_tests_long_out_min (glong *long_) { *long_ = G_MINLONG; } /** * gi_marshalling_tests_long_inout_max_min: * @long_: (inout): */ void gi_marshalling_tests_long_inout_max_min (glong *long_) { g_assert(*long_ == G_MAXLONG); *long_ = G_MINLONG; } /** * gi_marshalling_tests_long_inout_min_max: * @long_: (inout): */ void gi_marshalling_tests_long_inout_min_max (glong *long_) { g_assert(*long_ == G_MINLONG); *long_ = G_MAXLONG; } gulong gi_marshalling_tests_ulong_return (void) { return G_MAXULONG; } void gi_marshalling_tests_ulong_in (gulong ulong_) { g_assert(ulong_ == G_MAXULONG); } /** * gi_marshalling_tests_ulong_out: * @ulong_: (out): */ void gi_marshalling_tests_ulong_out (gulong *ulong_) { *ulong_ = G_MAXULONG; } /** * gi_marshalling_tests_ulong_inout: * @ulong_: (inout): */ void gi_marshalling_tests_ulong_inout (gulong *ulong_) { g_assert(*ulong_ == G_MAXULONG); *ulong_ = 0; } gssize gi_marshalling_tests_ssize_return_max (void) { return G_MAXSSIZE; } gssize gi_marshalling_tests_ssize_return_min (void) { return G_MINSSIZE; } void gi_marshalling_tests_ssize_in_max (gssize ssize) { g_assert(ssize == G_MAXSSIZE); } void gi_marshalling_tests_ssize_in_min (gssize ssize) { g_assert(ssize == G_MINSSIZE); } /** * gi_marshalling_tests_ssize_out_max: * @ssize: (out): */ void gi_marshalling_tests_ssize_out_max (gssize *ssize) { *ssize = G_MAXSSIZE; } /** * gi_marshalling_tests_ssize_out_min: * @ssize: (out): */ void gi_marshalling_tests_ssize_out_min (gssize *ssize) { *ssize = G_MINSSIZE; } /** * gi_marshalling_tests_ssize_inout_max_min: * @ssize: (inout): */ void gi_marshalling_tests_ssize_inout_max_min (gssize *ssize) { g_assert(*ssize == G_MAXSSIZE); *ssize = G_MINSSIZE; } /** * gi_marshalling_tests_ssize_inout_min_max: * @ssize: (inout): */ void gi_marshalling_tests_ssize_inout_min_max (gssize *ssize) { g_assert(*ssize == G_MINSSIZE); *ssize = G_MAXSSIZE; } gsize gi_marshalling_tests_size_return (void) { return G_MAXSIZE; } void gi_marshalling_tests_size_in (gsize size) { g_assert(size == G_MAXSIZE); } /** * gi_marshalling_tests_size_out: * @size: (out): */ void gi_marshalling_tests_size_out (gsize *size) { *size = G_MAXSIZE; } /** * gi_marshalling_tests_size_inout: * @size: (inout): */ void gi_marshalling_tests_size_inout (gsize *size) { g_assert(*size == G_MAXSIZE); *size = 0; } gfloat gi_marshalling_tests_float_return (void) { return G_MAXFLOAT; } void gi_marshalling_tests_float_in (gfloat float_) { g_assert(float_ == G_MAXFLOAT); } /** * gi_marshalling_tests_float_out: * @float_: (out): */ void gi_marshalling_tests_float_out (gfloat *float_) { *float_ = G_MAXFLOAT; } /** * gi_marshalling_tests_float_inout: * @float_: (inout): */ void gi_marshalling_tests_float_inout (gfloat *float_) { g_assert(*float_ == G_MAXFLOAT); *float_ = G_MINFLOAT; } gdouble gi_marshalling_tests_double_return (void) { return G_MAXDOUBLE; } void gi_marshalling_tests_double_in (gdouble double_) { g_assert(double_ == G_MAXDOUBLE); } /** * gi_marshalling_tests_double_out: * @double_: (out): */ void gi_marshalling_tests_double_out (gdouble *double_) { *double_ = G_MAXDOUBLE; } /** * gi_marshalling_tests_double_inout: * @double_: (inout): */ void gi_marshalling_tests_double_inout (gdouble *double_) { g_assert(*double_ == G_MAXDOUBLE); *double_ = G_MINDOUBLE; } time_t gi_marshalling_tests_time_t_return (void) { return 1234567890; } void gi_marshalling_tests_time_t_in (time_t time_t_) { g_assert(time_t_ == 1234567890); } /** * gi_marshalling_tests_time_t_out: * @time_t_: (out): */ void gi_marshalling_tests_time_t_out (time_t *time_t_) { *time_t_ = 1234567890; } /** * gi_marshalling_tests_time_t_inout: * @time_t_: (inout): */ void gi_marshalling_tests_time_t_inout (time_t *time_t_) { g_assert(*time_t_ == 1234567890); *time_t_ = 0; } GType gi_marshalling_tests_gtype_return (void) { return G_TYPE_NONE; } GType gi_marshalling_tests_gtype_string_return (void) { return G_TYPE_STRING; } void gi_marshalling_tests_gtype_in (GType gtype) { g_assert(gtype == G_TYPE_NONE); } void gi_marshalling_tests_gtype_string_in (GType gtype) { g_assert(gtype == G_TYPE_STRING); } /** * gi_marshalling_tests_gtype_out: * @gtype: (out): */ void gi_marshalling_tests_gtype_out (GType *gtype) { *gtype = G_TYPE_NONE; } /** * gi_marshalling_tests_gtype_string_out: * @gtype: (out): */ void gi_marshalling_tests_gtype_string_out (GType *gtype) { *gtype = G_TYPE_STRING; } /** * gi_marshalling_tests_gtype_inout: * @gtype: (inout): */ void gi_marshalling_tests_gtype_inout (GType *gtype) { 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; } gchar * gi_marshalling_tests_utf8_full_return (void) { return g_strdup(GI_MARSHALLING_TESTS_CONSTANT_UTF8); } void gi_marshalling_tests_utf8_none_in (const gchar *utf8) { g_assert(strcmp(GI_MARSHALLING_TESTS_CONSTANT_UTF8, utf8) == 0); } /** * gi_marshalling_tests_utf8_none_out: * @utf8: (out) (transfer none): */ void gi_marshalling_tests_utf8_none_out (gchar **utf8) { *utf8 = GI_MARSHALLING_TESTS_CONSTANT_UTF8; } /** * gi_marshalling_tests_utf8_full_out: * @utf8: (out) (transfer full): */ void gi_marshalling_tests_utf8_full_out (gchar **utf8) { *utf8 = g_strdup(GI_MARSHALLING_TESTS_CONSTANT_UTF8); } /** * gi_marshalling_tests_utf8_dangling_out: * @utf8: (out) (transfer full): */ 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. */ } /** * gi_marshalling_tests_utf8_none_inout: * @utf8: (inout) (transfer none): */ void gi_marshalling_tests_utf8_none_inout (gchar **utf8) { g_assert(strcmp(GI_MARSHALLING_TESTS_CONSTANT_UTF8, *utf8) == 0); *utf8 = ""; } /** * gi_marshalling_tests_utf8_full_inout: * @utf8: (inout) (transfer full): */ void gi_marshalling_tests_utf8_full_inout (gchar **utf8) { g_assert(strcmp(GI_MARSHALLING_TESTS_CONSTANT_UTF8, *utf8) == 0); g_free(*utf8); *utf8 = g_strdup(""); } /** * gi_marshalling_tests_init_function: * @n_args: (inout) (allow-none): number of args * @argv: (inout) (array length=n_args) (allow-none): args * * This is like gtk_init(). */ gboolean gi_marshalling_tests_init_function (gint *n_args, char ***argv) { if (n_args == NULL) return TRUE; if (*n_args == 0) return TRUE; (*n_args)--; g_assert (argv != NULL); (*argv)[*n_args] = NULL; return TRUE; } /** * gi_marshalling_tests_array_fixed_int_return: * Returns: (array fixed-size=4): */ const gint * gi_marshalling_tests_array_fixed_int_return (void) { static gint ints[] = {-1, 0, 1, 2}; return ints; } /** * gi_marshalling_tests_array_fixed_short_return: * Returns: (array fixed-size=4): */ const gshort * gi_marshalling_tests_array_fixed_short_return (void) { static gshort shorts[] = {-1, 0, 1, 2}; return shorts; } /** * gi_marshalling_tests_array_fixed_int_in: * @ints: (array fixed-size=4): */ void gi_marshalling_tests_array_fixed_int_in (const gint *ints) { g_assert(ints[0] == -1); g_assert(ints[1] == 0); g_assert(ints[2] == 1); g_assert(ints[3] == 2); } /** * gi_marshalling_tests_array_fixed_short_in: * @shorts: (array fixed-size=4): */ void gi_marshalling_tests_array_fixed_short_in (const gshort *shorts) { g_assert(shorts[0] == -1); g_assert(shorts[1] == 0); g_assert(shorts[2] == 1); g_assert(shorts[3] == 2); } /** * gi_marshalling_tests_array_fixed_out: * @ints: (out) (array fixed-size=4) (transfer none): */ void gi_marshalling_tests_array_fixed_out (gint **ints) { static gint values[] = {-1, 0, 1, 2}; *ints = values; } /** * gi_marshalling_tests_array_fixed_out_struct: * @structs: (out) (array fixed-size=2) (transfer none): */ void gi_marshalling_tests_array_fixed_out_struct (GIMarshallingTestsSimpleStruct **structs) { static GIMarshallingTestsSimpleStruct *values; if (values == NULL) { values = g_new(GIMarshallingTestsSimpleStruct, 2); values[0].long_ = 7; values[0].int8 = 6; values[1].long_ = 6; values[1].int8 = 7; } *structs = values; } /** * gi_marshalling_tests_array_fixed_inout: * @ints: (inout) (array fixed-size=4) (transfer none): */ void gi_marshalling_tests_array_fixed_inout (gint **ints) { static gint values[] = {2, 1, 0, -1}; g_assert((*ints)[0] == -1); g_assert((*ints)[1] == 0); g_assert((*ints)[2] == 1); g_assert((*ints)[3] == 2); *ints = values; } /** * gi_marshalling_tests_array_return: * Returns: (array length=length): */ const gint * gi_marshalling_tests_array_return (gint *length) { static gint ints[] = {-1, 0, 1, 2}; *length = 4; return ints; } /** * gi_marshalling_tests_array_return_etc: * @first: * @length: (out): * @last: * @sum: (out): * Returns: (array length=length): */ const gint * gi_marshalling_tests_array_return_etc (gint first, gint *length, gint last, gint *sum) { static gint ints[] = {-1, 0, 1, 2}; ints[0] = first; ints[3] = last; *sum = first + last; *length = 4; return ints; } /** * gi_marshalling_tests_array_in: * @ints: (array length=length): * @length: */ void gi_marshalling_tests_array_in (const gint *ints, gint length) { g_assert(length == 4); g_assert(ints[0] == -1); g_assert(ints[1] == 0); g_assert(ints[2] == 1); g_assert(ints[3] == 2); } /** * gi_marshalling_tests_array_in_len_before: * @length: * @ints: (array length=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_len_zero_terminated: * @ints: (array length=length zero-terminated=1): * @length: */ void gi_marshalling_tests_array_in_len_zero_terminated (const gint *ints, gint length) { g_assert (length == 4); g_assert (ints[0] == -1); g_assert (ints[1] == 0); g_assert (ints[2] == 1); g_assert (ints[3] == 2); /* One past the end, null terminator */ g_assert (ints[4] == 0); } /** * gi_marshalling_tests_array_string_in: * @strings: (array length=length): */ void gi_marshalling_tests_array_string_in (const gchar **strings, gint length) { g_assert(length == 2); g_assert(g_strcmp0(strings[0], "foo") == 0); g_assert(g_strcmp0(strings[1], "bar") == 0); } /** * gi_marshalling_tests_array_uint8_in: * @chars: (array length=length): */ void gi_marshalling_tests_array_uint8_in (const guint8 *chars, gint length) { g_assert(length == 4); g_assert(chars[0] == 'a'); g_assert(chars[1] == 'b'); g_assert(chars[2] == 'c'); g_assert(chars[3] == 'd'); } /** * gi_marshalling_tests_array_struct_in: * @structs: (array length=length): */ void gi_marshalling_tests_array_struct_in (GIMarshallingTestsBoxedStruct **structs, gint length) { g_assert(length == 3); g_assert(structs[0]->long_ == 1); g_assert(structs[1]->long_ == 2); g_assert(structs[2]->long_ == 3); } /** * gi_marshalling_tests_array_simple_struct_in: * @structs: (array length=length): */ void gi_marshalling_tests_array_simple_struct_in (GIMarshallingTestsSimpleStruct *structs, gint length) { g_assert(length == 3); g_assert(structs[0].long_ == 1); g_assert(structs[1].long_ == 2); g_assert(structs[2].long_ == 3); } /** * gi_marshalling_tests_multi_array_key_value_in: * @keys: (array length=length): * @values: (array length=length): */ void gi_marshalling_tests_multi_array_key_value_in (gint length, const gchar **keys, const GValue *values) { g_assert(length == 3); g_assert(g_strcmp0("one", keys[0]) == 0); g_assert(g_value_get_int(&values[0]) == 1); g_assert(g_strcmp0("two", keys[1]) == 0); g_assert(g_value_get_int(&values[1]) == 2); g_assert(g_strcmp0("three", keys[2]) == 0); g_assert(g_value_get_int(&values[2]) == 3); } /** * gi_marshalling_tests_array_struct_take_in: * @structs: (array length=length) (transfer full): */ void gi_marshalling_tests_array_struct_take_in (GIMarshallingTestsBoxedStruct **structs, gint 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); } /** * gi_marshalling_tests_array_enum_in: * @_enum: (array length=length) (transfer none): * @length: */ void gi_marshalling_tests_array_enum_in (GIMarshallingTestsEnum *_enum, gint length) { g_assert (length == 3); g_assert (_enum[0] == GI_MARSHALLING_TESTS_ENUM_VALUE1); g_assert (_enum[1] == GI_MARSHALLING_TESTS_ENUM_VALUE2); g_assert (_enum[2] == GI_MARSHALLING_TESTS_ENUM_VALUE3); } /** * gi_marshalling_tests_array_in_guint64_len: * @ints: (array length=length) (transfer none): * @length: */ void gi_marshalling_tests_array_in_guint64_len (const gint *ints, guint64 length) { g_assert (length == 4); gi_marshalling_tests_array_in (ints, length); } /** * gi_marshalling_tests_array_in_guint8_len: * @ints: (array length=length) (transfer none): * @length: */ void gi_marshalling_tests_array_in_guint8_len (const gint *ints, guint8 length) { g_assert (length == 4); gi_marshalling_tests_array_in (ints, length); } /** * gi_marshalling_tests_array_out: * @ints: (out) (array length=length) (transfer none): */ void gi_marshalling_tests_array_out (gint **ints, gint *length) { static gint values[] = {-1, 0, 1, 2}; *length = 4; *ints = values; } /** * gi_marshalling_tests_array_out_etc: * @first: * @ints: (out) (array length=length) (transfer none): * @length: (out): * @last: * @sum: (out): */ void gi_marshalling_tests_array_out_etc (gint first, gint **ints, gint *length, gint last, gint *sum) { static gint values[] = {-1, 0, 1, 2}; values[0] = first; values[3] = last; *sum = first + last; *length = 4; *ints = values; } /** * gi_marshalling_tests_array_inout: * @ints: (inout) (array length=length) (transfer none): * @length: (inout): */ void gi_marshalling_tests_array_inout (gint **ints, gint *length) { static gint values[] = {-2, -1, 0, 1, 2}; g_assert(*length == 4); g_assert((*ints)[0] == -1); g_assert((*ints)[1] == 0); g_assert((*ints)[2] == 1); g_assert((*ints)[3] == 2); *length = 5; *ints = values; } /** * gi_marshalling_tests_array_inout_etc: * @first: * @ints: (inout) (array length=length) (transfer none): * @length: (inout): * @last: * @sum: (out): */ 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}; g_assert(*length == 4); g_assert((*ints)[0] == -1); g_assert((*ints)[1] == 0); g_assert((*ints)[2] == 1); g_assert((*ints)[3] == 2); values[0] = first; values[4] = last; *sum = first + last; *length = 5; *ints = values; } /** * gi_marshalling_tests_array_zero_terminated_return: * Returns: (array zero-terminated=1) (transfer none): */ gchar ** gi_marshalling_tests_array_zero_terminated_return (void) { static gchar *values[] = {"0", "1", "2", NULL}; return values; } /** * gi_marshalling_tests_array_zero_terminated_return_null: * Returns: (array zero-terminated=1) (transfer none): */ gchar ** gi_marshalling_tests_array_zero_terminated_return_null (void) { return NULL; } /** * gi_marshalling_tests_array_zero_terminated_return_struct: * Returns: (array zero-terminated=1) (transfer full): */ GIMarshallingTestsBoxedStruct ** gi_marshalling_tests_array_zero_terminated_return_struct (void) { GIMarshallingTestsBoxedStruct **ret = (GIMarshallingTestsBoxedStruct**) g_new (gpointer, 4); 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[2] = gi_marshalling_tests_boxed_struct_new (); ret[2]->long_ = 44; ret[3] = NULL; return ret; } /** * gi_marshalling_tests_array_zero_terminated_in: * @utf8s: (array zero-terminated=1) (transfer none): */ void gi_marshalling_tests_array_zero_terminated_in (gchar **utf8s) { g_assert(g_strv_length(utf8s)); g_assert(strcmp(utf8s[0], "0") == 0); g_assert(strcmp(utf8s[1], "1") == 0); g_assert(strcmp(utf8s[2], "2") == 0); } /** * gi_marshalling_tests_array_zero_terminated_out: * @utf8s: (out) (array zero-terminated=1) (transfer none): */ void gi_marshalling_tests_array_zero_terminated_out (gchar ***utf8s) { static gchar *values[] = {"0", "1", "2", NULL}; *utf8s = values; } /** * gi_marshalling_tests_array_zero_terminated_inout: * @utf8s: (inout) (array zero-terminated=1) (transfer none): */ void gi_marshalling_tests_array_zero_terminated_inout (gchar ***utf8s) { static gchar *values[] = {"-1", "0", "1", "2", NULL}; g_assert(g_strv_length(*utf8s)); g_assert(strcmp((*utf8s)[0], "0") == 0); g_assert(strcmp((*utf8s)[1], "1") == 0); g_assert(strcmp((*utf8s)[2], "2") == 0); *utf8s = values; } /** * gi_marshalling_tests_array_gvariant_none_in: * @variants: (array zero-terminated=1) (transfer none): * Returns: (array zero-terminated=1) (transfer none): */ 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) { 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); return private_container; } /** * gi_marshalling_tests_array_gvariant_container_in: * @variants: (array zero-terminated=1) (transfer container): * Returns: (array zero-terminated=1) (transfer container): */ GVariant ** gi_marshalling_tests_array_gvariant_container_in (GVariant **variants) { 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); return container; } /** * gi_marshalling_tests_array_gvariant_full_in: * @variants: (array zero-terminated=1) (transfer full): * Returns: (array zero-terminated=1) (transfer full): */ GVariant ** gi_marshalling_tests_array_gvariant_full_in (GVariant **variants) { 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); return container; } /** * gi_marshalling_tests_garray_int_none_return: * Returns: (element-type gint) (transfer none): */ GArray * gi_marshalling_tests_garray_int_none_return (void) { static GArray *array = 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); } return array; } /** * gi_marshalling_tests_garray_utf8_none_return: * Returns: (element-type utf8) (transfer none): */ GArray * gi_marshalling_tests_garray_utf8_none_return (void) { 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]); } return array; } /** * gi_marshalling_tests_garray_utf8_container_return: * Returns: (element-type utf8) (transfer container): */ GArray * gi_marshalling_tests_garray_utf8_container_return (void) { 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]); return array; } /** * gi_marshalling_tests_garray_utf8_full_return: * Returns: (element-type utf8) (transfer full): */ GArray * gi_marshalling_tests_garray_utf8_full_return (void) { 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); } return array; } /** * gi_marshalling_tests_garray_int_none_in: * @array_: (element-type gint) (transfer none): */ void gi_marshalling_tests_garray_int_none_in (GArray *array_) { g_assert (array_->len == 4); g_assert (g_array_index (array_, gint, 0) == -1); g_assert (g_array_index (array_, gint, 1) == 0); g_assert (g_array_index (array_, gint, 2) == 1); g_assert (g_array_index (array_, gint, 3) == 2); } /** * gi_marshalling_tests_garray_utf8_none_in: * @array_: (element-type utf8) (transfer none): */ void gi_marshalling_tests_garray_utf8_none_in (GArray *array_) { g_assert (array_->len == 3); g_assert (strcmp (g_array_index (array_, gchar*, 0), "0") == 0); g_assert (strcmp (g_array_index (array_, gchar*, 1), "1") == 0); g_assert (strcmp (g_array_index (array_, gchar*, 2), "2") == 0); } /** * gi_marshalling_tests_garray_utf8_none_out: * @array_: (out) (element-type utf8) (transfer none): */ void gi_marshalling_tests_garray_utf8_none_out (GArray **array_) { 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]); } *array_ = internal; } /** * gi_marshalling_tests_garray_utf8_container_out: * @array_: (out) (element-type utf8) (transfer container): */ void gi_marshalling_tests_garray_utf8_container_out (GArray **array_) { 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++) g_array_append_val (*array_, values[i]); } /** * gi_marshalling_tests_garray_utf8_full_out: * @array_: (out) (element-type utf8) (transfer full): */ void gi_marshalling_tests_garray_utf8_full_out (GArray **array_) { 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); } } /** * gi_marshalling_tests_garray_utf8_none_inout: * @array_: (inout) (element-type utf8) (transfer none): */ void gi_marshalling_tests_garray_utf8_none_inout (GArray **array_) { static GArray *internal = NULL; static gchar *values[] = {"-2", "-1", "0", "1", NULL}; gint i; g_assert ((*array_)->len == 3); g_assert (strcmp (g_array_index (*array_, gchar*, 0), "0") == 0); g_assert (strcmp (g_array_index (*array_, gchar*, 1), "1") == 0); g_assert (strcmp (g_array_index (*array_, gchar*, 2), "2") == 0); 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; } /** * gi_marshalling_tests_garray_utf8_container_inout: * @array_: (inout) (element-type utf8) (transfer container): */ 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; g_assert ((*array_)->len == 3); g_assert (strcmp (g_array_index (*array_, gchar*, 0), "0") == 0); g_assert (strcmp (g_array_index (*array_, gchar*, 1), "1") == 0); g_assert (strcmp (g_array_index (*array_, gchar*, 2), "2") == 0); 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; } /** * gi_marshalling_tests_garray_utf8_full_inout: * @array_: (inout) (element-type utf8) (transfer full): */ void gi_marshalling_tests_garray_utf8_full_inout (GArray **array_) { static gchar *val1 = "-1"; static gchar *val2 = "-2"; gchar *val; GArray *result; g_assert ((*array_)->len == 3); g_assert (strcmp (g_array_index (*array_, gchar*, 0), "0") == 0); g_assert (strcmp (g_array_index (*array_, gchar*, 1), "1") == 0); g_assert (strcmp (g_array_index (*array_, gchar*, 2), "2") == 0); 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; } /** * gi_marshalling_tests_gptrarray_utf8_none_return: * Returns: (element-type utf8) (transfer none): */ GPtrArray * gi_marshalling_tests_gptrarray_utf8_none_return (void) { 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]); } return parray; } /** * gi_marshalling_tests_gptrarray_utf8_container_return: * Returns: (element-type utf8) (transfer container): */ GPtrArray * gi_marshalling_tests_gptrarray_utf8_container_return (void) { 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]); return parray; } /** * gi_marshalling_tests_gptrarray_utf8_full_return: * Returns: (element-type utf8) (transfer full): */ GPtrArray * gi_marshalling_tests_gptrarray_utf8_full_return (void) { 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); } return parray; } /** * gi_marshalling_tests_gptrarray_utf8_none_in: * @parray_: (element-type utf8) (transfer none): */ void gi_marshalling_tests_gptrarray_utf8_none_in (GPtrArray *parray_) { g_assert (parray_->len == 3); g_assert (strcmp (g_ptr_array_index (parray_, 0), "0") == 0); g_assert (strcmp (g_ptr_array_index (parray_, 1), "1") == 0); g_assert (strcmp (g_ptr_array_index (parray_, 2), "2") == 0); } /** * gi_marshalling_tests_gptrarray_utf8_none_out: * @parray_: (out) (element-type utf8) (transfer none): */ void gi_marshalling_tests_gptrarray_utf8_none_out (GPtrArray **parray_) { 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]); } *parray_ = internal; } /** * gi_marshalling_tests_gptrarray_utf8_container_out: * @parray_: (out) (element-type utf8) (transfer container): */ void gi_marshalling_tests_gptrarray_utf8_container_out (GPtrArray **parray_) { static gchar *values[] = {"0", "1", "2", NULL}; gint i; *parray_ = NULL; *parray_ = g_ptr_array_new (); for (i = 0; values[i]; i++) g_ptr_array_add (*parray_, (gpointer)values[i]); } /** * gi_marshalling_tests_gptrarray_utf8_full_out: * @parray_: (out) (element-type utf8) (transfer full): */ void gi_marshalling_tests_gptrarray_utf8_full_out (GPtrArray **parray_) { static gchar *values[] = {"0", "1", "2", NULL}; gint i; *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); } } /** * gi_marshalling_tests_gptrarray_utf8_none_inout: * @parray_: (inout) (element-type utf8) (transfer none): */ void gi_marshalling_tests_gptrarray_utf8_none_inout (GPtrArray **parray_) { static GPtrArray *internal = NULL; static gchar *values[] = {"-2", "-1", "0", "1", NULL}; gint i; g_assert ((*parray_)->len == 3); g_assert (strcmp (g_ptr_array_index (*parray_, 0), "0") == 0); g_assert (strcmp (g_ptr_array_index (*parray_, 1), "1") == 0); g_assert (strcmp (g_ptr_array_index (*parray_, 2), "2") == 0); if (internal == NULL) { internal = g_ptr_array_new (); for (i = 0; values[i]; i++) g_ptr_array_add (internal, (gpointer) values[i]); } *parray_ = internal; } /** * gi_marshalling_tests_gptrarray_utf8_container_inout: * @parray_: (inout) (element-type utf8) (transfer container): */ 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; g_assert ((*parray_)->len == 3); g_assert (strcmp (g_ptr_array_index (*parray_, 0), "0") == 0); g_assert (strcmp (g_ptr_array_index (*parray_, 1), "1") == 0); g_assert (strcmp (g_ptr_array_index (*parray_, 2), "2") == 0); 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; } /** * gi_marshalling_tests_gptrarray_utf8_full_inout: * @parray_: (inout) (element-type utf8) (transfer full): */ void gi_marshalling_tests_gptrarray_utf8_full_inout (GPtrArray **parray_) { static gchar *val1 = "-1"; static gchar *val2 = "-2"; gchar *val; GPtrArray *result; g_assert ((*parray_)->len == 3); g_assert (strcmp (g_ptr_array_index (*parray_, 0), "0") == 0); g_assert (strcmp (g_ptr_array_index (*parray_, 1), "1") == 0); g_assert (strcmp (g_ptr_array_index (*parray_, 2), "2") == 0); 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; } /** * gi_marshalling_tests_bytearray_full_return: * Returns: (transfer full): */ GByteArray * gi_marshalling_tests_bytearray_full_return (void) { 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)); return array; } /** * gi_marshalling_tests_bytearray_none_in: * @array_: (element-type gint8) (transfer none): */ void gi_marshalling_tests_bytearray_none_in (GByteArray *array_) { 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); } /** * gi_marshalling_tests_gstrv_return: * * Returns: (transfer full): an array of strings */ 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; } /** * gi_marshalling_tests_gstrv_in: * @g_strv: */ void gi_marshalling_tests_gstrv_in (GStrv g_strv) { 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); } /** * gi_marshalling_tests_gstrv_out: * @g_strv: (out) (transfer none): */ void gi_marshalling_tests_gstrv_out (GStrv *g_strv) { static gchar *values[] = {"0", "1", "2", NULL}; *g_strv = values; } /** * gi_marshalling_tests_gstrv_inout: * @g_strv: (inout) (transfer none): */ void gi_marshalling_tests_gstrv_inout (GStrv *g_strv) { 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_strv = values; } /** * gi_marshalling_tests_glist_int_none_return: * Returns: (element-type gint) (transfer none): */ GList * gi_marshalling_tests_glist_int_none_return (void) { 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)); } return list; } /** * gi_marshalling_tests_glist_utf8_none_return: * Returns: (element-type utf8) (transfer none): */ GList * gi_marshalling_tests_glist_utf8_none_return (void) { 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"); } return list; } /** * gi_marshalling_tests_glist_utf8_container_return: * Returns: (element-type utf8) (transfer container): */ GList * gi_marshalling_tests_glist_utf8_container_return (void) { GList *list = NULL; list = g_list_append(list, "0"); list = g_list_append(list, "1"); list = g_list_append(list, "2"); return list; } /** * gi_marshalling_tests_glist_utf8_full_return: * Returns: (element-type utf8) (transfer full): */ GList * gi_marshalling_tests_glist_utf8_full_return (void) { 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")); return list; } /** * gi_marshalling_tests_glist_int_none_in: * @list: (element-type gint) (transfer none): */ void gi_marshalling_tests_glist_int_none_in (GList *list) { g_assert(g_list_length(list) == 4); g_assert(GPOINTER_TO_INT(g_list_nth_data(list, 0)) == -1); g_assert(GPOINTER_TO_INT(g_list_nth_data(list, 1)) == 0); g_assert(GPOINTER_TO_INT(g_list_nth_data(list, 2)) == 1); g_assert(GPOINTER_TO_INT(g_list_nth_data(list, 3)) == 2); } /** * gi_marshalling_tests_glist_utf8_none_in: * @list: (element-type utf8) (transfer none): */ void gi_marshalling_tests_glist_utf8_none_in (GList *list) { g_assert(g_list_length(list) == 3); g_assert(strcmp(g_list_nth_data(list, 0), "0") == 0); g_assert(strcmp(g_list_nth_data(list, 1), "1") == 0); g_assert(strcmp(g_list_nth_data(list, 2), "2") == 0); } /** * gi_marshalling_tests_glist_utf8_none_out: * @list: (out) (element-type utf8) (transfer none): */ void gi_marshalling_tests_glist_utf8_none_out (GList **list) { 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"); } *list = values; } /** * gi_marshalling_tests_glist_utf8_container_out: * @list: (out) (element-type utf8) (transfer container): */ void gi_marshalling_tests_glist_utf8_container_out (GList **list) { *list = NULL; *list = g_list_append(*list, "0"); *list = g_list_append(*list, "1"); *list = g_list_append(*list, "2"); } /** * gi_marshalling_tests_glist_utf8_full_out: * @list: (out) (element-type utf8) (transfer full): */ void gi_marshalling_tests_glist_utf8_full_out (GList **list) { *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")); } /** * gi_marshalling_tests_glist_utf8_none_inout: * @list: (inout) (element-type utf8) (transfer none): */ void gi_marshalling_tests_glist_utf8_none_inout (GList **list) { static GList *values = NULL; g_assert(g_list_length(*list) == 3); g_assert(strcmp(g_list_nth_data(*list, 0), "0") == 0); g_assert(strcmp(g_list_nth_data(*list, 1), "1") == 0); g_assert(strcmp(g_list_nth_data(*list, 2), "2") == 0); 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; } /** * gi_marshalling_tests_glist_utf8_container_inout: * @list: (inout) (element-type utf8) (transfer container): */ void gi_marshalling_tests_glist_utf8_container_inout (GList **list) { GList *result = NULL; g_assert(g_list_length(*list) == 3); g_assert(strcmp(g_list_nth_data(*list, 0), "0") == 0); g_assert(strcmp(g_list_nth_data(*list, 1), "1") == 0); g_assert(strcmp(g_list_nth_data(*list, 2), "2") == 0); 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; } /** * gi_marshalling_tests_glist_utf8_full_inout: * @list: (inout) (element-type utf8) (transfer full): */ void gi_marshalling_tests_glist_utf8_full_inout (GList **list) { GList *result = NULL; g_assert(g_list_length(*list) == 3); g_assert(strcmp(g_list_nth_data(*list, 0), "0") == 0); g_assert(strcmp(g_list_nth_data(*list, 1), "1") == 0); g_assert(strcmp(g_list_nth_data(*list, 2), "2") == 0); 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; } /** * gi_marshalling_tests_gslist_int_none_return: * Returns: (element-type gint) (transfer none): */ GSList * gi_marshalling_tests_gslist_int_none_return (void) { 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); } return list; } /** * gi_marshalling_tests_gslist_utf8_none_return: * Returns: (element-type utf8) (transfer none): */ GSList * gi_marshalling_tests_gslist_utf8_none_return (void) { 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); } return list; } /** * gi_marshalling_tests_gslist_utf8_container_return: * Returns: (element-type utf8) (transfer container): */ GSList * gi_marshalling_tests_gslist_utf8_container_return (void) { 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); return list; } /** * gi_marshalling_tests_gslist_utf8_full_return: * Returns: (element-type utf8) (transfer full): */ GSList * gi_marshalling_tests_gslist_utf8_full_return (void) { 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); return list; } /** * gi_marshalling_tests_gslist_int_none_in: * @list: (element-type gint) (transfer none): */ void gi_marshalling_tests_gslist_int_none_in (GSList *list) { g_assert(g_slist_length(list) == 4); g_assert(GPOINTER_TO_INT(g_slist_nth_data(list, 0)) == -1); g_assert(GPOINTER_TO_INT(g_slist_nth_data(list, 1)) == 0); g_assert(GPOINTER_TO_INT(g_slist_nth_data(list, 2)) == 1); g_assert(GPOINTER_TO_INT(g_slist_nth_data(list, 3)) == 2); } /** * gi_marshalling_tests_gslist_utf8_none_in: * @list: (element-type utf8) (transfer none): */ void gi_marshalling_tests_gslist_utf8_none_in (GSList *list) { g_assert(g_slist_length(list) == 3); g_assert(strcmp(g_slist_nth_data(list, 0), "0") == 0); g_assert(strcmp(g_slist_nth_data(list, 1), "1") == 0); g_assert(strcmp(g_slist_nth_data(list, 2), "2") == 0); } /** * gi_marshalling_tests_gslist_utf8_none_out: * @list: (out) (element-type utf8) (transfer none): */ void gi_marshalling_tests_gslist_utf8_none_out (GSList **list) { 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); } *list = values; } /** * gi_marshalling_tests_gslist_utf8_container_out: * @list: (out) (element-type utf8) (transfer container): */ void gi_marshalling_tests_gslist_utf8_container_out (GSList **list) { *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); } /** * gi_marshalling_tests_gslist_utf8_full_out: * @list: (out) (element-type utf8) (transfer full): */ void gi_marshalling_tests_gslist_utf8_full_out (GSList **list) { *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); } /** * gi_marshalling_tests_gslist_utf8_none_inout: * @list: (inout) (element-type utf8) (transfer none): */ void gi_marshalling_tests_gslist_utf8_none_inout (GSList **list) { static GSList *values = NULL; g_assert(g_slist_length(*list) == 3); g_assert(strcmp(g_slist_nth_data(*list, 0), "0") == 0); g_assert(strcmp(g_slist_nth_data(*list, 1), "1") == 0); g_assert(strcmp(g_slist_nth_data(*list, 2), "2") == 0); 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; } /** * gi_marshalling_tests_gslist_utf8_container_inout: * @list: (inout) (element-type utf8) (transfer container): */ void gi_marshalling_tests_gslist_utf8_container_inout (GSList **list) { GSList *result = NULL; g_assert(g_slist_length(*list) == 3); g_assert(strcmp(g_slist_nth_data(*list, 0), "0") == 0); g_assert(strcmp(g_slist_nth_data(*list, 1), "1") == 0); g_assert(strcmp(g_slist_nth_data(*list, 2), "2") == 0); 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; } /** * gi_marshalling_tests_gslist_utf8_full_inout: * @list: (inout) (element-type utf8) (transfer full): */ void gi_marshalling_tests_gslist_utf8_full_inout (GSList **list) { GSList *result = NULL; g_assert(g_slist_length(*list) == 3); g_assert(strcmp(g_slist_nth_data(*list, 0), "0") == 0); g_assert(strcmp(g_slist_nth_data(*list, 1), "1") == 0); g_assert(strcmp(g_slist_nth_data(*list, 2), "2") == 0); 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; } /** * gi_marshalling_tests_ghashtable_int_none_return: * Returns: (element-type gint gint) (transfer none): */ GHashTable * gi_marshalling_tests_ghashtable_int_none_return (void) { 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)); } return hash_table; } /** * gi_marshalling_tests_ghashtable_utf8_none_return: * Returns: (element-type utf8 utf8) (transfer none): */ GHashTable * gi_marshalling_tests_ghashtable_utf8_none_return (void) { 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"); } return hash_table; } /** * gi_marshalling_tests_ghashtable_utf8_container_return: * Returns: (element-type utf8 utf8) (transfer container): */ GHashTable * gi_marshalling_tests_ghashtable_utf8_container_return (void) { 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"); return hash_table; } /** * gi_marshalling_tests_ghashtable_utf8_full_return: * Returns: (element-type utf8 utf8) (transfer full): */ GHashTable * gi_marshalling_tests_ghashtable_utf8_full_return (void) { 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")); return hash_table; } /** * gi_marshalling_tests_ghashtable_int_none_in: * @hash_table: (element-type gint gint) (transfer none): */ void gi_marshalling_tests_ghashtable_int_none_in (GHashTable *hash_table) { g_assert(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(-1))) == 1); g_assert(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(0))) == 0); g_assert(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(1))) == -1); g_assert(GPOINTER_TO_INT(g_hash_table_lookup(hash_table, GINT_TO_POINTER(2))) == -2); } /** * gi_marshalling_tests_ghashtable_utf8_none_in: * @hash_table: (element-type utf8 utf8) (transfer none): */ void gi_marshalling_tests_ghashtable_utf8_none_in (GHashTable *hash_table) { g_assert(strcmp(g_hash_table_lookup(hash_table, "-1"), "1") == 0); g_assert(strcmp(g_hash_table_lookup(hash_table, "0"), "0") == 0); g_assert(strcmp(g_hash_table_lookup(hash_table, "1"), "-1") == 0); g_assert(strcmp(g_hash_table_lookup(hash_table, "2"), "-2") == 0); } /** * gi_marshalling_tests_ghashtable_utf8_none_out: * @hash_table: (out) (element-type utf8 utf8) (transfer none): */ void gi_marshalling_tests_ghashtable_utf8_none_out (GHashTable **hash_table) { 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"); } *hash_table = new_hash_table; } /** * gi_marshalling_tests_ghashtable_utf8_container_out: * @hash_table: (out) (element-type utf8 utf8) (transfer container): */ 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"); } /** * gi_marshalling_tests_ghashtable_utf8_full_out: * @hash_table: (out) (element-type utf8 utf8) (transfer full): */ 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")); } /** * gi_marshalling_tests_ghashtable_utf8_none_inout: * @hash_table: (inout) (element-type utf8 utf8) (transfer none): */ void gi_marshalling_tests_ghashtable_utf8_none_inout (GHashTable **hash_table) { static GHashTable *new_hash_table = NULL; g_assert(strcmp(g_hash_table_lookup(*hash_table, "-1"), "1") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "0"), "0") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "1"), "-1") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "2"), "-2") == 0); 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; } /** * gi_marshalling_tests_ghashtable_utf8_container_inout: * @hash_table: (inout) (element-type utf8 utf8) (transfer container): */ void gi_marshalling_tests_ghashtable_utf8_container_inout (GHashTable **hash_table) { GHashTable *result = g_hash_table_new(g_str_hash, g_str_equal); g_assert(strcmp(g_hash_table_lookup(*hash_table, "-1"), "1") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "0"), "0") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "1"), "-1") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "2"), "-2") == 0); g_hash_table_insert(result, "-1", "1"); g_hash_table_insert(result, "0", "0"); g_hash_table_insert(result, "1", "1"); *hash_table = result; } /** * gi_marshalling_tests_ghashtable_utf8_full_inout: * @hash_table: (inout) (element-type utf8 utf8) (transfer full): */ 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); g_assert(strcmp(g_hash_table_lookup(*hash_table, "-1"), "1") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "0"), "0") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "1"), "-1") == 0); g_assert(strcmp(g_hash_table_lookup(*hash_table, "2"), "-2") == 0); 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; } /** * gi_marshalling_tests_gvalue_return: * Returns: (transfer none): */ GValue * gi_marshalling_tests_gvalue_return (void) { 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); } return value; } /** * gi_marshalling_tests_gvalue_in: * @value: (transfer none): */ void gi_marshalling_tests_gvalue_in (GValue *value) { g_assert(g_value_get_int(value) == 42); } /** * gi_marshalling_tests_gvalue_in_with_type: * @value: (transfer none): * @type: */ void gi_marshalling_tests_gvalue_in_with_type (GValue *value, GType type) { g_assert(g_type_is_a(G_VALUE_TYPE(value), type)); } /** * gi_marshalling_tests_gvalue_in_enum: * @value: (transfer none): */ void gi_marshalling_tests_gvalue_in_enum (GValue *value) { g_assert(g_value_get_enum(value) == GI_MARSHALLING_TESTS_ENUM_VALUE3); } /** * gi_marshalling_tests_gvalue_out: * @value: (out) (transfer none): */ void gi_marshalling_tests_gvalue_out (GValue **value) { 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); } *value = new_value; } /** * gi_marshalling_tests_gvalue_inout: * @value: (inout) (transfer none): */ void gi_marshalling_tests_gvalue_inout (GValue **value) { g_assert(g_value_get_int(*value) == 42); g_value_unset(*value); g_value_init(*value, G_TYPE_STRING); g_value_set_string(*value, "42"); } /** * gi_marshalling_tests_gvalue_flat_array: * @n_values: number of values * @values: (array length=n_values): an array containing values */ void gi_marshalling_tests_gvalue_flat_array (guint n_values, const GValue *values) { 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); } /** * gi_marshalling_tests_return_gvalue_flat_array: * * Returns: (array fixed-size=3) (transfer full): a flat GValue array */ GValue * gi_marshalling_tests_return_gvalue_flat_array (void) { 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[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); return array; } /** * gi_marshalling_tests_gvalue_flat_array_round_trip: * @one: The first GValue * @two: The second GValue * @three: The third GValue * * 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) { GValue *array = g_new (GValue, 3); array[0] = one; array[1] = two; array[2] = three; return array; } /** * gi_marshalling_tests_gclosure_in: * @closure: (transfer none): */ void gi_marshalling_tests_gclosure_in (GClosure *closure) { GValue return_value = {0, }; g_value_init (&return_value, G_TYPE_INT); g_closure_invoke (closure, &return_value, 0, NULL, NULL); g_assert(g_value_get_int (&return_value) == 42); g_value_unset(&return_value); } static gint _closure_return_42 (void) { return 42; } static void _marshal_INT__VOID (GClosure *closure, GValue *return_value, 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; callback = (GMarshalFunc_INT__VOID) cc->callback; g_value_set_int(return_value, callback()); } /** * gi_marshalling_tests_gclosure_return: * * Return: a #GClosure */ 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); return closure; } /** * gi_marshalling_tests_callback_return_value_only: * @callback: (scope call): */ glong gi_marshalling_tests_callback_return_value_only (GIMarshallingTestsCallbackReturnValueOnly callback) { return callback (); } /** * gi_marshalling_tests_callback_one_out_parameter: * @callback: (scope call): * @a: (out): */ void gi_marshalling_tests_callback_one_out_parameter (GIMarshallingTestsCallbackOneOutParameter callback, gfloat *a) { callback (a); } /** * gi_marshalling_tests_callback_multiple_out_parameters: * @callback: (scope call): * @a: (out): * @b: (out): */ void gi_marshalling_tests_callback_multiple_out_parameters (GIMarshallingTestsCallbackMultipleOutParameters callback, gfloat *a, gfloat *b) { callback (a, b); } /** * gi_marshalling_tests_callback_return_value_and_one_out_parameter: * @callback: (scope call): * @a: (out): */ glong gi_marshalling_tests_callback_return_value_and_one_out_parameter (GIMarshallingTestsCallbackReturnValueAndOneOutParameter callback, glong *a) { return callback (a); } /** * gi_marshalling_tests_callback_return_value_and_multiple_out_parameters: * @callback: (scope call): * @a: (out): * @b: (out): */ glong gi_marshalling_tests_callback_return_value_and_multiple_out_parameters (GIMarshallingTestsCallbackReturnValueAndMultipleOutParameters callback, glong *a, glong *b) { return callback (a, b); } /** * gi_marshalling_tests_pointer_in_return: * * Returns: (transfer none): The same pointer */ gpointer gi_marshalling_tests_pointer_in_return (gpointer 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); } return type; } GIMarshallingTestsEnum gi_marshalling_tests_genum_returnv (void) { return GI_MARSHALLING_TESTS_GENUM_VALUE3; } void gi_marshalling_tests_genum_in (GIMarshallingTestsGEnum enum_) { g_assert(enum_ == GI_MARSHALLING_TESTS_GENUM_VALUE3); } /** * gi_marshalling_tests_genum_out: * @enum_: (out): */ void gi_marshalling_tests_genum_out (GIMarshallingTestsGEnum *enum_) { *enum_ = GI_MARSHALLING_TESTS_GENUM_VALUE3; } /** * gi_marshalling_tests_genum_inout: * @enum_: (inout): */ void gi_marshalling_tests_genum_inout (GIMarshallingTestsGEnum *enum_) { g_assert(*enum_ == GI_MARSHALLING_TESTS_GENUM_VALUE3); *enum_ = GI_MARSHALLING_TESTS_GENUM_VALUE1; } GIMarshallingTestsEnum gi_marshalling_tests_enum_returnv (void) { return GI_MARSHALLING_TESTS_ENUM_VALUE3; } void gi_marshalling_tests_enum_in (GIMarshallingTestsEnum enum_) { g_assert(enum_ == GI_MARSHALLING_TESTS_ENUM_VALUE3); } /** * gi_marshalling_tests_enum_out: * @enum_: (out): */ void gi_marshalling_tests_enum_out (GIMarshallingTestsEnum *enum_) { *enum_ = GI_MARSHALLING_TESTS_ENUM_VALUE3; } /** * gi_marshalling_tests_enum_inout: * @enum_: (inout): */ void gi_marshalling_tests_enum_inout (GIMarshallingTestsEnum *enum_) { g_assert(*enum_ == GI_MARSHALLING_TESTS_ENUM_VALUE3); *enum_ = 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); } return type; } GIMarshallingTestsFlags gi_marshalling_tests_flags_returnv (void) { return GI_MARSHALLING_TESTS_FLAGS_VALUE2; } void gi_marshalling_tests_flags_in (GIMarshallingTestsFlags flags_) { g_assert(flags_ == GI_MARSHALLING_TESTS_FLAGS_VALUE2); } void gi_marshalling_tests_flags_in_zero (GIMarshallingTestsFlags flags) { g_assert(flags == 0); } /** * gi_marshalling_tests_flags_out: * @flags_: (out): */ void gi_marshalling_tests_flags_out (GIMarshallingTestsFlags *flags_) { *flags_ = GI_MARSHALLING_TESTS_FLAGS_VALUE2; } /** * gi_marshalling_tests_flags_inout: * @flags_: (inout): */ void gi_marshalling_tests_flags_inout (GIMarshallingTestsFlags *flags_) { g_assert(*flags_ == GI_MARSHALLING_TESTS_FLAGS_VALUE2); *flags_ = GI_MARSHALLING_TESTS_FLAGS_VALUE1; } GIMarshallingTestsNoTypeFlags gi_marshalling_tests_no_type_flags_returnv (void) { return GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2; } void gi_marshalling_tests_no_type_flags_in (GIMarshallingTestsNoTypeFlags flags_) { g_assert(flags_ == GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2); } void gi_marshalling_tests_no_type_flags_in_zero (GIMarshallingTestsNoTypeFlags flags) { g_assert(flags == 0); } /** * gi_marshalling_tests_no_type_flags_out: * @flags_: (out): */ void gi_marshalling_tests_no_type_flags_out (GIMarshallingTestsNoTypeFlags *flags_) { *flags_ = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2; } /** * gi_marshalling_tests_no_type_flags_inout: * @flags_: (inout): */ void gi_marshalling_tests_no_type_flags_inout (GIMarshallingTestsNoTypeFlags *flags_) { g_assert(*flags_ == GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE2); *flags_ = GI_MARSHALLING_TESTS_NO_TYPE_FLAGS_VALUE1; } /** * gi_marshalling_tests_simple_struct_returnv: * Returns: (transfer none): */ GIMarshallingTestsSimpleStruct * gi_marshalling_tests_simple_struct_returnv (void) { static GIMarshallingTestsSimpleStruct *struct_ = NULL; if (struct_ == NULL) { struct_ = g_new(GIMarshallingTestsSimpleStruct, 1); struct_->long_ = 6; struct_->int8 = 7; } return struct_; } /** * gi_marshalling_tests_simple_struct_inv: * @struct_: (transfer none): */ void gi_marshalling_tests_simple_struct_inv (GIMarshallingTestsSimpleStruct *struct_) { g_assert(struct_->long_ == 6); g_assert(struct_->int8 == 7); } void gi_marshalling_tests_simple_struct_method (GIMarshallingTestsSimpleStruct *struct_) { g_assert(struct_->long_ == 6); g_assert(struct_->int8 == 7); } GType gi_marshalling_tests_pointer_struct_get_type (void) { static GType type = 0; if (type == 0) { type = g_pointer_type_register_static ("GIMarshallingTestsPointerStruct"); } return type; } /** * gi_marshalling_tests_pointer_struct_returnv: * Returns: (transfer none): */ GIMarshallingTestsPointerStruct * gi_marshalling_tests_pointer_struct_returnv (void) { static GIMarshallingTestsPointerStruct *struct_ = NULL; if (struct_ == NULL) { struct_ = g_new(GIMarshallingTestsPointerStruct, 1); struct_->long_ = 42; } return struct_; } /** * gi_marshalling_tests_pointer_struct_inv: * @struct_: (transfer none): */ void gi_marshalling_tests_pointer_struct_inv (GIMarshallingTestsPointerStruct *struct_) { g_assert(struct_->long_ == 42); } static GIMarshallingTestsBoxedStruct * gi_marshalling_tests_boxed_struct_copy (GIMarshallingTestsBoxedStruct *struct_) { GIMarshallingTestsBoxedStruct *new_struct; new_struct = g_slice_new (GIMarshallingTestsBoxedStruct); *new_struct = *struct_; return new_struct; } static void gi_marshalling_tests_boxed_struct_free (GIMarshallingTestsBoxedStruct *struct_) { g_slice_free (GIMarshallingTestsBoxedStruct, struct_); } GType gi_marshalling_tests_boxed_struct_get_type (void) { 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); } return type; } GIMarshallingTestsBoxedStruct * gi_marshalling_tests_boxed_struct_new (void) { return g_slice_new0 (GIMarshallingTestsBoxedStruct); } /** * gi_marshalling_tests_boxed_struct_returnv: * Returns: (transfer none): */ GIMarshallingTestsBoxedStruct * gi_marshalling_tests_boxed_struct_returnv (void) { static GIMarshallingTestsBoxedStruct *struct_ = NULL; 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; } return struct_; } /** * gi_marshalling_tests_boxed_struct_inv: * @struct_: (transfer none): */ void gi_marshalling_tests_boxed_struct_inv (GIMarshallingTestsBoxedStruct *struct_) { g_assert(struct_->long_ == 42); } /** * gi_marshalling_tests_boxed_struct_out: * @struct_: (out) (transfer none): */ void gi_marshalling_tests_boxed_struct_out (GIMarshallingTestsBoxedStruct **struct_) { static GIMarshallingTestsBoxedStruct *new_struct = NULL; if (new_struct == NULL) { new_struct = g_new(GIMarshallingTestsBoxedStruct, 1); new_struct->long_ = 42; } *struct_ = new_struct; } /** * gi_marshalling_tests_boxed_struct_inout: * @struct_: (inout) (transfer full): */ void gi_marshalling_tests_boxed_struct_inout (GIMarshallingTestsBoxedStruct **struct_) { g_assert((*struct_)->long_ == 42); (*struct_) = g_slice_new (GIMarshallingTestsBoxedStruct); (*struct_)->long_ = 0; } static GIMarshallingTestsUnion * gi_marshalling_tests_union_copy (GIMarshallingTestsUnion *union_) { GIMarshallingTestsUnion *new_union; new_union = g_slice_new (GIMarshallingTestsUnion); *new_union = *union_; return new_union; } static void gi_marshalling_tests_union_free (GIMarshallingTestsUnion *union_) { g_slice_free (GIMarshallingTestsUnion, union_); } GType gi_marshalling_tests_union_get_type (void) { 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); } return type; } /** * gi_marshalling_tests_union_returnv: * Returns: (transfer none): */ GIMarshallingTestsUnion * gi_marshalling_tests_union_returnv (void) { static GIMarshallingTestsUnion *union_ = NULL; if (union_ == NULL) { union_ = g_new(GIMarshallingTestsUnion, 1); union_->long_ = 42; } return union_; } /** * gi_marshalling_tests_union_inv: * @union_: (transfer none): */ void gi_marshalling_tests_union_inv (GIMarshallingTestsUnion *union_) { g_assert(union_->long_ == 42); } void gi_marshalling_tests_union_method (GIMarshallingTestsUnion *union_) { g_assert(union_->long_ == 42); } enum { PROP_0, PROP_INT_ }; 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); static void 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); } 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)); 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)); 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); #if 0 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; 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; } void 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 (object->int_ == 42); } void gi_marshalling_tests_object_overridden_method (GIMarshallingTestsObject *object) { g_return_if_fail (GI_MARSHALLING_TESTS_IS_OBJECT (object)); g_assert (object->int_ == 0); } GIMarshallingTestsObject * gi_marshalling_tests_object_new (gint int_) { return g_object_new (GI_MARSHALLING_TESTS_TYPE_OBJECT, "int", int_, NULL); } /** * gi_marshalling_tests_object_method_array_in: * @ints: (array length=length): */ void gi_marshalling_tests_object_method_array_in (GIMarshallingTestsObject *object, const gint *ints, gint length) { g_assert(length == 4); g_assert(ints[0] == -1); g_assert(ints[1] == 0); g_assert(ints[2] == 1); g_assert(ints[3] == 2); } /** * gi_marshalling_tests_object_method_array_out: * @ints: (out) (array length=length) (transfer none): */ void gi_marshalling_tests_object_method_array_out (GIMarshallingTestsObject *object, gint **ints, gint *length) { static gint values[] = {-1, 0, 1, 2}; *length = 4; *ints = values; } /** * gi_marshalling_tests_object_method_array_inout: * @ints: (inout) (array length=length) (transfer none): * @length: (inout): */ void gi_marshalling_tests_object_method_array_inout (GIMarshallingTestsObject *object, gint **ints, gint *length) { static gint values[] = {-2, -1, 0, 1, 2}; g_assert(*length == 4); g_assert((*ints)[0] == -1); g_assert((*ints)[1] == 0); g_assert((*ints)[2] == 1); g_assert((*ints)[3] == 2); *length = 5; *ints = values; } /** * gi_marshalling_tests_object_method_array_return: * Returns: (array length=length): */ const gint * gi_marshalling_tests_object_method_array_return (GIMarshallingTestsObject *object, gint *length) { static gint ints[] = {-1, 0, 1, 2}; *length = 4; return ints; } /** * gi_marshalling_tests_object_method_int8_in: * @in: (in): */ void gi_marshalling_tests_object_method_int8_in (GIMarshallingTestsObject *self, gint8 in) { GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->method_int8_in (self, in); } /** * gi_marshalling_tests_object_method_int8_out: * @out: (out): */ void gi_marshalling_tests_object_method_int8_out (GIMarshallingTestsObject *self, gint8 *out) { GI_MARSHALLING_TESTS_OBJECT_GET_CLASS (self)->method_int8_out (self, out); } /** * gi_marshalling_tests_object_method_with_default_implementation: * @in: (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); } static void 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); } /** * gi_marshalling_tests_object_none_return: * Returns: (transfer none): */ GIMarshallingTestsObject * gi_marshalling_tests_object_none_return (void) { static GIMarshallingTestsObject *object = NULL; if (object == NULL) { object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL); } return object; } /** * gi_marshalling_tests_object_full_return: * Returns: (transfer full): */ GIMarshallingTestsObject * gi_marshalling_tests_object_full_return (void) { return g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL); } /** * gi_marshalling_tests_object_none_in: * @object: (transfer none): */ void gi_marshalling_tests_object_none_in (GIMarshallingTestsObject *object) { g_assert(object->int_ == 42); } /** * gi_marshalling_tests_object_none_out: * @object: (out) (transfer none): */ void gi_marshalling_tests_object_none_out (GIMarshallingTestsObject **object) { static GIMarshallingTestsObject *new_object = NULL; if (new_object == NULL) { new_object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL); } *object = new_object; } /** * gi_marshalling_tests_object_full_out: * @object: (out) (transfer full): */ void gi_marshalling_tests_object_full_out (GIMarshallingTestsObject **object) { *object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL); } /** * gi_marshalling_tests_object_none_inout: * @object: (inout) (transfer none): */ void gi_marshalling_tests_object_none_inout (GIMarshallingTestsObject **object) { static GIMarshallingTestsObject *new_object = NULL; g_assert((*object)->int_ == 42); if (new_object == NULL) { new_object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL); new_object->int_ = 0; } *object = new_object; } /** * gi_marshalling_tests_object_full_inout: * @object: (inout) (transfer full): */ void gi_marshalling_tests_object_full_inout (GIMarshallingTestsObject **object) { g_assert((*object)->int_ == 42); *object = g_object_new(GI_MARSHALLING_TESTS_TYPE_OBJECT, NULL); } /** * gi_marshalling_tests_object_test_int8_in: * @in: (in): */ void gi_marshalling_tests_object_int8_in (GIMarshallingTestsObject *object, gint8 in) { gi_marshalling_tests_object_method_int8_in (object, in); } /** * gi_marshalling_tests_object_test_int8_out: * @out: (out): */ void gi_marshalling_tests_object_int8_out (GIMarshallingTestsObject *object, gint8 *out) { gi_marshalling_tests_object_method_int8_out (object, out); } /** * gi_marshalling_tests_object_vfunc_return_value_only: */ 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; } /** * gi_marshalling_tests_object_vfunc_one_out_parameter: * @a: (out): */ 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); } /** * gi_marshalling_tests_object_vfunc_multiple_out_parameters: * @a: (out): * @b: (out): */ 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); } /** * 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) { /* 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; } /** * gi_marshalling_tests_object_vfunc_return_value_and_multiple_out_parameters: * @a: (out): * @b: (out): */ glong 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; } gboolean 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); return ret; } G_DEFINE_TYPE (GIMarshallingTestsSubObject, gi_marshalling_tests_sub_object, GI_MARSHALLING_TESTS_TYPE_OBJECT); static void 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); } 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); } 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; } void gi_marshalling_tests_sub_object_sub_method (GIMarshallingTestsSubObject *object) { g_assert(GI_MARSHALLING_TESTS_OBJECT(object)->int_ == 0); } void gi_marshalling_tests_sub_object_overwritten_method (GIMarshallingTestsSubObject *object) { g_assert(GI_MARSHALLING_TESTS_OBJECT(object)->int_ == 0); } 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) { } /* Interfaces */ static void 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); } return type; } /** * gi_marshalling_tests_interface_test_int8_in: * @in: (in): */ void gi_marshalling_tests_interface_test_int8_in (GIMarshallingTestsInterface *self, gint8 in) { GI_MARSHALLING_TESTS_INTERFACE_GET_IFACE (self)->test_int8_in (self, in); } /** * gi_marshalling_tests_test_interface_test_int8_in: * @in: (in): */ void gi_marshalling_tests_test_interface_test_int8_in (GIMarshallingTestsInterface *test_iface, gint8 in) { gi_marshalling_tests_interface_test_int8_in (test_iface, in); } static void 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); } return type; } /** * gi_marshalling_tests_int_out_out: * @int0: (out): * @int1: (out): */ void gi_marshalling_tests_int_out_out (gint *int0, gint *int1) { *int0 = 6; *int1 = 7; } /** * gi_marshalling_tests_int_three_in_three_out: * @a: (in): * @b: (in): * @c: (in): * @out0: (out): * @out1: (out): * @out2: (out): */ void 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; } /** * gi_marshalling_tests_int_return_out: * @int_: (out): */ gint gi_marshalling_tests_int_return_out (gint *int_) { *int_ = 7; return 6; } /* GError */ void 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); } /** * gi_marshalling_tests_gerror_array_in: * @in_ints: (array zero-terminated=1): */ void 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); } /** * gi_marshalling_tests_gerror_out: * @error: (out) (allow-none) (transfer full): location for the GError. * @debug: (out) (allow-none) (transfer full): location for the debug message * * Inspired by gst_message_parse_error. */ void 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); if (debug != NULL) { *debug = g_strdup (GI_MARSHALLING_TESTS_CONSTANT_GERROR_DEBUG_MESSAGE); } } /** * gi_marshalling_tests_gerror_out_transfer_none: * @err: (out) (allow-none) (transfer none): location for the GError. * @debug: (out) (allow-none) (transfer none): location for the debug message * * A variant of gi_marshalling_tests_gerror_out() which returns data the caller * must not free. */ void 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; } /** * gi_marshalling_tests_gerror_return: * * Yet another variant of gi_marshalling_tests_gerror_out(). * * Returns: (transfer full): a GError */ GError * gi_marshalling_tests_gerror_return(void) { 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); } static GIMarshallingTestsOverridesStruct * gi_marshalling_tests_overrides_struct_copy (GIMarshallingTestsOverridesStruct *struct_) { GIMarshallingTestsOverridesStruct *new_struct; new_struct = g_slice_new (GIMarshallingTestsOverridesStruct); *new_struct = *struct_; return new_struct; } static void gi_marshalling_tests_overrides_struct_free (GIMarshallingTestsOverridesStruct *struct_) { g_slice_free (GIMarshallingTestsOverridesStruct, struct_); } GType gi_marshalling_tests_overrides_struct_get_type (void) { 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); } return type; } GIMarshallingTestsOverridesStruct * gi_marshalling_tests_overrides_struct_new (void) { return g_slice_new (GIMarshallingTestsOverridesStruct); } glong gi_marshalling_tests_overrides_struct_method (GIMarshallingTestsOverridesStruct *struct_) { return 42; } /** * gi_marshalling_tests_overrides_struct_returnv: * * Returns: (transfer full): */ GIMarshallingTestsOverridesStruct * gi_marshalling_tests_overrides_struct_returnv (void) { return gi_marshalling_tests_overrides_struct_new(); } G_DEFINE_TYPE (GIMarshallingTestsOverridesObject, gi_marshalling_tests_overrides_object, G_TYPE_OBJECT); static void gi_marshalling_tests_overrides_object_init (GIMarshallingTestsOverridesObject *object) { } static void gi_marshalling_tests_overrides_object_finalize (GObject *object) { G_OBJECT_CLASS (gi_marshalling_tests_overrides_object_parent_class)->finalize (object); } static void gi_marshalling_tests_overrides_object_class_init (GIMarshallingTestsOverridesObjectClass *klass) { GObjectClass* object_class = G_OBJECT_CLASS (klass); #if 0 GObjectClass* parent_class = G_OBJECT_CLASS (klass); #endif 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); } glong gi_marshalling_tests_overrides_object_method (GIMarshallingTestsOverridesObject *object) { return 42; } /** * gi_marshalling_tests_overrides_object_returnv: * * Returns: (transfer full): */ GIMarshallingTestsOverridesObject * gi_marshalling_tests_overrides_object_returnv (void) { return g_object_new (GI_MARSHALLING_TESTS_TYPE_OVERRIDES_OBJECT, NULL); } /** * gi_marshalling_tests_filename_list_return: * * Returns: (transfer none) (element-type filename): List of filenames */ GSList * gi_marshalling_tests_filename_list_return (void) { return NULL; } 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 }; 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_finalize (GObject* obj) { G_OBJECT_CLASS (gi_marshalling_tests_properties_object_parent_class)->finalize (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; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } } 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; 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)); } GIMarshallingTestsPropertiesObject* gi_marshalling_tests_properties_object_new (void) { return g_object_new (GI_MARSHALLING_TESTS_TYPE_PROPERTIES_OBJECT, NULL); } 0707010007ffb3000081a40000000000000000000000014f83d2e700004952000000b600010002ffffffffffffffff0000004200000000root/usr/local/share/gobject-introspection-1.0/tests/everything.c/* GENERATED BY testcodegen.py; DO NOT EDIT */ #include "everything.h" /** * everything_nullfunc: * * Undocumented. * * Returns: (transfer none) */ void everything_nullfunc (void) { return; } /** * everything_const_return_gboolean: * * Undocumented. * * Returns: (transfer none) */ gboolean everything_const_return_gboolean (void) { return 0; } /** * everything_const_return_gint8: * * Undocumented. * * Returns: (transfer none) */ gint8 everything_const_return_gint8 (void) { return 0; } /** * everything_const_return_guint8: * * Undocumented. * * Returns: (transfer none) */ guint8 everything_const_return_guint8 (void) { return 0; } /** * everything_const_return_gint16: * * Undocumented. * * Returns: (transfer none) */ gint16 everything_const_return_gint16 (void) { return 0; } /** * everything_const_return_guint16: * * Undocumented. * * Returns: (transfer none) */ guint16 everything_const_return_guint16 (void) { return 0; } /** * everything_const_return_gint32: * * Undocumented. * * Returns: (transfer none) */ gint32 everything_const_return_gint32 (void) { return 0; } /** * everything_const_return_guint32: * * Undocumented. * * Returns: (transfer none) */ guint32 everything_const_return_guint32 (void) { return 0; } /** * everything_const_return_gint64: * * Undocumented. * * Returns: (transfer none) */ gint64 everything_const_return_gint64 (void) { return 0; } /** * everything_const_return_guint64: * * Undocumented. * * Returns: (transfer none) */ guint64 everything_const_return_guint64 (void) { return 0; } /** * everything_const_return_gchar: * * Undocumented. * * Returns: (transfer none) */ gchar everything_const_return_gchar (void) { return 0; } /** * everything_const_return_gshort: * * Undocumented. * * Returns: (transfer none) */ gshort everything_const_return_gshort (void) { return 0; } /** * everything_const_return_gushort: * * Undocumented. * * Returns: (transfer none) */ gushort everything_const_return_gushort (void) { return 0; } /** * everything_const_return_gint: * * Undocumented. * * Returns: (transfer none) */ gint everything_const_return_gint (void) { return 0; } /** * everything_const_return_guint: * * Undocumented. * * Returns: (transfer none) */ guint everything_const_return_guint (void) { return 0; } /** * everything_const_return_glong: * * Undocumented. * * Returns: (transfer none) */ glong everything_const_return_glong (void) { return 0; } /** * everything_const_return_gulong: * * Undocumented. * * Returns: (transfer none) */ gulong everything_const_return_gulong (void) { return 0; } /** * everything_const_return_gsize: * * Undocumented. * * Returns: (transfer none) */ gsize everything_const_return_gsize (void) { return 0; } /** * everything_const_return_gssize: * * Undocumented. * * Returns: (transfer none) */ gssize everything_const_return_gssize (void) { return 0; } /** * everything_const_return_gintptr: * * Undocumented. * * Returns: (transfer none) */ gintptr everything_const_return_gintptr (void) { return 0; } /** * everything_const_return_guintptr: * * Undocumented. * * Returns: (transfer none) */ guintptr everything_const_return_guintptr (void) { return 0; } /** * everything_const_return_gfloat: * * Undocumented. * * Returns: (transfer none) */ gfloat everything_const_return_gfloat (void) { return 0; } /** * everything_const_return_gdouble: * * Undocumented. * * Returns: (transfer none) */ gdouble everything_const_return_gdouble (void) { return 0; } /** * everything_const_return_gunichar: * * Undocumented. * * Returns: (transfer none) */ gunichar everything_const_return_gunichar (void) { return 0; } /** * everything_const_return_GType: * * Undocumented. * * Returns: (transfer none) */ GType everything_const_return_GType (void) { return g_object_get_type (); } /** * everything_const_return_utf8: * * Undocumented. * * Returns: (transfer none) */ const gchar* everything_const_return_utf8 (void) { return ""; } /** * everything_const_return_filename: * * Undocumented. * * Returns: (transfer none) */ const gchar* everything_const_return_filename (void) { return ""; } /** * everything_oneparam_gboolean: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gboolean (gboolean arg0) { return; } /** * everything_oneparam_gint8: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gint8 (gint8 arg0) { return; } /** * everything_oneparam_guint8: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_guint8 (guint8 arg0) { return; } /** * everything_oneparam_gint16: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gint16 (gint16 arg0) { return; } /** * everything_oneparam_guint16: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_guint16 (guint16 arg0) { return; } /** * everything_oneparam_gint32: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gint32 (gint32 arg0) { return; } /** * everything_oneparam_guint32: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_guint32 (guint32 arg0) { return; } /** * everything_oneparam_gint64: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gint64 (gint64 arg0) { return; } /** * everything_oneparam_guint64: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_guint64 (guint64 arg0) { return; } /** * everything_oneparam_gchar: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gchar (gchar arg0) { return; } /** * everything_oneparam_gshort: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gshort (gshort arg0) { return; } /** * everything_oneparam_gushort: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gushort (gushort arg0) { return; } /** * everything_oneparam_gint: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gint (gint arg0) { return; } /** * everything_oneparam_guint: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_guint (guint arg0) { return; } /** * everything_oneparam_glong: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_glong (glong arg0) { return; } /** * everything_oneparam_gulong: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gulong (gulong arg0) { return; } /** * everything_oneparam_gsize: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gsize (gsize arg0) { return; } /** * everything_oneparam_gssize: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gssize (gssize arg0) { return; } /** * everything_oneparam_gintptr: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gintptr (gintptr arg0) { return; } /** * everything_oneparam_guintptr: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_guintptr (guintptr arg0) { return; } /** * everything_oneparam_gfloat: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gfloat (gfloat arg0) { return; } /** * everything_oneparam_gdouble: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gdouble (gdouble arg0) { return; } /** * everything_oneparam_gunichar: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_gunichar (gunichar arg0) { return; } /** * everything_oneparam_GType: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_GType (GType arg0) { return; } /** * everything_oneparam_utf8: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_utf8 (const gchar* arg0) { return; } /** * everything_oneparam_filename: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ void everything_oneparam_filename (const gchar* arg0) { return; } /** * everything_one_outparam_gboolean: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gboolean (gboolean* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gint8: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gint8 (gint8* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_guint8: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_guint8 (guint8* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gint16: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gint16 (gint16* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_guint16: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_guint16 (guint16* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gint32: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gint32 (gint32* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_guint32: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_guint32 (guint32* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gint64: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gint64 (gint64* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_guint64: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_guint64 (guint64* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gchar: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gchar (gchar* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gshort: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gshort (gshort* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gushort: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gushort (gushort* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gint: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gint (gint* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_guint: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_guint (guint* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_glong: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_glong (glong* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gulong: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gulong (gulong* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gsize: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gsize (gsize* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gssize: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gssize (gssize* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gintptr: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gintptr (gintptr* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_guintptr: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_guintptr (guintptr* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gfloat: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gfloat (gfloat* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gdouble: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gdouble (gdouble* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_gunichar: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_gunichar (gunichar* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_GType: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_GType (GType* arg0) { *arg0 = 0; return; } /** * everything_one_outparam_utf8: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_utf8 (const gchar** arg0) { *arg0 = 0; return; } /** * everything_one_outparam_filename: * @arg0: (out) (transfer none): * * Undocumented. * * Returns: (transfer none) */ void everything_one_outparam_filename (const gchar** arg0) { *arg0 = 0; return; } /** * everything_passthrough_one_gboolean: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gboolean everything_passthrough_one_gboolean (gboolean arg0) { return arg0; } /** * everything_passthrough_one_gint8: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gint8 everything_passthrough_one_gint8 (gint8 arg0) { return arg0; } /** * everything_passthrough_one_guint8: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ guint8 everything_passthrough_one_guint8 (guint8 arg0) { return arg0; } /** * everything_passthrough_one_gint16: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gint16 everything_passthrough_one_gint16 (gint16 arg0) { return arg0; } /** * everything_passthrough_one_guint16: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ guint16 everything_passthrough_one_guint16 (guint16 arg0) { return arg0; } /** * everything_passthrough_one_gint32: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gint32 everything_passthrough_one_gint32 (gint32 arg0) { return arg0; } /** * everything_passthrough_one_guint32: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ guint32 everything_passthrough_one_guint32 (guint32 arg0) { return arg0; } /** * everything_passthrough_one_gint64: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gint64 everything_passthrough_one_gint64 (gint64 arg0) { return arg0; } /** * everything_passthrough_one_guint64: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ guint64 everything_passthrough_one_guint64 (guint64 arg0) { return arg0; } /** * everything_passthrough_one_gchar: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gchar everything_passthrough_one_gchar (gchar arg0) { return arg0; } /** * everything_passthrough_one_gshort: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gshort everything_passthrough_one_gshort (gshort arg0) { return arg0; } /** * everything_passthrough_one_gushort: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gushort everything_passthrough_one_gushort (gushort arg0) { return arg0; } /** * everything_passthrough_one_gint: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gint everything_passthrough_one_gint (gint arg0) { return arg0; } /** * everything_passthrough_one_guint: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ guint everything_passthrough_one_guint (guint arg0) { return arg0; } /** * everything_passthrough_one_glong: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ glong everything_passthrough_one_glong (glong arg0) { return arg0; } /** * everything_passthrough_one_gulong: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gulong everything_passthrough_one_gulong (gulong arg0) { return arg0; } /** * everything_passthrough_one_gsize: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gsize everything_passthrough_one_gsize (gsize arg0) { return arg0; } /** * everything_passthrough_one_gssize: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gssize everything_passthrough_one_gssize (gssize arg0) { return arg0; } /** * everything_passthrough_one_gintptr: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gintptr everything_passthrough_one_gintptr (gintptr arg0) { return arg0; } /** * everything_passthrough_one_guintptr: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ guintptr everything_passthrough_one_guintptr (guintptr arg0) { return arg0; } /** * everything_passthrough_one_gfloat: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gfloat everything_passthrough_one_gfloat (gfloat arg0) { return arg0; } /** * everything_passthrough_one_gdouble: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gdouble everything_passthrough_one_gdouble (gdouble arg0) { return arg0; } /** * everything_passthrough_one_gunichar: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ gunichar everything_passthrough_one_gunichar (gunichar arg0) { return arg0; } /** * everything_passthrough_one_GType: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ GType everything_passthrough_one_GType (GType arg0) { return arg0; } /** * everything_passthrough_one_utf8: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ const gchar* everything_passthrough_one_utf8 (const gchar* arg0) { return arg0; } /** * everything_passthrough_one_filename: * @arg0: : * * Undocumented. * * Returns: (transfer none) */ const gchar* everything_passthrough_one_filename (const gchar* arg0) { return arg0; } 0707010007ffe4000041ed0000000000000000000000034f83d34200000000000000b600010002ffffffffffffffff0000001900000000root/usr/local/share/man0707010007ffe5000041ed0000000000000000000000024f83d34200000000000000b600010002ffffffffffffffff0000001e00000000root/usr/local/share/man/man10707010007ffe6000081a40000000000000000000000014f83d2e60000058a000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man1/g-ir-compiler.1.TH "g-ir-compiler" 1 .SH NAME g-ir-compiler \- typelib compiler. .SH SYNOPSIS .B g-ir-compiler [OPTION...] GIRFILE .SH DESCRIPTION g-ir-compiler converts one or more GIR files into one or more typelib. It can either emit the raw typelib blob (default behavior) or C code (--code). The output will be written to standard output unless the --output is specified. .SH OPTIONS .TP .B \---help Show help options .TP .B \, ---code Emit C code which is suitable for including in a shared library instead of a raw typelib. .TP .B \, ---output=FILENAME Save the resulting output in FILENAME. .TP .B \---verbose Show verbose messages .TP .B \---debug Show debug messages .TP .B \---no-init Do not include an initialization snippet to register the typelib in the respository. This can only be used if --code is also specified. .TP .B \---includedir=DIRECTORY Adds a directory which will be used to find includes inside the GIR format. .TP .B \---module=MODULE FIXME .TP .B \---shared-library=FILENAME Specifies the shared library where the symbols in the typelib can be found. The name of the library should not contain the leading lib prefix nor the ending shared library suffix. .TP .SH BUGS Report bugs at http://bugzilla.gnome.org/ in the glib product and introspection component. .SH HOMEPAGE and CONTACT http://live.gnome.org/GObjectIntrospection .SH AUTHORS Mattias Clasen 0707010007ffe8000081a40000000000000000000000014f83d2e6000013bc000000b600010002ffffffffffffffff0000002d00000000root/usr/local/share/man/man1/g-ir-scanner.1.TH "g-ir-scanner" 1 .SH NAME g-ir-scanner \- extracting C metadata from sources and headers .SH SYNOPSIS .B g-ir-scanner [OPTION...] FILES... .SH DESCRIPTION g-ir-scanner is a tool which generates GIR XML files by parsing headers and introspecting GObject based libraries. It is usually invoked during the normal build step for a project and the information is saved to disk and later installed, so that language bindings and other applications can use it. Header files and source files are passed in as arguments on the command line. The suffix determines whether a file be treated as a source file (.c) or a header file (.h). Currently only C based libraries are supported by the scanner. .SH OPTIONS .TP .B \--help Show help options .TP .B \--quiet If passed, do not print details of normal operation. .TP .B \--warn-all Display warnings for public API which is not introspectable. .TP .B \--warn-error Make warnings be fatal errors. .TP .B \--format=FORMAT This parameters decides which the resulting format will be used. The default value is gir. .TP .B \--include=NAME Add the specified introspection dependency to the scanned namespace. NAME is of the form NAMESPACE-VERSION, like Gtk-3.0. .TP .B \--include-uninstalled=PATH Add the specified introspection dependency to the scanned namespace. This differs from \--include in that it takes a file path, and does not process the pkg-config dependencies (since they may not be installed yet). .TP .B \--add-include-path=PATH Add a directory to the path which the scanner uses to find GIR files. Can be used multiple times to specify multiple directories .TP .B \-i, --library=LIBRARY Specifies a library that will be introspected. This means that the *_get_type() functions in it will be called for GObject data types. The name of the library should not contain the leading lib prefix nor the ending shared library suffix. .TP .B \-L, --library-path=PATH Include this directory when searching for a library. This option can be specified multiple times to include more than one directory to look for libraries in. .TP .B \-Idirectory Include this directory in the list of directories to be searched for header files. You need to pass to the scanner all the directories you'd normally pass to the compiler when using the specified source files. .TP .B \-n, --namespace=NAME The namespace name. This name should be capitalized, eg the first letter should be upper case. Examples: Gtk, Clutter, WebKit. .TP .B \--no-libtool Disable usage of libtool for compiling stub introspection binary. Use this if your build system does not require libtool. .TP .B \--libtool Full path to libtool executable. Typically used for Automake systems. .TP .B --nsversion=VERSION The namespace version. For instance 1.0. This is usually the platform version, eg 2.0 for Gtk+, not 2.12.7. .TP .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 to pass the argument to this function to g_irepository_dump. .TP .B \--program-arg=ARG Additional argument to pass to program for introspection. .TP .B \--identifier-prefix=PREFIX This option may be specified multiple times. Each one gives a prefix that will be stripped from all C identifiers. If none specified, the namespace will be used. Eg, an identifier prefix of .B Foo will export the identifier .B typdef struct _FooBar FooBar; as .B Foo.Bar. .TP .B \--symbol-prefix=PREFIX This option may be specified multiple times. Each one gives a prefix that will be stripped from all C symbols. Eg, an symbol prefix of .B foo will export the symbol .B foo_bar_do_something as .B Foo.Bar.do_something. .TP .B \--accept-unprefixed If specified, the scanner will accept identifiers and symbols which do not match the namespace prefix. Try to avoid using this if possible. .TP .B \--output=FILENAME Name of the file to output. Normally namespace + format extension. Eg, GLib-2.0.gir. .TP .B \--pkg=PACKAGE List of pkg-config packages to get compiler and linker flags from. This option can be specified multiple times to include flags from several pkg-config packages. .TP .B \--pkg-export=PACKAGE List of pkg-config packages that are provided by the generated gir. This option can be specified multiple times if the gir provides more packages. If not specified, the packages specified with --pkg= will be used. .TP .B \--verbose 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 set on a distribution so you shouldn't need to set it yourself. The variable GI_SCANNER_DISABLE_CACHE ensures that the scanner will not write cache data to $HOME. .SH BUGS Report bugs at http://bugzilla.gnome.org/ in the glib product and introspection component. .SH HOMEPAGE and CONTACT http://live.gnome.org/GObjectIntrospection .SH AUTHORS Johan Dahlin 0707010007ffe7000081a40000000000000000000000014f83d2e6000002e1000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/man/man1/g-ir-generate.1.TH "g-ir-generate" 1 .SH NAME g-ir-generate \- typelib generator .SH SYNOPSIS .B g-ir-generate [OPTION...] FILES... .SH DESCRIPTION g-idl-generate is an GIR generator, using the repository API. It generates GIR files from a raw typelib or in a shared library (--shlib). The output will be written to standard output unless the --output is specified. .SH OPTIONS .TP .B \, --help Show help options .TP .B \, --shlib=FILENAME The shared library to read the symbols from. .TP .B \, --output=FILENAME Save the resulting output in FILENAME. .TP .SH BUGS Report bugs at http://bugzilla.gnome.org/ in the glib product and introspection component. .SH HOMEPAGE and CONTACT http://live.gnome.org/GObjectIntrospection .SH AUTHORS Mattias Clasen 0707010007ff9c000041ed0000000000000000000000024f83d34200000000000000b600010002ffffffffffffffff0000001d00000000root/usr/local/share/aclocal0707010007ff9d000081a40000000000000000000000014f83d2e600000dde000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/aclocal/introspection.m4dnl -*- mode: autoconf -*- dnl Copyright 2009 Johan Dahlin dnl dnl This file is free software; the author(s) gives unlimited dnl permission to copy and/or distribute it, with or without dnl modifications, as long as this notice is preserved. dnl # serial 1 m4_define([_GOBJECT_INTROSPECTION_CHECK_INTERNAL], [ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first AC_BEFORE([LT_INIT],[$0])dnl setup libtool first dnl enable/disable introspection m4_if([$2], [require], [dnl enable_introspection=yes ],[dnl AC_ARG_ENABLE(introspection, AS_HELP_STRING([--enable-introspection[=@<:@no/auto/yes@:>@]], [Enable introspection for this build]),, [enable_introspection=auto]) ])dnl AC_MSG_CHECKING([for gobject-introspection]) dnl presence/version checking AS_CASE([$enable_introspection], [no], [dnl found_introspection="no (disabled, use --enable-introspection to enable)" ],dnl [yes],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0],, AC_MSG_ERROR([gobject-introspection-1.0 is not installed])) PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, AC_MSG_ERROR([You need to have gobject-introspection >= $1 installed to build AC_PACKAGE_NAME])) ],dnl [auto],[dnl PKG_CHECK_EXISTS([gobject-introspection-1.0 >= $1], found_introspection=yes, found_introspection=no) dnl Canonicalize enable_introspection enable_introspection=$found_introspection ],dnl [dnl AC_MSG_ERROR([invalid argument passed to --enable-introspection, should be one of @<:@no/auto/yes@:>@]) ])dnl AC_MSG_RESULT([$found_introspection]) INTROSPECTION_SCANNER= INTROSPECTION_COMPILER= INTROSPECTION_GENERATE= INTROSPECTION_GIRDIR= INTROSPECTION_TYPELIBDIR= if test "x$found_introspection" = "xyes"; then INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0` INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0` INTROSPECTION_GENERATE=`$PKG_CONFIG --variable=g_ir_generate gobject-introspection-1.0` INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir gobject-introspection-1.0` INTROSPECTION_TYPELIBDIR="$($PKG_CONFIG --variable=typelibdir gobject-introspection-1.0)" INTROSPECTION_CFLAGS=`$PKG_CONFIG --cflags gobject-introspection-1.0` INTROSPECTION_LIBS=`$PKG_CONFIG --libs gobject-introspection-1.0` INTROSPECTION_MAKEFILE=`$PKG_CONFIG --variable=datadir gobject-introspection-1.0`/gobject-introspection-1.0/Makefile.introspection fi AC_SUBST(INTROSPECTION_SCANNER) AC_SUBST(INTROSPECTION_COMPILER) AC_SUBST(INTROSPECTION_GENERATE) AC_SUBST(INTROSPECTION_GIRDIR) AC_SUBST(INTROSPECTION_TYPELIBDIR) AC_SUBST(INTROSPECTION_CFLAGS) AC_SUBST(INTROSPECTION_LIBS) AC_SUBST(INTROSPECTION_MAKEFILE) AM_CONDITIONAL(HAVE_INTROSPECTION, test "x$found_introspection" = "xyes") ]) dnl Usage: dnl GOBJECT_INTROSPECTION_CHECK([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_CHECK], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1]) ]) dnl Usage: dnl GOBJECT_INTROSPECTION_REQUIRE([minimum-g-i-version]) AC_DEFUN([GOBJECT_INTROSPECTION_REQUIRE], [ _GOBJECT_INTROSPECTION_CHECK_INTERNAL([$1], [require]) ]) 0707010007ffb9000041ed0000000000000000000000034f83d34200000000000000b600010002ffffffffffffffff0000001d00000000root/usr/local/share/gtk-doc0707010007ffba000041ed0000000000000000000000034f83d34200000000000000b600010002ffffffffffffffff0000002200000000root/usr/local/share/gtk-doc/html0707010007ffbb000041ed0000000000000000000000024f83d34200000000000000b600010002ffffffffffffffff0000002500000000root/usr/local/share/gtk-doc/html/gi0707010007ffd7000081a40000000000000000000000014f83d2e600000dd8000000b600010002ffffffffffffffff0000003e00000000root/usr/local/share/gtk-doc/html/gi/gi-struct-hierarchy.html Struct hierarchy

Struct hierarchy

Struct hierarchy — Struct hierarchy description for GIBaseInfo and all its sub structs

0707010007ffc4000081a40000000000000000000000014f83d2e600008606000000b600010002ffffffffffffffff0000003d00000000root/usr/local/share/gtk-doc/html/gi/gi-GIInterfaceInfo.html GIInterfaceInfo

GIInterfaceInfo

GIInterfaceInfo — Struct representing a GInterface

Description

GIInterfaceInfo represents a GInterface type.

A GInterface has methods, fields, properties, signals, interfaces, constants, virtual functions and prerequisites.

Struct hierarchy

  GIBaseInfo
   +----GIRegisteredTypeInfo
         +----GIInterfaceInfo

Details

GI_IS_INTERFACE_INFO()

#define             GI_IS_INTERFACE_INFO(info)

GIInterfaceInfo

typedef GIBaseInfo GIInterfaceInfo;

Represents an interface.


g_interface_info_get_n_prerequisites ()

gint                g_interface_info_get_n_prerequisites
                                                        (GIInterfaceInfo *info);

Obtain the number of prerequisites for this interface type. A prerequisites is another interface that needs to be implemented for interface, similar to an base class for GObjects.

info :

a GIInterfaceInfo

Returns :

number of prerequisites

g_interface_info_get_prerequisite ()

GIBaseInfo *        g_interface_info_get_prerequisite   (GIInterfaceInfo *info,
                                                         gint n);

Obtain an interface type prerequisites index n.

info :

a GIInterfaceInfo

n :

index of prerequisites to get

Returns :

the prerequisites as a GIBaseInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_interface_info_get_n_properties ()

gint                g_interface_info_get_n_properties   (GIInterfaceInfo *info);

Obtain the number of properties that this interface type has.

info :

a GIInterfaceInfo

Returns :

number of properties

g_interface_info_get_property ()

GIPropertyInfo *    g_interface_info_get_property       (GIInterfaceInfo *info,
                                                         gint n);

Obtain an interface type property at index n.

info :

a GIInterfaceInfo

n :

index of property to get

Returns :

the GIPropertyInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_interface_info_get_n_methods ()

gint                g_interface_info_get_n_methods      (GIInterfaceInfo *info);

Obtain the number of methods that this interface type has.

info :

a GIInterfaceInfo

Returns :

number of methods

g_interface_info_get_method ()

GIFunctionInfo *    g_interface_info_get_method         (GIInterfaceInfo *info,
                                                         gint n);

Obtain an interface type method at index n.

info :

a GIInterfaceInfo

n :

index of method to get

Returns :

the GIFunctionInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_interface_info_find_method ()

GIFunctionInfo *    g_interface_info_find_method        (GIInterfaceInfo *info,
                                                         const gchar *name);

Obtain a method of the interface type given a name. NULL will be returned if there's no method available with that name.

info :

a GIInterfaceInfo

name :

name of method to obtain

Returns :

the GIFunctionInfo or NULL if none found. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_interface_info_get_n_signals ()

gint                g_interface_info_get_n_signals      (GIInterfaceInfo *info);

Obtain the number of signals that this interface type has.

info :

a GIInterfaceInfo

Returns :

number of signals

g_interface_info_get_signal ()

GISignalInfo *      g_interface_info_get_signal         (GIInterfaceInfo *info,
                                                         gint n);

Obtain an interface type signal at index n.

info :

a GIInterfaceInfo

n :

index of signal to get

Returns :

the GISignalInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_interface_info_get_n_vfuncs ()

gint                g_interface_info_get_n_vfuncs       (GIInterfaceInfo *info);

Obtain the number of virtual functions that this interface type has.

info :

a GIInterfaceInfo

Returns :

number of virtual functions

g_interface_info_get_vfunc ()

GIVFuncInfo *       g_interface_info_get_vfunc          (GIInterfaceInfo *info,
                                                         gint n);

Obtain an interface type virtual function at index n.

info :

a GIInterfaceInfo

n :

index of virtual function to get

Returns :

the GIVFuncInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_interface_info_get_n_constants ()

gint                g_interface_info_get_n_constants    (GIInterfaceInfo *info);

Obtain the number of constants that this interface type has.

info :

a GIInterfaceInfo

Returns :

number of constants

g_interface_info_get_constant ()

GIConstantInfo *    g_interface_info_get_constant       (GIInterfaceInfo *info,
                                                         gint n);

Obtain an interface type constant at index n.

info :

a GIInterfaceInfo

n :

index of constant to get

Returns :

the GIConstantInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_interface_info_get_iface_struct ()

GIStructInfo *      g_interface_info_get_iface_struct   (GIInterfaceInfo *info);

Returns the layout C structure associated with this GInterface.

info :

a GIInterfaceInfo

Returns :

the GIStructInfo or NULL. Free it with g_base_info_unref() when done. [transfer full]

g_interface_info_find_vfunc ()

GIVFuncInfo *       g_interface_info_find_vfunc         (GIInterfaceInfo *info,
                                                         const gchar *name);

Locate a virtual function slot with name name. See the documentation for g_object_info_find_vfunc() for more information on virtuals.

info :

a GIInterfaceInfo

name :

The name of a virtual function to find.

Returns :

the GIVFuncInfo, or NULL. Free it with g_base_info_unref() when done. [transfer full]
0707010007ffcd000081a40000000000000000000000014f83d2e600000717000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/gtk-doc/html/gi/gi-ffi.html GIR Foreign functions interface

GIR Foreign functions interface

0707010007ffc3000081a40000000000000000000000014f83d2e6000056b3000000b600010002ffffffffffffffff0000003c00000000root/usr/local/share/gtk-doc/html/gi/gi-GIFunctionInfo.html GIFunctionInfo

GIFunctionInfo

GIFunctionInfo — Struct representing a function

Synopsis

#define             GI_IS_FUNCTION_INFO                 (info)
typedef             GIFunctionInfo;
enum                GInvokeError;
enum                GIFunctionInfoFlags;
#define             G_INVOKE_ERROR
const gchar *       g_function_info_get_symbol          (GIFunctionInfo *info);
GIFunctionInfoFlags g_function_info_get_flags           (GIFunctionInfo *info);
GIPropertyInfo *    g_function_info_get_property        (GIFunctionInfo *info);
GIVFuncInfo *       g_function_info_get_vfunc           (GIFunctionInfo *info);
gboolean            g_function_info_invoke              (GIFunctionInfo *info,
                                                         const GIArgument *in_args,
                                                         int n_in_args,
                                                         const GIArgument *out_args,
                                                         int n_out_args,
                                                         GIArgument *return_value,
                                                         GError **error);

Description

GIFunctionInfo represents a function, method or constructor. To find out what kind of entity a GIFunctionInfo represents, call g_function_info_get_flags().

See also GICallableInfo for information on how to retreive arguments and other metadata.

Struct hierarchy

  GIBaseInfo
   +----GICallableInfo
         +----GIFunctionInfo
         +----GISignalInfo
         +----GIVFuncInfo

Details

GI_IS_FUNCTION_INFO()

#define             GI_IS_FUNCTION_INFO(info)

GIFunctionInfo

typedef GIBaseInfo GIFunctionInfo;

Represents a function, eg arguments and return value.


enum GInvokeError

typedef enum {
  G_INVOKE_ERROR_FAILED,
  G_INVOKE_ERROR_SYMBOL_NOT_FOUND,
  G_INVOKE_ERROR_ARGUMENT_MISMATCH
} GInvokeError;

An error occuring while invoking a function via g_function_info_invoke().

G_INVOKE_ERROR_FAILED

invokation failed, unknown error.

G_INVOKE_ERROR_SYMBOL_NOT_FOUND

symbol couldn't be found in any of the libraries associated with the typelib of the function.

G_INVOKE_ERROR_ARGUMENT_MISMATCH

the arguments provided didn't match the expected arguments for the functions type signature.

enum GIFunctionInfoFlags

typedef enum {
  GI_FUNCTION_IS_METHOD      = 1 << 0,
  GI_FUNCTION_IS_CONSTRUCTOR = 1 << 1,
  GI_FUNCTION_IS_GETTER      = 1 << 2,
  GI_FUNCTION_IS_SETTER      = 1 << 3,
  GI_FUNCTION_WRAPS_VFUNC    = 1 << 4,
  GI_FUNCTION_THROWS         = 1 << 5
} GIFunctionInfoFlags;

Flags for a GIFunctionInfo struct.

GI_FUNCTION_IS_METHOD

is a method.

GI_FUNCTION_IS_CONSTRUCTOR

is a constructor.

GI_FUNCTION_IS_GETTER

is a getter of a GIPropertyInfo.

GI_FUNCTION_IS_SETTER

is a setter of a GIPropertyInfo.

GI_FUNCTION_WRAPS_VFUNC

represents a virtual function.

GI_FUNCTION_THROWS

the function may throw an error.

G_INVOKE_ERROR

#define G_INVOKE_ERROR (g_invoke_error_quark ())

g_function_info_get_symbol ()

const gchar *       g_function_info_get_symbol          (GIFunctionInfo *info);

Obtain the symbol of the function. The symbol is the name of the exported function, suitable to be used as an argument to g_module_symbol().

info :

a GIFunctionInfo

Returns :

the symbol

g_function_info_get_flags ()

GIFunctionInfoFlags g_function_info_get_flags           (GIFunctionInfo *info);

Obtain the GIFunctionInfoFlags for the info.

info :

a GIFunctionInfo

Returns :

the flags

g_function_info_get_property ()

GIPropertyInfo *    g_function_info_get_property        (GIFunctionInfo *info);

Obtain the property associated with this GIFunctionInfo. Only GIFunctionInfo with the flag GI_FUNCTION_IS_GETTER or GI_FUNCTION_IS_SETTER have a property set. For other cases, NULL will be returned.

info :

a GIFunctionInfo

Returns :

the property or NULL if not set. Free it with g_base_info_unref() when done. [transfer full]

g_function_info_get_vfunc ()

GIVFuncInfo *       g_function_info_get_vfunc           (GIFunctionInfo *info);

Obtain the virtual function associated with this GIFunctionInfo. Only GIFunctionInfo with the flag GI_FUNCTION_WRAPS_VFUNC has a virtual function set. For other cases, NULL will be returned.

info :

a GIFunctionInfo

Returns :

the virtual function or NULL if not set. Free it by calling g_base_info_unref() when done. [transfer full]

g_function_info_invoke ()

gboolean            g_function_info_invoke              (GIFunctionInfo *info,
                                                         const GIArgument *in_args,
                                                         int n_in_args,
                                                         const GIArgument *out_args,
                                                         int n_out_args,
                                                         GIArgument *return_value,
                                                         GError **error);

Invokes the function described in info with the given arguments. Note that inout parameters must appear in both argument lists. This function uses dlsym() to obtain a pointer to the function, so the library or shared object containing the described function must either be linked to the caller, or must have been g_module_symbol()ed before calling this function.

info :

a GIFunctionInfo describing the function to invoke

in_args :

an array of GIArguments, one for each in parameter of info. If there are no in parameter, in_args can be NULL

n_in_args :

the length of the in_args array

out_args :

an array of GIArguments, one for each out parameter of info. If there are no out parameters, out_args may be NULL

n_out_args :

the length of the out_args array

return_value :

return location for the return value of the function. If the function returns void, return_value may be NULL

error :

return location for detailed error information, or NULL

Returns :

TRUE if the function has been invoked, FALSE if an error occurred.
0707010007ffde000081a40000000000000000000000014f83d2e60000a6e2000000b600010002ffffffffffffffff0000003000000000root/usr/local/share/gtk-doc/html/gi/index.sgml 0707010007ffc1000081a40000000000000000000000014f83d2e600003b27000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/gtk-doc/html/gi/gi-GIEnumInfo.html GIEnumInfo

GIEnumInfo

GIEnumInfo — Structs representing an enumeration and its values

Description

A GIEnumInfo represents an enumeration and a GIValueInfo struct represents a value of an enumeration. The GIEnumInfo contains a set of values and a type The GIValueInfo is fetched by calling g_enum_info_get_value() on a GIEnumInfo.

Struct hierarchy

  GIBaseInfo
   +----GIRegisteredTypeInfo
         +----GIEnumInfo

Details

GI_IS_ENUM_INFO()

#define             GI_IS_ENUM_INFO(info)

GI_IS_VALUE_INFO()

#define             GI_IS_VALUE_INFO(info)

GIEnumInfo

typedef GIBaseInfo GIEnumInfo;

Represents an enum or a flag.


GIValueInfo

typedef GIBaseInfo GIValueInfo;

Represents a enum value of a GIEnumInfo.


g_enum_info_get_n_values ()

gint                g_enum_info_get_n_values            (GIEnumInfo *info);

Obtain the number of values this enumeration contains.

info :

a GIEnumInfo

Returns :

the number of enumeration values

g_enum_info_get_value ()

GIValueInfo *       g_enum_info_get_value               (GIEnumInfo *info,
                                                         gint n);

Obtain a value for this enumeration.

info :

a GIEnumInfo

n :

index of value to fetch

Returns :

the enumeration value or NULL if type tag is wrong, free the struct with g_base_info_unref() when done. [transfer full]

g_enum_info_get_n_methods ()

gint                g_enum_info_get_n_methods           (GIEnumInfo *info);

Obtain the number of methods that this enum type has.

info :

a GIEnumInfo

Returns :

number of methods

Since 1.29.17


g_enum_info_get_method ()

GIFunctionInfo *    g_enum_info_get_method              (GIEnumInfo *info,
                                                         gint n);

Obtain an enum type method at index n.

info :

a GIEnumInfo

n :

index of method to get

Returns :

the GIFunctionInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

Since 1.29.17


g_enum_info_get_storage_type ()

GITypeTag           g_enum_info_get_storage_type        (GIEnumInfo *info);

Obtain the tag of the type used for the enum in the C ABI. This will will be a signed or unsigned integral type.

Note that in the current implementation the width of the type is computed correctly, but the signed or unsigned nature of the type may not match the sign of the type used by the C compiler.

info :

a GIEnumInfo

Returns :

the storage type for the enumeration

g_value_info_get_value ()

gint64              g_value_info_get_value              (GIValueInfo *info);

Obtain the enumeration value of the GIValueInfo.

info :

a GIValueInfo

Returns :

the enumeration value. This will always be representable as a 32-bit signed or unsigned value. The use of gint64 as the return type is to allow both.
0707010007ffd0000081a40000000000000000000000014f83d2e6000006f0000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/gtk-doc/html/gi/gi-gir.html Part II. GIR markup format

Part II. GIR markup format

Table of Contents

The GIR XML format
0707010007ffe0000081a40000000000000000000000014f83d2e60001b888000000b600010002ffffffffffffffff0000003200000000root/usr/local/share/gtk-doc/html/gi/overview.pngPNG  IHDR,1sBIT|d pHYsttfxtEXtSoftwarewww.inkscape.org< IDATxyXUWP0qE45͍,2LKL3-K,5Ԓ0r-QPpcQQD}zD/<>O̙3s3gF@#ЪU+]BDDDDDD:tq̟?AتU+W1͟?J]ADDDDDD E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2@BCCqkݻǎ3O|#G 2O֓JLLį*+֭+DDDDDbDqذaHJJzLTjժ-7nmBPTT82سgJHك9sʆ TÇ7ʺuGmkkDJTaqҥ2wqqرc1tЊ c岲ׯFG˦L=C`` LMM1p@]Si //OV&Q4DDDDD2zb֭.\5 6 ^w!((H®k5®]dennn:^5Q\d <<<:_]V'++ 111pww86mZam'&&F022ks̘1ZsMahh;k׮ujܸq?>OGq,^1oݺ;vāJsL:+V86dM077Gffuqq1ϟ\,[ sM{UVZaݺuej")3gj$vvv2e 6lH|#xOcܸqΝ;.;6vXkժUz022BPPllltRKu=z`߾}ؾ}l֐̟?_֭[5D,^θwF/m۶}{#""""U10b888Gsss1oHN7_^^뇷~[PJIfUtUdgg$QKceAڵe AF-Kڽ4<8QVV._,;ޡCܾ} ҿ7nI&zΝ{!""""{#+V )) Ν;e7lق9s`3'4L%n憃VpDS#׶eţӨ𻎱iccQV%""""\G_ᅬ~McUMX`c*((Z)))IZjZj[y(366}mddkkkY'&&>S\ڶN!""""wz-XXXFnܸJ*%OՒ(oFRSSֽsNESa``>:5x0 ioo_jQyx5vj >Dzz9֘XQM<{ֺnYYBTN… u=L٨7o4QuRR,I*.Ghnm߾]ZSȑ#8zh]Wӧ˭fbb(qB`߾}e:sQ ^~'ODQQF6mhխ[W1`Æ tR9G\2CCC3SLʊ`iř3guՋ=?D˖-t^??rny3gt"}}t| ڵkkkk\v /_Fdd$/_˗/cxwu9ѫ&w~l5kj]&00/%nw}'}mbb!rss'3f -Z${޽{VZiiirM???w:eťR'DEDDDTt1Ο?=zt!C 66:5j[`DQM___4oPjU 2ߗգ󃳳3,--QnkhӦ fhhݻ?mvv6z r A:uqvx뭷tQN=@Ν :y )6l(9::?ՋDQQ }///(R녇%.___>չgΜAQQ9ԩSW5-]TU~/exU8SRX\\իWK#3f jԨ知 3f̀1N>bܸq{⯿֭8"""aDEE!//nnn8q"W{ Gƍ>}:RRR```QVOOO2e N:5kb̘1hР`عs'?č7i&$&&bk.رW\Zj1ce˖:u"** Rо}{gΜU9rd{U,]Ν5z-`!ݻcҥDf0eHm GGGHܿ[ƺu0i$^CӦM֭[]0b̚5KjVZtT*{7ahh%K`̙Aǎ!(=>hطo^XX0zhԬYǮ]жm[=5TV  m"..HHH@^ЦM>|8~7 6L%1o<Ѹqc"%%7oׯqmk׮{+++/@߾}$;wƺuyf=...R O.eBNUV/{Ovͤ$ܾ}Νƍѿ`oK^>@pp0h"e˖~ToРAسgƏoF```A}k׮އBm۶8plقC X`~'|OOOGahhN:a…X~=Pn]ҥK˗u'`РAйsgj {=9/\|VB`` 1p@?xqm;v Xt)ڴi@gYYYh׮V\`ﰳCqI(Jo7oD888zzz7o̤67mڄƍ Wرc1aL0AӴiSDGGcÆ  B;BCC1iҤDDDD/f2?~ lmm dS8;;ի?T/ڵk'}uVQZ5@dee !u%Ƙ'Ν++[f n޼YݹsGVA܄HMMVZ%P׸M6K.˗/͛71bprr޽[pQqaszzpss'NCCCwkժ%ڶm+})JhڴTv5@v[DHHiӦ cccYٶm$+oРptt݃B˗/&O,JO? !ػwSN-Y!DFFP*bŲraoo/2O?swwB O*;wGbʕs+DQQB&Mh<>Hv>>>@ܸqC*۴i -[&… \5J֖xפ'DffT&DzzBSN ѣVVVXrxdd$38{l>}U*W\5kFU*QJF9иqc{=9s栰}fff"33fffGTT>cTVMWXX(/"""K94"":%Y$euR3PtUz2!!qqq8wJqҥS!Rڵkk]ta033-d-P/dW'w/m&&&:t(Zl* /_֘V֭[RG&MpiU\}fggc׮]033CѫW/J-RYbb"S.վKxxx`Ν044J•+W4%<<m۶Ƴ{p k.dggKu>skNu-Bdd$:vK@&<<]uׯ{/ma899iLĞ={RիZT~z4n&L.Kbcc%}PNuӦMR "{EEEرTtq/ TVG(nڴ mڴ/..Ryy˞wNNRRRdϛEҍ()iOOJJԩSGV [Ÿx",Y#;;D144TGEFF"00ƍ_~L[,ykP~g,][lA^Ө={wͱdaXhQ+޹s,** .\Z>g)$$UP '`ڵoѽ{wǣv%777wDDU&;O`@3}h߹spqqĉl4h1111c-ZBi1É[J;wFvv61|p̟?~J8ܿ_:tŏx 陇CPI&RgϢZM^n/݈D.dcbbB![D&??VB.]P~}\w݄  666077Ƕmp=o߾w!lDի +6jK B@||\oݺM6! P(a{[nr ?FQQ(Z !pyڵks̀P_џ;v۲y#""P^=0(J(KIǏ\\\/Czz:.BTb͚5RO?BʮYx",;;;c޽z۷qqq D~~>ׯ<"!! puuEvv6 0###CVŋ#55{;#ڵkcܹ ;W IDATv ؔ999ؽ{7{ҩWtvvFQQ-֭,7om۶ǎƾذa?T[-qm999ӧk!33Sܷl!Ν;'Xn] 33GaΝw&O̘1CZMƍr>}+V Y0|piÇ1o<)²eЪU+4kLCrr2bcc5hذq)K x\?6m֮]\DDD ##GFFҥ n*=#G`„ 7o ax`%&&އ лwoJ&&&ׯv!%u7oD~₺u===3/`hh(ŤP(`bbJ\p}8q666055Eqq1LMMѯ_?ٳ:| QTT$\K8~8ԩ~^, Si*&|(,,aX\aǎBFok}j̙صk '''Rk={bƌ?ΝÆ ?TZн{wYr0dVׯ_G`` N8u666?AÆ 1fu֘>}:RSS1l0وɓm68;;㭷Be4>D^^ƍCARƍ?W-Z7|]J 4rMDDD"Zv-$T8q'O^~hԨotAQ ԉK3*_GNNƌ :$;\셈ҭzJԩSe/x*rB.]z+Vh]]*&Tmۆd4k *JsP(w@ QD*TF46W ? """zE""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$"""z!$$u(DTI:""""-!allP"0Q$""""""&D:t۷C2=z4xaa!Ξ=m۶a֭HKK+UVARa.c>|xwu 066<::x7{L޽x~~>å*++ĶfϞU"""­(sW\\<:*X,X=z􀓓XHHZl 4nzB@@.^Xb{}F@OO=z@usþ!>+VVVc .7,,,-Un*O>J_UL蹫Sf̘>@סP|(**¤I4?~'Oڶm KKǶgddc"** {ELDOHPku(ύ g`aa3fTDjܸq0225:t055E`ddTaÆСCعsgE\)5kp iHLL ڶmugׇRDÆ Ǐe˖%{]CD|}}qr3g ֯_q<,, * uԁB RSSqeԭ[v^u{[T֮]~q{ "*'Ob޽r <==ѡC4n7nDjj*2uMl߾...cbbp!4i-Z}pI?C AKm7''۷aaak0008ĉ8vΟ?"8::>>>P(R[n?Dtt4n߾ +++ԭ[.4ڍǞ={аaCkGCp%ԯ_}A5۲e n߾~= R ooo 0zzz%>{",, ^:7n>}PV/33oh8paaahҤ 1`{ݔB׮]m6:uꕚFDO""gggtY*WE7F˖-~8qϟѡC2#,, .\>ѵkWxyyiMJJΝ;q9Z:u [vڅcǎ!-- ԩLMMvۇժUCϞ=ݻ={HjSOO͛7ǻᆱч`ժUZ)Ν;/f͚B޽5Tlܸ5kDnÇ#"": Xt)8:]VNnիWQNjE&֬Y#J2c T*add$􄞞XzDrrr +_t Ə/>s@7Rی5jԐꛚ ===Ǐꧧ>H:T*֭[BPHnjVTbÆ lܸQ ӦMdm;vhעE @8p@jצMq^jjJ).\ (eٽwUרQ#@$&&1?Y` 2MDЧ8 ^zʗ-[&qƉÇy=ݛ7oݻKKq6l*J}LLL… 5ڟ:u fΜ)Oo^paaa!_OOO\RMu6l~ڼw[n UV~9@j\'))IZ֭[Y0@tQ\RvըQC(JBX[[ ˏW_ bܹejefsfHD%۱c Ů]D~~˖-&&&̬Ekkk 6m$RSSŝ;wD|||m2dŢP\tIL6MS5G٢@ٳgŧ~*;&߿/"--M,[L KKK"k_(m6T_ YS'666>.]",,L b߶m[@{ˢXܽ{WL~g"!!A)!uXZ5ann..\(]&222~R^VO(ݻw1Q$2~G;QT("**ⴵFFF{l]"++뉮 bڴiruT*5>=B͛ ѣruqΡC#+_vH#+Vԉ"1{l穿O۷~Z}pB >[n7caa!.\իk$*fbbbprM 7{O?R=z: j׮ ?^k_t)IlٲG\\9Dz_yyyǶU^Μ9u/Bu_WӰaC>|Ǐ})AWJ 1rrr_ˎ/Qdr?|݆AAPয়~Ҙ6(===!%%E2331sg٩7/5ޝyأ#SF ԫW׮]{szꩲm۶-allA!77_}Xnn.&L4 20mڴNG޽^/T4o޼L_o&MUKIIU`hhwyVUcǎ-?zҾ ժUCTThoyPUveDJW_/F.]`̜9[FzzyUĊseZj//"44Ǐ٪͚5àAOOOX111HLLľ}GaWǎ둘;vy%#\~wF6mKӀƀ燨(xzzbՈŵkpA̜9 4(Fm t邂_U$~֬YR۵᫆(QE֭BرHMMBOOOc>ۋ/ B!uݻ^yTԫWO{CDMbb"/rqqJR痹8~3++K9R(J}҅ d?.ֶzYfiz_~رce}w-|}}5bE^^'GQlƎ+̙3R}>;vz?jGG}xhhcaÆi$DVJFESM"z%ܿqqqhذ!333ڵken'==,E8::>Å8}4Μ9#:Wvm|M}QQQ011AڵѥKeffѣ8w uuj]ѣ(**:{ѣv؁ÇE8}4;n͛7h+??ǎ5k&geePThܸgpĠjՂe CժU驵-5ooo\t 7on)%%.\(|ԫWOV? 88%2Zv-&DԖ.]CgϞغuá oooaΜ9^qq1ܐXKUXX3fAӧy"꾨Gضmy!=(۷~~~>}z T^[_vDչc"zjcǎѣGݻ bP*ou!U$///XdXv-bcc1sL&DTfƍEiiiHҩS't?Gq-̙3J1BCC1{l( XXXHT˗KFjV\  @ZZT*U9DFDf,--|NMۑ SSgnkРA8p+/E"z{˗q=ԨQ 6Daoo9000(DDDa_Tq[YY:gbhhCCri<>}1Q$rssODD/B*UT?U':(0b]ADȫf&"ۺ IDAT0Q$""""""&DDDDDD$DWXXSb* &DDDDDD$Dd( E""""""uDDDD[>|8 t UL*J!Q%©DDDDDD$Dd( E"""W\QQBBBp]BD!"""z !ccc]BDGH"0Q$""""""HDDDC=PJ]BDE"""WB JSOH"0Q$""""""&DDDDb:tϟu(DTI0Q$"""zLHUO+cǎ!,,LaKEhѢ """J&)) .]BM77]B/QQpttu 55Ѻ^Bmڴ>#.PU[[t:Ta lɺ߿]AD/4T*]AD/)&DDρ뛞pvuDx'kJ^^^QFKD/.&DDρkhY]AD/;*$Q|7˵M"zqS""""""aHDDDDDD2LH"+NW"99YסQ%DWTT?u(DTI0Q$""""""&DDDDDD$Dd( `aaPuDDDD[zzz uDT0Q|ĝ=SpU@TC-WWiss]GDDD>ک0^x ( ro+;밪7.("vac쮕:7sa97;gn@ DA@BRrz/<<|{󞷒ccY( L0t0IuMc ==DҾylHv&3Ry 5+u\½Xǡe} g > SCԴ;b1Nj) 5*֘0s=<̹!+)Lk+P6&lo>9{7</w:MDyޠt2xϪC@ιp-yc Ν Ɔ.'S=z0|2RRPJILbϘ Tدf .6 _ #R~(GomDz9m%t4 96}'q]?[ʍMfmyǦ2xW>Y;#[)`6Z"yҝ_1c-_'Chk)>05^n䀓W-, ^kQδGPTPDa^!bL"/nKaZRn¼B ߖ4())$:??j7k&$>H$BXa_jBW mrp[UKn콫W y^^TQCѣ$DFҬW/,,l!'#ΣF߉_FQa!WҾ}D޽KlXغҬW/LKcD]b!!ݶHsr56ŅF;cU9£`Μ!]2SS1ƭU+t耊Z#:;G!?3j q g t-Iۏ>tkϓÀ_FƼv5rR"~MK U>0Ф-To_}k#1'n&=6zP{H$BIU >*7_짮BaޛUnHqQ1|Re SUI;( |fש&}!'M˩" ߩY& UAQQU{bD/ѣ,>Ԅ@XTX*̡ԩ2nmwf…L۴Ixp2:}:23HFأ)+U\a<55 4{6e:iKtD"**n F}FfŋY%{鑝n߮u+B+[‚sl??ĐY^{4v^K~f.^?((K5Mk_}õ{}\{ԗi;^NDZi;i2 ٕ-tG;1ק! 狔DO$%`d&ӟKXyؓC7z.6_F 9jvK.uZ  AQӢ"h~3:IPRV.s^lXz1uh45?uyCf4 8|x]֍|UĄΦ_g$$Ϗwˬsy~ -S7nAs%)Suuq.$FGPVQqk=ccr23 ˕r-¦ٳ1qo-==ccz`_#m'7-~vR))+|bG+eߦ_}g$" #Ϟ?!`!pcyjMvJ{mhሖF:G_ i8%xcgۏbFP}m?}LK mn=BIY z6tsDWm l9~Ga'O2v_t-ի"n 6Mp'] ;?{lVcX }%dƧ|D8 MC-֯'D"-%<g}fV8.]i#`%Mѵpb#4ҡn2}1~D_ǮY ,Є{膑)yrG{n!]ހhk"agxx>)ቘX> owA@@@]CP?pjxx0d,6͞ͅ;s'FF4nG4C[‚̘Aモ7֍mΝ0s&m> 5 Jv|~gz&N$/;S2zӼW/xM{yQ͝*}|rrTF_{ܬGrrt N}Z9F]$y8VQWoQǦ #.AMӣ5:kih?scETU7Uw]gqg;(88i RXƴ\6 Meֽ/W9'kFr{5BOaN2Jb N8v&hc I6qEbb0VMn{0yyt1BFI|9s'j ##yKI8@][;\0ʪo͚X-yY5xt- bQRVchs;L{8O'y)Oe]*G>^l'3 ,ZTfc =ȞQV選X_ZM>=kCƜN?Qƕh8 ļ5:&oeϘu8vAJwƱx iο=ĵ{};Vzُ"Ƕy.ŅEΝb=T4Tk\v&z͟,%LO}/;|[͗Q`ooLAv>⢣o* !#HpkՊwbwR\ΨëVqұ dfbdaj .\qWAQ\clXb ]YD?uWM|Ç+JOJ &4X2k4h@\x8mmҦ ͝˃RyYJrnE2t(jՊ%KP4&R&1X(aWZ*#rx~ Ib`|6FEC -T$Ru50B@ eUeb1Gn׊l:4ZZw)\qgu] leJfk0I)Mtc 6FDa5j:xoGmom*%}VĮy MC_#[3]~Z:^UKMZDYMYzn -T5O%QNߕ= '?3Ws}dda2QH3Q{30ВMfoq솚:ڦtY3W+߉&!(ܳ﨨0ydzx1 (~dܰ!Mƿaa 9d-QfKJS L%%g*EWS>8[ʧ5WDR$.(9.[)RRVΎ\Yx,Skkn?әZsk-9+xʠ]vDƍ9|p(I=S=+C+2~ftorfN`;L῁̥tskU(- /C;ymLƥabm'w_'/#q/ge@uޔ&= qг2q,ضiB^g>y4 ӷL8`d+UeZ$eX"?+$D$a\C$2TQ|p2X6CSD,ۺbl!&XxS*uw4*)D@@Gp=QRVoa…&RKR+N2=z&DFVl-拿*g3tu3>cù uucݽ{[Y%Xo+xB[[9s0f{.]ʢE",na`+yYDa|߹ҰtBB"oDX n62V##.}ګ-S"tɌOcϘu:5~ Fby }k#ҢShwp)ᒬ̦V QRhRt7a!7ykH Md%f=y ;Dnj\˗96FD_HnZuQ}mn9OVR&@uRmJO@@@}@P?rt 0Ç>ch $DEI<x;ç%/J,2sbii55GD^>:Jmjd >q~67ϞkРW^YKsEL*l۶˗/3f1)j,1sH OD,)I GWڧ21B^^5 wHyȡ[R#[]Kvs ;ĵUQ'&m"6N+BS%CD1% I4^;(++ }y GEAI-%D\yp䆕&jáI[(̯zսj"QCZëke(Wo.^F C?{plӿ? Q"gqqIcGܸQF2()+yH厯٨nnqbR)EL*J?q.VҾ}2>.KkZMЬY3.]DfhӦ aZHDAN>*/<բ}7aET,X3t/n;75=c%َ{}׏A$塡I> B6iͷ]5 TF\تw)*(b 7{s/ oCғǼN$ENBQ~Եԩ+"FAv>Nm]JOAQs"֭ٱ`W Mn?Sٽ;'L =M[Gr!!Z#G0f%&sv}ϙX,6m>o$p%V}{_UuD ]`ǾNlj΅ ܹpA_C[>&1/}ѵk9vOK2͚56`.eҥki]G^ zs:Fڑ#\;rDAgOO1c8bVWRVСҟzU ߭_Z%Kt gDLӦ[x駟=z4ӦMfѢEUPVDyn?#=~sԗ{SD"I9?ǶP!-7kO%e:ý?z>x kQz\{n:b14v|Sb48v`}vY|¼B\חDjIX7| 'sT8OZR'`Y`ZӒ{gcho"Sz\\x/X"[ͨ2k: H^ĠSX,&;tOWJ1i2ug,ف!_,V9fv ;>]U, /`w_=~O?ZoPB (8MuInĆKRL [Zbfg[˖ rjnVuRY3MoԹ3?ypգ^6cdaA)Sppsq| : ju&MXϽW ">"}SS=v,-?NZR&&X;;ӨKTTK]Q@^U m}}^٭^%M1½];iښ͛7_|AZ3gffUg1#5r &- hֆd'g ͗IJ+{b#]~tu$c/PTuY7MJNnZ(*A$2r69OJo?OʣX9SC | Le2kKj;~;c׬:wc86m4Emз1"Q  j;cAqE8R#qtqQR#ЫfK]Z8, +1@. =?DdK۞#:g B69?!ػ&JOx:U©TPɂ|"O~nB `J55h^2V&ժqpv:Ի6OHD ѠAƫֲ%n-wA36E>Z,ʵ>Шsgu~sᯂ'/^d۶mxyy1d&MZبӷߠ IDAT6M7~o*MhO,xq~ak+WT5)<-iU{.u}62doDs .(Z7r`)3ssf3wo;o+MfTt_2h?俁˥֍Kp&7GIE>Gwnn-WI*սjquiв&j*GM;D8iP-; _F'!՜_vXB]FMCrF i~ja>j. | 2 0^zpB5jĬYS JˡomİCߐBBP, A1d%eb`quslbr^ˇ[I]{zH7 (E4Պ#[Qî̱vDe5T5sv:/%x 1t}@l3 2IMm@rdcR\as'7;w+ %e%,bߢj:֭f;Ro#j)V Msv:_ *54sv::|0{HAHFXy#Z;15|!1OHN0]˲-2;ו޷/*Zj? K-c. :dڕn4=̓d2%VP.}K~~qm٥.5}A@9Fȵ0S7F`3~|W( &3gdԨQ̘1CX~ *}k#*\8^YUV͊T=T5#RUG ,X+cYXֳ-w6.pWX* Qʺ&rEKPR)>QVUn O$,坥SӚefUѐ~.F22==孑NvzFVzh)~˓ 50&F]!*$D|%5MUHǕFNFDK@TzV< XQa1qQPܾtb~n!7 MzT4;=Q->3}RWY3/d 4cwP|aJ\\͂nOT8X,]ms~:<3+Y9gI=:`Ar Ͽ1uĿ_JԵTbY/Ɇ1D%0&bCdҞIk?l=k`v?oBNo+yxw".,k3t佑̿8-+vQEQ@@\6lٱc;vdL< !P6L;7[NINhh)]eOiJh6<DɲٚK_ 7 6HOߗ9:*ť4fDQhIr 8Wm嬺? @bBS{ܽH` eV,_ᵊCM}3n~E>,:d,iY*1bnglja`CJl:g~nO\t)n~xܽPRVBPN_sc)Tc ]m^IAQx G=Xx17f̙|U-KN8:ޤXY볛ʧ㨆 ]SSb3Xqo2fǚ6jnĆ߯g8t[q2N,Rڤ+k!\?L#s K1dNi[.ˁ.ozڣDލЪ[k2sA"=pZ03;C~;X6ѱb,kGZX~w:M{f鸽[us[nY"AyM^ߗ(#FD6krJTh`8qcǎѺukZ,sUJ_.<J:dsnM4UK!X^ ֮]K@@SL֖~ rʃ{sYLMM[n>-qibK(P$}G<%΍g.FK[.Ksq$EqjIט:uM CCZJbTE&:8Q\\_Y87V4Ƶ$u)%$yPң4"(E9s {K.|L2Mwp@sej֬Q)]'x|5+}jѧҬV$aIL>HN)KJ\F/U3[ 4,PK<'ksnlb+.K5Ų=v O*L*D+!A24YFFr6f:1Z T5TN޻f)̵j*tр=.rvs4VZ=!(B>}fɒ%4nܘ3f0`K@@@@@LZXoE6:j^\YOF5$=)cT"W+J>]6t iY2m&Z,Y/!ǫ]d$g?=:SB|5J5EJ&e'{JIR~1<Jz_EJC]]S2|p~-[ƢEhZ^֛]@1U\_ 64 5cB$N,v6fĄ$k3?są%#.);)٤'ek%u,? %עvƯ" oŪE:HѕפIJr;8\[^vg6 RQϫagv='SOMɵIqJΥH}S^xH\X\{foFb N##%[O,spޣӤ6{]֛k*,>#(our)Kn駟.GȊFnj6QWH~_ }|D] #J]OIl@K;]qO򮒗C0B};kUOհ~P())ၓSUR%X:Sc byx1T&)y@Z=+5_?LFr6-ՕIyLc\|%9ea9&G$X"|p4T-=uj/uLItM]uZWn,υw% GwKj&i?bX3H.]ʧF#klk٣u-U8KN`,/ ek8Z:1ph׍Z8[곺r5=m8ˋm'qr$È lxބԄLd<`fR_.j2p\R6}k-Qp":tЄV뢩Y^̱w`,/+.}".M$YZ.}FP1>Z-[F`` SLȈyakd {[ǦvJQ~!v3R)1/?XLF\*9hm[!Ki~V9)Y۔y2(.,FaCz\*hz9q ֆ鼜Qnj6Z\6A99bҢQլ{@Γ, +t?*-_QA(+ fK!/3=+ KF\*zYP\XDf|:Yyؙ @Ne)k7>:jZŔ^ΕY4Sq*J \vsCvax 5=md_6Vxڕ:G@CI'/hn F+JIܧϚ( PEԩSǏs!zInݘ6mڕolvh2 ˛L$&εg]q(I|n4-={opwZZuC{Nۏ(.,BTt4Yrr84i nJ2}p3:퇪^an~ͭWH{вI sZ}וFcч쑚-s wsaB!/Y x}#:a-]B뜜{bk_<6/sދ$?gy9h7M𪰋w(u^c\6W~.\?~>\Zr[Q;ܳs@g$c PRV¢ =d{Ƭ#p$AH2}PSIJrkJqeOIY v{6_DkyX 8n:6h]&\)cEoNaV-1iI4" 9~G\dƧv&S`ۤ:~CZt ]d>N۟d%?g{XW Bߡf9IrXsjbvFw}~kx mNRcnnayE˾QrmvjH -*^BΓ,./9}KgjzCҀL爺~FioǤpspH# h1ʪFǏ5^z`nDXLxx8XXTܢsxUp|89yt)Nodi%$ِ9|xPUUeĉ 2Yfb ,X@[ :7Y2_mߧY|\P5]+Cca'h=X,@#.x?z zl烹( @ڣNkif-gPC7i;;+mkUVKOhLk?KpͤF%h-,mo?F>g9~8jn@Md+5m\ZrU-R]4:f8Aj-3puIѭm Gbua7m+7y ;v=Ey>3 6.>{\Dd#C<6瓵 PmY#ڌHcNîDlӴtˡ\\pSKƞ.s-~ٞMpxV\Qՠsw ,ٔz93W+9Wcw཈Se|Hɝڲo 2aJ<˴wߟV2^s\[>m7\y'6^o?\+%UE)**b֭ԬY~}; Gw+<{pjꨣP2d_|<̿8f2ZI( ʑ#G8v}sL>]ݲ-,I'_.S[WD s o-&6푬r eԷܻI/)#H#%,'>e'זe=I{Эݵ{}|^C1)1!tbiW++$hIGP4{^Ȃ. Pu;KΝi߾=+ViӦL<#F:CɵXO(0ZUMF$%``7cUr[Ckk ݵJpZ WɃNre+-:c'3B%s^%DZJ*Ҥ2%Iv^'?(|u5rMR#+ӥk8LQ{03>9O-s'/lq6Z~zͳ2[_r JKi/.*frXHIYKs.w9l4XM[M#mDJJ<= IDAT{G@@@m!(4***| 4M2|Zn]7G$)t+i+.*.uiCnL}7 =÷=H@nȘ,!h@>a-ʍyj=,ٯ$AJqQTIl?7 GBwuiQz1+=KC,X]2|B@P?9Fź49lj*|m.]롮ɖK }Cz}{86_Ʊ+ú5/#)W鱩ly|vz5Io|Wm 066<7{!/|_,XGG' %1w0wɵW?V*+= "%9]U8GHhɽJLP6Cvv%|vY :t耯/4k֌UVQTT9n `WJtBY'7%7_Ε7g-2".wYThmWiuC<6'Q ;$3AEA(nn"Y!'uWH r29!w0@N3!u =Hi{Q~!ܸDN'vg5CLO.#"mykBr1b*w7EׅPVS?UAbD~$SqV ;_ڞʮk*V8wr#-:co|7^>b\,\^8>VuD$)|R"2/!39|k t)70v.5g2yQU^p'B溍sJ剸?H֜Io˟$YU-{j2Z72Ǐg̙3&M0w\Zw3=mDwjhPo`h1!Go}מcb$9t|RcZ>lѷ5&=:J3{5cX BO3iD4ݣ(. %c Oؙ lTi$L8jj9^3{A:&N9+ph_K7GcǐjY2ڛPp36_fIa}k#"/RS@)]dJzH:`Uߎ".GIEK(,"ʪ4Mpn!6`s}R#Cz:)N^]M`^=7kW%e%R::k$wwW$\K)nuZZ(bJ@P48$@ !!qwǐIഽZo{9g=-q3"٩>C[r}E~!zZ4OҒӋqMey"ldKM|(B8] ñiD EqFoN.KaN/2N}[/.Fc Oۡ0GEUvX;Gkk/4X:"p5Ub"ѷ1Vr/9;촚J\|pTJeghaLj]x~Bd3;BofoLkb,h7՗cL=gK;{r_kDѻ7΍jSu6c``eˈ/.[ 77V;v*sٵpAXyh*=B5hr(/-Gڎm)+*UWXSfrfA\%PMդ.rvZ~ZohJor0q1~e`Dzh@3Mty\&}DPc'3:P5u]M&Ε5gDGX. xw?/m}kV]uΘ )t?HzO!w4-8~n N <N=שjVM|kN-=yt0'h2OCb qua??̷O%/DIyIτ:OmD}!{dX+z.RS` ]϶s&헰i[Qý{cF5c V"c̉ktd"kXaصp!mr⥭/4TUSe)׉8x3OkmJo"9 YJ}є,}bCe v{ YEQ]UlݓsnM <ʗ6 |{WR5ɶm2dȫ?ψ h6f ڶ}զC7߰?rX'Odoߞٳgch`޽[u4- xלʊJD"9[(/.S* 8lWe A,νL|sQQVQJʐH= YW: TTUzO'UVTJs᧱ې_q[yy9/ÃA=5~ouW}¹7Ytlo=w`_4`3gɉxwzVvߝcڷ:V1"E~6iWkKݻ>8ÌNyϯ:tp( # K.Ӷm[>}]TUo'O*fu"x*rWs/,NX8Ex`.z)BX$)+hg@Z|&v9bfBaM3QҼ CHL#']#- p="O%/Sb̗^M&NYh͛7gt ?/rq-v.>-{ڷeBĆ~hE2&wWh_u/o燸| B6ujb~~/.,;faV^!_v_KX5W8&I\VI]SLiT,mwzSc9Y{f ?_]4&u {əj cm_m/G֏5#ro7U( /Q+W?拮m N2u |˭{J_tYCan Z!i16%Zckrz[d9_l*E:,YMƏ?P3tNgޞցnh4VC[p3+B]KF\sɊ10w0qGscdˢp0*|仙|O>^ݟVd7cYk=TTUXpf[(۾:Ñue{e/]m&%>OIβI"`DfXo77f&[K<0hFG Lɻ,:>v:R8vKa Kvn ~~/+FшF[lVz|}bnͪVqhVMω !|mZ@]K*a45#bi:ytfŘݬl'0!_uƔUƙm=4xu:h^maҏA( 'pvvf1j(Zlɼy0264DU" /A]SX&Bt51ԔϥU Σ}))*ʇ 뗕$a*1Ҷ;9L4N#[ړx Y1uM,bÜ*'-m5)]{"BXSWjso2GO_>K(_^ZΒ3k%"VW 7 m5{:Q6o~҆b;M!~_Zܬ؛)3|^gYHXMƖ86VC/O V}\xڵkʕ+)Ҽ2tjb ^%bO?}jS^8ܹBx)HE&QWNWo?[&FaM䮉D"m2O&hEqA)I@GN'jf:2Z㚡cɝ(#/BZTUPE]SLfR7{Ns0n8 ŋi޼9-gϞ4W6Puga4QMC)QWH\/n sjbd(T\Z(9<&&o}٘JCݳj'A{_MnaJʙ4xʍJ}T.er VzUߞ'o>5D$c?=&CFh~/ -hvak( 6mp7oN)++{f k nUդR9 j 5j.]"33zjxgz,(K1E뱌?!Mf]ed u=}د6$fTk?XFeE ߫krĉ׫FPs x2vuh@SGrn/w O)cj#=ڢgMӮnd xҢ2| bD*"2H˖M/`攗UzR>J)JҪkۗS%W_1qDOʕ+YbQbFLĜ4s Kx \YʇJm|96׈9}L\cC")h3niObq"3Bٹ4"īIWNlaykJ;:; k}`d fd6|\ϖdϸ=/M_C}H$%g^ԵhƁ|7v7oLjs+}!,W}7}?;a`HAN1w$Ȅw_k},Ha茶Nx{)*kɃSSDUp t |;;;nͻヒ7_}fff48jwobB][ 48y[xɮoNӲ1S[>0&VL\ޛ{-e#vȮ;7#cLaH$av# NÛr;>ŎO5 q0'k0ZBO%]u 6ݯ)&+%_UXKC[1v`c5Wlj{8-3BT<:Ņ}whjb :-^cEYEҼWWm3w6jo.,9vU#lْsαuV=z414(ֆ=2`cmKz{Y( p[r}bäN>V4l㨴|[м?ߣ[ͩh)o$ִuM1ߜ(k._6?\{o&n٠*VSQwȻ3kKz|e%ZxҞ JǛtv[q}>@$o}>lI˾ j?()ʅ?nx'#+=mqnbMiq9ߜ(Wm͔Ys}!7JGMSz+ڤ GNzb. R_Y=ճ⿌`:QPoĩqR( D"[oŷ~?ϧ_~u /ǐ}?"M(/&&fQY^vh+/}Bey%D"2w1 =Ml9ocT^e$œ9NiCqv!vƨTHJSw7ӕdD"c#'!k{&&Xء^?yI$Ǣc}KW4 (, 5sZNSs1o`=j!;.ш56wAZ1̻iaPݟL4 г2{NR(* r )صp]y+EPY@• Rsm^mCZT**(م%m%_K Xcq1I&f"X6˦9J wSI O(FX6CQ4dŦaE#[} Ə?1Ŀ<UkiѹqkW]j*VVTRD*"Lm i}Nu )6`Vӈ ׵tՕGMCw'g;G03Ts}]ܹs0a3gΔ/<>/P-WBpbMgg{ ^V!wQC_  sV[D^r_Ė+)SUkZO0/^ kb 1C׹61?ãW~CeE%_VX/?5 f`ІOÿ]/)bu$]0Ǽ5~}+W 7eD"=^T;78q "mtGh0fN|xe3b&ZNl賂fV l ;GꊆvL8>]Ymw6Ĝ`C4ފ(ӊ'aefȆs:秊=McEY2+<ʵk&E#[v\EEYuO5V u9 IDATI!liE,|],+/n*;GFw92p;8WQs:-~0)OΨ3>/TUU߿? 6nȕ+W4i,\ v(#=2Ƕx5-uRo'q@.?XSn < .^SY^I•.?¾6``cDʅΆ>0pDm=wӋp-8ʧ:4_[/ /9!-umu"m/9>\ϲR 3 &Mѳ60#ȃ׹ {`jRMï$ z,#r N^P$wYHU3ܱ*bzS"ȝIf\ʋJiAg]aN JrwBQƄdw]k8k~=I=] y94֊[ޓ]wl灮&oy稉>-W탉ltzl,`/`ܙǦ|bKo;vV^3wK8ϱ;m|~PQ',>XV]Ԯ3mo.ޏĎhhkD^;dˊ3Hz+wᒁv#H=l.ٻ _g Irm&_`_q hX~ml xj&y}iyIs*+*룍TW2!s;5q h)>@̝ l-2;S{س L;gfƎ~ z/JzTۇu=}m׎Msuq#krb!+HwX=misE~~綏aȐ!\rrٳgxB@o4[IjjX4ź=)ትXzq/(RvJŝ#75ק]WQU!`OD_J~Vw_u07WX:91gn|}`YXM۷2{.Z&bܩ{7n0gO,\HCqsEaY?^[Ĭ= ;sF};6ߣ_L Ĺ?y]L̰/`9"HTVrhjnߦI@*cH}|%ir32m]?@cBC}{^͠?ʹ|7YfdBa~=I$r(}/V#[̌Iš[]Kԋ?KVl:yIYJs RsTJȊMC_>6D"*/&1N d[ww7f,5S۷3bl毾B"0rH0fڵ|Ьzl[Cssfm&_Qؘ72Ņ *3z~uH$BJ;t5JN$`jiH$شI&}|2r$3agB_֭c׮]>|$}DyCM6Eƒ8\$=n ΢uS<2'nIi-hh+\\Q^}_OEi9vƵU?zz,eK˯HMu@]W. CBijJl'{:m{DϠ) +^ﵔ}NPYUWuMȬs:*m0YC/}[g,ߕBRQeC1~k_ԹnރtLd߉磸>9IY9ʄzmՂUhRWzϋJN:/eOA(Kqsi&5.NZANQ!!*дsg]#6<\Dv &FވK6f>n~~86jD͛ro7%0@N$VabmQc J}Q%X M:uBEς[;47='%5.dΞ=Tqsss~zߟO6c*t+2B6sb̡)ܬ*~kZfm]TT)HnA(U{x$X2X.( QVU=1uڪcZe2;vx'Uh<ѳ]wBg"EYo?cV9e~:T|So% (fl2-Sl4#^* Ԏ xh'V}(Ū4F8:*W0d5):ZvM"eB#9vk,-.&+%]##1WP_j_vj>7??5k}8[GTp0ӻv‚ӢwoWOU{g?ãزӁ |u1ӧOī({H n?{n"HsL %B"RahoBT"(`VW|3A\-c]S^\$aޣܿ }s);#GSRn& 4NiOFeܢ5 +5rӐJ ߑЙ(>|}jER_<$u?ޟo՜̘z1rٱ鵾ԩS:ujr/^ zǛ$#EYYӱc 5ݺhˋQチ)Ꚛܿ}/zFB$ âcUYT&J@i(ŏ/rlˍ v"h.V3s|tQ:IyQ'Uh7ߠUʈ/-[ 2J UZ5I* Q"o@aFs{p N}8j 47!~: Wys f  ?վ9"}}ܿ%+Rf) ID؎Kxnt Z,ߋk#pb;EћdKS͗Wz!ľ+vĞCrYOS{Դչ*_p(=+C"tBec }QqB,GK/e"Ҹ7f4R{}n'vOvXniW7\_?t﹉KSk|+kBQ@__y3j,?s}0%39r@xkvh֬ҧAF 9a奥\ ?g{bR;_74ut:%""k׮yf[y־D""U<4AU]L{l+b*k4BZ\ _6.pYhy/.v+kΠ"VoL[Դ5<ybj@W?_bFr`F훌%y-==Wk}t?Ɍ2C}M kE҃ĞdnJO lJU"qj?YGAz;N>K8ʍ]{+-"ok))b_)HϣXRY4Ԧj/Ȩ}17g ٷ&b 1]g5빜ˇbڕl=Da{Qt[0Srq$=ڜ2qv:H6Xɶ?kPlgg0F 4?왰cOhdD" (jHϗ{aX?3'i1/Bڱ(-8 z ۣObTIX*~W21WNP:ݝ:_WD+Zr奥XOX]o_n #;5weBU@.JJJ:u*7n|^6ԅ ?chk!SG~~ӹE=MGAĞïka@Ya %yt WbjVO6}7o'I@*mz;ȈNACO>'{\]wXNFTŒ|tgz(dX2DNā:XCb9"Ncse<b~ }z6n .?_m'[0r4$XKc*[Or3}?ʊJl9Ə#x'$߈'`8|)TW2ϏY{ ol;s84eU 2u`\,u]yEYYr }V c`J^rE7zo? pnv\k0r4(@vJhHv$\o'S[Di^1׌?ӾHTTT*VAMCX ' E"g?۱cYx`\6E>Zq9uUro$;sҨm[4jIn7B~fhޫb͌l"++**WqĄb߰\k D" ػr%74thm0c MS8v#$fae] |G(T*&G](HCC NcĜ8_;6Aߦ\zfN 0MII^beMĚjt-Cœl />]Hwy9\1/ Դ\.?BTU-6ѥ~ =M\7YzxԴi6^~JEE•c5ǡv왰}/š o[F "%}ޕ+u"mK#9gD\0_w\;yvcJNZќO,fX?g/~@l36^X+[.pz,Ӿ}gZ{p yoN<~?V*ϯUUSg=hY&Z)n*+k2Zu4p?sH EM[]i5-utҳ2wÞhHM.OcҢZ&_~ڳ٤]Ҁs=vg2uY[bJyĈH$oL;ƴSS拰9ȣ8}SmLkm"*";5}mM^PFeE%)YkadؗϪ>cfd$RZ\z&6&rER)!'"L ybJ0_ì<4EBQ@UU< rǨ(βeqrVZ 6+*,?seqvBXU Es{{޾ͪS9iB|}2r=sv eʕr׵8u*c,x$%%fMy:zk_PܤlvYMyq_})'&q|6Fr*Kf2U43x1y8S_GUM6$PNm' ohyv~svYy)/3֦ݠ|_cg10fظ?ߝcgQRfظq)%CѺE%dS\P-**+*Mܹ 8`jBFR.QWv,ZZ M? _9K(FKWzrW\P^ILý ZcfoHFb/vD"aр̈́š^mq7%AwC 9U/h4-= 9F AGP?9-]hFR EKOCAd"~jbÌ ,6"E:1ajc͓W10xl;eyzbdx$* P%K0tPVvFHx.Ǡi[FhLw:=UpǡRƍvSz*qxqhD''.bMN돻*=x~H$bbbWNgciY|b[^uޫE[ܹ _#}Zs /" Z;0Qu[>]36J@%=}-WGxGݐ$?Ak?;9i2¥5sF><-NњHJg Y~;|^gV}r+/SZq1N&3 bfoW>R8-}kiD| mLJ'~bۂt8>F߫:[^,=K żB6 DʢcjXc`6NBQ@@@￉g̙ڔז偽j&kqf:MQQQ֭[`РAڜgЯ(.(-D"@w[pToh  j+-*c\{61uZDkA5 1fuƙ{\;-'79FeE%ftT\YQ97D"}u{amštD'6sxeP򡓷5Jz)U]~+BdUuy9f= k-'ZB؛)V V~2%t''DWo_( `vMAmio(:jާAj\>a;:?FNZ3woNn彟)":8AHO!/DBan Ilka9xEan x1פ~skfK#'UX8q/,BLqEEUCa [;(Zz\;Ŋѻ8">H*%\=Idr)ʗ,12P] [+!)ec*q߷}( OA( ='i-U_jBQ@@@)Xnx{{jS괯fu͚TW(^дGpXWEwju ^:ۜΡ.))RJz6 |kǢh?؛!_`e.’**TDTVT" R[T><({2X!4QR[-/.ukǢ>r spF6e̕H!Nl aѱ񏭖]^Z~HdԢnt'Vڋ;> U߷*(]ѣG٦­?H zzOQiX8q}Rcpij0aҎY]{)+.mQw4uԙyB냇'e5bhă$dbVIt<>"k`:]kNFzx9=iNiQu#wrr5ޘwFZtєN#R^Vc,S1\#׹WܭT͠YO0wO1abH4|7~seW )--eʔ)|呂?UUU>zMy.J0&pn׍gZ_J>$*IJWzC# 9DYXmוl)~=FS[2sr("Rq`@(Zj_i| VSſJ Ge$(%--*1[)_FmUH$P0sL>3LM4=fLLdxk"0[syզ<WƊ%^z}SɅ?9xpIbz8RրrӬ6, z G# d[C[ }2 9ء.qnMF.膺?]VE1u5 K+dB֮WQuzP,OUjm\3 -yEY}BqosgY,skhCmgee ss+nEDQAD%K Ű|ޯ<{Y\{SI) Rh}\Oեo߾OlDʟC'jfᏚ: OD'c=TWW!.7>F@@5b֏X6i'_6=]u3#>/nZ2Ϳp0ƥ Fd&Jq~hkX|7~z*,mvG}Y5k?Nx8FL&}1 U߬Ue^_qU5Qܾ5vD͡5/xutwsK KEM]?n'_IՠXy}wg'l=)*NL7F)2q]Mqnmwbr| ^r3>6X:\HTJFkh{YV?к fNZ,i=Pzj8N7q غƝ[9|;ߟkIEQ@@@dddfvDs9IXq`^Ot 9# _~&v;y1nwg'X5j)Y9Ҷ+e}΃ow'D}}=}_ifeeC+* ܒ 6,;:0 >,n P .z7P3XU!FS{_a1+˪T9\^?k o+)=NF3`auywv⋠Uo%-zEzo=z4Ol⬻D#,%'6'0ukP[nqt4\q,KrHɸie{OSGkjp`bJ9jyztU$!B<7Lc'7D";/xV&+rx` T5'T*p#2i'fcec'w*?m,.dݸCܹ)-)([#ȌCQZ68y_t_UZIluC⸛VVxhCG*/goq75um - qgJ&&H$)D"- ws@-2="Sd^OEMCGڌZX*ZOJJu084pNJ#Iù'6>Jk&&;: m1us;⬻N肸B̭CH>-{iW?qk)Xzj5˚XW_}E-3fLe4*-Ml>%qץ$D8gX+ %쒝"x" OtZ/{:GeI ZAmI<ÞYhJE1rEpLUP-?BZrG$#Je.zm^i^ H>Iᵣٿ '>TbGswob gzłMXMyY1i5 u$55ZgogvE,=cM]-6#Օb5h 7o3kiP])9;gKJ-M9x b~5I9"5OݦfOǘvbʮx GP"4Ç=|E#D5EEE,Y;w>]X <[6w- Z=\{y3~[}3^K **VLlu]xI:Fn|[/ kOrmt{>._CDTQ?v%Vx 8[_S~#*P5OˎIky 6Q'~bWt6Qhi1|$ڼkcJH8u XѯmF}KC+I:޷6ni5^GH Ź'/m;G4)($@VCGD΋{XҟӰk%9EE!hx{qpe؊wAR-!*2{fg؟yW8+9d>c;}@HǎIk*w]K,G}lm^ք9y-G5'yy[xhC$N|ؠ/^V! ,"(O^-/ 8hj6ܥCnΝ_|8zxumMtLt O&-mȨS1׶*(v\$6:fn \,[ʕXmCyMiWm˻ȭQVz}$)SSqQF^t#b!?0P U웻 P[6Jyk m ╿=|{PAQL K\S mM ,|Cqv,- i7se͙̿adoGߓ_.TWko-?)ؖa+_vтAKDzu*"6Ń_n5܏γqtO-ĵ&ץG F7FeUh߅(>E<$ gÆ mۖ?_B}\ /!K=j%z/$65Ȋw7@e@@8D()ZOQwtAOǔ.R.&PP])8.uMu mɹ0FXxnUltkIU\ U*{$׸?HsyCzO6nXzʕZL],0v005\,lTg A3xX8m/Jew *DSOf̉EQXشU_nP3N\e€ڄ. !&lS\kajgڶ gU%RYRryV_?GȪc\L~iI!>J e&w̷ Lh1}[=Gh]Ȯv1ZA"FMCY}g!K#_tګ~i@aj%E444?Z@@@m p̟?u)epS:Wj>d:~wH^?HMDۗ*R)O59ttǑ 8w.sb򚊵u6AD@ř>AƷ.ם%jRS~A@H%W[#7 27]h>>[$멀3T*e,_.-b.$ıe|g0Z>O`aMn\fڳw&bV|/F - c21z˳NErH{fSԵ5u~h}pۊ7X }=Ko[Ү$*K*z/yRA*gz\{g&SxWWN_GTھ37K S?q_>{<ך]hhkbřw9 'ngt%V-h3:37KIDTWi5On6D"YVRsOIBgbIE77>=֣E03aұ'kz~I9-&fu31wbϓ̝x`ڞTvN.C$w,S_Re'Ax{ n}Z6iv լ_ggg<6R+Gb0.AQxYlÇݽE?OfD#jw "dDp#MKNÚS_WʎF} jF蚓9 o>TQxygP]$}@~5I6NMC] מ-vj!^G ^qToRz87 'orm{(nb\Y!S/`ۄ_E M.yUZs@^Z?]Z@++LiC+/VkUciFtM7gAvhB^|D56Z)O2Wq[f}0S+0|1fR)wEg0yw[Zk!&N*mV IDAT}9#ȎN;ES_e ե&Bb6Ku- :zr1k)ialנdƬJ|_JaJw%"5N.[GXޠ;IO&?1 /;T2vr!Z*ǡ+N.P=)X7N]{`/I '-WU&NEf}yf`l^R]%\/`lB.N 5cUą!%:Vx8{ N.ľ>]{}ysTKH"]Lq𶤴S[CuTw+K6F*ԏ( <̛7O?CCՖ ԥH%RtM6wJ+FAR.ݽE)@\Y9$KZ`ރ8D[~?gͦsqjK8&:lXAC#vLia_N)dc|=v Qg}|yl*~v:?{jͻƢc:?N(T -(7}V |7n_ːغshM(k^ҫw`ꑨk(WV!X鼧.Yg%0xvp^ba( ii7ɏ׿<\x?_`겡|ɖ/#($6mۛ귒 7ݸC&b[sk~:˟V5jFF}7:v$DiQK~F1|&+An΄#12W{.()('::*D^؈l>vFr0ie {+mzy6^(<{)`ۏxvWp|U S@R-cfgĘkűW83^Ypl]GU7OWXq[ ӂq͌46. 7&??yN,3oxvYQ^RIPo~ gwF2}*̫(䦫hjkdF"( Ϟ={عsgs" T hݺ~׿sﺎ_xCs[h.v+ٽ,gtA]_wq΃D"/0tV'whmN* 4( Lobmmܢd():MWIϕyۣo3WUN8th >n\MeYZ({x0U8Vdj##tiܧkcKKg^,SpjLqA94OR-|PJ91,YV&XPULyI%:iqslEbVݜ9%Ea?LmTpliEnDJFpɲDߎH'&N]{ 4AQxf A5(@VR>@0kh˕н7u!]~6{sNԹD|xylccQS]CJ 5IlZm_^zR:*J&+ӨFy[9֞Ծ*u1tV'"O%phMY;>t@Eg,VXݻ, !H8y$48O 3=S )), Oq~| tMǡNIa9dCaxL (.,n wL3@dL-jjO6\aB+)(PYBDMr]FƐs;#bZ|- M4 E133;w4O''',,T*e|hii?A@@@C"pyZhVm̸Ν[98pL%sٴu3Sho^b6K'aj-s}Ӧı%Wb(Ŵq3#12[98TvgMqu7S MuN `'8 ڔޭ+DH@5 E1,,u;wR]P!ɓӧ#_|9C ˫iTK8AtqE1c0Mz|_јAӟ\<ߐY{E0N&콼`4S·/ rmct4&`h Bd Ć ?(D"-M@@E\UsKJJپ}{J$PIcsN3i 45ns1_ʘ3[udJÌXNbQE쟿?OƽoK4511 % m Ե3?_a4Yc_աd% JGO({bخ;"TJ^J%.٫G.6&ֆKiL|AS[;&-_¡5X8Ts]7:OP}i̟?%K`d:Ӌ1b4Qw[k/o%˹p_xuքNVR>Ӣ˳{>HPo&,@a-L l%iul6Ғ Q܁:aH e^odQW-^t|ޛrZ<;3aq:DGNqAZ:Os睝\@~xלJ.3SꃴH$BSGIlAQOuVPYRAY^ Ǝ *nz. ~-J)LC;:R)%Yw)+AT} 4ZiHĘ87;DR-!?1'9VURuQQ^h6m?Wq5&NMΰ 9} C l]zj-]a' mWVCARVF ~%jɧ } Ct4СC[&CM]K_H٨5l ^C:z较ȡJ烾( }6;w䯿jnQtvN^˝ˉH%ښn|g~kC ZܸL):8uvgϓjirNfDJhŲ4m &cU[Hki˛碡k/È#aJ~yGUi RsmDHaj.w{YwY8| lml<+ oQY\:G3rtLSf׫r1}KCZ煟&CHRލNaՍorb3m"5. y2\ܦQ˫Z5'|왋;^YsAQd@ͽ;Hy?{o+;/rN>fnomj|'tf ]scP'J  "/! DVք(Dziԏj-o!R/HNѼl~rY\ՍUxJ{?g^=?5c?3RWDXx0|}=ⵞ|/WQS:N _599`w!WGژ`/5xQWʎN" ԏ( ̙3k[i$=< mpݒ”\8Cqfa/6JOL̸s9{b^=Am\t]NumwAMC n'/>K(={#aՒ#;`ƞ2p5+hhkңe  {8ʒ ڎKJ H),DTQT),$7.-EZ-!D\Ƶ)/,cweFau)/(kP[\{ySukC)*nz_1i-:ƺ}W)yYD'/!=sϳZfԽs͸JHQg qsUL],XVWV{\u 5-;WqEř TTޛTWUoI8y} C&wÚ"RByʈv:qeC0e%Ꮦ=K!5۴ uh79:dYk"IgR[4?c쟷5Mu|uӚB·ar3{:~?!]ꏁAQ).ݕ'WVn2qcgwL-(OrH 'o6h_qK\:MJ z7AQOh"f̘mB2-swkz~rNTY =f{1'!wF7few&MъK+eE$j7̳bdX4e `j/L]x~:U*ws?ղ$K7;/Ej1G"IHVHydN JεCXsJ+\/y?OwBjJ*%TW 3}Bi^1`Zo mM*\zq5 n2'sL]&۹p&L;Cء\@=|"1#)/agFҐOڎ:sW^%ds3 v{7UK88v:ʝr1Ocdo̳>82HiN8qʬ :d5:FrT&picCa-y.Oh4upqx[G"Z A1v0G/(Y\|{DJD.o>]{gr2ҽ9))Z:P_B6?9_7ZIo q|:ƺ @$y{n|7]ژ SXք WGQ̂JP_BuCc% d0 hD) 1?݃H$b)*emG{WKJ%YL0*1޵~w^U7~sq?M;' B*OFFFs" P/ӗ?ώ|sv뉖!I ( rrrXl_usd޸נ*:*fmFuPj, \֍4y[%K*j'\Ukn}Z?HV-mU*j5 jorbd?|]zx"Jm 2fWQ^Hօ1%dax͹5͹mUIUi%޶ص:듥]I9Jjè΅egִ+x# 4#(zV\ɀnnQ eE"었Uiʾʫ话w2TkR=A;[K=IHDx.s1>)J@< mC]*U+dgQL'r!D.;DzlX9us$׸ugoxOFbtu#5^ǩY$1)r TP곀?fHnJlP]#*2Q؅f-O(LSUQAիҺus#DDDƆ [Ǧ6 I*,),$?1} XZ+۽x+g.lZZOHRc i}|ZˍTٟdʇSx0g."] ӢHZ9s1잾tBVqCmžRXS~j-iJ}O"5޶]M±;mL],HO )GaVIkc&`Zo*//&|s]cbh.yE1U_gnnqaraN.ڕ'9xqUgwvd$7n-6xgxueր+IOHh}ƍe΍Is|&n1O7nXF'Aii) ,`֭&CSbH}TT(eἶyvN$qucRIyv˜:s`מ{hF*pE7wFrc~ ס8ke*%; ]}k[1Dl@Nl'DhA7o&%V&J] BdX=I7M]-16&/!7pW64ɝI\CXkLĶ [4B$cQuTDSW 1T+"sss ; |2ԘWL^J IDAT M޳ĩs6( "U CZ\dU,{u&:9KYI3;wbE%^WKbeʵI~m>cLL.91혎嗰ofݷOGsq)z? m .=EtMQvn^l\+> Fvr Prˉ͔[r㳸<*/`m'o3sYҮ&;hH%R6\It@J(W6t ^~D~k82/l}ɕ); =dj^sդک c3Ó{=;ȼ4GM]A_ˊd~Ign)ZoR疌@TGiRR̵dD*_߃|ojj/?J k}sʄCGp*Z4ӲvvJO `ޚ5޽Nµk,1 {{xXa>}nnv؁]vmnQ_Dx~?MRp N={'z('>[iǁ[0|9.ݽ0s"%4iX1 i t4 vpqI;NNL) L9fg5웳 ;?gL],))"Rw ib w07E@v:+Yh)HFd C{ƔʞylzqRFԠŁzo;nX RWNmo/^T_YSA2euM`lAiN)(J/ۖS{ښj?7\a`6/wmۯ:}?Nul#1ۨiestLi>}eUOpeK;Jeo߼q~o{8A%sQjƼ~;'ipeC^BR(+aipT]4cYKz{oiH8ԍ+=PC8$SWK[cdgBNl&wnSQT.=cBPIݻz-b~5c_Ą=zжGOpnU@AKGt1}ZILLd˖-޽Eir,[Csawʆ`s(/(A*T|+#\{yµJ\a+&B7D,nKw/x mMٽ\dzߢXxp~eqooisWO}=ۧOʕY "N$ J+6-forwfDt֭x>ɁX?3sOmӫN'$ø \AAܾv WWz͈ޒ++Y:i7CCLLmC6izKҦ{wNΎo%*8F͛ǘwm_ Hw__ƽ>..Jq77+|())x3pZguIƠ !-ta'`d:{Ia!۾˗Iw__/\9JvXsHB\U3t L'9<<6r$ǎJ$g;FbTR_S^RB.]?y2LrwoT/{r<ڷ˗Tp0wݝqqܺņŋuw/P9/7-oo\ A'=Fm[n?O^F^更ݻNYmHȾ}$^WMH_T/s|fbao/o/~CO??*m{PZ>UUbFիo崙={0rHF2N3UߟC"~̠U*k17GMC{Z\!F]S?mDgh5܏Wv}TKVKj [6DfqzL^Uu)$J;QUY%Z:gm%??_z?|p tyE@_KtllѶm?~`Qj|һw׭)n/d%%q?VP/=JLXޝ:c쌽WjaGMPBcǒ#-ZԶm,شÇ+Iy^zĨ(t pnm]]Xx13drdI&^S~f&C3ڶ-JBΝL#& i,8xLhߞȳg9u+ӿq7>x"O=<;2u*6Jc;o?XY143c%ܹCt8k&)UV\I D6mPJP 2w^ˊygO#ss28~=jꏤ(>'|ԩSJbS?r$6fӬԅZBine$#ܾ_^|5u5xHمl skZ8J~v,٩o z5tQӦѮwoyLIu5_MHbT&OUѿFu#$D>Ή-[jDz[VٳgҒ%gâ?gdSb s'M@4M4˥ͯ_iʴ-sLM}_P@dQADa z9{?wy3s8z4j{qyxko݇7__u9x rrrDOR\p_77|`mCs#L@̆w+x=ٓ7Tuщhܡ&z1k,CDOFO ~ *N uI W}HO_{"AX#db)IÇo#/'̑S]}9 dkѭlJ=}}LXql$EEI6͛Wk8|%Y.x{$dfbReːp }}$_{Ms{e9r7m+~~`$@F0 O*x4N²~} A]˽H 6:/,D+Z :zعl;q|;t@FUcʕRÆ=l;W*-?kL^RJ &\ R);@v{U> q<ٷ#v8P!?x^5 y^Y;.He1Gǎ.BGvo` RBs>;jhw2dSpA`##ۋ;u xԶF^p;='m-$=׹nӎQGG?5q,߿V={oqqO}y|DLF;w. +|TjaHǘ>&\rƔkߢ7*"QuOPaC.wvuFeO05`PZ g`RNmm oPL{C:}JcH}0 w^t>I".΄İnlluJ"ըW(X*/K 򐓙 s+hy#'wGҀ2Y۾E Rl= S t^/];?<ѹ~8yW[s0m؀C65>]M:v,s[ad$roxCsRyssFu7>lDY]҉ʟx>tŲ~}45Ž\\OLJ5]`5.>Eoػ#r^%% ;._aOshiW^Aƍ?v {Vı-[}oڄÛ6|$LKDDDDbiLNֹ\SnH>6 o "޹K ?1kKMJz3uȒRZ\]p i+߸1?KQu+NZ͏>*:2c}ξ9rׯsGX0fL63g⯥KP(ưae{ծ>5_ǫCGGߵ ;.ű-[0k~]g]""\zzz ^ć2*P,tm:ncg1FVj*\PV)vнӴS'xj3gj !W|~aI:;nI]kWdDDDDAk_|?-BɓpR[|s*G`٘{oxc0*O?!'3 /voôN\PwƾG#ñmB(J kYWU{wwI0yst0i/#><BCԪ[~ OuãukzB[gΔsBƍz7jV`X&ZU` %7Cuhڹ3!3%.\͛qiF=}} k|տ?#ph4ju$IF/X޸;tGְ{:9 /۾nVݺlsH 32P0Wved$FE];NOǎŋqe[Ku &,Ym`i8znݸxݼaƟ>v8ڽއ118_ȿ{m{?>DDDD0Q`cӼyHt BÀJ#-lm1oPl'l081ϛ!!^!):Zk$К;q"̘s?,9szL,,0q ڣV'¥ys0j\=+WJˌLL:(N>>u6 _FZf*SiߦMӧq`ZBJKL 9{Ⱥ*U*xmݻbh0Y߼~[t<}'N' ⢋ܰǷnůN¹G NNxwTO=hÜ}}Ҽ9uN0;$]˗(==GӪ .\qpx&ĝ:%;W??'ն-.EFbr#0C*(E'óWsXՖ>Ql:4o=:it8uCк xh֥ \T$A4hX}'ND߉dܻsV  RĄ%K0cssػ?vC_XX/(ģU+ٸ 9ܸ vDQAR.^tXԫk\7ĦL\Ž;wиiSi\ D@KJWaQ>lʕzn!+% 34`J|%֥ժܦH˷MV)pzt:8Nr3լc'FpD%gNOUeBepG~66hѵ+Lj~:o۫>Yɸp?xmt't󆁩!.3aWsfl@»"q,Oϱiw ~'`le.3;8VKJmP١<(^߿C'urBjg__8>y>n5 48\am}j 7 A ܃imҞs8;ѝtΡID/J^zoq ~."uLW(U7qi94%n=[=$EQ^!jkǿ++/eI71U h7]:tED E"*"@4FXqDgՃln&֧aШHDDD/6&DDǗtqMˁm9fB,( v0%DYvecX9"BcKwajlc ""ꅉ"QQ׭VRSi/%G?tAE]׿Zs IDAT ޕUJkks\>tWƗ{=M+aƅ:ҽ;}DT-j?~qqq ULSC!8JHo!|!>tl=kQs=7rPRT h=+,Y#7ru {prs8B"""zQ)QvKecci/`{7ޭ<-z߅SIIOnPàabD CԺ0կ B;!c[yDDDT1Q$"bZ f882bSqr&,]mQURO¦"d݌;jڎVR12l*ή>kaH?}p {&j(/*B%U0=@KuWY :J=nTDDT(J4m666 U"Q]688@Uv(D 4uvY "T*ѽ{j(j Z0zJDDDDDD2LH"KNDܸqC!*"Kk֬Ç+;""( E""""""aHDDDDDD2L^r 055PЫrT*9 *-DDDDDD$Dd( Q$"z["+; "Ң=CTBd;1Q$"z.2bSZaT\\Yf}p `HD UCUcL!R/sDDDa't""""""aHDDDDDD2zJDDDCHHՐJӀ`bbR!Q®DDDDDD$Dd( E"""\II -[}Uv(DTEp0"""І$lQ$""""""&DDDDDD$Dd"KNRW^033P`HDDDS(0 aS""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""ѫjjCV#??_k QXX(+W*055E^^eQfMܹsB2CCC38`OG5`dd8`qT8`llM]*$QLOOǔ)S?dggcɒ%Z-Z?w[ZZb޼y'[ִiS7&Lez-4k֬7o`qT8Zl#G28`:~6uQk׮E~ʵ.*wpp@qq1RRR###YYYr}}}+HJJB^^lqyj2Uxw`q0j96l8`qT8䤵͇[D^|D E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"UvT*-- /^VZk2666pppsr>|lx+)""""""zY=DUWT{?~<:t#x&MBtt6mĈʧv=U?}vl޼AAAS9u:$fR"""""zQTDQCAҥKպ+/&O,+heVᅬ1cƠ'OΝ;}vY\!00|WaU~hmm ___@1j(8;;#))IV̙3Zbdd$/^,+{.]&MHWVgϞx7uȑ#tжm[|'044#$$/ֽ{0bY'F 8z(VZ%[WWWu\\ϟ/ӯ_?oضm<!MJu8gΜJz~IӱtR!>>ppp7o!CFOڵk0uT@駟jOM:UƍZ\6m$sy:ӧO۶m&&&ZOOO,m:׭[7iݟYke1ݻW? fϞs5j7nB1iҤ2xwZyJJJĂ c];v1Wk BYf*sss+׺Jeƍw\~9|bѢEZ6j>I0gΜ2f͚2Gd2dF6m`Ν*(`ӦMBƦܣT '&&j...߿?<==o~:@OO4:X(JtA看w7|pvvF>}`jjU믿*?oʼaDDD_EeB1Ě^ ҥKbšDk֬= 8٢FR Z^za֭;wՃ <h߾,}xYE[b}]֭[u&:t;`hhlxzz"55UZI5篤Çmq8zh6m-Z/W^ŬY0sgrDDDDDUzbFFpyYR0tPDDDl)+Bج1w\)yR*0`VGy$w==ZjEGJJ:)) iii:#FjtssCeeGgCDDDDDUB'e)))Ajj*juеkWL zYYY+$-:tJ挍ѲeKYֶ233ϟ?|ppp;{ޅ 8nnnŋ!쯿BXXΟ?[[rmOWbhwz; ###c~իUVfMܾ}[zݰaC:Zeŋgdd+,ܺu u)W}"""""Z*E1((֭Ù3gwww۷ok?8Zev,/]IaU+PWvYSoDDDDDbDaXnVwm۶aƍZuiEEEUX dUh*(ןX"""""z1TD(}vnʔ)ZӦMVjggUԩSW\ڵk+6rxYƜ?8)]u랸,B"""""%0n8yccct={oa8uVX֭[ƫw}uaݺu)sss 6LVc ;;[V~]۷oo߾*U*(֪U cƌ*1cl:uK.:%%%2e Zl{ׯ_m۶*۵kƏq=yAV6|ԫW>>>h۶-իSSSt 6mBqqqKDDDDDJ&YYLL l"+9s&T*UٳIӳgOi"bӦMZPGあꪲb:u0j(3f^7o}ǵ=/{Ŝ9sвeKؼ4k QQQX`gB5ѻwo,Y{QESk׮}ܗ 11AӦMTݻw666_>*}ZN"""""֭[|WTpqqKeR>>> =#U)U&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""ѫ蟉Z>+;JII .]066s{p5۾ʫZ(Ο?F)->/[~JbhӦ \pRSS1e4i3gNٳ0aܰi&wFim+::ǎCnn.5kǃs077Zl f-׮]=qa#|||d8tt~_Ν;c„ 077Gdd$^}UX\#FUwyo%/..}^|۶mCpp0/_nݺaϞ=ꫯXGnn.$lٲ @xx,=~8K; Boܹׯ[;;va0j(ٱDFF&L@~~>>c| ƍQ8x 8v+WJu %Kر#fϞ-iӦQ~}lܸ8q켻ٳpuu޽{舸2ӧ1k, 8J "88/{n9 MHH * aaa=zSLɓ1j(L2w'|bܾ}{Ƹq`aaKKK 'O?uԁBJкuoRSS1sL4kLAs@!''AAAZ]ŋkaʔ)J CZZpaK?d2.j֬ ;;; :TŋXjl2a߾}CڵkEu/zꉖ-[j5lPYYY:P,^X-ѫW/… -DGQ8'O,åBP <D۶mee{B[ ܹszJ !,9|PTb֬YRYJJ <<>>bѢEFQFioDD / 4H4lP^qil޼y1c9r ;GDDDb[v eSͯ qȐ!P*R2 >Y]{{{ٯIIIhҤ V^={W\={ ,xl_5󑐐 b`` ݻlӦMƅ PXX-)ɓQ^=-dcҤI022hpوX*9r$p@333Y|90au.]N®]d[.vڅ"ԨQCGll,#u}Ѷm[d^^^RKT*&M$ŮiԜH^#F@u5˛6m* **J믦gGrr2~x ,,,`kk [[[@#<<JM4Ξ=5A\\BCColҩS";;_|lu֕ 66۶mC@@\\\`nnƨ9z*kذ! TJϟGPPԝ[l֭[_]{{{{j9sAFF֬Ywy* }d-@ɓX|9+Οf:KKKVs꧟~ 11QgH( ʕ+h"{UvDDLMMe-jfffsDDDDCMJ%wńo^zÇcZ_&SRR`ff&<,\{˥Dqԩ>}ccѣyfh 6DFF u322,"9gϞ?jժh˞$Æ ʲJɓ'ObСcW*/@iWŨ(b}Q-))~ŋnnn(((@||:77;wwrP IDATDѠAd]f  &MI&I)))/3IJ)..G}$+|٭S|uA:v(;7oD/&u*JF\\ݻ';_… egeeIϢƍ.]hUӧO&&&300T6yd 2Dz.$$ÇJBQQ~wT*t]+WH믿ԩSL>mڴylHNNM6qD YYY}`FGGcƌZvZ[nÆ áC0h L<Ç~dш@>}dsf* I ڵkv~ [&ϩ1ch}Nꫲ !tvtj۳g'Pz_WVvMk퇈^|ň4ńܸln޼)!1P%ŋh׮TfooB$,^ 1qDGG#++K+xTuV$$$`Xb4|F<ӧ:YYYزe VX///xxx>e … B#G B7oDTTĉ1o<8p'OĊ+0vXq$%%Pkϟ׺fqqqѣΞ=+BQQcϟx~ J֭[(%!!AzDFFʒ56N46F]ҥK{.bDEEɮCVV^\hZu%TqqqpttD͚5eǏ_777:u ۷o;M~AAΟ?ϡCP\\,\_pC\\]v BxyyISB브t&p.\@:u'NB{.G%""%@6e}y5Z&xrV!CHeWbbbf W\_|3g>6dر|l]vjz.`/[nō7d]!phB~٫[Ԋ9͛R)k KHH ?w .Daao!/^Y]vɦx~yw͢"?,\P,{@*ƍѹsgi3ghh~hx8Zu:DlٲE5iذdDDjԨ!k{4χB|-Y999jQLHH]Dl۶M#GpU4fnGGAAfΜLUNu#.. B\,066+u.((($eZ Pz=yPFttԒw^ 6 gΜ{ ,X}}}Jϡ?Ν;h}>;vLGs\>>>V4 ]-..͛ѹsgigBV?\QRń<1Q|ˍ?j׮Ǐ˶_`Z-Xz5F%8::ҥK044|//]@iK ԤIzjjTgΜ9ZSG|t{mzzz Cnn.j5֯_EM@iC!oߎJ!quyȤ$̛74͚5Μ9#uݵk6oތڵk˺z!,, R?^ܡ.@HHjԨQv킩+񈏏GnnjسgӦM9wz###)B)y411A-pe)a?s -Z.߇ZFzz: 3f@V֝>},s._,u3mԨ<<--%me \xQV1~x~:ΝC.]$M3g Z5k`˖->}\a`` ,mСC6l4sѣR7n`Vƒ9s`ԩJ[ dZPPRRRd:u*ܹe˖ɮ4JY盈j3i= رceGԮ][(J#+-߷oAAAwbҥ:3h #'DzzzŋuĈ:t_|VVVZ#Gj8qB###Qvmѹsg!w-ZJRtYjJI,]TYFx{{ Ab޼y"66VB >>"..N!7|#T*prrbĈ^i{7nN:GL0AN:.ڶm+Ĉ#D&MD޽EFFF|ƍGT*1gѢE ѴiSQfM."""Bܽ{W4iDXYY }}}#_.E떜,M&"v!]v yC,_\b̙bG +++ѯ_?$|||077}B/,,,D5D&MD^^Bpaii) cƌu}=(~ j׮-4i"֬Y#7; $EnĠA9rlh$ŰaÄ7n4kׄ =zbʕevq#j֬)jժ%t"UYСB`amm- F􍋋666O>M6bÆ bϞ=}`mm-|||۷e֌~ڨQ#1|pѴiSѷo_&#LMME۶mСCӧl[Es>? Đ!Ch۶ť "44TVg٢~bM6֭[bM~,6l(.Zj%Q](W^hڴ(((}!""fSŃDjQHLLd}= @FVJ+WNNNZ<\v 5… uI4 FN|Tvv6࠳FAAL899aܹ3DZZ4h 4-).vիӓ|Zъq%4hprrB׮]dɒr !6lXf\\ۗy]\888謓4zz~<-Z-OO}6RSS,{T#??(,,VP4oK.E^^^ƍ9Jhnn.Pn2Gesrrp޽'zq\v DDDYn&olwy'OĹst~aK.lYϟךew!۷O61b8q]+Y~~>wɦ!"""4b?+WDff&j*\v ۷ofI"ܹGڵzj`۶mLu8|0ϟsss4n7oƞ={rJ&lطo777U"""[IKzz:BCCqT*xxxgϞ|R[n!44PxWLY~~>vڅX={dR]8qkooo899UbDDDDDîDDDDDD$IDDDDDD0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$""""""&DDDDDD$Dd( E""""""aHDDDDDD2LH"0Q$"3* KǂbX{ocbwcXb4&{]bQP) "R"gP0g-Jν̞{a}OB!j$QB!BFE!B!j$QB!BFE!B!j$QB!BFE!B!j$QB!BFE!B!j$QB!BFE!B!j$QB!BFE!B!j$QB!BFE!B!j$QB!BF?DGGa!r1B!GAWԫW{"t҅vB!I_@Afh5vn"mtn BQD5f\'B!!B|Td1!B!j$QB!BFE!B!j$QB!BFE!B!jdS!DXh0s; !>*|٢Cn!o%B?uR qn"Gl@* 'B&!vB|4r;!(B!B$B!B!H(B!B$B!B!H(B!B$B!B!H(B!B$B!B!H(B!B$B!B!H(B!B$B!B!H(B!B$B!B!H(B!B$B!B!H(t~,s׻r\ZO`$s׻rZYwZ@;K0w+Gd!IB|̙'ʯ g2gx˜cw˜9rΊ$ ~e:V=GRdB!CE!== 1Ͻ?qzz/b˵rkvWfG.E&";s;!}ر6;u͠NCnؤ"0B#QB)}~'<~^cH}<}\XFG'MBYYZz'?)\DU~'|(W85N70{4ѭs|ӗ;w' %0sTKFh}!,ʔ_Ræ$]D禕poBX{N?=%L>Q=Othl (7 W4 +B:FO壄*u[LYœkCI@'bdO[Ox_ҙܙG@yֲ &cHg\}ǽ$%?SkH8tmE6Y}' wbBK\q᧿nvy0qa|@_jY2#MjU+ieS 7bhX͒`‚CtkQU3h[\cʒ|ݺ:˦uzBHc<ݧ6H(wE&/7 _Nn|NUUdՔm2os!Ze/.,8Z-Q5,n8E\)%9QI${rKMOgjjI"@zVHnhZk[m_KdyrZ˽Zw#i+"ʌU:::B32%MnS4B0͸d,KR箕y!jؔ$y:eY fE[Z ~@Uy^׬k[l1)ߝ(.^U'5 jwucĈԮ]3g|Bw%CO?3oZi3sn^ K6(<s!t==r'-iԷ1.i_r!EaϐKeB#lv:a`w{h=Pϋ8]HJٚѰs%:}H[g8{jV{.ȐGTo^kS2Y pǙq ٲ0z~~7zh]`ςs_ %%)u~TJ(=͋4G6K8csq/WG Y/]/Rl1_$Y`YOpQzlӛ/;퇁_,CUٽ>;~qi>et 9šݗU=No)kP~ 0gZhA׮]Yp!˗-9!gƪZ .5kiRw9Oko]o,10֧\ܻũ^x ÃhgVT#豅;^4ˇe&=.f؂t!hun7 ' X6r/7]|msY]q>7|ܘ*6krf5V=@aܺƣ [A̓.g9 U!,M  = 7Wvs;)S8_0j$/ x`֑AT*omK W @||>}>\/ IDATݻqtttޝݻwӴtC2_ $rH+|Ig2sBxW2gQz zE銷9iKqt#p`zpiբgϫ>Po,M[dcJy Ѫ*=ZU%#C9ڃw`${0_fEayp7ƼP8z .=æ^4[0*+FZV(*Q֭cܸq|w,\72{lFB.8V@9a뮒5ԒL{IOյUixo9KS-=uP Iz_';*)E+詒+iLjbTu/eSTUְfUUmjIyB=.e'.u ϟOhh([sܾ};CBGϐF7`#w9mz6Sey+h.LPl7?z$i2dDY h͌Qd"Ao]5uo5z3iClRR y eyQz}m^|LIEKNNfΝ888p zÇiY,4G6{u+"c^ `ɔsI|[]D$RTafrʗǐ-òF) $*6 ǙhTC}Xy![R -G< &av-N!]p&P4[#C}\C'U/ޏ)jZ)SҔ$<|ÈMu fcUKS9^l? adϴMҥy Ǯķ'mJ56`j[zԘr?3۾ :u* fݺu?~q1sLLMXB!ffv(~Z ͦNprUnClڏ)q[jd&gAY}\i=}}WrǕ l/msԏ|Q7A{!4Tf}kPlaLEO_ck<5EE"ΪD/eWp'SWR\2}퍃[lL29cǎ} j1K:eTVjiZ\CPd5SmU]f;SѸVf kN;yeKmX>p0tttnIUpqW,]\z(j=RͲ^-q-+nĬ5. mR>xT)_CѥYezzlkf,wm-֦qwt:b A[V~=2}Q lU[Hޜeuc”^CGW)(7:riwJ@_O< GGG|}}ի4h{ޅ]uK\׎(o-\4jDztT1NPKɟא}4{Wݼ˼Cƶth1Kt_gh]uz̟؞<=CmiVc\o;  EעD~ Ϟch5h?&4Øme=O72򵴹x=TYT^<Ȕ)S7nVbŴm6"Eh?vln!G/ӓt?CQُQ~;2']!#=C꾱/s뮝|Լ'e-uާ'ϸ'[T#܉#E->hJW2P(u|3Y\\UoG%x,[o^ [ڵk3sssVXA`ݺu\>-IO橖g+gDaNe'I|uv-^ed%.M/w`ROcmΝcѢEDDDЮ]; Є1I?c6KSN)nánnD7rVnaHlNZGU~TLzO^rSUOmڜ;E?:]"<5d\dzT/_7:z-n^T_$#nA#Z VTIYniI_g/=III8::R^=4iqqqQ% H/ۜC6s6ks׻3|6YZ:ƴƬ ]yN2qڲ(:I&رcqvvZj?^ !>zӐm:PS΢0, '/7{f]yk(>>0k)ti^Kvz=ErJƎˤIX|9[n_~aرE!O>M>sMa!RqLQYYvUpQ^F/Do5u2oY9z?|_uLPSE>0F%3v{>~F? ε(|.ip7&]&~A/= /|UVQ7INxZUg^'#=5+!!m۶@PP}ٳԮ(ET*ǖoHyø'=OʼPv~(&\sQ+C =еy ajbcUTٙG2yd&LիYh:t@}vz۱2VTigθv(Mdp+,Plzڿ,Sy` :W"#=H23(W QXV.iρ"CAx` 1aXT4{v:L?w$ 5JAfuW:VP(]y Iq) q>޷I WSD-ߟۡprrrʌ9޽{?~\<}*ŗr!g'{mZYfG6mXx1UTyS~~~l>{Vo鉞#?UOӧQmBA1 eӥ|-sZdq>C*)EXV.ADPngQy9I@GW [3jNR9zoѿe`W?S߷n_Dv6ITdzrJj֬I֭144… xxx0|\O}}}ƏO`` ǏԨQoIPBDolNFtgB]/'>>mۖUVamm͒%KHKK:܍Oe <lUkOu.Dy17oӿݩVZn&UX#Gɓ4iWf…t9B|"$Q moI<[F 67WU{#jaS~\pGGGvEZ2e _5yȃ!۵mۖVZf~tB˖-Yd}СC̜9p/^LJr;D!@˖-b͚5$&&ҭ[77os;4!GBE!DGG`lmm)U7nՕ}bdd! !c9r$L:K.QNFATTTn'e(~Ɯ^a\WR|~s rx[yk+~~xBŅ^zQti?ٳ g…vBA?>tڕkbmmܹsyin'%(~-$'| 0ݙsvKl̵,La pY&;w.+++|}}9u{0CB ʕcϞ=RBONJؽ{wn;𥉉?www?|K}cbww{ٮv$%ݝ@ܾz˗KDQl0_P(8q=zҒSN1g߿ϼyPBn(ҴiS^ڵkIIIgϞ4i//K2ΎV~pJqq\uٙvv[,u;V>`i$S[d{W?( !?ʗ/ߟ'OҳgO r;D!1]]] ۷>}:W\nݺ 2vxB$g)iDGJbE$sS~;G9OPN,_$bg'ψ49{sT'E&:< 5Ȭ ? ;W_}ϟg1gʕ+! !{abb?ѣ6lƆ?O|b߰ennYXv("s;3>lL8q [3jE^յ۳GVu%aºTkZV' <N8!`3UW3;z]љŃww.OSi7:t 9)s?O_(dy â; NFzJФWu.h+.=Hȍ?Ϡ@|tЈ?z~vcI W(ۭGOcUŀZ [Au&7ZMdp_ՎMoH4yuoH5חxjƴX~U[ybSς'←(E$(&&BԒh5-KV\=v"1<~ HX xOa j8*<9ы+Ҩ[opq/:aR$/X}Xs19~8-[dҥt}}B4n6mČ3ݻ7˖-?^zu]c…xxԔ*mwn~0!SF BV4=b.k4ttt8_]DFz:履0/_^<=Ks>7[WĄvv|5~.m=ct)z''.˭+W(jnNf?ľvGiԥ q7˗ cߟكѣDKR(]"}OךپK~p,+UbxxO;vpz6vJL LLLx8ͣx2 9Ӈi|51k*yϏc^eB8\` jI8ܞv.Y4hg\y:n:=hй /txG Ӗ?4SGy,8G_m8IR59h*<S\Uz+Go}j+eͣ/~d}(:f!>bȼZS IDATFĺ]x?@|#~QDդX^Q9AD{)OLF~;R6Eq ?W}sƬLo^N? YN_m8a}m}icςslՅvԈF/NF/?􎭹̊3g(n:֭[B`С,_KK퓡o3 2r;!>aРAуypB4h@3gJG>z49  )m۸o Q[OSR_>\:p>zzriV^Z!D2k~uQ=  [[⣣qް;~F]уD+T ;w/ 5'Nɐ?К(_U'Rre, %]]򛚪  u )+tŊ(RGtgog43dr.MdHmܮ]|i{V΍؁-˿ȻwR<&&$'$oh''*6h]__v/^L)kk}$Qd|5yUOz\#0\WZQ^sttu;g\KDQWOQK;i$.~&u-Ԓv/̖k[sY(Eq- /-XT4w_ZۘKYOͭm1.:M_~g$f>bqGlα5Y[զfys%6COo.g[(ft%PY9$^ދs;9*Q /+aڪL~kw`{GWKZ_ҧ(==#Gɓ'iݺ5+WHk0H|={6#F`ڴil޼={0m4NNm$%pPF=hs iΜ?tkÇ)"}*?۳kBj4kF{g hn̙l7 Zoނ v~?D3ٝޞ5'Sm[,ll^YJ f` 57ÇLkݚk8s'M{{"*4 Wc?joӧ٥ KFfްg,2$-_Nqx!CپB`?0{~v@ҵ+g4gӨwxj6oSx8Ŋb][y][PNy$ti`oO^v{f'yW[\9XGl>!O%O;_]z4Q> Z'v _bc9t7bou)Qŭ iy`]QwiKKҔվaV5_vaGs>dN*LZ5iَFKeu UٍSATSl14+Ǯ5ZL\ˌMuM}%M ##]٣|=BADkԉ{HyF}Eq,Q IRx.l%ƍ^zqa:w,IBAҥٶmnnnTV_~[[[9\hJ ~= i~JJRNs碣ôMTI"MݺxtZWŋՒAgS~}q~Uݻ9 7UPfMF-Z4vΟ: a*I0-V^Ӧpi:_AA4z-[Fĝ;t;G%*5[ό$qp*UQGGb#"hة*I70`ڵ`?r*Ioj[o`+Hըc`dČm̼UZ-[j$luZ<"%K2UIbfVUPIsZ))lތ!mH']ˉuW6fpIWT}GOI YzrqzB&b^b.+Z@/ѿ.s7o01Ţ;fYkeGVu3ypd;GV{h4BPO5AP,a4_ Cc}*7 bljᷕ]x Ͽb#1+]Pu/9Ӎ7yH*_빆ʟ&W@2C!ě5l777m?i4d麶/ѴgO԰!eU8ޢ_?=ooj́kѷ6D6PΗZ9}3uQfYIApƱQ jmGk)_3*wW~iӬwo-]Uefn cq-Gpjтfo$>[S]_F]ohXc9w#Tkrٝ;Iz}Ph7)DÄ6K.@]Cp^{_e.Zg8՛cvX׵@GW!~Ͳ1uK*rҟk۔EyvdkYB=8yZj>іg(Z{.P(n^ ^4jU.Azs/JUMaub/P>hإ2v]+m27177^#!٧C~ꫯ={69!]J-x,ʵQ2- 0+] "CBT^+<"ȟo0e |5WiWPoa{kkHO׈#g~ۮyxPFX +?MNq^ڷl ohqn*^sw3vR Q~g:!FQ)DTR1JW*FiM~¡iM9J{7*iݟx0:٪S֬{}Tu_V.sW$~UEy|υp%Kʞ/C;kHJqCL׵@َͲr⸡{?B!Dy2`6=zOz0Oc)IIY{ы2ۇScFFewUIᯯ+Jz3i[6Ӣa8D&Mh7t(66,Z}.<Ȫ Pdh|0ί}(26'7mwM77JRi7O$fKKr'16Y5]ņ'7Ům} tttp;pAsjѧM%ʑRDuw z2e|uRʱhAz,@x2 ^'}>QmRv)L KaQS6/C uJmE&T!Ȯt8@bevaaZW?meBEeyǴ:>̢^^S֖kh;x0_|Uc|,lm |N|͚٪SLo :,Lcx{ߢ(ezk6qqqr¼|y<148jNsr}rϤ7d1OO Kbl2yL(Z*gȯ+e]EC/Kf%i3.q ,CzB#9-D>5x_c=o49R)+7Уԗc,I('Ǟ?[Y.rc۠4 :HblZ՛5չENT#کu{ pʘդSs~n;TmZX1d^;;;lAopH#bВ (21^[Z 36ܼOQΒ|Ά&UXsŀZ3*Y8* 3=}ΐTI*p+,}Eۍ8x^(\CU&QK+<+5l>f \omF-DG\׉@*6U!=H$, N5Tuڊ>GFV\Lņ1Pd"c¶Ai' !=xSuV ,I77Q]Vq` ֫xfv]{Cmuf4֍ {?2nr4RSY7}:&LZQ.^/"s:m#ڂ;ƌa߲e_F;ܙ)9!Hv9o)ԭ*5mneSMc?|ӔFGfϒ%/:kwq>ni^={mdg<кțyw)"#)\%4f ``Ӳ_??u(~BNlLܼSh>7/O)_j$6,0-#c߫6-KU 3d' }~X׵`i1WPִ,e +L:g+{_qu $2D"سFS5~4qQnZU⦴jRrkZVEk+1{U{gH&V= _u};5{`w֦N{ @؋f}x+ulC%Tg皃?*F:AD kel]KgR}jPmT\<XC[OHQM˲7rY.z}]KΆЊUk+ĆRNΰMܽ\xs݋|5e=}ٲ<GKRdIڶmʕ+ζt"۾};jբs899pBkJ.mDҤBfΆ*+[8EU7C\s8tغb{<ʑ]*DY;;; 8'DHQB+QIL&mk:Iv>]pJK]/rOclZ[S9W/5Z #=DM-%\HT~+ wk!~=v[{kܽ\(S5 JT>9SdgeXU[DPdl:8}SӸGN^bbټglH lZ}Ҏ/zէ+vded /:RZ^ĞGrmee"zo6K>͗cdeb2a2bk+n 괏6ľ_os8rrU3tAI@HHcƌaĈ,\D^u4il'/iDDn';;3f+piZfiIDAThĉ ti"RH((BYF́d\9|5'6b떼{GDd@2q5goqBw[S('arylYs~,)״ɖG/~^2K*OWu*Υ3WtjMq2~ _?zu9)RU$Ͻ^^L&~9ru_&{p7;?BD@MhLPֶV;y vk[Zf \BHo^ԌlZ3}NUR9=;fkq-+>GhEsuv9ȩCOVUjՊVZqAON.]'>>K)"ƍի6l ,,YfSOY,)d4GʦR2tעNXXQ~~եW}:z"338D;ud֬Y2aW;y0I!͹S6y3)]w'.嶻+ЃˡsD muLڒE)ߠ4.Ӫ|7'~Xo֊qrۆTeΤ]`|7w;kHf~=W>S{)ڼ-qv!ὖz:໹?#C=OcС 2e˖Hhh(l6ӤI}ayedd;s%:vJTȟoxdg_d#eUSi8LfT]x )腪̆%sZ{M&+}.C!0Gγk*KD +++~i~iN8|K/D=ڵ+YLyV^M^HNN|;ԨQeQoTK!R]Nb,]b!୵T|:̰ڏ wsli˕ 0Xm ^ˢhګ..ƒ6䶻^U`-ո<*1p 2G72[-5YV.ZVj\wo}̎(Dw/.bx%0x`^yVXAbb"ԩSnݺѼyslm-R?~0g<<<2e ݻw/skeOBڊ#N򥚸sf}$ o2*_w3g;C;N\ ՟l{˼=h=[KUq{"GN8 jE=z#.GKfРA 8o$"##Qf-[jh'18,_qaft{R/aުdN%q;6`߲sIΜJx[>I`93v+@USzt)CHp,[h}ԨQwy[,y)(ۗ}ߓHLL 111t֍g}GGYڏ;uo*+Q68.^cڽ~*J66n;̎}'w4' .n/rBM{4̴#mb 7@ig۷>}xbJ(̙3رHXTiN榈V2EK\]]1lڴիWc2[.111ޭR1w;?yF=""roED䁩PӦMĉwwwKH9;/Y,GDD 1EyҥƺG2Q=Uʕ96k4VcUR7{]IŁUIp RDD 2E +yxDuRT.u :D|X[<4GQDDDDDD EDDDDD@AQDDDDDD EDDDDD@AQDDDDDD EDDDDD@AQDDDDDD EDDDDD@AQDDDDDD EDDDDD@AQDDDDDD EDDDDD@AQDDDDDD EDDDDDtf.Nt"¥7+EѠ)0[[[K!"rW "" %44e}E1P\tSY Ȱt """"oc,]ʕt""""-ޙW\t"b.ADDDPPEӦM-]i11PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1PPE1X~ M@eK/YN٧IENDB`0707010007ffda000081a40000000000000000000000014f83d2e600001459000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/gtk-doc/html/gi/girepository.html Part I. 

Part I. 

Table of Contents

GIRepository
girepository
GIR Foreign functions interface
girffi
GIRepository structs
Struct hierarchy — Struct hierarchy description for GIBaseInfo and all its sub structs
GIBaseInfo — Base struct for all GITypelib structs
GIFunctionInfo — Struct representing a function
GICallableInfo — Struct representing a callable
GIArgInfo — Struct representing an argument
GITypeInfo — Struct representing a type
GIStructInfo — Struct representing a C structure
GIUnionInfo — Struct representing a union.
GIFieldInfo — Struct representing a struct or union field
GIPropertyInfo — Struct representing a property
GIVFuncInfo — Struct representing a virtual function
GISignalInfo — Struct representing a signal
GIEnumInfo — Structs representing an enumeration and its values
GIRegisteredTypeInfo — Struct representing a struct with a GType
GIObjectInfo — Struct representing a GObject
GIInterfaceInfo — Struct representing a GInterface
GIConstantInfo — Struct representing a constant
gierrordomaininfo
0707010007ffbd000081a40000000000000000000000014f83d2e6000066e1000000b600010002ffffffffffffffff0000003700000000root/usr/local/share/gtk-doc/html/gi/gi-GIArgInfo.html GIArgInfo

GIArgInfo

GIArgInfo — Struct representing an argument

Description

GIArgInfo represents an argument. An argument is always part of a GICallableInfo.

Struct hierarchy

  GIBaseInfo
   +----GIArgInfo

Details

GI_IS_ARG_INFO()

#define             GI_IS_ARG_INFO(info)

GIArgInfo

typedef GIBaseInfo GIArgInfo;

Represents an argument.


enum GIDirection

typedef enum {
  GI_DIRECTION_IN,
  GI_DIRECTION_OUT,
  GI_DIRECTION_INOUT
} GIDirection;

The direction of a GIArgInfo.

GI_DIRECTION_IN

in argument.

GI_DIRECTION_OUT

out argument.

GI_DIRECTION_INOUT

in and out argument.

enum GIScopeType

typedef enum {
  GI_SCOPE_TYPE_INVALID,
  GI_SCOPE_TYPE_CALL,
  GI_SCOPE_TYPE_ASYNC,
  GI_SCOPE_TYPE_NOTIFIED
} GIScopeType;

Scope type of a GIArgInfo representing callback, determines how the callback is invoked and is used to decided when the invoke structs can be freed.

GI_SCOPE_TYPE_INVALID

The argument is not of callback type.

GI_SCOPE_TYPE_CALL

The callback and associated user_data is only used during the call to this function.

GI_SCOPE_TYPE_ASYNC

The callback and associated user_data is only used until the callback is invoked, and the callback. is invoked always exactly once.

GI_SCOPE_TYPE_NOTIFIED

The callback and and associated user_data is used until the caller is notfied via the destroy_notify.

enum GITransfer

typedef enum {
  GI_TRANSFER_NOTHING,
  GI_TRANSFER_CONTAINER,
  GI_TRANSFER_EVERYTHING
} GITransfer;

The transfer is the exchange of data between two parts, from the callee to the caller. The callee is either a function/method/signal or an object/interface where a property is defined. The caller is the side accessing a property or calling a function. GITransfer specifies who's responsible for freeing the resources after the ownership transfer is complete. In case of a containing type such as a list, an array or a hash table the container itself is specified differently from the items within the container itself. Each container is freed differently, check the documentation for the types themselves for information on how to free them.

GI_TRANSFER_NOTHING

transfer nothing from the callee (function or the type instance the property belongs to) to the caller. The callee retains the ownership of the transfer and the caller doesn't need to do anything to free up the resources of this transfer.

GI_TRANSFER_CONTAINER

transfer the container (list, array, hash table) from the callee to the caller. The callee retains the ownership of the individual items in the container and the caller has to free up the container resources (g_list_free()/g_hash_table_destroy() etc) of this transfer.

GI_TRANSFER_EVERYTHING

transfer everything, eg the container and its contents from the callee to the caller. This is the case when the callee creates a copy of all the data it returns. The caller is responsible for cleaning up the container and item resources of this transfer.

g_arg_info_get_direction ()

GIDirection         g_arg_info_get_direction            (GIArgInfo *info);

Obtain the direction of the argument. Check GIDirection for possible direction values.

info :

a GIArgInfo

Returns :

the direction

g_arg_info_is_caller_allocates ()

gboolean            g_arg_info_is_caller_allocates      (GIArgInfo *info);

Obtain if the argument is a pointer to a struct or object that will receive an output of a function. The default assumption for GI_DIRECTION_OUT arguments which have allocation is that the callee allocates; if this is TRUE, then the caller must allocate.

info :

a GIArgInfo

Returns :

TRUE if caller is required to have allocated the argument

g_arg_info_is_return_value ()

gboolean            g_arg_info_is_return_value          (GIArgInfo *info);

Obtain if the argument is a return value. It can either be a parameter or a return value.

info :

a GIArgInfo

Returns :

TRUE if it is a return value

g_arg_info_is_optional ()

gboolean            g_arg_info_is_optional              (GIArgInfo *info);

Obtain if the argument is optional.

info :

a GIArgInfo

Returns :

TRUE if it is an optional argument

g_arg_info_may_be_null ()

gboolean            g_arg_info_may_be_null              (GIArgInfo *info);

Obtain if the argument accepts NULL.

info :

a GIArgInfo

Returns :

TRUE if it accepts NULL

g_arg_info_get_ownership_transfer ()

GITransfer          g_arg_info_get_ownership_transfer   (GIArgInfo *info);

Obtain the ownership transfer for this argument. GITransfer contains a list of possible values.

info :

a GIArgInfo

Returns :

the transfer

g_arg_info_get_scope ()

GIScopeType         g_arg_info_get_scope                (GIArgInfo *info);

Obtain the scope type for this argument. The scope type explains how a callback is going to be invoked, most importantly when the resources required to invoke it can be freed. GIScopeType contains a list of possible values.

info :

a GIArgInfo

Returns :

the scope type

g_arg_info_get_closure ()

gint                g_arg_info_get_closure              (GIArgInfo *info);

Obtain the index of the user data argument. This is only valid for arguments which are callbacks.

info :

a GIArgInfo

Returns :

index of the user data argument or -1 if there is none

g_arg_info_get_destroy ()

gint                g_arg_info_get_destroy              (GIArgInfo *info);

Obtains the index of the GDestroyNotify argument. This is only valid for arguments which are callbacks.

info :

a GIArgInfo

Returns :

index of the GDestroyNotify argument or -1 if there is none

g_arg_info_get_type ()

GITypeInfo *        g_arg_info_get_type                 (GIArgInfo *info);

Obtain the type information for info.

info :

a GIArgInfo

Returns :

the GIArgInfo, free it with g_base_info_unref() when done. [transfer full]

g_arg_info_load_type ()

void                g_arg_info_load_type                (GIArgInfo *info,
                                                         GITypeInfo *type);

Obtain information about a the type of given argument info; this function is a variant of g_arg_info_get_type() designed for stack allocation.

The initialized type must not be referenced after info is deallocated.

info :

a GIArgInfo

type :

Initialized with information about type of info. [out caller-allocates]
0707010007ffc7000081a40000000000000000000000014f83d2e600002a70000000b600010002ffffffffffffffff0000004200000000root/usr/local/share/gtk-doc/html/gi/gi-GIRegisteredTypeInfo.html GIRegisteredTypeInfo

GIRegisteredTypeInfo

GIRegisteredTypeInfo — Struct representing a struct with a GType

Description

GIRegisteredTypeInfo represents an entity with a GType associated. Could be either a GIEnumInfo, GIInterfaceInfo, GIObjectInfo, GIStructInfo or a GIUnionInfo.

A registered type info struct has a name and a type function. To get the name call g_registered_type_info_get_type_name(). Most users want to call g_registered_type_info_get_g_type() and don't worry about the rest of the details.

Struct hierarchy

  GIBaseInfo
   +----GIRegisteredTypeInfo
         +----GIEnumInfo
         +----GIInterfaceInfo
         +----GIObjectInfo
         +----GIStructInfo
         +----GIUnionInfo

Details

GI_IS_REGISTERED_TYPE_INFO()

#define             GI_IS_REGISTERED_TYPE_INFO(info)

GIRegisteredTypeInfo

typedef GIBaseInfo GIRegisteredTypeInfo;

Represent a registered type.


g_registered_type_info_get_type_name ()

const gchar *       g_registered_type_info_get_type_name
                                                        (GIRegisteredTypeInfo *info);

Obtain the type name of the struct within the GObject type system. This type can be passed to g_type_name() to get a GType.

info :

a GIRegisteredTypeInfo

Returns :

the type name

g_registered_type_info_get_type_init ()

const gchar *       g_registered_type_info_get_type_init
                                                        (GIRegisteredTypeInfo *info);

Obtain the type init function for info. The type init function is the function which will register the GType within the GObject type system. Usually this is not called by langauge bindings or applications, use g_registered_type_info_get_g_type() directly instead.

info :

a GIRegisteredTypeInfo

Returns :

the symbol name of the type init function, suitable for passing into g_module_symbol().

g_registered_type_info_get_g_type ()

GType               g_registered_type_info_get_g_type   (GIRegisteredTypeInfo *info);

Obtain the GType for this registered type or G_TYPE_NONE which a special meaning. It means that either there is no type information associated with this info or that the shared library which provides the type_init function for this info cannot be called.

info :

a GIRegisteredTypeInfo

Returns :

the GType.
0707010007ffd8000081a40000000000000000000000014f83d2e6000006ea000000b600010002ffffffffffffffff0000003500000000root/usr/local/share/gtk-doc/html/gi/gi-typelib.html Typelib binary format

Typelib binary format

gtypelib — Layout and accessors for typelib
0707010007ffcc000081a40000000000000000000000014f83d2e60000307a000000b600010002ffffffffffffffff0000003900000000root/usr/local/share/gtk-doc/html/gi/gi-GIVFuncInfo.html GIVFuncInfo

GIVFuncInfo

GIVFuncInfo — Struct representing a virtual function

Description

GIVfuncInfo represents a virtual function. A property belongs to either a GIObjectInfo or a GIInterfaceInfo.

Struct hierarchy

  GIBaseInfo
   +----GICallableInfo
         +----GIFunctionInfo
         +----GISignalInfo
         +----GIVFuncInfo

Details

GI_IS_VFUNC_INFO()

#define             GI_IS_VFUNC_INFO(info)

GIVFuncInfo

typedef GIBaseInfo GIVFuncInfo;

Represents a virtual function.


enum GIVFuncInfoFlags

typedef enum {
  GI_VFUNC_MUST_CHAIN_UP     = 1 << 0,
  GI_VFUNC_MUST_OVERRIDE     = 1 << 1,
  GI_VFUNC_MUST_NOT_OVERRIDE = 1 << 2,
  GI_VFUNC_THROWS =            1 << 3
} GIVFuncInfoFlags;

Flags of a GIVFuncInfo struct.

GI_VFUNC_MUST_CHAIN_UP

chains up to the parent type

GI_VFUNC_MUST_OVERRIDE

overrides

GI_VFUNC_MUST_NOT_OVERRIDE

does not override

GI_VFUNC_THROWS

Includes a GError

g_vfunc_info_get_flags ()

GIVFuncInfoFlags    g_vfunc_info_get_flags              (GIVFuncInfo *info);

Obtain the flags for this virtual function info. See GIVFuncInfoFlags for more information about possible flag values.

info :

a GIVFuncInfo

Returns :

the flags

g_vfunc_info_get_offset ()

gint                g_vfunc_info_get_offset             (GIVFuncInfo *info);

Obtain the offset of the function pointer in the class struct. The value 0xFFFF indicates that the struct offset is unknown.

info :

a GIVFuncInfo

Returns :

the struct offset or 0xFFFF if it's unknown

g_vfunc_info_get_signal ()

GISignalInfo *      g_vfunc_info_get_signal             (GIVFuncInfo *info);

Obtain the signal for the virtual function if one is set. The signal comes from the object or interface to which this virtual function belongs.

info :

a GIVFuncInfo

Returns :

the signal or NULL if none set. [transfer full]

g_vfunc_info_get_invoker ()

GIFunctionInfo *    g_vfunc_info_get_invoker            (GIVFuncInfo *info);

If this virtual function has an associated invoker method, this method will return it. An invoker method is a C entry point.

Not all virtuals will have invokers.

info :

a GIVFuncInfo

Returns :

the GIVFuncInfo or NULL. Free it with g_base_info_unref() when done. [transfer full]
0707010007ffdd000081a40000000000000000000000014f83d2e60000158a000000b600010002ffffffffffffffff0000003000000000root/usr/local/share/gtk-doc/html/gi/index.html GObject Introspection Reference Manual

GObject-Introspection Overview
Introspection Overview — General overview of introspection
I.
GIRepository
girepository
GIR Foreign functions interface
girffi
GIRepository structs
Struct hierarchy — Struct hierarchy description for GIBaseInfo and all its sub structs
GIBaseInfo — Base struct for all GITypelib structs
GIFunctionInfo — Struct representing a function
GICallableInfo — Struct representing a callable
GIArgInfo — Struct representing an argument
GITypeInfo — Struct representing a type
GIStructInfo — Struct representing a C structure
GIUnionInfo — Struct representing a union.
GIFieldInfo — Struct representing a struct or union field
GIPropertyInfo — Struct representing a property
GIVFuncInfo — Struct representing a virtual function
GISignalInfo — Struct representing a signal
GIEnumInfo — Structs representing an enumeration and its values
GIRegisteredTypeInfo — Struct representing a struct with a GType
GIObjectInfo — Struct representing a GObject
GIInterfaceInfo — Struct representing a GInterface
GIConstantInfo — Struct representing a constant
gierrordomaininfo
II. GIR markup format
The GIR XML format
Typelib binary format
gtypelib — Layout and accessors for typelib
Annotation Glossary
0707010007ffcf000081a40000000000000000000000014f83d2e600002a95000000b600010002ffffffffffffffff0000003b00000000root/usr/local/share/gtk-doc/html/gi/gi-gir-reference.html The GIR XML format

The GIR XML format

This chapter describes the GIR XML markup format.

api node

The root node of all GIR documents is the api node. Possible children: namespace.

Example 4. A GIR fragment showing an api node

1
2
3
<api version="1.0">
  <namespace/>
</api>


namespace node

Parent node: api. Possible children: callback, class, function. interface.

Example 5. A GIR fragment showing an namespace node

1
2
3
4
5
6
<api version="1.0">
  <namespace="Gtk">
     <class/>
     <function/>
  </namespace>
</api>


class node

Parent node: namespace. Possible children: constructor, field, method, property.

Example 6. A GIR fragment showing an class node

1
2
3
4
5
6
7
8
9
10
<api version="1.0">
  <namespace="Gtk">
    <class name="Widget">
       <constructor/>
       <field/>
       <method/>
       <property/>
    <class>
  </namespace>
</api>


interface node

Parent node: namespace. Possible children: field, method, property.

Example 7. A GIR fragment showing an interface node

1
2
3
4
5
6
7
8
9
<api version="1.0">
  <namespace="Gtk">
    <interface name="Buildable">
       <field/>
       <method/>
       <property/>
    <interface>
  </namespace>
</api>


function node

Parent node: namespace.

Example 8. A GIR fragment showing an function node

1
2
3
4
5
6
<api version="1.0">
  <namespace="Gtk">
    <function name="init">
    </function>
  </namespace>
</api>

0707010007ffce000081a40000000000000000000000014f83d2e60000099b000000b600010002ffffffffffffffff0000003f00000000root/usr/local/share/gtk-doc/html/gi/gi-gierrordomaininfo.html gierrordomaininfo

gierrordomaininfo

gierrordomaininfo

Synopsis


Description

Details

0707010007ffd3000081a40000000000000000000000014f83d2e600016bf0000000b600010002ffffffffffffffff0000003600000000root/usr/local/share/gtk-doc/html/gi/gi-gtypelib.html gtypelib

gtypelib

gtypelib — Layout and accessors for typelib

Stability Level

Stable, unless otherwise indicated

Description

The "typelib" is a binary, readonly, memory-mappable database containing reflective information about a GObject library.

The format of GObject typelib is strongly influenced by the Mozilla XPCOM format.

Some of the differences to XPCOM include:

  • Type information is stored not quite as compactly (XPCOM stores it inline in function descriptions in variable-sized blobs of 1 to n bytes. We store 16 bits of type information for each parameter, which is enough to encode simple types inline. Complex (e.g. recursive) types are stored out of line in a separate list of types.

  • String and complex type data is stored outside of typelib entry blobs, references are stored as offsets relative to the start of the typelib. One possibility is to store the strings and types in a pools at the end of the typelib.

The typelib has the following general format.

typelib ::= header, section-index, directory, blobs, attributes, attributedata

directory ::= list of entries

entry ::= blob type, name, namespace, offset blob ::= function|callback|struct|boxed|enum|flags|object|interface|constant|union attributes ::= list of attributes, sorted by offset attribute ::= offset, key, value attributedata ::= string data for attributes

Details

We describe the fragments that make up the typelib in the form of C structs (although some fall short of being valid C structs since they contain multiple flexible arrays).

Details

G_IR_MAGIC

#define G_IR_MAGIC "GOBJ\nMETADATA\r\n\032"

Identifying prefix for the typelib. This was inspired by XPCOM, which in turn borrowed from PNG.


enum GTypelibBlobType

typedef enum {
  BLOB_TYPE_INVALID,
  BLOB_TYPE_FUNCTION,
  BLOB_TYPE_CALLBACK,
  BLOB_TYPE_STRUCT,
  BLOB_TYPE_BOXED,
  BLOB_TYPE_ENUM,
  BLOB_TYPE_FLAGS,
  BLOB_TYPE_OBJECT,
  BLOB_TYPE_INTERFACE,
  BLOB_TYPE_CONSTANT,
  BLOB_TYPE_INVALID_0, /* DELETED - used to be ErrorDomain */
  BLOB_TYPE_UNION
} GTypelibBlobType;

The integral value of this enumeration appears in each "Blob" component of a typelib to identify its type.

BLOB_TYPE_INVALID

Should not appear in code

BLOB_TYPE_FUNCTION

A FunctionBlob

BLOB_TYPE_CALLBACK

A CallbackBlob

BLOB_TYPE_STRUCT

A StructBlob

BLOB_TYPE_BOXED

Can be either a StructBlob or UnionBlob

BLOB_TYPE_ENUM

An EnumBlob

BLOB_TYPE_FLAGS

An EnumBlob

BLOB_TYPE_OBJECT

An ObjectBlob

BLOB_TYPE_INTERFACE

An InterfaceBlob

BLOB_TYPE_CONSTANT

A ConstantBlob

BLOB_TYPE_INVALID_0

BLOB_TYPE_UNION

A UnionBlob

Header

typedef struct {
  gchar   magic[16];
  guint8  major_version;
  guint8  minor_version;
  guint16 n_entries;
  guint16 n_local_entries;
  guint32 directory;
  guint32 n_attributes;
  guint32 attributes;

  guint32 dependencies;

  guint32 size;
  guint32 namespace;
  guint32 nsversion;
  guint32 shared_library;
  guint32 c_prefix;

  guint16 entry_blob_size;
  guint16 function_blob_size;
  guint16 callback_blob_size;
  guint16 signal_blob_size;
  guint16 vfunc_blob_size;
  guint16 arg_blob_size;
  guint16 property_blob_size;
  guint16 field_blob_size;
  guint16 value_blob_size;
  guint16 attribute_blob_size;
  guint16 constant_blob_size;
  guint16 error_domain_blob_size;

  guint16 signature_blob_size;
  guint16 enum_blob_size;
  guint16 struct_blob_size;
  guint16 object_blob_size;
  guint16 interface_blob_size;
  guint16 union_blob_size;

  guint32 sections;
} Header;

The header structure appears exactly once at the beginning of a typelib. It is a collection of meta-information, such as the number of entries and dependencies.

gchar magic[16];

See G_IR_MAGIC.

guint8 major_version;

The version of the typelib format. Minor version changes indicate compatible changes and should still allow the typelib to be parsed by a parser designed for the same major_version.

guint8 minor_version;

See major_version.

guint16 n_entries;

The number of entries in the directory.

guint16 n_local_entries;

The number of entries referring to blobs in this typelib. The local entries must occur before the unresolved entries.

guint32 directory;

Offset of the directory in the typelib.

guint32 n_attributes;

Number of attribute blocks

guint32 attributes;

Offset of the list of attributes in the typelib.

guint32 dependencies;

Offset of a single string, which is the list of dependencies, separated by the '|' character. The dependencies are required in order to avoid having programs consuming a typelib check for an "Unresolved" type return from every API call.

guint32 size;

The size in bytes of the typelib.

guint32 namespace;

Offset of the namespace string in the typelib.

guint32 nsversion;

Offset of the namespace version string in the typelib.

guint32 shared_library;

This field is the set of shared libraries associated with the typelib. The entries are separated by the '|' (pipe) character.

guint32 c_prefix;

The prefix for the function names of the library

guint16 entry_blob_size;

The sizes of fixed-size blobs. Recording this information here allows to write parser which continue to work if the format is extended by adding new fields to the end of the fixed-size blobs.

guint16 function_blob_size;

See above.

guint16 callback_blob_size;

See above.

guint16 signal_blob_size;

See above.

guint16 vfunc_blob_size;

See above.

guint16 arg_blob_size;

See above.

guint16 property_blob_size;

See above.

guint16 field_blob_size;

See above.

guint16 value_blob_size;

See above.

guint16 attribute_blob_size;

See above.

guint16 constant_blob_size;

See above.

guint16 error_domain_blob_size;

See above.

guint16 signature_blob_size;

See above.

guint16 enum_blob_size;

See above.

guint16 struct_blob_size;

See above.

guint16 object_blob_size;

See above.

guint16 interface_blob_size;

For variable-size blobs, the size of the struct up to the first flexible array member. Recording this information here allows to write parser which continue to work if the format is extended by adding new fields before the first flexible array member in variable-size blobs.

guint16 union_blob_size;

See above.

guint32 sections;

Offset of section blob array

DirEntry

typedef struct {
  guint16 blob_type;

  guint16 local    : 1;
  guint32 name;
  guint32 offset;
} DirEntry;

References to directory entries are stored as 1-based 16-bit indexes.

All blobs pointed to by a directory entry start with the same layout for the first 8 bytes (the reserved flags may be used by some blob types)

guint16 blob_type;

A GTypelibBlobType

guint16 local : 1;

Whether this entry refers to a blob in this typelib.

guint32 name;

The name of the entry.

guint32 offset;

If is_local is set, this is the offset of the blob in the typelib. Otherwise, it is the offset of the namespace in which the blob has to be looked up by name.

ArgBlob

typedef struct {
  guint32        name;

  guint          in                           : 1;
  guint          out                          : 1;
  guint          caller_allocates             : 1;
  guint          allow_none                   : 1;
  guint          optional                     : 1;
  guint          transfer_ownership           : 1;
  guint          transfer_container_ownership : 1;
  guint          return_value                 : 1;
  guint          scope                        : 3;
  guint          skip                         : 1;
  gint8        closure;
  gint8        destroy;


  SimpleTypeBlob arg_type;
} ArgBlob;

Types are specified by four bytes. If the three high bytes are zero, the low byte describes a basic type, otherwise the 32bit number is an offset which points to a TypeBlob.

guint32 name;

A suggested name for the parameter.

guint in : 1;

The parameter is an input to the function

guint out : 1;

The parameter is used to return an output of the function. Parameters can be both in and out. Out parameters implicitly add another level of indirection to the parameter type. Ie if the type is uint32 in an out parameter, the function actually takes an uint32*.

guint caller_allocates : 1;

The parameter is a pointer to a struct or object that will receive an output of the function.

guint allow_none : 1;

Only meaningful for types which are passed as pointers. For an in parameter, indicates if it is ok to pass NULL in, for an out parameter, whether it may return NULL. Note that NULL is a valid GList and GSList value, thus allow_none will normally be set for parameters of these types.

guint optional : 1;

For an out parameter, indicates that NULL may be passed in if the value is not needed.

guint transfer_ownership : 1;

For an in parameter, indicates that the function takes over ownership of the parameter value. For an out parameter, it indicates that the caller is responsible for freeing the return value.

guint transfer_container_ownership : 1;

For container types, indicates that the ownership of the container, but not of its contents is transferred. This is typically the case for out parameters returning lists of statically allocated things.

guint return_value : 1;

The parameter should be considered the return value of the function. Only out parameters can be marked as return value, and there can be at most one per function call. If an out parameter is marked as return value, the actual return value of the function should be either void or a boolean indicating the success of the call.

guint scope : 3;

A GIScopeType. If the parameter is of a callback type, this denotes the scope of the user_data and the callback function pointer itself (for languages that emit code at run-time).

guint skip : 1;

Indicates that the parameter is only useful in C and should be skipped.

gint8 closure;

Index of the closure (user_data) parameter associated with the callback, or -1.

gint8 destroy;

Index of the destroy notfication callback parameter associated with the callback, or -1.

SimpleTypeBlob arg_type;

Describes the type of the parameter. See details below.

SignatureBlob

typedef struct {
  SimpleTypeBlob return_type;

  guint16        may_return_null              : 1;
  guint16        caller_owns_return_value     : 1;
  guint16        caller_owns_return_container : 1;
  guint16        skip_return                  : 1;
  guint16        reserved                     :12;

  guint16        n_arguments;

  ArgBlob        arguments[];
} SignatureBlob;

SimpleTypeBlob return_type;

Describes the type of the return value. See details below.

guint16 may_return_null : 1;

Only relevant for pointer types. Indicates whether the caller must expect NULL as a return value.

guint16 caller_owns_return_value : 1;

If set, the caller is responsible for freeing the return value if it is no longer needed.

guint16 caller_owns_return_container : 1;

This flag is only relevant if the return type is a container type. If the flag is set, the caller is resonsible for freeing the container, but not its contents.

guint16 skip_return : 1;

Indicates that the return value is only useful in C and should be skipped.

guint16 reserved :12;

guint16 n_arguments;

The number of arguments that this function expects, also the length of the array of ArgBlobs.

ArgBlob arguments[];

An array of ArgBlob for the arguments of the function.

CommonBlob

typedef struct {
  guint16 blob_type;  /* 1 */

  guint16 deprecated : 1;
  guint32 name;
} CommonBlob;

The CommonBlob is shared between FunctionBlob, CallbackBlob, SignalBlob.

guint16 blob_type;

A GTypelibBlobType

guint16 deprecated : 1;

Whether the blob is deprecated.

guint32 name;

The name of the blob.

FunctionBlob

typedef struct {
  guint16 blob_type;  /* 1 */

  guint16 deprecated  : 1;
  guint16 setter      : 1;
  guint16 getter      : 1;
  guint16 constructor : 1;
  guint16 wraps_vfunc : 1;
  guint16 throws      : 1;
  guint16 index       :10;
  /* Note the bits above need to match CommonBlob
   * and are thus exhausted, extend things using
   * the reserved block below. */

  guint32 name;
  guint32 symbol;
  guint32 signature;

  guint16 is_static   : 1;
  guint16 reserved    : 15;
  guint16 reserved2   : 16;
} FunctionBlob;

guint16 blob_type;

guint16 deprecated : 1;

The function is deprecated.

guint16 setter : 1;

The function is a setter for a property. Language bindings may prefer to not bind individual setters and rely on the generic g_object_set().

guint16 getter : 1;

The function is a getter for a property. Language bindings may prefer to not bind individual getters and rely on the generic g_object_get().

guint16 constructor : 1;

The function acts as a constructor for the object it is contained in.

guint16 wraps_vfunc : 1;

The function is a simple wrapper for a virtual function.

guint16 throws : 1;

guint16 index :10;

Index of the property that this function is a setter or getter of in the array of properties of the containing interface, or index of the virtual function that this function wraps.

guint32 name;

guint32 symbol;

The symbol which can be used to obtain the function pointer with dlsym().

guint32 signature;

Offset of the SignatureBlob describing the parameter types and the return value type.

guint16 is_static : 1;

The function is a "static method"; in other words it's a pure function whose name is conceptually scoped to the object.

guint16 reserved : 15;

guint16 reserved2 : 16;


CallbackBlob

typedef struct {
  guint16 blob_type;  /* 2 */

  guint16 deprecated : 1;
  guint32 name;
  guint32 signature;
} CallbackBlob;

guint16 blob_type;

guint16 deprecated : 1;

guint32 name;

guint32 signature;

Offset of the SignatureBlob describing the parameter types and the return value type.

InterfaceTypeBlob

typedef struct {
  guint8  pointer  :1;
  guint8  tag      :5;
  guint16 interface;
} InterfaceTypeBlob;

If the interface is an enum of flags type, is_pointer is 0, otherwise it is 1.

guint8 pointer :1;

Whether this type represents an indirection

guint8 tag :5;

A GITypeTag

guint16 interface;

Index of the directory entry for the interface.

ParamTypeBlob

typedef struct {
  guint8	 pointer  :1;
  guint8	 reserved :2;
  guint8	 tag      :5;

  guint8	 reserved2;
  guint16	 n_types;

  SimpleTypeBlob type[];
} ParamTypeBlob;

guint8 pointer :1;

guint8 reserved :2;

guint8 tag :5;

guint8 reserved2;

guint16 n_types;

The number of parameter types to follow.

SimpleTypeBlob type[];

Describes the type of the list elements.

ErrorTypeBlob

typedef struct {
  guint8  pointer  :1;
  guint8  reserved :2;
  guint8  tag      :5;

  guint8  reserved2;

  guint16 n_domains; /* Must be 0 */
  guint16 domains[];
} ErrorTypeBlob;

ValueBlob

typedef struct {
  guint32 deprecated : 1;
  guint32 unsigned_value : 1;
  guint32 name;
  gint32 value;
} ValueBlob;

Values commonly occur in enums and flags.

guint32 deprecated : 1;

Whether this value is deprecated

guint32 unsigned_value : 1;

if set, value is a 32-bit unsigned integer cast to gint32

guint32 name;

Name of blob

gint32 value;

The numerical value

FieldBlob

typedef struct {
  guint32        name;

  guint8         readable :1;
  guint8         writable :1;
  guint8         has_embedded_type :1;
  guint8         reserved :5;
  guint8         bits;

  guint16        struct_offset;

  guint32        reserved2;

  SimpleTypeBlob type;
} FieldBlob;

guint32 name;

The name of the field.

guint8 readable :1;

guint8 writable :1;

How the field may be accessed.

guint8 has_embedded_type :1;

An anonymous type follows the FieldBlob.

guint8 reserved :5;

guint8 bits;

If this field is part of a bitfield, the number of bits which it uses, otherwise 0.

guint16 struct_offset;

The offset of the field in the struct. The value 0xFFFF indicates that the struct offset is unknown.

guint32 reserved2;

SimpleTypeBlob type;

The type of the field.

RegisteredTypeBlob

typedef struct {
  guint16 blob_type;
  guint16 deprecated   : 1;
  guint16 unregistered : 1;
  guint16 reserved :14;
  guint32 name;

  guint32 gtype_name;
  guint32 gtype_init;
} RegisteredTypeBlob;

guint16 blob_type;

guint16 deprecated : 1;

guint16 unregistered : 1;

guint16 reserved :14;

guint32 name;

guint32 gtype_name;

The name under which the type is registered with GType.

guint32 gtype_init;

The symbol name of the get_type() function which registers the type.

StructBlob

typedef struct {
  guint16   blob_type;

  guint16   deprecated   : 1;
  guint16   unregistered : 1;
  guint16   is_gtype_struct : 1;
  guint16   alignment    : 6;
  guint16   foreign      : 1;
  guint16   reserved     : 6;

  guint32   name;

  guint32   gtype_name;
  guint32   gtype_init;

  guint32   size;

  guint16   n_fields;
  guint16   n_methods;

  guint32   reserved2;
  guint32   reserved3;

#if 0
  /* variable-length parts of the blob */
  FieldBlob    fields[];
  FunctionBlob methods[];
#endif
} StructBlob;

guint16 blob_type;

BLOB_TYPE_STRUCT

guint16 deprecated : 1;

Whether this structure is deprecated

guint16 unregistered : 1;

If this is set, the type is not registered with GType.

guint16 is_gtype_struct : 1;

Whether this structure is the class or interface layout for a GObject

guint16 alignment : 6;

The byte boundary that the struct is aligned to in memory

guint16 foreign : 1;

If the type is foreign, eg if it's expected to be overridden by a native language binding instead of relying of introspected bindings.

guint16 reserved : 6;

guint32 name;

guint32 gtype_name;

String name of the associated GType

guint32 gtype_init;

String naming the symbol which gets the runtime GType

guint32 size;

The size of the struct in bytes.

guint16 n_fields;

guint16 n_methods;

guint32 reserved2;

guint32 reserved3;

FieldBlob fields[];

An array of n_fields FieldBlobs. should be considered as methods of the struct.

FunctionBlob methods[];


UnionBlob

typedef struct {
  guint16      blob_type;
  guint16      deprecated    : 1;
  guint16      unregistered  : 1;
  guint16      discriminated : 1;
  guint16      alignment     : 6;
  guint16      reserved      : 7;
  guint32      name;

  guint32      gtype_name;
  guint32      gtype_init;

  guint32      size;

  guint16      n_fields;
  guint16      n_functions;

  guint32      reserved2;
  guint32      reserved3;

  gint32       discriminator_offset;
  SimpleTypeBlob discriminator_type;

#if 0
  FieldBlob    fields[];
  FunctionBlob functions[];
  ConstantBlob discriminator_values[]
#endif
} UnionBlob;

guint16 blob_type;

guint16 deprecated : 1;

guint16 unregistered : 1;

If this is set, the type is not registered with GType.

guint16 discriminated : 1;

Is set if the union is discriminated

guint16 alignment : 6;

The byte boundary that the union is aligned to in memory

guint16 reserved : 7;

guint32 name;

guint32 gtype_name;

String name of the associated GType

guint32 gtype_init;

String naming the symbol which gets the runtime GType

guint32 size;

The size of the union in bytes.

guint16 n_fields;

Length of the arrays

guint16 n_functions;

guint32 reserved2;

guint32 reserved3;

gint32 discriminator_offset;

Offset from the beginning of the union where the discriminator of a discriminated union is located. The value 0xFFFF indicates that the discriminator offset is unknown.

SimpleTypeBlob discriminator_type;

Type of the discriminator

FieldBlob fields[];

Array of FieldBlobs describing the alternative branches of the union

FunctionBlob functions[];


EnumBlob

typedef struct {
  guint16   blob_type;

  guint16   deprecated   : 1;
  guint16   unregistered : 1;
  guint16   storage_type : 5;
  guint16   reserved     : 9;

  guint32   name;

  guint32   gtype_name;
  guint32   gtype_init;

  guint16   n_values;
  guint16   n_methods;

  guint32   error_domain;

  ValueBlob values[];
#if 0
  FunctionBlob methods[];
#endif
} EnumBlob;

guint16 blob_type;

guint16 deprecated : 1;

guint16 unregistered : 1;

If this is set, the type is not registered with GType.

guint16 storage_type : 5;

The tag of the type used for the enum in the C ABI (will be a signed or unsigned integral type)

guint16 reserved : 9;

guint32 name;

guint32 gtype_name;

String name of the associated GType

guint32 gtype_init;

String naming the symbol which gets the runtime GType

guint16 n_values;

The length of the values array.

guint16 n_methods;

The length of the methods array.

guint32 error_domain;

String naming the GError domain this enum is associated with

ValueBlob values[];

Describes the enum values.

FunctionBlob methods[];

Describes the enum methods.

PropertyBlob

typedef struct {
  guint32        name;

  guint32        deprecated                   : 1;
  guint32        readable                     : 1;
  guint32        writable                     : 1;
  guint32        construct                    : 1;
  guint32        construct_only               : 1;
  guint32        transfer_ownership           : 1;
  guint32        transfer_container_ownership : 1;
  guint32        reserved                     :25;

  guint32        reserved2;

  SimpleTypeBlob type;
} PropertyBlob;

guint32 name;

The name of the property.

guint32 deprecated : 1;

guint32 readable : 1;

guint32 writable : 1;

guint32 construct : 1;

guint32 construct_only : 1;

The ParamFlags used when registering the property.

guint32 transfer_ownership : 1;

When writing, the type containing the property takes ownership of the value. When reading, the returned value needs to be released by the caller.

guint32 transfer_container_ownership : 1;

For container types indicates that the ownership of the container, but not of its contents, is transferred. This is typically the case when reading lists of statically allocated things.

guint32 reserved :25;

guint32 reserved2;

SimpleTypeBlob type;

Describes the type of the property.

SignalBlob

typedef struct {
  guint16 deprecated        : 1;
  guint16 run_first         : 1;
  guint16 run_last          : 1;
  guint16 run_cleanup       : 1;
  guint16 no_recurse        : 1;
  guint16 detailed          : 1;
  guint16 action            : 1;
  guint16 no_hooks          : 1;
  guint16 has_class_closure : 1;
  guint16 true_stops_emit   : 1;
  guint16 reserved          : 6;

  guint16 class_closure;

  guint32 name;

  guint32 reserved2;

  guint32 signature;
} SignalBlob;

guint16 deprecated : 1;

guint16 run_first : 1;

guint16 run_last : 1;

guint16 run_cleanup : 1;

guint16 no_recurse : 1;

guint16 detailed : 1;

guint16 action : 1;

guint16 no_hooks : 1;

The flags used when registering the signal.

guint16 has_class_closure : 1;

Set if the signal has a class closure.

guint16 true_stops_emit : 1;

Whether the signal has true-stops-emit semantics

guint16 reserved : 6;

guint16 class_closure;

The index of the class closure in the list of virtual functions of the object or interface on which the signal is defined.

guint32 name;

The name of the signal.

guint32 reserved2;

guint32 signature;

Offset of the SignatureBlob describing the parameter types and the return value type.

VFuncBlob

typedef struct {
  guint32 name;

  guint16 must_chain_up           : 1;
  guint16 must_be_implemented     : 1;
  guint16 must_not_be_implemented : 1;
  guint16 class_closure           : 1;
  guint16 throws                  : 1;
  guint16 reserved                :11;
  guint16 signal;

  guint16 struct_offset;
  guint16 invoker : 10; /* Number of bits matches @index in FunctionBlob */
  guint16 reserved2 : 6;

  guint32 reserved3;
  guint32 signature;
} VFuncBlob;

guint32 name;

The name of the virtual function.

guint16 must_chain_up : 1;

If set, every implementation of this virtual function must chain up to the implementation of the parent class.

guint16 must_be_implemented : 1;

If set, every derived class must override this virtual function.

guint16 must_not_be_implemented : 1;

If set, derived class must not override this virtual function.

guint16 class_closure : 1;

Set if this virtual function is the class closure of a signal.

guint16 throws : 1;

guint16 reserved :11;

guint16 signal;

The index of the signal in the list of signals of the object or interface to which this virtual function belongs.

guint16 struct_offset;

The offset of the function pointer in the class struct. The value 0xFFFF indicates that the struct offset is unknown.

guint16 invoker : 10;

If a method invoker for this virtual exists, this is the offset in the class structure of the method. If no method is known, this value will be 0x3ff.

guint16 reserved2 : 6;

guint32 reserved3;

guint32 signature;

Offset of the SignatureBlob describing the parameter types and the return value type.

ObjectBlob

typedef struct {
  guint16   blob_type;  /* 7 */
  guint16   deprecated   : 1;
  guint16   abstract     : 1;
  guint16   fundamental  : 1;
  guint16   reserved     :13;
  guint32   name;

  guint32   gtype_name;
  guint32   gtype_init;

  guint16   parent;
  guint16   gtype_struct;

  guint16   n_interfaces;
  guint16   n_fields;
  guint16   n_properties;
  guint16   n_methods;
  guint16   n_signals;
  guint16   n_vfuncs;
  guint16   n_constants;
  guint16   reserved2;

  guint32   ref_func;
  guint32   unref_func;
  guint32   set_value_func;
  guint32   get_value_func;

  guint32   reserved3;
  guint32   reserved4;

  guint16   interfaces[];

#if 0
  /* variable-length parts of the blob */
  FieldBlob           fields[];
  PropertyBlob        properties[];
  FunctionBlob        methods[];
  SignalBlob          signals[];
  VFuncBlob           vfuncs[];
  ConstantBlob        constants[];
#endif
} ObjectBlob;

guint16 blob_type;

BLOB_TYPE_OBJECT

guint16 deprecated : 1;

guint16 abstract : 1;

guint16 fundamental : 1;

this object is not a GObject derived type, instead it's an additional fundamental type.

guint16 reserved :13;

guint32 name;

guint32 gtype_name;

String name of the associated GType

guint32 gtype_init;

String naming the symbol which gets the runtime GType

guint16 parent;

The directory index of the parent type. This is only set for objects. If an object does not have a parent, it is zero.

guint16 gtype_struct;

guint16 n_interfaces;

guint16 n_fields;

guint16 n_properties;

guint16 n_methods;

guint16 n_signals;

guint16 n_vfuncs;

guint16 n_constants;

The lengths of the arrays.Up to 16bits of padding may be inserted between the arrays to ensure that they start on a 32bit boundary.

guint16 reserved2;

guint32 ref_func;

String pointing to a function which can be called to increase the reference count for an instance of this object type.

guint32 unref_func;

String pointing to a function which can be called to decrease the reference count for an instance of this object type.

guint32 set_value_func;

String pointing to a function which can be called to convert a pointer of this object to a GValue

guint32 get_value_func;

String pointing to a function which can be called to convert extract a pointer to this object from a GValue

guint32 reserved3;

guint32 reserved4;

guint16 interfaces[];

An array of indices of directory entries for the implemented interfaces.

FieldBlob fields[];

Describes the fields.

PropertyBlob properties[];

Describes the properties.

FunctionBlob methods[];

Describes the methods, constructors, setters and getters.

SignalBlob signals[];

Describes the signals.

VFuncBlob vfuncs[];

Describes the virtual functions.

ConstantBlob constants[];

Describes the constants.

InterfaceBlob

typedef struct {
  guint16 blob_type;
  guint16 deprecated   : 1;
  guint16 reserved     :15;
  guint32 name;

  guint32 gtype_name;
  guint32 gtype_init;
  guint16 gtype_struct;

  guint16 n_prerequisites;
  guint16 n_properties;
  guint16 n_methods;
  guint16 n_signals;
  guint16 n_vfuncs;
  guint16 n_constants;

  guint16 padding;

  guint32 reserved2;
  guint32 reserved3;

  guint16 prerequisites[];

#if 0
  /* variable-length parts of the blob */
  PropertyBlob        properties[];
  FunctionBlob        methods[];
  SignalBlob          signals[];
  VFuncBlob           vfuncs[];
  ConstantBlob        constants[];
#endif
} InterfaceBlob;

guint16 blob_type;

guint16 deprecated : 1;

guint16 reserved :15;

guint32 name;

guint32 gtype_name;

guint32 gtype_init;

guint16 gtype_struct;

Name of the interface "class" C structure

guint16 n_prerequisites;

Number of prerequisites

guint16 n_properties;

Number of properties

guint16 n_methods;

Number of methods

guint16 n_signals;

Number of signals

guint16 n_vfuncs;

Number of virtual functions

guint16 n_constants;

The lengths of the arrays. Up to 16bits of padding may be inserted between the arrays to ensure that they start on a 32bit boundary.

guint16 padding;

guint32 reserved2;

guint32 reserved3;

guint16 prerequisites[];

An array of indices of directory entries for required interfaces.

PropertyBlob properties[];

Describes the properties.

FunctionBlob methods[];

Describes the methods, constructors, setters and getters.

SignalBlob signals[];

Describes the signals.

VFuncBlob vfuncs[];

Describes the virtual functions.

ConstantBlob constants[];

Describes the constants.

ConstantBlob

typedef struct {
  guint16        blob_type;
  guint16        deprecated   : 1;
  guint16        reserved     :15;
  guint32        name;

  SimpleTypeBlob type;

  guint32        size;
  guint32        offset;

  guint32        reserved2;
} ConstantBlob;

guint16 blob_type;

guint16 deprecated : 1;

guint16 reserved :15;

guint32 name;

SimpleTypeBlob type;

The type of the value. In most cases this should be a numeric type or string.

guint32 size;

The size of the value in bytes.

guint32 offset;

The offset of the value in the typelib.

guint32 reserved2;


AttributeBlob

typedef struct {
  guint32 offset;
  guint32 name;
  guint32 value;
} AttributeBlob;

guint32 offset;

The offset of the typelib entry to which this attribute refers. Attributes are kept sorted by offset, so that the attributes of an entry can be found by a binary search.

guint32 name;

The name of the attribute, a string.

guint32 value;

The value of the attribute (also a string)

g_typelib_get_dir_entry ()

DirEntry *          g_typelib_get_dir_entry             (GITypelib *typelib,
                                                         guint16 index);

g_typelib_check_sanity ()

void                g_typelib_check_sanity              (void);

g_typelib_get_string()

#define             g_typelib_get_string(typelib,offset)

G_TYPELIB_ERROR

#define G_TYPELIB_ERROR (g_typelib_error_quark ())

g_typelib_validate ()

gboolean            g_typelib_validate                  (GITypelib *typelib,
                                                         GError **error);

BLOB_IS_REGISTERED_TYPE()

#define             BLOB_IS_REGISTERED_TYPE(blob)
0707010007ffe2000081a40000000000000000000000014f83d2e700001440000000b600010002ffffffffffffffff0000002f00000000root/usr/local/share/gtk-doc/html/gi/style.css.synopsis, .classsynopsis { /* tango:aluminium 1/2 */ background: #eeeeec; border: solid 1px #d3d7cf; padding: 0.5em; } .programlisting { /* tango:sky blue 0/1 */ background: #e6f3ff; border: solid 1px #729fcf; padding: 0.5em; } .variablelist { padding: 4px; margin-left: 3em; } .variablelist td:first-child { vertical-align: top; } @media screen { sup a.footnote { position: relative; top: 0em ! important; } /* this is needed so that the local anchors are displayed below the naviagtion */ div.footnote a[name], div.refnamediv a[name], div.refsect1 a[name], div.refsect2 a[name], div.index a[name], div.glossary a[name], div.sect1 a[name] { display: inline-block; position: relative; top:-5em; } /* this seems to be a bug in the xsl style sheets when generating indexes */ div.index div.index { top: 0em; } /* make space for the fixed navigation bar and add space at the bottom so that * link targets appear somewhat close to top */ body { padding-top: 3.2em; padding-bottom: 20em; } /* style and size the navigation bar */ table.navigation#top { position: fixed; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; z-index: 10; } .navigation a, .navigation a:visited { /* tango:scarlet red 3 */ color: #a40000; } .navigation a:hover { /* tango:scarlet red 1 */ color: #ef2929; } td.shortcuts { /* tango:scarlet red 1 */ color: #ef2929; font-size: 80%; white-space: nowrap; } } @media print { table.navigation { visibility: collapse; display: none; } div.titlepage table.navigation { visibility: visible; display: table; /* tango:scarlet red 0/1 */ background: #ffe6e6; border: solid 1px #ef2929; margin-top: 0; margin-bottom: 0; top: 0; left: 0; height: 3em; } } .navigation .title { font-size: 200%; } div.gallery-float { float: left; padding: 10px; } div.gallery-float img { border-style: none; } div.gallery-spacer { clear: both; } a, a:visited { text-decoration: none; /* tango:sky blue 2 */ color: #3465a4; } a:hover { text-decoration: underline; /* tango:sky blue 1 */ color: #729fcf; } div.table table { border-collapse: collapse; border-spacing: 0px; /* tango:aluminium 3 */ border: solid 1px #babdb6; } div.table table td, div.table table th { /* tango:aluminium 3 */ border: solid 1px #babdb6; padding: 3px; vertical-align: top; } div.table table th { /* tango:aluminium 2 */ background-color: #d3d7cf; } hr { /* tango:aluminium 3 */ color: #babdb6; background: #babdb6; border: none 0px; height: 1px; clear: both; } .footer { padding-top: 3.5em; /* tango:aluminium 3 */ color: #babdb6; text-align: center; font-size: 80%; } .warning { /* tango:orange 0/1 */ background: #ffeed9; border-color: #ffb04f; } .note { /* tango:chameleon 0/0.5 */ background: #d8ffb2; border-color: #abf562; } .note, .warning { padding: 0.5em; border-width: 1px; border-style: solid; } .note h3, .warning h3 { margin-top: 0.0em } .note p, .warning p { margin-bottom: 0.0em } /* blob links */ h2 .extralinks, h3 .extralinks { float: right; /* tango:aluminium 3 */ color: #babdb6; font-size: 80%; font-weight: normal; } .annotation { /* tango:aluminium 5 */ color: #555753; font-size: 80%; font-weight: normal; } /* code listings */ .listing_code .programlisting .cbracket { color: #a40000; } /* tango: scarlet red 3 */ .listing_code .programlisting .comment { color: #a1a39d; } /* tango: aluminium 4 */ .listing_code .programlisting .function { color: #000000; font-weight: bold; } .listing_code .programlisting .function a { color: #11326b; font-weight: bold; } /* tango: sky blue 4 */ .listing_code .programlisting .keyword { color: #4e9a06; } /* tango: chameleon 3 */ .listing_code .programlisting .linenum { color: #babdb6; } /* tango: aluminium 3 */ .listing_code .programlisting .normal { color: #000000; } .listing_code .programlisting .number { color: #75507b; } /* tango: plum 2 */ .listing_code .programlisting .preproc { color: #204a87; } /* tango: sky blue 3 */ .listing_code .programlisting .string { color: #c17d11; } /* tango: chocolate 2 */ .listing_code .programlisting .type { color: #000000; } .listing_code .programlisting .type a { color: #11326b; } /* tango: sky blue 4 */ .listing_code .programlisting .symbol { color: #ce5c00; } /* tango: orange 3 */ .listing_frame { /* tango:sky blue 1 */ border: solid 1px #729fcf; padding: 0px; } .listing_lines, .listing_code { margin-top: 0px; margin-bottom: 0px; padding: 0.5em; } .listing_lines { /* tango:sky blue 0.5 */ background: #a6c5e3; /* tango:aluminium 6 */ color: #2e3436; } .listing_code { /* tango:sky blue 0 */ background: #e6f3ff; } .listing_code .programlisting { /* override from previous */ border: none 0px; padding: 0px; } .listing_lines pre, .listing_code pre { margin: 0px; } 0707010007ffdf000081a40000000000000000000000014f83d2e6000001cb000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/gtk-doc/html/gi/left.pngPNG  IHDRw=bKGD pHYs  ~tIME1&[(XIDATx!OPE*ID%~ꊯ"p'ŏ`sܖrKf hmiIz}ܯI.p\`x l?l[,Hk<#c%\AUx[S7n6rzEs1j@NL$ݤi0 5/}\EKIo͓$a0jdFbkIAh>WlC'?tk;|/t*INZ^`y4Nr]׮ J<ڐt`X1@p䀸dZ')hK $V?%]+LsgUK"w53OIENDB`0707010007ffbe000081a40000000000000000000000014f83d2e600009a08000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/gtk-doc/html/gi/gi-GIBaseInfo.html GIBaseInfo

GIBaseInfo

GIBaseInfo — Base struct for all GITypelib structs

Synopsis

enum                GIInfoType;
const gchar *       g_info_type_to_string               (GIInfoType type);
                    GIAttributeIter;
typedef             GIBaseInfo;
GIBaseInfo *        g_base_info_ref                     (GIBaseInfo *info);
void                g_base_info_unref                   (GIBaseInfo *info);
GIInfoType          g_base_info_get_type                (GIBaseInfo *info);
const gchar *       g_base_info_get_name                (GIBaseInfo *info);
const gchar *       g_base_info_get_namespace           (GIBaseInfo *info);
gboolean            g_base_info_is_deprecated           (GIBaseInfo *info);
const gchar *       g_base_info_get_attribute           (GIBaseInfo *info,
                                                         const gchar *name);
gboolean            g_base_info_iterate_attributes      (GIBaseInfo *info,
                                                         GIAttributeIter *iterator,
                                                         char **name,
                                                         char **value);
GIBaseInfo *        g_base_info_get_container           (GIBaseInfo *info);
GITypelib *         g_base_info_get_typelib             (GIBaseInfo *info);
gboolean            g_base_info_equal                   (GIBaseInfo *info1,
                                                         GIBaseInfo *info2);

Description

GIBaseInfo is the common base struct of all other *Info structs accessible through the GIRepository API. All other structs can be casted to a GIBaseInfo, for instance:

Example 1. Casting a GIFunctionInfo to GIBaseInfo

1
2
GIFunctionInfo *function_info = ...;
GIBaseInfo *info = (GIBaseInfo*)function_info;


Most GIRepository APIs returning a GIBaseInfo is actually creating a new struct, in other words, g_base_info_unref() has to be called when done accessing the data. GIBaseInfos are normally accessed by calling either g_irepository_find_by_name(), g_irepository_find_by_gtype() or g_irepository_get_info().

Example 2. Getting the Button of the Gtk typelib

1
2
3
GIBaseInfo *button_info = g_irepository_find_by_name(NULL, "Gtk", "Button");
... use button_info ...
g_base_info_unref(button_info);


Struct hierarchy

  GIBaseInfo
   +----GIArgInfo
   +----GICallableInfo
   +----GIConstantInfo
   +----GIFieldInfo
   +----GIPropertyInfo
   +----GIRegisteredTypeInfo
   +----GITypeInfo

Details

enum GIInfoType

typedef enum {
  GI_INFO_TYPE_INVALID,
  GI_INFO_TYPE_FUNCTION,
  GI_INFO_TYPE_CALLBACK,
  GI_INFO_TYPE_STRUCT,
  GI_INFO_TYPE_BOXED,
  GI_INFO_TYPE_ENUM,         /*  5 */
  GI_INFO_TYPE_FLAGS,
  GI_INFO_TYPE_OBJECT,
  GI_INFO_TYPE_INTERFACE,
  GI_INFO_TYPE_CONSTANT,
  GI_INFO_TYPE_INVALID_0,    /* 10 */  /** DELETED - used to be ERROR_DOMAIN **/
  GI_INFO_TYPE_UNION,
  GI_INFO_TYPE_VALUE,
  GI_INFO_TYPE_SIGNAL,
  GI_INFO_TYPE_VFUNC,
  GI_INFO_TYPE_PROPERTY,     /* 15 */
  GI_INFO_TYPE_FIELD,
  GI_INFO_TYPE_ARG,
  GI_INFO_TYPE_TYPE,
  GI_INFO_TYPE_UNRESOLVED
} GIInfoType;

The type of a GIBaseInfo struct.

GI_INFO_TYPE_INVALID

invalid type

GI_INFO_TYPE_FUNCTION

function, see GIFunctionInfo

GI_INFO_TYPE_CALLBACK

callback, see GIFunctionInfo

GI_INFO_TYPE_STRUCT

struct, see GIStructInfo

GI_INFO_TYPE_BOXED

boxed, see GIStructInfo or GIUnionInfo

GI_INFO_TYPE_ENUM

enum, see GIEnumInfo

GI_INFO_TYPE_FLAGS

flags, see GIEnumInfo

GI_INFO_TYPE_OBJECT

object, see GIObjectInfo

GI_INFO_TYPE_INTERFACE

interface, see GIInterfaceInfo

GI_INFO_TYPE_CONSTANT

contant, see GIConstantInfo

GI_INFO_TYPE_INVALID_0

GI_INFO_TYPE_UNION

union, see GIUnionInfo

GI_INFO_TYPE_VALUE

enum value, see GIValueInfo

GI_INFO_TYPE_SIGNAL

signal, see GISignalInfo

GI_INFO_TYPE_VFUNC

virtual function, see GIVFuncInfo

GI_INFO_TYPE_PROPERTY

GObject property, see GIPropertyInfo

GI_INFO_TYPE_FIELD

struct or union field, see GIFieldInfo

GI_INFO_TYPE_ARG

argument of a function or callback, see GIArgInfo

GI_INFO_TYPE_TYPE

type information, see GITypeInfo

GI_INFO_TYPE_UNRESOLVED

unresolved type, a type which is not present in the typelib, or any of its dependencies.

g_info_type_to_string ()

const gchar *       g_info_type_to_string               (GIInfoType type);

Obtain a string representation of type

type :

the info type

Returns :

the string

GIAttributeIter

typedef struct {
} GIAttributeIter;

An opaque structure used to iterate over attributes in a GIBaseInfo struct.


GIBaseInfo

typedef struct _GIBaseInfoStub GIBaseInfo;

g_base_info_ref ()

GIBaseInfo *        g_base_info_ref                     (GIBaseInfo *info);

Increases the reference count of info.

info :

a GIBaseInfo

Returns :

the same info.

g_base_info_unref ()

void                g_base_info_unref                   (GIBaseInfo *info);

Decreases the reference count of info. When its reference count drops to 0, the info is freed.

info :

a GIBaseInfo

g_base_info_get_type ()

GIInfoType          g_base_info_get_type                (GIBaseInfo *info);

Obtain the info type of the GIBaseInfo.

info :

a GIBaseInfo

Returns :

the info type of info

g_base_info_get_name ()

const gchar *       g_base_info_get_name                (GIBaseInfo *info);

Obtain the name of the info. What the name represents depends on the GIInfoType of the info. For instance for GIFunctionInfo it is the name of the function.

info :

a GIBaseInfo

Returns :

the name of info or NULL if it lacks a name.

g_base_info_get_namespace ()

const gchar *       g_base_info_get_namespace           (GIBaseInfo *info);

Obtain the namespace of info.

info :

a GIBaseInfo

Returns :

the namespace

g_base_info_is_deprecated ()

gboolean            g_base_info_is_deprecated           (GIBaseInfo *info);

Obtain whether the info is represents a metadata which is deprecated or not.

info :

a GIBaseInfo

Returns :

TRUE if deprecated

g_base_info_get_attribute ()

const gchar *       g_base_info_get_attribute           (GIBaseInfo *info,
                                                         const gchar *name);

Retrieve an arbitrary attribute associated with this node.

info :

a GIBaseInfo

name :

a freeform string naming an attribute

Returns :

The value of the attribute, or NULL if no such attribute exists

g_base_info_iterate_attributes ()

gboolean            g_base_info_iterate_attributes      (GIBaseInfo *info,
                                                         GIAttributeIter *iterator,
                                                         char **name,
                                                         char **value);

Iterate over all attributes associated with this node. The iterator structure is typically stack allocated, and must have its first member initialized to NULL.

Both the name and value should be treated as constants and must not be freed.

Example 3. Iterating over attributes

1
2
3
4
5
6
7
8
9
10
11
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);
    }
}


info :

a GIBaseInfo

iterator :

a GIAttributeIter structure, must be initialized; see below

name :

Returned name, must not be freed. [out][transfer none]

value :

Returned name, must not be freed. [out][transfer none]

Returns :

TRUE if there are more attributes

g_base_info_get_container ()

GIBaseInfo *        g_base_info_get_container           (GIBaseInfo *info);

Obtain the container of the info. The container is the parent GIBaseInfo. For instance, the parent of a GIFunctionInfo is an GIObjectInfo or GIInterfaceInfo.

info :

a GIBaseInfo

Returns :

the container. [transfer none]

g_base_info_get_typelib ()

GITypelib *         g_base_info_get_typelib             (GIBaseInfo *info);

Obtain the typelib this info belongs to

info :

a GIBaseInfo

Returns :

the typelib. [transfer none]

g_base_info_equal ()

gboolean            g_base_info_equal                   (GIBaseInfo *info1,
                                                         GIBaseInfo *info2);

Compare two GIBaseInfo.

Using pointer comparison is not practical since many functions return different instances of GIBaseInfo that refers to the same part of the TypeLib; use this function instead to do GIBaseInfo comparisons.

info1 :

a GIBaseInfo

info2 :

a GIBaseInfo

Returns :

TRUE if and only if info1 equals info2.
0707010007ffc2000081a40000000000000000000000014f83d2e60000439a000000b600010002ffffffffffffffff0000003900000000root/usr/local/share/gtk-doc/html/gi/gi-GIFieldInfo.html GIFieldInfo

GIFieldInfo

GIFieldInfo — Struct representing a struct or union field

Synopsis

#define             GI_IS_FIELD_INFO                    (info)
typedef             GIFieldInfo;
enum                GIFieldInfoFlags;
GIFieldInfoFlags    g_field_info_get_flags              (GIFieldInfo *info);
gint                g_field_info_get_size               (GIFieldInfo *info);
gint                g_field_info_get_offset             (GIFieldInfo *info);
GITypeInfo *        g_field_info_get_type               (GIFieldInfo *info);
gboolean            g_field_info_get_field              (GIFieldInfo *field_info,
                                                         gpointer mem,
                                                         GIArgument *value);
gboolean            g_field_info_set_field              (GIFieldInfo *field_info,
                                                         gpointer mem,
                                                         const GIArgument *value);

Description

A GIFieldInfo struct represents a field of a struct (see GIStructInfo), union (see GIUnionInfo) or an object (see GIObjectInfo). The GIFieldInfo is fetched by calling g_struct_info_get_field(), g_union_info_get_field() or g_object_info_get_value(). A field has a size, type and a struct offset asssociated and a set of flags, which is currently GI_FIELD_IS_READABLE or GI_FIELD_IS_WRITABLE.

Struct hierarchy

  GIBaseInfo
   +----GIFieldInfo

Details

GI_IS_FIELD_INFO()

#define             GI_IS_FIELD_INFO(info)

GIFieldInfo

typedef GIBaseInfo GIFieldInfo;

Represents a field of a GIStructInfo or a GIUnionInfo.


enum GIFieldInfoFlags

typedef enum {
  GI_FIELD_IS_READABLE = 1 << 0,
  GI_FIELD_IS_WRITABLE = 1 << 1
} GIFieldInfoFlags;

Flags for a GIFieldInfo.

GI_FIELD_IS_READABLE

field is readable.

GI_FIELD_IS_WRITABLE

field is writable.

g_field_info_get_flags ()

GIFieldInfoFlags    g_field_info_get_flags              (GIFieldInfo *info);

Obtain the flags for this GIFieldInfo. See GIFieldInfoFlags for possible flag values.

info :

a GIFieldInfo

Returns :

the flags

g_field_info_get_size ()

gint                g_field_info_get_size               (GIFieldInfo *info);

Obtain the size in bits of the field member, this is how much space you need to allocate to store the field.

info :

a GIFieldInfo

Returns :

the field size

g_field_info_get_offset ()

gint                g_field_info_get_offset             (GIFieldInfo *info);

Obtain the offset in bits of the field member, this is relative to the beginning of the struct or union.

info :

a GIFieldInfo

Returns :

the field offset

g_field_info_get_type ()

GITypeInfo *        g_field_info_get_type               (GIFieldInfo *info);

Obtain the type of a field as a GITypeInfo.

info :

a GIFieldInfo

Returns :

the GITypeInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_field_info_get_field ()

gboolean            g_field_info_get_field              (GIFieldInfo *field_info,
                                                         gpointer mem,
                                                         GIArgument *value);

Reads a field identified by a GFieldInfo from a C structure or union. This only handles fields of simple C types. It will fail for a field of a composite type like a nested structure or union even if that is actually readable.

field_info :

a GIFieldInfo

mem :

pointer to a block of memory representing a C structure or union

value :

a GIArgument into which to store the value retrieved

Returns :

TRUE if reading the field succeeded, otherwise FALSE

g_field_info_set_field ()

gboolean            g_field_info_set_field              (GIFieldInfo *field_info,
                                                         gpointer mem,
                                                         const GIArgument *value);

Writes a field identified by a GFieldInfo to a C structure or union. This only handles fields of simple C types. It will fail for a field of a composite type like a nested structure or union even if that is actually writable. Note also that that it will refuse to write fields where memory management would by required. A field with a type such as 'char *' must be set with a setter function.

field_info :

a GIFieldInfo

mem :

pointer to a block of memory representing a C structure or union

value :

a GIArgument holding the value to store

Returns :

TRUE if writing the field succeeded, otherwise FALSE
0707010007ffdc000081a40000000000000000000000014f83d2e60000028e000000b600010002ffffffffffffffff0000002e00000000root/usr/local/share/gtk-doc/html/gi/home.pngPNG  IHDRw=bKGD pHYs  ~tIME1KvIDATxՕkq?rCp ~CnpCAAJ .B-\'G]:ܠC -(8 Ԁ!fDғklbRoyxwpðIJ<of_-@RHf֟t^ښ$Q|pgv;X^^&s(bwwZF9&3඙ ^IRZUE.0Z]]U PYM8HGIekqqҀ! $۬3n e{-/seeeÌXOͷ$8==USQRR'9-s+B^ Cەs+%<7W :2IENDB`0707010007ffc8000081a40000000000000000000000014f83d2e6000022bd000000b600010002ffffffffffffffff0000003a00000000root/usr/local/share/gtk-doc/html/gi/gi-GISignalInfo.html GISignalInfo

GISignalInfo

GISignalInfo — Struct representing a signal

Description

GISignalInfo represents a signal. It's a sub-struct of GICallableInfo and contains a set of flags and a class closure.

See GICallableInfo for information on how to retreive arguments and other metadata from the signal.

Struct hierarchy

  GIBaseInfo
   +----GICallableInfo
         +----GIFunctionInfo
         +----GISignalInfo
         +----GIVFuncInfo

Details

GI_IS_SIGNAL_INFO()

#define             GI_IS_SIGNAL_INFO(info)

GISignalInfo

typedef GIBaseInfo GISignalInfo;

Represents a signal.


g_signal_info_get_flags ()

GSignalFlags        g_signal_info_get_flags             (GISignalInfo *info);

Obtain the flags for this signal info. See GSignalFlags for more information about possible flag values.

info :

a GISignalInfo

Returns :

the flags

g_signal_info_get_class_closure ()

GIVFuncInfo *       g_signal_info_get_class_closure     (GISignalInfo *info);

Obtain the class closure for this signal if one is set. The class closure is a virtual function on the type that the signal belongs to. If the signal lacks a closure NULL will be returned.

info :

a GISignalInfo

Returns :

the class closure or NULL. [transfer full]

g_signal_info_true_stops_emit ()

gboolean            g_signal_info_true_stops_emit       (GISignalInfo *info);

Obtain if the returning true in the signal handler will stop the emission of the signal.

info :

a GISignalInfo

Returns :

TRUE if returning true stops the signal emission
0707010007ffd2000081a40000000000000000000000014f83d2e600004093000000b600010002ffffffffffffffff0000003400000000root/usr/local/share/gtk-doc/html/gi/gi-girffi.html girffi

girffi

girffi

Synopsis

void                (*GIFFIClosureCallback)             (ffi_cif *Param1,
                                                         void *Param2,
                                                         void **Param3,
                                                         void *Param4);
struct              GIFunctionInvoker;
void                gi_cclosure_marshal_generic         (GClosure *closure,
                                                         GValue *return_gvalue,
                                                         guint n_param_values,
                                                         const GValue *param_values,
                                                         gpointer invocation_hint,
                                                         gpointer marshal_data);
ffi_type *          g_type_info_get_ffi_type            (GITypeInfo *info);
gboolean            g_function_info_prep_invoker        (GIFunctionInfo *info,
                                                         GIFunctionInvoker *invoker,
                                                         GError **error);
void                g_function_invoker_destroy          (GIFunctionInvoker *invoker);
ffi_closure *       g_callable_info_prepare_closure     (GICallableInfo *callable_info,
                                                         ffi_cif *cif,
                                                         GIFFIClosureCallback callback,
                                                         gpointer user_data);
void                g_callable_info_free_closure        (GICallableInfo *callable_info,
                                                         ffi_closure *closure);

Description

Details

GIFFIClosureCallback ()

void                (*GIFFIClosureCallback)             (ffi_cif *Param1,
                                                         void *Param2,
                                                         void **Param3,
                                                         void *Param4);

struct GIFunctionInvoker

struct GIFunctionInvoker {
  ffi_cif cif;
  gpointer native_address;
};

ffi_cif cif;

the cif

gpointer native_address;

the native adress

gi_cclosure_marshal_generic ()

void                gi_cclosure_marshal_generic         (GClosure *closure,
                                                         GValue *return_gvalue,
                                                         guint n_param_values,
                                                         const GValue *param_values,
                                                         gpointer invocation_hint,
                                                         gpointer marshal_data);

g_type_info_get_ffi_type ()

ffi_type *          g_type_info_get_ffi_type            (GITypeInfo *info);

info :

A GITypeInfo

Returns :

A ffi_type corresponding to the platform default C ABI for info.

g_function_info_prep_invoker ()

gboolean            g_function_info_prep_invoker        (GIFunctionInfo *info,
                                                         GIFunctionInvoker *invoker,
                                                         GError **error);

Initialize the caller-allocated invoker structure with a cache of information needed to invoke the C function corresponding to info with the platform's default ABI.

A primary intent of this function is that a dynamic structure allocated by a language binding could contain a GIFunctionInvoker structure inside the binding's function mapping.

info :

A GIFunctionInfo

invoker :

Output invoker structure

error :

A GError

Returns :

TRUE on success, FALSE otherwise with error set.

g_function_invoker_destroy ()

void                g_function_invoker_destroy          (GIFunctionInvoker *invoker);

g_callable_info_prepare_closure ()

ffi_closure *       g_callable_info_prepare_closure     (GICallableInfo *callable_info,
                                                         ffi_cif *cif,
                                                         GIFFIClosureCallback callback,
                                                         gpointer user_data);

Prepares a callback for ffi invocation.

callable_info :

a callable info from a typelib

cif :

a ffi_cif structure

callback :

the ffi callback

user_data :

data to be passed into the callback

Returns :

the ffi_closure or NULL on error. The return value should be freed by calling g_callable_info_free_closure().

g_callable_info_free_closure ()

void                g_callable_info_free_closure        (GICallableInfo *callable_info,
                                                         ffi_closure *closure);

Frees a ffi_closure returned from g_callable_info_prepare_closure()

callable_info :

a callable info from a typelib

closure :

ffi closure
0707010007ffbf000081a40000000000000000000000014f83d2e6000063d4000000b600010002ffffffffffffffff0000003c00000000root/usr/local/share/gtk-doc/html/gi/gi-GICallableInfo.html GICallableInfo

GICallableInfo

GICallableInfo — Struct representing a callable

Description

GICallableInfo represents an entity which is callable. Currently a function (GIFunctionInfo), virtual function, (GIVFuncInfo) or callback (GICallbackInfo).

A callable has a list of arguments (GIArgInfo), a return type, direction and a flag which decides if it returns null.

Struct hierarchy

  GIBaseInfo
   +----GICallableInfo
         +----GIFunctionInfo
         +----GISignalInfo
         +----GIVFuncInfo

Details

GI_IS_CALLABLE_INFO()

#define             GI_IS_CALLABLE_INFO(info)

GICallableInfo

typedef GIBaseInfo GICallableInfo;

Represents a callable, either GIFunctionInfo, GICallbackInfo or GIVFuncInfo.


g_callable_info_get_return_type ()

GITypeInfo *        g_callable_info_get_return_type     (GICallableInfo *info);

Obtain the return type of a callable item as a GITypeInfo.

info :

a GICallableInfo

Returns :

the GITypeInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_callable_info_get_caller_owns ()

GITransfer          g_callable_info_get_caller_owns     (GICallableInfo *info);

See whether the caller owns the return value of this callable. GITransfer contains a list of possible transfer values.

info :

a GICallableInfo

Returns :

TRUE if the caller owns the return value, FALSE otherwise.

g_callable_info_may_return_null ()

gboolean            g_callable_info_may_return_null     (GICallableInfo *info);

See if a callable could return NULL.

info :

a GICallableInfo

Returns :

TRUE if callable could return NULL

g_callable_info_get_return_attribute ()

const gchar *       g_callable_info_get_return_attribute
                                                        (GICallableInfo *info,
                                                         const gchar *name);

Retrieve an arbitrary attribute associated with the return value.

info :

a GICallableInfo

name :

a freeform string naming an attribute

Returns :

The value of the attribute, or NULL if no such attribute exists

g_callable_info_iterate_return_attributes ()

gboolean            g_callable_info_iterate_return_attributes
                                                        (GICallableInfo *info,
                                                         GIAttributeIter *iterator,
                                                         char **name,
                                                         char **value);

Iterate over all attributes associated with the return value. The iterator structure is typically stack allocated, and must have its first member initialized to NULL.

Both the name and value should be treated as constants and must not be freed.

See g_base_info_iterate_attributes() for an example of how to use a similar API.

info :

a GICallableInfo

iterator :

a GIAttributeIter structure, must be initialized; see below

name :

Returned name, must not be freed. [out][transfer none]

value :

Returned name, must not be freed. [out][transfer none]

Returns :

TRUE if there are more attributes

g_callable_info_get_n_args ()

gint                g_callable_info_get_n_args          (GICallableInfo *info);

Obtain the number of arguments (both IN and OUT) for this callable.

info :

a GICallableInfo

Returns :

The number of arguments this callable expects.

g_callable_info_get_arg ()

GIArgInfo *         g_callable_info_get_arg             (GICallableInfo *info,
                                                         gint n);

Obtain information about a particular argument of this callable.

info :

a GICallableInfo

n :

the argument index to fetch

Returns :

the GIArgInfo. Free it with g_base_info_unref() when done. [transfer full]

g_callable_info_load_arg ()

void                g_callable_info_load_arg            (GICallableInfo *info,
                                                         gint n,
                                                         GIArgInfo *arg);

Obtain information about a particular argument of this callable; this function is a variant of g_callable_info_get_arg() designed for stack allocation.

The initialized arg must not be referenced after info is deallocated.

info :

a GICallableInfo

n :

the argument index to fetch

arg :

Initialize with argument number n. [out caller-allocates]

g_callable_info_load_return_type ()

void                g_callable_info_load_return_type    (GICallableInfo *info,
                                                         GITypeInfo *type);

Obtain information about a return value of callable; this function is a variant of g_callable_info_get_return_type() designed for stack allocation.

The initialized type must not be referenced after info is deallocated.

info :

a GICallableInfo

type :

Initialized with return type of info. [out caller-allocates]
0707010007ffca000081a40000000000000000000000014f83d2e60000674b000000b600010002ffffffffffffffff0000003800000000root/usr/local/share/gtk-doc/html/gi/gi-GITypeInfo.html GITypeInfo

GITypeInfo

GITypeInfo — Struct representing a type

Description

GITypeInfo represents a type. You can retrieve a type info from an argument (see GIArgInfo), a functions return value (see GIFunctionInfo), a field (see GIFieldInfo), a property (see GIPropertyInfo), a constant (see GIConstantInfo) or for a union discriminator (see GIUnionInfo).

A type can either be a of a basic type which is a standard C primitive type or an interface type. For interface types you need to call g_type_info_get_interface() to get a reference to the base info for that interface.

Struct hierarchy

  GIBaseInfo
   +----GITypeInfo

Details

GI_IS_TYPE_INFO()

#define             GI_IS_TYPE_INFO(info)

enum GIArrayType

typedef enum {
  GI_ARRAY_TYPE_C,
  GI_ARRAY_TYPE_ARRAY,
  GI_ARRAY_TYPE_PTR_ARRAY,
  GI_ARRAY_TYPE_BYTE_ARRAY
} GIArrayType;

The type of array in a GITypeInfo.

GI_ARRAY_TYPE_C

a C array, char[] for instance

GI_ARRAY_TYPE_ARRAY

a GArray array

GI_ARRAY_TYPE_PTR_ARRAY

a GPtrArray array

GI_ARRAY_TYPE_BYTE_ARRAY

a GByteArray array

GITypeInfo

typedef GIBaseInfo GITypeInfo;

Represents type information, direction, transfer etc.


enum GITypeTag

typedef enum {
  /* Basic types */
  GI_TYPE_TAG_VOID      =  0,
  GI_TYPE_TAG_BOOLEAN   =  1,
  GI_TYPE_TAG_INT8      =  2,
  GI_TYPE_TAG_UINT8     =  3,
  GI_TYPE_TAG_INT16     =  4,
  GI_TYPE_TAG_UINT16    =  5,
  GI_TYPE_TAG_INT32     =  6,
  GI_TYPE_TAG_UINT32    =  7,
  GI_TYPE_TAG_INT64     =  8,
  GI_TYPE_TAG_UINT64    =  9,
  GI_TYPE_TAG_FLOAT     = 10,
  GI_TYPE_TAG_DOUBLE    = 11,
  GI_TYPE_TAG_GTYPE     = 12,
  GI_TYPE_TAG_UTF8      = 13,
  GI_TYPE_TAG_FILENAME  = 14,
  /* Non-basic types; compare with G_TYPE_TAG_IS_BASIC */
  GI_TYPE_TAG_ARRAY     = 15,
  GI_TYPE_TAG_INTERFACE = 16,
  GI_TYPE_TAG_GLIST     = 17,
  GI_TYPE_TAG_GSLIST    = 18,
  GI_TYPE_TAG_GHASH     = 19,
  GI_TYPE_TAG_ERROR     = 20,
  /* Another basic type */
  GI_TYPE_TAG_UNICHAR   = 21
  /* Note - there is only room currently for 32 tags.
   * See docs/typelib-format.txt SimpleTypeBlob definition */
} GITypeTag;

The type tag of a GITypeInfo.

GI_TYPE_TAG_VOID

void

GI_TYPE_TAG_BOOLEAN

boolean

GI_TYPE_TAG_INT8

8-bit signed integer

GI_TYPE_TAG_UINT8

8-bit unsigned integer

GI_TYPE_TAG_INT16

16-bit signed integer

GI_TYPE_TAG_UINT16

16-bit unsigned integer

GI_TYPE_TAG_INT32

32-bit signed integer

GI_TYPE_TAG_UINT32

32-bit unsigned integer

GI_TYPE_TAG_INT64

64-bit signed integer

GI_TYPE_TAG_UINT64

64-bit unsigned integer

GI_TYPE_TAG_FLOAT

float

GI_TYPE_TAG_DOUBLE

double floating point

GI_TYPE_TAG_GTYPE

a GType

GI_TYPE_TAG_UTF8

a UTF-8 encoded string

GI_TYPE_TAG_FILENAME

a filename, encoded in the same encoding as the native filesystem is using.

GI_TYPE_TAG_ARRAY

an array

GI_TYPE_TAG_INTERFACE

an extended interface object

GI_TYPE_TAG_GLIST

a GList

GI_TYPE_TAG_GSLIST

a GSList

GI_TYPE_TAG_GHASH

a GHashTable

GI_TYPE_TAG_ERROR

a GError

GI_TYPE_TAG_UNICHAR

Unicode character

G_TYPE_TAG_IS_BASIC()

#define G_TYPE_TAG_IS_BASIC(tag) (tag < GI_TYPE_TAG_ARRAY || tag == GI_TYPE_TAG_UNICHAR)

g_type_tag_to_string ()

const gchar *       g_type_tag_to_string                (GITypeTag type);

Obtain a string representation of type

type :

the type_tag

Returns :

the string

g_type_info_is_pointer ()

gboolean            g_type_info_is_pointer              (GITypeInfo *info);

Obtain if the type is passed as a reference.

info :

a GITypeInfo

Returns :

TRUE if it is a pointer

g_type_info_get_tag ()

GITypeTag           g_type_info_get_tag                 (GITypeInfo *info);

Obtain the type tag for the type. See GITypeTag for a list of type tags.

info :

a GITypeInfo

Returns :

the type tag

g_type_info_get_param_type ()

GITypeInfo *        g_type_info_get_param_type          (GITypeInfo *info,
                                                         gint n);

Obtain the parameter type n.

info :

a GITypeInfo

n :

index of the parameter

Returns :

the param type info. [transfer full]

g_type_info_get_interface ()

GIBaseInfo *        g_type_info_get_interface           (GITypeInfo *info);

For types which have GI_TYPE_TAG_INTERFACE such as GObjects and boxed values, this function returns full information about the referenced type. You can then inspect the type of the returned GIBaseInfo to further query whether it is a concrete GObject, a GInterface, a structure, etc. using g_base_info_get_type().

info :

a GITypeInfo

Returns :

the GIBaseInfo, or NULL. Free it with g_base_info_unref() when done. [transfer full]

g_type_info_get_array_length ()

gint                g_type_info_get_array_length        (GITypeInfo *info);

Obtain the array length of the type. The type tag must be a GI_TYPE_TAG_ARRAY or -1 will returned.

info :

a GITypeInfo

Returns :

the array length, or -1 if the type is not an array

g_type_info_get_array_fixed_size ()

gint                g_type_info_get_array_fixed_size    (GITypeInfo *info);

Obtain the fixed array size of the type. The type tag must be a GI_TYPE_TAG_ARRAY or -1 will returned.

info :

a GITypeInfo

Returns :

the size or -1 if it's not an array

g_type_info_is_zero_terminated ()

gboolean            g_type_info_is_zero_terminated      (GITypeInfo *info);

Obtain if the last element of the array is NULL. The type tag must be a GI_TYPE_TAG_ARRAY or FALSE will returned.

info :

a GITypeInfo

Returns :

TRUE if zero terminated

g_type_info_get_array_type ()

GIArrayType         g_type_info_get_array_type          (GITypeInfo *info);

Obtain the array type for this type. See GIArrayType for a list of possible values. If the type tag of this type is not array, -1 will be returned.

info :

a GITypeInfo

Returns :

the array type or -1
0707010007ffc5000081a40000000000000000000000014f83d2e6000101b9000000b600010002ffffffffffffffff0000003a00000000root/usr/local/share/gtk-doc/html/gi/gi-GIObjectInfo.html GIObjectInfo

GIObjectInfo

GIObjectInfo — Struct representing a GObject

Synopsis

#define             GI_IS_OBJECT_INFO                   (info)
typedef             GIObjectInfo;
void *              (*GIObjectInfoGetValueFunction)     (const GValue *value);
void *              (*GIObjectInfoRefFunction)          (void *object);
void                (*GIObjectInfoSetValueFunction)     (GValue *value,
                                                         void *object);
void                (*GIObjectInfoUnrefFunction)        (void *object);
const gchar *       g_object_info_get_type_name         (GIObjectInfo *info);
const gchar *       g_object_info_get_type_init         (GIObjectInfo *info);
gboolean            g_object_info_get_abstract          (GIObjectInfo *info);
gboolean            g_object_info_get_fundamental       (GIObjectInfo *info);
GIObjectInfo *      g_object_info_get_parent            (GIObjectInfo *info);
gint                g_object_info_get_n_interfaces      (GIObjectInfo *info);
GIInterfaceInfo *   g_object_info_get_interface         (GIObjectInfo *info,
                                                         gint n);
gint                g_object_info_get_n_fields          (GIObjectInfo *info);
GIFieldInfo *       g_object_info_get_field             (GIObjectInfo *info,
                                                         gint n);
gint                g_object_info_get_n_properties      (GIObjectInfo *info);
GIPropertyInfo *    g_object_info_get_property          (GIObjectInfo *info,
                                                         gint n);
gint                g_object_info_get_n_methods         (GIObjectInfo *info);
GIFunctionInfo *    g_object_info_get_method            (GIObjectInfo *info,
                                                         gint n);
GIFunctionInfo *    g_object_info_find_method           (GIObjectInfo *info,
                                                         const gchar *name);
gint                g_object_info_get_n_signals         (GIObjectInfo *info);
GISignalInfo *      g_object_info_get_signal            (GIObjectInfo *info,
                                                         gint n);
gint                g_object_info_get_n_vfuncs          (GIObjectInfo *info);
GIVFuncInfo *       g_object_info_get_vfunc             (GIObjectInfo *info,
                                                         gint n);
gint                g_object_info_get_n_constants       (GIObjectInfo *info);
GIConstantInfo *    g_object_info_get_constant          (GIObjectInfo *info,
                                                         gint n);
GIStructInfo *      g_object_info_get_class_struct      (GIObjectInfo *info);
GIVFuncInfo *       g_object_info_find_vfunc            (GIObjectInfo *info,
                                                         const gchar *name);
const char *        g_object_info_get_unref_function    (GIObjectInfo *info);
GIObjectInfoUnrefFunction g_object_info_get_unref_function_pointer
                                                        (GIObjectInfo *info);
const char *        g_object_info_get_ref_function      (GIObjectInfo *info);
GIObjectInfoRefFunction g_object_info_get_ref_function_pointer
                                                        (GIObjectInfo *info);
const char *        g_object_info_get_set_value_function
                                                        (GIObjectInfo *info);
GIObjectInfoSetValueFunction g_object_info_get_set_value_function_pointer
                                                        (GIObjectInfo *info);
const char *        g_object_info_get_get_value_function
                                                        (GIObjectInfo *info);
GIObjectInfoGetValueFunction g_object_info_get_get_value_function_pointer
                                                        (GIObjectInfo *info);

Description

GIObjectInfo represents a GObject. This doesn't represent a specific instance of a GObject, instead this represent the object type (eg class).

A GObject has methods, fields, properties, signals, interfaces, constants and virtual functions.

Struct hierarchy

  GIBaseInfo
   +----GIRegisteredTypeInfo
         +----GIObjectInfo

Details

GI_IS_OBJECT_INFO()

#define             GI_IS_OBJECT_INFO(info)

GIObjectInfo

typedef GIBaseInfo GIObjectInfo;

Represents an object.


GIObjectInfoGetValueFunction ()

void *              (*GIObjectInfoGetValueFunction)     (const GValue *value);

Extract an object instance out of value

value :

a GValue

Returns :

the object instance. [transfer full]

GIObjectInfoRefFunction ()

void *              (*GIObjectInfoRefFunction)          (void *object);

Increases the reference count of an object instance.

object :

object instance pointer

Returns :

the object instance. [transfer full]

GIObjectInfoSetValueFunction ()

void                (*GIObjectInfoSetValueFunction)     (GValue *value,
                                                         void *object);

Update value and attach the object instance pointer object to it.

value :

a GValue

object :

object instance pointer

GIObjectInfoUnrefFunction ()

void                (*GIObjectInfoUnrefFunction)        (void *object);

Decreases the reference count of an object instance.

object :

object instance pointer

g_object_info_get_type_name ()

const gchar *       g_object_info_get_type_name         (GIObjectInfo *info);

Obtain the name of the objects class/type.

info :

a GIObjectInfo

Returns :

name of the objects type

g_object_info_get_type_init ()

const gchar *       g_object_info_get_type_init         (GIObjectInfo *info);

Obtain the function which when called will return the GType function for which this object type is registered.

info :

a GIObjectInfo

Returns :

the type init function

g_object_info_get_abstract ()

gboolean            g_object_info_get_abstract          (GIObjectInfo *info);

Obtain if the object type is an abstract type, eg if it cannot be instantiated

info :

a GIObjectInfo

Returns :

TRUE if the object type is abstract

g_object_info_get_fundamental ()

gboolean            g_object_info_get_fundamental       (GIObjectInfo *info);

Obtain if the object type is of a fundamental type which is not G_TYPE_OBJECT. This is mostly for supporting GstMiniObject.

info :

a GIObjectInfo

Returns :

TRUE if the object type is a fundamental type

g_object_info_get_parent ()

GIObjectInfo *      g_object_info_get_parent            (GIObjectInfo *info);

Obtain the parent of the object type.

info :

a GIObjectInfo

Returns :

the GIObjectInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_n_interfaces ()

gint                g_object_info_get_n_interfaces      (GIObjectInfo *info);

Obtain the number of interfaces that this object type has.

info :

a GIObjectInfo

Returns :

number of interfaces

g_object_info_get_interface ()

GIInterfaceInfo *   g_object_info_get_interface         (GIObjectInfo *info,
                                                         gint n);

Obtain an object type interface at index n.

info :

a GIObjectInfo

n :

index of interface to get

Returns :

the GIInterfaceInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_n_fields ()

gint                g_object_info_get_n_fields          (GIObjectInfo *info);

Obtain the number of fields that this object type has.

info :

a GIObjectInfo

Returns :

number of fields

g_object_info_get_field ()

GIFieldInfo *       g_object_info_get_field             (GIObjectInfo *info,
                                                         gint n);

Obtain an object type field at index n.

info :

a GIObjectInfo

n :

index of field to get

Returns :

the GIFieldInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_n_properties ()

gint                g_object_info_get_n_properties      (GIObjectInfo *info);

Obtain the number of properties that this object type has.

info :

a GIObjectInfo

Returns :

number of properties

g_object_info_get_property ()

GIPropertyInfo *    g_object_info_get_property          (GIObjectInfo *info,
                                                         gint n);

Obtain an object type property at index n.

info :

a GIObjectInfo

n :

index of property to get

Returns :

the GIPropertyInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_n_methods ()

gint                g_object_info_get_n_methods         (GIObjectInfo *info);

Obtain the number of methods that this object type has.

info :

a GIObjectInfo

Returns :

number of methods

g_object_info_get_method ()

GIFunctionInfo *    g_object_info_get_method            (GIObjectInfo *info,
                                                         gint n);

Obtain an object type method at index n.

info :

a GIObjectInfo

n :

index of method to get

Returns :

the GIFunctionInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_find_method ()

GIFunctionInfo *    g_object_info_find_method           (GIObjectInfo *info,
                                                         const gchar *name);

Obtain a method of the object type given a name. NULL will be returned if there's no method available with that name.

info :

a GIObjectInfo

name :

name of method to obtain

Returns :

the GIFunctionInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_n_signals ()

gint                g_object_info_get_n_signals         (GIObjectInfo *info);

Obtain the number of signals that this object type has.

info :

a GIObjectInfo

Returns :

number of signals

g_object_info_get_signal ()

GISignalInfo *      g_object_info_get_signal            (GIObjectInfo *info,
                                                         gint n);

Obtain an object type signal at index n.

info :

a GIObjectInfo

n :

index of signal to get

Returns :

the GISignalInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_n_vfuncs ()

gint                g_object_info_get_n_vfuncs          (GIObjectInfo *info);

Obtain the number of virtual functions that this object type has.

info :

a GIObjectInfo

Returns :

number of virtual functions

g_object_info_get_vfunc ()

GIVFuncInfo *       g_object_info_get_vfunc             (GIObjectInfo *info,
                                                         gint n);

Obtain an object type virtual function at index n.

info :

a GIObjectInfo

n :

index of virtual function to get

Returns :

the GIVFuncInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_n_constants ()

gint                g_object_info_get_n_constants       (GIObjectInfo *info);

Obtain the number of constants that this object type has.

info :

a GIObjectInfo

Returns :

number of constants

g_object_info_get_constant ()

GIConstantInfo *    g_object_info_get_constant          (GIObjectInfo *info,
                                                         gint n);

Obtain an object type constant at index n.

info :

a GIObjectInfo

n :

index of constant to get

Returns :

the GIConstantInfo. Free the struct by calling g_base_info_unref() when done. [transfer full]

g_object_info_get_class_struct ()

GIStructInfo *      g_object_info_get_class_struct      (GIObjectInfo *info);

Every GObject has two structures; an instance structure and a class structure. This function returns the metadata for the class structure.

info :

a GIObjectInfo

Returns :

the GIStructInfo or NULL. Free with g_base_info_unref() when done. [transfer full]

g_object_info_find_vfunc ()

GIVFuncInfo *       g_object_info_find_vfunc            (GIObjectInfo *info,
                                                         const gchar *name);

Locate a virtual function slot with name name. Note that the namespace for virtuals is distinct from that of methods; there may or may not be a concrete method associated for a virtual. If there is one, it may be retrieved using g_vfunc_info_get_invoker(), otherwise NULL will be returned. See the documentation for g_vfunc_info_get_invoker() for more information on invoking virtuals.

info :

a GIObjectInfo

name :

The name of a virtual function to find.

Returns :

the GIVFuncInfo, or NULL. Free it with g_base_info_unref() when done. [transfer full]

g_object_info_get_unref_function ()

const char *        g_object_info_get_unref_function    (GIObjectInfo *info);

Obtain the symbol name of the function that should be called to unref this object type. It's mainly used fundamental types. The type signature for the symbol is GIObjectInfoUnrefFunction, to fetch the function pointer see g_object_info_get_unref_function().

info :

a GIObjectInfo

Returns :

the symbol or NULL

g_object_info_get_unref_function_pointer ()

GIObjectInfoUnrefFunction g_object_info_get_unref_function_pointer
                                                        (GIObjectInfo *info);

Obtain a pointer to a function which can be used to decrease the reference count an instance of this object type. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type.

info :

a GIObjectInfo

Returns :

the function pointer or NULL

g_object_info_get_ref_function ()

const char *        g_object_info_get_ref_function      (GIObjectInfo *info);

Obtain the symbol name of the function that should be called to ref this object type. It's mainly used fundamental types. The type signature for the symbol is GIObjectInfoRefFunction, to fetch the function pointer see g_object_info_get_ref_function().

info :

a GIObjectInfo

Returns :

the symbol or NULL

g_object_info_get_ref_function_pointer ()

GIObjectInfoRefFunction g_object_info_get_ref_function_pointer
                                                        (GIObjectInfo *info);

Obtain a pointer to a function which can be used to increase the reference count an instance of this object type. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type.

info :

a GIObjectInfo

Returns :

the function pointer or NULL

g_object_info_get_set_value_function ()

const char *        g_object_info_get_set_value_function
                                                        (GIObjectInfo *info);

Obtain the symbol name of the function that should be called to convert set a GValue giving an object instance pointer of this object type. I's mainly used fundamental types. The type signature for the symbol is GIObjectInfoSetValueFunction, to fetch the function pointer see g_object_info_get_set_value_function().

info :

a GIObjectInfo

Returns :

the symbol or NULL

g_object_info_get_set_value_function_pointer ()

GIObjectInfoSetValueFunction g_object_info_get_set_value_function_pointer
                                                        (GIObjectInfo *info);

Obtain a pointer to a function which can be used to set a GValue given an instance of this object type. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type.

info :

a GIObjectInfo

Returns :

the function pointer or NULL

g_object_info_get_get_value_function ()

const char *        g_object_info_get_get_value_function
                                                        (GIObjectInfo *info);

Obtain the symbol name of the function that should be called to convert an object instance pointer of this object type to a GValue. I's mainly used fundamental types. The type signature for the symbol is GIObjectInfoGetValueFunction, to fetch the function pointer see g_object_info_get_get_value_function().

info :

a GIObjectInfo

Returns :

the symbol or NULL

g_object_info_get_get_value_function_pointer ()

GIObjectInfoGetValueFunction g_object_info_get_get_value_function_pointer
                                                        (GIObjectInfo *info);

Obtain a pointer to a function which can be used to extract an instance of this object type out of a GValue. This takes derivation into account and will reversely traverse the base classes of this type, starting at the top type.

info :

a GIObjectInfo

Returns :

the function pointer or NULL
0707010007ffd9000081a40000000000000000000000014f83d2e60000a577000000b600010002ffffffffffffffff0000003100000000root/usr/local/share/gtk-doc/html/gi/gi.devhelp2 0707010007ffcb000081a40000000000000000000000014f83d2e600005713000000b600010002ffffffffffffffff0000003900000000root/usr/local/share/gtk-doc/html/gi/gi-GIUnionInfo.html GIUnionInfo

GIUnionInfo

GIUnionInfo — Struct representing a union.

Description

GIUnionInfo represents a union type.

A union has methods and fields. Unions can optionally have a discriminator, which is a field deciding what type of real union fields is valid for specified instance.

Struct hierarchy

  GIBaseInfo
   +----GIRegisteredTypeInfo
         +----GIUnionInfo

Details

GI_IS_UNION_INFO()

#define             GI_IS_UNION_INFO(info)

GIUnionInfo

typedef GIBaseInfo GIUnionInfo;

Represents a union.


g_union_info_get_n_fields ()

gint                g_union_info_get_n_fields           (GIUnionInfo *info);

Obtain the number of fields this union has.

info :

a GIUnionInfo

Returns :

number of fields

g_union_info_get_field ()

GIFieldInfo *       g_union_info_get_field              (GIUnionInfo *info,
                                                         gint n);

Obtain the type information for field with specified index.

info :

a GIUnionInfo

n :

a field index

Returns :

the GIFieldInfo, free it with g_base_info_unref() when done. [transfer full]

g_union_info_get_n_methods ()

gint                g_union_info_get_n_methods          (GIUnionInfo *info);

Obtain the number of methods this union has.

info :

a GIUnionInfo

Returns :

number of methods

g_union_info_get_method ()

GIFunctionInfo *    g_union_info_get_method             (GIUnionInfo *info,
                                                         gint n);

Obtain the type information for method with specified index.

info :

a GIUnionInfo

n :

a method index

Returns :

the GIFunctionInfo, free it with g_base_info_unref() when done. [transfer full]

g_union_info_is_discriminated ()

gboolean            g_union_info_is_discriminated       (GIUnionInfo *info);

Return true if this union contains discriminator field.

info :

a GIUnionInfo

Returns :

TRUE if this is a discriminated union, FALSE otherwise

g_union_info_get_discriminator_offset ()

gint                g_union_info_get_discriminator_offset
                                                        (GIUnionInfo *info);

g_union_info_get_discriminator_type ()

GITypeInfo *        g_union_info_get_discriminator_type (GIUnionInfo *info);

Obtain the type information of the union discriminator.

info :

a GIUnionInfo

Returns :

the GITypeInfo, free it with g_base_info_unref() when done. [transfer full]

g_union_info_get_discriminator ()

GIConstantInfo *    g_union_info_get_discriminator      (GIUnionInfo *info,
                                                         gint n);

Obtain discriminator value assigned for n-th union field, i.e. n-th union field is the active one if discriminator contains this constant.

info :

a GIUnionInfo

n :

a union field index

Returns :

the GIConstantInfo, free it with g_base_info_unref() when done. [transfer full]

g_union_info_find_method ()

GIFunctionInfo *    g_union_info_find_method            (GIUnionInfo *info,
                                                         const gchar *name);

Obtain the type information for method named name.

info :

a GIUnionInfo

name :

a method name

Returns :

the GIFunctionInfo, free it with g_base_info_unref() when done. [transfer full]

g_union_info_get_size ()

gsize               g_union_info_get_size               (GIUnionInfo *info);

Obtain the total size of the union.

info :

a GIUnionInfo

Returns :

size of the union in bytes